rd-outer-component 0.0.95 → 0.0.96
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/esm2020/lib/modules/custom-checkbox/custom-checkbox.component.mjs +26 -19
- package/esm2020/lib/modules/custom-date/custom-date.component.mjs +141 -18
- package/esm2020/lib/modules/custom-date/custom-date.module.mjs +19 -4
- package/esm2020/lib/modules/custom-filter/custom-filter.component.mjs +2 -2
- package/esm2020/lib/modules/custom-input/custom-input.component.mjs +68 -34
- package/esm2020/lib/modules/custom-input-amount/custom-input-amount.component.mjs +28 -29
- package/esm2020/lib/modules/custom-radio/custom-radio.component.mjs +82 -16
- package/esm2020/lib/modules/custom-select/index.mjs +5 -3
- package/esm2020/lib/modules/custom-select/industry-cascader/industry-cascader.component.mjs +361 -0
- package/esm2020/lib/modules/custom-select/industry-cascader/industry-cascader.module.mjs +60 -0
- package/esm2020/lib/modules/custom-select/pure-select-token/pure-select-token.component.mjs +3 -3
- package/esm2020/lib/modules/custom-select/rd-select.component.mjs +432 -0
- package/esm2020/lib/modules/custom-select/rd-select.module.mjs +67 -0
- package/esm2020/lib/modules/custom-textarea/custom-textarea.component.mjs +2 -2
- package/esm2020/lib/modules/form-item/form-item.component.mjs +20 -3
- package/esm2020/lib/modules/rd-button/rd-button.component.mjs +133 -0
- package/esm2020/lib/modules/rd-button/rd-button.module.mjs +20 -0
- package/fesm2015/rd-outer-component.mjs +1274 -216
- package/fesm2015/rd-outer-component.mjs.map +1 -1
- package/fesm2020/rd-outer-component.mjs +1270 -212
- package/fesm2020/rd-outer-component.mjs.map +1 -1
- package/lib/modules/custom-checkbox/custom-checkbox.component.d.ts +7 -3
- package/lib/modules/custom-date/custom-date.component.d.ts +30 -6
- package/lib/modules/custom-date/custom-date.module.d.ts +2 -1
- package/lib/modules/custom-input/custom-input.component.d.ts +12 -3
- package/lib/modules/custom-input-amount/custom-input-amount.component.d.ts +5 -5
- package/lib/modules/custom-radio/custom-radio.component.d.ts +21 -7
- package/lib/modules/custom-select/index.d.ts +4 -2
- package/lib/modules/custom-select/industry-cascader/industry-cascader.component.d.ts +81 -0
- package/lib/modules/custom-select/industry-cascader/industry-cascader.module.d.ts +18 -0
- package/lib/modules/custom-select/rd-select.component.d.ts +90 -0
- package/lib/modules/custom-select/rd-select.module.d.ts +19 -0
- package/lib/modules/form-item/form-item.component.d.ts +7 -2
- package/lib/modules/rd-button/rd-button.component.d.ts +53 -0
- package/lib/modules/rd-button/rd-button.module.d.ts +10 -0
- package/package.json +3 -2
- package/src/lib/assets/scss/form-item.scss +1 -1
- package/esm2020/lib/modules/custom-select/custom-select.component.mjs +0 -194
- package/esm2020/lib/modules/custom-select/custom-select.module.mjs +0 -39
- package/lib/modules/custom-select/custom-select.component.d.ts +0 -53
- package/lib/modules/custom-select/custom-select.module.d.ts +0 -12
|
@@ -35,10 +35,10 @@ export class RdFilterComponent {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
RdFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RdFilterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
-
RdFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RdFilterComponent, selector: "app-rd-filter", inputs: { lang: "lang", filterArr: "filterArr", statusDisplayConfigs: "statusDisplayConfigs", statusGroupConfigs: "statusGroupConfigs", clearText: "clearText" }, outputs: { defSearchChange: "defSearchChange", clearFilter: "clearFilter" }, ngImport: i0, template: "<div class=\"rd-custom-filter-wrap\" *ngIf=\"filterArr?.length\">\n <ng-container *ngFor=\"let item of filterArr\">\n <ng-container [ngSwitch]=\"item.formType\">\n <app-rd-filter-date\n *ngSwitchCase=\"filterTypeEnum.date\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n >\n </app-rd-filter-date>\n <app-rd-filter-select\n *ngSwitchCase=\"filterTypeEnum.select\"\n [item]=\"item\"\n [statusGroupConfigs]=\"statusGroupConfigs\"\n [statusDisplayConfigs]=\"statusDisplayConfigs\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-select>\n <app-rd-filter-input\n *ngSwitchCase=\"filterTypeEnum.input\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-input>\n </ng-container>\n </ng-container>\n <button\n [disabled]=\"!isClearAble\"\n (click)=\"clear()\"\n class=\"rd-custom-filter-clear\"\n nz-button\n nzType=\"link\"\n >\n {{ getClearTrans() }}\n </button>\n</div>\n", styles: [".rd-custom-filter-wrap{display:flex;align-items:center;gap:8px;padding-top:12px;padding-bottom:12px}.rd-custom-filter-clear{font-size:13px;font-weight:600;color:var(--rd-copy-brand);padding:0}.rd-custom-filter-clear:disabled{color:var(--rd-copy-disable)}\n", ".rd-form-item{position:relative;border-radius:
|
|
38
|
+
RdFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RdFilterComponent, selector: "app-rd-filter", inputs: { lang: "lang", filterArr: "filterArr", statusDisplayConfigs: "statusDisplayConfigs", statusGroupConfigs: "statusGroupConfigs", clearText: "clearText" }, outputs: { defSearchChange: "defSearchChange", clearFilter: "clearFilter" }, ngImport: i0, template: "<div class=\"rd-custom-filter-wrap\" *ngIf=\"filterArr?.length\">\n <ng-container *ngFor=\"let item of filterArr\">\n <ng-container [ngSwitch]=\"item.formType\">\n <app-rd-filter-date\n *ngSwitchCase=\"filterTypeEnum.date\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n >\n </app-rd-filter-date>\n <app-rd-filter-select\n *ngSwitchCase=\"filterTypeEnum.select\"\n [item]=\"item\"\n [statusGroupConfigs]=\"statusGroupConfigs\"\n [statusDisplayConfigs]=\"statusDisplayConfigs\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-select>\n <app-rd-filter-input\n *ngSwitchCase=\"filterTypeEnum.input\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-input>\n </ng-container>\n </ng-container>\n <button\n [disabled]=\"!isClearAble\"\n (click)=\"clear()\"\n class=\"rd-custom-filter-clear\"\n nz-button\n nzType=\"link\"\n >\n {{ getClearTrans() }}\n </button>\n</div>\n", styles: [".rd-custom-filter-wrap{display:flex;align-items:center;gap:8px;padding-top:12px;padding-bottom:12px}.rd-custom-filter-clear{font-size:13px;font-weight:600;color:var(--rd-copy-brand);padding:0}.rd-custom-filter-clear:disabled{color:var(--rd-copy-disable)}\n", ".rd-form-item{position:relative;border-radius:12px;padding:2px 0;border:1px solid var(--rd-input-fg-default);background-color:var(--rd-input-bg-default);width:100%;height:64px}.rd-form-item .rd-form-item-select-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;pointer-events:none}.rd-form-item-label{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--rd-copy-secondary);transition:all .3s ease;pointer-events:none;z-index:1;font-size:14px;font-weight:600;line-height:1}.rd-form-item-input{color:var(--rd-copy-primary);font-size:14px;width:100%;font-weight:500;padding:22px 16px 12px;height:52px}.rd-form-item-input:focus,.rd-form-item-input:not(:placeholder-shown){top:10px}.rd-form-item .rd-form-item-input:focus~.rd-form-item-label,.rd-form-item .rd-form-item-input:not(:placeholder-shown)~.rd-form-item-label{top:18px;font-size:12px}.rd-form-item-select{width:100%}.rd-form-item-select ::ng-deep .ant-select-selection-item{color:var(--rd-copy-primary);font-size:14px;font-weight:500}.rd-form-item.rd-selected .rd-form-item-label{top:16px;font-size:12px}.rd-form-item.rd-selected .rd-form-item-select{top:10px}.rd-form-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-item.rd-disabled .rd-form-item-label,.rd-form-item.rd-disabled .rd-form-item-input{color:var(--rd-copy-disable)}.rd-form-item.rd-disabled ::ng-deep .ant-select-selection-item{color:var(--rd-copy-disable)}.rd-form-item.rd-error{border-color:var(--rd-input-fg-danger)}.rd-form-item-error{color:var(--rd-copy-danger);font-size:12px;font-weight:500;display:flex;align-items:center;gap:4px;margin-top:4px}.rd-form-item-error img{width:16px}.rd-form-number-item{position:relative;border-radius:16px;padding:12px 16px;background-color:var(--rd-input-bg-default);border:1px solid var(--rd-input-fg-default);width:100%}.rd-form-number-item .rd-item-label{color:var(--rd-copy-secondary);font-size:12px;font-weight:600}.rd-form-number-item .rd-item-content{display:flex;align-items:center;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-value{flex:1;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-primary);border:none;padding:4px 0}.rd-form-number-item .rd-item-content-value:focus,.rd-form-number-item .rd-item-content-value:active,.rd-form-number-item .rd-item-content-value:hover{outline:none;box-shadow:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-handler-wrap{display:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input{font-size:32px;font-weight:600;line-height:48px}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input::placeholder{color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-symbol{flex-shrink:0}.rd-form-number-item ::ng-deep .rd-item-warning{font-weight:500;font-size:12px;color:var(--rd-copy-secondary);margin-top:4px;padding:0 12px}.rd-form-number-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-number-item.rd-disabled .rd-item-label,.rd-form-number-item.rd-disabled .rd-item-content-value{color:var(--rd-copy-disable)}.rd-form-number-item.rd-error{border-color:var(--rd-input-fg-danger)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "component", type: i4.RdFilterSelectComponent, selector: "app-rd-filter-select", inputs: ["item", "statusDisplayConfigs", "statusGroupConfigs"], outputs: ["handleChangeValue"] }, { kind: "component", type: i5.RdFilterDateComponent, selector: "app-rd-filter-date", inputs: ["item"], outputs: ["handleChangeValue"] }, { kind: "component", type: i6.RdFilterInputComponent, selector: "app-rd-filter-input", inputs: ["item"], outputs: ["handleChangeValue"] }] });
|
|
39
39
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RdFilterComponent, decorators: [{
|
|
40
40
|
type: Component,
|
|
41
|
-
args: [{ selector: 'app-rd-filter', template: "<div class=\"rd-custom-filter-wrap\" *ngIf=\"filterArr?.length\">\n <ng-container *ngFor=\"let item of filterArr\">\n <ng-container [ngSwitch]=\"item.formType\">\n <app-rd-filter-date\n *ngSwitchCase=\"filterTypeEnum.date\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n >\n </app-rd-filter-date>\n <app-rd-filter-select\n *ngSwitchCase=\"filterTypeEnum.select\"\n [item]=\"item\"\n [statusGroupConfigs]=\"statusGroupConfigs\"\n [statusDisplayConfigs]=\"statusDisplayConfigs\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-select>\n <app-rd-filter-input\n *ngSwitchCase=\"filterTypeEnum.input\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-input>\n </ng-container>\n </ng-container>\n <button\n [disabled]=\"!isClearAble\"\n (click)=\"clear()\"\n class=\"rd-custom-filter-clear\"\n nz-button\n nzType=\"link\"\n >\n {{ getClearTrans() }}\n </button>\n</div>\n", styles: [".rd-custom-filter-wrap{display:flex;align-items:center;gap:8px;padding-top:12px;padding-bottom:12px}.rd-custom-filter-clear{font-size:13px;font-weight:600;color:var(--rd-copy-brand);padding:0}.rd-custom-filter-clear:disabled{color:var(--rd-copy-disable)}\n", ".rd-form-item{position:relative;border-radius:
|
|
41
|
+
args: [{ selector: 'app-rd-filter', template: "<div class=\"rd-custom-filter-wrap\" *ngIf=\"filterArr?.length\">\n <ng-container *ngFor=\"let item of filterArr\">\n <ng-container [ngSwitch]=\"item.formType\">\n <app-rd-filter-date\n *ngSwitchCase=\"filterTypeEnum.date\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n >\n </app-rd-filter-date>\n <app-rd-filter-select\n *ngSwitchCase=\"filterTypeEnum.select\"\n [item]=\"item\"\n [statusGroupConfigs]=\"statusGroupConfigs\"\n [statusDisplayConfigs]=\"statusDisplayConfigs\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-select>\n <app-rd-filter-input\n *ngSwitchCase=\"filterTypeEnum.input\"\n [item]=\"item\"\n (handleChangeValue)=\"handleChangeValue($event)\"\n ></app-rd-filter-input>\n </ng-container>\n </ng-container>\n <button\n [disabled]=\"!isClearAble\"\n (click)=\"clear()\"\n class=\"rd-custom-filter-clear\"\n nz-button\n nzType=\"link\"\n >\n {{ getClearTrans() }}\n </button>\n</div>\n", styles: [".rd-custom-filter-wrap{display:flex;align-items:center;gap:8px;padding-top:12px;padding-bottom:12px}.rd-custom-filter-clear{font-size:13px;font-weight:600;color:var(--rd-copy-brand);padding:0}.rd-custom-filter-clear:disabled{color:var(--rd-copy-disable)}\n", ".rd-form-item{position:relative;border-radius:12px;padding:2px 0;border:1px solid var(--rd-input-fg-default);background-color:var(--rd-input-bg-default);width:100%;height:64px}.rd-form-item .rd-form-item-select-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;pointer-events:none}.rd-form-item-label{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--rd-copy-secondary);transition:all .3s ease;pointer-events:none;z-index:1;font-size:14px;font-weight:600;line-height:1}.rd-form-item-input{color:var(--rd-copy-primary);font-size:14px;width:100%;font-weight:500;padding:22px 16px 12px;height:52px}.rd-form-item-input:focus,.rd-form-item-input:not(:placeholder-shown){top:10px}.rd-form-item .rd-form-item-input:focus~.rd-form-item-label,.rd-form-item .rd-form-item-input:not(:placeholder-shown)~.rd-form-item-label{top:18px;font-size:12px}.rd-form-item-select{width:100%}.rd-form-item-select ::ng-deep .ant-select-selection-item{color:var(--rd-copy-primary);font-size:14px;font-weight:500}.rd-form-item.rd-selected .rd-form-item-label{top:16px;font-size:12px}.rd-form-item.rd-selected .rd-form-item-select{top:10px}.rd-form-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-item.rd-disabled .rd-form-item-label,.rd-form-item.rd-disabled .rd-form-item-input{color:var(--rd-copy-disable)}.rd-form-item.rd-disabled ::ng-deep .ant-select-selection-item{color:var(--rd-copy-disable)}.rd-form-item.rd-error{border-color:var(--rd-input-fg-danger)}.rd-form-item-error{color:var(--rd-copy-danger);font-size:12px;font-weight:500;display:flex;align-items:center;gap:4px;margin-top:4px}.rd-form-item-error img{width:16px}.rd-form-number-item{position:relative;border-radius:16px;padding:12px 16px;background-color:var(--rd-input-bg-default);border:1px solid var(--rd-input-fg-default);width:100%}.rd-form-number-item .rd-item-label{color:var(--rd-copy-secondary);font-size:12px;font-weight:600}.rd-form-number-item .rd-item-content{display:flex;align-items:center;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-value{flex:1;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-primary);border:none;padding:4px 0}.rd-form-number-item .rd-item-content-value:focus,.rd-form-number-item .rd-item-content-value:active,.rd-form-number-item .rd-item-content-value:hover{outline:none;box-shadow:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-handler-wrap{display:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input{font-size:32px;font-weight:600;line-height:48px}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input::placeholder{color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-symbol{flex-shrink:0}.rd-form-number-item ::ng-deep .rd-item-warning{font-weight:500;font-size:12px;color:var(--rd-copy-secondary);margin-top:4px;padding:0 12px}.rd-form-number-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-number-item.rd-disabled .rd-item-label,.rd-form-number-item.rd-disabled .rd-item-content-value{color:var(--rd-copy-disable)}.rd-form-number-item.rd-error{border-color:var(--rd-input-fg-danger)}\n"] }]
|
|
42
42
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { lang: [{
|
|
43
43
|
type: Input
|
|
44
44
|
}], filterArr: [{
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
import { Component, EventEmitter, forwardRef, Input, Output, } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, forwardRef, Input, Output, HostBinding, } from '@angular/core';
|
|
2
2
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
3
|
import Big from 'big.js';
|
|
4
4
|
import { formatBigNumber } from '../../utils/big-number';
|
|
5
|
-
import { getTranslation } from '../../utils/form-vaild-lang';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@
|
|
8
|
-
import * as i2 from "@angular/
|
|
9
|
-
import * as i3 from "
|
|
10
|
-
import * as i4 from "
|
|
6
|
+
import * as i1 from "@ngx-translate/core";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "@angular/forms";
|
|
9
|
+
import * as i4 from "ng-zorro-antd/input";
|
|
10
|
+
import * as i5 from "ngx-mask";
|
|
11
11
|
export class CustomInputComponent {
|
|
12
|
+
get hostThemeLight() {
|
|
13
|
+
return this.theme === 'light';
|
|
14
|
+
}
|
|
15
|
+
get hostThemeDark() {
|
|
16
|
+
return this.theme === 'dark';
|
|
17
|
+
}
|
|
12
18
|
get currentErrorMessage() {
|
|
13
19
|
if (!this.control?.errors)
|
|
14
20
|
return '';
|
|
@@ -17,38 +23,43 @@ export class CustomInputComponent {
|
|
|
17
23
|
switch (firstError) {
|
|
18
24
|
case 'required':
|
|
19
25
|
return (msg ||
|
|
20
|
-
`${
|
|
26
|
+
`${this.translate.instant('please_enter')}${this.label.toLowerCase()}`);
|
|
21
27
|
case 'min':
|
|
22
28
|
return (msg ||
|
|
23
|
-
`${this.label}${
|
|
29
|
+
`${this.label}${this.translate.instant('min_value_error')}${formatBigNumber(this.min)}`);
|
|
24
30
|
case 'max':
|
|
25
31
|
return (msg ||
|
|
26
|
-
`${this.label}
|
|
32
|
+
`${this.label}${this.translate.instant('max_value_error')}${formatBigNumber(this.max)}`);
|
|
27
33
|
case 'precision':
|
|
28
34
|
return (msg ||
|
|
29
|
-
`${
|
|
35
|
+
`${this.translate.instant('max_decimal_places')}${this.maskNumber}`);
|
|
30
36
|
case 'minLength':
|
|
31
37
|
return (msg ||
|
|
32
|
-
`${
|
|
38
|
+
`${this.translate.instant('length_cannot_be_less')}${this.minLength}`);
|
|
33
39
|
case 'maxLength':
|
|
34
40
|
return (msg ||
|
|
35
|
-
`${
|
|
41
|
+
`${this.translate.instant('length_cannot_exceed')}${this.maxLength}`);
|
|
36
42
|
case 'email':
|
|
37
|
-
return msg || `${
|
|
43
|
+
return msg || `${this.translate.instant('email_invalid')}`;
|
|
38
44
|
case 'custom':
|
|
39
45
|
return (this.control?.errors['custom'] ||
|
|
40
|
-
|
|
46
|
+
this.translate.instant('validation_failed'));
|
|
41
47
|
default:
|
|
42
|
-
return (this.errorMessages[firstError] ||
|
|
43
|
-
|
|
48
|
+
return (this.translate.instant(this.errorMessages[firstError]) ||
|
|
49
|
+
this.translate.instant('validation_failed'));
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
52
|
get showError() {
|
|
47
53
|
return (!!this.control?.invalid && (this.control?.touched || this.control?.dirty));
|
|
48
54
|
}
|
|
49
|
-
|
|
55
|
+
get resolvedPlaceholder() {
|
|
56
|
+
if (!this.label)
|
|
57
|
+
return this.placeholder || '';
|
|
58
|
+
return this.isFocused ? this.placeholder || ' ' : ' ';
|
|
59
|
+
}
|
|
60
|
+
constructor(cdr, translate) {
|
|
50
61
|
this.cdr = cdr;
|
|
51
|
-
this.
|
|
62
|
+
this.translate = translate;
|
|
52
63
|
this.label = '';
|
|
53
64
|
this.symbol = '';
|
|
54
65
|
this.name = '';
|
|
@@ -56,7 +67,9 @@ export class CustomInputComponent {
|
|
|
56
67
|
this.maskNumber = 6;
|
|
57
68
|
this.maskType = 'text';
|
|
58
69
|
this.type = 'text';
|
|
70
|
+
this.allowNegativeNumbers = true;
|
|
59
71
|
this.required = false;
|
|
72
|
+
this.size = 'default';
|
|
60
73
|
this.errorMessages = {
|
|
61
74
|
pattern: 'Invalid format',
|
|
62
75
|
custom: 'Validation failed',
|
|
@@ -106,7 +119,11 @@ export class CustomInputComponent {
|
|
|
106
119
|
this.focus.emit();
|
|
107
120
|
}
|
|
108
121
|
handleValueChange(value) {
|
|
109
|
-
const cleanedValue = this.maskType === 'amount'
|
|
122
|
+
const cleanedValue = this.maskType === 'amount'
|
|
123
|
+
? value.replace(/,/g, '')
|
|
124
|
+
: typeof value === 'string'
|
|
125
|
+
? value.trim()
|
|
126
|
+
: value;
|
|
110
127
|
this.value = cleanedValue;
|
|
111
128
|
this.onChange(cleanedValue);
|
|
112
129
|
this.valueChange.emit(cleanedValue);
|
|
@@ -120,12 +137,14 @@ export class CustomInputComponent {
|
|
|
120
137
|
if (this.maskType === 'amount') {
|
|
121
138
|
value = control?.value?.replace(/,/g, '');
|
|
122
139
|
try {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
140
|
+
if (value) {
|
|
141
|
+
const bigValue = new Big(value);
|
|
142
|
+
if (this.min && !Number.isNaN(this.min) && bigValue.lt(this.min)) {
|
|
143
|
+
errors['min'] = { min: this.min, actual: value };
|
|
144
|
+
}
|
|
145
|
+
if (this.max && !Number.isNaN(this.max) && bigValue.gt(this.max)) {
|
|
146
|
+
errors['max'] = { max: this.max, actual: value };
|
|
147
|
+
}
|
|
129
148
|
}
|
|
130
149
|
}
|
|
131
150
|
catch (error) {
|
|
@@ -133,7 +152,10 @@ export class CustomInputComponent {
|
|
|
133
152
|
}
|
|
134
153
|
}
|
|
135
154
|
else {
|
|
136
|
-
value =
|
|
155
|
+
value =
|
|
156
|
+
typeof control?.value === 'string'
|
|
157
|
+
? control?.value?.trim()
|
|
158
|
+
: control?.value;
|
|
137
159
|
}
|
|
138
160
|
if (this.required && !value) {
|
|
139
161
|
errors['required'] = true;
|
|
@@ -169,8 +191,8 @@ export class CustomInputComponent {
|
|
|
169
191
|
return Object.keys(errors).length > 0 ? errors : null;
|
|
170
192
|
}
|
|
171
193
|
}
|
|
172
|
-
CustomInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
173
|
-
CustomInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomInputComponent, selector: "app-rd-input", inputs: {
|
|
194
|
+
CustomInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
+
CustomInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CustomInputComponent, selector: "app-rd-input", inputs: { label: "label", symbol: "symbol", name: "name", disabled: "disabled", maskNumber: "maskNumber", maskType: "maskType", type: "type", allowNegativeNumbers: "allowNegativeNumbers", theme: "theme", required: "required", placeholder: "placeholder", min: "min", max: "max", minLength: "minLength", maxLength: "maxLength", pattern: "pattern", customValidator: "customValidator", size: "size", errorMessages: "errorMessages" }, outputs: { valueChange: "valueChange", focus: "focus", blur: "blur" }, host: { properties: { "class.theme-light": "this.hostThemeLight", "class.theme-dark": "this.hostThemeDark" } }, providers: [
|
|
174
196
|
{
|
|
175
197
|
provide: NG_VALUE_ACCESSOR,
|
|
176
198
|
useExisting: forwardRef(() => CustomInputComponent),
|
|
@@ -181,7 +203,7 @@ CustomInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
181
203
|
useExisting: forwardRef(() => CustomInputComponent),
|
|
182
204
|
multi: true,
|
|
183
205
|
},
|
|
184
|
-
], ngImport: i0, template: "<div\n [ngClass]=\"{\n 'rd-form-item-rd-input-relative': type === 'select',\n }\"\n>\n <div\n class=\"rd-form-item rd-form-item-p-deal\"\n [ngClass]=\"{\n 'rd-disabled': disabled,\n 'rd-error': showError,\n 'rd-form-item-input-select': type === 'select',\n }\"\n >\n <input\n nz-input\n nzBorderless\n placeholder=\" \"\n [name]=\"name\"\n [type]=\"type\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"handleValueChange($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [allowNegativeNumbers]=\"true\"\n [dropSpecialCharacters]=\"false\"\n [mask]=\"\n maskType === 'amount'\n ? 'separator.' + maskNumber\n : maskType === 'number'\n ? '0*'\n : ''\n \"\n [thousandSeparator]=\"maskType === 'amount' ? ',' : ''\"\n class=\"rd-form-item-input\"\n />\n <div class=\"rd-form-item-label\">{{ label }}</div>\n </div>\n <div class=\"rd-form-item-rd-input-absolute\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showError\" class=\"rd-form-item-error\">\n <img src=\"/assets/img/icon/icon-error.svg\" />\n {{ currentErrorMessage }}\n </div>\n</div>\n", styles: [":host .rd-form-item-p-deal{padding:0!important}:host .rd-form-item-input-select{position:relative;background:var(--rd-input-bg-default)!important}:host .rd-form-item-input-select.rd-disabled .rd-form-item-input{color:var(--rd-copy-secondary)}:host .rd-form-item-rd-input-relative{position:relative}:host .rd-form-item-rd-input-relative .rd-form-item-rd-input-absolute{position:absolute;top:50%;transform:translateY(-50%);right:16px;z-index:1}:host .rd-form-item-rd-input-relative .rd-form-item-input{color:var(--rd-copy-primary)!important}\n", ".rd-form-item{position:relative;border-radius:16px;padding:2px 0;border:1px solid var(--rd-input-fg-default);background-color:var(--rd-input-bg-default);width:100%;height:64px}.rd-form-item .rd-form-item-select-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;pointer-events:none}.rd-form-item-label{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--rd-copy-secondary);transition:all .3s ease;pointer-events:none;z-index:1;font-size:14px;font-weight:600;line-height:1}.rd-form-item-input{color:var(--rd-copy-primary);font-size:14px;width:100%;font-weight:500;padding:22px 16px 12px;height:52px}.rd-form-item-input:focus,.rd-form-item-input:not(:placeholder-shown){top:10px}.rd-form-item .rd-form-item-input:focus~.rd-form-item-label,.rd-form-item .rd-form-item-input:not(:placeholder-shown)~.rd-form-item-label{top:18px;font-size:12px}.rd-form-item-select{width:100%}.rd-form-item-select ::ng-deep .ant-select-selection-item{color:var(--rd-copy-primary);font-size:14px;font-weight:500}.rd-form-item.rd-selected .rd-form-item-label{top:16px;font-size:12px}.rd-form-item.rd-selected .rd-form-item-select{top:10px}.rd-form-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-item.rd-disabled .rd-form-item-label,.rd-form-item.rd-disabled .rd-form-item-input{color:var(--rd-copy-disable)}.rd-form-item.rd-disabled ::ng-deep .ant-select-selection-item{color:var(--rd-copy-disable)}.rd-form-item.rd-error{border-color:var(--rd-input-fg-danger)}.rd-form-item-error{color:var(--rd-copy-danger);font-size:12px;font-weight:500;display:flex;align-items:center;gap:4px;margin-top:4px}.rd-form-item-error img{width:16px}.rd-form-number-item{position:relative;border-radius:16px;padding:12px 16px;background-color:var(--rd-input-bg-default);border:1px solid var(--rd-input-fg-default);width:100%}.rd-form-number-item .rd-item-label{color:var(--rd-copy-secondary);font-size:12px;font-weight:600}.rd-form-number-item .rd-item-content{display:flex;align-items:center;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-value{flex:1;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-primary);border:none;padding:4px 0}.rd-form-number-item .rd-item-content-value:focus,.rd-form-number-item .rd-item-content-value:active,.rd-form-number-item .rd-item-content-value:hover{outline:none;box-shadow:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-handler-wrap{display:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input{font-size:32px;font-weight:600;line-height:48px}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input::placeholder{color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-symbol{flex-shrink:0}.rd-form-number-item ::ng-deep .rd-item-warning{font-weight:500;font-size:12px;color:var(--rd-copy-secondary);margin-top:4px;padding:0 12px}.rd-form-number-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-number-item.rd-disabled .rd-item-label,.rd-form-number-item.rd-disabled .rd-item-content-value{color:var(--rd-copy-disable)}.rd-form-number-item.rd-error{border-color:var(--rd-input-fg-danger)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "directive", type: i4.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] });
|
|
206
|
+
], ngImport: i0, template: "<div\n [ngClass]=\"{\n 'rd-form-item-rd-input-relative': type === 'select',\n 'rd-form-item-s': size === 'small',\n }\"\n>\n <div\n class=\"rd-form-item rd-form-item-p-deal\"\n [ngClass]=\"{\n 'rd-disabled': disabled,\n 'rd-error': showError,\n 'rd-focus': isFocused,\n 'rd-has-value': !!value,\n 'rd-form-item-input-select': type === 'select',\n 'rd-form-item-password': type === 'password',\n }\"\n >\n <input\n nz-input\n [placeholder]=\"resolvedPlaceholder\"\n [name]=\"name\"\n aria-autocomplete=\"none\"\n [type]=\"type\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"handleValueChange($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [allowNegativeNumbers]=\"allowNegativeNumbers\"\n [dropSpecialCharacters]=\"false\"\n [mask]=\"\n maskType === 'amount'\n ? 'separator.' + maskNumber\n : maskType === 'number'\n ? '0*'\n : ''\n \"\n [thousandSeparator]=\"maskType === 'amount' ? ',' : ''\"\n class=\"rd-form-item-input\"\n [ngClass]=\"{\n 'rd-form-item-input-no-label': !label,\n }\"\n />\n <div class=\"rd-form-item-label\" *ngIf=\"label\">{{ label }}</div>\n <ng-container *ngIf=\"symbol\">\n <div class=\"rd-input-symbol\">{{ symbol }}</div>\n </ng-container>\n </div>\n <div class=\"rd-form-item-rd-input-absolute\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showError\" class=\"rd-form-item-error\">\n <svg\n class=\"rd-error-icon-light\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.33398 7.9987C1.33398 4.3168 4.31875 1.33203 8.00065 1.33203C11.6825 1.33203 14.6673 4.3168 14.6673 7.9987C14.6673 11.6806 11.6825 14.6654 8.00065 14.6654C4.31875 14.6654 1.33398 11.6806 1.33398 7.9987ZM8.00065 2.33203C4.87104 2.33203 2.33398 4.86908 2.33398 7.9987C2.33398 11.1283 4.87104 13.6654 8.00065 13.6654C11.1303 13.6654 13.6673 11.1283 13.6673 7.9987C13.6673 4.86908 11.1303 2.33203 8.00065 2.33203Z\"\n fill=\"#EA485D\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.00039 4.06641C8.33176 4.06641 8.60039 4.33504 8.60039 4.66641V7.99974C8.60039 8.33111 8.33176 8.59974 8.00039 8.59974C7.66902 8.59974 7.40039 8.33111 7.40039 7.99974V4.66641C7.40039 4.33504 7.66902 4.06641 8.00039 4.06641ZM8.00039 10.3997C8.33176 10.3997 8.60039 10.6684 8.60039 10.9997V11.3331C8.60039 11.6644 8.33176 11.9331 8.00039 11.9331C7.66902 11.9331 7.40039 11.6644 7.40039 11.3331V10.9997C7.40039 10.6684 7.66902 10.3997 8.00039 10.3997Z\"\n fill=\"#EA485D\"\n />\n </svg>\n\n <svg\n class=\"rd-error-icon-dark\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.33398 7.9987C1.33398 4.3168 4.31875 1.33203 8.00065 1.33203C11.6825 1.33203 14.6673 4.3168 14.6673 7.9987C14.6673 11.6806 11.6825 14.6654 8.00065 14.6654C4.31875 14.6654 1.33398 11.6806 1.33398 7.9987ZM8.00065 2.33203C4.87104 2.33203 2.33398 4.86908 2.33398 7.9987C2.33398 11.1283 4.87104 13.6654 8.00065 13.6654C11.1303 13.6654 13.6673 11.1283 13.6673 7.9987C13.6673 4.86908 11.1303 2.33203 8.00065 2.33203Z\"\n fill=\"#EF7484\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.00039 4.06641C8.33176 4.06641 8.60039 4.33504 8.60039 4.66641V7.99974C8.60039 8.33111 8.33176 8.59974 8.00039 8.59974C7.66902 8.59974 7.40039 8.33111 7.40039 7.99974V4.66641C7.40039 4.33504 7.66902 4.06641 8.00039 4.06641ZM8.00039 10.3997C8.33176 10.3997 8.60039 10.6684 8.60039 10.9997V11.3331C8.60039 11.6644 8.33176 11.9331 8.00039 11.9331C7.66902 11.9331 7.40039 11.6644 7.40039 11.3331V10.9997C7.40039 10.6684 7.66902 10.3997 8.00039 10.3997Z\"\n fill=\"#EF7484\"\n />\n </svg>\n\n {{ currentErrorMessage | translate }}\n </div>\n</div>\n", styles: [":host .rd-form-item-p-deal{padding:0!important}:host .rd-form-item-input{background:var(--rd-input-bg-default);border:none;box-shadow:none;color:var(--rd-copy-primary)}:host .rd-disabled .rd-form-item-input{background:var(--rd-input-bg-disable)!important}:host .rd-form-item-input-select{position:relative}:host .rd-form-item-input-select.rd-disabled .rd-form-item-input{color:var(--rd-copy-secondary)}:host .rd-form-item-password .rd-form-item-input[type=password]{font-size:20px;line-height:32px;letter-spacing:3px}:host .rd-form-item-rd-input-relative{position:relative}:host .rd-form-item-rd-input-relative .rd-form-item-rd-input-absolute{position:absolute;top:50%;transform:translateY(-50%);right:16px;z-index:1}:host .rd-form-item-rd-input-relative .rd-form-item-input{background:var(--rd-input-bg-default)!important;color:var(--rd-copy-primary)!important}:host .rd-input-symbol{position:absolute;top:50%;transform:translateY(-50%);right:16px;z-index:1;color:var(--rd-copy-primary);transition:all .3s cubic-bezier(.645,.045,.355,1)}:host .rd-form-item.rd-focus .rd-input-symbol,:host .rd-form-item.rd-has-value .rd-input-symbol{padding-top:14px}:host .rd-form-item-s .rd-form-item{height:44px}:host .rd-form-item-s .rd-form-item .rd-form-item-input{height:100%;padding:12px 16px;border-radius:4px}:host .rd-error-icon-dark{display:none}:host-context(.theme-dark):host(:not(.theme-light)) .rd-error-icon-light,:host(.theme-dark) .rd-error-icon-light{display:none}:host-context(.theme-dark):host(:not(.theme-light)) .rd-error-icon-dark,:host(.theme-dark) .rd-error-icon-dark{display:inline}\n", ".rd-form-item{position:relative;border-radius:12px;padding:2px 0;border:1px solid var(--rd-input-fg-default);background-color:var(--rd-input-bg-default);width:100%;height:64px}.rd-form-item .rd-form-item-select-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;pointer-events:none}.rd-form-item-label{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--rd-copy-secondary);transition:all .3s ease;pointer-events:none;z-index:1;font-size:14px;font-weight:600;line-height:1}.rd-form-item-input{color:var(--rd-copy-primary);font-size:14px;width:100%;font-weight:500;padding:22px 16px 12px;height:52px}.rd-form-item-input:focus,.rd-form-item-input:not(:placeholder-shown){top:10px}.rd-form-item .rd-form-item-input:focus~.rd-form-item-label,.rd-form-item .rd-form-item-input:not(:placeholder-shown)~.rd-form-item-label{top:18px;font-size:12px}.rd-form-item-select{width:100%}.rd-form-item-select ::ng-deep .ant-select-selection-item{color:var(--rd-copy-primary);font-size:14px;font-weight:500}.rd-form-item.rd-selected .rd-form-item-label{top:16px;font-size:12px}.rd-form-item.rd-selected .rd-form-item-select{top:10px}.rd-form-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-item.rd-disabled .rd-form-item-label,.rd-form-item.rd-disabled .rd-form-item-input{color:var(--rd-copy-disable)}.rd-form-item.rd-disabled ::ng-deep .ant-select-selection-item{color:var(--rd-copy-disable)}.rd-form-item.rd-error{border-color:var(--rd-input-fg-danger)}.rd-form-item-error{color:var(--rd-copy-danger);font-size:12px;font-weight:500;display:flex;align-items:center;gap:4px;margin-top:4px}.rd-form-item-error img{width:16px}.rd-form-number-item{position:relative;border-radius:16px;padding:12px 16px;background-color:var(--rd-input-bg-default);border:1px solid var(--rd-input-fg-default);width:100%}.rd-form-number-item .rd-item-label{color:var(--rd-copy-secondary);font-size:12px;font-weight:600}.rd-form-number-item .rd-item-content{display:flex;align-items:center;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-value{flex:1;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-primary);border:none;padding:4px 0}.rd-form-number-item .rd-item-content-value:focus,.rd-form-number-item .rd-item-content-value:active,.rd-form-number-item .rd-item-content-value:hover{outline:none;box-shadow:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-handler-wrap{display:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input{font-size:32px;font-weight:600;line-height:48px}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input::placeholder{color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-symbol{flex-shrink:0}.rd-form-number-item ::ng-deep .rd-item-warning{font-weight:500;font-size:12px;color:var(--rd-copy-secondary);margin-top:4px;padding:0 12px}.rd-form-number-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-number-item.rd-disabled .rd-item-label,.rd-form-number-item.rd-disabled .rd-item-content-value{color:var(--rd-copy-disable)}.rd-form-number-item.rd-error{border-color:var(--rd-input-fg-danger)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "directive", type: i5.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
185
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CustomInputComponent, decorators: [{
|
|
186
208
|
type: Component,
|
|
187
209
|
args: [{ selector: 'app-rd-input', providers: [
|
|
@@ -195,10 +217,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
195
217
|
useExisting: forwardRef(() => CustomInputComponent),
|
|
196
218
|
multi: true,
|
|
197
219
|
},
|
|
198
|
-
], template: "<div\n [ngClass]=\"{\n 'rd-form-item-rd-input-relative': type === 'select',\n }\"\n>\n <div\n class=\"rd-form-item rd-form-item-p-deal\"\n [ngClass]=\"{\n 'rd-disabled': disabled,\n 'rd-error': showError,\n 'rd-form-item-input-select': type === 'select',\n }\"\n >\n <input\n nz-input\n
|
|
199
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
200
|
-
type: Input
|
|
201
|
-
}], label: [{
|
|
220
|
+
], template: "<div\n [ngClass]=\"{\n 'rd-form-item-rd-input-relative': type === 'select',\n 'rd-form-item-s': size === 'small',\n }\"\n>\n <div\n class=\"rd-form-item rd-form-item-p-deal\"\n [ngClass]=\"{\n 'rd-disabled': disabled,\n 'rd-error': showError,\n 'rd-focus': isFocused,\n 'rd-has-value': !!value,\n 'rd-form-item-input-select': type === 'select',\n 'rd-form-item-password': type === 'password',\n }\"\n >\n <input\n nz-input\n [placeholder]=\"resolvedPlaceholder\"\n [name]=\"name\"\n aria-autocomplete=\"none\"\n [type]=\"type\"\n [(ngModel)]=\"value\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"handleValueChange($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [allowNegativeNumbers]=\"allowNegativeNumbers\"\n [dropSpecialCharacters]=\"false\"\n [mask]=\"\n maskType === 'amount'\n ? 'separator.' + maskNumber\n : maskType === 'number'\n ? '0*'\n : ''\n \"\n [thousandSeparator]=\"maskType === 'amount' ? ',' : ''\"\n class=\"rd-form-item-input\"\n [ngClass]=\"{\n 'rd-form-item-input-no-label': !label,\n }\"\n />\n <div class=\"rd-form-item-label\" *ngIf=\"label\">{{ label }}</div>\n <ng-container *ngIf=\"symbol\">\n <div class=\"rd-input-symbol\">{{ symbol }}</div>\n </ng-container>\n </div>\n <div class=\"rd-form-item-rd-input-absolute\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showError\" class=\"rd-form-item-error\">\n <svg\n class=\"rd-error-icon-light\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.33398 7.9987C1.33398 4.3168 4.31875 1.33203 8.00065 1.33203C11.6825 1.33203 14.6673 4.3168 14.6673 7.9987C14.6673 11.6806 11.6825 14.6654 8.00065 14.6654C4.31875 14.6654 1.33398 11.6806 1.33398 7.9987ZM8.00065 2.33203C4.87104 2.33203 2.33398 4.86908 2.33398 7.9987C2.33398 11.1283 4.87104 13.6654 8.00065 13.6654C11.1303 13.6654 13.6673 11.1283 13.6673 7.9987C13.6673 4.86908 11.1303 2.33203 8.00065 2.33203Z\"\n fill=\"#EA485D\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.00039 4.06641C8.33176 4.06641 8.60039 4.33504 8.60039 4.66641V7.99974C8.60039 8.33111 8.33176 8.59974 8.00039 8.59974C7.66902 8.59974 7.40039 8.33111 7.40039 7.99974V4.66641C7.40039 4.33504 7.66902 4.06641 8.00039 4.06641ZM8.00039 10.3997C8.33176 10.3997 8.60039 10.6684 8.60039 10.9997V11.3331C8.60039 11.6644 8.33176 11.9331 8.00039 11.9331C7.66902 11.9331 7.40039 11.6644 7.40039 11.3331V10.9997C7.40039 10.6684 7.66902 10.3997 8.00039 10.3997Z\"\n fill=\"#EA485D\"\n />\n </svg>\n\n <svg\n class=\"rd-error-icon-dark\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M1.33398 7.9987C1.33398 4.3168 4.31875 1.33203 8.00065 1.33203C11.6825 1.33203 14.6673 4.3168 14.6673 7.9987C14.6673 11.6806 11.6825 14.6654 8.00065 14.6654C4.31875 14.6654 1.33398 11.6806 1.33398 7.9987ZM8.00065 2.33203C4.87104 2.33203 2.33398 4.86908 2.33398 7.9987C2.33398 11.1283 4.87104 13.6654 8.00065 13.6654C11.1303 13.6654 13.6673 11.1283 13.6673 7.9987C13.6673 4.86908 11.1303 2.33203 8.00065 2.33203Z\"\n fill=\"#EF7484\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.00039 4.06641C8.33176 4.06641 8.60039 4.33504 8.60039 4.66641V7.99974C8.60039 8.33111 8.33176 8.59974 8.00039 8.59974C7.66902 8.59974 7.40039 8.33111 7.40039 7.99974V4.66641C7.40039 4.33504 7.66902 4.06641 8.00039 4.06641ZM8.00039 10.3997C8.33176 10.3997 8.60039 10.6684 8.60039 10.9997V11.3331C8.60039 11.6644 8.33176 11.9331 8.00039 11.9331C7.66902 11.9331 7.40039 11.6644 7.40039 11.3331V10.9997C7.40039 10.6684 7.66902 10.3997 8.00039 10.3997Z\"\n fill=\"#EF7484\"\n />\n </svg>\n\n {{ currentErrorMessage | translate }}\n </div>\n</div>\n", styles: [":host .rd-form-item-p-deal{padding:0!important}:host .rd-form-item-input{background:var(--rd-input-bg-default);border:none;box-shadow:none;color:var(--rd-copy-primary)}:host .rd-disabled .rd-form-item-input{background:var(--rd-input-bg-disable)!important}:host .rd-form-item-input-select{position:relative}:host .rd-form-item-input-select.rd-disabled .rd-form-item-input{color:var(--rd-copy-secondary)}:host .rd-form-item-password .rd-form-item-input[type=password]{font-size:20px;line-height:32px;letter-spacing:3px}:host .rd-form-item-rd-input-relative{position:relative}:host .rd-form-item-rd-input-relative .rd-form-item-rd-input-absolute{position:absolute;top:50%;transform:translateY(-50%);right:16px;z-index:1}:host .rd-form-item-rd-input-relative .rd-form-item-input{background:var(--rd-input-bg-default)!important;color:var(--rd-copy-primary)!important}:host .rd-input-symbol{position:absolute;top:50%;transform:translateY(-50%);right:16px;z-index:1;color:var(--rd-copy-primary);transition:all .3s cubic-bezier(.645,.045,.355,1)}:host .rd-form-item.rd-focus .rd-input-symbol,:host .rd-form-item.rd-has-value .rd-input-symbol{padding-top:14px}:host .rd-form-item-s .rd-form-item{height:44px}:host .rd-form-item-s .rd-form-item .rd-form-item-input{height:100%;padding:12px 16px;border-radius:4px}:host .rd-error-icon-dark{display:none}:host-context(.theme-dark):host(:not(.theme-light)) .rd-error-icon-light,:host(.theme-dark) .rd-error-icon-light{display:none}:host-context(.theme-dark):host(:not(.theme-light)) .rd-error-icon-dark,:host(.theme-dark) .rd-error-icon-dark{display:inline}\n", ".rd-form-item{position:relative;border-radius:12px;padding:2px 0;border:1px solid var(--rd-input-fg-default);background-color:var(--rd-input-bg-default);width:100%;height:64px}.rd-form-item .rd-form-item-select-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;pointer-events:none}.rd-form-item-label{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--rd-copy-secondary);transition:all .3s ease;pointer-events:none;z-index:1;font-size:14px;font-weight:600;line-height:1}.rd-form-item-input{color:var(--rd-copy-primary);font-size:14px;width:100%;font-weight:500;padding:22px 16px 12px;height:52px}.rd-form-item-input:focus,.rd-form-item-input:not(:placeholder-shown){top:10px}.rd-form-item .rd-form-item-input:focus~.rd-form-item-label,.rd-form-item .rd-form-item-input:not(:placeholder-shown)~.rd-form-item-label{top:18px;font-size:12px}.rd-form-item-select{width:100%}.rd-form-item-select ::ng-deep .ant-select-selection-item{color:var(--rd-copy-primary);font-size:14px;font-weight:500}.rd-form-item.rd-selected .rd-form-item-label{top:16px;font-size:12px}.rd-form-item.rd-selected .rd-form-item-select{top:10px}.rd-form-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-item.rd-disabled .rd-form-item-label,.rd-form-item.rd-disabled .rd-form-item-input{color:var(--rd-copy-disable)}.rd-form-item.rd-disabled ::ng-deep .ant-select-selection-item{color:var(--rd-copy-disable)}.rd-form-item.rd-error{border-color:var(--rd-input-fg-danger)}.rd-form-item-error{color:var(--rd-copy-danger);font-size:12px;font-weight:500;display:flex;align-items:center;gap:4px;margin-top:4px}.rd-form-item-error img{width:16px}.rd-form-number-item{position:relative;border-radius:16px;padding:12px 16px;background-color:var(--rd-input-bg-default);border:1px solid var(--rd-input-fg-default);width:100%}.rd-form-number-item .rd-item-label{color:var(--rd-copy-secondary);font-size:12px;font-weight:600}.rd-form-number-item .rd-item-content{display:flex;align-items:center;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-value{flex:1;font-size:32px;font-weight:600;line-height:48px;color:var(--rd-copy-primary);border:none;padding:4px 0}.rd-form-number-item .rd-item-content-value:focus,.rd-form-number-item .rd-item-content-value:active,.rd-form-number-item .rd-item-content-value:hover{outline:none;box-shadow:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-handler-wrap{display:none}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input{font-size:32px;font-weight:600;line-height:48px}.rd-form-number-item .rd-item-content-value ::ng-deep .ant-input-number-input::placeholder{color:var(--rd-copy-disable)}.rd-form-number-item .rd-item-content-symbol{flex-shrink:0}.rd-form-number-item ::ng-deep .rd-item-warning{font-weight:500;font-size:12px;color:var(--rd-copy-secondary);margin-top:4px;padding:0 12px}.rd-form-number-item.rd-disabled{background-color:var(--rd-input-bg-disable);border-color:var(--rd-input-fg-disable)}.rd-form-number-item.rd-disabled .rd-item-label,.rd-form-number-item.rd-disabled .rd-item-content-value{color:var(--rd-copy-disable)}.rd-form-number-item.rd-error{border-color:var(--rd-input-fg-danger)}\n"] }]
|
|
221
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }]; }, propDecorators: { label: [{
|
|
202
222
|
type: Input
|
|
203
223
|
}], symbol: [{
|
|
204
224
|
type: Input
|
|
@@ -212,8 +232,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
212
232
|
type: Input
|
|
213
233
|
}], type: [{
|
|
214
234
|
type: Input
|
|
235
|
+
}], allowNegativeNumbers: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], theme: [{
|
|
238
|
+
type: Input
|
|
215
239
|
}], required: [{
|
|
216
240
|
type: Input
|
|
241
|
+
}], placeholder: [{
|
|
242
|
+
type: Input
|
|
217
243
|
}], min: [{
|
|
218
244
|
type: Input
|
|
219
245
|
}], max: [{
|
|
@@ -226,6 +252,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
226
252
|
type: Input
|
|
227
253
|
}], customValidator: [{
|
|
228
254
|
type: Input
|
|
255
|
+
}], size: [{
|
|
256
|
+
type: Input
|
|
229
257
|
}], errorMessages: [{
|
|
230
258
|
type: Input
|
|
231
259
|
}], valueChange: [{
|
|
@@ -234,5 +262,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
234
262
|
type: Output
|
|
235
263
|
}], blur: [{
|
|
236
264
|
type: Output
|
|
265
|
+
}], hostThemeLight: [{
|
|
266
|
+
type: HostBinding,
|
|
267
|
+
args: ['class.theme-light']
|
|
268
|
+
}], hostThemeDark: [{
|
|
269
|
+
type: HostBinding,
|
|
270
|
+
args: ['class.theme-dark']
|
|
237
271
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1saWIvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWxpYi9zcmMvbGliL21vZHVsZXMvY3VzdG9tLWlucHV0L2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLGlCQUFpQixHQUlsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQztBQUN6QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7QUFzQjdELE1BQU0sT0FBTyxvQkFBb0I7SUFrQy9CLElBQUksbUJBQW1CO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0MsUUFBUSxVQUFVLEVBQUU7WUFDbEIsS0FBSyxVQUFVO2dCQUNiLE9BQU8sQ0FDTCxHQUFHO29CQUNILEdBQUcsY0FBYyxDQUNmLElBQUksQ0FBQyxJ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QXBCaEMsU0FBUzsrQkFDRSxjQUFjLGFBTWI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0dBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgQmlnIGZyb20gJ2JpZy5qcyc7XG5pbXBvcnQgeyBmb3JtYXRCaWdOdW1iZXIgfSBmcm9tICcuLi8uLi91dGlscy9iaWctbnVtYmVyJztcbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybS12YWlsZC1sYW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXJkLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2N1c3RvbS1pbnB1dC5jb21wb25lbnQuc2NzcycsXG4gICAgJy4uLy4uL2Fzc2V0cy9zY3NzL2Zvcm0taXRlbS5zY3NzJyxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21JbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDdXN0b21JbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21JbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBASW5wdXQoKSBsYW5nID0gJ2VuJztcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzeW1ib2wgPSAnJztcbiAgQElucHV0KCkgbmFtZSA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXNrTnVtYmVyID0gNjtcbiAgQElucHV0KCkgbWFza1R5cGU6ICdhbW91bnQnIHwgJ251bWJlcicgfCAndGV4dCcgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHR5cGU6ICdwYXNzd29yZCcgfCAndGV4dCcgfCAnc2VsZWN0JyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgQElucHV0KCkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBwYXR0ZXJuPzogc3RyaW5nIHwgUmVnRXhwO1xuICBASW5wdXQoKSBjdXN0b21WYWxpZGF0b3I/OiBWYWxpZGF0b3JGbjtcblxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIHBhdHRlcm46ICdJbnZhbGlkIGZvcm1hdCcsXG4gICAgY3VzdG9tOiAnVmFsaWRhdGlvbiBmYWlsZWQnLFxuICB9O1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHZhbHVlOiBzdHJpbmcgPSAnJztcbiAgaXNGb2N1c2VkID0gZmFsc2U7XG4gIHByaXZhdGUgdG91Y2hlZCA9IGZhbHNlO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9uVmFsaWRhdG9yQ2hhbmdlOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgZ2V0IGN1cnJlbnRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbD8uZXJyb3JzKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZmlyc3RFcnJvciA9IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbD8uZXJyb3JzIHx8IHt9KVswXTtcblxuICAgIGNvbnN0IG1zZyA9IHRoaXMuZXJyb3JNZXNzYWdlc1tmaXJzdEVycm9yXTtcblxuICAgIHN3aXRjaCAoZmlyc3RFcnJvcikge1xuICAgICAgY2FzZSAncmVxdWlyZWQnOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1zZyB8fFxuICAgICAgICAgIGAke2dldFRyYW5zbGF0aW9uKFxuICAgICAgICAgICAgdGhpcy5sYW5nLFxuICAgICAgICAgICAgJ3BsZWFzZUVudGVyJyxcbiAgICAgICAgICApfSR7dGhpcy5sYWJlbC50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21pbic6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7dGhpcy5sYWJlbH0ke2dldFRyYW5zbGF0aW9uKFxuICAgICAgICAgICAgdGhpcy5sYW5nLFxuICAgICAgICAgICAgJ2Nhbm5vdEJlTGVzc1RoYW4nLFxuICAgICAgICAgICl9JHtmb3JtYXRCaWdOdW1iZXIodGhpcy5taW4pfWBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21heCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7dGhpcy5sYWJlbH0gJHtnZXRUcmFuc2xhdGlvbihcbiAgICAgICAgICAgIHRoaXMubGFuZyxcbiAgICAgICAgICAgICdjYW5ub3RFeGNlZWQnLFxuICAgICAgICAgICl9JHtmb3JtYXRCaWdOdW1iZXIodGhpcy5tYXgpfWBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ3ByZWNpc2lvbic6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7Z2V0VHJhbnNsYXRpb24odGhpcy5sYW5nLCAnbWF4RGVjaW1hbFBsYWNlcycpfSR7dGhpcy5tYXNrTnVtYmVyfWBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7Z2V0VHJhbnNsYXRpb24odGhpcy5sYW5nLCAnbGVuZ3RoQ2Fubm90QmVMZXNzJyl9JHt0aGlzLm1pbkxlbmd0aH1gXG4gICAgICAgICk7XG4gICAgICBjYXNlICdtYXhMZW5ndGgnOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1zZyB8fFxuICAgICAgICAgIGAke2dldFRyYW5zbGF0aW9uKHRoaXMubGFuZywgJ2xlbmd0aENhbm5vdEV4Y2VlZCcpfSR7dGhpcy5tYXhMZW5ndGh9YFxuICAgICAgICApO1xuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICByZXR1cm4gbXNnIHx8IGAke2dldFRyYW5zbGF0aW9uKHRoaXMubGFuZywgJ2VtYWlsX2ludmFsaWQnKX1gO1xuICAgICAgY2FzZSAnY3VzdG9tJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLmNvbnRyb2w/LmVycm9yc1snY3VzdG9tJ10gfHxcbiAgICAgICAgICBnZXRUcmFuc2xhdGlvbih0aGlzLmxhbmcsICd2YWxpZGF0aW9uRmFpbGVkJylcbiAgICAgICAgKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzW2ZpcnN0RXJyb3JdIHx8XG4gICAgICAgICAgZ2V0VHJhbnNsYXRpb24odGhpcy5sYW5nLCAndmFsaWRhdGlvbkZhaWxlZCcpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgISF0aGlzLmNvbnRyb2w/LmludmFsaWQgJiYgKHRoaXMuY29udHJvbD8udG91Y2hlZCB8fCB0aGlzLmNvbnRyb2w/LmRpcnR5KVxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMuZm9jdXMuZW1pdCgpO1xuICB9XG5cbiAgaGFuZGxlVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9XG4gICAgICB0aGlzLm1hc2tUeXBlID09PSAnYW1vdW50JyA/IHZhbHVlLnJlcGxhY2UoLywvZywgJycpIDogdmFsdWUudHJpbSgpO1xuICAgIHRoaXMudmFsdWUgPSBjbGVhbmVkVmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZShjbGVhbmVkVmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChjbGVhbmVkVmFsdWUpO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPSB7fTtcbiAgICBsZXQgdmFsdWU7XG4gICAgaWYgKHRoaXMubWFza1R5cGUgPT09ICdhbW91bnQnKSB7XG4gICAgICB2YWx1ZSA9IGNvbnRyb2w/LnZhbHVlPy5yZXBsYWNlKC8sL2csICcnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYmlnVmFsdWUgPSBuZXcgQmlnKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMubWluICYmICFOdW1iZXIuaXNOYU4odGhpcy5taW4pICYmIGJpZ1ZhbHVlLmx0KHRoaXMubWluKSkge1xuICAgICAgICAgIGVycm9yc1snbWluJ10gPSB7IG1pbjogdGhpcy5taW4sIGFjdHVhbDogdmFsdWUgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tYXggJiYgIU51bWJlci5pc05hTih0aGlzLm1heCkgJiYgYmlnVmFsdWUuZ3QodGhpcy5tYXgpKSB7XG4gICAgICAgICAgZXJyb3JzWydtYXgnXSA9IHsgbWF4OiB0aGlzLm1heCwgYWN0dWFsOiB2YWx1ZSB9O1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvcnNbJ2ludmFsaWQnXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gY29udHJvbD8udmFsdWU/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICAgIGVycm9yc1sncmVxdWlyZWQnXSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0aGlzLm1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgICBlcnJvcnNbJ21pbkxlbmd0aCddID0ge1xuICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgICBhY3R1YWxMZW5ndGg6IHZhbHVlLmxlbmd0aCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICBlcnJvcnNbJ21heExlbmd0aCddID0ge1xuICAgICAgICAgIHJlcXVpcmVkTGVuZ3RoOiB0aGlzLm1heExlbmd0aCxcbiAgICAgICAgICBhY3R1YWxMZW5ndGg6IHZhbHVlLmxlbmd0aCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXR0ZXJuICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBwYXR0ZXJuID1cbiAgICAgICAgdGhpcy5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwXG4gICAgICAgICAgPyB0aGlzLnBhdHRlcm5cbiAgICAgICAgICA6IG5ldyBSZWdFeHAodGhpcy5wYXR0ZXJuKTtcbiAgICAgIGlmICghcGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICBlcnJvcnNbJ3BhdHRlcm4nXSA9IHsgcmVxdWlyZWRQYXR0ZXJuOiBwYXR0ZXJuLCBhY3R1YWxWYWx1ZTogdmFsdWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXN0b21WYWxpZGF0b3IpIHtcbiAgICAgIGNvbnN0IGN1c3RvbUVycm9ycyA9IHRoaXMuY3VzdG9tVmFsaWRhdG9yKGNvbnRyb2whKTtcbiAgICAgIGlmIChjdXN0b21FcnJvcnMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihlcnJvcnMsIGN1c3RvbUVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID4gMCA/IGVycm9ycyA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwie1xuICAgICdyZC1mb3JtLWl0ZW0tcmQtaW5wdXQtcmVsYXRpdmUnOiB0eXBlID09PSAnc2VsZWN0JyxcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJkLWZvcm0taXRlbSByZC1mb3JtLWl0ZW0tcC1kZWFsXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncmQtZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAgICdyZC1lcnJvcic6IHNob3dFcnJvcixcbiAgICAgICdyZC1mb3JtLWl0ZW0taW5wdXQtc2VsZWN0JzogdHlwZSA9PT0gJ3NlbGVjdCcsXG4gICAgfVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIG56LWlucHV0XG4gICAgICBuekJvcmRlcmxlc3NcbiAgICAgIHBsYWNlaG9sZGVyPVwiIFwiXG4gICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgIFthbGxvd05lZ2F0aXZlTnVtYmVyc109XCJ0cnVlXCJcbiAgICAgIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIlxuICAgICAgW21hc2tdPVwiXG4gICAgICAgIG1hc2tUeXBlID09PSAnYW1vdW50J1xuICAgICAgICAgID8gJ3NlcGFyYXRvci4nICsgbWFza051bWJlclxuICAgICAgICAgIDogbWFza1R5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICA/ICcwKidcbiAgICAgICAgICAgIDogJydcbiAgICAgIFwiXG4gICAgICBbdGhvdXNhbmRTZXBhcmF0b3JdPVwibWFza1R5cGUgPT09ICdhbW91bnQnID8gJywnIDogJydcIlxuICAgICAgY2xhc3M9XCJyZC1mb3JtLWl0ZW0taW5wdXRcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cInJkLWZvcm0taXRlbS1sYWJlbFwiPnt7IGxhYmVsIH19PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicmQtZm9ybS1pdGVtLXJkLWlucHV0LWFic29sdXRlXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInNob3dFcnJvclwiIGNsYXNzPVwicmQtZm9ybS1pdGVtLWVycm9yXCI+XG4gICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltZy9pY29uL2ljb24tZXJyb3Iuc3ZnXCIgLz5cbiAgICB7eyBjdXJyZW50RXJyb3JNZXNzYWdlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1saWIvc3JjL2xpYi9tb2R1bGVzL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkLWxpYi9zcmMvbGliL21vZHVsZXMvY3VzdG9tLWlucHV0L2N1c3RvbS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsR0FJbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBd0J6RCxNQUFNLE9BQU8sb0JBQW9CO0lBOEIvQixJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBVUQsSUFBSSxtQkFBbUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFV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Q0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBR0gsY0FBYztzQkFEakIsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTTVCLGFBQWE7c0JBRGhCLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0b3JGbixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IEJpZyBmcm9tICdiaWcuanMnO1xuaW1wb3J0IHsgZm9ybWF0QmlnTnVtYmVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvYmlnLW51bWJlcic7XG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm0tdmFpbGQtbGFuZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yZC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9jdXN0b20taW5wdXQuY29tcG9uZW50LnNjc3MnLFxuICAgICcuLi8uLi9hc3NldHMvc2Nzcy9mb3JtLWl0ZW0uc2NzcycsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ3VzdG9tSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzeW1ib2wgPSAnJztcbiAgQElucHV0KCkgbmFtZSA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXNrTnVtYmVyID0gNjtcbiAgQElucHV0KCkgbWFza1R5cGU6ICdhbW91bnQnIHwgJ251bWJlcicgfCAndGV4dCcgPSAndGV4dCc7XG4gIEBJbnB1dCgpIHR5cGU6ICdwYXNzd29yZCcgfCAndGV4dCcgfCAnc2VsZWN0JyA9ICd0ZXh0JztcbiAgQElucHV0KCkgYWxsb3dOZWdhdGl2ZU51bWJlcnMgPSB0cnVlO1xuICAvKiogTG9jYWwgY29sb3IgY29udGV4dC4gT21pdCB0byBpbmhlcml0IGJvZHkgYC50aGVtZS1saWdodGAgLyBgLnRoZW1lLWRhcmtgLiAqL1xuICBASW5wdXQoKSB0aGVtZT86ICdsaWdodCcgfCAnZGFyayc7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSBtaW4/OiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heD86IG51bWJlcjtcbiAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhdHRlcm4/OiBzdHJpbmcgfCBSZWdFeHA7XG4gIEBJbnB1dCgpIGN1c3RvbVZhbGlkYXRvcj86IFZhbGlkYXRvckZuO1xuICBASW5wdXQoKSBzaXplPzogJ3NtYWxsJyB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKSBlcnJvck1lc3NhZ2VzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIHBhdHRlcm46ICdJbnZhbGlkIGZvcm1hdCcsXG4gICAgY3VzdG9tOiAnVmFsaWRhdGlvbiBmYWlsZWQnLFxuICB9O1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGhlbWUtbGlnaHQnKVxuICBnZXQgaG9zdFRoZW1lTGlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICdsaWdodCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoZW1lLWRhcmsnKVxuICBnZXQgaG9zdFRoZW1lRGFyaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aGVtZSA9PT0gJ2RhcmsnO1xuICB9XG5cbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSB0b3VjaGVkID0gZmFsc2U7XG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBnZXQgY3VycmVudEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jb250cm9sPy5lcnJvcnMpIHJldHVybiAnJztcbiAgICBjb25zdCBmaXJzdEVycm9yID0gT2JqZWN0LmtleXModGhpcy5jb250cm9sPy5lcnJvcnMgfHwge30pWzBdO1xuXG4gICAgY29uc3QgbXNnID0gdGhpcy5lcnJvck1lc3NhZ2VzW2ZpcnN0RXJyb3JdO1xuXG4gICAgc3dpdGNoIChmaXJzdEVycm9yKSB7XG4gICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgncGxlYXNlX2VudGVyJyl9JHt0aGlzLmxhYmVsLnRvTG93ZXJDYXNlKCl9YFxuICAgICAgICApO1xuICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtc2cgfHxcbiAgICAgICAgICBgJHt0aGlzLmxhYmVsfSR7dGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICdtaW5fdmFsdWVfZXJyb3InLFxuICAgICAgICAgICl9JHtmb3JtYXRCaWdOdW1iZXIodGhpcy5taW4pfWBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21heCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7dGhpcy5sYWJlbH0ke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAnbWF4X3ZhbHVlX2Vycm9yJyxcbiAgICAgICAgICApfSR7Zm9ybWF0QmlnTnVtYmVyKHRoaXMubWF4KX1gXG4gICAgICAgICk7XG4gICAgICBjYXNlICdwcmVjaXNpb24nOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1zZyB8fFxuICAgICAgICAgIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ21heF9kZWNpbWFsX3BsYWNlcycpfSR7dGhpcy5tYXNrTnVtYmVyfWBcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgJ21pbkxlbmd0aCc6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbXNnIHx8XG4gICAgICAgICAgYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnbGVuZ3RoX2Nhbm5vdF9iZV9sZXNzJyl9JHt0aGlzLm1pbkxlbmd0aH1gXG4gICAgICAgICk7XG4gICAgICBjYXNlICdtYXhMZW5ndGgnOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1zZyB8fFxuICAgICAgICAgIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2xlbmd0aF9jYW5ub3RfZXhjZWVkJyl9JHt0aGlzLm1heExlbmd0aH1gXG4gICAgICAgICk7XG4gICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgIHJldHVybiBtc2cgfHwgYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW1haWxfaW52YWxpZCcpfWA7XG4gICAgICBjYXNlICdjdXN0b20nOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHRoaXMuY29udHJvbD8uZXJyb3JzWydjdXN0b20nXSB8fFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3ZhbGlkYXRpb25fZmFpbGVkJylcbiAgICAgICAgKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmVycm9yTWVzc2FnZXNbZmlyc3RFcnJvcl0pIHx8XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgndmFsaWRhdGlvbl9mYWlsZWQnKVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93RXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICEhdGhpcy5jb250cm9sPy5pbnZhbGlkICYmICh0aGlzLmNvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5jb250cm9sPy5kaXJ0eSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMubGFiZWwpIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8ICcnO1xuICAgIHJldHVybiB0aGlzLmlzRm9jdXNlZCA/IHRoaXMucGxhY2Vob2xkZXIgfHwgJyAnIDogJyAnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMuZm9jdXMuZW1pdCgpO1xuICB9XG5cbiAgaGFuZGxlVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9XG4gICAgICB0aGlzLm1hc2tUeXBlID09PSAnYW1vdW50J1xuICAgICAgICA/IHZhbHVlLnJlcGxhY2UoLywvZywgJycpXG4gICAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gdmFsdWUudHJpbSgpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0gY2xlYW5lZFZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UoY2xlYW5lZFZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY2xlYW5lZFZhbHVlKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0ge307XG4gICAgbGV0IHZhbHVlO1xuICAgIGlmICh0aGlzLm1hc2tUeXBlID09PSAnYW1vdW50Jykge1xuICAgICAgdmFsdWUgPSBjb250cm9sPy52YWx1ZT8ucmVwbGFjZSgvLC9nLCAnJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGJpZ1ZhbHVlID0gbmV3IEJpZyh2YWx1ZSk7XG4gICAgICAgICAgaWYgKHRoaXMubWluICYmICFOdW1iZXIuaXNOYU4odGhpcy5taW4pICYmIGJpZ1ZhbHVlLmx0KHRoaXMubWluKSkge1xuICAgICAgICAgICAgZXJyb3JzWydtaW4nXSA9IHsgbWluOiB0aGlzLm1pbiwgYWN0dWFsOiB2YWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5tYXggJiYgIU51bWJlci5pc05hTih0aGlzLm1heCkgJiYgYmlnVmFsdWUuZ3QodGhpcy5tYXgpKSB7XG4gICAgICAgICAgICBlcnJvcnNbJ21heCddID0geyBtYXg6IHRoaXMubWF4LCBhY3R1YWw6IHZhbHVlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvcnNbJ2ludmFsaWQnXSA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID1cbiAgICAgICAgdHlwZW9mIGNvbnRyb2w/LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gY29udHJvbD8udmFsdWU/LnRyaW0oKVxuICAgICAgICAgIDogY29udHJvbD8udmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgICBlcnJvcnNbJ3JlcXVpcmVkJ10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodGhpcy5taW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgICAgZXJyb3JzWydtaW5MZW5ndGgnXSA9IHtcbiAgICAgICAgICByZXF1aXJlZExlbmd0aDogdGhpcy5taW5MZW5ndGgsXG4gICAgICAgICAgYWN0dWFsTGVuZ3RoOiB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgZXJyb3JzWydtYXhMZW5ndGgnXSA9IHtcbiAgICAgICAgICByZXF1aXJlZExlbmd0aDogdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgYWN0dWFsTGVuZ3RoOiB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGF0dGVybiAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgcGF0dGVybiA9XG4gICAgICAgIHRoaXMucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cFxuICAgICAgICAgID8gdGhpcy5wYXR0ZXJuXG4gICAgICAgICAgOiBuZXcgUmVnRXhwKHRoaXMucGF0dGVybik7XG4gICAgICBpZiAoIXBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgZXJyb3JzWydwYXR0ZXJuJ10gPSB7IHJlcXVpcmVkUGF0dGVybjogcGF0dGVybiwgYWN0dWFsVmFsdWU6IHZhbHVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VzdG9tVmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCBjdXN0b21FcnJvcnMgPSB0aGlzLmN1c3RvbVZhbGlkYXRvcihjb250cm9sISk7XG4gICAgICBpZiAoY3VzdG9tRXJyb3JzKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oZXJyb3JzLCBjdXN0b21FcnJvcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBudWxsO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtuZ0NsYXNzXT1cIntcbiAgICAncmQtZm9ybS1pdGVtLXJkLWlucHV0LXJlbGF0aXZlJzogdHlwZSA9PT0gJ3NlbGVjdCcsXG4gICAgJ3JkLWZvcm0taXRlbS1zJzogc2l6ZSA9PT0gJ3NtYWxsJyxcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJkLWZvcm0taXRlbSByZC1mb3JtLWl0ZW0tcC1kZWFsXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAncmQtZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAgICdyZC1lcnJvcic6IHNob3dFcnJvcixcbiAgICAgICdyZC1mb2N1cyc6IGlzRm9jdXNlZCxcbiAgICAgICdyZC1oYXMtdmFsdWUnOiAhIXZhbHVlLFxuICAgICAgJ3JkLWZvcm0taXRlbS1pbnB1dC1zZWxlY3QnOiB0eXBlID09PSAnc2VsZWN0JyxcbiAgICAgICdyZC1mb3JtLWl0ZW0tcGFzc3dvcmQnOiB0eXBlID09PSAncGFzc3dvcmQnLFxuICAgIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICBuei1pbnB1dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cInJlc29sdmVkUGxhY2Vob2xkZXJcIlxuICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cIm5vbmVcIlxuICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgW2FsbG93TmVnYXRpdmVOdW1iZXJzXT1cImFsbG93TmVnYXRpdmVOdW1iZXJzXCJcbiAgICAgIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiZmFsc2VcIlxuICAgICAgW21hc2tdPVwiXG4gICAgICAgIG1hc2tUeXBlID09PSAnYW1vdW50J1xuICAgICAgICAgID8gJ3NlcGFyYXRvci4nICsgbWFza051bWJlclxuICAgICAgICAgIDogbWFza1R5cGUgPT09ICdudW1iZXInXG4gICAgICAgICAgICA/ICcwKidcbiAgICAgICAgICAgIDogJydcbiAgICAgIFwiXG4gICAgICBbdGhvdXNhbmRTZXBhcmF0b3JdPVwibWFza1R5cGUgPT09ICdhbW91bnQnID8gJywnIDogJydcIlxuICAgICAgY2xhc3M9XCJyZC1mb3JtLWl0ZW0taW5wdXRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncmQtZm9ybS1pdGVtLWlucHV0LW5vLWxhYmVsJzogIWxhYmVsLFxuICAgICAgfVwiXG4gICAgLz5cbiAgICA8ZGl2IGNsYXNzPVwicmQtZm9ybS1pdGVtLWxhYmVsXCIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN5bWJvbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJkLWlucHV0LXN5bWJvbFwiPnt7IHN5bWJvbCB9fTwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJkLWZvcm0taXRlbS1yZC1pbnB1dC1hYnNvbHV0ZVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cInJkLWZvcm0taXRlbS1lcnJvclwiPlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwicmQtZXJyb3ItaWNvbi1saWdodFwiXG4gICAgICB3aWR0aD1cIjE2XCJcbiAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEuMzMzOTggNy45OTg3QzEuMzMzOTggNC4zMTY4IDQuMzE4NzUgMS4zMzIwMyA4LjAwMDY1IDEuMzMyMDNDMTEuNjgyNSAxLjMzMjAzIDE0LjY2NzMgNC4zMTY4IDE0LjY2NzMgNy45OTg3QzE0LjY2NzMgMTEuNjgwNiAxMS42ODI1IDE0LjY2NTQgOC4wMDA2NSAxNC42NjU0QzQuMzE4NzUgMTQuNjY1NCAxLjMzMzk4IDExLjY4MDYgMS4zMzM5OCA3Ljk5ODdaTTguMDAwNjUgMi4zMzIwM0M0Ljg3MTA0IDIuMzMyMDMgMi4zMzM5OCA0Ljg2OTA4IDIuMzMzOTggNy45OTg3QzIuMzMzOTggMTEuMTI4MyA0Ljg3MTA0IDEzLjY2NTQgOC4wMDA2NSAxMy42NjU0QzExLjEzMDMgMTMuNjY1NCAxMy42NjczIDExLjEyODMgMTMuNjY3MyA3Ljk5ODdDMTMuNjY3MyA0Ljg2OTA4IDExLjEzMDMgMi4zMzIwMyA4LjAwMDY1IDIuMzMyMDNaXCJcbiAgICAgICAgZmlsbD1cIiNFQTQ4NURcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk04LjAwMDM5IDQuMDY2NDFDOC4zMzE3NiA0LjA2NjQxIDguNjAwMzkgNC4zMzUwNCA4LjYwMDM5IDQuNjY2NDFWNy45OTk3NEM4LjYwMDM5IDguMzMxMTEgOC4zMzE3NiA4LjU5OTc0IDguMDAwMzkgOC41OTk3NEM3LjY2OTAyIDguNTk5NzQgNy40MDAzOSA4LjMzMTExIDcuNDAwMzkgNy45OTk3NFY0LjY2NjQxQzcuNDAwMzkgNC4zMzUwNCA3LjY2OTAyIDQuMDY2NDEgOC4wMDAzOSA0LjA2NjQxWk04LjAwMDM5IDEwLjM5OTdDOC4zMzE3NiAxMC4zOTk3IDguNjAwMzkgMTAuNjY4NCA4LjYwMDM5IDEwLjk5OTdWMTEuMzMzMUM4LjYwMDM5IDExLjY2NDQgOC4zMzE3NiAxMS45MzMxIDguMDAwMzkgMTEuOTMzMUM3LjY2OTAyIDExLjkzMzEgNy40MDAzOSAxMS42NjQ0IDcuNDAwMzkgMTEuMzMzMVYxMC45OTk3QzcuNDAwMzkgMTAuNjY4NCA3LjY2OTAyIDEwLjM5OTcgOC4wMDAzOSAxMC4zOTk3WlwiXG4gICAgICAgIGZpbGw9XCIjRUE0ODVEXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG5cbiAgICA8c3ZnXG4gICAgICBjbGFzcz1cInJkLWVycm9yLWljb24tZGFya1wiXG4gICAgICB3aWR0aD1cIjE2XCJcbiAgICAgIGhlaWdodD1cIjE2XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTEuMzMzOTggNy45OTg3QzEuMzMzOTggNC4zMTY4IDQuMzE4NzUgMS4zMzIwMyA4LjAwMDY1IDEuMzMyMDNDMTEuNjgyNSAxLjMzMjAzIDE0LjY2NzMgNC4zMTY4IDE0LjY2NzMgNy45OTg3QzE0LjY2NzMgMTEuNjgwNiAxMS42ODI1IDE0LjY2NTQgOC4wMDA2NSAxNC42NjU0QzQuMzE4NzUgMTQuNjY1NCAxLjMzMzk4IDExLjY4MDYgMS4zMzM5OCA3Ljk5ODdaTTguMDAwNjUgMi4zMzIwM0M0Ljg3MTA0IDIuMzMyMDMgMi4zMzM5OCA0Ljg2OTA4IDIuMzMzOTggNy45OTg3QzIuMzMzOTggMTEuMTI4MyA0Ljg3MTA0IDEzLjY2NTQgOC4wMDA2NSAxMy42NjU0QzExLjEzMDMgMTMuNjY1NCAxMy42NjczIDExLjEyODMgMTMuNjY3MyA3Ljk5ODdDMTMuNjY3MyA0Ljg2OTA4IDExLjEzMDMgMi4zMzIwMyA4LjAwMDY1IDIuMzMyMDNaXCJcbiAgICAgICAgZmlsbD1cIiNFRjc0ODRcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgZD1cIk04LjAwMDM5IDQuMDY2NDFDOC4zMzE3NiA0LjA2NjQxIDguNjAwMzkgNC4zMzUwNCA4LjYwMDM5IDQuNjY2NDFWNy45OTk3NEM4LjYwMDM5IDguMzMxMTEgOC4zMzE3NiA4LjU5OTc0IDguMDAwMzkgOC41OTk3NEM3LjY2OTAyIDguNTk5NzQgNy40MDAzOSA4LjMzMTExIDcuNDAwMzkgNy45OTk3NFY0LjY2NjQxQzcuNDAwMzkgNC4zMzUwNCA3LjY2OTAyIDQuMDY2NDEgOC4wMDAzOSA0LjA2NjQxWk04LjAwMDM5IDEwLjM5OTdDOC4zMzE3NiAxMC4zOTk3IDguNjAwMzkgMTAuNjY4NCA4LjYwMDM5IDEwLjk5OTdWMTEuMzMzMUM4LjYwMDM5IDExLjY2NDQgOC4zMzE3NiAxMS45MzMxIDguMDAwMzkgMTEuOTMzMUM3LjY2OTAyIDExLjkzMzEgNy40MDAzOSAxMS42NjQ0IDcuNDAwMzkgMTEuMzMzMVYxMC45OTk3QzcuNDAwMzkgMTAuNjY4NCA3LjY2OTAyIDEwLjM5OTcgOC4wMDAzOSAxMC4zOTk3WlwiXG4gICAgICAgIGZpbGw9XCIjRUY3NDg0XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG5cbiAgICB7eyBjdXJyZW50RXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|