@norwegian/core-components 6.26.0 → 6.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/alert/alert.component.mjs +59 -41
- package/esm2022/lib/components/alert/models/alert.model.mjs +2 -0
- package/esm2022/lib/components/info/info.component.mjs +2 -2
- package/esm2022/lib/components/select/select.component.mjs +4 -2
- package/fesm2022/norwegian-core-components.mjs +63 -43
- package/fesm2022/norwegian-core-components.mjs.map +1 -1
- package/lib/components/alert/alert.component.d.ts +65 -33
- package/lib/components/alert/models/alert.model.d.ts +8 -0
- package/package.json +1 -1
- package/assets/documentation/alert/alert.md +0 -0
|
@@ -25,6 +25,21 @@ export class AlertComponent extends NasComponentBase {
|
|
|
25
25
|
this.showValue = value;
|
|
26
26
|
this.scrollToAlert();
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* @property Input
|
|
30
|
+
* @description
|
|
31
|
+
* Flag for showing/hiding element. Defaults to true.
|
|
32
|
+
*/
|
|
33
|
+
get alert() {
|
|
34
|
+
return this.alertModel;
|
|
35
|
+
}
|
|
36
|
+
set alert(alert) {
|
|
37
|
+
this.alertModel = alert;
|
|
38
|
+
if (alert) {
|
|
39
|
+
this.setAlertValues(alert);
|
|
40
|
+
}
|
|
41
|
+
this.scrollToAlert();
|
|
42
|
+
}
|
|
28
43
|
constructor() {
|
|
29
44
|
super('nas-alert');
|
|
30
45
|
this.showChange = new EventEmitter();
|
|
@@ -42,59 +57,30 @@ export class AlertComponent extends NasComponentBase {
|
|
|
42
57
|
];
|
|
43
58
|
return classes;
|
|
44
59
|
}
|
|
45
|
-
|
|
60
|
+
get modifiers() {
|
|
46
61
|
return [
|
|
47
62
|
this.exists(this.info) && 'info',
|
|
48
63
|
this.exists(this.warning) && 'warning',
|
|
49
64
|
this.exists(this.success) && 'success',
|
|
50
65
|
this.exists(this.error) && 'error',
|
|
66
|
+
this.exists(this.neutral) && 'neutral',
|
|
51
67
|
];
|
|
52
68
|
}
|
|
53
|
-
|
|
54
|
-
const
|
|
69
|
+
getIcon() {
|
|
70
|
+
const iconMap = {
|
|
55
71
|
warning: 'warning',
|
|
56
72
|
success: 'success',
|
|
57
|
-
info: 'info',
|
|
58
73
|
error: 'error',
|
|
74
|
+
neutral: 'info',
|
|
75
|
+
info: 'info'
|
|
59
76
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (classMap[modifier]) {
|
|
64
|
-
return classMap[modifier]; // Return the first existing modifier as the CSS class
|
|
77
|
+
for (const icon of Object.keys(iconMap)) {
|
|
78
|
+
if (this.exists(this[icon])) {
|
|
79
|
+
return iconMap[icon];
|
|
65
80
|
}
|
|
66
81
|
}
|
|
67
|
-
// If none of the modifiers exist, default to 'info'
|
|
68
82
|
return 'info';
|
|
69
83
|
}
|
|
70
|
-
// Determine values based on modifiers and a mapping object
|
|
71
|
-
getValueFromModifiers(modifiers, mapping) {
|
|
72
|
-
for (const modifier of modifiers) {
|
|
73
|
-
if (mapping[modifier]) {
|
|
74
|
-
return mapping[modifier];
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return mapping['info']; // Default value if none of the modifiers exist
|
|
78
|
-
}
|
|
79
|
-
getIconSrc() {
|
|
80
|
-
const iconSrcMap = {
|
|
81
|
-
warning: 'warning',
|
|
82
|
-
success: 'success',
|
|
83
|
-
info: 'info',
|
|
84
|
-
error: 'error',
|
|
85
|
-
};
|
|
86
|
-
// Get the icon source based on modifiers
|
|
87
|
-
return this.getValueFromModifiers(this.getModifiers(), iconSrcMap);
|
|
88
|
-
}
|
|
89
|
-
getIconAlt() {
|
|
90
|
-
const altMap = {
|
|
91
|
-
warning: 'Warning Icon',
|
|
92
|
-
success: 'Success Icon',
|
|
93
|
-
info: 'Info Icon',
|
|
94
|
-
error: 'Error Icon',
|
|
95
|
-
};
|
|
96
|
-
return this.getValueFromModifiers(this.getModifiers(), altMap);
|
|
97
|
-
}
|
|
98
84
|
removeAlertBox() {
|
|
99
85
|
this.show = false;
|
|
100
86
|
this.showChange.emit(this.show);
|
|
@@ -116,17 +102,39 @@ export class AlertComponent extends NasComponentBase {
|
|
|
116
102
|
}
|
|
117
103
|
}, 100);
|
|
118
104
|
}
|
|
105
|
+
setAlertValues(alert) {
|
|
106
|
+
if (alert.title) {
|
|
107
|
+
this.title = alert.title;
|
|
108
|
+
}
|
|
109
|
+
if (alert.text) {
|
|
110
|
+
this.text = alert.text;
|
|
111
|
+
}
|
|
112
|
+
if (alert.timestamp) {
|
|
113
|
+
this.timestamp = alert.timestamp;
|
|
114
|
+
}
|
|
115
|
+
if (alert.server) {
|
|
116
|
+
this.server = alert.server;
|
|
117
|
+
}
|
|
118
|
+
if (alert.removeIcon) {
|
|
119
|
+
this.removeIcon = alert.removeIcon;
|
|
120
|
+
}
|
|
121
|
+
if (alert.correlation) {
|
|
122
|
+
this.correlation = alert.correlation;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
119
125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: AlertComponent, selector: "nas-alert", inputs: { title: "title", info: "info", warning: "warning", error: "error", success: "success", text: "text", show: "show", removable: "removable", trustTextHtml: "trustTextHtml", allowAutoScroll: "allowAutoScroll" }, outputs: { showChange: "showChange" }, viewQueries: [{ propertyName: "alertContainer", first: true, predicate: ["alertContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #alertContainer *ngIf=\"exists(showValue)\" [nasClass]=\"getClasses('
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: AlertComponent, selector: "nas-alert", inputs: { timestamp: "timestamp", title: "title", info: "info", warning: "warning", error: "error", success: "success", neutral: "neutral", text: "text", show: "show", removable: "removable", removeIcon: "removeIcon", trustTextHtml: "trustTextHtml", allowAutoScroll: "allowAutoScroll", server: "server", correlation: "correlation", alert: "alert" }, outputs: { showChange: "showChange" }, viewQueries: [{ propertyName: "alertContainer", first: true, predicate: ["alertContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #alertContainer *ngIf=\"exists(showValue)\" [nasClass]=\"getClasses('', modifiers)\" tabindex=\"0\">\n <div [nasClass]=\"getClass('content')\">\n <nas-icon *ngIf=\"!removeIcon\" [icon]=\"getIcon()\"></nas-icon>\n <div [nasClass]=\"getClass('remove-alert')\" *ngIf=\"exists(removable);\">\n <nas-icon type=\"remove\" (click)=\"removeAlertBox()\"></nas-icon>\n </div>\n <div [nasClass]=\"getClass('text-container')\">\n <div *ngIf=\"exists(title)\" [nasClass]=\"getClass('text')\">{{title}}</div>\n <div [nasClass]=\"getClass('text--internal-info')\">\n <span *ngIf=\"timestamp\">{{timestamp | date:'full'}}</span>\n <span *ngIf=\"server\">{{server}}</span>\n <span *ngIf=\"correlation\">{{correlation}}</span>\n </div>\n <span *ngIf=\"text && !trustTextHtml\" [nasClass]=\"getClass('text--small')\">{{text}}</span>\n <span *ngIf=\"text && trustTextHtml\" [nasClass]=\"getClass('text--small')\" [innerHTML]=\"text\"></span>\n <ng-content></ng-content>\n </div>\n </div>\n</div>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-alert{position:relative;padding:16px 12px;width:100%;height:100%;border:1px solid #15273F;background-color:#ebf4ff}.nas-alert--info{background-color:#ebf4ff;border:1px solid #003251}.nas-alert--info img{width:24px;height:24px}.nas-alert--info:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--success{background-color:#f4faf2;border:1px solid #2EB004}.nas-alert--success img{width:24px;height:24px}.nas-alert--success:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--warning{background-color:#fff6ec;border:1px solid #FC9E12}.nas-alert--warning img{width:24px;height:24px}.nas-alert--warning:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--error{background-color:#fff5f3;border:1px solid #CC3A19}.nas-alert--error img{width:24px;height:24px}.nas-alert--error:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--neutral{background-color:#eaeaea;border:1px solid #15273F}.nas-alert--neutral img{width:24px;height:24px}.nas-alert--neutral:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert__content{display:inline-flex}.nas-alert__remove-alert{position:absolute;right:10px;top:10px;cursor:pointer}.nas-alert__text-container{display:flex;flex-direction:column;margin-left:6px}.nas-alert__text,.nas-alert__text--internal-info,.nas-alert__text--small{color:#15273f;font-size:14px;font-weight:700;line-height:20px;margin-bottom:4px}.nas-alert__text--small{font-weight:400;margin-top:-1px}.nas-alert__text--internal-info{flex-direction:column;display:flex;font-weight:500;font-size:12px;line-height:16px;margin-bottom:4px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i3.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
121
127
|
}
|
|
122
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AlertComponent, decorators: [{
|
|
123
129
|
type: Component,
|
|
124
|
-
args: [{ selector: 'nas-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #alertContainer *ngIf=\"exists(showValue)\" [nasClass]=\"getClasses('
|
|
130
|
+
args: [{ selector: 'nas-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #alertContainer *ngIf=\"exists(showValue)\" [nasClass]=\"getClasses('', modifiers)\" tabindex=\"0\">\n <div [nasClass]=\"getClass('content')\">\n <nas-icon *ngIf=\"!removeIcon\" [icon]=\"getIcon()\"></nas-icon>\n <div [nasClass]=\"getClass('remove-alert')\" *ngIf=\"exists(removable);\">\n <nas-icon type=\"remove\" (click)=\"removeAlertBox()\"></nas-icon>\n </div>\n <div [nasClass]=\"getClass('text-container')\">\n <div *ngIf=\"exists(title)\" [nasClass]=\"getClass('text')\">{{title}}</div>\n <div [nasClass]=\"getClass('text--internal-info')\">\n <span *ngIf=\"timestamp\">{{timestamp | date:'full'}}</span>\n <span *ngIf=\"server\">{{server}}</span>\n <span *ngIf=\"correlation\">{{correlation}}</span>\n </div>\n <span *ngIf=\"text && !trustTextHtml\" [nasClass]=\"getClass('text--small')\">{{text}}</span>\n <span *ngIf=\"text && trustTextHtml\" [nasClass]=\"getClass('text--small')\" [innerHTML]=\"text\"></span>\n <ng-content></ng-content>\n </div>\n </div>\n</div>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-alert{position:relative;padding:16px 12px;width:100%;height:100%;border:1px solid #15273F;background-color:#ebf4ff}.nas-alert--info{background-color:#ebf4ff;border:1px solid #003251}.nas-alert--info img{width:24px;height:24px}.nas-alert--info:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--success{background-color:#f4faf2;border:1px solid #2EB004}.nas-alert--success img{width:24px;height:24px}.nas-alert--success:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--warning{background-color:#fff6ec;border:1px solid #FC9E12}.nas-alert--warning img{width:24px;height:24px}.nas-alert--warning:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--error{background-color:#fff5f3;border:1px solid #CC3A19}.nas-alert--error img{width:24px;height:24px}.nas-alert--error:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert--neutral{background-color:#eaeaea;border:1px solid #15273F}.nas-alert--neutral img{width:24px;height:24px}.nas-alert--neutral:focus-visible{outline:2px solid #0978E8;outline-offset:2px}.nas-alert__content{display:inline-flex}.nas-alert__remove-alert{position:absolute;right:10px;top:10px;cursor:pointer}.nas-alert__text-container{display:flex;flex-direction:column;margin-left:6px}.nas-alert__text,.nas-alert__text--internal-info,.nas-alert__text--small{color:#15273f;font-size:14px;font-weight:700;line-height:20px;margin-bottom:4px}.nas-alert__text--small{font-weight:400;margin-top:-1px}.nas-alert__text--internal-info{flex-direction:column;display:flex;font-weight:500;font-size:12px;line-height:16px;margin-bottom:4px}\n"] }]
|
|
125
131
|
}], ctorParameters: function () { return []; }, propDecorators: { showChange: [{
|
|
126
132
|
type: Output
|
|
127
133
|
}], alertContainer: [{
|
|
128
134
|
type: ViewChild,
|
|
129
135
|
args: ['alertContainer']
|
|
136
|
+
}], timestamp: [{
|
|
137
|
+
type: Input
|
|
130
138
|
}], title: [{
|
|
131
139
|
type: Input
|
|
132
140
|
}], info: [{
|
|
@@ -137,15 +145,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
137
145
|
type: Input
|
|
138
146
|
}], success: [{
|
|
139
147
|
type: Input
|
|
148
|
+
}], neutral: [{
|
|
149
|
+
type: Input
|
|
140
150
|
}], text: [{
|
|
141
151
|
type: Input
|
|
142
152
|
}], show: [{
|
|
143
153
|
type: Input
|
|
144
154
|
}], removable: [{
|
|
145
155
|
type: Input
|
|
156
|
+
}], removeIcon: [{
|
|
157
|
+
type: Input
|
|
146
158
|
}], trustTextHtml: [{
|
|
147
159
|
type: Input
|
|
148
160
|
}], allowAutoScroll: [{
|
|
149
161
|
type: Input
|
|
162
|
+
}], server: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], correlation: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], alert: [{
|
|
167
|
+
type: Input
|
|
150
168
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7QUFHOUM7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxnQkFBZ0I7SUFpRGxEOzs7O09BSUc7SUFDSCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQWM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFxQkQ7UUFDRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFsRlgsZUFBVSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRW5FLGNBQVMsR0FBRyxJQUFJLENBQUM7UUF1RXhCOzs7O1dBSUc7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQUtqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCLEVBQUUsU0FBeUI7UUFDcEQsTUFBTSxPQUFPLEdBQXNCO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztTQUNsQyxD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QVEsQ0FBQzs0QkFDZCxRQUFRLEVBQUUsUUFBUTs0QkFDbEIsSUFBSSxFQUFFLENBQUM7NEJBQ1AsR0FBRyxFQUFFLFNBQVM7eUJBQ2YsQ0FBQyxDQUFDO3FCQUNKO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFVixDQUFDOzhHQWpMVSxjQUFjO2tHQUFkLGNBQWMsMmJDbkIzQix3eEJBa0JBOzsyRkRDYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTswRUFHckMsVUFBVTtzQkFBbkIsTUFBTTtnQkFDc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBZ0JsQixLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFPRixJQUFJO3NCQURQLEtBQUs7Z0JBYUcsU0FBUztzQkFBakIsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIGFsZXJ0IENvbXBvbmVudCB8IERpYWxvZ3MgYW5kIE1vZGFsc1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtYWxlcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBbGVydENvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2Uge1xuICBAT3V0cHV0KCkgc2hvd0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAVmlld0NoaWxkKCdhbGVydENvbnRhaW5lcicpIGFsZXJ0Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBwdWJsaWMgc2hvd1ZhbHVlID0gdHJ1ZTtcblxuICAvKipcbiAqIEB0ZXh0XG4gKiBVc2VkIHRvIGRldGVybWluZSB0aGF0IHlvdSB3YW50IHRvIHNob3cgYW4gZXJyb3JcbiAqXG4gKiBAZXhhbXBsZVxuICogPG5hcy1hbGVydCBlcnJvcj5UcnkgYWdhaW4sIHdlIHdlcmVudCBhYmxlIHRvIGZldGNoLi4uPC9uYXMtYWxlcnQ+XG4gKlxuICovXG4gIC8qKlxuICAgICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEJvb2xlYW4gdG8gZ2l2ZSB0aGUgYWxlcnQgaW5mby5cbiAgICAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgLyoqXG4gICAgICogQHByb3BlcnR5IElucHV0XG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQm9vbGVhbiB0byBnaXZlIHRoZSBhbGVydCBpbmZvLlxuICAgICAqL1xuICBASW5wdXQoKSBpbmZvOiBib29sZWFuO1xuICAvKipcbiAgICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBCb29sZWFuIHRvIGdpdmUgdGhlIGFsZXJ0IGEgd2FybmluZy5cbiAgICAgKi9cbiAgQElucHV0KCkgd2FybmluZzogYm9vbGVhbjtcbiAgLyoqXG4gICAgICogQHByb3BlcnR5IElucHV0XG4gICAgICogQGRlc2NyaXB0aW9uXG4gICAgICogQm9vbGVhbiB0byBnaXZlIHRoZSBhbGVydCBhbiBlcnJvci5cbiAgICAgKi9cbiAgQElucHV0KCkgZXJyb3I6IGJvb2xlYW47XG4gIC8qKlxuICAgICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgICAqIEBkZXNjcmlwdGlvblxuICAgICAqIEJvb2xlYW4gdG8gZ2l2ZSB0aGUgYWxlcnQgYSBzdWNjZXNzLlxuICAgICAqL1xuICBASW5wdXQoKSBzdWNjZXNzOiBib29sZWFuO1xuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHRleHQgb24gdGhlIGFsZXJ0LiBJZiBzZXQgdG8gZmFsc2UgdGhlIGFsZXJ0IHdpbGwgbm90IGRpc3BsYXkgYW55IHRleHQuXG4gICAqL1xuICBASW5wdXQoKSB0ZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEZsYWcgZm9yIHNob3dpbmcvaGlkaW5nIGVsZW1lbnQuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2hvdygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VmFsdWU7XG4gIH1cbiAgc2V0IHNob3codmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc2Nyb2xsVG9BbGVydCgpO1xuICB9XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gZ2l2ZSBvcHBvcnR1bml0eSB0byBjbG9zZSB0aGUgYWxlcnQgYm94XG4gICAqL1xuICBASW5wdXQoKSByZW1vdmFibGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdldCBvciBzZXRzIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRleHQgc2hvdWxkIGJlIHRydXN0ZWQgYXMgSFRNTC4gRGVmYXVsdHMgdG8gZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpIHRydXN0VGV4dEh0bWw6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEZsYWcgZm9yIGFsbG93aW5nIGF1dG9zY3JvbGwgdG8gdG9wIHdoZW4gc2hvd2luZy4gRGVmYXVsdCBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93QXV0b1Njcm9sbCA9IGZhbHNlO1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ25hcy1hbGVydCcpO1xuICB9XG5cbiAgZ2V0Q2xhc3NlcyhlbGVtZW50Pzogc3RyaW5nLCBtb2RpZmllcnM/OiBBcnJheTxzdHJpbmc+KTogQXJyYXk8Q2xhc3NNb2RlbD4ge1xuICAgIGNvbnN0IGNsYXNzZXM6IEFycmF5PENsYXNzTW9kZWw+ID0gW1xuICAgICAgdGhpcy5nZXRDbGFzcyhlbGVtZW50LCBtb2RpZmllcnMpXG4gICAgXTtcbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIGdldE1vZGlmaWVycygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5leGlzdHModGhpcy5pbmZvKSAmJiAnaW5mbycsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLndhcm5pbmcpICYmICd3YXJuaW5nJyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMuc3VjY2VzcykgJiYgJ3N1Y2Nlc3MnLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5lcnJvcikgJiYgJ2Vycm9yJyxcbiAgICBdO1xuICB9XG5cbiAgZ2V0QWxlcnRDbGFzcygpIHtcbiAgICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICAgIHdhcm5pbmc6ICd3YXJuaW5nJyxcbiAgICAgIHN1Y2Nlc3M6ICdzdWNjZXNzJyxcbiAgICAgIGluZm86ICdpbmZvJyxcbiAgICAgIGVycm9yOiAnZXJyb3InLFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBpZiBhbnkgb2YgdGhlIG1vZGlmaWVycyAoaW5mbywgd2FybmluZywgc3VjY2VzcywgZXJyb3IpIGV4aXN0XG4gICAgY29uc3QgbW9kaWZpZXJzID0gdGhpcy5nZXRNb2RpZmllcnMoKTtcbiAgICBmb3IgKGNvbnN0IG1vZGlmaWVyIG9mIG1vZGlmaWVycykge1xuICAgICAgaWYgKGNsYXNzTWFwW21vZGlmaWVyXSkge1xuICAgICAgICByZXR1cm4gY2xhc3NNYXBbbW9kaWZpZXJdIGFzIHN0cmluZzsgLy8gUmV0dXJuIHRoZSBmaXJzdCBleGlzdGluZyBtb2RpZmllciBhcyB0aGUgQ1NTIGNsYXNzXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgbW9kaWZpZXJzIGV4aXN0LCBkZWZhdWx0IHRvICdpbmZvJ1xuICAgIHJldHVybiAnaW5mbyc7XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgdmFsdWVzIGJhc2VkIG9uIG1vZGlmaWVycyBhbmQgYSBtYXBwaW5nIG9iamVjdFxuICBwcml2YXRlIGdldFZhbHVlRnJvbU1vZGlmaWVyczxUPihtb2RpZmllcnM6IHN0cmluZ1tdLCBtYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBUPik6IFQge1xuICAgIGZvciAoY29uc3QgbW9kaWZpZXIgb2YgbW9kaWZpZXJzKSB7XG4gICAgICBpZiAobWFwcGluZ1ttb2RpZmllcl0pIHtcbiAgICAgICAgcmV0dXJuIG1hcHBpbmdbbW9kaWZpZXJdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFwcGluZ1snaW5mbyddOyAvLyBEZWZhdWx0IHZhbHVlIGlmIG5vbmUgb2YgdGhlIG1vZGlmaWVycyBleGlzdFxuICB9XG5cbiAgZ2V0SWNvblNyYygpIHtcbiAgICBjb25zdCBpY29uU3JjTWFwID0ge1xuICAgICAgd2FybmluZzogJ3dhcm5pbmcnLFxuICAgICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgICAgaW5mbzogJ2luZm8nLFxuICAgICAgZXJyb3I6ICdlcnJvcicsXG4gICAgfTtcblxuICAgIC8vIEdldCB0aGUgaWNvbiBzb3VyY2UgYmFzZWQgb24gbW9kaWZpZXJzXG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVGcm9tTW9kaWZpZXJzKHRoaXMuZ2V0TW9kaWZpZXJzKCksIGljb25TcmNNYXApO1xuICB9XG5cbiAgZ2V0SWNvbkFsdCgpIHtcbiAgICBjb25zdCBhbHRNYXAgPSB7XG4gICAgICB3YXJuaW5nOiAnV2FybmluZyBJY29uJyxcbiAgICAgIHN1Y2Nlc3M6ICdTdWNjZXNzIEljb24nLFxuICAgICAgaW5mbzogJ0luZm8gSWNvbicsXG4gICAgICBlcnJvcjogJ0Vycm9yIEljb24nLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUZyb21Nb2RpZmllcnModGhpcy5nZXRNb2RpZmllcnMoKSwgYWx0TWFwKTtcbiAgfVxuXG4gIHJlbW92ZUFsZXJ0Qm94KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NoYW5nZS5lbWl0KHRoaXMuc2hvdyk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvQWxlcnQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbGxvd0F1dG9TY3JvbGwgJiYgdGhpcy5zaG93KSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbGVkUGl4ZWxDb3VudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgMDtcbiAgICAgICAgaWYgKHRoaXMuYWxlcnRDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLmFsZXJ0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgIGlmICgodGhpcy50ZXh0IHx8IHRoaXMudGl0bGUpICYmIHNjcm9sbGVkUGl4ZWxDb3VudCA+IG9mZnNldFRvcCkge1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICB0b3A6IG9mZnNldFRvcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKTtcblxuICB9XG59XG4iLCI8ZGl2ICNhbGVydENvbnRhaW5lciAqbmdJZj1cImV4aXN0cyhzaG93VmFsdWUpXCIgW25hc0NsYXNzXT1cImdldENsYXNzZXMoJ2NvbnRhaW5lcicsIGdldE1vZGlmaWVycygpKVwiPlxuICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcyhnZXRBbGVydENsYXNzKCkpXCI+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2NvbnRlbnQnKVwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPG5hcy1pY29uIHR5cGU9XCJzbWFsbFwiIFtpY29uXT1cImdldEljb25TcmMoKVwiPjwvbmFzLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdyZW1vdmUtYWxlcnQnKVwiICpuZ0lmPVwiZXhpc3RzKHJlbW92YWJsZSk7XCI+XG4gICAgICAgIDxuYXMtaWNvbiB0eXBlPVwicmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUFsZXJ0Qm94KClcIj48L25hcy1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnY29udGFpbmVyLXNwYWNlJylcIj5cbiAgICAgICAgPGg0ICpuZ0lmPVwidGl0bGVcIj57e3RpdGxlfX08L2g0PlxuICAgICAgICA8c3BhbiAqbmdJZj1cInRleHQgJiYgIXRydXN0VGV4dEh0bWxcIj57e3RleHR9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0ZXh0ICYmIHRydXN0VGV4dEh0bWxcIiBbaW5uZXJIVE1MXT1cInRleHRcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7QUFJOUM7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxnQkFBZ0I7SUFnRWxEOzs7O09BSUc7SUFDSCxJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQWM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUE0Q0Q7Ozs7T0FJRztJQUNELElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBaUI7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFSDtRQUNFLEtBQUssQ0FB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LElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUNsQztRQUNELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDNUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztTQUN0QztJQUNILENBQUM7OEdBMU5VLGNBQWM7a0dBQWQsY0FBYywrakJDcEIzQixpaUNBa0JNOzsyRkRFTyxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTswRUFJckMsVUFBVTtzQkFBbkIsTUFBTTtnQkFDc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ2xCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBZ0JHLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csT0FBTztzQkFBZixLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFRRixJQUFJO3NCQURQLEtBQUs7Z0JBY0csU0FBUztzQkFBakIsS0FBSztnQkFPSyxVQUFVO3NCQUFsQixLQUFLO2dCQU9DLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csZUFBZTtzQkFBdkIsS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0ssV0FBVztzQkFBbkIsS0FBSztnQkFRRixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2FsZXJ0Lm1vZGVsJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBhbGVydCBDb21wb25lbnQgfCBEaWFsb2dzIGFuZCBNb2RhbHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWFsZXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FsZXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQWxlcnRDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIHtcbiAgcHJpdmF0ZSBhbGVydE1vZGVsOiBBbGVydE1vZGVsO1xuICBAT3V0cHV0KCkgc2hvd0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAVmlld0NoaWxkKCdhbGVydENvbnRhaW5lcicpIGFsZXJ0Q29udGFpbmVyOiBFbGVtZW50UmVmO1xuICBASW5wdXQoKSB0aW1lc3RhbXA6IERhdGU7XG4gIHB1YmxpYyBzaG93VmFsdWUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAdGV4dFxuICAgKiBVc2VkIHRvIGRldGVybWluZSB0aGF0IHlvdSB3YW50IHRvIHNob3cgYW4gZXJyb3JcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1hbGVydCBlcnJvcj5UcnkgYWdhaW4sIHdlIHdlcmVudCBhYmxlIHRvIGZldGNoLi4uPC9uYXMtYWxlcnQ+XG4gICAqXG4gICAqL1xuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIGdpdmUgdGhlIGFsZXJ0IGluZm8uXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gZ2l2ZSB0aGUgYWxlcnQgaW5mby5cbiAgICovXG4gIEBJbnB1dCgpIGluZm86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBnaXZlIHRoZSBhbGVydCBhIHdhcm5pbmcuXG4gICAqL1xuICBASW5wdXQoKSB3YXJuaW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gZ2l2ZSB0aGUgYWxlcnQgYW4gZXJyb3IuXG4gICAqL1xuICBASW5wdXQoKSBlcnJvcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCb29sZWFuIHRvIGdpdmUgdGhlIGFsZXJ0IGEgc3VjY2Vzcy5cbiAgICovXG4gIEBJbnB1dCgpIHN1Y2Nlc3M6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBnaXZlIHRoZSBhbGVydCBhIHN1Y2Nlc3MuXG4gICAqL1xuICBASW5wdXQoKSBuZXV0cmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGV4dCBvbiB0aGUgYWxlcnQuIElmIHNldCB0byBmYWxzZSB0aGUgYWxlcnQgd2lsbCBub3QgZGlzcGxheSBhbnkgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBGbGFnIGZvciBzaG93aW5nL2hpZGluZyBlbGVtZW50LiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNob3coKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1ZhbHVlO1xuICB9XG4gIHNldCBzaG93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnNjcm9sbFRvQWxlcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEJvb2xlYW4gdG8gZ2l2ZSBvcHBvcnR1bml0eSB0byBjbG9zZSB0aGUgYWxlcnQgYm94XG4gICAqL1xuICBASW5wdXQoKSByZW1vdmFibGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQm9vbGVhbiB0byBnaXZlIG9wcG9ydHVuaXR5IHRvIHJlbW92ZSB0aGUgaWNvblxuICAgKi9cbiAgICBASW5wdXQoKSByZW1vdmVJY29uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZXQgb3Igc2V0cyBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0ZXh0IHNob3VsZCBiZSB0cnVzdGVkIGFzIEhUTUwuIERlZmF1bHRzIHRvIGZhbHNlXG4gICAqL1xuICBASW5wdXQoKSB0cnVzdFRleHRIdG1sOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEZsYWcgZm9yIGFsbG93aW5nIGF1dG9zY3JvbGwgdG8gdG9wIHdoZW4gc2hvd2luZy4gRGVmYXVsdCBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgpIGFsbG93QXV0b1Njcm9sbCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIHNlcnZlciBzdHJpbmcgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIHNlcnZlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgY29ycmVsYXRpb24gc3RyaW5nIHZhbHVlXG4gICAqL1xuICAgIEBJbnB1dCgpIGNvcnJlbGF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRmxhZyBmb3Igc2hvd2luZy9oaWRpbmcgZWxlbWVudC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYWxlcnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hbGVydE1vZGVsO1xuICAgIH1cbiAgICBzZXQgYWxlcnQoYWxlcnQ6IEFsZXJ0TW9kZWwpIHtcbiAgICAgIHRoaXMuYWxlcnRNb2RlbCA9IGFsZXJ0O1xuICAgICAgaWYgKGFsZXJ0KSB7XG4gICAgICAgIHRoaXMuc2V0QWxlcnRWYWx1ZXMoYWxlcnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxUb0FsZXJ0KCk7XG4gICAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCduYXMtYWxlcnQnKTtcbiAgfVxuXG4gIGdldENsYXNzZXMoZWxlbWVudD86IHN0cmluZywgbW9kaWZpZXJzPzogQXJyYXk8c3RyaW5nPik6IEFycmF5PENsYXNzTW9kZWw+IHtcbiAgICBjb25zdCBjbGFzc2VzOiBBcnJheTxDbGFzc01vZGVsPiA9IFtcbiAgICAgIHRoaXMuZ2V0Q2xhc3MoZWxlbWVudCwgbW9kaWZpZXJzKVxuICAgIF07XG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBnZXQgbW9kaWZpZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLmluZm8pICYmICdpbmZvJyxcbiAgICAgIHRoaXMuZXhpc3RzKHRoaXMud2FybmluZykgJiYgJ3dhcm5pbmcnLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5zdWNjZXNzKSAmJiAnc3VjY2VzcycsXG4gICAgICB0aGlzLmV4aXN0cyh0aGlzLmVycm9yKSAmJiAnZXJyb3InLFxuICAgICAgdGhpcy5leGlzdHModGhpcy5uZXV0cmFsKSAmJiAnbmV1dHJhbCcsXG4gICAgXTtcbiAgfVxuXG4gIGdldEljb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCBpY29uTWFwID0ge1xuICAgICAgd2FybmluZzogJ3dhcm5pbmcnLFxuICAgICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgICAgZXJyb3I6ICdlcnJvcicsXG4gICAgICBuZXV0cmFsOiAnaW5mbycsXG4gICAgICBpbmZvOiAnaW5mbydcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBpY29uIG9mIE9iamVjdC5rZXlzKGljb25NYXApKSB7XG4gICAgICBpZiAodGhpcy5leGlzdHMoKHRoaXMgYXMgYW55KVtpY29uXSkpIHtcbiAgICAgICAgcmV0dXJuIGljb25NYXBbaWNvbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICdpbmZvJztcbiAgfVxuXG4gIHJlbW92ZUFsZXJ0Qm94KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NoYW5nZS5lbWl0KHRoaXMuc2hvdyk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbFRvQWxlcnQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbGxvd0F1dG9TY3JvbGwgJiYgdGhpcy5zaG93KSB7XG4gICAgICAgIGNvbnN0IHNjcm9sbGVkUGl4ZWxDb3VudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgMDtcbiAgICAgICAgaWYgKHRoaXMuYWxlcnRDb250YWluZXIpIHtcbiAgICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLmFsZXJ0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgIGlmICgodGhpcy50ZXh0IHx8IHRoaXMudGl0bGUpICYmIHNjcm9sbGVkUGl4ZWxDb3VudCA+IG9mZnNldFRvcCkge1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICB0b3A6IG9mZnNldFRvcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWxlcnRWYWx1ZXMoYWxlcnQ6IEFsZXJ0TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoYWxlcnQudGl0bGUpIHtcbiAgICAgIHRoaXMudGl0bGUgPSBhbGVydC50aXRsZTtcbiAgICB9XG4gICAgaWYgKGFsZXJ0LnRleHQpIHtcbiAgICAgIHRoaXMudGV4dCA9IGFsZXJ0LnRleHQ7XG4gICAgfVxuICAgIGlmIChhbGVydC50aW1lc3RhbXApIHtcbiAgICAgIHRoaXMudGltZXN0YW1wID0gYWxlcnQudGltZXN0YW1wO1xuICAgIH1cbiAgICBpZiAoYWxlcnQuc2VydmVyKSB7XG4gICAgICB0aGlzLnNlcnZlciA9IGFsZXJ0LnNlcnZlcjtcbiAgICB9XG4gICAgaWYgKGFsZXJ0LnJlbW92ZUljb24pIHtcbiAgICAgIHRoaXMucmVtb3ZlSWNvbiA9IGFsZXJ0LnJlbW92ZUljb247XG4gICAgfVxuICAgIGlmIChhbGVydC5jb3JyZWxhdGlvbikge1xuICAgICAgdGhpcy5jb3JyZWxhdGlvbiA9IGFsZXJ0LmNvcnJlbGF0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAjYWxlcnRDb250YWluZXIgKm5nSWY9XCJleGlzdHMoc2hvd1ZhbHVlKVwiIFtuYXNDbGFzc109XCJnZXRDbGFzc2VzKCcnLCBtb2RpZmllcnMpXCIgdGFiaW5kZXg9XCIwXCI+XG4gIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdjb250ZW50JylcIj5cbiAgICAgIDxuYXMtaWNvbiAqbmdJZj1cIiFyZW1vdmVJY29uXCIgW2ljb25dPVwiZ2V0SWNvbigpXCI+PC9uYXMtaWNvbj5cbiAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygncmVtb3ZlLWFsZXJ0JylcIiAqbmdJZj1cImV4aXN0cyhyZW1vdmFibGUpO1wiPlxuICAgICAgPG5hcy1pY29uIHR5cGU9XCJyZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlQWxlcnRCb3goKVwiPjwvbmFzLWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3RleHQtY29udGFpbmVyJylcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJleGlzdHModGl0bGUpXCIgW25hc0NsYXNzXT1cImdldENsYXNzKCd0ZXh0JylcIj57e3RpdGxlfX08L2Rpdj5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd0ZXh0LS1pbnRlcm5hbC1pbmZvJylcIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0aW1lc3RhbXBcIj57e3RpbWVzdGFtcCB8IGRhdGU6J2Z1bGwnfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic2VydmVyXCI+e3tzZXJ2ZXJ9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjb3JyZWxhdGlvblwiPnt7Y29ycmVsYXRpb259fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gKm5nSWY9XCJ0ZXh0ICYmICF0cnVzdFRleHRIdG1sXCIgW25hc0NsYXNzXT1cImdldENsYXNzKCd0ZXh0LS1zbWFsbCcpXCI+e3t0ZXh0fX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInRleHQgJiYgdHJ1c3RUZXh0SHRtbFwiIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGV4dC0tc21hbGwnKVwiIFtpbm5lckhUTUxdPVwidGV4dFwiPjwvc3Bhbj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2FsZXJ0L21vZGVscy9hbGVydC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBbGVydE1vZGVsIHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIHRpbWVzdGFtcD86IERhdGU7XG4gICAgc2VydmVyPzogc3RyaW5nO1xuICAgIGNvcnJlbGF0aW9uPzogc3RyaW5nO1xuICAgIHJlbW92ZUljb24/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -82,11 +82,11 @@ export class InfoComponent extends NasComponentBase {
|
|
|
82
82
|
];
|
|
83
83
|
}
|
|
84
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: InfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: InfoComponent, selector: "nas-info", inputs: { info: "info", error: "error", warning: "warning", information: "information", success: "success", outlined: "outlined", stackTraceLabel: "stackTraceLabel", removeIcon: "removeIcon", show: "show", sanitized: "sanitized" }, outputs: { showChange: "showChange" }, viewQueries: [{ propertyName: "infoContainer", first: true, predicate: ["infoContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"exists(show)\" #infoContainer [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getClass('content', modifiers)\">\n <div *ngIf=\"info?.timestamp\" [nasClass]=\"getClass('timestamp')\">\n <small>{{info?.timestamp | date:'full'}}</small>\n <small *ngIf=\"info?.server\"> ({{info?.server}})</small>\n </div>\n <div *ngIf=\"exists(error) || exists(success); else titleTemplate\" [nasClass]=\"getClass('error-title')\">\n <nas-icon *ngIf=\"exists(error)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--error\" type=\"small\"></nas-icon>\n <nas-icon *ngIf=\"exists(success)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--success\" type=\"small\"></nas-icon>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n <ul *ngIf=\"info?.messages?.length > 0\" [nasClass]=\"getListClass('', 'spaceless')\">\n <li *ngFor=\"let message of info?.messages\"> \n <span *ngIf=\"exists(sanitized)\" [innerHTML]=\"message\"></span>\n <span *ngIf=\"!exists(sanitized)\">{{message}}</span>\n </li>\n </ul>\n <div [nasClass]=\"getClass('custom-content')\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"info?.link\">\n <nas-button link [href]=\"info.link.href\">{{info.link.text}}</nas-button>\n </div>\n <div *ngIf=\"info?.stackTrace\" [nasClass]=\"getClass('stack-trace')\">\n <nas-accordion simple [title]=\"stackTraceLabel\">\n {{info?.stackTrace}}\n </nas-accordion>\n </div>\n </div>\n <div [nasClass]=\"getClass('remove-box')\" *ngIf=\"exists(removeIcon);\">\n <nas-icon type=\"remove\" (click)=\"removeInfoBox()\"></nas-icon>\n </div>\n</div>\n\n<ng-template #titleTemplate>\n <h3 [nasClass]=\"getClass('title')\" [innerHTML]=\"info?.title\"></h3>\n</ng-template>\n\n\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-info{perspective:1000px;margin-top:36px;margin-bottom:36px;position:relative}@media (min-width: 1000px){.nas-info{margin-bottom:12px}}.nas-info__remove-box{position:absolute;right:10px;top:10px;cursor:pointer}.nas-info__custom-content{padding-top:16px}.nas-info__content{transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;animation-delay:.3s;padding:16px;background-color:#
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: InfoComponent, selector: "nas-info", inputs: { info: "info", error: "error", warning: "warning", information: "information", success: "success", outlined: "outlined", stackTraceLabel: "stackTraceLabel", removeIcon: "removeIcon", show: "show", sanitized: "sanitized" }, outputs: { showChange: "showChange" }, viewQueries: [{ propertyName: "infoContainer", first: true, predicate: ["infoContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"exists(show)\" #infoContainer [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getClass('content', modifiers)\">\n <div *ngIf=\"info?.timestamp\" [nasClass]=\"getClass('timestamp')\">\n <small>{{info?.timestamp | date:'full'}}</small>\n <small *ngIf=\"info?.server\"> ({{info?.server}})</small>\n </div>\n <div *ngIf=\"exists(error) || exists(success); else titleTemplate\" [nasClass]=\"getClass('error-title')\">\n <nas-icon *ngIf=\"exists(error)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--error\" type=\"small\"></nas-icon>\n <nas-icon *ngIf=\"exists(success)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--success\" type=\"small\"></nas-icon>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n <ul *ngIf=\"info?.messages?.length > 0\" [nasClass]=\"getListClass('', 'spaceless')\">\n <li *ngFor=\"let message of info?.messages\"> \n <span *ngIf=\"exists(sanitized)\" [innerHTML]=\"message\"></span>\n <span *ngIf=\"!exists(sanitized)\">{{message}}</span>\n </li>\n </ul>\n <div [nasClass]=\"getClass('custom-content')\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"info?.link\">\n <nas-button link [href]=\"info.link.href\">{{info.link.text}}</nas-button>\n </div>\n <div *ngIf=\"info?.stackTrace\" [nasClass]=\"getClass('stack-trace')\">\n <nas-accordion simple [title]=\"stackTraceLabel\">\n {{info?.stackTrace}}\n </nas-accordion>\n </div>\n </div>\n <div [nasClass]=\"getClass('remove-box')\" *ngIf=\"exists(removeIcon);\">\n <nas-icon type=\"remove\" (click)=\"removeInfoBox()\"></nas-icon>\n </div>\n</div>\n\n<ng-template #titleTemplate>\n <h3 [nasClass]=\"getClass('title')\" [innerHTML]=\"info?.title\"></h3>\n</ng-template>\n\n\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-info{perspective:1000px;margin-top:36px;margin-bottom:36px;position:relative}@media (min-width: 1000px){.nas-info{margin-bottom:12px}}.nas-info__remove-box{position:absolute;right:10px;top:10px;cursor:pointer}.nas-info__custom-content{padding-top:16px}.nas-info__content{transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;animation-delay:.3s;padding:16px;background-color:#fff}.nas-info__content--information{background-color:#fff}.nas-info__content--warning{background-color:#fff6ec}.nas-info__content--error{background-color:#fff;border:3px solid #E5212D}.nas-info__content--success{background-color:#fff;border:3px solid #238e00}.nas-info__content--outlined{border:3px solid #003251}.nas-info__stack-trace{margin-top:12px;word-break:break-word}.nas-info__error-title{display:flex;margin-bottom:9px}.nas-info__error-title>:first-child{margin-right:12px}.nas-info__timestamp{margin-bottom:12px}.nas-info__error-icon{padding-top:3px}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "component", type: i3.AccordionComponent, selector: "nas-accordion", inputs: ["expanded", "title", "badge", "icon", "simple", "spaced", "small", "inverted", "containerOnToggle", "nopadding", "transparent", "approve", "primary", "warning", "badgeInfo", "badgeSuccess", "badgeWarning", "badgeError", "cssClass", "cssStyle"], outputs: ["toggleChange"] }, { kind: "component", type: i4.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "component", type: i5.ButtonComponent, selector: "nas-button", inputs: ["primary", "secondary", "link", "light", "large", "block", "flex", "compact", "right", "spaceless", "href", "trackingvalue", "canContinueOnDisabled", "disabled", "type", "cssClass", "ariaLabel", "cssStyle", "tabindex", "overrideBaseCssClass", "useRouterLink", "id", "target", "icon", "iconLeft", "buttonlink"], outputs: ["clickChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
86
86
|
}
|
|
87
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: InfoComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
|
-
args: [{ selector: 'nas-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"exists(show)\" #infoContainer [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getClass('content', modifiers)\">\n <div *ngIf=\"info?.timestamp\" [nasClass]=\"getClass('timestamp')\">\n <small>{{info?.timestamp | date:'full'}}</small>\n <small *ngIf=\"info?.server\"> ({{info?.server}})</small>\n </div>\n <div *ngIf=\"exists(error) || exists(success); else titleTemplate\" [nasClass]=\"getClass('error-title')\">\n <nas-icon *ngIf=\"exists(error)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--error\" type=\"small\"></nas-icon>\n <nas-icon *ngIf=\"exists(success)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--success\" type=\"small\"></nas-icon>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n <ul *ngIf=\"info?.messages?.length > 0\" [nasClass]=\"getListClass('', 'spaceless')\">\n <li *ngFor=\"let message of info?.messages\"> \n <span *ngIf=\"exists(sanitized)\" [innerHTML]=\"message\"></span>\n <span *ngIf=\"!exists(sanitized)\">{{message}}</span>\n </li>\n </ul>\n <div [nasClass]=\"getClass('custom-content')\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"info?.link\">\n <nas-button link [href]=\"info.link.href\">{{info.link.text}}</nas-button>\n </div>\n <div *ngIf=\"info?.stackTrace\" [nasClass]=\"getClass('stack-trace')\">\n <nas-accordion simple [title]=\"stackTraceLabel\">\n {{info?.stackTrace}}\n </nas-accordion>\n </div>\n </div>\n <div [nasClass]=\"getClass('remove-box')\" *ngIf=\"exists(removeIcon);\">\n <nas-icon type=\"remove\" (click)=\"removeInfoBox()\"></nas-icon>\n </div>\n</div>\n\n<ng-template #titleTemplate>\n <h3 [nasClass]=\"getClass('title')\" [innerHTML]=\"info?.title\"></h3>\n</ng-template>\n\n\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-info{perspective:1000px;margin-top:36px;margin-bottom:36px;position:relative}@media (min-width: 1000px){.nas-info{margin-bottom:12px}}.nas-info__remove-box{position:absolute;right:10px;top:10px;cursor:pointer}.nas-info__custom-content{padding-top:16px}.nas-info__content{transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;animation-delay:.3s;padding:16px;background-color:#
|
|
89
|
+
args: [{ selector: 'nas-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"exists(show)\" #infoContainer [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getClass('content', modifiers)\">\n <div *ngIf=\"info?.timestamp\" [nasClass]=\"getClass('timestamp')\">\n <small>{{info?.timestamp | date:'full'}}</small>\n <small *ngIf=\"info?.server\"> ({{info?.server}})</small>\n </div>\n <div *ngIf=\"exists(error) || exists(success); else titleTemplate\" [nasClass]=\"getClass('error-title')\">\n <nas-icon *ngIf=\"exists(error)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--error\" type=\"small\"></nas-icon>\n <nas-icon *ngIf=\"exists(success)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--success\" type=\"small\"></nas-icon>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n <ul *ngIf=\"info?.messages?.length > 0\" [nasClass]=\"getListClass('', 'spaceless')\">\n <li *ngFor=\"let message of info?.messages\"> \n <span *ngIf=\"exists(sanitized)\" [innerHTML]=\"message\"></span>\n <span *ngIf=\"!exists(sanitized)\">{{message}}</span>\n </li>\n </ul>\n <div [nasClass]=\"getClass('custom-content')\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"info?.link\">\n <nas-button link [href]=\"info.link.href\">{{info.link.text}}</nas-button>\n </div>\n <div *ngIf=\"info?.stackTrace\" [nasClass]=\"getClass('stack-trace')\">\n <nas-accordion simple [title]=\"stackTraceLabel\">\n {{info?.stackTrace}}\n </nas-accordion>\n </div>\n </div>\n <div [nasClass]=\"getClass('remove-box')\" *ngIf=\"exists(removeIcon);\">\n <nas-icon type=\"remove\" (click)=\"removeInfoBox()\"></nas-icon>\n </div>\n</div>\n\n<ng-template #titleTemplate>\n <h3 [nasClass]=\"getClass('title')\" [innerHTML]=\"info?.title\"></h3>\n</ng-template>\n\n\n", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-info{perspective:1000px;margin-top:36px;margin-bottom:36px;position:relative}@media (min-width: 1000px){.nas-info{margin-bottom:12px}}.nas-info__remove-box{position:absolute;right:10px;top:10px;cursor:pointer}.nas-info__custom-content{padding-top:16px}.nas-info__content{transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:flip-in .55s ease both;animation-delay:.3s;padding:16px;background-color:#fff}.nas-info__content--information{background-color:#fff}.nas-info__content--warning{background-color:#fff6ec}.nas-info__content--error{background-color:#fff;border:3px solid #E5212D}.nas-info__content--success{background-color:#fff;border:3px solid #238e00}.nas-info__content--outlined{border:3px solid #003251}.nas-info__stack-trace{margin-top:12px;word-break:break-word}.nas-info__error-title{display:flex;margin-bottom:9px}.nas-info__error-title>:first-child{margin-right:12px}.nas-info__timestamp{margin-bottom:12px}.nas-info__error-icon{padding-top:3px}\n"] }]
|
|
90
90
|
}], ctorParameters: function () { return []; }, propDecorators: { showChange: [{
|
|
91
91
|
type: Output
|
|
92
92
|
}], infoContainer: [{
|
|
@@ -108,8 +108,10 @@ export class SelectComponent extends NasComponentBase {
|
|
|
108
108
|
}
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
|
-
if (this.selectedValue) {
|
|
111
|
+
if (this.selectedValue && this.selectedValue.value !== this.selectControl.value) {
|
|
112
112
|
this.selectControl.setValue(this.selectedValue.value);
|
|
113
|
+
}
|
|
114
|
+
if (this.selectedValue) {
|
|
113
115
|
this.setSelectedTitle(this.selectedValue);
|
|
114
116
|
}
|
|
115
117
|
}
|
|
@@ -355,4 +357,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
355
357
|
}], keydown: [{
|
|
356
358
|
type: Output
|
|
357
359
|
}], setSelectedAndEmitChange: [] } });
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBRWpCLFNBQVMsRUFHVCxlQUFlLEdBSWhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFFcEUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWY7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBNkluRDs7OztNQUlFO0lBQ0YsSUFDVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBK0I7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFD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R0FRYyxrQkFBa0I7c0JBQXBFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNmLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ1gsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNlLGdCQUFnQjtzQkFBakQsZUFBZTt1QkFBQyxlQUFlO2dCQUNJLGtCQUFrQjtzQkFBckQsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBU3pCLEVBQUU7c0JBQVYsS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFPRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBV0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUssT0FBTztzQkFEakIsS0FBSztnQkEwQkcsYUFBYTtzQkFBckIsS0FBSztnQkFRRixRQUFRO3NCQURYLEtBQUs7Z0JBd0JJLGNBQWM7c0JBQXZCLE1BQU07Z0JBT0csT0FBTztzQkFBaEIsTUFBTTtnQkEwSUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbk1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRncm91cC9vcHRncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMvZGVib3VuY2UuZGVjb3JhdG9yJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gU2VsZWN0IENvbXBvbmVudCB8IEZvcm0gQ29udHJvbHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHNlbGVjdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgbGFiZWxXaWR0aDogbnVtYmVyO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nO1xuICBoYXNDb250ZW50ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0VGl0bGVXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc2VsZWN0VGl0bGVXcmFwcGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdlcnJvck1lc3NhZ2VXcmFwcGVyJykgZXJyb3JNZXNzYWdlV3JhcHBlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Jykgc2VsZWN0OiBFbGVtZW50UmVmPEhUTUxTZWxlY3RFbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZHJlbihPcHRpb25Db21wb25lbnQpIG9wdGlvbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxPcHRpb25Db21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKE9wdGdyb3VwQ29tcG9uZW50KSBvcHRncm91cENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxPcHRncm91cENvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBvcHRpb25zVmFsdWU6IEFycmF5PFNlbGVjdE9wdGlvbk1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgSUQgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50XG4gICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkIGN1c3RvbSBpbmxpbmUgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgaW5saW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGQgY3VzdG9tIGxhYmVsIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBibG9jayBzdHlsaW5nLlxuICAqL1xuICBASW5wdXQoKSBibG9jaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBzcGFjZWxlc3Mgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgc3BhY2VsZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHN0cmV0Y2ggc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgc3RyZXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBjb21wYWN0IHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGNvbXBhY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgc2ltcGxlIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIHNpbXBsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBsaWdodCBzdHlsaW5nLlxuICAqL1xuICBASW5wdXQoKSBsaWdodD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBmaWxsIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGZpbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgZXJyb3Igc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgZXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiBlcnJvciBvY2N1ci4gRXJyb3IgYXR0cmlidXRlIG5lZWQgdG8gYmUgdHJ1ZS5cbiAgKi9cbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgZGlzYWJsZWQgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1ha2VzIHRoZSBzZWxlY3QgY29tcG9uZW50IGF1dG9ncm93LlxuICAqL1xuICBASW5wdXQoKSBhdXRvZ3Jvdz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkIGN1c3RvbSBDU1MgY2xhc3MgdG8gdGhlIHNlbGVjdG9yLlxuICAqL1xuICBASW5wdXQoKSBjc3NDbGFzczogQ2xhc3NNb2RlbDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgc2VsZWN0LlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCByZXF1aWVycyB0aGF0IHRoZSBuYXNGb3JtR3JvdXAgaW5wdXQgaXMgZmlsbGVkLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLXNlbGVjdCBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIidmYXJlQ2xhc3MnXCI+PC9uYXMtc2VsZWN0PlxuICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzIHRoZSBwYXJlbnQncyBmb3JtIGdyb3VwLlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCBpcyByZXF1aWVyZWQgdG8gYmUgZmlsbGVkIGlmIG5hc0Zvcm1Db250cm9sTmFtZSBhZGRlZC5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1zZWxlY3QgW25hc0Zvcm1Hcm91cF09XCJjbGFzc0dyb3VwXCI+PC9uYXMtc2VsZWN0PlxuICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGQgb3B0aW9ucyB0byB0aGUgc2VsZWN0b3IuXG4gICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpOiBBcnJheTxTZWxlY3RPcHRpb25Nb2RlbD4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IEFycmF5PFNlbGVjdE9wdGlvbk1vZGVsPikge1xuICAgIHRoaXMub3B0aW9uc1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLnNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnNbMF07XG5cbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUaXRsZShvcHRpb24pO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlID09PSBvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBvcHRpb247XG4gICAgICB0aGlzLnNlbGVjdENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgZGVmYXVsdCBzZWxlY3RlZCB2YWx1ZS5cbiAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogU2VsZWN0T3B0aW9uTW9kZWw7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyBvciBzZXRzIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkKCk6IFNlbGVjdE9wdGlvbk1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICB9XG4gIHNldCBzZWxlY3RlZChvcHRpb246IFNlbGVjdE9wdGlvbk1vZGVsKSB7XG4gICAgaWYgKCFvcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkVGl0bGUob3B0aW9uKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgPT09IG9wdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvbjtcbiAgICB0aGlzLnNlbGVjdENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgYSBzZWxlY3Rpb24gaXMgZG9uZS5cbiAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RPcHRpb25Nb2RlbD4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnRzIHRoYXQgZmlyZXMgZXZlcnkgdHlwZSBhIGtleWRvd24gZXZlbnQgaGFzIGJlZW4gcHJlc3NlZCBvbiB0aGUgc2VsZWN0IGVsZW1lbnQuXG4gICovXG4gIEBPdXRwdXQoKSBrZXlkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gIHByaXZhdGUgb3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIGNvbXBvbmVudElkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2U6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoJ25hcy1zZWxlY3QnKTtcbiAgICB0aGlzLmNvbXBvbmVudElkID0gbmV4dElkKys7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uQ29tcG9uZW50cyAmJiB0aGlzLm9wdGlvbkNvbXBvbmVudHMubGVuZ3RoID4gMFxuICAgICAgfHwgdGhpcy5vcHRncm91cENvbXBvbmVudHMgJiYgdGhpcy5vcHRncm91cENvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5oYXNDb250ZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9uQ29tcG9uZW50cyAmJiB0aGlzLm9wdGlvbkNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRGaXJzdE9wdGlvblNlbGVjdGVkKHRoaXMub3B0aW9uQ29tcG9uZW50cyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGdyb3VwQ29tcG9uZW50cyAmJiB0aGlzLm9wdGdyb3VwQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdE9wdGdyb3VwQ29tcG9uZW50ID0gdGhpcy5vcHRncm91cENvbXBvbmVudHMuZmlyc3Q7XG5cbiAgICAgIGlmIChmaXJzdE9wdGdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuc2V0Rmlyc3RPcHRpb25TZWxlY3RlZChmaXJzdE9wdGdyb3VwQ29tcG9uZW50Lm9wdGlvbkNvbXBvbmVudHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29udGVudCAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUaXRsZSh0aGlzLm9wdGlvbnNbMF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZFRpdGxlKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U2VsZWN0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYG5hcy1zZWxlY3QtJHt0aGlzLmNvbXBvbmVudElkfWA7XG4gIH1cblxuICBnZXQgc2VsZWN0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pZCA/IHRoaXMuaWQgOiBgbmFzLXNlbGVjdC0ke3RoaXMuY29tcG9uZW50SWR9YDtcbiAgfVxuXG4gIGdldCBlcnJvcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQgPyB0aGlzLmlkICsgJ19fZXJyb3InIDogYG5hcy1zZWxlY3QtJHt0aGlzLmNvbXBvbmVudElkfV9fZXJyb3JgO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0KGV2ZW50OiBhbnksIGtleWRvd24/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKChldmVudCAmJiBldmVudC5rZXkgPT09ICdFbnRlcicpIHx8ICFldmVudCB8fCAhZXZlbnQua2V5KSB7XG4gICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuXG4gICAgICBpZiAoa2V5ZG93bikge1xuICAgICAgICB0aGlzLmtleWRvd24uZW1pdChldmVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZXZlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgudmFsdWUgPT09IHRhcmdldC52YWx1ZSk7XG4gICAgICAgIGlmIChzZWxlY3RlZCAmJiAoIXRoaXMuc2VsZWN0ZWQgfHwgc2VsZWN0ZWQudmFsdWUgIT09IHRoaXMuc2VsZWN0ZWQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEFuZEVtaXRDaGFuZ2Uoc2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbkNvbXBvbmVudHMgJiYgdGhpcy5vcHRpb25Db21wb25lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLm9wdGlvbkNvbXBvbmVudHMuZmluZCh4ID0+IHgub3B0aW9uLnZhbHVlID09PSB0YXJnZXQudmFsdWUpO1xuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgKCF0aGlzLnNlbGVjdGVkIHx8IHNlbGVjdGVkLm9wdGlvbi52YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZC52YWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkQW5kRW1pdENoYW5nZShzZWxlY3RlZC5vcHRpb24pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRncm91cENvbXBvbmVudHMgJiYgdGhpcy5vcHRncm91cENvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm9wdGdyb3VwQ29tcG9uZW50cy5mb3JFYWNoKG9wdGdyb3VwQ29tcG9uZW50ID0+IHtcbiAgICAgICAgICBpZiAob3B0Z3JvdXBDb21wb25lbnQub3B0aW9uQ29tcG9uZW50cykge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBvcHRncm91cENvbXBvbmVudC5vcHRpb25Db21wb25lbnRzLmZpbmQoeCA9PiB4Lm9wdGlvbi52YWx1ZSA9PT0gdGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCAmJiAoIXRoaXMuc2VsZWN0ZWQgfHwgc2VsZWN0ZWQub3B0aW9uLnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkLnZhbHVlKSkge1xuICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkQW5kRW1pdENoYW5nZShzZWxlY3RlZC5vcHRpb24pO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVTaGFkb3codGFyZ2V0LCB0YXJnZXQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGJsdXJTZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gIH1cblxuICBnZXRDbGFzc2VzKCk6IEFycmF5PENsYXNzTW9kZWw+IHtcbiAgICBjb25zdCBjbGFzc2VzOiBBcnJheTxDbGFzc01vZGVsPiA9IFtcbiAgICAgIHRoaXMuZ2V0Q2xhc3MoJycsIFtcbiAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5pbmxpbmUpICYmICdpbmxpbmUnLFxuICAgICAgICB0aGlzLmV4aXN0cyh0aGlzLmJsb2NrKSAmJiAnYmxvY2snLFxuICAgICAgICB0aGlzLmV4aXN0cyh0aGlzLnNwYWNlbGVzcykgJiYgJ3NwYWNlbGVzcycsXG4gICAgICAgIHRoaXMuZXhpc3RzKHRoaXMuc3RyZXRjaCkgJiYgJ3N0cmV0Y2gnLFxuICAgICAgICB0aGlzLmV4aXN0cyh0aGlzLmNvbXBhY3QpICYmICdjb21wYWN0JyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5zaW1wbGUpICYmICdzaW1wbGUnLFxuICAgICAgICB0aGlzLmV4aXN0cyh0aGlzLmxpZ2h0KSAmJiAnbGlnaHQnLFxuICAgICAgICB0aGlzLmV4aXN0cyh0aGlzLmZpbGwpICYmICdmaWxsJyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5lcnJvcikgJiYgJ2Vycm9yJyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5kaXNhYmxlZCkgJiYgJ2Rpc2FibGVkJyxcbiAgICAgICAgdGhpcy5vcGVuICYmICdyb3RhdGUnXG4gICAgICBdKVxuICAgIF07XG5cbiAgICBpZiAodGhpcy5jc3NDbGFzcykge1xuICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuY3NzQ2xhc3MpO1xuICAgIH1cblxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgQERlYm91bmNlKDE1MClcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEFuZEVtaXRDaGFuZ2Uoc2VsZWN0ZWQ6IFNlbGVjdE9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgaWYgKCFzZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkICE9PSBzZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gIH1cblxuICBwcml2YXRlIHNldEZpcnN0T3B0aW9uU2VsZWN0ZWQob3B0aW9uQ29tcG9uZW50czogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD4pOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbkNvbXBvbmVudHMgfHwgb3B0aW9uQ29tcG9uZW50cy5sZW5ndGggPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0T3B0aW9uQ29tcG9uZW50ID0gb3B0aW9uQ29tcG9uZW50cy5maXJzdDtcblxuICAgIGlmIChmaXJzdE9wdGlvbkNvbXBvbmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gZmlyc3RPcHRpb25Db21wb25lbnQub3B0aW9uO1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZFRpdGxlKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTaGFkb3codGFyZ2V0OiBhbnksIHRhcmdldFZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5sYWJlbCB8fCB0aGlzLmJsb2NrIHx8ICF0aGlzLmF1dG9ncm93IHx8ICF0YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZztcblxuICAgIGlmICh0YXJnZXQuc2VsZWN0ZWRPcHRpb25zICYmIHRhcmdldC5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB2YWx1ZSA9IHRhcmdldC5zZWxlY3RlZE9wdGlvbnNbMF0uaW5uZXJIVE1MO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHRhcmdldFZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpO1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0YXJnZXQpO1xuICAgIHNoYWRvdy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgc2hhZG93LnN0eWxlLnRvcCA9ICctMTAwMHB4JztcbiAgICBzaGFkb3cuc3R5bGUubGVmdCA9ICctMTAwMHB4JztcbiAgICBzaGFkb3cuc3R5bGUud2lkdGggPSAnYXV0byc7XG4gICAgc2hhZG93LnN0eWxlLm1heFdpZHRoID0gJ25vbmUnO1xuICAgIHNoYWRvdy5zdHlsZS5mb250U2l6ZSA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyk7XG4gICAgc2hhZG93LnN0eWxlLmZvbnRGYW1pbHkgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtZmFtaWx5Jyk7XG4gICAgc2hhZG93LnN0eWxlLmZvbnRXZWlnaHQgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtd2VpZ2h0Jyk7XG4gICAgc2hhZG93LnN0eWxlLmxldHRlclNwYWNpbmcgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2xldHRlci1zcGFjaW5nJyk7XG4gICAgc2hhZG93LnN0eWxlLnBhZGRpbmdUb3AgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyk7XG4gICAgc2hhZG93LnN0eWxlLnBhZGRpbmdSaWdodCA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1yaWdodCcpO1xuICAgIHNoYWRvdy5zdHlsZS5wYWRkaW5nQm90dG9tID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpO1xuICAgIHNoYWRvdy5zdHlsZS5wYWRkaW5nTGVmdCA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1sZWZ0Jyk7XG4gICAgc2hhZG93LnN0eWxlLmJvcmRlclRvcCA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXRvcCcpO1xuICAgIHNoYWRvdy5zdHlsZS5ib3JkZXJSaWdodCA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLXJpZ2h0Jyk7XG4gICAgc2hhZG93LnN0eWxlLmJvcmRlckJvdHRvbSA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbScpO1xuICAgIHNoYWRvdy5zdHlsZS5ib3JkZXJMZWZ0ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItbGVmdCcpO1xuXG4gICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgb3B0aW9uLnZhbHVlID0gdmFsdWU7XG4gICAgb3B0aW9uLmlubmVySFRNTCA9IHZhbHVlO1xuICAgIHNoYWRvdy5hcHBlbmRDaGlsZChvcHRpb24pO1xuXG4gICAgdGFyZ2V0LnN0eWxlLndpZHRoID0gYCR7c2hhZG93Lm9mZnNldFdpZHRoICsgNn1weGA7XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGVjdGVkVGl0bGUob3B0aW9uOiBTZWxlY3RPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdFRpdGxlV3JhcHBlciA9IHRoaXMuc2VsZWN0VGl0bGVXcmFwcGVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXNlbGVjdFRpdGxlV3JhcHBlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghb3B0aW9uKSB7XG4gICAgICBzZWxlY3RUaXRsZVdyYXBwZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdFRpdGxlID0gb3B0aW9uLnRpdGxlO1xuICAgIHNlbGVjdFRpdGxlV3JhcHBlci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICBzZWxlY3RUaXRsZVdyYXBwZXIuc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuXG4gICAgaWYgKCF0aGlzLnNlbGVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdEVsZW1lbnQgPSB0aGlzLnNlbGVjdC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKCFzZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShzZWxlY3RFbGVtZW50KTtcbiAgICBsZXQgc2VsZWN0UGFkZGluZ0xlZnQgPSAwO1xuICAgIGxldCBzZWxlY3RQYWRkaW5nUmlnaHQgPSAwO1xuICAgIGxldCBzZWxlY3RCb3JkZXJMZWZ0ID0gMDtcbiAgICBsZXQgc2VsZWN0Qm9yZGVyUmlnaHQgPSAwO1xuXG4gICAgaWYgKHNlbGVjdFN0eWxlKSB7XG4gICAgICBzZWxlY3RQYWRkaW5nTGVmdCA9IHBhcnNlSW50KHNlbGVjdFN0eWxlLnBhZGRpbmdMZWZ0LCAxMCk7XG4gICAgICBzZWxlY3RQYWRkaW5nUmlnaHQgPSBwYXJzZUludChzZWxlY3RTdHlsZS5wYWRkaW5nUmlnaHQsIDEwKTtcbiAgICAgIHNlbGVjdEJvcmRlckxlZnQgPSBwYXJzZUludChzZWxlY3RTdHlsZS5ib3JkZXJMZWZ0LCAxMCk7XG4gICAgICBzZWxlY3RCb3JkZXJSaWdodCA9IHBhcnNlSW50KHNlbGVjdFN0eWxlLmJvcmRlclJpZ2h0LCAxMCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0VGl0bGVXcmFwcGVyVGl0bGUgPSBzZWxlY3RUaXRsZVdyYXBwZXIubGFzdEVsZW1lbnRDaGlsZCBhcyBIVE1MRWxlbWVudDtcbiAgICBsZXQgb2Zmc2V0V2lkdGggPSBzZWxlY3RQYWRkaW5nTGVmdCArIHNlbGVjdFBhZGRpbmdSaWdodCArIHNlbGVjdEJvcmRlckxlZnQgKyBzZWxlY3RCb3JkZXJSaWdodDtcblxuICAgIGlmIChzZWxlY3RUaXRsZVdyYXBwZXJUaXRsZSkge1xuICAgICAgb2Zmc2V0V2lkdGggKz0gc2VsZWN0VGl0bGVXcmFwcGVyVGl0bGUub2Zmc2V0V2lkdGg7XG4gICAgICBpZiAodGhpcy5leGlzdHModGhpcy5lcnJvcikgJiYgdGhpcy5lcnJvck1lc3NhZ2VXcmFwcGVyKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEVycm9yV2lkdGggPSBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVycm9yTWVzc2FnZVdyYXBwZXIubmF0aXZlRWxlbWVudCkud2lkdGgsIDEwKTtcbiAgICAgICAgaWYgKHNlbGVjdEVycm9yV2lkdGggPiBvZmZzZXRXaWR0aCkge1xuICAgICAgICAgIG9mZnNldFdpZHRoID0gc2VsZWN0RXJyb3JXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvZmZzZXRXaWR0aCA+IDApIHtcbiAgICAgIHRoaXMubGFiZWxXaWR0aCA9IG9mZnNldFdpZHRoO1xuICAgICAgdGhpcy5jaGFuZ2UuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHNlbGVjdFRpdGxlV3JhcHBlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICB9XG59XG4iLCI8bGFiZWwgZm9yPVwiZ2V0U2VsZWN0SWQoKVwiXG4gICpuZ0lmPVwibGFiZWwgJiYgIWlubGluZVwiPlxuICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJylcIj57e2xhYmVsfX08L3NwYW4+XG48L2xhYmVsPlxuPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3NlcygpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbmFzRm9ybUdyb3VwIHx8ICFuYXNGb3JtQ29udHJvbE5hbWU7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gICAgPHNlbGVjdCAjc2VsZWN0XG4gICAgICBbaWRdPVwic2VsZWN0SWRcIlxuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2VsZWN0J1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZ2V0U2VsZWN0SWQoKVwiXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwibGFiZWxXaWR0aFwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0Q29udHJvbFwiXG4gICAgICAobW91c2Vkb3duKT1cInRvZ2dsZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cInRvZ2dsZVNlbGVjdCgkZXZlbnQsIHRydWUpXCJcbiAgICAgIChibHVyKT1cImJsdXJTZWxlY3QoKVwiXG4gICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0NvbnRlbnRcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24/LnZhbHVlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm9wdGlvbj8udGl0bGVcIj5cbiAgICAgICAgICB7e29wdGlvbj8udGl0bGV9fTwvb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudE9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NlbGVjdD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjcmVhY3RpdmVGb3JtPlxuICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIj5cbiAgICAgIDxzZWxlY3QgI3NlbGVjdFxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hc0Zvcm1Db250cm9sTmFtZVwiXG4gICAgICAgIFtpZF09XCJzZWxlY3RJZFwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInc2VsZWN0J1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJnZXRTZWxlY3RJZCgpXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxhYmVsV2lkdGhcIlxuICAgICAgICAobW91c2Vkb3duKT1cInRvZ2dsZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwidG9nZ2xlU2VsZWN0KCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJibHVyU2VsZWN0KClcIlxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdCgkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzQ29udGVudFwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24/LnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwib3B0aW9uPy50aXRsZVwiPnt7b3B0aW9uPy50aXRsZX19PC9vcHRpb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudE9wdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8cCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2Vycm9yJylcIlxuICAgICNlcnJvck1lc3NhZ2VXcmFwcGVyXG4gICAgKm5nSWY9XCJleGlzdHMoZXJyb3IpICYmIGVycm9yTWVzc2FnZVwiIFtpZF09XCJlcnJvcklkXCI+e3tlcnJvck1lc3NhZ2V9fTwvcD5cbiAgPGRpdiAjc2VsZWN0VGl0bGVXcmFwcGVyXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8c3Bhbj57e3NlbGVjdFRpdGxlfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2NvbnRlbnRPcHRpb25zPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PiJdfQ==
|
|
360
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBRWpCLFNBQVMsRUFHVCxlQUFlLEdBSWhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFFcEUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBRWY7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBNkluRDs7OztNQUlFO0lBQ0YsSUFDVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxPQUFPLENBQUMsS0FBK0I7UUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFD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QUQ2VUo7SUFEQyxRQUFRLENBQUMsR0FBRyxDQUFDOytEQVdiOzJGQXpXVSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSTt3R0FRYyxrQkFBa0I7c0JBQXBFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNmLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBQ1gsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNlLGdCQUFnQjtzQkFBakQsZUFBZTt1QkFBQyxlQUFlO2dCQUNJLGtCQUFrQjtzQkFBckQsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBU3pCLEVBQUU7c0JBQVYsS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLE9BQU87c0JBQWYsS0FBSztnQkFPRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQU9HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBV0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUssT0FBTztzQkFEakIsS0FBSztnQkEwQkcsYUFBYTtzQkFBckIsS0FBSztnQkFRRixRQUFRO3NCQURYLEtBQUs7Z0JBd0JJLGNBQWM7c0JBQXZCLE1BQU07Z0JBT0csT0FBTztzQkFBaEIsTUFBTTtnQkE2SUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQ2xhc3NNb2RlbCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbk1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRncm91cC9vcHRncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMvZGVib3VuY2UuZGVjb3JhdG9yJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gU2VsZWN0IENvbXBvbmVudCB8IEZvcm0gQ29udHJvbHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHNlbGVjdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgbGFiZWxXaWR0aDogbnVtYmVyO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nO1xuICBoYXNDb250ZW50ID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0VGl0bGVXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSkgc2VsZWN0VGl0bGVXcmFwcGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdlcnJvck1lc3NhZ2VXcmFwcGVyJykgZXJyb3JNZXNzYWdlV3JhcHBlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Jykgc2VsZWN0OiBFbGVtZW50UmVmPEhUTUxTZWxlY3RFbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZHJlbihPcHRpb25Db21wb25lbnQpIG9wdGlvbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxPcHRpb25Db21wb25lbnQ+O1xuICBAQ29udGVudENoaWxkcmVuKE9wdGdyb3VwQ29tcG9uZW50KSBvcHRncm91cENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxPcHRncm91cENvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBvcHRpb25zVmFsdWU6IEFycmF5PFNlbGVjdE9wdGlvbk1vZGVsPjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgSUQgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50XG4gICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkIGN1c3RvbSBpbmxpbmUgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgaW5saW5lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGQgY3VzdG9tIGxhYmVsIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBibG9jayBzdHlsaW5nLlxuICAqL1xuICBASW5wdXQoKSBibG9jaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBzcGFjZWxlc3Mgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgc3BhY2VsZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHN0cmV0Y2ggc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgc3RyZXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBjb21wYWN0IHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGNvbXBhY3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgc2ltcGxlIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIHNpbXBsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBsaWdodCBzdHlsaW5nLlxuICAqL1xuICBASW5wdXQoKSBsaWdodD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBmaWxsIHN0eWxpbmcuXG4gICovXG4gIEBJbnB1dCgpIGZpbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgZXJyb3Igc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgZXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiBlcnJvciBvY2N1ci4gRXJyb3IgYXR0cmlidXRlIG5lZWQgdG8gYmUgdHJ1ZS5cbiAgKi9cbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgZGlzYWJsZWQgc3R5bGluZy5cbiAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1ha2VzIHRoZSBzZWxlY3QgY29tcG9uZW50IGF1dG9ncm93LlxuICAqL1xuICBASW5wdXQoKSBhdXRvZ3Jvdz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkIGN1c3RvbSBDU1MgY2xhc3MgdG8gdGhlIHNlbGVjdG9yLlxuICAqL1xuICBASW5wdXQoKSBjc3NDbGFzczogQ2xhc3NNb2RlbDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgc2VsZWN0LlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCByZXF1aWVycyB0aGF0IHRoZSBuYXNGb3JtR3JvdXAgaW5wdXQgaXMgZmlsbGVkLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLXNlbGVjdCBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIidmYXJlQ2xhc3MnXCI+PC9uYXMtc2VsZWN0PlxuICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzIHRoZSBwYXJlbnQncyBmb3JtIGdyb3VwLlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCBpcyByZXF1aWVyZWQgdG8gYmUgZmlsbGVkIGlmIG5hc0Zvcm1Db250cm9sTmFtZSBhZGRlZC5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1zZWxlY3QgW25hc0Zvcm1Hcm91cF09XCJjbGFzc0dyb3VwXCI+PC9uYXMtc2VsZWN0PlxuICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGQgb3B0aW9ucyB0byB0aGUgc2VsZWN0b3IuXG4gICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgb3B0aW9ucygpOiBBcnJheTxTZWxlY3RPcHRpb25Nb2RlbD4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IEFycmF5PFNlbGVjdE9wdGlvbk1vZGVsPikge1xuICAgIHRoaXMub3B0aW9uc1ZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLnNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnNbMF07XG5cbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUaXRsZShvcHRpb24pO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlID09PSBvcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBvcHRpb247XG4gICAgICB0aGlzLnNlbGVjdENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgZGVmYXVsdCBzZWxlY3RlZCB2YWx1ZS5cbiAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRWYWx1ZTogU2VsZWN0T3B0aW9uTW9kZWw7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyBvciBzZXRzIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkKCk6IFNlbGVjdE9wdGlvbk1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlO1xuICB9XG4gIHNldCBzZWxlY3RlZChvcHRpb246IFNlbGVjdE9wdGlvbk1vZGVsKSB7XG4gICAgaWYgKCFvcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNlbGVjdGVkVGl0bGUob3B0aW9uKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgPT09IG9wdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvbjtcbiAgICB0aGlzLnNlbGVjdENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgYSBzZWxlY3Rpb24gaXMgZG9uZS5cbiAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RPcHRpb25Nb2RlbD4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnRzIHRoYXQgZmlyZXMgZXZlcnkgdHlwZSBhIGtleWRvd24gZXZlbnQgaGFzIGJlZW4gcHJlc3NlZCBvbiB0aGUgc2VsZWN0IGVsZW1lbnQuXG4gICovXG4gIEBPdXRwdXQoKSBrZXlkb3duID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gIHByaXZhdGUgb3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIGNvbXBvbmVudElkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2U6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoJ25hcy1zZWxlY3QnKTtcbiAgICB0aGlzLmNvbXBvbmVudElkID0gbmV4dElkKys7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uQ29tcG9uZW50cyAmJiB0aGlzLm9wdGlvbkNvbXBvbmVudHMubGVuZ3RoID4gMFxuICAgICAgfHwgdGhpcy5vcHRncm91cENvbXBvbmVudHMgJiYgdGhpcy5vcHRncm91cENvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5oYXNDb250ZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9uQ29tcG9uZW50cyAmJiB0aGlzLm9wdGlvbkNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRGaXJzdE9wdGlvblNlbGVjdGVkKHRoaXMub3B0aW9uQ29tcG9uZW50cyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGdyb3VwQ29tcG9uZW50cyAmJiB0aGlzLm9wdGdyb3VwQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdE9wdGdyb3VwQ29tcG9uZW50ID0gdGhpcy5vcHRncm91cENvbXBvbmVudHMuZmlyc3Q7XG5cbiAgICAgIGlmIChmaXJzdE9wdGdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuc2V0Rmlyc3RPcHRpb25TZWxlY3RlZChmaXJzdE9wdGdyb3VwQ29tcG9uZW50Lm9wdGlvbkNvbXBvbmVudHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29udGVudCAmJiAhdGhpcy5zZWxlY3RlZFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUaXRsZSh0aGlzLm9wdGlvbnNbMF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlLnZhbHVlICE9PSB0aGlzLnNlbGVjdENvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q29udHJvbC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUudmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUaXRsZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlbGVjdElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBuYXMtc2VsZWN0LSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgZ2V0IHNlbGVjdElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQgPyB0aGlzLmlkIDogYG5hcy1zZWxlY3QtJHt0aGlzLmNvbXBvbmVudElkfWA7XG4gIH1cblxuICBnZXQgZXJyb3JJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkID8gdGhpcy5pZCArICdfX2Vycm9yJyA6IGBuYXMtc2VsZWN0LSR7dGhpcy5jb21wb25lbnRJZH1fX2Vycm9yYDtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdChldmVudDogYW55LCBrZXlkb3duPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICgoZXZlbnQgJiYgZXZlbnQua2V5ID09PSAnRW50ZXInKSB8fCAhZXZlbnQgfHwgIWV2ZW50LmtleSkge1xuICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcblxuICAgICAgaWYgKGtleWRvd24pIHtcbiAgICAgICAgdGhpcy5rZXlkb3duLmVtaXQoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWV2ZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5vcHRpb25zLmZpbmQoeCA9PiB4LnZhbHVlID09PSB0YXJnZXQudmFsdWUpO1xuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgKCF0aGlzLnNlbGVjdGVkIHx8IHNlbGVjdGVkLnZhbHVlICE9PSB0aGlzLnNlbGVjdGVkLnZhbHVlKSkge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRBbmRFbWl0Q2hhbmdlKHNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25Db21wb25lbnRzICYmIHRoaXMub3B0aW9uQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5vcHRpb25Db21wb25lbnRzLmZpbmQoeCA9PiB4Lm9wdGlvbi52YWx1ZSA9PT0gdGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkICYmICghdGhpcy5zZWxlY3RlZCB8fCBzZWxlY3RlZC5vcHRpb24udmFsdWUgIT09IHRoaXMuc2VsZWN0ZWQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEFuZEVtaXRDaGFuZ2Uoc2VsZWN0ZWQub3B0aW9uKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0Z3JvdXBDb21wb25lbnRzICYmIHRoaXMub3B0Z3JvdXBDb21wb25lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5vcHRncm91cENvbXBvbmVudHMuZm9yRWFjaChvcHRncm91cENvbXBvbmVudCA9PiB7XG4gICAgICAgICAgaWYgKG9wdGdyb3VwQ29tcG9uZW50Lm9wdGlvbkNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gb3B0Z3JvdXBDb21wb25lbnQub3B0aW9uQ29tcG9uZW50cy5maW5kKHggPT4geC5vcHRpb24udmFsdWUgPT09IHRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgKCF0aGlzLnNlbGVjdGVkIHx8IHNlbGVjdGVkLm9wdGlvbi52YWx1ZSAhPT0gdGhpcy5zZWxlY3RlZC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEFuZEVtaXRDaGFuZ2Uoc2VsZWN0ZWQub3B0aW9uKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlU2hhZG93KHRhcmdldCwgdGFyZ2V0LnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBibHVyU2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0Q2xhc3NlcygpOiBBcnJheTxDbGFzc01vZGVsPiB7XG4gICAgY29uc3QgY2xhc3NlczogQXJyYXk8Q2xhc3NNb2RlbD4gPSBbXG4gICAgICB0aGlzLmdldENsYXNzKCcnLCBbXG4gICAgICAgIHRoaXMubGFiZWwsXG4gICAgICAgIHRoaXMuZXhpc3RzKHRoaXMuaW5saW5lKSAmJiAnaW5saW5lJyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5ibG9jaykgJiYgJ2Jsb2NrJyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5zcGFjZWxlc3MpICYmICdzcGFjZWxlc3MnLFxuICAgICAgICB0aGlzLmV4aXN0cyh0aGlzLnN0cmV0Y2gpICYmICdzdHJldGNoJyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5jb21wYWN0KSAmJiAnY29tcGFjdCcsXG4gICAgICAgIHRoaXMuZXhpc3RzKHRoaXMuc2ltcGxlKSAmJiAnc2ltcGxlJyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5saWdodCkgJiYgJ2xpZ2h0JyxcbiAgICAgICAgdGhpcy5leGlzdHModGhpcy5maWxsKSAmJiAnZmlsbCcsXG4gICAgICAgIHRoaXMuZXhpc3RzKHRoaXMuZXJyb3IpICYmICdlcnJvcicsXG4gICAgICAgIHRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpICYmICdkaXNhYmxlZCcsXG4gICAgICAgIHRoaXMub3BlbiAmJiAncm90YXRlJ1xuICAgICAgXSlcbiAgICBdO1xuXG4gICAgaWYgKHRoaXMuY3NzQ2xhc3MpIHtcbiAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmNzc0NsYXNzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfVxuXG4gIEBEZWJvdW5jZSgxNTApXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRBbmRFbWl0Q2hhbmdlKHNlbGVjdGVkOiBTZWxlY3RPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgIGlmICghc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChzZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGaXJzdE9wdGlvblNlbGVjdGVkKG9wdGlvbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxPcHRpb25Db21wb25lbnQ+KTogdm9pZCB7XG4gICAgaWYgKCFvcHRpb25Db21wb25lbnRzIHx8IG9wdGlvbkNvbXBvbmVudHMubGVuZ3RoIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdE9wdGlvbkNvbXBvbmVudCA9IG9wdGlvbkNvbXBvbmVudHMuZmlyc3Q7XG5cbiAgICBpZiAoZmlyc3RPcHRpb25Db21wb25lbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IGZpcnN0T3B0aW9uQ29tcG9uZW50Lm9wdGlvbjtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUaXRsZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2hhZG93KHRhcmdldDogYW55LCB0YXJnZXRWYWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubGFiZWwgfHwgdGhpcy5ibG9jayB8fCAhdGhpcy5hdXRvZ3JvdyB8fCAhdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmc7XG5cbiAgICBpZiAodGFyZ2V0LnNlbGVjdGVkT3B0aW9ucyAmJiB0YXJnZXQuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdmFsdWUgPSB0YXJnZXQuc2VsZWN0ZWRPcHRpb25zWzBdLmlubmVySFRNTDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB0YXJnZXRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KTtcbiAgICBzaGFkb3cuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHNoYWRvdy5zdHlsZS50b3AgPSAnLTEwMDBweCc7XG4gICAgc2hhZG93LnN0eWxlLmxlZnQgPSAnLTEwMDBweCc7XG4gICAgc2hhZG93LnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuICAgIHNoYWRvdy5zdHlsZS5tYXhXaWR0aCA9ICdub25lJztcbiAgICBzaGFkb3cuc3R5bGUuZm9udFNpemUgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpO1xuICAgIHNoYWRvdy5zdHlsZS5mb250RmFtaWx5ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LWZhbWlseScpO1xuICAgIHNoYWRvdy5zdHlsZS5mb250V2VpZ2h0ID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXdlaWdodCcpO1xuICAgIHNoYWRvdy5zdHlsZS5sZXR0ZXJTcGFjaW5nID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdsZXR0ZXItc3BhY2luZycpO1xuICAgIHNoYWRvdy5zdHlsZS5wYWRkaW5nVG9wID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpO1xuICAgIHNoYWRvdy5zdHlsZS5wYWRkaW5nUmlnaHQgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctcmlnaHQnKTtcbiAgICBzaGFkb3cuc3R5bGUucGFkZGluZ0JvdHRvbSA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1ib3R0b20nKTtcbiAgICBzaGFkb3cuc3R5bGUucGFkZGluZ0xlZnQgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctbGVmdCcpO1xuICAgIHNoYWRvdy5zdHlsZS5ib3JkZXJUb3AgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci10b3AnKTtcbiAgICBzaGFkb3cuc3R5bGUuYm9yZGVyUmlnaHQgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1yaWdodCcpO1xuICAgIHNoYWRvdy5zdHlsZS5ib3JkZXJCb3R0b20gPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20nKTtcbiAgICBzaGFkb3cuc3R5bGUuYm9yZGVyTGVmdCA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWxlZnQnKTtcblxuICAgIGNvbnN0IG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuICAgIG9wdGlvbi52YWx1ZSA9IHZhbHVlO1xuICAgIG9wdGlvbi5pbm5lckhUTUwgPSB2YWx1ZTtcbiAgICBzaGFkb3cuYXBwZW5kQ2hpbGQob3B0aW9uKTtcblxuICAgIHRhcmdldC5zdHlsZS53aWR0aCA9IGAke3NoYWRvdy5vZmZzZXRXaWR0aCArIDZ9cHhgO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZFRpdGxlKG9wdGlvbjogU2VsZWN0T3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RUaXRsZVdyYXBwZXIgPSB0aGlzLnNlbGVjdFRpdGxlV3JhcHBlci5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKCFzZWxlY3RUaXRsZVdyYXBwZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbikge1xuICAgICAgc2VsZWN0VGl0bGVXcmFwcGVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RUaXRsZSA9IG9wdGlvbi50aXRsZTtcbiAgICBzZWxlY3RUaXRsZVdyYXBwZXIuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgc2VsZWN0VGl0bGVXcmFwcGVyLnN0eWxlLndoaXRlU3BhY2UgPSAnbm93cmFwJztcblxuICAgIGlmICghdGhpcy5zZWxlY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gdGhpcy5zZWxlY3QubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIGlmICghc2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoc2VsZWN0RWxlbWVudCk7XG4gICAgbGV0IHNlbGVjdFBhZGRpbmdMZWZ0ID0gMDtcbiAgICBsZXQgc2VsZWN0UGFkZGluZ1JpZ2h0ID0gMDtcbiAgICBsZXQgc2VsZWN0Qm9yZGVyTGVmdCA9IDA7XG4gICAgbGV0IHNlbGVjdEJvcmRlclJpZ2h0ID0gMDtcblxuICAgIGlmIChzZWxlY3RTdHlsZSkge1xuICAgICAgc2VsZWN0UGFkZGluZ0xlZnQgPSBwYXJzZUludChzZWxlY3RTdHlsZS5wYWRkaW5nTGVmdCwgMTApO1xuICAgICAgc2VsZWN0UGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQoc2VsZWN0U3R5bGUucGFkZGluZ1JpZ2h0LCAxMCk7XG4gICAgICBzZWxlY3RCb3JkZXJMZWZ0ID0gcGFyc2VJbnQoc2VsZWN0U3R5bGUuYm9yZGVyTGVmdCwgMTApO1xuICAgICAgc2VsZWN0Qm9yZGVyUmlnaHQgPSBwYXJzZUludChzZWxlY3RTdHlsZS5ib3JkZXJSaWdodCwgMTApO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdFRpdGxlV3JhcHBlclRpdGxlID0gc2VsZWN0VGl0bGVXcmFwcGVyLmxhc3RFbGVtZW50Q2hpbGQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgbGV0IG9mZnNldFdpZHRoID0gc2VsZWN0UGFkZGluZ0xlZnQgKyBzZWxlY3RQYWRkaW5nUmlnaHQgKyBzZWxlY3RCb3JkZXJMZWZ0ICsgc2VsZWN0Qm9yZGVyUmlnaHQ7XG5cbiAgICBpZiAoc2VsZWN0VGl0bGVXcmFwcGVyVGl0bGUpIHtcbiAgICAgIG9mZnNldFdpZHRoICs9IHNlbGVjdFRpdGxlV3JhcHBlclRpdGxlLm9mZnNldFdpZHRoO1xuICAgICAgaWYgKHRoaXMuZXhpc3RzKHRoaXMuZXJyb3IpICYmIHRoaXMuZXJyb3JNZXNzYWdlV3JhcHBlcikge1xuICAgICAgICBjb25zdCBzZWxlY3RFcnJvcldpZHRoID0gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lcnJvck1lc3NhZ2VXcmFwcGVyLm5hdGl2ZUVsZW1lbnQpLndpZHRoLCAxMCk7XG4gICAgICAgIGlmIChzZWxlY3RFcnJvcldpZHRoID4gb2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICBvZmZzZXRXaWR0aCA9IHNlbGVjdEVycm9yV2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICB0aGlzLmxhYmVsV2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICAgIHRoaXMuY2hhbmdlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBzZWxlY3RUaXRsZVdyYXBwZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgfVxufVxuIiwiPGxhYmVsIGZvcj1cImdldFNlbGVjdElkKClcIlxuICAqbmdJZj1cImxhYmVsICYmICFpbmxpbmVcIj5cbiAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcpXCI+e3tsYWJlbH19PC9zcGFuPlxuPC9sYWJlbD5cbjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzZXMoKVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW5hc0Zvcm1Hcm91cCB8fCAhbmFzRm9ybUNvbnRyb2xOYW1lOyBlbHNlIHJlYWN0aXZlRm9ybVwiPlxuICAgIDxzZWxlY3QgI3NlbGVjdFxuICAgICAgW2lkXT1cInNlbGVjdElkXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NlbGVjdCdcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImdldFNlbGVjdElkKClcIlxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxhYmVsV2lkdGhcIlxuICAgICAgW2Zvcm1Db250cm9sXT1cInNlbGVjdENvbnRyb2xcIlxuICAgICAgKG1vdXNlZG93bik9XCJ0b2dnbGVTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bik9XCJ0b2dnbGVTZWxlY3QoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAoYmx1cik9XCJibHVyU2VsZWN0KClcIlxuICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNDb250ZW50XCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uPy52YWx1ZVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJvcHRpb24/LnRpdGxlXCI+XG4gICAgICAgICAge3tvcHRpb24/LnRpdGxlfX08L29wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRPcHRpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9zZWxlY3Q+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3JlYWN0aXZlRm9ybT5cbiAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwibmFzRm9ybUdyb3VwXCI+XG4gICAgICA8c2VsZWN0ICNzZWxlY3RcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE5hbWVcIlxuICAgICAgICBbaWRdPVwic2VsZWN0SWRcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NlbGVjdCdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZ2V0U2VsZWN0SWQoKVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJsYWJlbFdpZHRoXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJ0b2dnbGVTZWxlY3QoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cInRvZ2dsZVNlbGVjdCgkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiYmx1clNlbGVjdCgpXCJcbiAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhhc0NvbnRlbnRcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uPy52YWx1ZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm9wdGlvbj8udGl0bGVcIj57e29wdGlvbj8udGl0bGV9fTwvb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRPcHRpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHAgW25hc0NsYXNzXT1cImdldENsYXNzKCdlcnJvcicpXCJcbiAgICAjZXJyb3JNZXNzYWdlV3JhcHBlclxuICAgICpuZ0lmPVwiZXhpc3RzKGVycm9yKSAmJiBlcnJvck1lc3NhZ2VcIiBbaWRdPVwiZXJyb3JJZFwiPnt7ZXJyb3JNZXNzYWdlfX08L3A+XG4gIDxkaXYgI3NlbGVjdFRpdGxlV3JhcHBlclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIidub25lJ1wiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHNwYW4+e3tzZWxlY3RUaXRsZX19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNjb250ZW50T3B0aW9ucz5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj4iXX0=
|