speechrecorderng 3.9.7 → 3.9.9
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/README.md +478 -12
- package/esm2022/lib/action/action.mjs +1 -1
- package/esm2022/lib/audio/array_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/array_audio_buffer_input_stream.mjs +1 -1
- package/esm2022/lib/audio/audio_data_holder.mjs +1 -1
- package/esm2022/lib/audio/audio_display.mjs +4 -4
- package/esm2022/lib/audio/audio_player.mjs +4 -4
- package/esm2022/lib/audio/capture/capture.mjs +1 -1
- package/esm2022/lib/audio/context.mjs +1 -1
- package/esm2022/lib/audio/dsp/level_measure.mjs +5 -4
- package/esm2022/lib/audio/impl/wavreader.mjs +1 -1
- package/esm2022/lib/audio/impl/wavwriter.mjs +1 -1
- package/esm2022/lib/audio/inddb_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/io/stream.mjs +1 -1
- package/esm2022/lib/audio/net_audio_buffer.mjs +1 -1
- package/esm2022/lib/audio/persistor.mjs +1 -1
- package/esm2022/lib/audio/playback/array_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/audio_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/audio_source_worklet_module_loader.mjs +1 -1
- package/esm2022/lib/audio/playback/inddb_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/net_audio_buffer_source_node.mjs +1 -1
- package/esm2022/lib/audio/playback/player.mjs +1 -1
- package/esm2022/lib/audio/ui/audio_canvas_layer_comp.mjs +7 -7
- package/esm2022/lib/audio/ui/audio_display_control.mjs +4 -4
- package/esm2022/lib/audio/ui/audio_display_scroll_pane.mjs +4 -4
- package/esm2022/lib/audio/ui/audiosignal.mjs +4 -4
- package/esm2022/lib/audio/ui/container.mjs +4 -4
- package/esm2022/lib/audio/ui/livelevel.mjs +4 -4
- package/esm2022/lib/audio/ui/scroll_pane_horizontal.mjs +3 -3
- package/esm2022/lib/audio/ui/sonagram.mjs +4 -4
- package/esm2022/lib/db/inddb.mjs +4 -4
- package/esm2022/lib/dsp/utils.mjs +1 -1
- package/esm2022/lib/io/BinaryReader.mjs +1 -1
- package/esm2022/lib/io/BinaryWriter.mjs +1 -1
- package/esm2022/lib/io/stream.mjs +1 -1
- package/esm2022/lib/math/complex.mjs +1 -1
- package/esm2022/lib/math/dft.mjs +1 -1
- package/esm2022/lib/net/uploader.mjs +1 -1
- package/esm2022/lib/recorder_component.mjs +1 -1
- package/esm2022/lib/speechrecorder/project/project.mjs +1 -1
- package/esm2022/lib/speechrecorder/project/project.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/recording.mjs +1 -1
- package/esm2022/lib/speechrecorder/recordings/basic_recording.service.mjs +1 -1
- package/esm2022/lib/speechrecorder/recordings/recordings.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/script/script.mjs +1 -1
- package/esm2022/lib/speechrecorder/script/script.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/audiorecorder.mjs +7 -7
- package/esm2022/lib/speechrecorder/session/basicrecorder.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/controlpanel.mjs +22 -22
- package/esm2022/lib/speechrecorder/session/item.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/progress.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/prompting.mjs +16 -16
- package/esm2022/lib/speechrecorder/session/recorder_combi_pane.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/recording_file_cache.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/recording_list.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-meta.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-navi.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-u-i.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file-view.component.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/recordingfile/recording-file.mjs +1 -1
- package/esm2022/lib/speechrecorder/session/recordingfile/recordingfile-service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/session.service.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/session_finished_dialog.mjs +3 -3
- package/esm2022/lib/speechrecorder/session/sessionmanager.mjs +4 -4
- package/esm2022/lib/speechrecorder/session/warning_bar.mjs +4 -4
- package/esm2022/lib/speechrecorder/spruploader.mjs +4 -4
- package/esm2022/lib/speechrecorder/startstopsignal/ui/simpletrafficlight.mjs +4 -4
- package/esm2022/lib/speechrecorderng.component.mjs +4 -4
- package/esm2022/lib/speechrecorderng.module.mjs +9 -13
- package/esm2022/lib/spr.config.mjs +3 -3
- package/esm2022/lib/spr.module.version.mjs +2 -2
- package/esm2022/lib/ui/canvas_layer_comp.mjs +4 -4
- package/esm2022/lib/ui/intersection-observer.directive.mjs +4 -4
- package/esm2022/lib/ui/message_dialog.mjs +3 -3
- package/esm2022/lib/ui/recordingitem_display.mjs +7 -7
- package/esm2022/lib/ui/responsive_component.mjs +3 -3
- package/esm2022/lib/utils/scrollIntoViewToBottom.mjs +4 -4
- package/esm2022/lib/utils/ua-parser.mjs +1 -1
- package/esm2022/lib/utils/utils.mjs +1 -1
- package/esm2022/lib/utils/wake_lock.mjs +1 -1
- package/fesm2022/speechrecorderng.mjs +171 -174
- package/fesm2022/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorderng.module.d.ts +11 -12
- package/lib/spr.module.version.d.ts +1 -1
- package/package.json +13 -13
|
@@ -33,8 +33,8 @@ export class AudioDisplayControl {
|
|
|
33
33
|
error() {
|
|
34
34
|
this.status = 'ERROR';
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioDisplayControl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: AudioDisplayControl, selector: "audio-display-control", inputs: { audioClip: "audioClip", playStartAction: "playStartAction", playSelectionAction: "playSelectionAction", playStopAction: "playStopAction", zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomFitToPanelAction: "zoomFitToPanelAction", zoomSelectedAction: "zoomSelectedAction", autoPlayOnSelectToggleAction: "autoPlayOnSelectToggleAction" }, viewQueries: [{ propertyName: "autoplaySelectedCheckbox", first: true, predicate: MatCheckbox, descendants: true, static: true }], ngImport: i0, template: `
|
|
38
38
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
39
39
|
<fieldset>
|
|
40
40
|
|
|
@@ -79,7 +79,7 @@ export class AudioDisplayControl {
|
|
|
79
79
|
</fieldset>
|
|
80
80
|
</div>`, isInline: true, styles: [":host{flex:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
81
81
|
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioDisplayControl, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
84
|
args: [{ selector: 'audio-display-control', template: `
|
|
85
85
|
<div #controlPanel style="display:flex;flex-direction: row;">
|
|
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
147
147
|
}], autoPlayOnSelectToggleAction: [{
|
|
148
148
|
type: Input
|
|
149
149
|
}] } });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fZGlzcGxheV9jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL3VpL2F1ZGlvX2Rpc3BsYXlfY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFFekQsT0FBTyxFQUFDLFdBQVcsRUFBb0IsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0FBMkR6RSxNQUFNLE9BQU8sbUJBQW1CO0lBa0IvQjtRQWhCVyxjQUFTLEdBQWlCLElBQUksQ0FBQztRQUdoQyw2QkFBd0IsR0FBbUIsSUFBSSxDQUFDO1FBSS9DLGlCQUFZLEdBQW9CLElBQUksQ0FBQztRQUNyQyxrQkFBYSxHQUFvQixJQUFJLENBQUM7UUFJL0MsV0FBTSxHQUFhLElBQUksQ0FBQztJQUlYLENBQUM7SUFFZCxjQUFjO1FBQ1YsSUFBRyxJQUFJLENBQUMsU0FBUyxJQUFFLElBQUksRUFBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFDLElBQUksQ0FBQTtRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUVDLFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBQyxLQUFLLENBQUM7UUFDYixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQztZQUNmLEVBQUUsR0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFSCx1QkFBdUIsQ0FBQyxFQUFxQjtRQUN6QyxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDTCxDQUFDO0lBRUgsS0FBSztRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7OEdBMUNXLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGllQUlsQixXQUFXLDhEQXZEWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQTJDQzs7MkZBUUQsbUJBQW1CO2tCQXZEOUIsU0FBUzsrQkFFRSx1QkFBdUIsWUFFdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUEyQ0M7d0RBVUYsU0FBUztzQkFBakIsS0FBSztnQkFHRSx3QkFBd0I7c0JBRC9CLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFL0IsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtBY3Rpb259IGZyb20gXCIuLi8uLi9hY3Rpb24vYWN0aW9uXCI7XHJcbmltcG9ydCB7TWF0Q2hlY2tib3gsIE1hdENoZWNrYm94Q2hhbmdlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHtBdWRpb0NsaXB9IGZyb20gXCIuLi9wZXJzaXN0b3JcIjtcclxuXHJcblxyXG4gIEBDb21wb25lbnQoe1xyXG5cclxuICAgIHNlbGVjdG9yOiAnYXVkaW8tZGlzcGxheS1jb250cm9sJyxcclxuXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxkaXYgI2NvbnRyb2xQYW5lbCBzdHlsZT1cImRpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjogcm93O1wiPlxyXG4gICAgICAgICAgICA8ZmllbGRzZXQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPGxlZ2VuZD5QbGF5PC9sZWdlbmQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicGxheVN0YXJ0QWN0aW9uPy5wZXJmb3JtKClcIiBbZGlzYWJsZWRdPVwicGxheVN0YXJ0QWN0aW9uPy5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJwbGF5U3RhcnRBY3Rpb24/LmRpc2FibGVkID8gJ2dyZXknIDogJ2dyZWVuJ1wiIG1hdFRvb2x0aXA9XCJQbGF5IGFsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wbGF5X2Fycm93PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicGxheVNlbGVjdGlvbkFjdGlvbj8ucGVyZm9ybSgpXCIgW2Rpc2FibGVkXT1cInBsYXlTZWxlY3Rpb25BY3Rpb24/LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInBsYXlTZWxlY3Rpb25BY3Rpb24/LmRpc2FibGVkID8gJ2dyZXknIDogJ2dyZWVuJ1wiIG1hdFRvb2x0aXA9XCJQbGF5IHNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wbGF5X2NpcmNsZV9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicGxheVN0b3BBY3Rpb24/LnBlcmZvcm0oKVwiIFtkaXNhYmxlZF09XCJwbGF5U3RvcEFjdGlvbj8uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwicGxheVN0b3BBY3Rpb24/LmRpc2FibGVkID8gJ2dyZXknIDogJ3llbGxvdydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+c3RvcDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggI2F1dG9wbGF5U2VsZWN0aW9uQ2hlY2tib3ggKGNoYW5nZSk9XCJhdXRvUGxheVNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+QXV0b3BsYXkgb24gc2VsZWN0XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgPGZpZWxkc2V0PlxyXG5cclxuICAgICAgICAgICAgICAgIDxsZWdlbmQ+Wm9vbTwvbGVnZW5kPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiem9vbUZpdFRvUGFuZWxBY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ6b29tRml0VG9QYW5lbEFjdGlvbj8uZGlzYWJsZWRcIj57e3pvb21GaXRUb1BhbmVsQWN0aW9uPy5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInpvb21PdXRBY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ6b29tT3V0QWN0aW9uPy5kaXNhYmxlZFwiPnt7em9vbU91dEFjdGlvbj8ubmFtZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ6b29tSW5BY3Rpb24/LnBlcmZvcm0oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ6b29tSW5BY3Rpb24/LmRpc2FibGVkXCI+e3t6b29tSW5BY3Rpb24/Lm5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiem9vbVNlbGVjdGVkQWN0aW9uPy5wZXJmb3JtKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiem9vbVNlbGVjdGVkQWN0aW9uPy5kaXNhYmxlZFwiPnt7em9vbVNlbGVjdGVkQWN0aW9uPy5uYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgPGZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgICAgPGxlZ2VuZD5TZWxlY3Rpb248L2xlZ2VuZD5cclxuICAgICAgICAgICAgICAgIHt7YXVkaW9DbGlwPy5zZWxlY3Rpb24/LmxlZnRGcmFtZX19IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhdWRpb0NsaXA/LnNlbGVjdGlvblwiPnRvPC9zcGFuPiB7e2F1ZGlvQ2xpcD8uc2VsZWN0aW9uPy5yaWdodEZyYW1lfX1cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKClcIiBbZGlzYWJsZWRdPVwiYXVkaW9DbGlwPy5zZWxlY3Rpb249PW51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaGFzU2VsZWN0aW9uKCkgPyAncmVkJyA6ICdncmV5J1wiIG1hdFRvb2x0aXA9XCJDbGVhciBzZWxlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICAgIDwvZGl2PmAsXHJcbiAgICBzdHlsZXM6IFtcclxuICAgICAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgICAgICAgIGZsZXg6IDA7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICAgICB9YF1cclxuXHJcbiAgfSlcclxuXHRleHBvcnQgY2xhc3MgQXVkaW9EaXNwbGF5Q29udHJvbCB7XHJcblxyXG4gICAgQElucHV0KCkgYXVkaW9DbGlwOiBBdWRpb0NsaXB8bnVsbD1udWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTWF0Q2hlY2tib3gsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwcml2YXRlIGF1dG9wbGF5U2VsZWN0ZWRDaGVja2JveDogTWF0Q2hlY2tib3h8bnVsbD1udWxsO1xyXG4gICAgQElucHV0KCkgcGxheVN0YXJ0QWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgcGxheVNlbGVjdGlvbkFjdGlvbjogQWN0aW9uPHZvaWQ+fHVuZGVmaW5lZDtcclxuICAgIEBJbnB1dCgpIHBsYXlTdG9wQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgem9vbUluQWN0aW9uOiBBY3Rpb248dm9pZD58bnVsbD1udWxsO1xyXG4gICAgQElucHV0KCkgem9vbU91dEFjdGlvbjogQWN0aW9uPHZvaWQ+fG51bGw9bnVsbDtcclxuICAgIEBJbnB1dCgpIHpvb21GaXRUb1BhbmVsQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgem9vbVNlbGVjdGVkQWN0aW9uOiBBY3Rpb248dm9pZD58dW5kZWZpbmVkO1xyXG4gICAgQElucHV0KCkgYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbjogQWN0aW9uPGJvb2xlYW4+fHVuZGVmaW5lZDtcclxuXHQgICBzdGF0dXM6c3RyaW5nfG51bGw9bnVsbDtcclxuXHJcblx0XHRhdWRpbzphbnk7XHJcblxyXG5cdFx0Y29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAgIGNsZWFyU2VsZWN0aW9uKCl7XHJcbiAgICAgICAgaWYodGhpcy5hdWRpb0NsaXAhPW51bGwpe1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGlvQ2xpcC5zZWxlY3Rpb249bnVsbFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAgIGhhc1NlbGVjdGlvbigpOmJvb2xlYW57XHJcbiAgICAgICAgICBsZXQgaHM9ZmFsc2U7XHJcbiAgICAgICAgICBpZih0aGlzLmF1ZGlvQ2xpcCl7XHJcbiAgICAgICAgICAgICAgaHM9KHRoaXMuYXVkaW9DbGlwLnNlbGVjdGlvbiE9bnVsbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gaHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICBhdXRvUGxheVNlbGVjdGlvbkNoYW5nZShjaDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvUGxheU9uU2VsZWN0VG9nZ2xlQWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1BsYXlPblNlbGVjdFRvZ2dsZUFjdGlvbi5wZXJmb3JtKGNoLmNoZWNrZWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblx0XHRlcnJvcigpe1xyXG5cdFx0XHR0aGlzLnN0YXR1cyA9ICdFUlJPUic7XHJcblx0XHR9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiJdfQ==
|
|
@@ -109,14 +109,14 @@ export class AudioDisplayScrollPane {
|
|
|
109
109
|
set playFramePosition(framePos) {
|
|
110
110
|
this.ac.playFramePosition = framePos;
|
|
111
111
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioDisplayScrollPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: AudioDisplayScrollPane, selector: "audio-display-scroll-pane", inputs: { audioClip: "audioClip" }, outputs: { zoomInAction: "zoomInAction", zoomOutAction: "zoomOutAction", zoomSelectedAction: "zoomSelectedAction", zoomFitToPanelAction: "zoomFitToPanelAction" }, host: { listeners: { "scroll": "onScroll($event)", "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "ac", first: true, predicate: AudioClipUIContainer, descendants: true, static: true }], ngImport: i0, template: `
|
|
114
114
|
|
|
115
115
|
<app-audio #audioSignalContainer (selectionEventEmitter)="selectionChanged($event)"></app-audio>
|
|
116
116
|
|
|
117
117
|
`, isInline: true, styles: [":host{flex:2;width:100%;background:#a9a9a9;box-sizing:border-box;height:100%;position:relative;overflow-x:scroll;overflow-y:auto}\n", "app-audio{margin:0;padding:0;top:0;left:0;width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "component", type: i1.AudioClipUIContainer, selector: "app-audio", inputs: ["audioData", "audioClip"], outputs: ["selectionEventEmitter"] }] }); }
|
|
118
118
|
}
|
|
119
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioDisplayScrollPane, decorators: [{
|
|
120
120
|
type: Component,
|
|
121
121
|
args: [{ selector: 'audio-display-scroll-pane', template: `
|
|
122
122
|
|
|
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
143
143
|
}], audioClip: [{
|
|
144
144
|
type: Input
|
|
145
145
|
}] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fZGlzcGxheV9zY3JvbGxfcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby91aS9hdWRpb19kaXNwbGF5X3Njcm9sbF9wYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFBYyxNQUFNLEVBQUUsS0FBSyxHQUN4QyxNQUFNLGVBQWUsQ0FBQTtBQUd0QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7QUFzQ3JFLE1BQU0sT0FBTyxzQkFBc0I7SUFnQmpDLFlBQXFCLEdBQWU7UUFBZixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBWjFCLGlCQUFZLEdBQWMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsa0JBQWEsR0FBYyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBYyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCx5QkFBb0IsR0FBYyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RSw0QkFBdUIsR0FBYyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBU2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7WUFDN0IsTUFB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QUFDLFNBQVMsR0FBQyxTQUFTLENBQUE7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR0QsSUFBSSxpQkFBaUIsQ0FBQyxRQUFlO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEdBQUMsUUFBUSxDQUFDO0lBQ3JDLENBQUM7OEdBN0lVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdZQVd0QixvQkFBb0IsOERBekNyQjs7OztHQUlUOzsyRkEwQlUsc0JBQXNCO2tCQWxDbEMsU0FBUzsrQkFFRSwyQkFBMkIsWUFFM0I7Ozs7R0FJVDsrRUE4QlMsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBS0MsRUFBRTtzQkFEVCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFpRmpELFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWxDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUJyQyxTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBPdXRwdXQsIElucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5cclxuaW1wb3J0IHtBdWRpb0NsaXBVSUNvbnRhaW5lcn0gZnJvbSAnLi9jb250YWluZXInXHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge1Bvc2l0aW9uLERpbWVuc2lvbiwgUmVjdGFuZ2xlfSBmcm9tIFwiLi4vLi4vbWF0aC8yZC9nZW9tZXRyeVwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcCwgU2VsZWN0aW9ufSBmcm9tIFwiLi4vcGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi4vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2F1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmUnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhcHAtYXVkaW8gI2F1ZGlvU2lnbmFsQ29udGFpbmVyIChzZWxlY3Rpb25FdmVudEVtaXR0ZXIpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+PC9hcHAtYXVkaW8+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgIGZsZXg6IDI7XHJcbiAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2dyYXk7XHJcbiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcclxuICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICAgICB9YCxcclxuICAgIGBhcHAtYXVkaW8ge1xyXG4gICAgIFxyXG4gICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICBcclxuICAgICAgICAgLypwb3NpdGlvbjogYWJzb2x1dGU7Ki9cclxuICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgIH1gXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGlvRGlzcGxheVNjcm9sbFBhbmUge1xyXG5cclxuICBwcml2YXRlIHNwRWwhOkhUTUxFbGVtZW50O1xyXG5cclxuICBAT3V0cHV0KCkgem9vbUluQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKCcrJyk7XHJcbiAgQE91dHB1dCgpIHpvb21PdXRBY3Rpb246QWN0aW9uPHZvaWQ+PW5ldyBBY3Rpb24oJy0nKTtcclxuICBAT3V0cHV0KCkgem9vbVNlbGVjdGVkQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKFwiU2VsZWN0ZWRcIik7XHJcbiAgQE91dHB1dCgpIHpvb21GaXRUb1BhbmVsQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKFwiRml0IHRvIHBhbmVsXCIpO1xyXG4gIHpvb21GaXhGaXRUb1BhbmVsQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKFwiRml4IGZpdCB0byBwYW5lbFwiKTtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoQXVkaW9DbGlwVUlDb250YWluZXIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBhYyE6IEF1ZGlvQ2xpcFVJQ29udGFpbmVyO1xyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgICB0aGlzLnNwRWwgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgdGhpcy56b29tSW5BY3Rpb24ub25BY3Rpb24gPSAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hYy5maXhGaXRUb1BhbmVsID0gZmFsc2VcclxuICAgICAgICAgIGNvbnN0IG9sZFhab29tID0gdGhpcy5hYy5jdXJyZW50WFpvb20oKVxyXG4gICAgICAgICAgaWYob2xkWFpvb20gPT09IG51bGwpe1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmFjLnhab29tID0gb2xkWFpvb20gKiAyO1xyXG4gICAgICAgICAgbGV0IGNiciA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKHRoaXMuc3BFbC5zY3JvbGxMZWZ0LCB0aGlzLnNwRWwuc2Nyb2xsVG9wKSwgbmV3IERpbWVuc2lvbih0aGlzLnNwRWwuY2xpZW50V2lkdGgsIHRoaXMuc3BFbC5jbGllbnRIZWlnaHQpKTtcclxuICAgICAgICAgIHRoaXMuYWMuY2xpcEJvdW5kcyhjYnIpO1xyXG4gICAgICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbi5kaXNhYmxlZD1mYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuem9vbU91dEFjdGlvbi5vbkFjdGlvbiA9IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjLmZpeEZpdFRvUGFuZWwgPSBmYWxzZVxyXG4gICAgICAgICAgY29uc3QgY2JyMSA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKCh0aGlzLnNwRWwuc2Nyb2xsTGVmdCAvIDIpIC0gdGhpcy5zcEVsLmNsaWVudFdpZHRoLCB0aGlzLnNwRWwuc2Nyb2xsVG9wKSwgbmV3IERpbWVuc2lvbih0aGlzLnNwRWwuY2xpZW50V2lkdGgsIHRoaXMuc3BFbC5jbGllbnRIZWlnaHQpKTtcclxuICAgICAgICAgIHRoaXMuYWMuY2xpcEJvdW5kcyhjYnIxKTtcclxuICAgICAgICAgIGxldCBvbGRYWm9vbSA9IHRoaXMuYWMuY3VycmVudFhab29tKClcclxuICAgICAgICAgIGlmKG9sZFhab29tID09PSBudWxsKXtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFjLnhab29tID0gb2xkWFpvb20gLyAyO1xyXG5cclxuICAgICAgICAgIGxldCBjYnIgPSBuZXcgUmVjdGFuZ2xlKG5ldyBQb3NpdGlvbih0aGlzLnNwRWwuc2Nyb2xsTGVmdCwgdGhpcy5zcEVsLnNjcm9sbFRvcCksIG5ldyBEaW1lbnNpb24odGhpcy5zcEVsLmNsaWVudFdpZHRoLCB0aGlzLnNwRWwuY2xpZW50SGVpZ2h0KSk7XHJcbiAgICAgICAgICB0aGlzLmFjLmNsaXBCb3VuZHMoY2JyKTtcclxuICAgICAgICAgIHRoaXMuem9vbUZpdFRvUGFuZWxBY3Rpb24uZGlzYWJsZWQ9ZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbi5vbkFjdGlvbiA9IChlKSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbi5kaXNhYmxlZD10cnVlXHJcblxyXG4gICAgICAgICAgLy8gc2V0IGNvbnRhaW5lciBkaXYgd2lkdGggdG8gdGhpcyAodmlld3BvcnQpIHdpZHRoXHJcbiAgICAgICAgICB0aGlzLmFjLmNlLnN0eWxlLndpZHRoPXRoaXMuc3BFbC5vZmZzZXRXaWR0aCsncHgnO1xyXG5cclxuICAgICAgICAgIHRoaXMuYWMuZml4Rml0VG9QYW5lbD10cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbi5vbkFjdGlvbiA9IChlKSA9PiB7XHJcbiAgICAgICAgICAvL2FsZXJ0KFwibm90IGltcGxlbWVudGVkIHlldFwiKVxyXG5cclxuICAgICAgICAgIGxldCBzID0gdGhpcy5hYy5zZWxlY3Rpb25cclxuICAgICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICAgICAgLy8gcmVzZXQgYXV0byBmaXQgdG8gcGFuZWwgbW9kZVxyXG4gICAgICAgICAgICAgIHRoaXMuYWMuZml4Rml0VG9QYW5lbCA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBzZWxlY3Rpb24gbGVuZ3RoIGluIHNlY29uZHNcclxuICAgICAgICAgICAgICBpZih0aGlzLmFjLmF1ZGlvRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc3IgPSB0aGlzLmFjLmF1ZGlvRGF0YS5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc2VsRnJMZW4gPSBzLmVuZEZyYW1lIC0gcy5zdGFydEZyYW1lO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc2VsTGVuSW5TZWNzID0gc2VsRnJMZW4gLyBzcjtcclxuICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGNvcnJlc3BvbmRpbmcgeFpvb20gdmFsdWUgYW5kIGFwcGx5XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWMueFpvb20gPSB0aGlzLnNwRWwuY2xpZW50V2lkdGggLyBzZWxMZW5JblNlY3M7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBNb3ZlIHZpZXdwb3J0IHRvIHNob3cgc2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgIGxldCB4MSA9IHRoaXMuYWMuZnJhbWVUb1hQaXhlbFBvc2l0aW9uKHMuc3RhcnRGcmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh4MSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcEVsLnNjcm9sbExlZnQgPSB4MTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNsaXBCb3VuZHMoKVxyXG4gICAgICAgICAgICAgIHRoaXMuem9vbUZpdFRvUGFuZWxBY3Rpb24uZGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZUNsaXBCb3VuZHMoKXtcclxuICAgIGxldCBjYnI9bmV3IFJlY3RhbmdsZShuZXcgUG9zaXRpb24odGhpcy5zcEVsLnNjcm9sbExlZnQsdGhpcy5zcEVsLnNjcm9sbFRvcCksIG5ldyBEaW1lbnNpb24odGhpcy5zcEVsLmNsaWVudFdpZHRoLHRoaXMuc3BFbC5jbGllbnRIZWlnaHQpKTtcclxuICAgIHRoaXMuYWMuY2xpcEJvdW5kcyhjYnIpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSlcclxuICBvblNjcm9sbChzZTogRXZlbnQpIHtcclxuICAgICB0aGlzLnVwZGF0ZUNsaXBCb3VuZHMoKVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUNsaXBCb3VuZHMoKVxyXG4gIH1cclxuXHJcbiAgbGF5b3V0KCl7XHJcbiAgICAgICAgICB0aGlzLmFjLmxheW91dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGlvbkNoYW5nZWQoczpTZWxlY3Rpb258IG51bGwpe1xyXG4gICAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbi5kaXNhYmxlZD0ocz09bnVsbClcclxuICAgIH1cclxuXHJcbiAgc2V0IGF1ZGlvRGF0YShhdWRpb0RhdGE6IEF1ZGlvRGF0YUhvbGRlciB8IG51bGwpIHtcclxuICAgIHRoaXMuYWMuYXVkaW9EYXRhPWF1ZGlvRGF0YTtcclxuICAgICAgdGhpcy56b29tT3V0QWN0aW9uLmRpc2FibGVkPSghYXVkaW9EYXRhKVxyXG4gICAgICB0aGlzLnpvb21JbkFjdGlvbi5kaXNhYmxlZD0oIWF1ZGlvRGF0YSlcclxuICAgIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvQ2xpcChhdWRpb0NsaXA6IEF1ZGlvQ2xpcCB8IG51bGwpIHtcclxuXHJcbiAgICBsZXQgYXVkaW9EYXRhOkF1ZGlvRGF0YUhvbGRlcnxudWxsPW51bGw7XHJcbiAgICBsZXQgc2VsOlNlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgICBpZihhdWRpb0NsaXApe1xyXG4gICAgICBhdWRpb0RhdGE9YXVkaW9DbGlwLmF1ZGlvRGF0YUhvbGRlcjtcclxuICAgICAgc2VsPWF1ZGlvQ2xpcC5zZWxlY3Rpb247XHJcbiAgICAgIGF1ZGlvQ2xpcC5hZGRTZWxlY3Rpb25PYnNlcnZlcigoY2xpcCk9PntcclxuICAgICAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbi5kaXNhYmxlZD0oY2xpcC5zZWxlY3Rpb249PW51bGwpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkKHNlbClcclxuICAgIHRoaXMuYWMuYXVkaW9DbGlwPWF1ZGlvQ2xpcFxyXG4gICAgdGhpcy56b29tT3V0QWN0aW9uLmRpc2FibGVkPSghYXVkaW9EYXRhKVxyXG4gICAgdGhpcy56b29tSW5BY3Rpb24uZGlzYWJsZWQ9KCFhdWRpb0RhdGEpXHJcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihmcmFtZVBvczpudW1iZXIpe1xyXG4gICAgdGhpcy5hYy5wbGF5RnJhbWVQb3NpdGlvbj1mcmFtZVBvcztcclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuIl19
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9fZGlzcGxheV9zY3JvbGxfcGFuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9hdWRpby91aS9hdWRpb19kaXNwbGF5X3Njcm9sbF9wYW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFBYyxNQUFNLEVBQUUsS0FBSyxHQUN4QyxNQUFNLGVBQWUsQ0FBQTtBQUd0QixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDOzs7QUFzQ3JFLE1BQU0sT0FBTyxzQkFBc0I7SUFnQmpDLFlBQXFCLEdBQWU7UUFBZixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBWjFCLGlCQUFZLEdBQWMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsa0JBQWEsR0FBYyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBYyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCx5QkFBb0IsR0FBYyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RSw0QkFBdUIsR0FBYyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBU2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7WUFDN0IsTUFB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LElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBQyxTQUFTLENBQUE7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR0QsSUFBSSxpQkFBaUIsQ0FBQyxRQUFlO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEdBQUMsUUFBUSxDQUFDO0lBQ3JDLENBQUM7OEdBN0lVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdZQVd0QixvQkFBb0IsOERBekNyQjs7OztHQUlUOzsyRkEwQlUsc0JBQXNCO2tCQWxDbEMsU0FBUzsrQkFFRSwyQkFBMkIsWUFFM0I7Ozs7R0FJVDsrRUE4QlMsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBS0MsRUFBRTtzQkFEVCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFpRmpELFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTWxDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUJyQyxTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgSG9zdExpc3RlbmVyLCBFbGVtZW50UmVmLCBPdXRwdXQsIElucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5cclxuaW1wb3J0IHtBdWRpb0NsaXBVSUNvbnRhaW5lcn0gZnJvbSAnLi9jb250YWluZXInXHJcbmltcG9ydCB7QWN0aW9ufSBmcm9tIFwiLi4vLi4vYWN0aW9uL2FjdGlvblwiO1xyXG5pbXBvcnQge1Bvc2l0aW9uLERpbWVuc2lvbiwgUmVjdGFuZ2xlfSBmcm9tIFwiLi4vLi4vbWF0aC8yZC9nZW9tZXRyeVwiO1xyXG5pbXBvcnQge0F1ZGlvQ2xpcCwgU2VsZWN0aW9ufSBmcm9tIFwiLi4vcGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi4vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2F1ZGlvLWRpc3BsYXktc2Nyb2xsLXBhbmUnLFxyXG5cclxuICB0ZW1wbGF0ZTogYFxyXG5cclxuICAgIDxhcHAtYXVkaW8gI2F1ZGlvU2lnbmFsQ29udGFpbmVyIChzZWxlY3Rpb25FdmVudEVtaXR0ZXIpPVwic2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+PC9hcHAtYXVkaW8+XHJcblxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICBgOmhvc3Qge1xyXG4gICAgICAgICAgIGZsZXg6IDI7XHJcbiAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgYmFja2dyb3VuZDogZGFya2dyYXk7XHJcbiAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcclxuICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICAgICB9YCxcclxuICAgIGBhcHAtYXVkaW8ge1xyXG4gICAgIFxyXG4gICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICBcclxuICAgICAgICAgLypwb3NpdGlvbjogYWJzb2x1dGU7Ki9cclxuICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgIH1gXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEF1ZGlvRGlzcGxheVNjcm9sbFBhbmUge1xyXG5cclxuICBwcml2YXRlIHNwRWwhOkhUTUxFbGVtZW50O1xyXG5cclxuICBAT3V0cHV0KCkgem9vbUluQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKCcrJyk7XHJcbiAgQE91dHB1dCgpIHpvb21PdXRBY3Rpb246QWN0aW9uPHZvaWQ+PW5ldyBBY3Rpb24oJy0nKTtcclxuICBAT3V0cHV0KCkgem9vbVNlbGVjdGVkQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKFwiU2VsZWN0ZWRcIik7XHJcbiAgQE91dHB1dCgpIHpvb21GaXRUb1BhbmVsQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKFwiRml0IHRvIHBhbmVsXCIpO1xyXG4gIHpvb21GaXhGaXRUb1BhbmVsQWN0aW9uOkFjdGlvbjx2b2lkPj1uZXcgQWN0aW9uKFwiRml4IGZpdCB0byBwYW5lbFwiKTtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoQXVkaW9DbGlwVUlDb250YWluZXIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBhYyE6IEF1ZGlvQ2xpcFVJQ29udGFpbmVyO1xyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgICB0aGlzLnNwRWwgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgdGhpcy56b29tSW5BY3Rpb24ub25BY3Rpb24gPSAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hYy5maXhGaXRUb1BhbmVsID0gZmFsc2VcclxuICAgICAgICAgIGNvbnN0IG9sZFhab29tID0gdGhpcy5hYy5jdXJyZW50WFpvb20oKVxyXG4gICAgICAgICAgaWYob2xkWFpvb20gPT09IG51bGwpe1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmFjLnhab29tID0gb2xkWFpvb20gKiAyO1xyXG4gICAgICAgICAgbGV0IGNiciA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKHRoaXMuc3BFbC5zY3JvbGxMZWZ0LCB0aGlzLnNwRWwuc2Nyb2xsVG9wKSwgbmV3IERpbWVuc2lvbih0aGlzLnNwRWwuY2xpZW50V2lkdGgsIHRoaXMuc3BFbC5jbGllbnRIZWlnaHQpKTtcclxuICAgICAgICAgIHRoaXMuYWMuY2xpcEJvdW5kcyhjYnIpO1xyXG4gICAgICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbi5kaXNhYmxlZD1mYWxzZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuem9vbU91dEFjdGlvbi5vbkFjdGlvbiA9IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjLmZpeEZpdFRvUGFuZWwgPSBmYWxzZVxyXG4gICAgICAgICAgY29uc3QgY2JyMSA9IG5ldyBSZWN0YW5nbGUobmV3IFBvc2l0aW9uKCh0aGlzLnNwRWwuc2Nyb2xsTGVmdCAvIDIpIC0gdGhpcy5zcEVsLmNsaWVudFdpZHRoLCB0aGlzLnNwRWwuc2Nyb2xsVG9wKSwgbmV3IERpbWVuc2lvbih0aGlzLnNwRWwuY2xpZW50V2lkdGgsIHRoaXMuc3BFbC5jbGllbnRIZWlnaHQpKTtcclxuICAgICAgICAgIHRoaXMuYWMuY2xpcEJvdW5kcyhjYnIxKTtcclxuICAgICAgICAgIGxldCBvbGRYWm9vbSA9IHRoaXMuYWMuY3VycmVudFhab29tKClcclxuICAgICAgICAgIGlmKG9sZFhab29tID09PSBudWxsKXtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFjLnhab29tID0gb2xkWFpvb20gLyAyO1xyXG5cclxuICAgICAgICAgIGxldCBjYnIgPSBuZXcgUmVjdGFuZ2xlKG5ldyBQb3NpdGlvbih0aGlzLnNwRWwuc2Nyb2xsTGVmdCwgdGhpcy5zcEVsLnNjcm9sbFRvcCksIG5ldyBEaW1lbnNpb24odGhpcy5zcEVsLmNsaWVudFdpZHRoLCB0aGlzLnNwRWwuY2xpZW50SGVpZ2h0KSk7XHJcbiAgICAgICAgICB0aGlzLmFjLmNsaXBCb3VuZHMoY2JyKTtcclxuICAgICAgICAgIHRoaXMuem9vbUZpdFRvUGFuZWxBY3Rpb24uZGlzYWJsZWQ9ZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbi5vbkFjdGlvbiA9IChlKSA9PiB7XHJcblxyXG4gICAgICAgICAgdGhpcy56b29tRml0VG9QYW5lbEFjdGlvbi5kaXNhYmxlZD10cnVlXHJcblxyXG4gICAgICAgICAgLy8gc2V0IGNvbnRhaW5lciBkaXYgd2lkdGggdG8gdGhpcyAodmlld3BvcnQpIHdpZHRoXHJcbiAgICAgICAgICB0aGlzLmFjLmNlLnN0eWxlLndpZHRoPXRoaXMuc3BFbC5vZmZzZXRXaWR0aCsncHgnO1xyXG5cclxuICAgICAgICAgIHRoaXMuYWMuZml4Rml0VG9QYW5lbD10cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbi5vbkFjdGlvbiA9IChlKSA9PiB7XHJcbiAgICAgICAgICAvL2FsZXJ0KFwibm90IGltcGxlbWVudGVkIHlldFwiKVxyXG5cclxuICAgICAgICAgIGxldCBzID0gdGhpcy5hYy5zZWxlY3Rpb25cclxuICAgICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICAgICAgLy8gcmVzZXQgYXV0byBmaXQgdG8gcGFuZWwgbW9kZVxyXG4gICAgICAgICAgICAgIHRoaXMuYWMuZml4Rml0VG9QYW5lbCA9IGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBzZWxlY3Rpb24gbGVuZ3RoIGluIHNlY29uZHNcclxuICAgICAgICAgICAgICBpZih0aGlzLmFjLmF1ZGlvRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc3IgPSB0aGlzLmFjLmF1ZGlvRGF0YS5zYW1wbGVSYXRlO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc2VsRnJMZW4gPSBzLmVuZEZyYW1lIC0gcy5zdGFydEZyYW1lO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc2VsTGVuSW5TZWNzID0gc2VsRnJMZW4gLyBzcjtcclxuICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGNvcnJlc3BvbmRpbmcgeFpvb20gdmFsdWUgYW5kIGFwcGx5XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWMueFpvb20gPSB0aGlzLnNwRWwuY2xpZW50V2lkdGggLyBzZWxMZW5JblNlY3M7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBNb3ZlIHZpZXdwb3J0IHRvIHNob3cgc2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgIGxldCB4MSA9IHRoaXMuYWMuZnJhbWVUb1hQaXhlbFBvc2l0aW9uKHMuc3RhcnRGcmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh4MSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcEVsLnNjcm9sbExlZnQgPSB4MTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNsaXBCb3VuZHMoKVxyXG4gICAgICAgICAgICAgIHRoaXMuem9vbUZpdFRvUGFuZWxBY3Rpb24uZGlzYWJsZWQgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZUNsaXBCb3VuZHMoKXtcclxuICAgIGxldCBjYnI9bmV3IFJlY3RhbmdsZShuZXcgUG9zaXRpb24odGhpcy5zcEVsLnNjcm9sbExlZnQsdGhpcy5zcEVsLnNjcm9sbFRvcCksIG5ldyBEaW1lbnNpb24odGhpcy5zcEVsLmNsaWVudFdpZHRoLHRoaXMuc3BFbC5jbGllbnRIZWlnaHQpKTtcclxuICAgIHRoaXMuYWMuY2xpcEJvdW5kcyhjYnIpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSlcclxuICBvblNjcm9sbChzZTogRXZlbnQpIHtcclxuICAgICB0aGlzLnVwZGF0ZUNsaXBCb3VuZHMoKVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUNsaXBCb3VuZHMoKVxyXG4gIH1cclxuXHJcbiAgbGF5b3V0KCl7XHJcbiAgICAgICAgICB0aGlzLmFjLmxheW91dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdGlvbkNoYW5nZWQoczpTZWxlY3Rpb258IG51bGwpe1xyXG4gICAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbi5kaXNhYmxlZD0ocz09bnVsbClcclxuICAgIH1cclxuXHJcbiAgc2V0IGF1ZGlvRGF0YShhdWRpb0RhdGE6IEF1ZGlvRGF0YUhvbGRlciB8IG51bGwpIHtcclxuICAgIHRoaXMuYWMuYXVkaW9EYXRhPWF1ZGlvRGF0YTtcclxuICAgICAgdGhpcy56b29tT3V0QWN0aW9uLmRpc2FibGVkPSghYXVkaW9EYXRhKVxyXG4gICAgICB0aGlzLnpvb21JbkFjdGlvbi5kaXNhYmxlZD0oIWF1ZGlvRGF0YSlcclxuICAgIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGF1ZGlvQ2xpcChhdWRpb0NsaXA6IEF1ZGlvQ2xpcCB8IG51bGwpIHtcclxuXHJcbiAgICBsZXQgYXVkaW9EYXRhOkF1ZGlvRGF0YUhvbGRlcnxudWxsPW51bGw7XHJcbiAgICBsZXQgc2VsOlNlbGVjdGlvbnxudWxsPW51bGw7XHJcbiAgICBpZihhdWRpb0NsaXApe1xyXG4gICAgICBhdWRpb0RhdGE9YXVkaW9DbGlwLmF1ZGlvRGF0YUhvbGRlcjtcclxuICAgICAgc2VsPWF1ZGlvQ2xpcC5zZWxlY3Rpb247XHJcbiAgICAgIGF1ZGlvQ2xpcC5hZGRTZWxlY3Rpb25PYnNlcnZlcigoY2xpcCk9PntcclxuICAgICAgICB0aGlzLnpvb21TZWxlY3RlZEFjdGlvbi5kaXNhYmxlZD0oY2xpcC5zZWxlY3Rpb249PW51bGwpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkKHNlbClcclxuICAgIHRoaXMuYWMuYXVkaW9DbGlwPWF1ZGlvQ2xpcFxyXG4gICAgdGhpcy56b29tT3V0QWN0aW9uLmRpc2FibGVkPSghYXVkaW9EYXRhKVxyXG4gICAgdGhpcy56b29tSW5BY3Rpb24uZGlzYWJsZWQ9KCFhdWRpb0RhdGEpXHJcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICB0aGlzLmxheW91dCgpO1xyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihmcmFtZVBvczpudW1iZXIpe1xyXG4gICAgdGhpcy5hYy5wbGF5RnJhbWVQb3NpdGlvbj1mcmFtZVBvcztcclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuIl19
|
|
@@ -507,15 +507,15 @@ export class AudioSignal extends AudioCanvasLayerComponent {
|
|
|
507
507
|
this._audioDataHolder = audioData;
|
|
508
508
|
this.playFramePosition = 0;
|
|
509
509
|
}
|
|
510
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
511
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
510
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioSignal, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
511
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: AudioSignal, selector: "audio-signal", viewQueries: [{ propertyName: "audioSignalCanvasRef", first: true, predicate: ["audioSignal"], descendants: true, static: true }, { propertyName: "playPosCanvasRef", first: true, predicate: ["marker"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
|
|
512
512
|
<canvas #bg height="10"></canvas>
|
|
513
513
|
<canvas #audioSignal height="10"></canvas>
|
|
514
514
|
<canvas #cursor height="10" (mousedown)="selectionStart($event)" (mouseover)="updateCursorCanvas($event)" (mousemove)="updateCursorCanvas($event)"
|
|
515
515
|
(mouseleave)="updateCursorCanvas($event, false)"></canvas>
|
|
516
516
|
<canvas #marker height="10"></canvas>`, isInline: true, styles: [":host{min-height:0px}\n", "canvas{top:0;left:0;width:0;height:0;min-height:0px;position:absolute}\n"] }); }
|
|
517
517
|
}
|
|
518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AudioSignal, decorators: [{
|
|
519
519
|
type: Component,
|
|
520
520
|
args: [{ selector: 'audio-signal', template: `
|
|
521
521
|
<canvas #bg height="10"></canvas>
|
|
@@ -530,4 +530,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
530
530
|
type: ViewChild,
|
|
531
531
|
args: ['marker', { static: true }]
|
|
532
532
|
}] } });
|
|
533
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vdWkvYXVkaW9zaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQzs7QUEyQnhFLE1BQU0sT0FBTyxXQUFZLFNBQVEseUJBQXlCO0lBaUJ4RCxZQUFvQixHQUFlO1FBQ2pDLEtBQUssRUFBRSxDQUFDO1FBRFUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQVAzQix1QkFBa0IsR0FBYyxJQUFJLENBQUM7UUFFckMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFHM0IsY0FBUyxHQUFtQixJQUFJLENBQUM7UUFJdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBQyxPQUFPLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBQyxxQkFBcUIsQ0FBQTtJQUV6QyxDQUFDO0lBRUQsZUFBZTtRQUViLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxD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RSxJQUFJLEVBQUU7Z0JBQ0gsZ0JBQWdCO3NCQUF0RCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50fSBmcm9tIFwiLi9hdWRpb19jYW52YXNfbGF5ZXJfY29tcFwiO1xyXG5pbXBvcnQge1dvcmtlckhlbHBlcn0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XHJcbmltcG9ydCB7QXVkaW9CdWZmZXJTb3VyY2UsIEF1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZGVjbGFyZSBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlOiBhbnksIHRyYW5zZmVyOiBBcnJheTxhbnk+KTogdm9pZDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2F1ZGlvLXNpZ25hbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjYW52YXMgI2JnIGhlaWdodD1cIjEwXCI+PC9jYW52YXM+XHJcbiAgICA8Y2FudmFzICNhdWRpb1NpZ25hbCBoZWlnaHQ9XCIxMFwiPjwvY2FudmFzPlxyXG4gICAgPGNhbnZhcyAjY3Vyc29yIGhlaWdodD1cIjEwXCIgKG1vdXNlZG93bik9XCJzZWxlY3Rpb25TdGFydCgkZXZlbnQpXCIgKG1vdXNlb3Zlcik9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50KVwiIChtb3VzZW1vdmUpPVwidXBkYXRlQ3Vyc29yQ2FudmFzKCRldmVudClcIlxyXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50LCBmYWxzZSlcIj48L2NhbnZhcz5cclxuICAgIDxjYW52YXMgI21hcmtlciBoZWlnaHQ9XCIxMFwiPjwvY2FudmFzPmAsXHJcblxyXG4gIHN0eWxlczogW2A6aG9zdHtcclxuICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgfWAsYGNhbnZhcyB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDA7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaW9TaWduYWwgZXh0ZW5kcyBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50e1xyXG5cclxuICBuOiBhbnk7XHJcbiAgY2UhOiBIVE1MRGl2RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdhdWRpb1NpZ25hbCcsIHsgc3RhdGljOiB0cnVlIH0pIGF1ZGlvU2lnbmFsQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdtYXJrZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBwbGF5UG9zQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBzaWduYWxDYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuXHJcbiAgbWFya2VyQ2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XHJcblxyXG4gIHByaXZhdGUgX3BsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICBwcml2YXRlIHdvcmtlcjogV29ya2VyIHwgbnVsbD1udWxsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2VyVVJMOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgcmFBc1N1YnNjOlN1YnNjcmlwdGlvbnxudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy53b3JrZXJVUkwgPSBXb3JrZXJIZWxwZXIuYnVpbGRXb3JrZXJCbG9iVVJMKHRoaXMud29ya2VyRnVuY3Rpb24pXHJcbiAgICB0aGlzLl9hdWRpb0RhdGFIb2xkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5fYmdDb2xvcj0nYmxhY2snO1xyXG4gICAgdGhpcy5fc2VsZWN0Q29sb3I9J3JnYmEoMjU1LDI1NSwwLDAuOCknXHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5iZ0NhbnZhcyA9IHRoaXMuYmdDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuYmdDYW52YXMuc3R5bGUuekluZGV4ID0gJzEnO1xyXG4gICAgdGhpcy5zaWduYWxDYW52YXMgPSB0aGlzLmF1ZGlvU2lnbmFsQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLnNpZ25hbENhbnZhcy5zdHlsZS56SW5kZXggPSAnMic7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcyA9IHRoaXMucGxheVBvc0NhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUuekluZGV4ID0gJzMnO1xyXG4gICAgdGhpcy5jdXJzb3JDYW52YXMgPSB0aGlzLmN1cnNvckNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5jdXJzb3JDYW52YXMuc3R5bGUuekluZGV4ID0gJzQnO1xyXG5cclxuICAgIHRoaXMuY2FudmFzTGF5ZXJzWzBdPXRoaXMuYmdDYW52YXM7XHJcbiAgICB0aGlzLmNhbnZhc0xheWVyc1sxXT10aGlzLnNpZ25hbENhbnZhcztcclxuICAgIHRoaXMuY2FudmFzTGF5ZXJzWzJdPXRoaXMuY3Vyc29yQ2FudmFzO1xyXG4gICAgdGhpcy5jYW52YXNMYXllcnNbM109dGhpcy5tYXJrZXJDYW52YXM7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXlGcmFtZVBvc2l0aW9uKCk6IG51bWJlciB8bnVsbHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihwbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyfG51bGwpIHtcclxuICAgIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZHJhd1BsYXlQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLm1hcmtlckNhbnZhcykge1xyXG4gICAgICBsZXQgdyA9IHRoaXMubWFya2VyQ2FudmFzLndpZHRoO1xyXG4gICAgICBsZXQgaCA9IHRoaXMubWFya2VyQ2FudmFzLmhlaWdodDtcclxuICAgICAgbGV0IGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgaWYodGhpcy5fcGxheUZyYW1lUG9zaXRpb24pIHtcclxuICAgICAgICAgIGxldCBwaXhlbFBvcyA9IHRoaXMuZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24odGhpcy5fcGxheUZyYW1lUG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpeGVsUG9zKSB7XHJcbiAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAncmVkJztcclxuICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgZy5tb3ZlVG8ocGl4ZWxQb3MsIDApO1xyXG4gICAgICAgICAgICBnLmxpbmVUbyhwaXhlbFBvcywgaCk7XHJcbiAgICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGcuc3Ryb2tlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqICBNZXRob2QgdXNlZCBhcyB3b3JrZXIgY29kZS5cclxuICAgKi9cclxuICB3b3JrZXJGdW5jdGlvbigpIHtcclxuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoeyBkYXRhIH0pID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGF1ZGlvRGF0YSA9IGRhdGEuYXVkaW9EYXRhOyAvLyBhdWRpbyBkYXRhIHBhcnQgcmVxdWlyZWQgdG8gcmVuZGVyIHZpZXcgcG9ydFxyXG4gICAgICBjb25zdCBhdU9mZnNldDpudW1iZXI9ZGF0YS5hdWRpb0RhdGFPZmZzZXQ7XHJcbiAgICAgIGNvbnN0IGw9IGRhdGEubDsgLy8gbGVmdCBwaXhlbCBwb3NpdGlvbiBvZiB2aWV3IHBvcnRcclxuICAgICAgY29uc3QgdyA9IGRhdGEudzsgIC8vIHdpZHRoIG9mIHZpZXdwb3J0XHJcbiAgICAgIGNvbnN0IHZ3ID0gZGF0YS52dzsgLy8gIHRvdGFsIHdpZHRoIG9mICh2aXJ0dWFsKSBhdWRpbyB2aWV3IChub3Qgdmlld3BvcnQgd2lkdGgpXHJcbiAgICAgIGNvbnN0IGNocyA9IGRhdGEuY2hzOyAvLyBudW1iZXIgb2YgY2hhbm5lbHNcclxuICAgICAgLy9jb25zdCBkYXRhRnJhbWVMZW5ndGggPSBkYXRhLmF1ZGlvRGF0YUZyYW1lTGVuZ3RoOyAgLy8gZnJhbWUgbGVuZ3RoIG9mIGF1ZGlvIGRhdGEgcGFydCByZXF1aXJlZCBmb3IgdmlldyBwb3J0XHJcbiAgICAgIGNvbnN0IGZyYW1lTGVuZ3RoID0gZGF0YS5mcmFtZUxlbmd0aDsgIC8vIHRvdGFsIGZyYW1lIGxlbmd0aCAob2YgYXVkaW8gY2xpcClcclxuXHJcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlc6IGxlZnQ6IFwiK2wrXCIsIHc6XCIrdytcIiwgdnc6IFwiK3Z3K1wiLCBjaHM6IFwiK2NocytcIiwgZnJhbWVMZW5ndGg6IFwiK2ZyYW1lTGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCBwc01pbk1heD0gbmV3IEZsb2F0MzJBcnJheSgwKTtcclxuXHJcbiAgICAgIGlmKGF1ZGlvRGF0YSAmJiBhdWRpb0RhdGEubGVuZ3RoPjAgJiYgdz49MCAmJiB2dz4wKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IGZyYW1lc1BlclBpeGVsID0gZnJhbWVMZW5ndGggLyB2dztcclxuXHJcbiAgICAgICAgY29uc3QgcG9pbnRzTGVuID0gdyAqIGNocztcclxuICAgICAgICAvLyBvbmUgZm9yIG1pbiBvbmUgZm9yIG1heFxyXG4gICAgICAgIGNvbnN0IGFyckxlbiA9IHBvaW50c0xlbiAqIDI7XHJcbiAgICAgICAgcHNNaW5NYXggPSBuZXcgRmxvYXQzMkFycmF5KGFyckxlbik7XHJcbiAgICAgICAgbGV0IGNoRnJhbWVQb3MgPSAwO1xyXG4gICAgICAgIGNvbnN0IGNoRnJhbWVMZW5ndGg9YXVkaW9EYXRhLmxlbmd0aC9jaHM7XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG5cclxuICAgICAgICAgIGNoRnJhbWVQb3MgPSBjaCAqIGNoRnJhbWVMZW5ndGg7XHJcbiAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2aXJ0UGlpPWwrcGlpO1xyXG4gICAgICAgICAgICBsZXQgcE1pbiA9IEluZmluaXR5O1xyXG4gICAgICAgICAgICBsZXQgcE1heCA9IC1JbmZpbml0eTtcclxuICAgICAgICAgICAgbGV0IHBpeGVsRnJhbWVQb3MgPSBNYXRoLnJvdW5kKGNoRnJhbWVQb3MgKyAodmlydFBpaSAqIGZyYW1lc1BlclBpeGVsKSk7XHJcblxyXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgcGl4ZWwgbWluL21heCBhbXBsaXR1ZGVcclxuICAgICAgICAgICAgZm9yIChsZXQgYWkgPSAwOyBhaSA8IGZyYW1lc1BlclBpeGVsOyBhaSsrKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJhbWVQb3MgPSBwaXhlbEZyYW1lUG9zICsgYWk7XHJcbiAgICAgICAgICAgICAgbGV0IGEgPSAwO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJ1ZlBvcz1mcmFtZVBvcy1hdU9mZnNldDtcclxuICAgICAgICAgICAgICAvL2xldCBidWZQb3M9ZnJhbWVQb3M7XHJcbiAgICAgICAgICAgICAgaWYoYnVmUG9zPj0wICYmIGJ1ZlBvczxhdWRpb0RhdGEubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGE9YXVkaW9EYXRhW2J1ZlBvc107XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJXOiBjaDogXCIrY2grXCIsIHBpeGVsRnJhbWVQb3M6IFwiK3BpeGVsRnJhbWVQb3MrXCIsIGZyYW1lUG9zOiBcIitmcmFtZVBvcytcIiwgYXVPZmZzZXQ6IFwiK2F1T2Zmc2V0K1wiLCBidWZQb3M6IFwiK2J1ZlBvcytcIiwgYXVkaW9EYXRhLmxlbmd0aDogXCIrYXVkaW9EYXRhLmxlbmd0aCtcIiwgYTogXCIrYSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYSA8IHBNaW4pIHtcclxuICAgICAgICAgICAgICAgICAgcE1pbiA9IGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYSA+IHBNYXgpIHtcclxuICAgICAgICAgICAgICAgICAgcE1heCA9IGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwc01pblBvcyA9IGNoICogdyArIHBpaTtcclxuICAgICAgICAgICAgcHNNaW5NYXhbcHNNaW5Qb3NdID0gcE1pbjtcclxuICAgICAgICAgICAgY29uc3QgcHNNYXhQb3MgPSBwb2ludHNMZW4gKyBwc01pblBvcztcclxuICAgICAgICAgICAgcHNNaW5NYXhbcHNNYXhQb3NdID0gcE1heDtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwicHNNaW5NYXhbXCIrcHNNaW5Qb3MrXCJdPVwiK3BNaW4rXCIscHNNaW5NYXhbXCIrcHNNYXhQb3MrXCJdPVwiK3BNYXgpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcG9zdE1lc3NhZ2Uoe3BzTWluTWF4OiBwc01pbk1heCwgbDpkYXRhLmwsdzogZGF0YS53LCBjaHM6IGRhdGEuY2hzLGVvZDpkYXRhLmVvZH0sIFtwc01pbk1heC5idWZmZXJdKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHN0YXJ0RHJhdyhjbGVhciA9IHRydWUpIHtcclxuICAgIGlmIChjbGVhcikge1xyXG4gICAgICBpZih0aGlzLmJvdW5kcykge1xyXG4gICAgICAgIHRoaXMuc2lnbmFsQ2FudmFzLnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLnBvc2l0aW9uLmxlZnQpLnRvU3RyaW5nKCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuc2lnbmFsQ2FudmFzLndpZHRoID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgIHRoaXMuc2lnbmFsQ2FudmFzLmhlaWdodCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLmhlaWdodCk7XHJcblxyXG4gICAgICAgIGxldCBnID0gdGhpcy5zaWduYWxDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgICAvL2cuY2xlYXJSZWN0KDAsIDAsdywgaCk7XHJcbiAgICAgICAgICBnLmZpbGxTdHlsZSA9IFwiYmxhY2tcIjtcclxuICAgICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpLCBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3RhcnRSZW5kZXIoKTtcclxuICAgIHRoaXMuZHJhd0N1cnNvckxheWVyKClcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN0YXJ0UmVuZGVyKCkge1xyXG5cclxuICAgIGlmICh0aGlzLndvcmtlcikge1xyXG4gICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgdGhpcy53b3JrZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5yYUFzU3Vic2Mpe1xyXG4gICAgICB0aGlzLnJhQXNTdWJzYy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9EYXRhSG9sZGVyLmFkZE9uUmVhZHlMaXN0ZW5lcigoKT0+e1xyXG4gICAgICAgICAgaWYodGhpcy5fYXVkaW9EYXRhSG9sZGVyICYmIHRoaXMuYm91bmRzICYmIHRoaXMuYm91bmRzLmRpbWVuc2lvbikge1xyXG4gICAgICAgICAgICBsZXQgdyA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLndpZHRoKTtcclxuICAgICAgICAgICAgbGV0IGggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpO1xyXG4gICAgICAgICAgICBsZXQgdncgPSBNYXRoLnJvdW5kKHRoaXMudmlydHVhbERpbWVuc2lvbi53aWR0aCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodyA+IDAgJiYgaCA+IDAgJiYgdncgPiAwKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vdGhpcy53byA9IG5ldyBXb3JrZXIoJy4vYXVkaW9zaWduYWwud29ya2VyLmpzJyx7dHlwZTogJ21vZHVsZSd9KTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtlciA9IG5ldyBXb3JrZXIodGhpcy53b3JrZXJVUkwpO1xyXG4gICAgICAgICAgICAgIC8vdGhpcy53byA9IG5ldyBXb3JrZXIoJ3dvcmtlci9hdWRpb3NpZ25hbC53b3JrZXIudHMnKTtcclxuXHJcbiAgICAgICAgICAgICAgLy9sZXQgV29ya2VyID0gcmVxdWlyZSgnd29ya2VyIS4uLy4uLy4uL3dvcmtlcnMvdXBsb2FkZXIvbWFpbicpO1xyXG4gICAgICAgICAgICAgIGxldCBjaHMgPSB0aGlzLl9hdWRpb0RhdGFIb2xkZXIubnVtYmVyT2ZDaGFubmVscztcclxuICAgICAgICAgICAgICBsZXQgbGVmdFBvcyA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMucG9zaXRpb24ubGVmdCk7XHJcbiAgICAgICAgICAgICAgbGV0IHJlbmRlclBvcyA9IGxlZnRQb3M7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5mcmFtZUxlbjtcclxuICAgICAgICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSBNYXRoLmNlaWwoZnJhbWVMZW5ndGggLyB2dyk7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQ2hzOiBcIiArIGNocyArIFwiLCB2dzogXCIgKyB2dyArIFwiLCBmcmFtZUxlbmd0aDogXCIgKyBmcmFtZUxlbmd0aCArIFwiLCBmcmFtZXNQZXJQaXhlbDogXCIgKyBmcmFtZXNQZXJQaXhlbCk7XHJcbiAgICAgICAgICAgICAgbGV0IGFkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGNocyAqIGZyYW1lc1BlclBpeGVsKTtcclxuICAgICAgICAgICAgICBsZXQgcmFBcyA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5yYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSgpO1xyXG4gICAgICAgICAgICAgIGxldCBhdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgICAgICBsZXQgYXVkaW9Tb3VyY2UgPSB0aGlzLl9hdWRpb0RhdGFIb2xkZXIuYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgICAgICAgaWYgKGF1ZGlvU291cmNlIGluc3RhbmNlb2YgQXVkaW9CdWZmZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGF1ZGlvQnVmZmVyID0gYXVkaW9Tb3VyY2UuYXVkaW9CdWZmZXI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vbGV0IGFycmF5QXVkaW9CdWZmZXI9dGhpcy5fYXVkaW9EYXRhSG9sZGVyLmFycmF5QnVmZmVyO1xyXG4gICAgICAgICAgICAgIGxldCBhcnJBYkJ1ZjogRmxvYXQzMkFycmF5W10gfCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICAvL2xldCBhaXM6QXJyYXlBdWRpb0J1ZmZlcklucHV0U3RyZWFtfG51bGw9bnVsbDtcclxuICAgICAgICAgICAgICAvL2xldCBhaXNCdWY6RmxvYXQzMkFycmF5W118bnVsbD1udWxsO1xyXG4gICAgICAgICAgICAgIGxldCBwc01pbk1heDogRmxvYXQzMkFycmF5IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLndvcmtlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZXIub25tZXNzYWdlID0gKG1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChtZS5kYXRhLmVvZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwc01pbk1heFRtcDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHNNaW5NYXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBzTWluTWF4VG1wID0gcHNNaW5NYXg7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBzTWluTWF4VG1wID0gbWUuZGF0YS5wc01pbk1heDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3UmVuZGVyZWQobGVmdFBvcywgdywgaCwgY2hzLCBwc01pbk1heFRtcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmFBcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2F1ZGlvRGF0YUhvbGRlciAmJiBhcnJBYkJ1Zikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ3ID0gbWUuZGF0YS53O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJQb2ludHNMZW4gPSBjaHMgKiBydztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludHNMZW4gPSBjaHMgKiB3O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwc01pbk1heCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgckJhc2VQb3MgPSBjaCAqIHJ3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZVBvcyA9IGNoICogdztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJQb3NNaW4gPSByQmFzZVBvcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJQb3NNYXggPSByUG9pbnRzTGVuICsgclBvc01pbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc01pbiA9IGJhc2VQb3MgKyAocmVuZGVyUG9zIC0gbGVmdFBvcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NNYXggPSBwb2ludHNMZW4gKyBwb3NNaW47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwc01pbk1heFtwb3NNaW5dID0gbWUuZGF0YS5wc01pbk1heFtyUG9zTWluXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdNaW46ICgnK3Bvc01pbisnKTogJyttZS5kYXRhLnBzTWluTWF4W3JQb3NNaW5dKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHNNaW5NYXhbcG9zTWF4XSA9IG1lLmRhdGEucHNNaW5NYXhbclBvc01heF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnTWF4OiAoJysocG9zTWF4KSsnKTogJyttZS5kYXRhLnBzTWluTWF4W3JQb3NNYXhdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwicHNNaW5NYXhbXCIrcG9zTWluK1wiXT1cIittZS5kYXRhLnBzTWluTWF4W3JQb3NNaW5dK1wiICAoclBvc01pbj1cIityUG9zTWluK1wiKSxwc01pbk1heFtcIitwb3NNYXgrXCJdPVwiK21lLmRhdGEucHNNaW5NYXhbclBvc01heF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZW9kID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyUG9zKys7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9sZXQgYWQ6RmxvYXQzMkFycmF5O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0RnJhbWVQb3MgPSBNYXRoLmZsb29yKGZyYW1lTGVuZ3RoICogcmVuZGVyUG9zIC8gdncpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJQb3MgPCBsZWZ0UG9zICsgdykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhQXNPYnMgPSByYUFzLmZyYW1lc09icyhsZWZ0RnJhbWVQb3MsIGZyYW1lc1BlclBpeGVsLCBhcnJBYkJ1ZilcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhQXNTdWJzYyA9IHJhQXNPYnMuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKHJlYWQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkZpcnN0IHJlYWQgZnJhbWU6IFwiK2FyckFiQnVmWzBdWzBdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJBYkJ1Zikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZExlbiA9IGNocyAqIGZyYW1lc1BlclBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkIHx8IGFkLmxlbmd0aCAhPT0gYWRMZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCA9IG5ldyBGbG9hdDMyQXJyYXkoYWRMZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZC5zZXQoYXJyQWJCdWZbY2hdLCBjaCAqIGZyYW1lc1BlclBpeGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9kID0gKHJlYWQgPD0gMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWRCdWYgPSBhZC5idWZmZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53b3JrZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHJlbmRlclBvcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBtZS5kYXRhLncsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogaCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dzogdncsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzOiBjaHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVMZW5ndGg6IGZyYW1lTGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGF0YTogYWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhT2Zmc2V0OiBsZWZ0RnJhbWVQb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9kOiBlb2RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW2FkQnVmXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1ZGlvU2lnbmFsOiBFcnJvciByZWFkaW5nIGF1ZGlvIGRhdGE6IFwiICsgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGFkID0gbmV3IEZsb2F0MzJBcnJheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZW9kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkQnVmID0gYWQuYnVmZmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2VyLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsOiByZW5kZXJQb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbWUuZGF0YS53LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGg6IGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdnc6IHZ3LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoczogY2hzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RhdGE6IGFkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGF0YU9mZnNldDogbGVmdEZyYW1lUG9zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVvZDogZW9kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFthZEJ1Zl0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGF1ZGlvQnVmZmVyICYmIGF1ZGlvQnVmZmVyLmxlbmd0aCAqIGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgPCBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50LkVOQUJMRV9TVFJFQU1JTkdfTlVNQkVSX09GX1NBTVBMRVNfVEhSRVNIT0xEKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVuZGVyIHdob2xlIGNsaXAgYXQgb25jZVxyXG4gICAgICAgICAgICAgICAgYXJyQWJCdWYgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcHNNaW5NYXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWQgPSBuZXcgRmxvYXQzMkFycmF5KGNocyAqIGZyYW1lTGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgYWQuc2V0KGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKGNoKSwgY2ggKiBmcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgIGw6IGxlZnRQb3MsXHJcbiAgICAgICAgICAgICAgICAgIHc6IHcsXHJcbiAgICAgICAgICAgICAgICAgIHZ3OiB2dyxcclxuICAgICAgICAgICAgICAgICAgY2hzOiBjaHMsXHJcbiAgICAgICAgICAgICAgICAgIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiBhZCxcclxuICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhT2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICAgICAgICBlb2Q6IHRydWVcclxuICAgICAgICAgICAgICAgIH0sIFthZC5idWZmZXJdKTtcclxuXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBSZW5kZXIgcGl4ZWwgYnkgcGl4ZWxcclxuICAgICAgICAgICAgICAgIGlmICh3ID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lc1BlclBpeGVsID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBydyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyQWJCdWYgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5PihjaHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBzTWluTWF4ID0gbmV3IEZsb2F0MzJBcnJheShjaHMgKiB3ICogMik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQXVkaW9zaWduYWw6IEFsbG9jYXRpbmcgYnVmZmVyczogXCIrZnJhbWVzUGVyUGl4ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGFyckFiQnVmW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkoZnJhbWVzUGVyUGl4ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0RnJhbWVQb3MgPSBNYXRoLmZsb29yKGZyYW1lTGVuZ3RoICogcmVuZGVyUG9zIC8gdncpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1T2Zmc2V0ID0gbGVmdEZyYW1lUG9zOyAvLyBzaG91bGQgYWx3YXlzIGJlIDBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFBc09icyA9IHJhQXMuZnJhbWVzT2JzKGxlZnRGcmFtZVBvcywgZnJhbWVzUGVyUGl4ZWwsIGFyckFiQnVmKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3U3RhdGVUZXh0KFwiTG9hZGluZy9SZW5kZXJpbmcuLi5cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFBc1N1YnNjID0gcmFBc09icy5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IChyZWFkKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJBYkJ1ZiAmJiB0aGlzLndvcmtlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRMZW4gPSBjaHMgKiBmcmFtZXNQZXJQaXhlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWQgfHwgYWQubGVuZ3RoICE9PSBhZExlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCA9IG5ldyBGbG9hdDMyQXJyYXkoYWRMZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZC5zZXQoYXJyQWJCdWZbY2hdLCBjaCAqIGZyYW1lc1BlclBpeGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHJlbmRlclBvcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogcncsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ3OiB2dyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzOiBjaHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiBhZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhT2Zmc2V0OiBhdU9mZnNldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9kOiAocmVhZCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW2FkLmJ1ZmZlcl0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQXVkaW9TaWduYWw6IEVycm9yIHJlYWRpbmcgYXVkaW8gZGF0YTogXCIgKyBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmJvdW5kcyAmJiB0aGlzLmJvdW5kcy5kaW1lbnNpb24pIHtcclxuICAgICAgICAgIGxldCB3ID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgICAgbGV0IGggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpO1xyXG4gICAgICAgICAgbGV0IGcgPSB0aGlzLnNpZ25hbENhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICBpZiAoZykge1xyXG4gICAgICAgICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgfVxyXG5cclxuZHJhd1N0YXRlVGV4dChzdGF0ZVRleHQ6c3RyaW5nKSB7XHJcbiAgICBpZihzdGF0ZVRleHQpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuc2lnbmFsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgY29uc3Qgdz10aGlzLnNpZ25hbENhbnZhcy53aWR0aDtcclxuICAgICAgY29uc3QgaD10aGlzLnNpZ25hbENhbnZhcy5oZWlnaHQ7XHJcbiAgICAgIGlmIChnICYmIHcgJiYgaCkge1xyXG4gICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnO1xyXG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcclxuICAgICAgICBnLmZvbnQgPSAnMjBweCBzYW5zLXNlcmlmJztcclxuICAgICAgICBnLmZpbGxUZXh0KHN0YXRlVGV4dCwgMTAsIDI1KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiAgZHJhd1JlbmRlcmVkKGxlZnQ6bnVtYmVyLHc6bnVtYmVyLGg6bnVtYmVyLGNoczpudW1iZXIscHNNaW5NYXg6RmxvYXQzMkFycmF5KSB7XHJcbiAgICB0aGlzLmRyYXdCZygpO1xyXG4gICAgdGhpcy5zaWduYWxDYW52YXMuc3R5bGUubGVmdD1sZWZ0LnRvU3RyaW5nKCkrJ3B4JztcclxuICAgIHRoaXMuc2lnbmFsQ2FudmFzLndpZHRoID0gdztcclxuICAgIHRoaXMuc2lnbmFsQ2FudmFzLmhlaWdodCA9IGg7XHJcbiAgICBsZXQgZyA9IHRoaXMuc2lnbmFsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGcuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICBsZXQgcG9pbnRzTGVuID0gdyAqIGNocztcclxuICAgICAgLy8gb25lIGZvciBtaW4gb25lIGZvciBtYXhcclxuICAgICAgLy9jb25zdCBhcnJMZW4gPSBwb2ludHNMZW4gKiAyO1xyXG4gICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgLy9jb25zdCBzdGQgPSBEYXRlLm5vdygpO1xyXG5cclxuICAgICAgICBjb25zdCBjaEggPSBoIC8gY2hzO1xyXG5cclxuICAgICAgICBsZXQgeSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICAgY29uc3QgcHNNaW5Qb3MgPSBjaCAqIHc7XHJcbiAgICAgICAgICBjb25zdCBwc01heFBvcyA9IHBvaW50c0xlbiArIHBzTWluUG9zO1xyXG5cclxuICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ2dyZWVuJztcclxuICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnZ3JlZW4nO1xyXG5cclxuICAgICAgICAgIC8vIGRyYXcgYXVkaW8gc2lnbmFsIGFzIHNpbmdsZSBwb2x5Z29uXHJcbiAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgZy5tb3ZlVG8oMCwgeSArIChjaEggLyAyKSArIHBzTWluTWF4W3BzTWF4UG9zXSAqIGNoSCAvIDIpO1xyXG5cclxuICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBzTWF4ID0gcHNNaW5NYXhbcHNNYXhQb3MgKyBwaWldO1xyXG4gICAgICAgICAgICBjb25zdCBwdiA9IHBzTWF4ICogY2hIIC8gMjtcclxuICAgICAgICAgICAgY29uc3QgeWQ9eSArIChjaEggLyAyKSAtIHB2O1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiTGluZVRvOiA6IFwiK3BpaStcIiBcIit5ZClcclxuICAgICAgICAgICAgZy5saW5lVG8ocGlpLCB5ZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCByZXZQaXhlbFN0YXJ0PXctMTtcclxuXHJcbiAgICAgICAgICBmb3IgKGxldCBwaWkgPSByZXZQaXhlbFN0YXJ0OyBwaWkgPj0gMDsgcGlpLS0pIHtcclxuICAgICAgICAgICAgY29uc3QgcHNNaW4gPSBwc01pbk1heFtwc01pblBvcyArIHBpaV07XHJcbiAgICAgICAgICAgIGNvbnN0IHB2ID0gcHNNaW4gKiBjaEggLyAyO1xyXG4gICAgICAgICAgICBjb25zdCB5ZD15ICsgKGNoSCAvIDIpIC0gcHY7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJMaW5lVG86IDogXCIrcGlpK1wiIFwiK3lkKVxyXG4gICAgICAgICAgICBnLmxpbmVUbyhwaWksIHlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcblxyXG4gICAgICAgICAgZy5maWxsKCk7XHJcbiAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gICAgICAgICAgeSArPSBjaEg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyByZWRyYXcoKSB7XHJcbiAgLy8gICB0aGlzLmRyYXdCZygpXHJcbiAgLy8gICBsZXQgZyA9IHRoaXMuc2lnbmFsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAvLyAgIGlmIChnKSB7XHJcbiAgLy8gICAgIGxldCB3ID0gdGhpcy5zaWduYWxDYW52YXMud2lkdGg7XHJcbiAgLy8gICAgIGxldCBoID0gdGhpcy5zaWduYWxDYW52YXMuaGVpZ2h0O1xyXG4gIC8vICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAvLyAgICAgLy9nLmZpbGxTdHlsZSA9IFwiYmxhY2tcIjtcclxuICAvLyAgICAgLy9nLmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xyXG4gIC8vICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgLy8gICAgICAgbGV0IHN0ZCA9IERhdGUubm93KCk7XHJcbiAgLy8gICAgICAgbGV0IGNocyA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5udW1iZXJPZkNoYW5uZWxzO1xyXG4gIC8vICAgICAgIGxldCBjaEggPSBoIC8gY2hzO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgbGV0IGZyYW1lTGVuZ3RoID0gdGhpcy5fYXVkaW9EYXRhSG9sZGVyLmZyYW1lTGVuO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgbGV0IGZyYW1lc1BlclBpeGVsID0gZnJhbWVMZW5ndGggLyB3O1xyXG4gIC8vICAgICAgIGxldCB5ID0gMDtcclxuICAvLyAgICAgICBsZXQgYWlzOkZsb2F0MzJBcnJheUlucHV0U3RyZWFtfG51bGw9bnVsbDtcclxuICAvLyAgICAgICBsZXQgYXVkaW9Tb3VyY2U9dGhpcy5fYXVkaW9EYXRhSG9sZGVyLmF1ZGlvU291cmNlO1xyXG4gIC8vICAgICAgIGxldCBhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcnxudWxsPW51bGw7XHJcbiAgLy8gICAgICAgaWYoYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBdWRpb0J1ZmZlclNvdXJjZSl7XHJcbiAgLy8gICAgICAgICBhdWRpb0J1ZmZlcj1hdWRpb1NvdXJjZS5hdWRpb0J1ZmZlcjtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgbGV0IGFpc0J1ZmZlcjpBcnJheTxGbG9hdDMyQXJyYXk+fG51bGw9bnVsbDtcclxuICAvLyAgICAgICBpZighYXVkaW9CdWZmZXIpIHtcclxuICAvLyAgICAgICAgIGFpcz10aGlzLl9hdWRpb0RhdGFIb2xkZXIuYXVkaW9JbnB1dFN0cmVhbSgpO1xyXG4gIC8vICAgICAgICAgYWlzQnVmZmVyPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KGNocyk7XHJcbiAgLy8gICAgICAgICBmb3IobGV0IGNoPTA7Y2g8Y2hzO2NoKyspIHtcclxuICAvLyAgICAgICAgICAgYWlzQnVmZmVyW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkoZnJhbWVzUGVyUGl4ZWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAvLyAgICAgICAgICAgbGV0IHggPSAwO1xyXG4gIC8vICAgICAgICAgICBsZXQgcHNNaW4gPSBuZXcgRmxvYXQzMkFycmF5KHcpO1xyXG4gIC8vICAgICAgICAgICBsZXQgcHNNYXggPSBuZXcgRmxvYXQzMkFycmF5KHcpO1xyXG4gIC8vICAgICAgICAgICBsZXQgZnJhbWVQb3MgPSAwO1xyXG4gIC8vICAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gIC8vICAgICAgICAgICAgIGxldCBwTWluID0gMDtcclxuICAvLyAgICAgICAgICAgICBsZXQgcE1heCA9IDA7XHJcbiAgLy9cclxuICAvLyAgICAgICAgICAgICBpZiAoYXVkaW9CdWZmZXIpe1xyXG4gIC8vICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHBpeGVsIG1pbi9tYXggYW1wbGl0dWRlXHJcbiAgLy8gICAgICAgICAgICAgICBmb3IgKGxldCBhaSA9IDA7IGFpIDwgZnJhbWVzUGVyUGl4ZWw7IGFpKyspIHtcclxuICAvLyAgICAgICAgICAgICAgICAgLy9sZXQgZnJhbWVQb3M9KHBpaSpmcmFtZXNQZXJQaXhlbCkrYWk7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGxldCBhID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpW2ZyYW1lUG9zKytdO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmIChhIDwgcE1pbikge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHBNaW4gPSBhO1xyXG4gIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmIChhID4gcE1heCkge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHBNYXggPSBhO1xyXG4gIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH1lbHNlIGlmKGFpcyAmJiBhaXNCdWZmZXIpIHtcclxuICAvLyAgICAgICAgICAgICAgIGxldCByID0gYWlzLnJlYWQoYWlzQnVmZmVyKTtcclxuICAvLyAgICAgICAgICAgICAgIGZvciAobGV0IGFpID0gMDsgYWkgPCByOyBhaSsrKSB7XHJcbiAgLy9cclxuICAvLyAgICAgICAgICAgICAgICAgbGV0IGEgPSBhaXNCdWZmZXJbY2hdW2FpXTtcclxuICAvL1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZiAoYSA8IHBNaW4pIHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBwTWluID0gYTtcclxuICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgICAgICBpZiAoYSA+IHBNYXgpIHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBwTWF4ID0gYTtcclxuICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICBwc01pbltwaWldID0gcE1pbjtcclxuICAvLyAgICAgICAgICAgICBwc01heFtwaWldID0gcE1heDtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICdncmVlbic7XHJcbiAgLy8gICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnZ3JlZW4nO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgICAgIC8vIGRyYXcgYXVkaW8gc2lnbmFsIGFzIHNpbmdsZSBwb2x5Z29uXHJcbiAgLy8gICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgLy8gICAgICAgICAgIGcubW92ZVRvKDAsIHkgKyAoY2hIIC8gMikgKyBwc01pblswXSAqIGNoSCAvIDIpO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgLy8gICAgICAgICAgICAgbGV0IHB2ID0gcHNNaW5bcGlpXSAqIGNoSCAvIDI7XHJcbiAgLy8gICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIk1pbjogXCIscHYpO1xyXG4gIC8vICAgICAgICAgICAgIGcubGluZVRvKHBpaSwgeSArIChjaEggLyAyKSArIHB2KTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICBmb3IgKGxldCBwaWkgPSB3OyBwaWkgPj0gMDsgcGlpLS0pIHtcclxuICAvLyAgICAgICAgICAgICBsZXQgcHYgPSBwc01heFtwaWldICogY2hIIC8gMjtcclxuICAvLyAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiTWF4OiBcIixwdik7XHJcbiAgLy8gICAgICAgICAgICAgZy5saW5lVG8ocGlpLCB5ICsgKGNoSCAvIDIpICsgcHYpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcbiAgLy8gICAgICAgICAgIC8vZy5saW5lVG8oKVxyXG4gIC8vICAgICAgICAgICBnLmZpbGwoKTtcclxuICAvLyAgICAgICAgICAgZy5zdHJva2UoKTtcclxuICAvLyAgICAgICAgICAgZy5maWxsU3R5bGUgPSBcInllbGxvd1wiO1xyXG4gIC8vICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gIC8vICAgICAgICAgICB5ICs9IGNoSDtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICBhaXM/LmNsb3NlKCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHNldERhdGEoYXVkaW9EYXRhOiBBdWRpb0RhdGFIb2xkZXIgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9hdWRpb0RhdGFIb2xkZXIgPSBhdWRpb0RhdGE7XHJcbiAgICB0aGlzLnBsYXlGcmFtZVBvc2l0aW9uID0gMDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
533
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW9zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvYXVkaW8vdWkvYXVkaW9zaWduYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxzQkFBc0IsQ0FBQzs7QUEyQnhFLE1BQU0sT0FBTyxXQUFZLFNBQVEseUJBQXlCO0lBaUJ4RCxZQUFvQixHQUFlO1FBQ2pDLEtBQUssRUFBRSxDQUFDO1FBRFUsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQVAzQix1QkFBa0IsR0FBYyxJQUFJLENBQUM7UUFFckMsV0FBTSxHQUFnQixJQUFJLENBQUM7UUFHM0IsY0FBUyxHQUFtQixJQUFJLENBQUM7UUFJdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBQyxPQUFPLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBQyxxQkFBcUIsQ0FBQTtJQUV6QyxDQUFDO0lBRUQsZUFBZTtRQUViLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxD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Qiw2REFBNkQ7SUFDN0QsRUFBRTtJQUNGLGdEQUFnRDtJQUNoRCw2Q0FBNkM7SUFDN0MseUNBQXlDO0lBQ3pDLGlEQUFpRDtJQUNqRCxjQUFjO0lBQ2QsaURBQWlEO0lBQ2pELDZDQUE2QztJQUM3Qyx5Q0FBeUM7SUFDekMsaURBQWlEO0lBQ2pELGNBQWM7SUFDZCwyQkFBMkI7SUFDM0IseUJBQXlCO0lBQ3pCLHNCQUFzQjtJQUN0Qix3QkFBd0I7SUFDeEIsb0NBQW9DO0lBQ3BDLHdCQUF3QjtJQUN4QixzQkFBc0I7SUFDdEIsWUFBWTtJQUNaLHNCQUFzQjtJQUN0QixRQUFRO0lBQ1IsTUFBTTtJQUNOLElBQUk7SUFFSixPQUFPLENBQUMsU0FBaUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7OEdBOWpCVSxXQUFXO2tHQUFYLFdBQVcseVRBbkJaOzs7OzswQ0FLOEI7OzJGQWM3QixXQUFXO2tCQXRCdkIsU0FBUzsrQkFFRSxjQUFjLFlBQ2Q7Ozs7OzBDQUs4QjsrRUFrQkksb0JBQW9CO3NCQUEvRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0gsZ0JBQWdCO3NCQUF0RCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50fSBmcm9tIFwiLi9hdWRpb19jYW52YXNfbGF5ZXJfY29tcFwiO1xyXG5pbXBvcnQge1dvcmtlckhlbHBlcn0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XHJcbmltcG9ydCB7QXVkaW9CdWZmZXJTb3VyY2UsIEF1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZGVjbGFyZSBmdW5jdGlvbiBwb3N0TWVzc2FnZShtZXNzYWdlOiBhbnksIHRyYW5zZmVyOiBBcnJheTxhbnk+KTogdm9pZDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cclxuICBzZWxlY3RvcjogJ2F1ZGlvLXNpZ25hbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjYW52YXMgI2JnIGhlaWdodD1cIjEwXCI+PC9jYW52YXM+XHJcbiAgICA8Y2FudmFzICNhdWRpb1NpZ25hbCBoZWlnaHQ9XCIxMFwiPjwvY2FudmFzPlxyXG4gICAgPGNhbnZhcyAjY3Vyc29yIGhlaWdodD1cIjEwXCIgKG1vdXNlZG93bik9XCJzZWxlY3Rpb25TdGFydCgkZXZlbnQpXCIgKG1vdXNlb3Zlcik9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50KVwiIChtb3VzZW1vdmUpPVwidXBkYXRlQ3Vyc29yQ2FudmFzKCRldmVudClcIlxyXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ1cGRhdGVDdXJzb3JDYW52YXMoJGV2ZW50LCBmYWxzZSlcIj48L2NhbnZhcz5cclxuICAgIDxjYW52YXMgI21hcmtlciBoZWlnaHQ9XCIxMFwiPjwvY2FudmFzPmAsXHJcblxyXG4gIHN0eWxlczogW2A6aG9zdHtcclxuICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgfWAsYGNhbnZhcyB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDA7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBtaW4taGVpZ2h0OiAwcHg7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfWBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaW9TaWduYWwgZXh0ZW5kcyBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50e1xyXG5cclxuICBuOiBhbnk7XHJcbiAgY2UhOiBIVE1MRGl2RWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdhdWRpb1NpZ25hbCcsIHsgc3RhdGljOiB0cnVlIH0pIGF1ZGlvU2lnbmFsQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdtYXJrZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBwbGF5UG9zQ2FudmFzUmVmITogRWxlbWVudFJlZjtcclxuICBzaWduYWxDYW52YXMhOiBIVE1MQ2FudmFzRWxlbWVudDtcclxuXHJcbiAgbWFya2VyQ2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XHJcblxyXG4gIHByaXZhdGUgX3BsYXlGcmFtZVBvc2l0aW9uOiBudW1iZXJ8bnVsbD1udWxsO1xyXG5cclxuICBwcml2YXRlIHdvcmtlcjogV29ya2VyIHwgbnVsbD1udWxsO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya2VyVVJMOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgcmFBc1N1YnNjOlN1YnNjcmlwdGlvbnxudWxsPW51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy53b3JrZXJVUkwgPSBXb3JrZXJIZWxwZXIuYnVpbGRXb3JrZXJCbG9iVVJMKHRoaXMud29ya2VyRnVuY3Rpb24pXHJcbiAgICB0aGlzLl9hdWRpb0RhdGFIb2xkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5fYmdDb2xvcj0nYmxhY2snO1xyXG4gICAgdGhpcy5fc2VsZWN0Q29sb3I9J3JnYmEoMjU1LDI1NSwwLDAuOCknXHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICAgIHRoaXMuY2UgPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5iZ0NhbnZhcyA9IHRoaXMuYmdDYW52YXNSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuYmdDYW52YXMuc3R5bGUuekluZGV4ID0gJzEnO1xyXG4gICAgdGhpcy5zaWduYWxDYW52YXMgPSB0aGlzLmF1ZGlvU2lnbmFsQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLnNpZ25hbENhbnZhcy5zdHlsZS56SW5kZXggPSAnMic7XHJcbiAgICB0aGlzLm1hcmtlckNhbnZhcyA9IHRoaXMucGxheVBvc0NhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5tYXJrZXJDYW52YXMuc3R5bGUuekluZGV4ID0gJzMnO1xyXG4gICAgdGhpcy5jdXJzb3JDYW52YXMgPSB0aGlzLmN1cnNvckNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5jdXJzb3JDYW52YXMuc3R5bGUuekluZGV4ID0gJzQnO1xyXG5cclxuICAgIHRoaXMuY2FudmFzTGF5ZXJzWzBdPXRoaXMuYmdDYW52YXM7XHJcbiAgICB0aGlzLmNhbnZhc0xheWVyc1sxXT10aGlzLnNpZ25hbENhbnZhcztcclxuICAgIHRoaXMuY2FudmFzTGF5ZXJzWzJdPXRoaXMuY3Vyc29yQ2FudmFzO1xyXG4gICAgdGhpcy5jYW52YXNMYXllcnNbM109dGhpcy5tYXJrZXJDYW52YXM7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXlGcmFtZVBvc2l0aW9uKCk6IG51bWJlciB8bnVsbHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5RnJhbWVQb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHNldCBwbGF5RnJhbWVQb3NpdGlvbihwbGF5RnJhbWVQb3NpdGlvbjogbnVtYmVyfG51bGwpIHtcclxuICAgIHRoaXMuX3BsYXlGcmFtZVBvc2l0aW9uID0gcGxheUZyYW1lUG9zaXRpb247XHJcbiAgICB0aGlzLmRyYXdQbGF5UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZHJhd1BsYXlQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLm1hcmtlckNhbnZhcykge1xyXG4gICAgICBsZXQgdyA9IHRoaXMubWFya2VyQ2FudmFzLndpZHRoO1xyXG4gICAgICBsZXQgaCA9IHRoaXMubWFya2VyQ2FudmFzLmhlaWdodDtcclxuICAgICAgbGV0IGcgPSB0aGlzLm1hcmtlckNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgdywgaCk7XHJcbiAgICAgICAgaWYodGhpcy5fcGxheUZyYW1lUG9zaXRpb24pIHtcclxuICAgICAgICAgIGxldCBwaXhlbFBvcyA9IHRoaXMuZnJhbWVUb1ZpZXdQb3J0WFBpeGVsUG9zaXRpb24odGhpcy5fcGxheUZyYW1lUG9zaXRpb24pO1xyXG4gICAgICAgICAgaWYgKHBpeGVsUG9zKSB7XHJcbiAgICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ3JlZCc7XHJcbiAgICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAncmVkJztcclxuICAgICAgICAgICAgZy5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgZy5tb3ZlVG8ocGl4ZWxQb3MsIDApO1xyXG4gICAgICAgICAgICBnLmxpbmVUbyhwaXhlbFBvcywgaCk7XHJcbiAgICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGcuc3Ryb2tlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqICBNZXRob2QgdXNlZCBhcyB3b3JrZXIgY29kZS5cclxuICAgKi9cclxuICB3b3JrZXJGdW5jdGlvbigpIHtcclxuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoeyBkYXRhIH0pID0+IHtcclxuXHJcbiAgICAgIGNvbnN0IGF1ZGlvRGF0YSA9IGRhdGEuYXVkaW9EYXRhOyAvLyBhdWRpbyBkYXRhIHBhcnQgcmVxdWlyZWQgdG8gcmVuZGVyIHZpZXcgcG9ydFxyXG4gICAgICBjb25zdCBhdU9mZnNldDpudW1iZXI9ZGF0YS5hdWRpb0RhdGFPZmZzZXQ7XHJcbiAgICAgIGNvbnN0IGw9IGRhdGEubDsgLy8gbGVmdCBwaXhlbCBwb3NpdGlvbiBvZiB2aWV3IHBvcnRcclxuICAgICAgY29uc3QgdyA9IGRhdGEudzsgIC8vIHdpZHRoIG9mIHZpZXdwb3J0XHJcbiAgICAgIGNvbnN0IHZ3ID0gZGF0YS52dzsgLy8gIHRvdGFsIHdpZHRoIG9mICh2aXJ0dWFsKSBhdWRpbyB2aWV3IChub3Qgdmlld3BvcnQgd2lkdGgpXHJcbiAgICAgIGNvbnN0IGNocyA9IGRhdGEuY2hzOyAvLyBudW1iZXIgb2YgY2hhbm5lbHNcclxuICAgICAgLy9jb25zdCBkYXRhRnJhbWVMZW5ndGggPSBkYXRhLmF1ZGlvRGF0YUZyYW1lTGVuZ3RoOyAgLy8gZnJhbWUgbGVuZ3RoIG9mIGF1ZGlvIGRhdGEgcGFydCByZXF1aXJlZCBmb3IgdmlldyBwb3J0XHJcbiAgICAgIGNvbnN0IGZyYW1lTGVuZ3RoID0gZGF0YS5mcmFtZUxlbmd0aDsgIC8vIHRvdGFsIGZyYW1lIGxlbmd0aCAob2YgYXVkaW8gY2xpcClcclxuXHJcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIlc6IGxlZnQ6IFwiK2wrXCIsIHc6XCIrdytcIiwgdnc6IFwiK3Z3K1wiLCBjaHM6IFwiK2NocytcIiwgZnJhbWVMZW5ndGg6IFwiK2ZyYW1lTGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCBwc01pbk1heD0gbmV3IEZsb2F0MzJBcnJheSgwKTtcclxuXHJcbiAgICAgIGlmKGF1ZGlvRGF0YSAmJiBhdWRpb0RhdGEubGVuZ3RoPjAgJiYgdz49MCAmJiB2dz4wKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IGZyYW1lc1BlclBpeGVsID0gZnJhbWVMZW5ndGggLyB2dztcclxuXHJcbiAgICAgICAgY29uc3QgcG9pbnRzTGVuID0gdyAqIGNocztcclxuICAgICAgICAvLyBvbmUgZm9yIG1pbiBvbmUgZm9yIG1heFxyXG4gICAgICAgIGNvbnN0IGFyckxlbiA9IHBvaW50c0xlbiAqIDI7XHJcbiAgICAgICAgcHNNaW5NYXggPSBuZXcgRmxvYXQzMkFycmF5KGFyckxlbik7XHJcbiAgICAgICAgbGV0IGNoRnJhbWVQb3MgPSAwO1xyXG4gICAgICAgIGNvbnN0IGNoRnJhbWVMZW5ndGg9YXVkaW9EYXRhLmxlbmd0aC9jaHM7XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG5cclxuICAgICAgICAgIGNoRnJhbWVQb3MgPSBjaCAqIGNoRnJhbWVMZW5ndGg7XHJcbiAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2aXJ0UGlpPWwrcGlpO1xyXG4gICAgICAgICAgICBsZXQgcE1pbiA9IEluZmluaXR5O1xyXG4gICAgICAgICAgICBsZXQgcE1heCA9IC1JbmZpbml0eTtcclxuICAgICAgICAgICAgbGV0IHBpeGVsRnJhbWVQb3MgPSBNYXRoLnJvdW5kKGNoRnJhbWVQb3MgKyAodmlydFBpaSAqIGZyYW1lc1BlclBpeGVsKSk7XHJcblxyXG4gICAgICAgICAgICAvLyBjYWxjdWxhdGUgcGl4ZWwgbWluL21heCBhbXBsaXR1ZGVcclxuICAgICAgICAgICAgZm9yIChsZXQgYWkgPSAwOyBhaSA8IGZyYW1lc1BlclBpeGVsOyBhaSsrKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZnJhbWVQb3MgPSBwaXhlbEZyYW1lUG9zICsgYWk7XHJcbiAgICAgICAgICAgICAgbGV0IGEgPSAwO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGJ1ZlBvcz1mcmFtZVBvcy1hdU9mZnNldDtcclxuICAgICAgICAgICAgICAvL2xldCBidWZQb3M9ZnJhbWVQb3M7XHJcbiAgICAgICAgICAgICAgaWYoYnVmUG9zPj0wICYmIGJ1ZlBvczxhdWRpb0RhdGEubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGE9YXVkaW9EYXRhW2J1ZlBvc107XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoXCJXOiBjaDogXCIrY2grXCIsIHBpeGVsRnJhbWVQb3M6IFwiK3BpeGVsRnJhbWVQb3MrXCIsIGZyYW1lUG9zOiBcIitmcmFtZVBvcytcIiwgYXVPZmZzZXQ6IFwiK2F1T2Zmc2V0K1wiLCBidWZQb3M6IFwiK2J1ZlBvcytcIiwgYXVkaW9EYXRhLmxlbmd0aDogXCIrYXVkaW9EYXRhLmxlbmd0aCtcIiwgYTogXCIrYSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYSA8IHBNaW4pIHtcclxuICAgICAgICAgICAgICAgICAgcE1pbiA9IGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoYSA+IHBNYXgpIHtcclxuICAgICAgICAgICAgICAgICAgcE1heCA9IGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwc01pblBvcyA9IGNoICogdyArIHBpaTtcclxuICAgICAgICAgICAgcHNNaW5NYXhbcHNNaW5Qb3NdID0gcE1pbjtcclxuICAgICAgICAgICAgY29uc3QgcHNNYXhQb3MgPSBwb2ludHNMZW4gKyBwc01pblBvcztcclxuICAgICAgICAgICAgcHNNaW5NYXhbcHNNYXhQb3NdID0gcE1heDtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwicHNNaW5NYXhbXCIrcHNNaW5Qb3MrXCJdPVwiK3BNaW4rXCIscHNNaW5NYXhbXCIrcHNNYXhQb3MrXCJdPVwiK3BNYXgpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcG9zdE1lc3NhZ2Uoe3BzTWluTWF4OiBwc01pbk1heCwgbDpkYXRhLmwsdzogZGF0YS53LCBjaHM6IGRhdGEuY2hzLGVvZDpkYXRhLmVvZH0sIFtwc01pbk1heC5idWZmZXJdKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHN0YXJ0RHJhdyhjbGVhciA9IHRydWUpIHtcclxuICAgIGlmIChjbGVhcikge1xyXG4gICAgICBpZih0aGlzLmJvdW5kcykge1xyXG4gICAgICAgIHRoaXMuc2lnbmFsQ2FudmFzLnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLnBvc2l0aW9uLmxlZnQpLnRvU3RyaW5nKCkgKyAncHgnO1xyXG4gICAgICAgIHRoaXMuc2lnbmFsQ2FudmFzLndpZHRoID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgIHRoaXMuc2lnbmFsQ2FudmFzLmhlaWdodCA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLmhlaWdodCk7XHJcblxyXG4gICAgICAgIGxldCBnID0gdGhpcy5zaWduYWxDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG4gICAgICAgIGlmIChnKSB7XHJcbiAgICAgICAgICAvL2cuY2xlYXJSZWN0KDAsIDAsdywgaCk7XHJcbiAgICAgICAgICBnLmZpbGxTdHlsZSA9IFwiYmxhY2tcIjtcclxuICAgICAgICAgIGcuZmlsbFJlY3QoMCwgMCwgTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpLCBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3RhcnRSZW5kZXIoKTtcclxuICAgIHRoaXMuZHJhd0N1cnNvckxheWVyKClcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN0YXJ0UmVuZGVyKCkge1xyXG5cclxuICAgIGlmICh0aGlzLndvcmtlcikge1xyXG4gICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgdGhpcy53b3JrZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYodGhpcy5yYUFzU3Vic2Mpe1xyXG4gICAgICB0aGlzLnJhQXNTdWJzYy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgdGhpcy5fYXVkaW9EYXRhSG9sZGVyLmFkZE9uUmVhZHlMaXN0ZW5lcigoKT0+e1xyXG4gICAgICAgICAgaWYodGhpcy5fYXVkaW9EYXRhSG9sZGVyICYmIHRoaXMuYm91bmRzICYmIHRoaXMuYm91bmRzLmRpbWVuc2lvbikge1xyXG4gICAgICAgICAgICBsZXQgdyA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMuZGltZW5zaW9uLndpZHRoKTtcclxuICAgICAgICAgICAgbGV0IGggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpO1xyXG4gICAgICAgICAgICBsZXQgdncgPSBNYXRoLnJvdW5kKHRoaXMudmlydHVhbERpbWVuc2lvbi53aWR0aCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodyA+IDAgJiYgaCA+IDAgJiYgdncgPiAwKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vdGhpcy53byA9IG5ldyBXb3JrZXIoJy4vYXVkaW9zaWduYWwud29ya2VyLmpzJyx7dHlwZTogJ21vZHVsZSd9KTtcclxuICAgICAgICAgICAgICB0aGlzLndvcmtlciA9IG5ldyBXb3JrZXIodGhpcy53b3JrZXJVUkwpO1xyXG4gICAgICAgICAgICAgIC8vdGhpcy53byA9IG5ldyBXb3JrZXIoJ3dvcmtlci9hdWRpb3NpZ25hbC53b3JrZXIudHMnKTtcclxuXHJcbiAgICAgICAgICAgICAgLy9sZXQgV29ya2VyID0gcmVxdWlyZSgnd29ya2VyIS4uLy4uLy4uL3dvcmtlcnMvdXBsb2FkZXIvbWFpbicpO1xyXG4gICAgICAgICAgICAgIGxldCBjaHMgPSB0aGlzLl9hdWRpb0RhdGFIb2xkZXIubnVtYmVyT2ZDaGFubmVscztcclxuICAgICAgICAgICAgICBsZXQgbGVmdFBvcyA9IE1hdGgucm91bmQodGhpcy5ib3VuZHMucG9zaXRpb24ubGVmdCk7XHJcbiAgICAgICAgICAgICAgbGV0IHJlbmRlclBvcyA9IGxlZnRQb3M7XHJcblxyXG4gICAgICAgICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5mcmFtZUxlbjtcclxuICAgICAgICAgICAgICBsZXQgZnJhbWVzUGVyUGl4ZWwgPSBNYXRoLmNlaWwoZnJhbWVMZW5ndGggLyB2dyk7XHJcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQ2hzOiBcIiArIGNocyArIFwiLCB2dzogXCIgKyB2dyArIFwiLCBmcmFtZUxlbmd0aDogXCIgKyBmcmFtZUxlbmd0aCArIFwiLCBmcmFtZXNQZXJQaXhlbDogXCIgKyBmcmFtZXNQZXJQaXhlbCk7XHJcbiAgICAgICAgICAgICAgbGV0IGFkOiBGbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGNocyAqIGZyYW1lc1BlclBpeGVsKTtcclxuICAgICAgICAgICAgICBsZXQgcmFBcyA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5yYW5kb21BY2Nlc3NBdWRpb1N0cmVhbSgpO1xyXG4gICAgICAgICAgICAgIGxldCBhdWRpb0J1ZmZlcjogQXVkaW9CdWZmZXIgfCBudWxsID0gbnVsbDtcclxuICAgICAgICAgICAgICBsZXQgYXVkaW9Tb3VyY2UgPSB0aGlzLl9hdWRpb0RhdGFIb2xkZXIuYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgICAgICAgaWYgKGF1ZGlvU291cmNlIGluc3RhbmNlb2YgQXVkaW9CdWZmZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIGF1ZGlvQnVmZmVyID0gYXVkaW9Tb3VyY2UuYXVkaW9CdWZmZXI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vbGV0IGFycmF5QXVkaW9CdWZmZXI9dGhpcy5fYXVkaW9EYXRhSG9sZGVyLmFycmF5QnVmZmVyO1xyXG4gICAgICAgICAgICAgIGxldCBhcnJBYkJ1ZjogRmxvYXQzMkFycmF5W10gfCBudWxsO1xyXG5cclxuICAgICAgICAgICAgICAvL2xldCBhaXM6QXJyYXlBdWRpb0J1ZmZlcklucHV0U3RyZWFtfG51bGw9bnVsbDtcclxuICAgICAgICAgICAgICAvL2xldCBhaXNCdWY6RmxvYXQzMkFycmF5W118bnVsbD1udWxsO1xyXG4gICAgICAgICAgICAgIGxldCBwc01pbk1heDogRmxvYXQzMkFycmF5IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLndvcmtlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZXIub25tZXNzYWdlID0gKG1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChtZS5kYXRhLmVvZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwc01pbk1heFRtcDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHNNaW5NYXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBzTWluTWF4VG1wID0gcHNNaW5NYXg7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBzTWluTWF4VG1wID0gbWUuZGF0YS5wc01pbk1heDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3UmVuZGVyZWQobGVmdFBvcywgdywgaCwgY2hzLCBwc01pbk1heFRtcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlci50ZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmFBcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2F1ZGlvRGF0YUhvbGRlciAmJiBhcnJBYkJ1Zikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ3ID0gbWUuZGF0YS53O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJQb2ludHNMZW4gPSBjaHMgKiBydztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludHNMZW4gPSBjaHMgKiB3O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChwc01pbk1heCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgckJhc2VQb3MgPSBjaCAqIHJ3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmFzZVBvcyA9IGNoICogdztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJQb3NNaW4gPSByQmFzZVBvcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJQb3NNYXggPSByUG9pbnRzTGVuICsgclBvc01pbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc01pbiA9IGJhc2VQb3MgKyAocmVuZGVyUG9zIC0gbGVmdFBvcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NNYXggPSBwb2ludHNMZW4gKyBwb3NNaW47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwc01pbk1heFtwb3NNaW5dID0gbWUuZGF0YS5wc01pbk1heFtyUG9zTWluXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKCdNaW46ICgnK3Bvc01pbisnKTogJyttZS5kYXRhLnBzTWluTWF4W3JQb3NNaW5dKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHNNaW5NYXhbcG9zTWF4XSA9IG1lLmRhdGEucHNNaW5NYXhbclBvc01heF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnTWF4OiAoJysocG9zTWF4KSsnKTogJyttZS5kYXRhLnBzTWluTWF4W3JQb3NNYXhdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwicHNNaW5NYXhbXCIrcG9zTWluK1wiXT1cIittZS5kYXRhLnBzTWluTWF4W3JQb3NNaW5dK1wiICAoclBvc01pbj1cIityUG9zTWluK1wiKSxwc01pbk1heFtcIitwb3NNYXgrXCJdPVwiK21lLmRhdGEucHNNaW5NYXhbclBvc01heF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZW9kID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyUG9zKys7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9sZXQgYWQ6RmxvYXQzMkFycmF5O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0RnJhbWVQb3MgPSBNYXRoLmZsb29yKGZyYW1lTGVuZ3RoICogcmVuZGVyUG9zIC8gdncpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJQb3MgPCBsZWZ0UG9zICsgdykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhQXNPYnMgPSByYUFzLmZyYW1lc09icyhsZWZ0RnJhbWVQb3MsIGZyYW1lc1BlclBpeGVsLCBhcnJBYkJ1ZilcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhQXNTdWJzYyA9IHJhQXNPYnMuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogKHJlYWQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhcIkZpcnN0IHJlYWQgZnJhbWU6IFwiK2FyckFiQnVmWzBdWzBdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJBYkJ1Zikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZExlbiA9IGNocyAqIGZyYW1lc1BlclBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFkIHx8IGFkLmxlbmd0aCAhPT0gYWRMZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCA9IG5ldyBGbG9hdDMyQXJyYXkoYWRMZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZC5zZXQoYXJyQWJCdWZbY2hdLCBjaCAqIGZyYW1lc1BlclBpeGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9kID0gKHJlYWQgPD0gMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWRCdWYgPSBhZC5idWZmZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy53b3JrZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHJlbmRlclBvcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiBtZS5kYXRhLncsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDogaCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dzogdncsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzOiBjaHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVMZW5ndGg6IGZyYW1lTGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGF0YTogYWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhT2Zmc2V0OiBsZWZ0RnJhbWVQb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9kOiBlb2RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW2FkQnVmXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1ZGlvU2lnbmFsOiBFcnJvciByZWFkaW5nIGF1ZGlvIGRhdGE6IFwiICsgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGFkID0gbmV3IEZsb2F0MzJBcnJheSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZW9kID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkQnVmID0gYWQuYnVmZmVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMud29ya2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud29ya2VyLnBvc3RNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsOiByZW5kZXJQb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdzogbWUuZGF0YS53LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGg6IGgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdnc6IHZ3LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoczogY2hzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0RhdGE6IGFkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvRGF0YU9mZnNldDogbGVmdEZyYW1lUG9zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVvZDogZW9kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFthZEJ1Zl0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGF1ZGlvQnVmZmVyICYmIGF1ZGlvQnVmZmVyLmxlbmd0aCAqIGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgPCBBdWRpb0NhbnZhc0xheWVyQ29tcG9uZW50LkVOQUJMRV9TVFJFQU1JTkdfTlVNQkVSX09GX1NBTVBMRVNfVEhSRVNIT0xEKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVuZGVyIHdob2xlIGNsaXAgYXQgb25jZVxyXG4gICAgICAgICAgICAgICAgYXJyQWJCdWYgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcHNNaW5NYXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWQgPSBuZXcgRmxvYXQzMkFycmF5KGNocyAqIGZyYW1lTGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgYWQuc2V0KGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKGNoKSwgY2ggKiBmcmFtZUxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgIGw6IGxlZnRQb3MsXHJcbiAgICAgICAgICAgICAgICAgIHc6IHcsXHJcbiAgICAgICAgICAgICAgICAgIHZ3OiB2dyxcclxuICAgICAgICAgICAgICAgICAgY2hzOiBjaHMsXHJcbiAgICAgICAgICAgICAgICAgIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiBhZCxcclxuICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhT2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICAgICAgICBlb2Q6IHRydWVcclxuICAgICAgICAgICAgICAgIH0sIFthZC5idWZmZXJdKTtcclxuXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBSZW5kZXIgcGl4ZWwgYnkgcGl4ZWxcclxuICAgICAgICAgICAgICAgIGlmICh3ID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lc1BlclBpeGVsID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBydyA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyQWJCdWYgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5PihjaHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBzTWluTWF4ID0gbmV3IEZsb2F0MzJBcnJheShjaHMgKiB3ICogMik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmRlYnVnKFwiQXVkaW9zaWduYWw6IEFsbG9jYXRpbmcgYnVmZmVyczogXCIrZnJhbWVzUGVyUGl4ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGFyckFiQnVmW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkoZnJhbWVzUGVyUGl4ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWZ0RnJhbWVQb3MgPSBNYXRoLmZsb29yKGZyYW1lTGVuZ3RoICogcmVuZGVyUG9zIC8gdncpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1T2Zmc2V0ID0gbGVmdEZyYW1lUG9zOyAvLyBzaG91bGQgYWx3YXlzIGJlIDBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFBc09icyA9IHJhQXMuZnJhbWVzT2JzKGxlZnRGcmFtZVBvcywgZnJhbWVzUGVyUGl4ZWwsIGFyckFiQnVmKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3U3RhdGVUZXh0KFwiTG9hZGluZy9SZW5kZXJpbmcuLi5cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFBc1N1YnNjID0gcmFBc09icy5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IChyZWFkKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJBYkJ1ZiAmJiB0aGlzLndvcmtlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRMZW4gPSBjaHMgKiBmcmFtZXNQZXJQaXhlbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYWQgfHwgYWQubGVuZ3RoICE9PSBhZExlbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZCA9IG5ldyBGbG9hdDMyQXJyYXkoYWRMZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZC5zZXQoYXJyQWJCdWZbY2hdLCBjaCAqIGZyYW1lc1BlclBpeGVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHJlbmRlclBvcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogcncsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ3OiB2dyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzOiBjaHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhOiBhZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EYXRhT2Zmc2V0OiBhdU9mZnNldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW9kOiAocmVhZCA8PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgW2FkLmJ1ZmZlcl0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQXVkaW9TaWduYWw6IEVycm9yIHJlYWRpbmcgYXVkaW8gZGF0YTogXCIgKyBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmJvdW5kcyAmJiB0aGlzLmJvdW5kcy5kaW1lbnNpb24pIHtcclxuICAgICAgICAgIGxldCB3ID0gTWF0aC5yb3VuZCh0aGlzLmJvdW5kcy5kaW1lbnNpb24ud2lkdGgpO1xyXG4gICAgICAgICAgbGV0IGggPSBNYXRoLnJvdW5kKHRoaXMuYm91bmRzLmRpbWVuc2lvbi5oZWlnaHQpO1xyXG4gICAgICAgICAgbGV0IGcgPSB0aGlzLnNpZ25hbENhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XHJcbiAgICAgICAgICBpZiAoZykge1xyXG4gICAgICAgICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgfVxyXG5cclxuZHJhd1N0YXRlVGV4dChzdGF0ZVRleHQ6c3RyaW5nKSB7XHJcbiAgICBpZihzdGF0ZVRleHQpIHtcclxuICAgICAgY29uc3QgZyA9IHRoaXMuc2lnbmFsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgICAgY29uc3Qgdz10aGlzLnNpZ25hbENhbnZhcy53aWR0aDtcclxuICAgICAgY29uc3QgaD10aGlzLnNpZ25hbENhbnZhcy5oZWlnaHQ7XHJcbiAgICAgIGlmIChnICYmIHcgJiYgaCkge1xyXG4gICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnd2hpdGUnO1xyXG4gICAgICAgIGcuZmlsbFN0eWxlID0gJ3doaXRlJztcclxuICAgICAgICBnLmZvbnQgPSAnMjBweCBzYW5zLXNlcmlmJztcclxuICAgICAgICBnLmZpbGxUZXh0KHN0YXRlVGV4dCwgMTAsIDI1KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiAgZHJhd1JlbmRlcmVkKGxlZnQ6bnVtYmVyLHc6bnVtYmVyLGg6bnVtYmVyLGNoczpudW1iZXIscHNNaW5NYXg6RmxvYXQzMkFycmF5KSB7XHJcbiAgICB0aGlzLmRyYXdCZygpO1xyXG4gICAgdGhpcy5zaWduYWxDYW52YXMuc3R5bGUubGVmdD1sZWZ0LnRvU3RyaW5nKCkrJ3B4JztcclxuICAgIHRoaXMuc2lnbmFsQ2FudmFzLndpZHRoID0gdztcclxuICAgIHRoaXMuc2lnbmFsQ2FudmFzLmhlaWdodCA9IGg7XHJcbiAgICBsZXQgZyA9IHRoaXMuc2lnbmFsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgIGlmIChnKSB7XHJcbiAgICAgIGcuY2xlYXJSZWN0KDAsIDAsIHcsIGgpO1xyXG4gICAgICBsZXQgcG9pbnRzTGVuID0gdyAqIGNocztcclxuICAgICAgLy8gb25lIGZvciBtaW4gb25lIGZvciBtYXhcclxuICAgICAgLy9jb25zdCBhcnJMZW4gPSBwb2ludHNMZW4gKiAyO1xyXG4gICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgLy9jb25zdCBzdGQgPSBEYXRlLm5vdygpO1xyXG5cclxuICAgICAgICBjb25zdCBjaEggPSBoIC8gY2hzO1xyXG5cclxuICAgICAgICBsZXQgeSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICAgY29uc3QgcHNNaW5Qb3MgPSBjaCAqIHc7XHJcbiAgICAgICAgICBjb25zdCBwc01heFBvcyA9IHBvaW50c0xlbiArIHBzTWluUG9zO1xyXG5cclxuICAgICAgICAgIGcuZmlsbFN0eWxlID0gJ2dyZWVuJztcclxuICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnZ3JlZW4nO1xyXG5cclxuICAgICAgICAgIC8vIGRyYXcgYXVkaW8gc2lnbmFsIGFzIHNpbmdsZSBwb2x5Z29uXHJcbiAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgZy5tb3ZlVG8oMCwgeSArIChjaEggLyAyKSArIHBzTWluTWF4W3BzTWF4UG9zXSAqIGNoSCAvIDIpO1xyXG5cclxuICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBzTWF4ID0gcHNNaW5NYXhbcHNNYXhQb3MgKyBwaWldO1xyXG4gICAgICAgICAgICBjb25zdCBwdiA9IHBzTWF4ICogY2hIIC8gMjtcclxuICAgICAgICAgICAgY29uc3QgeWQ9eSArIChjaEggLyAyKSAtIHB2O1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiTGluZVRvOiA6IFwiK3BpaStcIiBcIit5ZClcclxuICAgICAgICAgICAgZy5saW5lVG8ocGlpLCB5ZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCByZXZQaXhlbFN0YXJ0PXctMTtcclxuXHJcbiAgICAgICAgICBmb3IgKGxldCBwaWkgPSByZXZQaXhlbFN0YXJ0OyBwaWkgPj0gMDsgcGlpLS0pIHtcclxuICAgICAgICAgICAgY29uc3QgcHNNaW4gPSBwc01pbk1heFtwc01pblBvcyArIHBpaV07XHJcbiAgICAgICAgICAgIGNvbnN0IHB2ID0gcHNNaW4gKiBjaEggLyAyO1xyXG4gICAgICAgICAgICBjb25zdCB5ZD15ICsgKGNoSCAvIDIpIC0gcHY7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJMaW5lVG86IDogXCIrcGlpK1wiIFwiK3lkKVxyXG4gICAgICAgICAgICBnLmxpbmVUbyhwaWksIHlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcblxyXG4gICAgICAgICAgZy5maWxsKCk7XHJcbiAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gICAgICAgICAgeSArPSBjaEg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyByZWRyYXcoKSB7XHJcbiAgLy8gICB0aGlzLmRyYXdCZygpXHJcbiAgLy8gICBsZXQgZyA9IHRoaXMuc2lnbmFsQ2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAvLyAgIGlmIChnKSB7XHJcbiAgLy8gICAgIGxldCB3ID0gdGhpcy5zaWduYWxDYW52YXMud2lkdGg7XHJcbiAgLy8gICAgIGxldCBoID0gdGhpcy5zaWduYWxDYW52YXMuaGVpZ2h0O1xyXG4gIC8vICAgICBnLmNsZWFyUmVjdCgwLCAwLCB3LCBoKTtcclxuICAvLyAgICAgLy9nLmZpbGxTdHlsZSA9IFwiYmxhY2tcIjtcclxuICAvLyAgICAgLy9nLmZpbGxSZWN0KDAsIDAsIHcsIGgpO1xyXG4gIC8vICAgICBpZiAodGhpcy5fYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgLy8gICAgICAgbGV0IHN0ZCA9IERhdGUubm93KCk7XHJcbiAgLy8gICAgICAgbGV0IGNocyA9IHRoaXMuX2F1ZGlvRGF0YUhvbGRlci5udW1iZXJPZkNoYW5uZWxzO1xyXG4gIC8vICAgICAgIGxldCBjaEggPSBoIC8gY2hzO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgbGV0IGZyYW1lTGVuZ3RoID0gdGhpcy5fYXVkaW9EYXRhSG9sZGVyLmZyYW1lTGVuO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgbGV0IGZyYW1lc1BlclBpeGVsID0gZnJhbWVMZW5ndGggLyB3O1xyXG4gIC8vICAgICAgIGxldCB5ID0gMDtcclxuICAvLyAgICAgICBsZXQgYWlzOkZsb2F0MzJBcnJheUlucHV0U3RyZWFtfG51bGw9bnVsbDtcclxuICAvLyAgICAgICBsZXQgYXVkaW9Tb3VyY2U9dGhpcy5fYXVkaW9EYXRhSG9sZGVyLmF1ZGlvU291cmNlO1xyXG4gIC8vICAgICAgIGxldCBhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcnxudWxsPW51bGw7XHJcbiAgLy8gICAgICAgaWYoYXVkaW9Tb3VyY2UgaW5zdGFuY2VvZiBBdWRpb0J1ZmZlclNvdXJjZSl7XHJcbiAgLy8gICAgICAgICBhdWRpb0J1ZmZlcj1hdWRpb1NvdXJjZS5hdWRpb0J1ZmZlcjtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgbGV0IGFpc0J1ZmZlcjpBcnJheTxGbG9hdDMyQXJyYXk+fG51bGw9bnVsbDtcclxuICAvLyAgICAgICBpZighYXVkaW9CdWZmZXIpIHtcclxuICAvLyAgICAgICAgIGFpcz10aGlzLl9hdWRpb0RhdGFIb2xkZXIuYXVkaW9JbnB1dFN0cmVhbSgpO1xyXG4gIC8vICAgICAgICAgYWlzQnVmZmVyPW5ldyBBcnJheTxGbG9hdDMyQXJyYXk+KGNocyk7XHJcbiAgLy8gICAgICAgICBmb3IobGV0IGNoPTA7Y2g8Y2hzO2NoKyspIHtcclxuICAvLyAgICAgICAgICAgYWlzQnVmZmVyW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkoZnJhbWVzUGVyUGl4ZWwpO1xyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAvLyAgICAgICAgICAgbGV0IHggPSAwO1xyXG4gIC8vICAgICAgICAgICBsZXQgcHNNaW4gPSBuZXcgRmxvYXQzMkFycmF5KHcpO1xyXG4gIC8vICAgICAgICAgICBsZXQgcHNNYXggPSBuZXcgRmxvYXQzMkFycmF5KHcpO1xyXG4gIC8vICAgICAgICAgICBsZXQgZnJhbWVQb3MgPSAwO1xyXG4gIC8vICAgICAgICAgICBmb3IgKGxldCBwaWkgPSAwOyBwaWkgPCB3OyBwaWkrKykge1xyXG4gIC8vICAgICAgICAgICAgIGxldCBwTWluID0gMDtcclxuICAvLyAgICAgICAgICAgICBsZXQgcE1heCA9IDA7XHJcbiAgLy9cclxuICAvLyAgICAgICAgICAgICBpZiAoYXVkaW9CdWZmZXIpe1xyXG4gIC8vICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHBpeGVsIG1pbi9tYXggYW1wbGl0dWRlXHJcbiAgLy8gICAgICAgICAgICAgICBmb3IgKGxldCBhaSA9IDA7IGFpIDwgZnJhbWVzUGVyUGl4ZWw7IGFpKyspIHtcclxuICAvLyAgICAgICAgICAgICAgICAgLy9sZXQgZnJhbWVQb3M9KHBpaSpmcmFtZXNQZXJQaXhlbCkrYWk7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGxldCBhID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpW2ZyYW1lUG9zKytdO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmIChhIDwgcE1pbikge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHBNaW4gPSBhO1xyXG4gIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgICAgIGlmIChhID4gcE1heCkge1xyXG4gIC8vICAgICAgICAgICAgICAgICAgIHBNYXggPSBhO1xyXG4gIC8vICAgICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIH1lbHNlIGlmKGFpcyAmJiBhaXNCdWZmZXIpIHtcclxuICAvLyAgICAgICAgICAgICAgIGxldCByID0gYWlzLnJlYWQoYWlzQnVmZmVyKTtcclxuICAvLyAgICAgICAgICAgICAgIGZvciAobGV0IGFpID0gMDsgYWkgPCByOyBhaSsrKSB7XHJcbiAgLy9cclxuICAvLyAgICAgICAgICAgICAgICAgbGV0IGEgPSBhaXNCdWZmZXJbY2hdW2FpXTtcclxuICAvL1xyXG4gIC8vICAgICAgICAgICAgICAgICBpZiAoYSA8IHBNaW4pIHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBwTWluID0gYTtcclxuICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgICAgICBpZiAoYSA+IHBNYXgpIHtcclxuICAvLyAgICAgICAgICAgICAgICAgICBwTWF4ID0gYTtcclxuICAvLyAgICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgICBwc01pbltwaWldID0gcE1pbjtcclxuICAvLyAgICAgICAgICAgICBwc01heFtwaWldID0gcE1heDtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICBnLmZpbGxTdHlsZSA9ICdncmVlbic7XHJcbiAgLy8gICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnZ3JlZW4nO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgICAgIC8vIGRyYXcgYXVkaW8gc2lnbmFsIGFzIHNpbmdsZSBwb2x5Z29uXHJcbiAgLy8gICAgICAgICAgIGcuYmVnaW5QYXRoKCk7XHJcbiAgLy8gICAgICAgICAgIGcubW92ZVRvKDAsIHkgKyAoY2hIIC8gMikgKyBwc01pblswXSAqIGNoSCAvIDIpO1xyXG4gIC8vXHJcbiAgLy8gICAgICAgICAgIGZvciAobGV0IHBpaSA9IDA7IHBpaSA8IHc7IHBpaSsrKSB7XHJcbiAgLy8gICAgICAgICAgICAgbGV0IHB2ID0gcHNNaW5bcGlpXSAqIGNoSCAvIDI7XHJcbiAgLy8gICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIk1pbjogXCIscHYpO1xyXG4gIC8vICAgICAgICAgICAgIGcubGluZVRvKHBpaSwgeSArIChjaEggLyAyKSArIHB2KTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICBmb3IgKGxldCBwaWkgPSB3OyBwaWkgPj0gMDsgcGlpLS0pIHtcclxuICAvLyAgICAgICAgICAgICBsZXQgcHYgPSBwc01heFtwaWldICogY2hIIC8gMjtcclxuICAvLyAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiTWF4OiBcIixwdik7XHJcbiAgLy8gICAgICAgICAgICAgZy5saW5lVG8ocGlpLCB5ICsgKGNoSCAvIDIpICsgcHYpO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICAgIGcuY2xvc2VQYXRoKCk7XHJcbiAgLy8gICAgICAgICAgIC8vZy5saW5lVG8oKVxyXG4gIC8vICAgICAgICAgICBnLmZpbGwoKTtcclxuICAvLyAgICAgICAgICAgZy5zdHJva2UoKTtcclxuICAvLyAgICAgICAgICAgZy5maWxsU3R5bGUgPSBcInllbGxvd1wiO1xyXG4gIC8vICAgICAgICAgICBnLnN0cm9rZSgpO1xyXG4gIC8vICAgICAgICAgICB5ICs9IGNoSDtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICBhaXM/LmNsb3NlKCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHNldERhdGEoYXVkaW9EYXRhOiBBdWRpb0RhdGFIb2xkZXIgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9hdWRpb0RhdGFIb2xkZXIgPSBhdWRpb0RhdGE7XHJcbiAgICB0aGlzLnBsYXlGcmFtZVBvc2l0aW9uID0gMDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|