vcomply-workflow-engine 3.8.4 → 3.8.6
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/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -3
- package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +3 -3
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +7 -2
- package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +2 -4
- package/fesm2022/vcomply-workflow-engine.mjs +11 -8
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -238,11 +238,11 @@ export class ApprovalCreateFormComponent {
|
|
|
238
238
|
this.approvalName = event ? type : '';
|
|
239
239
|
}
|
|
240
240
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApprovalCreateFormComponent, deps: [{ token: i1.AuthService }, { token: i2.PolicyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
241
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApprovalCreateFormComponent, selector: "app-approval-create-form", inputs: { mode: "mode", approverDetails: "approverDetails", approverWorkFlowList: "approverWorkFlowList", enableCreateForm: "enableCreateForm", allApprovers: "allApprovers", selectedCategory: "selectedCategory", editWorkflowLevel: "editWorkflowLevel" }, outputs: { saveApprovalWorkflow: "saveApprovalWorkflow", closeCreateClicked: "closeCreateClicked" }, ngImport: i0, template: "<div\r\n class=\"approval-workflow-dialog\"\r\n *ngIf=\"!enableApprovalLevel && !enablePolicyCategory\"\r\n>\r\n <div\r\n class=\"approval-workflow-dialog-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\r\n >\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\r\n <button (click)=\"closeCreateForm()\" class=\"back-btn vx-p-0 vx-m-0\">\r\n <i class=\"icons vx-mr-1\"></i></button\r\n >Select Approval Workflow\r\n </div>\r\n </div>\r\n <div class=\"approval-workflow-dialog-body\">\r\n <app-no-data\r\n *ngIf=\"!approverWorkFlowList.length && !enableApprovalCreate\"\r\n [noDataImage]=\"\r\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval-workflow.svg'\r\n \"\r\n [noDataText]=\"\r\n 'You did not set any approval workflow.<br>Click on the <strong>Create An Approval Workflow</strong> button to begin.'\r\n \"\r\n [noDataButton]=\"'CREATE AN APPROVAL WORKFLOW'\"\r\n [button]=\"'approval'\"\r\n (buttonAction)=\"createApprovalAction($event)\"\r\n ></app-no-data>\r\n\r\n <div\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n class=\"approval-workflow-dialog-body-inner vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n <div class=\"approval-workflow-form\">\r\n <!-- Workflow Name -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n WORKFLOW NAME <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <input\r\n *ngIf=\"!workflowName?.length || approvalName === 'name'\"\r\n (keydown)=\"approvalName = 'name'\"\r\n (focusin)=\"approvalNameSelection('name', true)\"\r\n (focusout)=\"approvalNameSelection('name', false)\"\r\n class=\"textField\"\r\n type=\"text\"\r\n [(ngModel)]=\"workflowName\"\r\n placeholder=\"Name of the approval workflow\"\r\n />\r\n <div\r\n *ngIf=\"workflowName?.length && approvalName !== 'name'\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"workflowName\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ workflowName }}\r\n </div>\r\n <button\r\n (click)=\"approvalNameSelection('name', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"description\"\r\n [(ngModel)]=\"createDescription\"\r\n ></vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Category -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n SELECT POLICY CATEGORY\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"filteredCategory?.length === 0\"\r\n (click)=\"enableCategory(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the policy category that this approval<br />workflow\r\n applies to\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"filteredCategory?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let category of filteredCategory | slice : 0 : 1;\r\n let catIndex = index\r\n \"\r\n >\r\n <i\r\n (click)=\"removeCategory(category)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category?.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n *ngIf=\"filteredCategory?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"policyOwnerPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ filteredCategory?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #policyOwnerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let category of filteredCategory | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i (click)=\"removeCategory(category)\" class=\"icons\"\r\n ></i\r\n >\r\n {{ category?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n filteredCategory\r\n (click)=\"enableCategory(true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n APPROVERS & APPROVAL WORKFLOW\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"approvalWorkflows?.length === 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select approvers and select the order of approval\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"approvalWorkflows?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approvalWorkflow of approvalWorkflows;\r\n let i = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"approvalWorkflow?.alias_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ approvalWorkflow?.alias_name }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n <!-- {{ approvalWorkflow?.type }} -->\r\n {{\r\n (approvalWorkflow?.type | lowercase) === \"roundrobin\"\r\n ? \"ROUND-ROBIN\"\r\n : (approvalWorkflow?.type | lowercase) === \"anyone\"\r\n ? \"ANY ONE\"\r\n : approvalWorkflow?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2 vx-ml-2\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approvalWorkflow?.approvers[0], i)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential' &&\r\n approvalWorkflow?.approvers?.length < 2\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{\r\n 1 == approvalWorkflow?.approvers?.length ? \"Final\" : 1\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.approvers?.length > 1 &&\r\n approvalWorkflow?.type?.toLowerCase() === 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approvalWorkflow?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approvalWorkflow?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approvalWorkflow?.approvers?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n + {{ approvalWorkflow?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approvalWorkflow?.approvers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approver, i)\"\r\n class=\"icons\"\r\n ></i\r\n >\r\n <span\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >{{\r\n j + 1 ===\r\n approvalWorkflow?.approvers?.length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}</span\r\n >\r\n {{ approver?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <button\r\n (click)=\"editApproval(approvalWorkflow, i)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button\r\n (click)=\"deleteLevel(i)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n *ngIf=\"approvalWorkflows?.length > 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"addMoreBtn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-mt-1\"\r\n >\r\n + ADD MORE LEVELS\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <vui-floating-bar\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n [nextDisabled]=\"\r\n workflowName?.trim() === '' ||\r\n approvalWorkflows?.length === 0 ||\r\n filteredCategory?.length === 0 ||\r\n isSaving\r\n \"\r\n (closeList)=\"closeCreateForm()\"\r\n (closeEvent)=\"nextClick()\"\r\n ></vui-floating-bar>\r\n </div>\r\n</div>\r\n\r\n<!-- [selectedItems]=\"policyForm.selectedCategories\" -->\r\n\r\n<app-select-approvers\r\n *ngIf=\"enableApprovalLevel\"\r\n [allApprovers]=\"allApprovers\"\r\n (closeSelectApprover)=\"closeSelectApprover()\"\r\n (selectedApprover)=\"selectedApprover($event)\"\r\n [levels]=\"levels\"\r\n [editApprovalData]=\"editApprovalData\"\r\n></app-select-approvers>\r\n\r\n<app-checkbox-list\r\n *ngIf=\"enablePolicyCategory\"\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"selectedCategory\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n (saveList)=\"saveCategoryList($event)\"\r\n (closeList)=\"closeCategoryList()\"\r\n [selectedItems]=\"filteredCategory\"\r\n>\r\n</app-checkbox-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .approval-workflow-dialog{position:fixed;inset:0 500px 0 0}::ng-deep .approval-workflow-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .approval-workflow-dialog-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .approval-workflow-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .approval-workflow-dialog-body-inner{height:calc(100vh - 10.75rem);overflow:hidden;overflow-y:auto;margin-bottom:1rem;padding-right:.5rem;width:calc(100% + .5rem)}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form{width:30.75rem;max-height:calc(100vh - 10.75rem)}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row{position:relative}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left{position:absolute;top:30px;left:0}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left img{width:2.5rem;height:2.5rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right{padding-left:3.75rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right .label-heading .required{color:#eb2424;position:relative;top:-.125rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right button.addMoreBtn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body vui-floating-bar .reviewer-floating-bar{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i7.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i10.VuiFloatingBarComponent, selector: "vui-floating-bar", inputs: ["selectedData", "groupSelected", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "nextDisabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "workflowTypeChanged"] }, { kind: "component", type: i11.CheckboxListComponent, selector: "app-checkbox-list", inputs: ["itemsList", "selectedItems", "identifierKey", "displayKey", "tooltipKey", "config", "twoColumn", "loaded"], outputs: ["closeList", "saveList"] }, { kind: "component", type: i12.SelectApproversComponent, selector: "app-select-approvers", inputs: ["allApprovers", "levels", "editApprovalData"], outputs: ["closeSelectApprover", "selectedApprover"] }, { kind: "pipe", type: i5.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] }); }
|
|
241
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApprovalCreateFormComponent, selector: "app-approval-create-form", inputs: { mode: "mode", approverDetails: "approverDetails", approverWorkFlowList: "approverWorkFlowList", enableCreateForm: "enableCreateForm", allApprovers: "allApprovers", selectedCategory: "selectedCategory", editWorkflowLevel: "editWorkflowLevel" }, outputs: { saveApprovalWorkflow: "saveApprovalWorkflow", closeCreateClicked: "closeCreateClicked" }, ngImport: i0, template: "<div\r\n class=\"approval-workflow-dialog\"\r\n *ngIf=\"!enableApprovalLevel && !enablePolicyCategory\"\r\n>\r\n <div\r\n class=\"approval-workflow-dialog-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\r\n >\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\r\n <button (click)=\"closeCreateForm()\" class=\"back-btn vx-p-0 vx-m-0\">\r\n <i class=\"icons vx-mr-1\"></i></button\r\n >Select Approval Workflow\r\n </div>\r\n </div>\r\n <div class=\"approval-workflow-dialog-body\">\r\n <app-no-data\r\n *ngIf=\"!approverWorkFlowList.length && !enableApprovalCreate\"\r\n [noDataImage]=\"\r\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval-workflow.svg'\r\n \"\r\n [noDataText]=\"\r\n 'You did not set any approval workflow.<br>Click on the <strong>Create An Approval Workflow</strong> button to begin.'\r\n \"\r\n [noDataButton]=\"'CREATE AN APPROVAL WORKFLOW'\"\r\n [button]=\"'approval'\"\r\n (buttonAction)=\"createApprovalAction($event)\"\r\n ></app-no-data>\r\n\r\n <div\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n class=\"approval-workflow-dialog-body-inner vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n <div class=\"approval-workflow-form\">\r\n <!-- Workflow Name -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n WORKFLOW NAME <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <input\r\n *ngIf=\"!workflowName?.length || approvalName === 'name'\"\r\n (keydown)=\"approvalName = 'name'\"\r\n (focusin)=\"approvalNameSelection('name', true)\"\r\n (focusout)=\"approvalNameSelection('name', false)\"\r\n class=\"textField\"\r\n type=\"text\"\r\n [(ngModel)]=\"workflowName\"\r\n placeholder=\"Name of the approval workflow\"\r\n />\r\n <div\r\n *ngIf=\"workflowName?.length && approvalName !== 'name'\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"workflowName\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ workflowName }}\r\n </div>\r\n <button\r\n (click)=\"approvalNameSelection('name', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"description\"\r\n [(ngModel)]=\"createDescription\"\r\n ></vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Category -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n SELECT POLICY CATEGORY\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"filteredCategory?.length === 0\"\r\n (click)=\"enableCategory(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the policy category that this approval<br />workflow\r\n applies to\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"filteredCategory?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let category of filteredCategory | slice : 0 : 1;\r\n let catIndex = index\r\n \"\r\n >\r\n <i\r\n (click)=\"removeCategory(category)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category?.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n *ngIf=\"filteredCategory?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"policyOwnerPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ filteredCategory?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #policyOwnerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let category of filteredCategory | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i (click)=\"removeCategory(category)\" class=\"icons\"\r\n ></i\r\n >\r\n {{ category?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n filteredCategory\r\n (click)=\"enableCategory(true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n APPROVERS & APPROVAL WORKFLOW\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"approvalWorkflows?.length === 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select approvers and select the order of approval\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"approvalWorkflows?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approvalWorkflow of approvalWorkflows;\r\n let i = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"approvalWorkflow?.alias_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ approvalWorkflow?.alias_name }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n <!-- {{ approvalWorkflow?.type }} -->\r\n {{\r\n (approvalWorkflow?.type | lowercase) === \"roundrobin\"\r\n ? \"ROUND-ROBIN\"\r\n : (approvalWorkflow?.type | lowercase) === \"anyone\"\r\n ? \"ANY ONE\"\r\n : approvalWorkflow?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2 vx-ml-2\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approvalWorkflow?.approvers[0], i)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential' &&\r\n approvalWorkflow?.approvers?.length < 2\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{\r\n 1 == approvalWorkflow?.approvers?.length ? \"Final\" : 1\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.approvers?.length > 1 &&\r\n approvalWorkflow?.type?.toLowerCase() === 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approvalWorkflow?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approvalWorkflow?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approvalWorkflow?.approvers?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n + {{ approvalWorkflow?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approvalWorkflow?.approvers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approver, i)\"\r\n class=\"icons\"\r\n ></i\r\n >\r\n <span\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >{{\r\n j + 1 ===\r\n approvalWorkflow?.approvers?.length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}</span\r\n >\r\n {{ approver?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <button\r\n (click)=\"editApproval(approvalWorkflow, i)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button\r\n (click)=\"deleteLevel(i)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n *ngIf=\"approvalWorkflows?.length > 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"addMoreBtn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-mt-1\"\r\n >\r\n + ADD MORE LEVELS\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <vui-floating-bar\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n [nextDisabled]=\"\r\n workflowName?.trim() === '' ||\r\n approvalWorkflows?.length === 0 ||\r\n filteredCategory?.length === 0 ||\r\n isSaving\r\n \"\r\n (closeList)=\"closeCreateForm()\"\r\n (closeEvent)=\"nextClick()\"\r\n ></vui-floating-bar>\r\n </div>\r\n</div>\r\n\r\n<!-- [selectedItems]=\"policyForm.selectedCategories\" -->\r\n\r\n<app-select-approvers\r\n *ngIf=\"enableApprovalLevel\"\r\n [allApprovers]=\"allApprovers\"\r\n (closeSelectApprover)=\"closeSelectApprover()\"\r\n (selectedApprover)=\"selectedApprover($event)\"\r\n [levels]=\"levels\"\r\n [editApprovalData]=\"editApprovalData\"\r\n></app-select-approvers>\r\n\r\n<app-checkbox-list\r\n *ngIf=\"enablePolicyCategory\"\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"selectedCategory\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n [loaded]=\"false\"\r\n (saveList)=\"saveCategoryList($event)\"\r\n (closeList)=\"closeCategoryList()\"\r\n [selectedItems]=\"filteredCategory\"\r\n>\r\n</app-checkbox-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .approval-workflow-dialog{position:fixed;inset:0 500px 0 0}::ng-deep .approval-workflow-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .approval-workflow-dialog-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .approval-workflow-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .approval-workflow-dialog-body-inner{height:calc(100vh - 10.75rem);overflow:hidden;overflow-y:auto;margin-bottom:1rem;padding-right:.5rem;width:calc(100% + .5rem)}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form{width:30.75rem;max-height:calc(100vh - 10.75rem)}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row{position:relative}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left{position:absolute;top:30px;left:0}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left img{width:2.5rem;height:2.5rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right{padding-left:3.75rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right .label-heading .required{color:#eb2424;position:relative;top:-.125rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right button.addMoreBtn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body vui-floating-bar .reviewer-floating-bar{padding:0!important}\n"], dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i4.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i7.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i8.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i10.VuiFloatingBarComponent, selector: "vui-floating-bar", inputs: ["selectedData", "groupSelected", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "nextDisabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "workflowTypeChanged"] }, { kind: "component", type: i11.CheckboxListComponent, selector: "app-checkbox-list", inputs: ["itemsList", "selectedItems", "identifierKey", "displayKey", "tooltipKey", "config", "twoColumn", "loaded"], outputs: ["closeList", "saveList"] }, { kind: "component", type: i12.SelectApproversComponent, selector: "app-select-approvers", inputs: ["allApprovers", "levels", "editApprovalData"], outputs: ["closeSelectApprover", "selectedApprover"] }, { kind: "pipe", type: i5.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] }); }
|
|
242
242
|
}
|
|
243
243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApprovalCreateFormComponent, decorators: [{
|
|
244
244
|
type: Component,
|
|
245
|
-
args: [{ selector: 'app-approval-create-form', template: "<div\r\n class=\"approval-workflow-dialog\"\r\n *ngIf=\"!enableApprovalLevel && !enablePolicyCategory\"\r\n>\r\n <div\r\n class=\"approval-workflow-dialog-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\r\n >\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\r\n <button (click)=\"closeCreateForm()\" class=\"back-btn vx-p-0 vx-m-0\">\r\n <i class=\"icons vx-mr-1\"></i></button\r\n >Select Approval Workflow\r\n </div>\r\n </div>\r\n <div class=\"approval-workflow-dialog-body\">\r\n <app-no-data\r\n *ngIf=\"!approverWorkFlowList.length && !enableApprovalCreate\"\r\n [noDataImage]=\"\r\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval-workflow.svg'\r\n \"\r\n [noDataText]=\"\r\n 'You did not set any approval workflow.<br>Click on the <strong>Create An Approval Workflow</strong> button to begin.'\r\n \"\r\n [noDataButton]=\"'CREATE AN APPROVAL WORKFLOW'\"\r\n [button]=\"'approval'\"\r\n (buttonAction)=\"createApprovalAction($event)\"\r\n ></app-no-data>\r\n\r\n <div\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n class=\"approval-workflow-dialog-body-inner vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n <div class=\"approval-workflow-form\">\r\n <!-- Workflow Name -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n WORKFLOW NAME <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <input\r\n *ngIf=\"!workflowName?.length || approvalName === 'name'\"\r\n (keydown)=\"approvalName = 'name'\"\r\n (focusin)=\"approvalNameSelection('name', true)\"\r\n (focusout)=\"approvalNameSelection('name', false)\"\r\n class=\"textField\"\r\n type=\"text\"\r\n [(ngModel)]=\"workflowName\"\r\n placeholder=\"Name of the approval workflow\"\r\n />\r\n <div\r\n *ngIf=\"workflowName?.length && approvalName !== 'name'\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"workflowName\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ workflowName }}\r\n </div>\r\n <button\r\n (click)=\"approvalNameSelection('name', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"description\"\r\n [(ngModel)]=\"createDescription\"\r\n ></vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Category -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n SELECT POLICY CATEGORY\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"filteredCategory?.length === 0\"\r\n (click)=\"enableCategory(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the policy category that this approval<br />workflow\r\n applies to\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"filteredCategory?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let category of filteredCategory | slice : 0 : 1;\r\n let catIndex = index\r\n \"\r\n >\r\n <i\r\n (click)=\"removeCategory(category)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category?.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n *ngIf=\"filteredCategory?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"policyOwnerPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ filteredCategory?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #policyOwnerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let category of filteredCategory | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i (click)=\"removeCategory(category)\" class=\"icons\"\r\n ></i\r\n >\r\n {{ category?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n filteredCategory\r\n (click)=\"enableCategory(true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n APPROVERS & APPROVAL WORKFLOW\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"approvalWorkflows?.length === 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select approvers and select the order of approval\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"approvalWorkflows?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approvalWorkflow of approvalWorkflows;\r\n let i = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"approvalWorkflow?.alias_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ approvalWorkflow?.alias_name }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n <!-- {{ approvalWorkflow?.type }} -->\r\n {{\r\n (approvalWorkflow?.type | lowercase) === \"roundrobin\"\r\n ? \"ROUND-ROBIN\"\r\n : (approvalWorkflow?.type | lowercase) === \"anyone\"\r\n ? \"ANY ONE\"\r\n : approvalWorkflow?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2 vx-ml-2\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approvalWorkflow?.approvers[0], i)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential' &&\r\n approvalWorkflow?.approvers?.length < 2\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{\r\n 1 == approvalWorkflow?.approvers?.length ? \"Final\" : 1\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.approvers?.length > 1 &&\r\n approvalWorkflow?.type?.toLowerCase() === 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approvalWorkflow?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approvalWorkflow?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approvalWorkflow?.approvers?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n + {{ approvalWorkflow?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approvalWorkflow?.approvers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approver, i)\"\r\n class=\"icons\"\r\n ></i\r\n >\r\n <span\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >{{\r\n j + 1 ===\r\n approvalWorkflow?.approvers?.length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}</span\r\n >\r\n {{ approver?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <button\r\n (click)=\"editApproval(approvalWorkflow, i)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button\r\n (click)=\"deleteLevel(i)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n *ngIf=\"approvalWorkflows?.length > 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"addMoreBtn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-mt-1\"\r\n >\r\n + ADD MORE LEVELS\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <vui-floating-bar\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n [nextDisabled]=\"\r\n workflowName?.trim() === '' ||\r\n approvalWorkflows?.length === 0 ||\r\n filteredCategory?.length === 0 ||\r\n isSaving\r\n \"\r\n (closeList)=\"closeCreateForm()\"\r\n (closeEvent)=\"nextClick()\"\r\n ></vui-floating-bar>\r\n </div>\r\n</div>\r\n\r\n<!-- [selectedItems]=\"policyForm.selectedCategories\" -->\r\n\r\n<app-select-approvers\r\n *ngIf=\"enableApprovalLevel\"\r\n [allApprovers]=\"allApprovers\"\r\n (closeSelectApprover)=\"closeSelectApprover()\"\r\n (selectedApprover)=\"selectedApprover($event)\"\r\n [levels]=\"levels\"\r\n [editApprovalData]=\"editApprovalData\"\r\n></app-select-approvers>\r\n\r\n<app-checkbox-list\r\n *ngIf=\"enablePolicyCategory\"\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"selectedCategory\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n (saveList)=\"saveCategoryList($event)\"\r\n (closeList)=\"closeCategoryList()\"\r\n [selectedItems]=\"filteredCategory\"\r\n>\r\n</app-checkbox-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .approval-workflow-dialog{position:fixed;inset:0 500px 0 0}::ng-deep .approval-workflow-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .approval-workflow-dialog-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .approval-workflow-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .approval-workflow-dialog-body-inner{height:calc(100vh - 10.75rem);overflow:hidden;overflow-y:auto;margin-bottom:1rem;padding-right:.5rem;width:calc(100% + .5rem)}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form{width:30.75rem;max-height:calc(100vh - 10.75rem)}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row{position:relative}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left{position:absolute;top:30px;left:0}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left img{width:2.5rem;height:2.5rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right{padding-left:3.75rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right .label-heading .required{color:#eb2424;position:relative;top:-.125rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right button.addMoreBtn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body vui-floating-bar .reviewer-floating-bar{padding:0!important}\n"] }]
|
|
245
|
+
args: [{ selector: 'app-approval-create-form', template: "<div\r\n class=\"approval-workflow-dialog\"\r\n *ngIf=\"!enableApprovalLevel && !enablePolicyCategory\"\r\n>\r\n <div\r\n class=\"approval-workflow-dialog-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\r\n >\r\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\r\n <button (click)=\"closeCreateForm()\" class=\"back-btn vx-p-0 vx-m-0\">\r\n <i class=\"icons vx-mr-1\"></i></button\r\n >Select Approval Workflow\r\n </div>\r\n </div>\r\n <div class=\"approval-workflow-dialog-body\">\r\n <app-no-data\r\n *ngIf=\"!approverWorkFlowList.length && !enableApprovalCreate\"\r\n [noDataImage]=\"\r\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval-workflow.svg'\r\n \"\r\n [noDataText]=\"\r\n 'You did not set any approval workflow.<br>Click on the <strong>Create An Approval Workflow</strong> button to begin.'\r\n \"\r\n [noDataButton]=\"'CREATE AN APPROVAL WORKFLOW'\"\r\n [button]=\"'approval'\"\r\n (buttonAction)=\"createApprovalAction($event)\"\r\n ></app-no-data>\r\n\r\n <div\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n class=\"approval-workflow-dialog-body-inner vx-d-flex vx-align-center vx-justify-center\"\r\n >\r\n <div class=\"approval-workflow-form\">\r\n <!-- Workflow Name -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/what.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n WORKFLOW NAME <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <input\r\n *ngIf=\"!workflowName?.length || approvalName === 'name'\"\r\n (keydown)=\"approvalName = 'name'\"\r\n (focusin)=\"approvalNameSelection('name', true)\"\r\n (focusout)=\"approvalNameSelection('name', false)\"\r\n class=\"textField\"\r\n type=\"text\"\r\n [(ngModel)]=\"workflowName\"\r\n placeholder=\"Name of the approval workflow\"\r\n />\r\n <div\r\n *ngIf=\"workflowName?.length && approvalName !== 'name'\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"selectBoxText vx-fs-13 vx-paragraph-txt\"\r\n [appTooltip]=\"workflowName\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ workflowName }}\r\n </div>\r\n <button\r\n (click)=\"approvalNameSelection('name', true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n <div class=\"vx-mt-2\">\r\n <vcomply-editor\r\n [editorConfig]=\"description\"\r\n [(ngModel)]=\"createDescription\"\r\n ></vcomply-editor>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Policy Category -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n SELECT POLICY CATEGORY\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"filteredCategory?.length === 0\"\r\n (click)=\"enableCategory(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select the policy category that this approval<br />workflow\r\n applies to\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"filteredCategory?.length > 0\"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between\"\r\n >\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let category of filteredCategory | slice : 0 : 1;\r\n let catIndex = index\r\n \"\r\n >\r\n <i\r\n (click)=\"removeCategory(category)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ category?.item_name }}</span\r\n >\r\n </ng-container>\r\n <button\r\n *ngIf=\"filteredCategory?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"policyOwnerPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n +{{ filteredCategory?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #policyOwnerPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let category of filteredCategory | slice : 1\">\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"category?.item_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i (click)=\"removeCategory(category)\" class=\"icons\"\r\n ></i\r\n >\r\n {{ category?.item_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n <button\r\n filteredCategory\r\n (click)=\"enableCategory(true)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval Workflow -->\r\n <div class=\"approval-workflow-form-row vx-mb-5\">\r\n <div class=\"form-left\">\r\n <img\r\n src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/approval.svg\"\r\n />\r\n </div>\r\n <div class=\"form-right\">\r\n <div\r\n class=\"label-heading vx-fs-11 vx-fw-500 vx-tt-uppercase vx-tt-uppercase vx-mb-2\"\r\n >\r\n APPROVERS & APPROVAL WORKFLOW\r\n <span class=\"required vx-fs-14 vx-fw-500\">*</span>\r\n </div>\r\n <div\r\n *ngIf=\"approvalWorkflows?.length === 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"selectBoxEnable vx-pl-3 vx-pr-3 vx-d-flex vx-align-center\"\r\n [class.disabled]=\"false\"\r\n >\r\n <div\r\n class=\"selectBoxPlacehoder vx-fs-13 vx-paragraph-txt vx-lh-4\"\r\n >\r\n Select approvers and select the order of approval\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"approvalWorkflows?.length > 0\">\r\n <div\r\n *ngFor=\"\r\n let approvalWorkflow of approvalWorkflows;\r\n let i = index\r\n \"\r\n class=\"selectBoxSuccess vx-pl-2 vx-pr-3 vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\r\n >\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <div class=\"level-left vx-d-flex vx-align-center\">\r\n <div class=\"vx-d-block\">\r\n <div\r\n class=\"level-name vx-fs-9 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-lh-3\"\r\n [appTooltip]=\"approvalWorkflow?.alias_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n {{ approvalWorkflow?.alias_name }}\r\n </div>\r\n <div\r\n class=\"vx-fs-9 vx-fw-500 vx-label-txt vx-tt-uppercase vx-lh-3\"\r\n >\r\n <!-- {{ approvalWorkflow?.type }} -->\r\n {{\r\n (approvalWorkflow?.type | lowercase) === \"roundrobin\"\r\n ? \"ROUND-ROBIN\"\r\n : (approvalWorkflow?.type | lowercase) === \"anyone\"\r\n ? \"ANY ONE\"\r\n : approvalWorkflow?.type\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-1 vx-pr-2 vx-ml-2\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approvalWorkflow?.approvers[0], i)\"\r\n class=\"icons cross vx-fs-12 vx-paragraph-txt vx-mr-1\"\r\n ></i\r\n >\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential' &&\r\n approvalWorkflow?.approvers?.length < 2\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n {{\r\n 1 == approvalWorkflow?.approvers?.length ? \"Final\" : 1\r\n }}\r\n </div>\r\n <div\r\n *ngIf=\"\r\n approvalWorkflow?.approvers?.length > 1 &&\r\n approvalWorkflow?.type?.toLowerCase() === 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >\r\n 1\r\n </div>\r\n <span\r\n class=\"chipName vx-fs-11 vx-label-txt\"\r\n [appTooltip]=\"approvalWorkflow?.approvers[0]?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >{{ approvalWorkflow?.approvers[0]?.member_name }}</span\r\n >\r\n <button\r\n *ngIf=\"approvalWorkflow?.approvers?.length > 1\"\r\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\r\n appPopover\r\n (click)=\"workflowPopover.popover()\"\r\n placement=\"right\"\r\n >\r\n + {{ approvalWorkflow?.approvers?.length - 1 }}\r\n </button>\r\n </div>\r\n <app-popover #workflowPopover [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li\r\n *ngFor=\"\r\n let approver of approvalWorkflow?.approvers\r\n | slice : 1;\r\n let j = index\r\n \"\r\n >\r\n <div class=\"avatar-card\">\r\n <span\r\n class=\"value\"\r\n [appTooltip]=\"approver?.member_name\"\r\n placement=\"bottom-left\"\r\n delay=\"0\"\r\n type=\"black\"\r\n [tooltipMandatory]=\"false\"\r\n >\r\n <i\r\n (click)=\"deselectUser(approver, i)\"\r\n class=\"icons\"\r\n ></i\r\n >\r\n <span\r\n *ngIf=\"\r\n approvalWorkflow?.type?.toLowerCase() ===\r\n 'sequential'\r\n \"\r\n class=\"workflowLavel vx-fs-11 vx-fw-500 vx-pl-1 vx-pr-1 vx-lh-4 vx-mr-1 vx-text-center\"\r\n >{{\r\n j + 1 ===\r\n approvalWorkflow?.approvers?.length - 1\r\n ? \"Final\"\r\n : j + 2\r\n }}</span\r\n >\r\n {{ approver?.member_name }}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n </div>\r\n\r\n <div class=\"vx-d-flex vx-align-center\">\r\n <button\r\n (click)=\"editApproval(approvalWorkflow, i)\"\r\n class=\"editBtn vx-fs-11 vx-fw-600 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> EDIT\r\n </button>\r\n <button\r\n (click)=\"deleteLevel(i)\"\r\n class=\"deleteBtn vx-fs-11 vx-fw-600 vx-tt-uppercase vx-p-0 vx-m-0 vx-ml-4 vx-d-flex vx-align-center\"\r\n >\r\n <i class=\"icons vx-mr-1\"></i> DELETE\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <button\r\n *ngIf=\"approvalWorkflows?.length > 0\"\r\n (click)=\"addLevelsClicked(true)\"\r\n class=\"addMoreBtn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-mt-1\"\r\n >\r\n + ADD MORE LEVELS\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <vui-floating-bar\r\n *ngIf=\"enableApprovalCreate || enableCreateForm\"\r\n [nextDisabled]=\"\r\n workflowName?.trim() === '' ||\r\n approvalWorkflows?.length === 0 ||\r\n filteredCategory?.length === 0 ||\r\n isSaving\r\n \"\r\n (closeList)=\"closeCreateForm()\"\r\n (closeEvent)=\"nextClick()\"\r\n ></vui-floating-bar>\r\n </div>\r\n</div>\r\n\r\n<!-- [selectedItems]=\"policyForm.selectedCategories\" -->\r\n\r\n<app-select-approvers\r\n *ngIf=\"enableApprovalLevel\"\r\n [allApprovers]=\"allApprovers\"\r\n (closeSelectApprover)=\"closeSelectApprover()\"\r\n (selectedApprover)=\"selectedApprover($event)\"\r\n [levels]=\"levels\"\r\n [editApprovalData]=\"editApprovalData\"\r\n></app-select-approvers>\r\n\r\n<app-checkbox-list\r\n *ngIf=\"enablePolicyCategory\"\r\n [config]=\"categoryConfig\"\r\n [twoColumn]=\"false\"\r\n [itemsList]=\"selectedCategory\"\r\n [identifierKey]=\"'_id'\"\r\n [displayKey]=\"'item_name'\"\r\n [tooltipKey]=\"'item_name'\"\r\n [loaded]=\"false\"\r\n (saveList)=\"saveCategoryList($event)\"\r\n (closeList)=\"closeCategoryList()\"\r\n [selectedItems]=\"filteredCategory\"\r\n>\r\n</app-checkbox-list>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .approval-workflow-dialog{position:fixed;inset:0 500px 0 0}::ng-deep .approval-workflow-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .approval-workflow-dialog-head{background:#fbfbfb;height:2.75rem;border-bottom:1px solid #f1f1f1}::ng-deep .approval-workflow-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .approval-workflow-dialog-body-inner{height:calc(100vh - 10.75rem);overflow:hidden;overflow-y:auto;margin-bottom:1rem;padding-right:.5rem;width:calc(100% + .5rem)}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .approval-workflow-dialog-body-inner::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form{width:30.75rem;max-height:calc(100vh - 10.75rem)}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row{position:relative}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left{position:absolute;top:30px;left:0}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-left img{width:2.5rem;height:2.5rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right{padding-left:3.75rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right .label-heading .required{color:#eb2424;position:relative;top:-.125rem}::ng-deep .approval-workflow-dialog-body-inner .approval-workflow-form-row .form-right button.addMoreBtn{background:transparent;border-radius:0;border:none}::ng-deep .approval-workflow-dialog-body vui-floating-bar .reviewer-floating-bar{padding:0!important}\n"] }]
|
|
246
246
|
}], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.PolicyService }]; }, propDecorators: { mode: [{
|
|
247
247
|
type: Input
|
|
248
248
|
}], approverDetails: [{
|
|
@@ -262,4 +262,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
262
262
|
}], closeCreateClicked: [{
|
|
263
263
|
type: Output
|
|
264
264
|
}] } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtY3JlYXRlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9hcHByb3ZhbC13b3JrZmxvdy9hcHByb3ZhbC1jcmVhdGUtZm9ybS9hcHByb3ZhbC1jcmVhdGUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2FwcHJvdmFsLXdvcmtmbG93L2FwcHJvdmFsLWNyZWF0ZS1mb3JtL2FwcHJvdmFsLWNyZWF0ZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBMkI7SUFzQ3RDLFlBQ1UsV0FBd0IsRUFDeEIsYUFBNEI7UUFENUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF2Q3RDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLDBCQUFxQixHQUFVLEVBQUUsQ0FBQztRQUNsQywwQkFBcUIsR0FBVSxFQUFFLENBQUM7UUFDbEMsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQzlCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLG1CQUFjLEdBQUc7WUFDZixVQUFVLEVBQUUsaUJBQWlCO1lBQzdCLG9CQUFvQixF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MkI7bUdBQTNCLDJCQUEyQixtYUNWeEMsay9pQkF1WkE7OzRGRDdZYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCOzhIQStCM0IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hcHByb3ZhbC1jcmVhdGUtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWNyZWF0ZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHByb3ZhbC1jcmVhdGUtZm9ybS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwcm92YWxDcmVhdGVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBlbmFibGVBcHByb3ZhbENyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuYWJsZUFwcHJvdmFsTGV2ZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlbmFibGVQb2xpY3lDYXRlZ29yeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdvcmtmbG93TmFtZTogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0QXBwcm92YWxQYXlsb2FkOiBhbnlbXSA9IFtdO1xyXG4gIGNyZWF0ZUFwcHJvdmFsUGF5bG9hZDogYW55W10gPSBbXTtcclxuICBhcHByb3ZhbFdvcmtmbG93czogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZENhdGVnb3J5OiBhbnlbXSA9IFtdO1xyXG4gIGxldmVsczogbnVtYmVyID0gMTtcclxuICBjYXRlZ29yeUNvbmZpZyA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgQ2F0ZWdvcnknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdDYXRlZ29yeSBzZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdDYXRlZ29yaWVzIHNlbGVjdGVkJyxcclxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIENhdGVnb3J5JyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgd29ya2Zsb3c6ICdwb2xpY3knLFxyXG4gIH07XHJcbiAgc2VsZWN0ZWRDYXQ6IGFueVtdID0gW107XHJcbiAgZWRpdEFwcHJvdmFsRGF0YTogYW55W10gPSBbXTtcclxuICBlZGl0SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIGNyZWF0ZURlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZENhdGVnb3J5SWQ6IGFueVtdID0gW107XHJcbiAgYXBwcm92YWxOYW1lITogYW55O1xyXG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG1vZGU6ICdDUkVBVEUnIHwgJ0VESVQnID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgYXBwcm92ZXJEZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgYXBwcm92ZXJXb3JrRmxvd0xpc3QhOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlQ3JlYXRlRm9ybSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWxsQXBwcm92ZXJzITogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkhOiBhbnk7XHJcbiAgQElucHV0KCkgZWRpdFdvcmtmbG93TGV2ZWw6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIHNhdmVBcHByb3ZhbFdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUNyZWF0ZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgYXBwcm92YWwgd29ya2Zsb3cnLFxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUFwcHJvdmVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lZGl0V29ya2Zsb3dMZXZlbD8uZWRpdExldmVsKSB7XHJcbiAgICAgIHRoaXMuZWRpdEFwcHJvdmFsKFxyXG4gICAgICAgIHRoaXMuZWRpdFdvcmtmbG93TGV2ZWw/LmVkaXRMZXZlbCxcclxuICAgICAgICB0aGlzLmVkaXRXb3JrZmxvd0xldmVsPy5pbmRleFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlQ3JlYXRlRm9ybSkge1xyXG4gICAgICB0aGlzLmVuYWJsZUFwcHJvdmFsQ3JlYXRlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUFwcHJvdmFsQWN0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50b0xvd2VyQ2FzZSgpID09PSAnYXBwcm92YWwnKSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxDcmVhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTGV2ZWxzQ2xpY2tlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsTGV2ZWwgPSBldmVudDtcclxuICAgIGlmIChldmVudCkgdGhpcy5sZXZlbHMrKztcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5SWQoY2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWQgPSBjYXRlZ29yeS5tYXAoKGNhdDogYW55KSA9PiBjYXQuaXRlbV9pZCk7XHJcbiAgfVxyXG5cclxuICBzYXZlQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXQgPSBldmVudDtcclxuICAgIHRoaXMuZmlsdGVyU2VsZWN0ZWRDYXRlZ29yeShldmVudCk7XHJcbiAgICB0aGlzLmVuYWJsZVBvbGljeUNhdGVnb3J5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJTZWxlY3RlZENhdGVnb3J5KHNlbGVjdGVkQ2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJlZENhdGVnb3J5ID0gdGhpcy5zZWxlY3RlZENhdGVnb3J5LmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cclxuICAgICAgc2VsZWN0ZWRDYXRlZ29yeS5pbmNsdWRlcyhjYXRlZ29yeS5faWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yeUlkKHRoaXMuZmlsdGVyZWRDYXRlZ29yeSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDYXRlZ29yeShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5maWx0ZXJlZENhdGVnb3J5LmZpbmRJbmRleChcclxuICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5Py5pdGVtX2lkID09PSBldmVudD8uaXRlbV9pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuZmlsdGVyZWRDYXRlZ29yeT8uc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmVuYWJsZVBvbGljeUNhdGVnb3J5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBlbmFibGVDYXRlZ29yeShldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lbmFibGVQb2xpY3lDYXRlZ29yeSA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTZWxlY3RBcHByb3ZlcigpIHtcclxuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxMZXZlbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93cyA9IHRoaXMuYXBwcm92YWxXb3JrZmxvd3MuZmlsdGVyKFxyXG4gICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cuYXBwcm92ZXJzPy5sZW5ndGhcclxuICAgICk7XHJcbiAgICB0aGlzLmxldmVscyA9IHRoaXMuYXBwcm92YWxXb3JrZmxvd3M/Lmxlbmd0aCArIDE7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFwcHJvdmVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0QXBwcm92YWxQYXlsb2FkID0gZXZlbnQ7XHJcbiAgICBpZiAodGhpcy5lZGl0SW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3M/LnNwbGljZSh0aGlzLmVkaXRJbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3M/LnNwbGljZSh0aGlzLmVkaXRJbmRleCwgMCwgZXZlbnRbMF0pO1xyXG4gICAgICB0aGlzLmVkaXRJbmRleCA9IC0xO1xyXG4gICAgICB0aGlzLmVkaXRBcHByb3ZhbERhdGEgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3MucHVzaChldmVudFswXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cy5maWx0ZXIoXHJcbiAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdy5hcHByb3ZlcnM/Lmxlbmd0aFxyXG4gICAgKTtcclxuICAgIHRoaXMubGV2ZWxzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cz8ubGVuZ3RoICsgMTtcclxuXHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsTGV2ZWwgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxldmVsKGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMubGV2ZWxzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cz8ubGVuZ3RoICsgMTtcclxuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuYXBwcm92YWxXb3JrZmxvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3NbaW5kZXhdWydsZXZlbDEnXSA9PT1cclxuICAgICAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzW2luZGV4XVsnYWxpYXNfbmFtZSddXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3NbaW5kZXhdWydhbGlhc19uYW1lJ10gPSBgTGV2ZWwgJHtpICsgMX1gO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3NbaW5kZXhdWydsZXZlbDEnXSA9IGBMZXZlbCAke2kgKyAxfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0xldmVsKCkge1xyXG4gICAgaWYgKHRoaXMubGV2ZWxzID09PSAwKSB7XHJcbiAgICAgIHRoaXMubGV2ZWxzID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRBcHByb3ZhbChhcHByb3ZhbDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRBcHByb3ZhbERhdGEgPSBbYXBwcm92YWxdO1xyXG4gICAgdGhpcy5lZGl0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxMZXZlbCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmNsb3NlQ3JlYXRlQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZXh0Q2xpY2soKSB7XHJcbiAgICB0aGlzLnJlbW92ZU1lbWJlck5hbWVLZXkoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU1lbWJlck5hbWVLZXkoKSB7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cy5tYXAoXHJcbiAgICAgICh7XHJcbiAgICAgICAgYXBwcm92ZXJzLFxyXG4gICAgICAgIC4uLnJlc3RcclxuICAgICAgfToge1xyXG4gICAgICAgIGFwcHJvdmVyczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT47XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgICB9KSA9PiAoe1xyXG4gICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgYXBwcm92ZXJzOiBhcHByb3ZlcnMubWFwKFxyXG4gICAgICAgICAgKHsgbWVtYmVyX25hbWUsIC4uLnJlc3QgfTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gKHsgLi4ucmVzdCB9KVxyXG4gICAgICAgICksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBheWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlUGF5bG9hZCgpIHtcclxuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0VmFsdWVzKCk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICB3b3JrZmxvd19tb2R1bGU6ICdQT0xJQ1knLFxyXG4gICAgICB3b3JrZmxvd19uYW1lOiB0aGlzLndvcmtmbG93TmFtZSxcclxuICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkLFxyXG4gICAgICBhcHByb3ZhbF93b3JrZmxvdzogdGhpcy5hcHByb3ZhbFdvcmtmbG93cyxcclxuICAgICAgY3JlYXRlZF9ieTogdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpLFxyXG4gICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSxcclxuICAgICAgZGVsZXRlX2ZsYWc6IDAsXHJcbiAgICAgIElzX2FwcHJvdmFsOiAxLFxyXG4gICAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGF0dGFjaG1lbnRzOiBbXSxcclxuICAgICAgICB0ZXh0OiB0aGlzLmNyZWF0ZURlc2NyaXB0aW9uLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLl9lZGl0V29ya2Zsb3cocGF5bG9hZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZU5ld1dvcmtmbG93KHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0VmFsdWVzKCkge1xyXG4gICAgY29uc3QgYXBwcm92ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFwcHJvdmFsV29ya2Zsb3dzKSk7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gYXBwcm92ZXJzLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgZWxlWydhcHByb3ZlcnMnXSA9IGVsZVsnYXBwcm92ZXJzJ10ubWFwKChhcHByb3ZlcnM6IGFueSkgPT4ge1xyXG4gICAgICAgIGFwcHJvdmVyc1snYXBwcm92YWxfZmxhZyddID0gZmFsc2U7XHJcbiAgICAgICAgYXBwcm92ZXJzWydyZWplY3RfZmxhZyddID0gZmFsc2U7XHJcbiAgICAgICAgYXBwcm92ZXJzWydyZW1vdmVfZmxhZyddID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGFwcHJvdmVycztcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlbGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU5ld1dvcmtmbG93KHBheWxvYWQ6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmNyZWF0ZUFwcHJvdmFsV29ya2Zsb3cocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZUFwcHJvdmFsV29ya2Zsb3cuZW1pdCh0cnVlKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2VkaXRXb3JrZmxvdyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZVxyXG4gICAgICAuZWRpdEFwcHJvdmFsV29ya2Zsb3cocGF5bG9hZCwgdGhpcy5hcHByb3ZlckRldGFpbHMuX2lkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2F2ZUFwcHJvdmFsV29ya2Zsb3cuZW1pdCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcG9wdWxhdGVBcHByb3ZlcigpIHtcclxuICAgIGNvbnN0IHsgd29ya2Zsb3dfbmFtZSwgYXBwcm92YWxfd29ya2Zsb3csIGRlc2NyaXB0aW9uLCBjYXRlZ29yeV9hcnIgfSA9XHJcbiAgICAgIHRoaXMuYXBwcm92ZXJEZXRhaWxzO1xyXG4gICAgdGhpcy53b3JrZmxvd05hbWUgPSB3b3JrZmxvd19uYW1lO1xyXG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93cyA9IGFwcHJvdmFsX3dvcmtmbG93O1xyXG4gICAgdGhpcy5jcmVhdGVEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uPy50ZXh0ID8/ICcnO1xyXG4gICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gY2F0ZWdvcnlfYXJyLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGl0ZW1faWQ6IGNhdGVnb3J5Py5jYWxfY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgaXRlbV9uYW1lOiBjYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSxcclxuICAgICAgICBfaWQ6IGNhdGVnb3J5Py5faWQsXHJcbiAgICAgICAgcGFyZW50X2l0ZW1zOiBbXSxcclxuICAgICAgICBwYXJlbnRfaXRlbV9pZHM6IFtdLFxyXG4gICAgICAgIGN1c3RvbV90YWdzOiBbXSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWQgPSBjYXRlZ29yeV9hcnIubWFwKFxyXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnk/LmNhbF9jYXRlZ29yeV9pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuZmlsdGVyZWRDYXRlZ29yeSA9IGNhdGVnb3J5RGV0YWlscztcclxuICB9XHJcblxyXG4gIGNsb3NlRm9ybSgpIHtcclxuICAgIHRoaXMuc2F2ZUFwcHJvdmFsV29ya2Zsb3cuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVzZWxlY3RVc2VyKGFwcHJvdmVyOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93c1tpbmRleF0/LmFwcHJvdmVycy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgPT09IGFwcHJvdmVyPy5tZW1iZXJfaWRcclxuICAgICk7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzW2luZGV4XT8uYXBwcm92ZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cy5maWx0ZXIoXHJcbiAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdy5hcHByb3ZlcnM/Lmxlbmd0aFxyXG4gICAgKTtcclxuICAgIHRoaXMubGV2ZWxzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cz8ubGVuZ3RoICsgMTtcclxuICB9XHJcblxyXG4gIGFwcHJvdmFsTmFtZVNlbGVjdGlvbih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFwcHJvdmFsTmFtZSA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1kaWFsb2dcIlxyXG4gICpuZ0lmPVwiIWVuYWJsZUFwcHJvdmFsTGV2ZWwgJiYgIWVuYWJsZVBvbGljeUNhdGVnb3J5XCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYXBwcm92YWwtd29ya2Zsb3ctZGlhbG9nLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZUNyZWF0ZUZvcm0oKVwiIGNsYXNzPVwiYmFjay1idG4gdngtcC0wIHZ4LW0tMFwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MWQ7PC9pPjwvYnV0dG9uXHJcbiAgICAgID5TZWxlY3QgQXBwcm92YWwgV29ya2Zsb3dcclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1kaWFsb2ctYm9keVwiPlxyXG4gICAgPGFwcC1uby1kYXRhXHJcbiAgICAgICpuZ0lmPVwiIWFwcHJvdmVyV29ya0Zsb3dMaXN0Lmxlbmd0aCAmJiAhZW5hYmxlQXBwcm92YWxDcmVhdGVcIlxyXG4gICAgICBbbm9EYXRhSW1hZ2VdPVwiXHJcbiAgICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hcHByb3ZhbC13b3JrZmxvdy5zdmcnXHJcbiAgICAgIFwiXHJcbiAgICAgIFtub0RhdGFUZXh0XT1cIlxyXG4gICAgICAgICdZb3UgZGlkIG5vdCBzZXQgYW55IGFwcHJvdmFsIHdvcmtmbG93Ljxicj5DbGljayBvbiB0aGUgPHN0cm9uZz5DcmVhdGUgQW4gQXBwcm92YWwgV29ya2Zsb3c8L3N0cm9uZz4gYnV0dG9uIHRvIGJlZ2luLidcclxuICAgICAgXCJcclxuICAgICAgW25vRGF0YUJ1dHRvbl09XCInQ1JFQVRFIEFOIEFQUFJPVkFMIFdPUktGTE9XJ1wiXHJcbiAgICAgIFtidXR0b25dPVwiJ2FwcHJvdmFsJ1wiXHJcbiAgICAgIChidXR0b25BY3Rpb24pPVwiY3JlYXRlQXBwcm92YWxBY3Rpb24oJGV2ZW50KVwiXHJcbiAgICA+PC9hcHAtbm8tZGF0YT5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiZW5hYmxlQXBwcm92YWxDcmVhdGUgfHwgZW5hYmxlQ3JlYXRlRm9ybVwiXHJcbiAgICAgIGNsYXNzPVwiYXBwcm92YWwtd29ya2Zsb3ctZGlhbG9nLWJvZHktaW5uZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtXCI+XHJcbiAgICAgICAgPCEtLSBXb3JrZmxvdyBOYW1lIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtLXJvdyB2eC1tYi01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbC1oZWFkaW5nIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgV09SS0ZMT1cgTkFNRSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE0IHZ4LWZ3LTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAqbmdJZj1cIiF3b3JrZmxvd05hbWU/Lmxlbmd0aCB8fCBhcHByb3ZhbE5hbWUgPT09ICduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwiYXBwcm92YWxOYW1lID0gJ25hbWUnXCJcclxuICAgICAgICAgICAgICAoZm9jdXNpbik9XCJhcHByb3ZhbE5hbWVTZWxlY3Rpb24oJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFwcHJvdmFsTmFtZVNlbGVjdGlvbignbmFtZScsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIndvcmtmbG93TmFtZVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIG9mIHRoZSBhcHByb3ZhbCB3b3JrZmxvd1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cIndvcmtmbG93TmFtZT8ubGVuZ3RoICYmIGFwcHJvdmFsTmFtZSAhPT0gJ25hbWUnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94VGV4dCB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIndvcmtmbG93TmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyB3b3JrZmxvd05hbWUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92YWxOYW1lU2VsZWN0aW9uKCduYW1lJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cclxuICAgICAgICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcmVhdGVEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gUG9saWN5IENhdGVnb3J5IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtLXJvdyB2eC1tYi01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGVhZGluZyB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFNFTEVDVCBQT0xJQ1kgQ0FURUdPUllcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE0IHZ4LWZ3LTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZENhdGVnb3J5Py5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJlbmFibGVDYXRlZ29yeSh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHBvbGljeSBjYXRlZ29yeSB0aGF0IHRoaXMgYXBwcm92YWw8YnIgLz53b3JrZmxvd1xyXG4gICAgICAgICAgICAgICAgYXBwbGllcyB0b1xyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpbHRlcmVkQ2F0ZWdvcnk/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMSB2eC1wci0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjYXRlZ29yeSBvZiBmaWx0ZXJlZENhdGVnb3J5IHwgc2xpY2UgOiAwIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2F0SW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDYXRlZ29yeShjYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjYXRlZ29yeT8uaXRlbV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgY2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZENhdGVnb3J5Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9saWN5T3duZXJQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgK3t7IGZpbHRlcmVkQ2F0ZWdvcnk/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5T3duZXJQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgZmlsdGVyZWRDYXRlZ29yeSB8IHNsaWNlIDogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/Lml0ZW1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlQ2F0ZWdvcnkoY2F0ZWdvcnkpXCIgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZENhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW5hYmxlQ2F0ZWdvcnkodHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEFwcHJvdmFsIFdvcmtmbG93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtLXJvdyB2eC1tYi01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvYXBwcm92YWwuc3ZnXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGVhZGluZyB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEFQUFJPVkVSUyAmIEFQUFJPVkFMIFdPUktGTE9XXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNCB2eC1mdy01MDBcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92YWxXb3JrZmxvd3M/Lmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZExldmVsc0NsaWNrZWQodHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IGFwcHJvdmVycyBhbmQgc2VsZWN0IHRoZSBvcmRlciBvZiBhcHByb3ZhbFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcHJvdmFsV29ya2Zsb3dzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbFdvcmtmbG93IG9mIGFwcHJvdmFsV29ya2Zsb3dzO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGV2ZWwtbGVmdCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsZXZlbC1uYW1lIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhcHByb3ZhbFdvcmtmbG93Py5hbGlhc19uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcHJvdmFsV29ya2Zsb3c/LmFsaWFzX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTkgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbGgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3sgYXBwcm92YWxXb3JrZmxvdz8udHlwZSB9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwcm92YWxXb3JrZmxvdz8udHlwZSB8IGxvd2VyY2FzZSkgPT09IFwicm91bmRyb2JpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiUk9VTkQtUk9CSU5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoYXBwcm92YWxXb3JrZmxvdz8udHlwZSB8IGxvd2VyY2FzZSkgPT09IFwiYW55b25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJBTlkgT05FXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWxXb3JrZmxvdz8udHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMSB2eC1wci0yIHZ4LW1sLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXNlbGVjdFVzZXIoYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzWzBdLCBpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdz8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VxdWVudGlhbCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzPy5sZW5ndGggPCAyXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAxID09IGFwcHJvdmFsV29ya2Zsb3c/LmFwcHJvdmVycz8ubGVuZ3RoID8gXCJGaW5hbFwiIDogMVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93Py5hcHByb3ZlcnM/Lmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdz8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFwcHJvdmFsV29ya2Zsb3c/LmFwcHJvdmVyc1swXT8ubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzWzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwcHJvdmFsV29ya2Zsb3c/LmFwcHJvdmVycz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndvcmtmbG93UG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICsge3sgYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3dvcmtmbG93UG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZlciBvZiBhcHByb3ZhbFdvcmtmbG93Py5hcHByb3ZlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFwcHJvdmVyPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXNlbGVjdFVzZXIoYXBwcm92ZXIsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93Py50eXBlPy50b0xvd2VyQ2FzZSgpID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlcXVlbnRpYWwnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiArIDEgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93Py5hcHByb3ZlcnM/Lmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIkZpbmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBqICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwcm92ZXI/Lm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0QXBwcm92YWwoYXBwcm92YWxXb3JrZmxvdywgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVMZXZlbChpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOWFlOzwvaT4gREVMRVRFXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92YWxXb3JrZmxvd3M/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhZGRMZXZlbHNDbGlja2VkKHRydWUpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFkZE1vcmVCdG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW10LTFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgKyBBREQgTU9SRSBMRVZFTFNcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8dnVpLWZsb2F0aW5nLWJhclxyXG4gICAgICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsQ3JlYXRlIHx8IGVuYWJsZUNyZWF0ZUZvcm1cIlxyXG4gICAgICBbbmV4dERpc2FibGVkXT1cIlxyXG4gICAgICAgIHdvcmtmbG93TmFtZT8udHJpbSgpID09PSAnJyB8fFxyXG4gICAgICAgIGFwcHJvdmFsV29ya2Zsb3dzPy5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICBmaWx0ZXJlZENhdGVnb3J5Py5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICBpc1NhdmluZ1xyXG4gICAgICBcIlxyXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlQ3JlYXRlRm9ybSgpXCJcclxuICAgICAgKGNsb3NlRXZlbnQpPVwibmV4dENsaWNrKClcIlxyXG4gICAgPjwvdnVpLWZsb2F0aW5nLWJhcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFtzZWxlY3RlZEl0ZW1zXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzXCIgLS0+XHJcblxyXG48YXBwLXNlbGVjdC1hcHByb3ZlcnNcclxuICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsTGV2ZWxcIlxyXG4gIFthbGxBcHByb3ZlcnNdPVwiYWxsQXBwcm92ZXJzXCJcclxuICAoY2xvc2VTZWxlY3RBcHByb3Zlcik9XCJjbG9zZVNlbGVjdEFwcHJvdmVyKClcIlxyXG4gIChzZWxlY3RlZEFwcHJvdmVyKT1cInNlbGVjdGVkQXBwcm92ZXIoJGV2ZW50KVwiXHJcbiAgW2xldmVsc109XCJsZXZlbHNcIlxyXG4gIFtlZGl0QXBwcm92YWxEYXRhXT1cImVkaXRBcHByb3ZhbERhdGFcIlxyXG4+PC9hcHAtc2VsZWN0LWFwcHJvdmVycz5cclxuXHJcbjxhcHAtY2hlY2tib3gtbGlzdFxyXG4gICpuZ0lmPVwiZW5hYmxlUG9saWN5Q2F0ZWdvcnlcIlxyXG4gIFtjb25maWddPVwiY2F0ZWdvcnlDb25maWdcIlxyXG4gIFt0d29Db2x1bW5dPVwiZmFsc2VcIlxyXG4gIFtpdGVtc0xpc3RdPVwic2VsZWN0ZWRDYXRlZ29yeVwiXHJcbiAgW2lkZW50aWZpZXJLZXldPVwiJ19pZCdcIlxyXG4gIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcclxuICBbdG9vbHRpcEtleV09XCInaXRlbV9uYW1lJ1wiXHJcbiAgKHNhdmVMaXN0KT1cInNhdmVDYXRlZ29yeUxpc3QoJGV2ZW50KVwiXHJcbiAgKGNsb3NlTGlzdCk9XCJjbG9zZUNhdGVnb3J5TGlzdCgpXCJcclxuICBbc2VsZWN0ZWRJdGVtc109XCJmaWx0ZXJlZENhdGVnb3J5XCJcclxuPlxyXG48L2FwcC1jaGVja2JveC1saXN0PlxyXG4iXX0=
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtY3JlYXRlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9hcHByb3ZhbC13b3JrZmxvdy9hcHByb3ZhbC1jcmVhdGUtZm9ybS9hcHByb3ZhbC1jcmVhdGUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2FwcHJvdmFsLXdvcmtmbG93L2FwcHJvdmFsLWNyZWF0ZS1mb3JtL2FwcHJvdmFsLWNyZWF0ZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBVS9FLE1BQU0sT0FBTywyQkFBMkI7SUFzQ3RDLFlBQ1UsV0FBd0IsRUFDeEIsYUFBNEI7UUFENUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF2Q3RDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLDBCQUFxQixHQUFVLEVBQUUsQ0FBQztRQUNsQywwQkFBcUIsR0FBVSxFQUFFLENBQUM7UUFDbEMsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQzlCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLG1CQUFjLEdBQUc7WUFDZixVQUFVLEVBQUUsaUJBQWlCO1lBQzdCLG9CQUFvQixF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MkI7bUdBQTNCLDJCQUEyQixtYUNWeEMsMGdqQkF3WkE7OzRGRDlZYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCOzhIQStCM0IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAndmNvbXBseS1lZGl0b3InO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBvbGljeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9wb2xpY3kuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hcHByb3ZhbC1jcmVhdGUtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcHJvdmFsLWNyZWF0ZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHByb3ZhbC1jcmVhdGUtZm9ybS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwcm92YWxDcmVhdGVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBlbmFibGVBcHByb3ZhbENyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVuYWJsZUFwcHJvdmFsTGV2ZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlbmFibGVQb2xpY3lDYXRlZ29yeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdvcmtmbG93TmFtZTogc3RyaW5nID0gJyc7XHJcbiAgc2VsZWN0QXBwcm92YWxQYXlsb2FkOiBhbnlbXSA9IFtdO1xyXG4gIGNyZWF0ZUFwcHJvdmFsUGF5bG9hZDogYW55W10gPSBbXTtcclxuICBhcHByb3ZhbFdvcmtmbG93czogYW55W10gPSBbXTtcclxuICBmaWx0ZXJlZENhdGVnb3J5OiBhbnlbXSA9IFtdO1xyXG4gIGxldmVsczogbnVtYmVyID0gMTtcclxuICBjYXRlZ29yeUNvbmZpZyA9IHtcclxuICAgIHBhbmVsVGl0bGU6ICdTZWxlY3QgQ2F0ZWdvcnknLFxyXG4gICAgZmxvYXRpbmdUZXh0U2luZ3VsYXI6ICdDYXRlZ29yeSBzZWxlY3RlZCcsXHJcbiAgICBmbG9hdGluZ1RleHRQbHVyYWw6ICdDYXRlZ29yaWVzIHNlbGVjdGVkJyxcclxuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoIENhdGVnb3J5JyxcclxuICAgIHNlYXJjaEVuYWJsZWQ6IHRydWUsXHJcbiAgICBzZWxlY3RBbGxFbmFibGVkOiB0cnVlLFxyXG4gICAgd29ya2Zsb3c6ICdwb2xpY3knLFxyXG4gIH07XHJcbiAgc2VsZWN0ZWRDYXQ6IGFueVtdID0gW107XHJcbiAgZWRpdEFwcHJvdmFsRGF0YTogYW55W10gPSBbXTtcclxuICBlZGl0SW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIGNyZWF0ZURlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcclxuICBzZWxlY3RlZENhdGVnb3J5SWQ6IGFueVtdID0gW107XHJcbiAgYXBwcm92YWxOYW1lITogYW55O1xyXG4gIGlzU2F2aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG1vZGU6ICdDUkVBVEUnIHwgJ0VESVQnID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgYXBwcm92ZXJEZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgYXBwcm92ZXJXb3JrRmxvd0xpc3QhOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlQ3JlYXRlRm9ybSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgYWxsQXBwcm92ZXJzITogYW55O1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ2F0ZWdvcnkhOiBhbnk7XHJcbiAgQElucHV0KCkgZWRpdFdvcmtmbG93TGV2ZWw6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIHNhdmVBcHByb3ZhbFdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjbG9zZUNyZWF0ZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBvbGljeVNlcnZpY2U6IFBvbGljeVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGRlc2NyaXB0aW9uOiBFZGl0b3JDb25maWcgPSB7XHJcbiAgICBtb2RlOiAncHJpbWUnLFxyXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxyXG4gICAgbGluazogdHJ1ZSxcclxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIGEgZGVzY3JpcHRpb24gZm9yIHRoaXMgYXBwcm92YWwgd29ya2Zsb3cnLFxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZUFwcHJvdmVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lZGl0V29ya2Zsb3dMZXZlbD8uZWRpdExldmVsKSB7XHJcbiAgICAgIHRoaXMuZWRpdEFwcHJvdmFsKFxyXG4gICAgICAgIHRoaXMuZWRpdFdvcmtmbG93TGV2ZWw/LmVkaXRMZXZlbCxcclxuICAgICAgICB0aGlzLmVkaXRXb3JrZmxvd0xldmVsPy5pbmRleFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlQ3JlYXRlRm9ybSkge1xyXG4gICAgICB0aGlzLmVuYWJsZUFwcHJvdmFsQ3JlYXRlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZUFwcHJvdmFsQWN0aW9uKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC50b0xvd2VyQ2FzZSgpID09PSAnYXBwcm92YWwnKSB7XHJcbiAgICAgIHRoaXMuZW5hYmxlQXBwcm92YWxDcmVhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkTGV2ZWxzQ2xpY2tlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsTGV2ZWwgPSBldmVudDtcclxuICAgIGlmIChldmVudCkgdGhpcy5sZXZlbHMrKztcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5SWQoY2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWQgPSBjYXRlZ29yeS5tYXAoKGNhdDogYW55KSA9PiBjYXQuaXRlbV9pZCk7XHJcbiAgfVxyXG5cclxuICBzYXZlQ2F0ZWdvcnlMaXN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDYXQgPSBldmVudDtcclxuICAgIHRoaXMuZmlsdGVyU2VsZWN0ZWRDYXRlZ29yeShldmVudCk7XHJcbiAgICB0aGlzLmVuYWJsZVBvbGljeUNhdGVnb3J5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmaWx0ZXJTZWxlY3RlZENhdGVnb3J5KHNlbGVjdGVkQ2F0ZWdvcnk6IGFueSkge1xyXG4gICAgdGhpcy5maWx0ZXJlZENhdGVnb3J5ID0gdGhpcy5zZWxlY3RlZENhdGVnb3J5LmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT5cclxuICAgICAgc2VsZWN0ZWRDYXRlZ29yeS5pbmNsdWRlcyhjYXRlZ29yeS5faWQpXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZXRDYXRlZ29yeUlkKHRoaXMuZmlsdGVyZWRDYXRlZ29yeSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDYXRlZ29yeShldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeUluZGV4ID0gdGhpcy5maWx0ZXJlZENhdGVnb3J5LmZpbmRJbmRleChcclxuICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5Py5pdGVtX2lkID09PSBldmVudD8uaXRlbV9pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuZmlsdGVyZWRDYXRlZ29yeT8uc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmVuYWJsZVBvbGljeUNhdGVnb3J5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBlbmFibGVDYXRlZ29yeShldmVudDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lbmFibGVQb2xpY3lDYXRlZ29yeSA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTZWxlY3RBcHByb3ZlcigpIHtcclxuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxMZXZlbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93cyA9IHRoaXMuYXBwcm92YWxXb3JrZmxvd3MuZmlsdGVyKFxyXG4gICAgICAod29ya2Zsb3c6IGFueSkgPT4gd29ya2Zsb3cuYXBwcm92ZXJzPy5sZW5ndGhcclxuICAgICk7XHJcbiAgICB0aGlzLmxldmVscyA9IHRoaXMuYXBwcm92YWxXb3JrZmxvd3M/Lmxlbmd0aCArIDE7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFwcHJvdmVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0QXBwcm92YWxQYXlsb2FkID0gZXZlbnQ7XHJcbiAgICBpZiAodGhpcy5lZGl0SW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3M/LnNwbGljZSh0aGlzLmVkaXRJbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3M/LnNwbGljZSh0aGlzLmVkaXRJbmRleCwgMCwgZXZlbnRbMF0pO1xyXG4gICAgICB0aGlzLmVkaXRJbmRleCA9IC0xO1xyXG4gICAgICB0aGlzLmVkaXRBcHByb3ZhbERhdGEgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3MucHVzaChldmVudFswXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cy5maWx0ZXIoXHJcbiAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdy5hcHByb3ZlcnM/Lmxlbmd0aFxyXG4gICAgKTtcclxuICAgIHRoaXMubGV2ZWxzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cz8ubGVuZ3RoICsgMTtcclxuXHJcbiAgICB0aGlzLmVuYWJsZUFwcHJvdmFsTGV2ZWwgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxldmVsKGluZGV4OiBhbnkpIHtcclxuICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMubGV2ZWxzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cz8ubGVuZ3RoICsgMTtcclxuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuYXBwcm92YWxXb3JrZmxvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3NbaW5kZXhdWydsZXZlbDEnXSA9PT1cclxuICAgICAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzW2luZGV4XVsnYWxpYXNfbmFtZSddXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3NbaW5kZXhdWydhbGlhc19uYW1lJ10gPSBgTGV2ZWwgJHtpICsgMX1gO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwcm92YWxXb3JrZmxvd3NbaW5kZXhdWydsZXZlbDEnXSA9IGBMZXZlbCAke2kgKyAxfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0xldmVsKCkge1xyXG4gICAgaWYgKHRoaXMubGV2ZWxzID09PSAwKSB7XHJcbiAgICAgIHRoaXMubGV2ZWxzID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRBcHByb3ZhbChhcHByb3ZhbDogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRBcHByb3ZhbERhdGEgPSBbYXBwcm92YWxdO1xyXG4gICAgdGhpcy5lZGl0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuZW5hYmxlQXBwcm92YWxMZXZlbCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNyZWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmNsb3NlQ3JlYXRlQ2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZXh0Q2xpY2soKSB7XHJcbiAgICB0aGlzLnJlbW92ZU1lbWJlck5hbWVLZXkoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZU1lbWJlck5hbWVLZXkoKSB7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cy5tYXAoXHJcbiAgICAgICh7XHJcbiAgICAgICAgYXBwcm92ZXJzLFxyXG4gICAgICAgIC4uLnJlc3RcclxuICAgICAgfToge1xyXG4gICAgICAgIGFwcHJvdmVyczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT47XHJcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgICB9KSA9PiAoe1xyXG4gICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgYXBwcm92ZXJzOiBhcHByb3ZlcnMubWFwKFxyXG4gICAgICAgICAgKHsgbWVtYmVyX25hbWUsIC4uLnJlc3QgfTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gKHsgLi4ucmVzdCB9KVxyXG4gICAgICAgICksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVBheWxvYWQoKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlUGF5bG9hZCgpIHtcclxuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0VmFsdWVzKCk7XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICB3b3JrZmxvd19tb2R1bGU6ICdQT0xJQ1knLFxyXG4gICAgICB3b3JrZmxvd19uYW1lOiB0aGlzLndvcmtmbG93TmFtZSxcclxuICAgICAgY2F0ZWdvcnlfaWQ6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeUlkLFxyXG4gICAgICBhcHByb3ZhbF93b3JrZmxvdzogdGhpcy5hcHByb3ZhbFdvcmtmbG93cyxcclxuICAgICAgY3JlYXRlZF9ieTogdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpLFxyXG4gICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKSxcclxuICAgICAgZGVsZXRlX2ZsYWc6IDAsXHJcbiAgICAgIElzX2FwcHJvdmFsOiAxLFxyXG4gICAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGF0dGFjaG1lbnRzOiBbXSxcclxuICAgICAgICB0ZXh0OiB0aGlzLmNyZWF0ZURlc2NyaXB0aW9uLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICB0aGlzLl9lZGl0V29ya2Zsb3cocGF5bG9hZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNyZWF0ZU5ld1dvcmtmbG93KHBheWxvYWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0VmFsdWVzKCkge1xyXG4gICAgY29uc3QgYXBwcm92ZXJzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmFwcHJvdmFsV29ya2Zsb3dzKSk7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gYXBwcm92ZXJzLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgZWxlWydhcHByb3ZlcnMnXSA9IGVsZVsnYXBwcm92ZXJzJ10ubWFwKChhcHByb3ZlcnM6IGFueSkgPT4ge1xyXG4gICAgICAgIGFwcHJvdmVyc1snYXBwcm92YWxfZmxhZyddID0gZmFsc2U7XHJcbiAgICAgICAgYXBwcm92ZXJzWydyZWplY3RfZmxhZyddID0gZmFsc2U7XHJcbiAgICAgICAgYXBwcm92ZXJzWydyZW1vdmVfZmxhZyddID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGFwcHJvdmVycztcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlbGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU5ld1dvcmtmbG93KHBheWxvYWQ6IGFueSkge1xyXG4gICAgdGhpcy5wb2xpY3lTZXJ2aWNlLmNyZWF0ZUFwcHJvdmFsV29ya2Zsb3cocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZUFwcHJvdmFsV29ya2Zsb3cuZW1pdCh0cnVlKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2VkaXRXb3JrZmxvdyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHRoaXMucG9saWN5U2VydmljZVxyXG4gICAgICAuZWRpdEFwcHJvdmFsV29ya2Zsb3cocGF5bG9hZCwgdGhpcy5hcHByb3ZlckRldGFpbHMuX2lkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2F2ZUFwcHJvdmFsV29ya2Zsb3cuZW1pdCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcG9wdWxhdGVBcHByb3ZlcigpIHtcclxuICAgIGNvbnN0IHsgd29ya2Zsb3dfbmFtZSwgYXBwcm92YWxfd29ya2Zsb3csIGRlc2NyaXB0aW9uLCBjYXRlZ29yeV9hcnIgfSA9XHJcbiAgICAgIHRoaXMuYXBwcm92ZXJEZXRhaWxzO1xyXG4gICAgdGhpcy53b3JrZmxvd05hbWUgPSB3b3JrZmxvd19uYW1lO1xyXG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93cyA9IGFwcHJvdmFsX3dvcmtmbG93O1xyXG4gICAgdGhpcy5jcmVhdGVEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uPy50ZXh0ID8/ICcnO1xyXG4gICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gY2F0ZWdvcnlfYXJyLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGl0ZW1faWQ6IGNhdGVnb3J5Py5jYWxfY2F0ZWdvcnlfaWQsXHJcbiAgICAgICAgaXRlbV9uYW1lOiBjYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSxcclxuICAgICAgICBfaWQ6IGNhdGVnb3J5Py5faWQsXHJcbiAgICAgICAgcGFyZW50X2l0ZW1zOiBbXSxcclxuICAgICAgICBwYXJlbnRfaXRlbV9pZHM6IFtdLFxyXG4gICAgICAgIGN1c3RvbV90YWdzOiBbXSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZENhdGVnb3J5SWQgPSBjYXRlZ29yeV9hcnIubWFwKFxyXG4gICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnk/LmNhbF9jYXRlZ29yeV9pZFxyXG4gICAgKTtcclxuICAgIHRoaXMuZmlsdGVyZWRDYXRlZ29yeSA9IGNhdGVnb3J5RGV0YWlscztcclxuICB9XHJcblxyXG4gIGNsb3NlRm9ybSgpIHtcclxuICAgIHRoaXMuc2F2ZUFwcHJvdmFsV29ya2Zsb3cuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZGVzZWxlY3RVc2VyKGFwcHJvdmVyOiBhbnksIGluZGV4OiBhbnkpIHtcclxuICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93c1tpbmRleF0/LmFwcHJvdmVycy5maW5kSW5kZXgoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgPT09IGFwcHJvdmVyPy5tZW1iZXJfaWRcclxuICAgICk7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzW2luZGV4XT8uYXBwcm92ZXJzLnNwbGljZShyZW1vdmVJbmRleCwgMSk7XHJcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cy5maWx0ZXIoXHJcbiAgICAgICh3b3JrZmxvdzogYW55KSA9PiB3b3JrZmxvdy5hcHByb3ZlcnM/Lmxlbmd0aFxyXG4gICAgKTtcclxuICAgIHRoaXMubGV2ZWxzID0gdGhpcy5hcHByb3ZhbFdvcmtmbG93cz8ubGVuZ3RoICsgMTtcclxuICB9XHJcblxyXG4gIGFwcHJvdmFsTmFtZVNlbGVjdGlvbih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFwcHJvdmFsTmFtZSA9IGV2ZW50ID8gdHlwZSA6ICcnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1kaWFsb2dcIlxyXG4gICpuZ0lmPVwiIWVuYWJsZUFwcHJvdmFsTGV2ZWwgJiYgIWVuYWJsZVBvbGljeUNhdGVnb3J5XCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYXBwcm92YWwtd29ya2Zsb3ctZGlhbG9nLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZUNyZWF0ZUZvcm0oKVwiIGNsYXNzPVwiYmFjay1idG4gdngtcC0wIHZ4LW0tMFwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtbXItMVwiPiYjeGU5MWQ7PC9pPjwvYnV0dG9uXHJcbiAgICAgID5TZWxlY3QgQXBwcm92YWwgV29ya2Zsb3dcclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1kaWFsb2ctYm9keVwiPlxyXG4gICAgPGFwcC1uby1kYXRhXHJcbiAgICAgICpuZ0lmPVwiIWFwcHJvdmVyV29ya0Zsb3dMaXN0Lmxlbmd0aCAmJiAhZW5hYmxlQXBwcm92YWxDcmVhdGVcIlxyXG4gICAgICBbbm9EYXRhSW1hZ2VdPVwiXHJcbiAgICAgICAgJ2h0dHBzOi8vY2RuLnYtY29tcGx5LmNvbS9saWJyYXJpZXMvd29ya2Zsb3ctZW5naW5lL2Fzc2V0cy93b3JrZmxvdy9hcHByb3ZhbC13b3JrZmxvdy5zdmcnXHJcbiAgICAgIFwiXHJcbiAgICAgIFtub0RhdGFUZXh0XT1cIlxyXG4gICAgICAgICdZb3UgZGlkIG5vdCBzZXQgYW55IGFwcHJvdmFsIHdvcmtmbG93Ljxicj5DbGljayBvbiB0aGUgPHN0cm9uZz5DcmVhdGUgQW4gQXBwcm92YWwgV29ya2Zsb3c8L3N0cm9uZz4gYnV0dG9uIHRvIGJlZ2luLidcclxuICAgICAgXCJcclxuICAgICAgW25vRGF0YUJ1dHRvbl09XCInQ1JFQVRFIEFOIEFQUFJPVkFMIFdPUktGTE9XJ1wiXHJcbiAgICAgIFtidXR0b25dPVwiJ2FwcHJvdmFsJ1wiXHJcbiAgICAgIChidXR0b25BY3Rpb24pPVwiY3JlYXRlQXBwcm92YWxBY3Rpb24oJGV2ZW50KVwiXHJcbiAgICA+PC9hcHAtbm8tZGF0YT5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiZW5hYmxlQXBwcm92YWxDcmVhdGUgfHwgZW5hYmxlQ3JlYXRlRm9ybVwiXHJcbiAgICAgIGNsYXNzPVwiYXBwcm92YWwtd29ya2Zsb3ctZGlhbG9nLWJvZHktaW5uZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtXCI+XHJcbiAgICAgICAgPCEtLSBXb3JrZmxvdyBOYW1lIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtLXJvdyB2eC1tYi01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvd2hhdC5zdmdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yaWdodFwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbC1oZWFkaW5nIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTJcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgV09SS0ZMT1cgTkFNRSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE0IHZ4LWZ3LTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAqbmdJZj1cIiF3b3JrZmxvd05hbWU/Lmxlbmd0aCB8fCBhcHByb3ZhbE5hbWUgPT09ICduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwiYXBwcm92YWxOYW1lID0gJ25hbWUnXCJcclxuICAgICAgICAgICAgICAoZm9jdXNpbik9XCJhcHByb3ZhbE5hbWVTZWxlY3Rpb24oJ25hbWUnLCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFwcHJvdmFsTmFtZVNlbGVjdGlvbignbmFtZScsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIndvcmtmbG93TmFtZVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lIG9mIHRoZSBhcHByb3ZhbCB3b3JrZmxvd1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cIndvcmtmbG93TmFtZT8ubGVuZ3RoICYmIGFwcHJvdmFsTmFtZSAhPT0gJ25hbWUnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFN1Y2Nlc3MgdngtcGwtMiB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94VGV4dCB2eC1mcy0xMyB2eC1wYXJhZ3JhcGgtdHh0XCJcclxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIndvcmtmbG93TmFtZVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyB3b3JrZmxvd05hbWUgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwcm92YWxOYW1lU2VsZWN0aW9uKCduYW1lJywgdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTJcIj5cclxuICAgICAgICAgICAgICA8dmNvbXBseS1lZGl0b3JcclxuICAgICAgICAgICAgICAgIFtlZGl0b3JDb25maWddPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcmVhdGVEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gUG9saWN5IENhdGVnb3J5IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtLXJvdyB2eC1tYi01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvY2F0ZWdvcnkuc3ZnXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGVhZGluZyB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIFNFTEVDVCBQT0xJQ1kgQ0FURUdPUllcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE0IHZ4LWZ3LTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZENhdGVnb3J5Py5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJlbmFibGVDYXRlZ29yeSh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hFbmFibGUgdngtcGwtMyB2eC1wci0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdEJveFBsYWNlaG9kZXIgdngtZnMtMTMgdngtcGFyYWdyYXBoLXR4dCB2eC1saC00XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHBvbGljeSBjYXRlZ29yeSB0aGF0IHRoaXMgYXBwcm92YWw8YnIgLz53b3JrZmxvd1xyXG4gICAgICAgICAgICAgICAgYXBwbGllcyB0b1xyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpbHRlcmVkQ2F0ZWdvcnk/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94U3VjY2VzcyB2eC1wbC0yIHZ4LXByLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMSB2eC1wci0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjYXRlZ29yeSBvZiBmaWx0ZXJlZENhdGVnb3J5IHwgc2xpY2UgOiAwIDogMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2F0SW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDYXRlZ29yeShjYXRlZ29yeSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcclxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjYXRlZ29yeT8uaXRlbV9uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICA+e3sgY2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJlZENhdGVnb3J5Py5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcclxuICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicG9saWN5T3duZXJQb3BvdmVyLnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgK3t7IGZpbHRlcmVkQ2F0ZWdvcnk/Lmxlbmd0aCAtIDEgfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcG9saWN5T3duZXJQb3BvdmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgZmlsdGVyZWRDYXRlZ29yeSB8IHNsaWNlIDogMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2F0ZWdvcnk/Lml0ZW1fbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwicmVtb3ZlQ2F0ZWdvcnkoY2F0ZWdvcnkpXCIgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZENhdGVnb3J5XHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW5hYmxlQ2F0ZWdvcnkodHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0QnRuIHZ4LWZzLTExIHZ4LWZ3LTYwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEFwcHJvdmFsIFdvcmtmbG93IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC13b3JrZmxvdy1mb3JtLXJvdyB2eC1tYi01XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1sZWZ0XCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvYXBwcm92YWwuc3ZnXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcmlnaHRcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGVhZGluZyB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEFQUFJPVkVSUyAmIEFQUFJPVkFMIFdPUktGTE9XXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNCB2eC1mdy01MDBcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92YWxXb3JrZmxvd3M/Lmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZExldmVsc0NsaWNrZWQodHJ1ZSlcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0Qm94RW5hYmxlIHZ4LXBsLTMgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hQbGFjZWhvZGVyIHZ4LWZzLTEzIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgU2VsZWN0IGFwcHJvdmVycyBhbmQgc2VsZWN0IHRoZSBvcmRlciBvZiBhcHByb3ZhbFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcHJvdmFsV29ya2Zsb3dzPy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZhbFdvcmtmbG93IG9mIGFwcHJvdmFsV29ya2Zsb3dzO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RCb3hTdWNjZXNzIHZ4LXBsLTIgdngtcHItMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGV2ZWwtbGVmdCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsZXZlbC1uYW1lIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LWxoLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhcHByb3ZhbFdvcmtmbG93Py5hbGlhc19uYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFwcHJvdmFsV29ya2Zsb3c/LmFsaWFzX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTkgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbGgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3sgYXBwcm92YWxXb3JrZmxvdz8udHlwZSB9fSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYXBwcm92YWxXb3JrZmxvdz8udHlwZSB8IGxvd2VyY2FzZSkgPT09IFwicm91bmRyb2JpblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiUk9VTkQtUk9CSU5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoYXBwcm92YWxXb3JrZmxvdz8udHlwZSB8IGxvd2VyY2FzZSkgPT09IFwiYW55b25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJBTlkgT05FXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYXBwcm92YWxXb3JrZmxvdz8udHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMSB2eC1wci0yIHZ4LW1sLTJcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXNlbGVjdFVzZXIoYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzWzBdLCBpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdz8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VxdWVudGlhbCcgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzPy5sZW5ndGggPCAyXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAxID09IGFwcHJvdmFsV29ya2Zsb3c/LmFwcHJvdmVycz8ubGVuZ3RoID8gXCJGaW5hbFwiIDogMVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93Py5hcHByb3ZlcnM/Lmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvdz8udHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3b3JrZmxvd0xhdmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wbC0xIHZ4LXByLTEgdngtbGgtNCB2eC1tci0xIHZ4LXRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAxXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFwcHJvdmFsV29ya2Zsb3c/LmFwcHJvdmVyc1swXT8ubWVtYmVyX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+e3sgYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzWzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFwcHJvdmFsV29ya2Zsb3c/LmFwcHJvdmVycz8ubGVuZ3RoID4gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIndvcmtmbG93UG9wb3Zlci5wb3BvdmVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICsge3sgYXBwcm92YWxXb3JrZmxvdz8uYXBwcm92ZXJzPy5sZW5ndGggLSAxIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3dvcmtmbG93UG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHByb3ZlciBvZiBhcHByb3ZhbFdvcmtmbG93Py5hcHByb3ZlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFwcHJvdmVyPy5tZW1iZXJfbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXNlbGVjdFVzZXIoYXBwcm92ZXIsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93Py50eXBlPy50b0xvd2VyQ2FzZSgpID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlcXVlbnRpYWwnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1yLTEgdngtdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiArIDEgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93Py5hcHByb3ZlcnM/Lmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIkZpbmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBqICsgMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYXBwcm92ZXI/Lm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0QXBwcm92YWwoYXBwcm92YWxXb3JrZmxvdywgaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZWRpdEJ0biB2eC1mcy0xMSB2eC1mdy02MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOTBjOzwvaT4gRURJVFxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVMZXZlbChpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWxldGVCdG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW1sLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LW1yLTFcIj4mI3hlOWFlOzwvaT4gREVMRVRFXHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYXBwcm92YWxXb3JrZmxvd3M/Lmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhZGRMZXZlbHNDbGlja2VkKHRydWUpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFkZE1vcmVCdG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR4dC1ibHVlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtbS0wIHZ4LW10LTFcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgKyBBREQgTU9SRSBMRVZFTFNcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8dnVpLWZsb2F0aW5nLWJhclxyXG4gICAgICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsQ3JlYXRlIHx8IGVuYWJsZUNyZWF0ZUZvcm1cIlxyXG4gICAgICBbbmV4dERpc2FibGVkXT1cIlxyXG4gICAgICAgIHdvcmtmbG93TmFtZT8udHJpbSgpID09PSAnJyB8fFxyXG4gICAgICAgIGFwcHJvdmFsV29ya2Zsb3dzPy5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICBmaWx0ZXJlZENhdGVnb3J5Py5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICBpc1NhdmluZ1xyXG4gICAgICBcIlxyXG4gICAgICAoY2xvc2VMaXN0KT1cImNsb3NlQ3JlYXRlRm9ybSgpXCJcclxuICAgICAgKGNsb3NlRXZlbnQpPVwibmV4dENsaWNrKClcIlxyXG4gICAgPjwvdnVpLWZsb2F0aW5nLWJhcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFtzZWxlY3RlZEl0ZW1zXT1cInBvbGljeUZvcm0uc2VsZWN0ZWRDYXRlZ29yaWVzXCIgLS0+XHJcblxyXG48YXBwLXNlbGVjdC1hcHByb3ZlcnNcclxuICAqbmdJZj1cImVuYWJsZUFwcHJvdmFsTGV2ZWxcIlxyXG4gIFthbGxBcHByb3ZlcnNdPVwiYWxsQXBwcm92ZXJzXCJcclxuICAoY2xvc2VTZWxlY3RBcHByb3Zlcik9XCJjbG9zZVNlbGVjdEFwcHJvdmVyKClcIlxyXG4gIChzZWxlY3RlZEFwcHJvdmVyKT1cInNlbGVjdGVkQXBwcm92ZXIoJGV2ZW50KVwiXHJcbiAgW2xldmVsc109XCJsZXZlbHNcIlxyXG4gIFtlZGl0QXBwcm92YWxEYXRhXT1cImVkaXRBcHByb3ZhbERhdGFcIlxyXG4+PC9hcHAtc2VsZWN0LWFwcHJvdmVycz5cclxuXHJcbjxhcHAtY2hlY2tib3gtbGlzdFxyXG4gICpuZ0lmPVwiZW5hYmxlUG9saWN5Q2F0ZWdvcnlcIlxyXG4gIFtjb25maWddPVwiY2F0ZWdvcnlDb25maWdcIlxyXG4gIFt0d29Db2x1bW5dPVwiZmFsc2VcIlxyXG4gIFtpdGVtc0xpc3RdPVwic2VsZWN0ZWRDYXRlZ29yeVwiXHJcbiAgW2lkZW50aWZpZXJLZXldPVwiJ19pZCdcIlxyXG4gIFtkaXNwbGF5S2V5XT1cIidpdGVtX25hbWUnXCJcclxuICBbdG9vbHRpcEtleV09XCInaXRlbV9uYW1lJ1wiXHJcbiAgW2xvYWRlZF09XCJmYWxzZVwiXHJcbiAgKHNhdmVMaXN0KT1cInNhdmVDYXRlZ29yeUxpc3QoJGV2ZW50KVwiXHJcbiAgKGNsb3NlTGlzdCk9XCJjbG9zZUNhdGVnb3J5TGlzdCgpXCJcclxuICBbc2VsZWN0ZWRJdGVtc109XCJmaWx0ZXJlZENhdGVnb3J5XCJcclxuPlxyXG48L2FwcC1jaGVja2JveC1saXN0PlxyXG4iXX0=
|