cps-ui-kit 17.33.0 → 17.35.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/cps-button-toggle/cps-button-toggle.component.mjs +1 -1
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +31 -4
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +1 -1
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +1 -1
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +2 -2
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +37 -19
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +8 -6
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +8 -6
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +19 -6
- package/fesm2022/cps-ui-kit.mjs +101 -40
- package/fesm2022/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-file-upload/cps-file-upload.component.d.ts +15 -2
- package/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.d.ts +8 -1
- package/lib/components/cps-table/cps-table.component.d.ts +9 -3
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +10 -4
- package/lib/directives/cps-tooltip/cps-tooltip.directive.d.ts +6 -1
- package/package.json +1 -1
|
@@ -50,6 +50,11 @@ export class CpsTooltipDirective {
|
|
|
50
50
|
* @group Props
|
|
51
51
|
*/
|
|
52
52
|
this.tooltipContentClass = 'cps-tooltip-content';
|
|
53
|
+
/**
|
|
54
|
+
* Tooltip offset for styling.
|
|
55
|
+
* @group Props
|
|
56
|
+
*/
|
|
57
|
+
this.tooltipOffset = 8;
|
|
53
58
|
this._createTooltip = () => {
|
|
54
59
|
if (this._popup)
|
|
55
60
|
return;
|
|
@@ -136,18 +141,21 @@ export class CpsTooltipDirective {
|
|
|
136
141
|
left: targetElRect.left +
|
|
137
142
|
this.window.scrollX +
|
|
138
143
|
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
139
|
-
top: targetElRect.bottom + this.window.scrollY +
|
|
144
|
+
top: targetElRect.bottom + this.window.scrollY + this.tooltipOffset
|
|
140
145
|
};
|
|
141
146
|
case 'left':
|
|
142
147
|
return {
|
|
143
|
-
left: targetElRect.left -
|
|
148
|
+
left: targetElRect.left -
|
|
149
|
+
this.window.scrollX -
|
|
150
|
+
popupRect.width -
|
|
151
|
+
this.tooltipOffset,
|
|
144
152
|
top: targetElRect.top +
|
|
145
153
|
this.window.scrollY +
|
|
146
154
|
(targetEl.offsetHeight - popupRect.height) / 2
|
|
147
155
|
};
|
|
148
156
|
case 'right':
|
|
149
157
|
return {
|
|
150
|
-
left: targetElRect.right + this.window.scrollX +
|
|
158
|
+
left: targetElRect.right + this.window.scrollX + this.tooltipOffset,
|
|
151
159
|
top: targetElRect.top +
|
|
152
160
|
this.window.scrollY +
|
|
153
161
|
(targetEl.offsetHeight - popupRect.height) / 2
|
|
@@ -157,7 +165,10 @@ export class CpsTooltipDirective {
|
|
|
157
165
|
left: targetElRect.left +
|
|
158
166
|
this.window.scrollX +
|
|
159
167
|
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
160
|
-
top: targetElRect.top +
|
|
168
|
+
top: targetElRect.top +
|
|
169
|
+
this.window.scrollY -
|
|
170
|
+
popupRect.height -
|
|
171
|
+
this.tooltipOffset
|
|
161
172
|
};
|
|
162
173
|
}
|
|
163
174
|
}
|
|
@@ -207,7 +218,7 @@ export class CpsTooltipDirective {
|
|
|
207
218
|
this._destroyTooltip(event);
|
|
208
219
|
}
|
|
209
220
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTooltipDirective, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
210
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTooltipDirective, isStandalone: true, selector: "[cpsTooltip]", inputs: { tooltip: ["cpsTooltip", "tooltip"], tooltipOpenDelay: "tooltipOpenDelay", tooltipCloseDelay: "tooltipCloseDelay", tooltipOpenOn: "tooltipOpenOn", tooltipPosition: "tooltipPosition", tooltipPersistent: "tooltipPersistent", tooltipDisabled: "tooltipDisabled", tooltipMaxWidth: "tooltipMaxWidth", tooltipContentClass: "tooltipContentClass" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()", "click": "onClick()", "document:click": "onDocumentClick($event.target)", "window:resize": "onPageResize($event)" } }, ngImport: i0 }); }
|
|
221
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CpsTooltipDirective, isStandalone: true, selector: "[cpsTooltip]", inputs: { tooltip: ["cpsTooltip", "tooltip"], tooltipOpenDelay: "tooltipOpenDelay", tooltipCloseDelay: "tooltipCloseDelay", tooltipOpenOn: "tooltipOpenOn", tooltipPosition: "tooltipPosition", tooltipPersistent: "tooltipPersistent", tooltipDisabled: "tooltipDisabled", tooltipMaxWidth: "tooltipMaxWidth", tooltipContentClass: "tooltipContentClass", tooltipOffset: "tooltipOffset" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()", "click": "onClick()", "document:click": "onDocumentClick($event.target)", "window:resize": "onPageResize($event)" } }, ngImport: i0 }); }
|
|
211
222
|
}
|
|
212
223
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CpsTooltipDirective, decorators: [{
|
|
213
224
|
type: Directive,
|
|
@@ -237,6 +248,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
237
248
|
type: Input
|
|
238
249
|
}], tooltipContentClass: [{
|
|
239
250
|
type: Input
|
|
251
|
+
}], tooltipOffset: [{
|
|
252
|
+
type: Input
|
|
240
253
|
}], onMouseEnter: [{
|
|
241
254
|
type: HostListener,
|
|
242
255
|
args: ['mouseenter']
|
|
@@ -259,4 +272,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
259
272
|
type: HostListener,
|
|
260
273
|
args: ['window:resize', ['$event']]
|
|
261
274
|
}] } });
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAvY3BzLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFjM0M7OztHQUdHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjtJQTZEOUIsWUFDVSxXQUFvQyxFQUNsQixRQUFrQjtRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXhEOUM7OztXQUdHO1FBQ00scUJBQWdCLEdBQW9CLEdBQUcsQ0FBQztRQUVqRDs7O1dBR0c7UUFDTSxzQkFBaUIsR0FBb0IsR0FBRyxDQUFDO1FBRWxEOzs7V0FHRztRQUNNLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSxvQkFBZSxHQUF1QixLQUFLLENBQUM7UUFFckQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRW5DOzs7V0FHRztRQUNNLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRWpDOzs7V0FHRztRQUNNLG9CQUFlLEdBQW9CLE1BQU0sQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSx3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQW1CN0MsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXhCLElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTztZQUVq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UUFDbEUsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0ExUlUsbUJBQW1CLDRDQStEcEIsUUFBUTtrR0EvRFAsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQWdFSSxNQUFNOzJCQUFDLFFBQVE7eUNBMURHLE9BQU87c0JBQTNCLEtBQUs7dUJBQUMsWUFBWTtnQkFNVixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFtS3NCLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWTtnQkFXRSxZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBV0gsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPO2dCQVdDLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTTtnQkFVRyxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBU3JCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFhTixZQUFZO3NCQUF0RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIENwc1Rvb2x0aXBQb3NpdGlvbiBpcyB1c2VkIHRvIGRlZmluZSB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAuXG4gKiBAZ3JvdXAgVHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ3BzVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG5cbi8qKlxuICogQ3BzVG9vbHRpcE9wZW5PbiBpcyB1c2VkIHRvIGRlZmluZSB0aGUgZXZlbnQgb24gd2hpY2ggdGhlIHRvb2x0aXAgc2hvdWxkIG9wZW4uXG4gKiBAZ3JvdXAgVHlwZXNcbiAqL1xuZXhwb3J0IHR5cGUgQ3BzVG9vbHRpcE9wZW5PbiA9ICdob3ZlcicgfCAnY2xpY2snIHwgJ2ZvY3VzJztcblxuLyoqXG4gKiBDcHNUb29sdGlwRGlyZWN0aXZlIHByb3ZpZGVzIGFkdmlzb3J5IGluZm9ybWF0aW9uIGZvciBhIHRhcmdldCBlbGVtZW50LlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nwc1Rvb2x0aXBdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDcHNUb29sdGlwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCBvciBodG1sIHRvIHNob3cuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCdjcHNUb29sdGlwJykgdG9vbHRpcCE6IHN0cmluZztcblxuICAvKipcbiAgICogRGVsYXkgdG8gc2hvdyB0aGUgdG9vbHRpcCBpbiBtaWxsaXNlY29uZHMsIGl0IGNhbiBiZSBvZiB0eXBlIHN0cmluZyBvciBudW1iZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE9wZW5EZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBEZWxheSB0byBoaWRlIHRoZSB0b29sdGlwIGluIG1pbGxpc2Vjb25kcywgaXQgY2FuIGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ2xvc2VEZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgc2hvdWxkIG9wZW4gb24gaG92ZXIsIGNsaWNrIG9yIGZvY3VzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBPcGVuT246IENwc1Rvb2x0aXBPcGVuT24gPSAnaG92ZXInO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCwgaXQgY2FuIGJlICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnIG9yICdyaWdodCcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgdG9vbHRpcCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcERpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE1heCB3aWR0aCBvZiB0aGUgdG9vbHRpcCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIGNvbnRlbnQgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcENvbnRlbnRDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICBwcml2YXRlIF9wb3B1cD86IEhUTUxEaXZFbGVtZW50O1xuICBwcml2YXRlIF9zaG93VGltZW91dD86IGFueTtcbiAgcHJpdmF0ZSBfaGlkZVRpbWVvdXQ/OiBhbnk7XG5cbiAgcHJpdmF0ZSB3aW5kb3c6IFdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHtcbiAgICB0aGlzLndpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcgYXMgV2luZG93O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVRvb2x0aXAgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuX3BvcHVwKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9jb25zdHJ1Y3RFbGVtZW50KHRoaXMuX3BvcHVwKTtcblxuICAgIGlmICh0aGlzLnRvb2x0aXBQZXJzaXN0ZW50KVxuICAgICAgdGhpcy5fcG9wdXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9kZXN0cm95VG9vbHRpcCk7XG5cbiAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9kZXN0cm95VG9vbHRpcCwgdHJ1ZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfZGVzdHJveVRvb2x0aXAgPSAoZXZlbnQ6IGFueSA9IHVuZGVmaW5lZCkgPT4ge1xuICAgIGNvbnN0IHJlbW92ZUZyb21ET00gPSAoKSA9PiB7XG4gICAgICB0aGlzLl9wb3B1cD8ucmVtb3ZlKCk7XG4gICAgICB0aGlzLl9wb3B1cCA9IHVuZGVmaW5lZDtcbiAgICB9O1xuXG4gICAgdGhpcy53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fZGVzdHJveVRvb2x0aXAsIHRydWUpO1xuICAgIGlmICghdGhpcy5fcG9wdXApIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fZGVzdHJveVRvb2x0aXApO1xuXG4gICAgY29uc3Qgbm9BbmltYXRpb24gPSBbJ3Njcm9sbCcsICdyZXNpemUnXS5pbmNsdWRlcyhldmVudD8udHlwZSk7XG5cbiAgICBpZiAobm9BbmltYXRpb24pIHtcbiAgICAgIHJlbW92ZUZyb21ET00oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9wdXA6IEhUTUxEaXZFbGVtZW50ID0gdGhpcy5fcG9wdXA7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBwb3B1cC5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgICAgfSk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZW1vdmVGcm9tRE9NKCk7XG4gICAgICB9LCAyMDApO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9jb25zdHJ1Y3RFbGVtZW50KHBvcHVwOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGNvbnN0IHBvcHVwQ29udGVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcG9wdXBDb250ZW50LmlubmVySFRNTCA9IHRoaXMudG9vbHRpcCB8fCAnQWRkIHlvdXIgdGV4dCB0byB0aGlzIHRvb2x0aXAnO1xuICAgIHBvcHVwQ29udGVudC5jbGFzc0xpc3QuYWRkKHRoaXMudG9vbHRpcENvbnRlbnRDbGFzcyk7XG4gICAgcG9wdXAuYXBwZW5kQ2hpbGQocG9wdXBDb250ZW50KTtcblxuICAgIHBvcHVwLmNsYXNzTGlzdC5hZGQoJ2Nwcy10b29sdGlwJyk7XG4gICAgcG9wdXAuc3R5bGUubWF4V2lkdGggPSBjb252ZXJ0U2l6ZSh0aGlzLnRvb2x0aXBNYXhXaWR0aCk7XG5cbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocG9wdXApO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICBwb3B1cC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzKCk7XG4gICAgaWYgKCFjb29yZHMpIHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBlbm91Z2ggc3BhY2Ugb24gdGhlIHNjcmVlbiBmb3IgdGhlIHRvb2x0aXAhJyk7XG4gICAgfVxuXG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGNvb3Jkcy5sZWZ0LnRvU3RyaW5nKCkgKyAncHgnO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGNvb3Jkcy50b3AudG9TdHJpbmcoKSArICdweCc7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb29yZHMoKTogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzSW5zaWRlU2NyZWVuID0gKGNvb3JkczogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0pOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNvb3Jkcy50b3AgPj0gMCAmJlxuICAgICAgICBjb29yZHMubGVmdCA+PSAwICYmXG4gICAgICAgIGNvb3Jkcy5sZWZ0ICsgcG9wdXBSZWN0LndpZHRoIDw9IHRoaXMud2luZG93LmlubmVyV2lkdGggJiZcbiAgICAgICAgY29vcmRzLnRvcCArIHBvcHVwUmVjdC5oZWlnaHQgPD0gdGhpcy53aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGxldCBwb3NpdGlvbnM6IENwc1Rvb2x0aXBQb3NpdGlvbltdID0gWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXTtcbiAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG4gICAgcG9zaXRpb25zLnVuc2hpZnQodGhpcy50b29sdGlwUG9zaXRpb24pO1xuXG4gICAgY29uc3QgdGFyZ2V0RWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGFyZ2V0RWxSZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wdXBSZWN0ID0gKHRoaXMuX3BvcHVwIGFzIEhUTUxEaXZFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGZvciAoY29uc3QgcG9zIG9mIHBvc2l0aW9ucykge1xuICAgICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgICAgIHBvcyBhcyBDcHNUb29sdGlwUG9zaXRpb24sXG4gICAgICAgIHRhcmdldEVsLFxuICAgICAgICB0YXJnZXRFbFJlY3QsXG4gICAgICAgIHBvcHVwUmVjdFxuICAgICAgKTtcblxuICAgICAgaWYgKGlzSW5zaWRlU2NyZWVuKGNvb3JkcykpIHtcbiAgICAgICAgcmV0dXJuIGNvb3JkcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgcG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbixcbiAgICB0YXJnZXRFbDogSFRNTEVsZW1lbnQsXG4gICAgdGFyZ2V0RWxSZWN0OiBET01SZWN0LFxuICAgIHBvcHVwUmVjdDogRE9NUmVjdFxuICApOiB7XG4gICAgbGVmdDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICB9IHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QubGVmdCArXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5zY3JvbGxYICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRXaWR0aCAtIHBvcHVwUmVjdC53aWR0aCkgLyAyLFxuICAgICAgICAgIHRvcDogdGFyZ2V0RWxSZWN0LmJvdHRvbSArIHRoaXMud2luZG93LnNjcm9sbFkgKyA4XG4gICAgICAgIH07XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWZ0OiB0YXJnZXRFbFJlY3QubGVmdCAtIHRoaXMud2luZG93LnNjcm9sbFggLSBwb3B1cFJlY3Qud2lkdGggLSA4LFxuICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC50b3AgK1xuICAgICAgICAgICAgdGhpcy53aW5kb3cuc2Nyb2xsWSArXG4gICAgICAgICAgICAodGFyZ2V0RWwub2Zmc2V0SGVpZ2h0IC0gcG9wdXBSZWN0LmhlaWdodCkgLyAyXG4gICAgICAgIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDogdGFyZ2V0RWxSZWN0LnJpZ2h0ICsgdGhpcy53aW5kb3cuc2Nyb2xsWCArIDgsXG4gICAgICAgICAgdG9wOlxuICAgICAgICAgICAgdGFyZ2V0RWxSZWN0LnRvcCArXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRIZWlnaHQgLSBwb3B1cFJlY3QuaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0ICtcbiAgICAgICAgICAgIHRoaXMud2luZG93LnNjcm9sbFggK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldFdpZHRoIC0gcG9wdXBSZWN0LndpZHRoKSAvIDIsXG4gICAgICAgICAgdG9wOiB0YXJnZXRFbFJlY3QudG9wICsgdGhpcy53aW5kb3cuc2Nyb2xsWSAtIHBvcHVwUmVjdC5oZWlnaHQgLSA4XG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VFbnRlcigpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnaG92ZXInKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcE9wZW5EZWxheSBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VMZWF2ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLnRvb2x0aXBQZXJzaXN0ZW50KSB7XG4gICAgICB0aGlzLl9oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBDbG9zZURlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcE9wZW5PbiA9PT0gJ2ZvY3VzJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTtcblxuICAgICAgdGhpcy5fc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBPcGVuRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0KTtcbiAgICBpZiAoIXRoaXMudG9vbHRpcFBlcnNpc3RlbnQgJiYgdGhpcy50b29sdGlwT3Blbk9uID09PSAnZm9jdXMnKSB7XG4gICAgICB0aGlzLl9oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBDbG9zZURlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcE9wZW5PbiA9PT0gJ2NsaWNrJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTtcblxuICAgICAgdGhpcy5fc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX2NyZWF0ZVRvb2x0aXAsIDApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIG9uRG9jdW1lbnRDbGljayh0YXJnZXQ6IGFueSkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBQZXJzaXN0ZW50ICYmIHRoaXMuX3BvcHVwKSB7XG4gICAgICBpZiAoIXRhcmdldD8uaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSkgb25QYWdlUmVzaXplKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLl9wb3B1cCkgdGhpcy5fZGVzdHJveVRvb2x0aXAoZXZlbnQpO1xuICB9XG59XG4iXX0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAvY3BzLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFjM0M7OztHQUdHO0FBS0gsTUFBTSxPQUFPLG1CQUFtQjtJQW1FOUIsWUFDVSxXQUFvQyxFQUNsQixRQUFrQjtRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTlEOUM7OztXQUdHO1FBQ00scUJBQWdCLEdBQW9CLEdBQUcsQ0FBQztRQUVqRDs7O1dBR0c7UUFDTSxzQkFBaUIsR0FBb0IsR0FBRyxDQUFDO1FBRWxEOzs7V0FHRztRQUNNLGtCQUFhLEdBQXFCLE9BQU8sQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSxvQkFBZSxHQUF1QixLQUFLLENBQUM7UUFFckQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRW5DOzs7V0FHRztRQUNNLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRWpDOzs7V0FHRztRQUNNLG9CQUFlLEdBQW9CLE1BQU0sQ0FBQztRQUVuRDs7O1dBR0c7UUFDTSx3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQUVyRDs7O1dBR0c7UUFDTSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQW1CM0IsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXhCLElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTztZQUVqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7UUFFTSxvQkFBZSxHQUFHLENBQUMsUUFBYSxTQUFTLEVBQUUsRUFBRTtZQUNuRCxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1lBQzFCLENBQUMsQ0FBQztZQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFL0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsYUFBYSxFQUFFLENBQUM7WUFDbEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sS0FBSyxHQUFtQixJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxxQkFBcUIsQ0FBQztvQkFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUM1QixDQUFDLENBQUMsQ0FBQztnQkFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDVixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBOUNBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFxQixDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUEyQ08saUJBQWlCLENBQUMsS0FBcUI7UUFDN0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLCtCQUErQixDQUFDO1FBQ3pFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMscUJBQXFCLENBQUM7WUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2pELENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBcUMsRUFBVyxFQUFFO1lBQ3hFLE9BQU8sQ0FDTCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUNoQixNQUFNLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUN2RCxNQUFNLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQ3pELENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixJQUFJLFNBQVMsR0FBeUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFNBQVMsR0FBSSxJQUFJLENBQUMsTUFBeUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTFFLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUN2QyxHQUF5QixFQUN6QixRQUFRLEVBQ1IsWUFBWSxFQUNaLFNBQVMsQ0FDVixDQUFDO1lBRUYsSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8scUJBQXFCLENBQzNCLFFBQTRCLEVBQzVCLFFBQXFCLEVBQ3JCLFlBQXFCLEVBQ3JCLFNBQWtCO1FBS2xCLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxRQUFRO2dCQUNYLE9BQU87b0JBQ0wsSUFBSSxFQUNGLFlBQVksQ0FBQyxJQUFJO3dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87d0JBQ25CLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDOUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWE7aUJBQ3BFLENBQUM7WUFDSixLQUFLLE1BQU07Z0JBQ1QsT0FBTztvQkFDTCxJQUFJLEVBQ0YsWUFBWSxDQUFDLElBQUk7d0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzt3QkFDbkIsU0FBUyxDQUFDLEtBQUs7d0JBQ2YsSUFBSSxDQUFDLGFBQWE7b0JBQ3BCLEdBQUcsRUFDRCxZQUFZLENBQUMsR0FBRzt3QkFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO3dCQUNuQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2pELENBQUM7WUFDSixLQUFLLE9BQU87Z0JBQ1YsT0FBTztvQkFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYTtvQkFDbkUsR0FBRyxFQUNELFlBQVksQ0FBQyxHQUFHO3dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87d0JBQ25CLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztpQkFDakQsQ0FBQztZQUNKO2dCQUNFLE9BQU87b0JBQ0wsSUFBSSxFQUNGLFlBQVksQ0FBQyxJQUFJO3dCQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87d0JBQ25CLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDOUMsR0FBRyxFQUNELFlBQVksQ0FBQyxHQUFHO3dCQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87d0JBQ25CLFNBQVMsQ0FBQyxNQUFNO3dCQUNoQixJQUFJLENBQUMsYUFBYTtpQkFDckIsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBRTJCLFlBQVk7UUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ25DLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQzVCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxnQkFBMEIsQ0FDaEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRTJCLFlBQVk7UUFDdEMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQzVCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxpQkFBMkIsQ0FDakMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRXNCLE9BQU87UUFDNUIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ25DLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQzVCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxnQkFBMEIsQ0FDaEMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRXFCLE1BQU07UUFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQzVCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxpQkFBMkIsQ0FDakMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRXNCLE9BQU87UUFDNUIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ25DLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUdELGVBQWUsQ0FBQyxNQUFXO1FBQ3pCLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUN6QixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFMEMsWUFBWSxDQUFDLEtBQVk7UUFDbEUsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0F4U1UsbUJBQW1CLDRDQXFFcEIsUUFBUTtrR0FyRVAsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQXNFSSxNQUFNOzJCQUFDLFFBQVE7eUNBaEVHLE9BQU87c0JBQTNCLEtBQUs7dUJBQUMsWUFBWTtnQkFNVixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBTUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFNRyxhQUFhO3NCQUFyQixLQUFLO2dCQTJLc0IsWUFBWTtzQkFBdkMsWUFBWTt1QkFBQyxZQUFZO2dCQVdFLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWTtnQkFXSCxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBV0MsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNO2dCQVVHLE9BQU87c0JBQTdCLFlBQVk7dUJBQUMsT0FBTztnQkFTckIsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDO2dCQWFOLFlBQVk7c0JBQXRELFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQ3BzVG9vbHRpcFBvc2l0aW9uIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC5cbiAqIEBncm91cCBUeXBlc1xuICovXG5leHBvcnQgdHlwZSBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcblxuLyoqXG4gKiBDcHNUb29sdGlwT3Blbk9uIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBldmVudCBvbiB3aGljaCB0aGUgdG9vbHRpcCBzaG91bGQgb3Blbi5cbiAqIEBncm91cCBUeXBlc1xuICovXG5leHBvcnQgdHlwZSBDcHNUb29sdGlwT3Blbk9uID0gJ2hvdmVyJyB8ICdjbGljaycgfCAnZm9jdXMnO1xuXG4vKipcbiAqIENwc1Rvb2x0aXBEaXJlY3RpdmUgcHJvdmlkZXMgYWR2aXNvcnkgaW5mb3JtYXRpb24gZm9yIGEgdGFyZ2V0IGVsZW1lbnQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY3BzVG9vbHRpcF0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENwc1Rvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVG9vbHRpcCB0ZXh0IG9yIGh0bWwgdG8gc2hvdy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoJ2Nwc1Rvb2x0aXAnKSB0b29sdGlwITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWxheSB0byBzaG93IHRoZSB0b29sdGlwIGluIG1pbGxpc2Vjb25kcywgaXQgY2FuIGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwT3BlbkRlbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAzMDA7XG5cbiAgLyoqXG4gICAqIERlbGF5IHRvIGhpZGUgdGhlIHRvb2x0aXAgaW4gbWlsbGlzZWNvbmRzLCBpdCBjYW4gYmUgb2YgdHlwZSBzdHJpbmcgb3IgbnVtYmVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBDbG9zZURlbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAzMDA7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgb3BlbiBvbiBob3ZlciwgY2xpY2sgb3IgZm9jdXMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE9wZW5PbjogQ3BzVG9vbHRpcE9wZW5PbiA9ICdob3Zlcic7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLCBpdCBjYW4gYmUgJ3RvcCcsICdib3R0b20nLCAnbGVmdCcgb3IgJ3JpZ2h0Jy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwUG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcGVyc2lzdGVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwUGVyc2lzdGVudCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSB0b29sdGlwIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogTWF4IHdpZHRoIG9mIHRoZSB0b29sdGlwIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIFRvb2x0aXAgY29udGVudCBjbGFzcyBmb3Igc3R5bGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ29udGVudENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIG9mZnNldCBmb3Igc3R5bGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwT2Zmc2V0OiBudW1iZXIgPSA4O1xuXG4gIHByaXZhdGUgX3BvcHVwPzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3Nob3dUaW1lb3V0PzogYW55O1xuICBwcml2YXRlIF9oaWRlVGltZW91dD86IGFueTtcblxuICBwcml2YXRlIHdpbmRvdzogV2luZG93O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICkge1xuICAgIHRoaXMud2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5fcG9wdXApIHJldHVybjtcblxuICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fcG9wdXAgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuX2NvbnN0cnVjdEVsZW1lbnQodGhpcy5fcG9wdXApO1xuXG4gICAgaWYgKHRoaXMudG9vbHRpcFBlcnNpc3RlbnQpXG4gICAgICB0aGlzLl9wb3B1cC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKTtcblxuICAgIHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLCB0cnVlKTtcbiAgfTtcblxuICBwcml2YXRlIF9kZXN0cm95VG9vbHRpcCA9IChldmVudDogYW55ID0gdW5kZWZpbmVkKSA9PiB7XG4gICAgY29uc3QgcmVtb3ZlRnJvbURPTSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX3BvcHVwPy5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX3BvcHVwID0gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICB0aGlzLndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9kZXN0cm95VG9vbHRpcCwgdHJ1ZSk7XG4gICAgaWYgKCF0aGlzLl9wb3B1cCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fcG9wdXAucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9kZXN0cm95VG9vbHRpcCk7XG5cbiAgICBjb25zdCBub0FuaW1hdGlvbiA9IFsnc2Nyb2xsJywgJ3Jlc2l6ZSddLmluY2x1ZGVzKGV2ZW50Py50eXBlKTtcblxuICAgIGlmIChub0FuaW1hdGlvbikge1xuICAgICAgcmVtb3ZlRnJvbURPTSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3B1cDogSFRNTERpdkVsZW1lbnQgPSB0aGlzLl9wb3B1cDtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHBvcHVwLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICB9KTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlbW92ZUZyb21ET00oKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX2NvbnN0cnVjdEVsZW1lbnQocG9wdXA6IEhUTUxEaXZFbGVtZW50KSB7XG4gICAgY29uc3QgcG9wdXBDb250ZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBwb3B1cENvbnRlbnQuaW5uZXJIVE1MID0gdGhpcy50b29sdGlwIHx8ICdBZGQgeW91ciB0ZXh0IHRvIHRoaXMgdG9vbHRpcCc7XG4gICAgcG9wdXBDb250ZW50LmNsYXNzTGlzdC5hZGQodGhpcy50b29sdGlwQ29udGVudENsYXNzKTtcbiAgICBwb3B1cC5hcHBlbmRDaGlsZChwb3B1cENvbnRlbnQpO1xuXG4gICAgcG9wdXAuY2xhc3NMaXN0LmFkZCgnY3BzLXRvb2x0aXAnKTtcbiAgICBwb3B1cC5zdHlsZS5tYXhXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMudG9vbHRpcE1heFdpZHRoKTtcblxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwb3B1cCk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvcHVwLnN0eWxlLm9wYWNpdHkgPSAnMSc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb29yZHMgPSB0aGlzLl9nZXRDb29yZHMoKTtcbiAgICBpZiAoIWNvb3Jkcykge1xuICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGVub3VnaCBzcGFjZSBvbiB0aGUgc2NyZWVuIGZvciB0aGUgdG9vbHRpcCEnKTtcbiAgICB9XG5cbiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gY29vcmRzLmxlZnQudG9TdHJpbmcoKSArICdweCc7XG4gICAgcG9wdXAuc3R5bGUudG9wID0gY29vcmRzLnRvcC50b1N0cmluZygpICsgJ3B4JztcbiAgfVxuXG4gIHByaXZhdGUgX2dldENvb3JkcygpOiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNJbnNpZGVTY3JlZW4gPSAoY29vcmRzOiB7IGxlZnQ6IG51bWJlcjsgdG9wOiBudW1iZXIgfSk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29vcmRzLnRvcCA+PSAwICYmXG4gICAgICAgIGNvb3Jkcy5sZWZ0ID49IDAgJiZcbiAgICAgICAgY29vcmRzLmxlZnQgKyBwb3B1cFJlY3Qud2lkdGggPD0gdGhpcy53aW5kb3cuaW5uZXJXaWR0aCAmJlxuICAgICAgICBjb29yZHMudG9wICsgcG9wdXBSZWN0LmhlaWdodCA8PSB0aGlzLndpbmRvdy5pbm5lckhlaWdodFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgbGV0IHBvc2l0aW9uczogQ3BzVG9vbHRpcFBvc2l0aW9uW10gPSBbJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsICdyaWdodCddO1xuICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IHRoaXMudG9vbHRpcFBvc2l0aW9uKTtcbiAgICBwb3NpdGlvbnMudW5zaGlmdCh0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG5cbiAgICBjb25zdCB0YXJnZXRFbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCB0YXJnZXRFbFJlY3QgPSB0YXJnZXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBwb3B1cFJlY3QgPSAodGhpcy5fcG9wdXAgYXMgSFRNTERpdkVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgZm9yIChjb25zdCBwb3Mgb2YgcG9zaXRpb25zKSB7XG4gICAgICBjb25zdCBjb29yZHMgPSB0aGlzLl9nZXRDb29yZHNGb3JQb3NpdGlvbihcbiAgICAgICAgcG9zIGFzIENwc1Rvb2x0aXBQb3NpdGlvbixcbiAgICAgICAgdGFyZ2V0RWwsXG4gICAgICAgIHRhcmdldEVsUmVjdCxcbiAgICAgICAgcG9wdXBSZWN0XG4gICAgICApO1xuXG4gICAgICBpZiAoaXNJbnNpZGVTY3JlZW4oY29vcmRzKSkge1xuICAgICAgICByZXR1cm4gY29vcmRzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb29yZHNGb3JQb3NpdGlvbihcbiAgICBwb3NpdGlvbjogQ3BzVG9vbHRpcFBvc2l0aW9uLFxuICAgIHRhcmdldEVsOiBIVE1MRWxlbWVudCxcbiAgICB0YXJnZXRFbFJlY3Q6IERPTVJlY3QsXG4gICAgcG9wdXBSZWN0OiBET01SZWN0XG4gICk6IHtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgdG9wOiBudW1iZXI7XG4gIH0ge1xuICAgIHN3aXRjaCAocG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0ICtcbiAgICAgICAgICAgIHRoaXMud2luZG93LnNjcm9sbFggK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldFdpZHRoIC0gcG9wdXBSZWN0LndpZHRoKSAvIDIsXG4gICAgICAgICAgdG9wOiB0YXJnZXRFbFJlY3QuYm90dG9tICsgdGhpcy53aW5kb3cuc2Nyb2xsWSArIHRoaXMudG9vbHRpcE9mZnNldFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0IC1cbiAgICAgICAgICAgIHRoaXMud2luZG93LnNjcm9sbFggLVxuICAgICAgICAgICAgcG9wdXBSZWN0LndpZHRoIC1cbiAgICAgICAgICAgIHRoaXMudG9vbHRpcE9mZnNldCxcbiAgICAgICAgICB0b3A6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QudG9wICtcbiAgICAgICAgICAgIHRoaXMud2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldEhlaWdodCAtIHBvcHVwUmVjdC5oZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5yaWdodCArIHRoaXMud2luZG93LnNjcm9sbFggKyB0aGlzLnRvb2x0aXBPZmZzZXQsXG4gICAgICAgICAgdG9wOlxuICAgICAgICAgICAgdGFyZ2V0RWxSZWN0LnRvcCArXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRIZWlnaHQgLSBwb3B1cFJlY3QuaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0ICtcbiAgICAgICAgICAgIHRoaXMud2luZG93LnNjcm9sbFggK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldFdpZHRoIC0gcG9wdXBSZWN0LndpZHRoKSAvIDIsXG4gICAgICAgICAgdG9wOlxuICAgICAgICAgICAgdGFyZ2V0RWxSZWN0LnRvcCArXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5zY3JvbGxZIC1cbiAgICAgICAgICAgIHBvcHVwUmVjdC5oZWlnaHQgLVxuICAgICAgICAgICAgdGhpcy50b29sdGlwT2Zmc2V0XG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VFbnRlcigpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnaG92ZXInKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcE9wZW5EZWxheSBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpIG9uTW91c2VMZWF2ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuXG4gICAgaWYgKCF0aGlzLnRvb2x0aXBQZXJzaXN0ZW50KSB7XG4gICAgICB0aGlzLl9oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBDbG9zZURlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcE9wZW5PbiA9PT0gJ2ZvY3VzJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTtcblxuICAgICAgdGhpcy5fc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLl9jcmVhdGVUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBPcGVuRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0KTtcbiAgICBpZiAoIXRoaXMudG9vbHRpcFBlcnNpc3RlbnQgJiYgdGhpcy50b29sdGlwT3Blbk9uID09PSAnZm9jdXMnKSB7XG4gICAgICB0aGlzLl9oaWRlVGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLFxuICAgICAgICB0aGlzLnRvb2x0aXBDbG9zZURlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcE9wZW5PbiA9PT0gJ2NsaWNrJykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0KTtcblxuICAgICAgdGhpcy5fc2hvd1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX2NyZWF0ZVRvb2x0aXAsIDApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIG9uRG9jdW1lbnRDbGljayh0YXJnZXQ6IGFueSkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBQZXJzaXN0ZW50ICYmIHRoaXMuX3BvcHVwKSB7XG4gICAgICBpZiAoIXRhcmdldD8uaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xpY2tlZEluc2lkZSA9IHRoaXMuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSkgb25QYWdlUmVzaXplKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLl9wb3B1cCkgdGhpcy5fZGVzdHJveVRvb2x0aXAoZXZlbnQpO1xuICB9XG59XG4iXX0=
|