bpm-core 0.0.21 → 0.0.22

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.
Files changed (22) hide show
  1. package/esm2022/lib/app/app.component.mjs +3 -3
  2. package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +3 -3
  3. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +3 -3
  4. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +54 -0
  5. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +103 -0
  6. package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +49 -86
  7. package/esm2022/lib/constants/constants.mjs +4 -1
  8. package/esm2022/lib/services/action.service.ts.mjs +21 -0
  9. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +49 -24
  10. package/fesm2022/bpm-core.mjs +261 -112
  11. package/fesm2022/bpm-core.mjs.map +1 -1
  12. package/lib/components/app-component-sections/form-section/form-section.component.d.ts +1 -1
  13. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +1 -1
  14. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +20 -0
  15. package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +1 -1
  16. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +34 -0
  17. package/lib/components/shared-components/form-field/input/input.component.d.ts +4 -14
  18. package/lib/constants/constants.d.ts +3 -0
  19. package/lib/services/action.service.ts.d.ts +10 -0
  20. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +8 -7
  21. package/package.json +1 -1
  22. package/src/lib/assets/scss/_general.scss +5 -1
@@ -0,0 +1,21 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ActionStateService {
5
+ actionStatesSubject = new BehaviorSubject({});
6
+ actionStates$ = this.actionStatesSubject.asObservable();
7
+ setActionValid(action, isValid) {
8
+ const currentState = this.actionStatesSubject.value;
9
+ currentState[action] = isValid;
10
+ this.actionStatesSubject.next(currentState);
11
+ }
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ActionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
13
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ActionStateService, providedIn: "any" });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ActionStateService, decorators: [{
16
+ type: Injectable,
17
+ args: [{
18
+ providedIn: "any"
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLnNlcnZpY2UudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL3NlcnZpY2VzL2FjdGlvbi5zZXJ2aWNlLnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFLckMsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsRUFBRSxDQUFDLENBQUM7SUFFckYsYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV4RCxjQUFjLENBQUMsTUFBYyxFQUFFLE9BQWdCO1FBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDcEQsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7dUdBVFUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsS0FBSzs7MkZBRU4sa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcImFueVwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpb25TdGF0ZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgYWN0aW9uU3RhdGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbYWN0aW9uOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuXHJcbiAgYWN0aW9uU3RhdGVzJCA9IHRoaXMuYWN0aW9uU3RhdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgc2V0QWN0aW9uVmFsaWQoYWN0aW9uOiBzdHJpbmcsIGlzVmFsaWQ6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHRoaXMuYWN0aW9uU3RhdGVzU3ViamVjdC52YWx1ZTtcclxuICAgIGN1cnJlbnRTdGF0ZVthY3Rpb25dID0gaXNWYWxpZDtcclxuICAgIHRoaXMuYWN0aW9uU3RhdGVzU3ViamVjdC5uZXh0KGN1cnJlbnRTdGF0ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,44 +1,69 @@
1
1
  import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, NO_ERRORS_SCHEMA } from '@angular/core';
2
- import { NgClass } from "@angular/common";
2
+ import { NgClass, NgForOf, NgIf } from "@angular/common";
3
+ import { InputComponent } from '../../components/shared-components';
4
+ import { ActionButtonsComponent } from "../../components/shared-components/action-buttons/action-buttons.component";
5
+ import { ReactiveFormsModule, Validators } from "@angular/forms";
3
6
  import * as i0 from "@angular/core";
4
7
  import * as i1 from "../../services";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "../../services/action.service.ts";
5
10
  export class RequestDetailsSectionComponent {
6
11
  i18n;
12
+ fb;
13
+ actionStateService;
7
14
  isReadOnly;
8
15
  section;
9
16
  lov;
10
17
  className = "info-section";
11
- currentSectionId;
12
- lastSectionId;
13
18
  form;
14
- constructor(i18n) {
19
+ fieldsForm;
20
+ constructor(i18n, fb, actionStateService) {
15
21
  this.i18n = i18n;
22
+ this.fb = fb;
23
+ this.actionStateService = actionStateService;
24
+ this.createForm();
16
25
  }
17
- ngAfterViewInit() {
18
- this.ServicesSubScriptions();
26
+ createForm() {
27
+ let newForm = {
28
+ input1: ['', Validators.required]
29
+ };
30
+ this.lov?.['decision']?.options?.forEach(option => {
31
+ newForm[option.value] = [''];
32
+ });
33
+ this.fieldsForm = this.fb.group(newForm);
34
+ this.fieldsForm.valueChanges.subscribe(value => {
35
+ this.lov?.['decision']?.options?.forEach(option => {
36
+ let isActionValid = this.checkValidity(option.value);
37
+ this.actionStateService.setActionValid(option.value, isActionValid);
38
+ });
39
+ });
19
40
  }
20
- ServicesSubScriptions() {
21
- /* this.profileRequestorService.getForm().subscribe(data => {
22
- this.form = data;
23
- this.lastSectionId = this.form.sections[this.form.sections.length - 1].id;
24
- this.currentSectionId = this.section.id;
25
- });*/
41
+ checkValidity(action) {
42
+ switch (action) {
43
+ case 'APPROVE':
44
+ return true;
45
+ case 'REJECT':
46
+ return this.fieldsForm.valid;
47
+ case 'SENDBACK':
48
+ return this.fieldsForm.valid;
49
+ default:
50
+ return false;
51
+ }
26
52
  }
27
- handleAttachment(fieldName, data) {
28
- this.section.body.details[fieldName] = data;
29
- }
30
- handleEmitValue(data, fieldName) {
31
- this.section.body.details[fieldName] = data;
32
- }
33
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RequestDetailsSectionComponent, deps: [{ token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
34
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: RequestDetailsSectionComponent, isStandalone: true, selector: "app-request-details-section", inputs: { isReadOnly: "isReadOnly", section: "section", lov: "lov", className: "className" }, ngImport: i0, template: "<div\r\n [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\">\r\n\r\n\r\n\r\n\r\n\r\n\r\n <ds-alert class=\"full\" type=\"warning\" icon=\"info\">\r\n\r\n <div class=\"d-flex gap-2\">\r\n\r\n Request details working fine\r\n\r\n </div>\r\n\r\n </ds-alert>\r\n\r\n<!--\r\n\r\n\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementName\"\r\n name=\"agreementName\" [labelTextReadMode]=\"i18n.translate('agreementName')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementName')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementName')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementName')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementDescription\"\r\n name=\"agreementDescription\" [labelTextReadMode]=\"i18n.translate('agreementDescription')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementDescription')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementDescription')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementDescription')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementSTC\"\r\n name=\"agreementSTC\" [labelTextReadMode]=\"i18n.translate('agreementSTC')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementSTC')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementSTC')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementSTC')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.contractingPartyName\"\r\n name=\"contractingPartyName\" [labelTextReadMode]=\"i18n.translate('contractingPartyName')\"\r\n [labelTextWriteMode]=\"i18n.translate('contractingPartyName')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('contractingPartyName')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'contractingPartyName')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n\r\n\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.representativeParty\"\r\n name=\"representativeParty\" [labelTextReadMode]=\"i18n.translate('representativeParty')\"\r\n [labelTextWriteMode]=\"i18n.translate('representativeParty')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('representativeParty')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'representativeParty')\">\r\n </app-input>\r\n\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.IBAN\" name=\"IBAN\"\r\n [labelTextReadMode]=\"i18n.translate('IBAN')\" [labelTextWriteMode]=\"i18n.translate('IBAN')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('IBAN')\" [required]=\"false\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'IBAN')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.bankName\" name=\"bankName\"\r\n [labelTextReadMode]=\"i18n.translate('bankName')\" [labelTextWriteMode]=\"i18n.translate('bankName')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('bankName')\" [required]=\"false\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'bankName')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.locationSystem\"\r\n name=\"locationSystem\" [labelTextReadMode]=\"i18n.translate('locationSystem')\"\r\n [labelTextWriteMode]=\"i18n.translate('locationSystem')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('locationSystem')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'locationSystem')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.addressSystem\"\r\n name=\"addressSystem\" [labelTextReadMode]=\"i18n.translate('addressSystem')\"\r\n [labelTextWriteMode]=\"i18n.translate('addressSystem')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('addressSystem')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'addressSystem')\">\r\n </app-input>\r\n <app-select class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.Currency\" name=\"Currency\"\r\n [labelTextReadMode]=\"i18n.translate('Currency')\" [labelTextWriteMode]=\"i18n.translate('Currency')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Currency')\" [lov]=\"lov?.Currency\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'Currency')\">\r\n </app-select>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.vendorNumber\" name=\"vendorNumber\"\r\n [labelTextReadMode]=\"i18n.translate('vendorNumber')\" [labelTextWriteMode]=\"i18n.translate('vendorNumber')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('vendorNumber')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'vendorNumber')\">\r\n </app-input>\r\n\r\n <app-input-currency class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementAmount\"\r\n name=\"agreementAmount\" [labelTextReadMode]=\"i18n.translate('agreementAmount')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementAmount')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementAmount')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'agreementAmount')\">\r\n </app-input-currency>\r\n\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.FCS\" name=\"FCS\"\r\n [labelTextReadMode]=\"i18n.translate('FCS')\" [labelTextWriteMode]=\"i18n.translate('FCS')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('FCS')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'FCS')\">\r\n </app-input>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementPeriod\"\r\n name=\"agreementPeriod\" [labelTextReadMode]=\"i18n.translate('agreementPeriod')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementPeriod')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementPeriod')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementPeriod')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-datepicker class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.startDate\" name=\"startDate\"\r\n [labelTextReadMode]=\"i18n.translate('startDate')\" [labelTextWriteMode]=\"i18n.translate('startDate')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('startDate')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'startDate')\">\r\n </app-datepicker>\r\n <app-datepicker class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.endDate\" name=\"endDate\"\r\n [labelTextReadMode]=\"i18n.translate('endDate')\" [labelTextWriteMode]=\"i18n.translate('endDate')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('endDate')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'endDate')\">\r\n </app-datepicker>\r\n\r\n <app-input-currency class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.purchaseOrderAmount\"\r\n name=\"purchaseOrderAmount\" [labelTextReadMode]=\"i18n.translate('purchaseOrderAmount')\"\r\n [labelTextWriteMode]=\"i18n.translate('purchaseOrderAmount')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('purchaseOrderAmount')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'purchaseOrderAmount')\">\r\n </app-input-currency>\r\n\r\n <app-select class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.currencyPurchaseOrder\"\r\n name=\"currencyPurchaseOrder\" [labelTextReadMode]=\"i18n.translate('currencyPurchaseOrder')\"\r\n [labelTextWriteMode]=\"i18n.translate('currencyPurchaseOrder')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('currencyPurchaseOrder')\" [lov]=\"lov?.currencyPurchaseOrder\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'currencyPurchaseOrder')\">\r\n </app-select>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.typeContract\" name=\"typeContract\"\r\n [labelTextReadMode]=\"i18n.translate('typeContract')\" [labelTextWriteMode]=\"i18n.translate('typeContract')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('typeContract')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'typeContract')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.expenseNumber\"\r\n name=\"expenseNumber\" [labelTextReadMode]=\"i18n.translate('expenseNumber')\"\r\n [labelTextWriteMode]=\"i18n.translate('expenseNumber')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('expenseNumber')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'expenseNumber')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.depNo\" name=\"depNo\"\r\n [labelTextReadMode]=\"i18n.translate('depNo')\" [labelTextWriteMode]=\"i18n.translate('depNo')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('depNo')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'depNo')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.depName\" name=\"depName\"\r\n [labelTextReadMode]=\"i18n.translate('depName')\" [labelTextWriteMode]=\"i18n.translate('depName')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('depName')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'depName')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.PRNo\" name=\"PRNo\"\r\n [labelTextReadMode]=\"i18n.translate('PRNo')\" [labelTextWriteMode]=\"i18n.translate('PRNo')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('PRNo')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'PRNo')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.POPeriod\" name=\"POPeriod\"\r\n [labelTextReadMode]=\"i18n.translate('POPeriod')\" [labelTextWriteMode]=\"i18n.translate('POPeriod')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('POPeriod')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'POPeriod')\">\r\n </app-input>\r\n\r\n\r\n\r\n <app-textarea *ngIf=\"(section?.body?.details?.IS_SENDBACK == 'true') || (!!section?.body?.details?.Comments)\"\r\n class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.Comments\" name=\"Comments\"\r\n [labelTextReadMode]=\"i18n.translate('Comments')\" [labelTextWriteMode]=\"i18n.translate('Comments')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Comments')\" [required]=\"true\" [minLength]='1' [maxLength]='2000'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'Comments')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max2000')\">\r\n </app-textarea>\r\n\r\n\r\n\r\n &lt;!&ndash; <app-file-uploader class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.attachment\" name=\"attachment\" [labelTextReadMode]=\"i18n.translate('attachment')\"\r\n [labelTextWriteMode]=\"i18n.translate('attachment')\" [hasColumnBreak]=\"false\" [label]=\"i18n.translate('attachment')\"\r\n\r\n [required]=\"true\" [multiple]=\"true\" [displayedFiles]=\"section?.body?.details?.attachment\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'attachment')\"[callApi]=\"true\">\r\n </app-file-uploader> &ndash;&gt;\r\n\r\n\r\n\r\n\r\n <app-attachment-section class=\"section-item full\" [field]=\"section?.body?.details?.attachment\" [labelTextReadMode]=\"\"\r\n [labelTextWriteMode]=\"\" [hasColumnBreak]=\"\" [label]=\"\" [required]=\"false\" [isRequired]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [attachments]=\"section?.body?.details?.attachment\"\r\n (emitedValue)=\"handleEmitValue($event,'attachment')\">\r\n </app-attachment-section>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n-->\r\n\r\n</div>\r\n\r\n\r\n<!--<div class=\"mt-4\" *ngIf=\"!section?.header?.readOnly\">\r\n\r\n <div class=\"d-flex align-items-center gap-3\" *ngIf=\"lov?.decision?.type === 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n <ng-container *ngFor=\"let item of lov?.decision?.options\">\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SUBMIT'\">{{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'APPROVE'\">{{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'REJECT'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'CANCEL'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SENDBACK'\">\r\n {{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"!(item?.value === 'SUBMIT' || item?.value === 'APPROVE' || item?.value === 'SENDBACK' || item?.value === 'REJECT' || item?.value === 'CANCEL')\">\r\n {{item?.description}}</ds-button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 justify-content-end gap-3\"\r\n *ngIf=\"lov?.decision?.type !== 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm('SUBMIT')}\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n (click)=\"onSubmit('SUBMIT') || profileRequestorService.disableButtons\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n </div>\r\n</div>-->\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RequestDetailsSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i2.FormBuilder }, { token: i3.ActionStateService }], target: i0.ɵɵFactoryTarget.Component });
54
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: RequestDetailsSectionComponent, isStandalone: true, selector: "app-request-details-section", inputs: { isReadOnly: "isReadOnly", section: "section", lov: "lov", className: "className" }, ngImport: i0, template: "<div\r\n [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\">\r\n\r\n\r\n <ds-alert class=\"full\" type=\"warning\" icon=\"info\">\r\n\r\n <div class=\"d-flex gap-2\">\r\n\r\n Request details working fine\r\n\r\n </div>\r\n\r\n </ds-alert>\r\n\r\n <form [formGroup]=\"fieldsForm\">\r\n <app-input formControlName=\"input1\" ></app-input>\r\n </form>\r\n\r\n</div>\r\n@if (!section?.header?.readOnly) {\r\n <div class=\"mt-4\">\r\n <lib-action-buttons\r\n [lovOptions]=\"lov?.['decision']?.options\"\r\n [lovType]=\"lov?.['decision']?.type\"\r\n />\r\n </div>\r\n}\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InputComponent, selector: "app-input", inputs: ["label", "hasTooltip", "tooltip", "floatLabel", "className", "showLabel", "matPrefix", "iconPrefixName", "matSuffix", "iconSuffixName", "emitedChangedValue1"] }, { kind: "component", type: ActionButtonsComponent, selector: "lib-action-buttons", inputs: ["lovOptions", "lovType"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
35
55
  }
36
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RequestDetailsSectionComponent, decorators: [{
37
57
  type: Component,
38
58
  args: [{ selector: 'app-request-details-section', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], imports: [
39
- NgClass
40
- ], template: "<div\r\n [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\">\r\n\r\n\r\n\r\n\r\n\r\n\r\n <ds-alert class=\"full\" type=\"warning\" icon=\"info\">\r\n\r\n <div class=\"d-flex gap-2\">\r\n\r\n Request details working fine\r\n\r\n </div>\r\n\r\n </ds-alert>\r\n\r\n<!--\r\n\r\n\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementName\"\r\n name=\"agreementName\" [labelTextReadMode]=\"i18n.translate('agreementName')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementName')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementName')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementName')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementDescription\"\r\n name=\"agreementDescription\" [labelTextReadMode]=\"i18n.translate('agreementDescription')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementDescription')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementDescription')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementDescription')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementSTC\"\r\n name=\"agreementSTC\" [labelTextReadMode]=\"i18n.translate('agreementSTC')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementSTC')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementSTC')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementSTC')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.contractingPartyName\"\r\n name=\"contractingPartyName\" [labelTextReadMode]=\"i18n.translate('contractingPartyName')\"\r\n [labelTextWriteMode]=\"i18n.translate('contractingPartyName')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('contractingPartyName')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'contractingPartyName')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n\r\n\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.representativeParty\"\r\n name=\"representativeParty\" [labelTextReadMode]=\"i18n.translate('representativeParty')\"\r\n [labelTextWriteMode]=\"i18n.translate('representativeParty')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('representativeParty')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'representativeParty')\">\r\n </app-input>\r\n\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.IBAN\" name=\"IBAN\"\r\n [labelTextReadMode]=\"i18n.translate('IBAN')\" [labelTextWriteMode]=\"i18n.translate('IBAN')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('IBAN')\" [required]=\"false\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'IBAN')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.bankName\" name=\"bankName\"\r\n [labelTextReadMode]=\"i18n.translate('bankName')\" [labelTextWriteMode]=\"i18n.translate('bankName')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('bankName')\" [required]=\"false\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'bankName')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.locationSystem\"\r\n name=\"locationSystem\" [labelTextReadMode]=\"i18n.translate('locationSystem')\"\r\n [labelTextWriteMode]=\"i18n.translate('locationSystem')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('locationSystem')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'locationSystem')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.addressSystem\"\r\n name=\"addressSystem\" [labelTextReadMode]=\"i18n.translate('addressSystem')\"\r\n [labelTextWriteMode]=\"i18n.translate('addressSystem')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('addressSystem')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'addressSystem')\">\r\n </app-input>\r\n <app-select class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.Currency\" name=\"Currency\"\r\n [labelTextReadMode]=\"i18n.translate('Currency')\" [labelTextWriteMode]=\"i18n.translate('Currency')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Currency')\" [lov]=\"lov?.Currency\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'Currency')\">\r\n </app-select>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.vendorNumber\" name=\"vendorNumber\"\r\n [labelTextReadMode]=\"i18n.translate('vendorNumber')\" [labelTextWriteMode]=\"i18n.translate('vendorNumber')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('vendorNumber')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'vendorNumber')\">\r\n </app-input>\r\n\r\n <app-input-currency class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementAmount\"\r\n name=\"agreementAmount\" [labelTextReadMode]=\"i18n.translate('agreementAmount')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementAmount')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementAmount')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'agreementAmount')\">\r\n </app-input-currency>\r\n\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.FCS\" name=\"FCS\"\r\n [labelTextReadMode]=\"i18n.translate('FCS')\" [labelTextWriteMode]=\"i18n.translate('FCS')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('FCS')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'FCS')\">\r\n </app-input>\r\n <app-textarea class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.agreementPeriod\"\r\n name=\"agreementPeriod\" [labelTextReadMode]=\"i18n.translate('agreementPeriod')\"\r\n [labelTextWriteMode]=\"i18n.translate('agreementPeriod')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('agreementPeriod')\" [required]=\"true\" [minLength]='1' [maxLength]='300'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'agreementPeriod')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max300')\">\r\n </app-textarea>\r\n <app-datepicker class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.startDate\" name=\"startDate\"\r\n [labelTextReadMode]=\"i18n.translate('startDate')\" [labelTextWriteMode]=\"i18n.translate('startDate')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('startDate')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'startDate')\">\r\n </app-datepicker>\r\n <app-datepicker class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.endDate\" name=\"endDate\"\r\n [labelTextReadMode]=\"i18n.translate('endDate')\" [labelTextWriteMode]=\"i18n.translate('endDate')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('endDate')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'endDate')\">\r\n </app-datepicker>\r\n\r\n <app-input-currency class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.purchaseOrderAmount\"\r\n name=\"purchaseOrderAmount\" [labelTextReadMode]=\"i18n.translate('purchaseOrderAmount')\"\r\n [labelTextWriteMode]=\"i18n.translate('purchaseOrderAmount')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('purchaseOrderAmount')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'purchaseOrderAmount')\">\r\n </app-input-currency>\r\n\r\n <app-select class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.currencyPurchaseOrder\"\r\n name=\"currencyPurchaseOrder\" [labelTextReadMode]=\"i18n.translate('currencyPurchaseOrder')\"\r\n [labelTextWriteMode]=\"i18n.translate('currencyPurchaseOrder')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('currencyPurchaseOrder')\" [lov]=\"lov?.currencyPurchaseOrder\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'currencyPurchaseOrder')\">\r\n </app-select>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.typeContract\" name=\"typeContract\"\r\n [labelTextReadMode]=\"i18n.translate('typeContract')\" [labelTextWriteMode]=\"i18n.translate('typeContract')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('typeContract')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'typeContract')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.expenseNumber\"\r\n name=\"expenseNumber\" [labelTextReadMode]=\"i18n.translate('expenseNumber')\"\r\n [labelTextWriteMode]=\"i18n.translate('expenseNumber')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('expenseNumber')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'expenseNumber')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.depNo\" name=\"depNo\"\r\n [labelTextReadMode]=\"i18n.translate('depNo')\" [labelTextWriteMode]=\"i18n.translate('depNo')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('depNo')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'depNo')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.depName\" name=\"depName\"\r\n [labelTextReadMode]=\"i18n.translate('depName')\" [labelTextWriteMode]=\"i18n.translate('depName')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('depName')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'depName')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.PRNo\" name=\"PRNo\"\r\n [labelTextReadMode]=\"i18n.translate('PRNo')\" [labelTextWriteMode]=\"i18n.translate('PRNo')\" [hasColumnBreak]=\"false\"\r\n [label]=\"i18n.translate('PRNo')\" [required]=\"true\" [isReadOnly]=\"section?.header?.readOnly\"\r\n (emitedValue)=\"handleEmitValue($event,'PRNo')\">\r\n </app-input>\r\n <app-input class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.POPeriod\" name=\"POPeriod\"\r\n [labelTextReadMode]=\"i18n.translate('POPeriod')\" [labelTextWriteMode]=\"i18n.translate('POPeriod')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('POPeriod')\" [required]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'POPeriod')\">\r\n </app-input>\r\n\r\n\r\n\r\n <app-textarea *ngIf=\"(section?.body?.details?.IS_SENDBACK == 'true') || (!!section?.body?.details?.Comments)\"\r\n class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.Comments\" name=\"Comments\"\r\n [labelTextReadMode]=\"i18n.translate('Comments')\" [labelTextWriteMode]=\"i18n.translate('Comments')\"\r\n [hasColumnBreak]=\"false\" [label]=\"i18n.translate('Comments')\" [required]=\"true\" [minLength]='1' [maxLength]='2000'\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'Comments')\"\r\n [errorMessage]=\"i18n.translate('lenghtMin1Max2000')\">\r\n </app-textarea>\r\n\r\n\r\n\r\n &lt;!&ndash; <app-file-uploader class=\"section-item\" [section]=\"section\" [field]=\"section?.body?.details?.attachment\" name=\"attachment\" [labelTextReadMode]=\"i18n.translate('attachment')\"\r\n [labelTextWriteMode]=\"i18n.translate('attachment')\" [hasColumnBreak]=\"false\" [label]=\"i18n.translate('attachment')\"\r\n\r\n [required]=\"true\" [multiple]=\"true\" [displayedFiles]=\"section?.body?.details?.attachment\"\r\n [isReadOnly]=\"section?.header?.readOnly\" (emitedValue)=\"handleEmitValue($event,'attachment')\"[callApi]=\"true\">\r\n </app-file-uploader> &ndash;&gt;\r\n\r\n\r\n\r\n\r\n <app-attachment-section class=\"section-item full\" [field]=\"section?.body?.details?.attachment\" [labelTextReadMode]=\"\"\r\n [labelTextWriteMode]=\"\" [hasColumnBreak]=\"\" [label]=\"\" [required]=\"false\" [isRequired]=\"true\"\r\n [isReadOnly]=\"section?.header?.readOnly\" [attachments]=\"section?.body?.details?.attachment\"\r\n (emitedValue)=\"handleEmitValue($event,'attachment')\">\r\n </app-attachment-section>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n-->\r\n\r\n</div>\r\n\r\n\r\n<!--<div class=\"mt-4\" *ngIf=\"!section?.header?.readOnly\">\r\n\r\n <div class=\"d-flex align-items-center gap-3\" *ngIf=\"lov?.decision?.type === 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 flex-row-reverse gap-3\">\r\n <ng-container *ngFor=\"let item of lov?.decision?.options\">\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SUBMIT'\">{{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'APPROVE'\">{{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'REJECT'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" color=\"red\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\" *ngIf=\"item?.value === 'CANCEL'\">\r\n {{item?.description}}</ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value)\" shape=\"outline\" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"item?.value === 'SENDBACK'\">\r\n {{item?.description}}</ds-button>\r\n\r\n <ds-button [ngClass]=\"{'disabled':!validForm(item?.value) || profileRequestorService.disableButtons}\"\r\n (click)=\"onSubmit(item?.value) \" [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n *ngIf=\"!(item?.value === 'SUBMIT' || item?.value === 'APPROVE' || item?.value === 'SENDBACK' || item?.value === 'REJECT' || item?.value === 'CANCEL')\">\r\n {{item?.description}}</ds-button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap align-items-center flex-grow-1 justify-content-end gap-3\"\r\n *ngIf=\"lov?.decision?.type !== 'button'\">\r\n <ds-button shape=\"text\" color=\"red\" (click)=\"resetForm()\">\r\n <span class=\"fs-16 fw-medium\">{{i18n.translate('reset')}}</span>\r\n </ds-button>\r\n <ds-button [ngClass]=\"{'disabled':!validForm('SUBMIT')}\"\r\n [loading]=\"profileRequestorService.isSubmitting[item?.value]\"\r\n (click)=\"onSubmit('SUBMIT') || profileRequestorService.disableButtons\">\r\n {{i18n.translate('submit')}}\r\n </ds-button>\r\n </div>\r\n</div>-->\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}\n"] }]
41
- }], ctorParameters: () => [{ type: i1.CoreI18nService }], propDecorators: { isReadOnly: [{
59
+ NgClass,
60
+ InputComponent,
61
+ NgIf,
62
+ NgForOf,
63
+ ActionButtonsComponent,
64
+ ReactiveFormsModule,
65
+ ], template: "<div\r\n [ngClass]=\"{'form-section-divide form-section':!section?.header?.readOnly,'info-section':section?.header?.readOnly}\">\r\n\r\n\r\n <ds-alert class=\"full\" type=\"warning\" icon=\"info\">\r\n\r\n <div class=\"d-flex gap-2\">\r\n\r\n Request details working fine\r\n\r\n </div>\r\n\r\n </ds-alert>\r\n\r\n <form [formGroup]=\"fieldsForm\">\r\n <app-input formControlName=\"input1\" ></app-input>\r\n </form>\r\n\r\n</div>\r\n@if (!section?.header?.readOnly) {\r\n <div class=\"mt-4\">\r\n <lib-action-buttons\r\n [lovOptions]=\"lov?.['decision']?.options\"\r\n [lovType]=\"lov?.['decision']?.type\"\r\n />\r\n </div>\r\n}\r\n", styles: [".form-section-divide{--form-section-columns: 1fr 1fr}@media (max-width: 756px){.form-section-divide{--form-section-columns: 100%}}.form-section-divide .full{grid-column:1/-1}.head-title{position:relative;margin-bottom:12px}.head-title h3{display:inline-block;color:#8e9aa0;font-size:14px;font-weight:500;background-color:#fff;padding-inline-end:20px;position:relative;z-index:2;margin:0}.head-title:after{content:\"\";position:absolute;width:100%;height:1px;background-color:#dee0e2;top:50%;left:0;right:0;transform:translateY(-50%);z-index:1}.chamber{margin-bottom:20px}.chamber .chamber-content{background-color:#f8f8f8;padding:20px}.chamber .chamber-content .chamber-select{display:flex}.chamber .chamber-content mat-checkbox{font-size:14px}\n"] }]
66
+ }], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i2.FormBuilder }, { type: i3.ActionStateService }], propDecorators: { isReadOnly: [{
42
67
  type: Input
43
68
  }], section: [{
44
69
  type: Input
@@ -47,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
47
72
  }], className: [{
48
73
  type: Input
49
74
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1kZXRhaWxzLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd6RixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQVl4QyxNQUFNLE9BQU8sOEJBQThCO0lBYXRCO0lBWFYsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixHQUFHLENBQU07SUFDVCxTQUFTLEdBQVcsY0FBYyxDQUFDO0lBSTVDLGdCQUFnQixDQUFTO0lBQ3pCLGFBQWEsQ0FBUztJQUN0QixJQUFJLENBQU87SUFFWCxZQUFtQixJQUFxQjtRQUFyQixTQUFJLEdBQUosSUFBSSxDQUFpQjtJQU14QyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxxQkFBcUI7UUFDNUI7Ozs7ZUFJTztJQUNQLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLElBQVM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQTtJQUM3QyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVMsRUFBRSxTQUFpQjtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7dUdBdkNVLDhCQUE4QjsyRkFBOUIsOEJBQThCLHFMQ2YzQyxvcGlCQTBRQSxveUJEOVBJLE9BQU87OzJGQUdFLDhCQUE4QjtrQkFWMUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsV0FDMUM7d0JBQ1AsT0FBTztxQkFDUjtvRkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBJbnB1dCwgTk9fRVJST1JTX1NDSEVNQX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybSwgU2VjdGlvbn0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHtDb3JlSTE4blNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlc1wiO1xyXG5pbXBvcnQge05nQ2xhc3N9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXJlcXVlc3QtZGV0YWlscy1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVxdWVzdC1kZXRhaWxzLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdDbGFzc1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcXVlc3REZXRhaWxzU2VjdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGlzUmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VjdGlvbjogU2VjdGlvbjtcclxuICBASW5wdXQoKSBsb3Y6IGFueTtcclxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IFwiaW5mby1zZWN0aW9uXCI7XHJcblxyXG5cclxuXHJcbiAgY3VycmVudFNlY3Rpb25JZDogc3RyaW5nO1xyXG4gIGxhc3RTZWN0aW9uSWQ6IHN0cmluZztcclxuICBmb3JtOiBGb3JtO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaTE4bjogQ29yZUkxOG5TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIC8vIHB1YmxpYyBwcm9maWxlUmVxdWVzdG9yU2VydmljZTogUHJvZmlsZVJlcXVlc3RvclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgLy8gcHVibGljIFN0YXRlTWFjaGluZVNlcnZpY2U6IFN0YXRlTWFjaGluZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgLy8gcHVibGljIF9saXN0ZW5lclNlcnZpY2U6IExpc3RlbmVyU2VydmljZSxcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLlNlcnZpY2VzU3ViU2NyaXB0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlcnZpY2VzU3ViU2NyaXB0aW9ucygpIHtcclxuICAvKiAgdGhpcy5wcm9maWxlUmVxdWVzdG9yU2VydmljZS5nZXRGb3JtKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmZvcm0gPSBkYXRhO1xyXG4gICAgICB0aGlzLmxhc3RTZWN0aW9uSWQgPSB0aGlzLmZvcm0uc2VjdGlvbnNbdGhpcy5mb3JtLnNlY3Rpb25zLmxlbmd0aCAtIDFdLmlkO1xyXG4gICAgICB0aGlzLmN1cnJlbnRTZWN0aW9uSWQgPSB0aGlzLnNlY3Rpb24uaWQ7XHJcbiAgICB9KTsqL1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXR0YWNobWVudChmaWVsZE5hbWU6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzW2ZpZWxkTmFtZV0gPSBkYXRhXHJcbiAgfVxyXG5cclxuICBoYW5kbGVFbWl0VmFsdWUoZGF0YTogYW55LCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlsc1tmaWVsZE5hbWVdID0gZGF0YTtcclxuICB9XHJcblxyXG4gIC8qdmFsaWRGb3JtKGFjdGlvbikge1xyXG4gICAgbGV0IHJldHVyblZhbHVlID0gdHJ1ZTtcclxuICAgIGNvbnN0IGxhc3RTZWN0aW9uID0gdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlsc1xyXG4gICAgbGV0IGNvbW1lbnRWYWxpZDtcclxuICAgIGlmIChsYXN0U2VjdGlvbi5Db21tZW50cyAmJiBsYXN0U2VjdGlvbi5Db21tZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBsYXN0U2VjdGlvbi5Db21tZW50cy5sZW5ndGggPj0gMSAmJlxyXG4gICAgICAgIGxhc3RTZWN0aW9uLkNvbW1lbnRzLmxlbmd0aCA8PSA1MDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29tbWVudFZhbGlkID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb21tZW50VmFsaWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tbWVudFZhbGlkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ1NVQk1JVCc6XHJcbiAgICAgICAgaWYgKGxhc3RTZWN0aW9uPy5hZ3JlZW1lbnROYW1lICYmIGxhc3RTZWN0aW9uPy5hZ3JlZW1lbnREZXNjcmlwdGlvbiAmJiBsYXN0U2VjdGlvbj8uYWdyZWVtZW50U1RDXHJcbiAgICAgICAgICAmJiBsYXN0U2VjdGlvbj8uY29udHJhY3RpbmdQYXJ0eU5hbWUgJiYgbGFzdFNlY3Rpb24/LnJlcHJlc2VudGF0aXZlUGFydHkgJiYgbGFzdFNlY3Rpb24/LmxvY2F0aW9uU3lzdGVtXHJcbiAgICAgICAgICAmJiBsYXN0U2VjdGlvbj8uYWRkcmVzc1N5c3RlbSAmJiBsYXN0U2VjdGlvbj8uQ3VycmVuY3k/LmtleSAmJiBsYXN0U2VjdGlvbj8udmVuZG9yTnVtYmVyXHJcbiAgICAgICAgICAmJiBsYXN0U2VjdGlvbj8uYWdyZWVtZW50QW1vdW50ICYmIGxhc3RTZWN0aW9uPy5GQ1MgJiYgbGFzdFNlY3Rpb24/LmFncmVlbWVudFBlcmlvZFxyXG4gICAgICAgICAgJiYgbGFzdFNlY3Rpb24/LnN0YXJ0RGF0ZSAmJiBsYXN0U2VjdGlvbj8uZW5kRGF0ZSAmJiBsYXN0U2VjdGlvbj8ucHVyY2hhc2VPcmRlckFtb3VudFxyXG4gICAgICAgICAgJiYgbGFzdFNlY3Rpb24/LmN1cnJlbmN5UHVyY2hhc2VPcmRlcj8ua2V5ICYmIGxhc3RTZWN0aW9uPy50eXBlQ29udHJhY3QgJiYgbGFzdFNlY3Rpb24/LmV4cGVuc2VOdW1iZXJcclxuICAgICAgICAgICYmIGxhc3RTZWN0aW9uPy5kZXBObyAmJiBsYXN0U2VjdGlvbj8uZGVwTmFtZSAmJiBsYXN0U2VjdGlvbj8uUFJObyAmJiBsYXN0U2VjdGlvbj8uUE9QZXJpb2QpIHtcclxuXHJcbiAgICAgICAgICBpZiAobGFzdFNlY3Rpb24/LklTX1NFTkRCQUNLID09IFwidHJ1ZVwiICYmIGxhc3RTZWN0aW9uPy5Db21tZW50cyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdBUFBST1ZFJzpcclxuICAgICAgICBpZiAoY29tbWVudFZhbGlkKSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdSRUpFQ1QnOlxyXG4gICAgICAgIGlmIChsYXN0U2VjdGlvbi5jb21tZW50ICYmIGNvbW1lbnRWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnU0VOREJBQ0snOlxyXG4gICAgICAgIGlmIChsYXN0U2VjdGlvbi5jb21tZW50ICYmIGNvbW1lbnRWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnU0FWRV9DSEFOR0VTJzpcclxuICAgICAgICByZXR1cm5WYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0NBTkNFTCc6XHJcbiAgICAgICAgaWYgKGxhc3RTZWN0aW9uLkNvbW1lbnRzICYmIGNvbW1lbnRWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1NFTkRUT0RPJzpcclxuICAgICAgICByZXR1cm5WYWx1ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KGFjdGlvbjogYW55KSB7XHJcbiAgICBpZiAodGhpcy52YWxpZEZvcm0oYWN0aW9uKSkge1xyXG4gICAgICB0aGlzLnByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbYWN0aW9uXSA9IHRydWU7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBmdW5jdGlvbjogJ29uU3VibWl0JyxcclxuICAgICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgICBkYXRhOiB0aGlzLnNlY3Rpb25cclxuICAgICAgfTtcclxuICAgICAgdGhpcy5fbGlzdGVuZXJTZXJ2aWNlLmZpbHRlcihvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKCkge1xyXG4gICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICBmdW5jdGlvbjogJ3Jlc2V0Rm9ybSdcclxuICAgIH07XHJcbiAgICB0aGlzLl9saXN0ZW5lclNlcnZpY2UuZmlsdGVyKG9iaik7XHJcbiAgfSovXHJcbn1cclxuIiwiPGRpdlxyXG4gIFtuZ0NsYXNzXT1cInsnZm9ybS1zZWN0aW9uLWRpdmlkZSBmb3JtLXNlY3Rpb24nOiFzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5LCdpbmZvLXNlY3Rpb24nOnNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHl9XCI+XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgPGRzLWFsZXJ0IGNsYXNzPVwiZnVsbFwiIHR5cGU9XCJ3YXJuaW5nXCIgaWNvbj1cImluZm9cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcblxyXG4gICAgIFJlcXVlc3QgZGV0YWlscyB3b3JraW5nIGZpbmVcclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kcy1hbGVydD5cclxuXHJcbjwhLS1cclxuXHJcblxyXG4gIDxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmFncmVlbWVudE5hbWVcIlxyXG4gICAgbmFtZT1cImFncmVlbWVudE5hbWVcIiBbbGFiZWxUZXh0UmVhZE1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2FncmVlbWVudE5hbWUnKVwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnROYW1lJylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnROYW1lJylcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFttaW5MZW5ndGhdPScxJyBbbWF4TGVuZ3RoXT0nMzAwJ1xyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdhZ3JlZW1lbnROYW1lJylcIlxyXG4gICAgW2Vycm9yTWVzc2FnZV09XCJpMThuLnRyYW5zbGF0ZSgnbGVuZ2h0TWluMU1heDMwMCcpXCI+XHJcbiAgPC9hcHAtdGV4dGFyZWE+XHJcbiAgPGFwcC10ZXh0YXJlYSBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uYWdyZWVtZW50RGVzY3JpcHRpb25cIlxyXG4gICAgbmFtZT1cImFncmVlbWVudERlc2NyaXB0aW9uXCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnREZXNjcmlwdGlvbicpXCJcclxuICAgIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2FncmVlbWVudERlc2NyaXB0aW9uJylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnREZXNjcmlwdGlvbicpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbWluTGVuZ3RoXT0nMScgW21heExlbmd0aF09JzMwMCdcclxuICAgIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiAoZW1pdGVkVmFsdWUpPVwiaGFuZGxlRW1pdFZhbHVlKCRldmVudCwnYWdyZWVtZW50RGVzY3JpcHRpb24nKVwiXHJcbiAgICBbZXJyb3JNZXNzYWdlXT1cImkxOG4udHJhbnNsYXRlKCdsZW5naHRNaW4xTWF4MzAwJylcIj5cclxuICA8L2FwcC10ZXh0YXJlYT5cclxuICA8YXBwLXRleHRhcmVhIGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5hZ3JlZW1lbnRTVENcIlxyXG4gICAgbmFtZT1cImFncmVlbWVudFNUQ1wiIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnYWdyZWVtZW50U1RDJylcIlxyXG4gICAgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnYWdyZWVtZW50U1RDJylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnRTVEMnKVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW21pbkxlbmd0aF09JzEnIFttYXhMZW5ndGhdPSczMDAnXHJcbiAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2FncmVlbWVudFNUQycpXCJcclxuICAgIFtlcnJvck1lc3NhZ2VdPVwiaTE4bi50cmFuc2xhdGUoJ2xlbmdodE1pbjFNYXgzMDAnKVwiPlxyXG4gIDwvYXBwLXRleHRhcmVhPlxyXG4gIDxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmNvbnRyYWN0aW5nUGFydHlOYW1lXCJcclxuICAgIG5hbWU9XCJjb250cmFjdGluZ1BhcnR5TmFtZVwiIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnY29udHJhY3RpbmdQYXJ0eU5hbWUnKVwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdjb250cmFjdGluZ1BhcnR5TmFtZScpXCIgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCJcclxuICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnY29udHJhY3RpbmdQYXJ0eU5hbWUnKVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW21pbkxlbmd0aF09JzEnIFttYXhMZW5ndGhdPSczMDAnXHJcbiAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2NvbnRyYWN0aW5nUGFydHlOYW1lJylcIlxyXG4gICAgW2Vycm9yTWVzc2FnZV09XCJpMThuLnRyYW5zbGF0ZSgnbGVuZ2h0TWluMU1heDMwMCcpXCI+XHJcbiAgPC9hcHAtdGV4dGFyZWE+XHJcblxyXG5cclxuICA8YXBwLWlucHV0IGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5yZXByZXNlbnRhdGl2ZVBhcnR5XCJcclxuICAgIG5hbWU9XCJyZXByZXNlbnRhdGl2ZVBhcnR5XCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdyZXByZXNlbnRhdGl2ZVBhcnR5JylcIlxyXG4gICAgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgncmVwcmVzZW50YXRpdmVQYXJ0eScpXCIgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCJcclxuICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgncmVwcmVzZW50YXRpdmVQYXJ0eScpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCJcclxuICAgIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdyZXByZXNlbnRhdGl2ZVBhcnR5JylcIj5cclxuICA8L2FwcC1pbnB1dD5cclxuXHJcbiAgPGFwcC1pbnB1dCBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uSUJBTlwiIG5hbWU9XCJJQkFOXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnSUJBTicpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnSUJBTicpXCIgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCJcclxuICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnSUJBTicpXCIgW3JlcXVpcmVkXT1cImZhbHNlXCIgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiXHJcbiAgICAoZW1pdGVkVmFsdWUpPVwiaGFuZGxlRW1pdFZhbHVlKCRldmVudCwnSUJBTicpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcbiAgPGFwcC1pbnB1dCBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uYmFua05hbWVcIiBuYW1lPVwiYmFua05hbWVcIlxyXG4gICAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdiYW5rTmFtZScpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnYmFua05hbWUnKVwiXHJcbiAgICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ2JhbmtOYW1lJylcIiBbcmVxdWlyZWRdPVwiZmFsc2VcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdiYW5rTmFtZScpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcbiAgPGFwcC1pbnB1dCBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8ubG9jYXRpb25TeXN0ZW1cIlxyXG4gICAgbmFtZT1cImxvY2F0aW9uU3lzdGVtXCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdsb2NhdGlvblN5c3RlbScpXCJcclxuICAgIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2xvY2F0aW9uU3lzdGVtJylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdsb2NhdGlvblN5c3RlbScpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCJcclxuICAgIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdsb2NhdGlvblN5c3RlbScpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcbiAgPGFwcC1pbnB1dCBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uYWRkcmVzc1N5c3RlbVwiXHJcbiAgICBuYW1lPVwiYWRkcmVzc1N5c3RlbVwiIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnYWRkcmVzc1N5c3RlbScpXCJcclxuICAgIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2FkZHJlc3NTeXN0ZW0nKVwiIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiXHJcbiAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ2FkZHJlc3NTeXN0ZW0nKVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiXHJcbiAgICAoZW1pdGVkVmFsdWUpPVwiaGFuZGxlRW1pdFZhbHVlKCRldmVudCwnYWRkcmVzc1N5c3RlbScpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcbiAgPGFwcC1zZWxlY3QgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LkN1cnJlbmN5XCIgbmFtZT1cIkN1cnJlbmN5XCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnQ3VycmVuY3knKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ0N1cnJlbmN5JylcIlxyXG4gICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdDdXJyZW5jeScpXCIgW2xvdl09XCJsb3Y/LkN1cnJlbmN5XCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdDdXJyZW5jeScpXCI+XHJcbiAgPC9hcHAtc2VsZWN0PlxyXG4gIDxhcHAtaW5wdXQgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LnZlbmRvck51bWJlclwiIG5hbWU9XCJ2ZW5kb3JOdW1iZXJcIlxyXG4gICAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCd2ZW5kb3JOdW1iZXInKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ3ZlbmRvck51bWJlcicpXCJcclxuICAgIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgndmVuZG9yTnVtYmVyJylcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ3ZlbmRvck51bWJlcicpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcblxyXG4gIDxhcHAtaW5wdXQtY3VycmVuY3kgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmFncmVlbWVudEFtb3VudFwiXHJcbiAgICBuYW1lPVwiYWdyZWVtZW50QW1vdW50XCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnRBbW91bnQnKVwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnRBbW91bnQnKVwiIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiXHJcbiAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ2FncmVlbWVudEFtb3VudCcpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCJcclxuICAgIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdhZ3JlZW1lbnRBbW91bnQnKVwiPlxyXG4gIDwvYXBwLWlucHV0LWN1cnJlbmN5PlxyXG5cclxuICA8YXBwLWlucHV0IGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5GQ1NcIiBuYW1lPVwiRkNTXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnRkNTJylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdGQ1MnKVwiIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiXHJcbiAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ0ZDUycpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCJcclxuICAgIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdGQ1MnKVwiPlxyXG4gIDwvYXBwLWlucHV0PlxyXG4gIDxhcHAtdGV4dGFyZWEgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmFncmVlbWVudFBlcmlvZFwiXHJcbiAgICBuYW1lPVwiYWdyZWVtZW50UGVyaW9kXCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnRQZXJpb2QnKVwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhZ3JlZW1lbnRQZXJpb2QnKVwiIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiXHJcbiAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ2FncmVlbWVudFBlcmlvZCcpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbWluTGVuZ3RoXT0nMScgW21heExlbmd0aF09JzMwMCdcclxuICAgIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIiAoZW1pdGVkVmFsdWUpPVwiaGFuZGxlRW1pdFZhbHVlKCRldmVudCwnYWdyZWVtZW50UGVyaW9kJylcIlxyXG4gICAgW2Vycm9yTWVzc2FnZV09XCJpMThuLnRyYW5zbGF0ZSgnbGVuZ2h0TWluMU1heDMwMCcpXCI+XHJcbiAgPC9hcHAtdGV4dGFyZWE+XHJcbiAgPGFwcC1kYXRlcGlja2VyIGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5zdGFydERhdGVcIiBuYW1lPVwic3RhcnREYXRlXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnc3RhcnREYXRlJylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdzdGFydERhdGUnKVwiXHJcbiAgICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ3N0YXJ0RGF0ZScpXCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdzdGFydERhdGUnKVwiPlxyXG4gIDwvYXBwLWRhdGVwaWNrZXI+XHJcbiAgPGFwcC1kYXRlcGlja2VyIGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5lbmREYXRlXCIgbmFtZT1cImVuZERhdGVcIlxyXG4gICAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdlbmREYXRlJylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdlbmREYXRlJylcIlxyXG4gICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdlbmREYXRlJylcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2VuZERhdGUnKVwiPlxyXG4gIDwvYXBwLWRhdGVwaWNrZXI+XHJcblxyXG4gIDxhcHAtaW5wdXQtY3VycmVuY3kgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LnB1cmNoYXNlT3JkZXJBbW91bnRcIlxyXG4gICAgbmFtZT1cInB1cmNoYXNlT3JkZXJBbW91bnRcIiBbbGFiZWxUZXh0UmVhZE1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ3B1cmNoYXNlT3JkZXJBbW91bnQnKVwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdwdXJjaGFzZU9yZGVyQW1vdW50JylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdwdXJjaGFzZU9yZGVyQW1vdW50JylcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIlxyXG4gICAgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ3B1cmNoYXNlT3JkZXJBbW91bnQnKVwiPlxyXG4gIDwvYXBwLWlucHV0LWN1cnJlbmN5PlxyXG5cclxuICA8YXBwLXNlbGVjdCBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uY3VycmVuY3lQdXJjaGFzZU9yZGVyXCJcclxuICAgIG5hbWU9XCJjdXJyZW5jeVB1cmNoYXNlT3JkZXJcIiBbbGFiZWxUZXh0UmVhZE1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2N1cnJlbmN5UHVyY2hhc2VPcmRlcicpXCJcclxuICAgIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2N1cnJlbmN5UHVyY2hhc2VPcmRlcicpXCIgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCJcclxuICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnY3VycmVuY3lQdXJjaGFzZU9yZGVyJylcIiBbbG92XT1cImxvdj8uY3VycmVuY3lQdXJjaGFzZU9yZGVyXCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdjdXJyZW5jeVB1cmNoYXNlT3JkZXInKVwiPlxyXG4gIDwvYXBwLXNlbGVjdD5cclxuICA8YXBwLWlucHV0IGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy50eXBlQ29udHJhY3RcIiBuYW1lPVwidHlwZUNvbnRyYWN0XCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgndHlwZUNvbnRyYWN0JylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCd0eXBlQ29udHJhY3QnKVwiXHJcbiAgICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ3R5cGVDb250cmFjdCcpXCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCd0eXBlQ29udHJhY3QnKVwiPlxyXG4gIDwvYXBwLWlucHV0PlxyXG4gIDxhcHAtaW5wdXQgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmV4cGVuc2VOdW1iZXJcIlxyXG4gICAgbmFtZT1cImV4cGVuc2VOdW1iZXJcIiBbbGFiZWxUZXh0UmVhZE1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2V4cGVuc2VOdW1iZXInKVwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdleHBlbnNlTnVtYmVyJylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdleHBlbnNlTnVtYmVyJylcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIlxyXG4gICAgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2V4cGVuc2VOdW1iZXInKVwiPlxyXG4gIDwvYXBwLWlucHV0PlxyXG4gIDxhcHAtaW5wdXQgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmRlcE5vXCIgbmFtZT1cImRlcE5vXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnZGVwTm8nKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ2RlcE5vJylcIlxyXG4gICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdkZXBObycpXCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdkZXBObycpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcbiAgPGFwcC1pbnB1dCBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uZGVwTmFtZVwiIG5hbWU9XCJkZXBOYW1lXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnZGVwTmFtZScpXCIgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnZGVwTmFtZScpXCJcclxuICAgIFtoYXNDb2x1bW5CcmVha109XCJmYWxzZVwiIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnZGVwTmFtZScpXCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdkZXBOYW1lJylcIj5cclxuICA8L2FwcC1pbnB1dD5cclxuICA8YXBwLWlucHV0IGNsYXNzPVwic2VjdGlvbi1pdGVtXCIgW3NlY3Rpb25dPVwic2VjdGlvblwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5QUk5vXCIgbmFtZT1cIlBSTm9cIlxyXG4gICAgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdQUk5vJylcIiBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdQUk5vJylcIiBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIlxyXG4gICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdQUk5vJylcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFtpc1JlYWRPbmx5XT1cInNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIlxyXG4gICAgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ1BSTm8nKVwiPlxyXG4gIDwvYXBwLWlucHV0PlxyXG4gIDxhcHAtaW5wdXQgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LlBPUGVyaW9kXCIgbmFtZT1cIlBPUGVyaW9kXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnUE9QZXJpb2QnKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ1BPUGVyaW9kJylcIlxyXG4gICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdQT1BlcmlvZCcpXCIgW3JlcXVpcmVkXT1cInRydWVcIlxyXG4gICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiIChlbWl0ZWRWYWx1ZSk9XCJoYW5kbGVFbWl0VmFsdWUoJGV2ZW50LCdQT1BlcmlvZCcpXCI+XHJcbiAgPC9hcHAtaW5wdXQ+XHJcblxyXG5cclxuXHJcbiAgPGFwcC10ZXh0YXJlYSAqbmdJZj1cIihzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5JU19TRU5EQkFDSyA9PSAndHJ1ZScpICB8fCAoISFzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5Db21tZW50cylcIlxyXG4gICAgY2xhc3M9XCJzZWN0aW9uLWl0ZW1cIiBbc2VjdGlvbl09XCJzZWN0aW9uXCIgW2ZpZWxkXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LkNvbW1lbnRzXCIgbmFtZT1cIkNvbW1lbnRzXCJcclxuICAgIFtsYWJlbFRleHRSZWFkTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnQ29tbWVudHMnKVwiIFtsYWJlbFRleHRXcml0ZU1vZGVdPVwiaTE4bi50cmFuc2xhdGUoJ0NvbW1lbnRzJylcIlxyXG4gICAgW2hhc0NvbHVtbkJyZWFrXT1cImZhbHNlXCIgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdDb21tZW50cycpXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbbWluTGVuZ3RoXT0nMScgW21heExlbmd0aF09JzIwMDAnXHJcbiAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ0NvbW1lbnRzJylcIlxyXG4gICAgW2Vycm9yTWVzc2FnZV09XCJpMThuLnRyYW5zbGF0ZSgnbGVuZ2h0TWluMU1heDIwMDAnKVwiPlxyXG4gIDwvYXBwLXRleHRhcmVhPlxyXG5cclxuXHJcblxyXG4gICZsdDshJm5kYXNoOyA8YXBwLWZpbGUtdXBsb2FkZXIgICBjbGFzcz1cInNlY3Rpb24taXRlbVwiIFtzZWN0aW9uXT1cInNlY3Rpb25cIiBbZmllbGRdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uYXR0YWNobWVudFwiIG5hbWU9XCJhdHRhY2htZW50XCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cImkxOG4udHJhbnNsYXRlKCdhdHRhY2htZW50JylcIlxyXG4gICAgW2xhYmVsVGV4dFdyaXRlTW9kZV09XCJpMThuLnRyYW5zbGF0ZSgnYXR0YWNobWVudCcpXCIgICBbaGFzQ29sdW1uQnJlYWtdPVwiZmFsc2VcIiAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdhdHRhY2htZW50JylcIlxyXG5cclxuICAgIFtyZXF1aXJlZF09XCJ0cnVlXCIgICAgW211bHRpcGxlXT1cInRydWVcIiAgICBbZGlzcGxheWVkRmlsZXNdPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uYXR0YWNobWVudFwiXHJcbiAgICAgW2lzUmVhZE9ubHldPVwic2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seVwiICAoZW1pdGVkVmFsdWUpPVwiaGFuZGxlRW1pdFZhbHVlKCRldmVudCwnYXR0YWNobWVudCcpXCJbY2FsbEFwaV09XCJ0cnVlXCI+XHJcbiAgPC9hcHAtZmlsZS11cGxvYWRlcj4gJm5kYXNoOyZndDtcclxuXHJcblxyXG5cclxuXHJcbiAgPGFwcC1hdHRhY2htZW50LXNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uLWl0ZW0gZnVsbFwiIFtmaWVsZF09XCJzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5hdHRhY2htZW50XCIgW2xhYmVsVGV4dFJlYWRNb2RlXT1cIlwiXHJcbiAgICBbbGFiZWxUZXh0V3JpdGVNb2RlXT1cIlwiIFtoYXNDb2x1bW5CcmVha109XCJcIiBbbGFiZWxdPVwiXCIgW3JlcXVpcmVkXT1cImZhbHNlXCIgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICBbaXNSZWFkT25seV09XCJzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5XCIgW2F0dGFjaG1lbnRzXT1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmF0dGFjaG1lbnRcIlxyXG4gICAgKGVtaXRlZFZhbHVlKT1cImhhbmRsZUVtaXRWYWx1ZSgkZXZlbnQsJ2F0dGFjaG1lbnQnKVwiPlxyXG4gIDwvYXBwLWF0dGFjaG1lbnQtc2VjdGlvbj5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4tLT5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbjwhLS08ZGl2IGNsYXNzPVwibXQtNFwiICpuZ0lmPVwiIXNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHlcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIiAqbmdJZj1cImxvdj8uZGVjaXNpb24/LnR5cGUgPT09ICdidXR0b24nXCI+XHJcbiAgICA8ZHMtYnV0dG9uIHNoYXBlPVwidGV4dFwiIGNvbG9yPVwicmVkXCIgKGNsaWNrKT1cInJlc2V0Rm9ybSgpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtXCI+e3tpMThuLnRyYW5zbGF0ZSgncmVzZXQnKX19PC9zcGFuPlxyXG4gICAgPC9kcy1idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1ncm93LTEgZmxleC1yb3ctcmV2ZXJzZSBnYXAtM1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxvdj8uZGVjaXNpb24/Lm9wdGlvbnNcIj5cclxuICAgICAgICA8ZHMtYnV0dG9uIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiF2YWxpZEZvcm0oaXRlbT8udmFsdWUpIHx8IHByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoaXRlbT8udmFsdWUpIFwiIFtsb2FkaW5nXT1cInByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmlzU3VibWl0dGluZ1tpdGVtPy52YWx1ZV1cIlxyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtPy52YWx1ZSA9PT0gJ1NVQk1JVCdcIj57e2l0ZW0/LmRlc2NyaXB0aW9ufX08L2RzLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGRzLWJ1dHRvbiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohdmFsaWRGb3JtKGl0ZW0/LnZhbHVlKSB8fCBwcm9maWxlUmVxdWVzdG9yU2VydmljZS5kaXNhYmxlQnV0dG9uc31cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KGl0ZW0/LnZhbHVlKSBcIiBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXRlbT8udmFsdWUgPT09ICdBUFBST1ZFJ1wiPnt7aXRlbT8uZGVzY3JpcHRpb259fTwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDxkcy1idXR0b24gW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXZhbGlkRm9ybShpdGVtPy52YWx1ZSkgfHwgcHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuZGlzYWJsZUJ1dHRvbnN9XCJcclxuICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChpdGVtPy52YWx1ZSlcIiBzaGFwZT1cIm91dGxpbmVcIiBjb2xvcj1cInJlZFwiXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCIgKm5nSWY9XCJpdGVtPy52YWx1ZSA9PT0gJ1JFSkVDVCdcIj5cclxuICAgICAgICAgIHt7aXRlbT8uZGVzY3JpcHRpb259fTwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDxkcy1idXR0b24gW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXZhbGlkRm9ybShpdGVtPy52YWx1ZSkgfHwgcHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuZGlzYWJsZUJ1dHRvbnN9XCJcclxuICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChpdGVtPy52YWx1ZSlcIiBzaGFwZT1cIm91dGxpbmVcIiBjb2xvcj1cInJlZFwiXHJcbiAgICAgICAgICBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCIgKm5nSWY9XCJpdGVtPy52YWx1ZSA9PT0gJ0NBTkNFTCdcIj5cclxuICAgICAgICAgIHt7aXRlbT8uZGVzY3JpcHRpb259fTwvZHMtYnV0dG9uPlxyXG4gICAgICAgIDxkcy1idXR0b24gW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IXZhbGlkRm9ybShpdGVtPy52YWx1ZSkgfHwgcHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuZGlzYWJsZUJ1dHRvbnN9XCJcclxuICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChpdGVtPy52YWx1ZSlcIiBzaGFwZT1cIm91dGxpbmVcIiBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXRlbT8udmFsdWUgPT09ICdTRU5EQkFDSydcIj5cclxuICAgICAgICAgIHt7aXRlbT8uZGVzY3JpcHRpb259fTwvZHMtYnV0dG9uPlxyXG5cclxuICAgICAgICA8ZHMtYnV0dG9uIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiF2YWxpZEZvcm0oaXRlbT8udmFsdWUpIHx8IHByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmRpc2FibGVCdXR0b25zfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoaXRlbT8udmFsdWUpIFwiIFtsb2FkaW5nXT1cInByb2ZpbGVSZXF1ZXN0b3JTZXJ2aWNlLmlzU3VibWl0dGluZ1tpdGVtPy52YWx1ZV1cIlxyXG4gICAgICAgICAgKm5nSWY9XCIhKGl0ZW0/LnZhbHVlID09PSAnU1VCTUlUJyB8fCBpdGVtPy52YWx1ZSA9PT0gJ0FQUFJPVkUnIHx8IGl0ZW0/LnZhbHVlID09PSAnU0VOREJBQ0snIHx8IGl0ZW0/LnZhbHVlID09PSAnUkVKRUNUJyB8fCBpdGVtPy52YWx1ZSA9PT0gJ0NBTkNFTCcpXCI+XHJcbiAgICAgICAgICB7e2l0ZW0/LmRlc2NyaXB0aW9ufX08L2RzLWJ1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtZ3Jvdy0xIGp1c3RpZnktY29udGVudC1lbmQgZ2FwLTNcIlxyXG4gICAgKm5nSWY9XCJsb3Y/LmRlY2lzaW9uPy50eXBlICE9PSAnYnV0dG9uJ1wiPlxyXG4gICAgPGRzLWJ1dHRvbiBzaGFwZT1cInRleHRcIiBjb2xvcj1cInJlZFwiIChjbGljayk9XCJyZXNldEZvcm0oKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bVwiPnt7aTE4bi50cmFuc2xhdGUoJ3Jlc2V0Jyl9fTwvc3Bhbj5cclxuICAgIDwvZHMtYnV0dG9uPlxyXG4gICAgPGRzLWJ1dHRvbiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzohdmFsaWRGb3JtKCdTVUJNSVQnKX1cIlxyXG4gICAgICBbbG9hZGluZ109XCJwcm9maWxlUmVxdWVzdG9yU2VydmljZS5pc1N1Ym1pdHRpbmdbaXRlbT8udmFsdWVdXCJcclxuICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KCdTVUJNSVQnKSB8fCBwcm9maWxlUmVxdWVzdG9yU2VydmljZS5kaXNhYmxlQnV0dG9uc1wiPlxyXG4gICAgICB7e2kxOG4udHJhbnNsYXRlKCdzdWJtaXQnKX19XHJcbiAgICA8L2RzLWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+LS0+XHJcbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1kZXRhaWxzLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi90ZXN0Q29tcG9uZW50L3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvdGVzdENvbXBvbmVudC9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd6RixPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNEVBQTRFLENBQUM7QUFDbEgsT0FBTyxFQUF5QixtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFrQnZGLE1BQU0sT0FBTyw4QkFBOEI7SUFVdEI7SUFBK0I7SUFBeUI7SUFSbEUsVUFBVSxDQUFVO0lBQ3BCLE9BQU8sQ0FBVTtJQUNqQixHQUFHLENBQU07SUFDVCxTQUFTLEdBQVcsY0FBYyxDQUFDO0lBQzVDLElBQUksQ0FBTztJQUNYLFVBQVUsQ0FBWTtJQUd0QixZQUFtQixJQUFxQixFQUFVLEVBQWUsRUFBVSxrQkFBc0M7UUFBOUYsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUMvRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2xDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxJQUFJLENBQUM7WUFDZCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMvQixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMvQjtnQkFDRSxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQzt1R0F6Q1UsOEJBQThCOzJGQUE5Qiw4QkFBOEIscUxDeEIzQyxpcUJBMkJBLG95QkRYSSxPQUFPLG9GQUNQLGNBQWMsK05BR2Qsc0JBQXNCLGlHQUN0QixtQkFBbUI7OzJGQUdWLDhCQUE4QjtrQkFmMUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQLENBQUMsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsV0FDMUM7d0JBQ1AsT0FBTzt3QkFDUCxjQUFjO3dCQUNkLElBQUk7d0JBQ0osT0FBTzt3QkFDUCxzQkFBc0I7d0JBQ3RCLG1CQUFtQjtxQkFDcEI7K0lBSVEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQsIE5PX0VSUk9SU19TQ0hFTUF9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm0sIFNlY3Rpb259IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7Q29yZUkxOG5TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7SW5wdXRDb21wb25lbnR9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQge0FjdGlvbkJ1dHRvbnNDb21wb25lbnR9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2FjdGlvbi1idXR0b25zL2FjdGlvbi1idXR0b25zLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0FjdGlvblN0YXRlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2FjdGlvbi5zZXJ2aWNlLnRzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcXVlc3QtZGV0YWlscy1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXF1ZXN0LWRldGFpbHMtc2VjdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5PX0VSUk9SU19TQ0hFTUFdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBJbnB1dENvbXBvbmVudCxcclxuICAgIE5nSWYsXHJcbiAgICBOZ0Zvck9mLFxyXG4gICAgQWN0aW9uQnV0dG9uc0NvbXBvbmVudCxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVxdWVzdERldGFpbHNTZWN0aW9uQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgaXNSZWFkT25seTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZWN0aW9uOiBTZWN0aW9uO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZTogc3RyaW5nID0gXCJpbmZvLXNlY3Rpb25cIjtcclxuICBmb3JtOiBGb3JtO1xyXG4gIGZpZWxkc0Zvcm06IEZvcm1Hcm91cDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFjdGlvblN0YXRlU2VydmljZTogQWN0aW9uU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZvcm0oKSB7XHJcbiAgICBsZXQgbmV3Rm9ybSA9IHtcclxuICAgICAgaW5wdXQxOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICB9O1xyXG4gICAgdGhpcy5sb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9ucz8uZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBuZXdGb3JtW29wdGlvbi52YWx1ZV0gPSBbJyddO1xyXG4gICAgfSlcclxuICAgIHRoaXMuZmllbGRzRm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3Rm9ybSk7XHJcbiAgICB0aGlzLmZpZWxkc0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIHRoaXMubG92Py5bJ2RlY2lzaW9uJ10/Lm9wdGlvbnM/LmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgICBsZXQgaXNBY3Rpb25WYWxpZCA9IHRoaXMuY2hlY2tWYWxpZGl0eShvcHRpb24udmFsdWUpO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uU3RhdGVTZXJ2aWNlLnNldEFjdGlvblZhbGlkKG9wdGlvbi52YWx1ZSwgaXNBY3Rpb25WYWxpZCk7XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hlY2tWYWxpZGl0eShhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSAnQVBQUk9WRSc6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGNhc2UgJ1JFSkVDVCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGRzRm9ybS52YWxpZDtcclxuICAgICAgY2FzZSAnU0VOREJBQ0snOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkc0Zvcm0udmFsaWQ7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXZcclxuICBbbmdDbGFzc109XCJ7J2Zvcm0tc2VjdGlvbi1kaXZpZGUgZm9ybS1zZWN0aW9uJzohc2VjdGlvbj8uaGVhZGVyPy5yZWFkT25seSwnaW5mby1zZWN0aW9uJzpzZWN0aW9uPy5oZWFkZXI/LnJlYWRPbmx5fVwiPlxyXG5cclxuXHJcbiAgPGRzLWFsZXJ0IGNsYXNzPVwiZnVsbFwiIHR5cGU9XCJ3YXJuaW5nXCIgaWNvbj1cImluZm9cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcblxyXG4gICAgICBSZXF1ZXN0IGRldGFpbHMgd29ya2luZyBmaW5lXHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZHMtYWxlcnQ+XHJcblxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmllbGRzRm9ybVwiPlxyXG4gICAgPGFwcC1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpbnB1dDFcIiA+PC9hcHAtaW5wdXQ+XHJcbiAgPC9mb3JtPlxyXG5cclxuPC9kaXY+XHJcbkBpZiAoIXNlY3Rpb24/LmhlYWRlcj8ucmVhZE9ubHkpIHtcclxuICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgPGxpYi1hY3Rpb24tYnV0dG9uc1xyXG4gICAgICBbbG92T3B0aW9uc109XCJsb3Y/LlsnZGVjaXNpb24nXT8ub3B0aW9uc1wiXHJcbiAgICAgIFtsb3ZUeXBlXT1cImxvdj8uWydkZWNpc2lvbiddPy50eXBlXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbn1cclxuIl19