@firestitch/system 18.0.1 → 18.0.3
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/app/modules/system/components/process/process.component.d.ts +1 -12
- package/app/modules/system/components/processes/processes.component.d.ts +3 -12
- package/app/modules/system/data/process.data.d.ts +17 -0
- package/esm2022/app/modules/system/components/cron-next-run/cron-next-run.component.mjs +3 -3
- package/esm2022/app/modules/system/components/process/process.component.mjs +15 -19
- package/esm2022/app/modules/system/components/processes/processes.component.mjs +65 -83
- package/esm2022/app/modules/system/data/process.data.mjs +45 -0
- package/fesm2022/firestitch-system.mjs +119 -101
- package/fesm2022/firestitch-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -7,12 +7,6 @@ import { ProcessState } from './../../enums/process-state.enum';
|
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class ProcessComponent implements OnInit, OnDestroy {
|
|
9
9
|
data: {
|
|
10
|
-
run: (process: any) => Observable<any>;
|
|
11
|
-
queue: (process: any) => Observable<any>;
|
|
12
|
-
delete: (process: any) => Observable<any>;
|
|
13
|
-
kill: (process: any) => Observable<any>;
|
|
14
|
-
loadProcess: (process: any) => Observable<any>;
|
|
15
|
-
download: (process: any) => void;
|
|
16
10
|
process: any;
|
|
17
11
|
};
|
|
18
12
|
private _message;
|
|
@@ -23,13 +17,8 @@ export declare class ProcessComponent implements OnInit, OnDestroy {
|
|
|
23
17
|
ProcessProcessStates: {};
|
|
24
18
|
ProcessState: typeof ProcessState;
|
|
25
19
|
private _destroy$;
|
|
20
|
+
private _processData;
|
|
26
21
|
constructor(data: {
|
|
27
|
-
run: (process: any) => Observable<any>;
|
|
28
|
-
queue: (process: any) => Observable<any>;
|
|
29
|
-
delete: (process: any) => Observable<any>;
|
|
30
|
-
kill: (process: any) => Observable<any>;
|
|
31
|
-
loadProcess: (process: any) => Observable<any>;
|
|
32
|
-
download: (process: any) => void;
|
|
33
22
|
process: any;
|
|
34
23
|
}, _message: FsMessage, _cdRef: ChangeDetectorRef, _prompt: FsPrompt);
|
|
35
24
|
ngOnInit(): void;
|
|
@@ -2,7 +2,6 @@ import { OnDestroy, OnInit } from '@angular/core';
|
|
|
2
2
|
import { MatDialog } from '@angular/material/dialog';
|
|
3
3
|
import { FsListComponent, FsListConfig } from '@firestitch/list';
|
|
4
4
|
import { FsMessage } from '@firestitch/message';
|
|
5
|
-
import { Observable } from 'rxjs';
|
|
6
5
|
import { ProcessState } from '../../enums';
|
|
7
6
|
import { ProcessAction } from './../../interfaces/process-action';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
@@ -10,27 +9,19 @@ export declare class ProcessesComponent implements OnInit, OnDestroy {
|
|
|
10
9
|
private _dialog;
|
|
11
10
|
private _message;
|
|
12
11
|
list: FsListComponent;
|
|
13
|
-
loadProcesses: (data: any) => Observable<{
|
|
14
|
-
data: any[];
|
|
15
|
-
paging: any;
|
|
16
|
-
}>;
|
|
17
|
-
loadProcess: (data: any) => Observable<any>;
|
|
18
|
-
run: (data: any) => Observable<any>;
|
|
19
|
-
kill: (data: any) => Observable<any>;
|
|
20
|
-
delete: (data: any) => Observable<any>;
|
|
21
|
-
download: (data: any) => any;
|
|
22
|
-
queue: (data: any) => any;
|
|
23
12
|
actions: ProcessAction[];
|
|
24
13
|
config: FsListConfig;
|
|
25
14
|
ProcessStates: {};
|
|
26
15
|
ProcessState: typeof ProcessState;
|
|
27
16
|
private _destroy$;
|
|
17
|
+
private _processData;
|
|
28
18
|
constructor(_dialog: MatDialog, _message: FsMessage);
|
|
29
19
|
ngOnInit(): void;
|
|
30
20
|
reload(): void;
|
|
31
21
|
open(process: any): void;
|
|
32
22
|
ngOnDestroy(): void;
|
|
23
|
+
download(process: any): void;
|
|
33
24
|
private _configList;
|
|
34
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProcessesComponent, never>;
|
|
35
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ProcessesComponent, "fs-system-processes", never, { "
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ProcessesComponent, "fs-system-processes", never, { "actions": { "alias": "actions"; "required": false; }; }, {}, never, never, false, never>;
|
|
36
27
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FsApi, RequestConfig } from '@firestitch/api';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ProcessData {
|
|
5
|
+
private _api;
|
|
6
|
+
constructor(_api: FsApi);
|
|
7
|
+
gets(data?: any, config?: RequestConfig): Observable<any>;
|
|
8
|
+
post(data?: any, config?: RequestConfig): Observable<any>;
|
|
9
|
+
run(data?: any, config?: RequestConfig): Observable<any>;
|
|
10
|
+
get(id: number, config?: RequestConfig): Observable<any>;
|
|
11
|
+
kill(data?: any, config?: RequestConfig): Observable<any>;
|
|
12
|
+
delete(data?: any, config?: RequestConfig): Observable<any>;
|
|
13
|
+
queue(data?: any, config?: RequestConfig): Observable<any>;
|
|
14
|
+
download(data?: any): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ProcessData, never>;
|
|
16
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ProcessData>;
|
|
17
|
+
}
|
|
@@ -91,12 +91,12 @@ export class CronNextRunComponent {
|
|
|
91
91
|
return 0;
|
|
92
92
|
}
|
|
93
93
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronNextRunComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CronNextRunComponent, selector: "app-next-run", inputs: { cron: "cron" }, ngImport: i0, template: "<ng-container *ngIf=\"duration > 60; else seconds\">\n {{duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true} }}\n</ng-container>\n
|
|
94
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: CronNextRunComponent, selector: "app-next-run", inputs: { cron: "cron" }, ngImport: i0, template: "<ng-container *ngIf=\"duration > 60; else seconds\">\n {{ duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true, maxOutputs: 2 } }}\n</ng-container>\n<ng-template #seconds>\n {{ duration }}s\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.FsDateDurationPipe, name: "fsDateDuration" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
95
95
|
}
|
|
96
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CronNextRunComponent, decorators: [{
|
|
97
97
|
type: Component,
|
|
98
|
-
args: [{ selector: 'app-next-run', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"duration > 60; else seconds\">\n {{duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true} }}\n</ng-container>\n
|
|
98
|
+
args: [{ selector: 'app-next-run', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"duration > 60; else seconds\">\n {{ duration | fsDateDuration: { hours: true, seconds: true, minutes: true, days: true, maxOutputs: 2 } }}\n</ng-container>\n<ng-template #seconds>\n {{ duration }}s\n</ng-template>" }]
|
|
99
99
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { cron: [{
|
|
100
100
|
type: Input
|
|
101
101
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3Jvbi1uZXh0LXJ1bi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9uLW5leHQtcnVuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQzdELE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFTMUcsTUFBTSxPQUFPLG9CQUFvQjtJQVVyQjtJQVJNLElBQUksQ0FBQztJQUVkLFFBQVEsQ0FBQztJQUVSLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBR2xDLFlBQ1UsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFDaEMsQ0FBQztJQUdHLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdB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QU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN6QyxJQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0UsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzt1R0EvR1Usb0JBQW9COzJGQUFwQixvQkFBb0IsOEVDakJqQyxrT0FRQTs7MkZEU2Esb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTtzRkFJL0IsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYWRkRGF5cywgYWRkSG91cnMsIGFkZE1pbnV0ZXMsIGRpZmZlcmVuY2VJblNlY29uZHMsIGdldERheXNJbk1vbnRoLCBzdWJTZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uZXh0LXJ1bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ3Jvbk5leHRSdW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGNyb247XG5cbiAgcHVibGljIGR1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVEdXJhdGlvbigpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG5leHRNaW51dGVzID0gdGhpcy5fZ2V0TmV4dE1pbnV0ZXMobm93KTtcbiAgICBjb25zdCBuZXh0SG91cnMgPSB0aGlzLl9nZXROZXh0SG91cnMobm93KTtcbiAgICBjb25zdCBuZXh0RGF5cyA9IHRoaXMuX2dldE5leHREYXlzKG5vdyk7XG5cbiAgICBpZihcbiAgICAgIHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmhvdXJzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXMubGVuZ3RoIFxuICAgICkge1xuICAgICAgbGV0IG5leHQgPSBuZXcgRGF0ZSgpO1xuICAgICAgbmV4dCA9IGFkZE1pbnV0ZXMobmV4dCwgbmV4dE1pbnV0ZXMpO1xuICAgICAgbmV4dCA9IGFkZEhvdXJzKG5leHQsIG5leHRIb3Vycyk7XG4gICAgICBuZXh0ID0gYWRkRGF5cyhuZXh0LCBuZXh0RGF5cyk7XG4gICAgICBuZXh0ID0gc3ViU2Vjb25kcyhuZXh0LCBuZXh0LmdldFNlY29uZHMoKSk7XG5cbiAgICAgIHRoaXMuZHVyYXRpb24gPSBkaWZmZXJlbmNlSW5TZWNvbmRzKG5leHQsIG5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHVyYXRpb24gPSA2MCAtIG5vdy5nZXRTZWNvbmRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZUR1cmF0aW9uKCk7XG4gICAgdGltZXIoMCwgMTAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZHVyYXRpb24gLT0gMTsgICAgXG5cbiAgICAgICAgICBpZih0aGlzLmR1cmF0aW9uICUgNjAgPT09IDAgfHwgdGhpcy5kdXJhdGlvbiA8ICg2MCAqIDUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZih0aGlzLmR1cmF0aW9uIDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlRHVyYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0TWludXRlcyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBtaW51dGVzOiBudW1iZXJbXSA9IHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzO1xuICAgIGlmKG1pbnV0ZXMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBtaW51dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmKG5vdy5nZXRVVENNaW51dGVzKCkgPj0gbWludXRlc1tpXSkge1xuICAgICAgICAgIHJldHVybiAobWludXRlc1tpICsgMV0gPyBtaW51dGVzW2kgKyAxXSAtIG5vdy5nZXRVVENNaW51dGVzKCkgOiAoNjAgLSBub3cuZ2V0VVRDTWludXRlcygpICsgbWludXRlc1tpXSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtaW51dGVzWzBdIC0gbm93LmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHRIb3Vycyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBob3VyczogbnVtYmVyW10gPSB0aGlzLmNyb24uY3JvblNldHRpbmcuaG91cnM7XG4gICAgaWYoaG91cnMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBob3Vycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZihub3cuZ2V0VVRDSG91cnMoKSA+PSBob3Vyc1tpXSkge1xuICAgICAgICAgIHJldHVybiAoaG91cnNbaSArIDFdID8gaG91cnNbaSArIDFdIC0gbm93LmdldFVUQ0hvdXJzKCkgOiAoMjQgLSBub3cuZ2V0VVRDSG91cnMoKSArIGhvdXJzW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhvdXJzWzBdIC0gbm93LmdldFVUQ0hvdXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0RGF5cyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBkYXlzID0gdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXM7XG4gICAgaWYoZGF5cy5sZW5ndGgpIHtcbiAgICAgIGZvcihsZXQgaSA9IGRheXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYobm93LmdldERhdGUoKSA+PSBkYXlzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIChkYXlzW2kgKyAxXSA/IGRheXNbaSArIDFdIDogZ2V0RGF5c0luTW9udGgobm93KSkgLSBub3cuZ2V0RGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXlzWzBdIC0gZ2V0RGF5c0luTW9udGgobm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImR1cmF0aW9uID4gNjA7IGVsc2Ugc2Vjb25kc1wiPlxuICB7e2R1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHsgaG91cnM6IHRydWUsIHNlY29uZHM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIGRheXM6IHRydWV9IH19XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzZWNvbmRzPlxuICB7e2R1cmF0aW9ufX1zXG48L25nLXRlbXBsYXRlPlxuXG4iXX0=
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvY3Jvbi1uZXh0LXJ1bi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9jcm9uLW5leHQtcnVuL2Nyb24tbmV4dC1ydW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQzdELE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFTMUcsTUFBTSxPQUFPLG9CQUFvQjtJQVVyQjtJQVJNLElBQUksQ0FBQztJQUVkLFFBQVEsQ0FBQztJQUVSLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBR2xDLFlBQ1UsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFDaEMsQ0FBQztJQUdHLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdB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QU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN6QyxJQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0UsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzt1R0EvR1Usb0JBQW9COzJGQUFwQixvQkFBb0IsOEVDakJqQywrT0FLYzs7MkZEWUQsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTtzRkFJL0IsSUFBSTtzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IFN1YmplY3QsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgYWRkRGF5cywgYWRkSG91cnMsIGFkZE1pbnV0ZXMsIGRpZmZlcmVuY2VJblNlY29uZHMsIGdldERheXNJbk1vbnRoLCBzdWJTZWNvbmRzIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uZXh0LXJ1bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcm9uLW5leHQtcnVuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3Jvbi1uZXh0LXJ1bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ3Jvbk5leHRSdW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIGNyb247XG5cbiAgcHVibGljIGR1cmF0aW9uO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVEdXJhdGlvbigpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG5leHRNaW51dGVzID0gdGhpcy5fZ2V0TmV4dE1pbnV0ZXMobm93KTtcbiAgICBjb25zdCBuZXh0SG91cnMgPSB0aGlzLl9nZXROZXh0SG91cnMobm93KTtcbiAgICBjb25zdCBuZXh0RGF5cyA9IHRoaXMuX2dldE5leHREYXlzKG5vdyk7XG5cbiAgICBpZihcbiAgICAgIHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmhvdXJzLmxlbmd0aCB8fFxuICAgICAgdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXMubGVuZ3RoIFxuICAgICkge1xuICAgICAgbGV0IG5leHQgPSBuZXcgRGF0ZSgpO1xuICAgICAgbmV4dCA9IGFkZE1pbnV0ZXMobmV4dCwgbmV4dE1pbnV0ZXMpO1xuICAgICAgbmV4dCA9IGFkZEhvdXJzKG5leHQsIG5leHRIb3Vycyk7XG4gICAgICBuZXh0ID0gYWRkRGF5cyhuZXh0LCBuZXh0RGF5cyk7XG4gICAgICBuZXh0ID0gc3ViU2Vjb25kcyhuZXh0LCBuZXh0LmdldFNlY29uZHMoKSk7XG5cbiAgICAgIHRoaXMuZHVyYXRpb24gPSBkaWZmZXJlbmNlSW5TZWNvbmRzKG5leHQsIG5vdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHVyYXRpb24gPSA2MCAtIG5vdy5nZXRTZWNvbmRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZUR1cmF0aW9uKCk7XG4gICAgdGltZXIoMCwgMTAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZHVyYXRpb24gLT0gMTsgICAgXG5cbiAgICAgICAgICBpZih0aGlzLmR1cmF0aW9uICUgNjAgPT09IDAgfHwgdGhpcy5kdXJhdGlvbiA8ICg2MCAqIDUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZih0aGlzLmR1cmF0aW9uIDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlRHVyYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0TWludXRlcyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBtaW51dGVzOiBudW1iZXJbXSA9IHRoaXMuY3Jvbi5jcm9uU2V0dGluZy5taW51dGVzO1xuICAgIGlmKG1pbnV0ZXMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBtaW51dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGlmKG5vdy5nZXRVVENNaW51dGVzKCkgPj0gbWludXRlc1tpXSkge1xuICAgICAgICAgIHJldHVybiAobWludXRlc1tpICsgMV0gPyBtaW51dGVzW2kgKyAxXSAtIG5vdy5nZXRVVENNaW51dGVzKCkgOiAoNjAgLSBub3cuZ2V0VVRDTWludXRlcygpICsgbWludXRlc1tpXSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtaW51dGVzWzBdIC0gbm93LmdldE1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5leHRIb3Vycyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBob3VyczogbnVtYmVyW10gPSB0aGlzLmNyb24uY3JvblNldHRpbmcuaG91cnM7XG4gICAgaWYoaG91cnMubGVuZ3RoKSB7XG4gICAgICBmb3IobGV0IGkgPSBob3Vycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZihub3cuZ2V0VVRDSG91cnMoKSA+PSBob3Vyc1tpXSkge1xuICAgICAgICAgIHJldHVybiAoaG91cnNbaSArIDFdID8gaG91cnNbaSArIDFdIC0gbm93LmdldFVUQ0hvdXJzKCkgOiAoMjQgLSBub3cuZ2V0VVRDSG91cnMoKSArIGhvdXJzW2ldKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGhvdXJzWzBdIC0gbm93LmdldFVUQ0hvdXJzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwcml2YXRlIF9nZXROZXh0RGF5cyhub3c6IERhdGUpIHtcbiAgICBjb25zdCBkYXlzID0gdGhpcy5jcm9uLmNyb25TZXR0aW5nLmRheXM7XG4gICAgaWYoZGF5cy5sZW5ndGgpIHtcbiAgICAgIGZvcihsZXQgaSA9IGRheXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYobm93LmdldERhdGUoKSA+PSBkYXlzW2ldKSB7XG4gICAgICAgICAgcmV0dXJuIChkYXlzW2kgKyAxXSA/IGRheXNbaSArIDFdIDogZ2V0RGF5c0luTW9udGgobm93KSkgLSBub3cuZ2V0RGF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXlzWzBdIC0gZ2V0RGF5c0luTW9udGgobm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImR1cmF0aW9uID4gNjA7IGVsc2Ugc2Vjb25kc1wiPlxuICB7eyBkdXJhdGlvbiB8IGZzRGF0ZUR1cmF0aW9uOiB7IGhvdXJzOiB0cnVlLCBzZWNvbmRzOiB0cnVlLCBtaW51dGVzOiB0cnVlLCBkYXlzOiB0cnVlLCBtYXhPdXRwdXRzOiAyIH0gfX1cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNzZWNvbmRzPlxuICB7eyBkdXJhdGlvbiB9fXNcbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Inject, } from '@angular/core';
|
|
2
2
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
3
|
import { FsMessage } from '@firestitch/message';
|
|
4
4
|
import { FsPrompt } from '@firestitch/prompt';
|
|
5
5
|
import { Subject, timer } from 'rxjs';
|
|
6
6
|
import { switchMap, takeUntil, takeWhile, tap } from 'rxjs/operators';
|
|
7
7
|
import { ProcessProcessStates } from '../../consts';
|
|
8
|
+
import { ProcessData } from '../../data/process.data';
|
|
8
9
|
import { indexNameValue } from '../../helpers/index-name-value';
|
|
9
10
|
import { ProcessStates } from './../../consts/process-states.const';
|
|
10
11
|
import { ProcessState } from './../../enums/process-state.enum';
|
|
@@ -29,6 +30,7 @@ export class ProcessComponent {
|
|
|
29
30
|
ProcessProcessStates = indexNameValue(ProcessProcessStates);
|
|
30
31
|
ProcessState = ProcessState;
|
|
31
32
|
_destroy$ = new Subject();
|
|
33
|
+
_processData = inject(ProcessData);
|
|
32
34
|
constructor(data, _message, _cdRef, _prompt) {
|
|
33
35
|
this.data = data;
|
|
34
36
|
this._message = _message;
|
|
@@ -36,19 +38,13 @@ export class ProcessComponent {
|
|
|
36
38
|
this._prompt = _prompt;
|
|
37
39
|
}
|
|
38
40
|
ngOnInit() {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
this.process = this.data.process;
|
|
47
|
-
}
|
|
41
|
+
this.load$()
|
|
42
|
+
.subscribe(() => {
|
|
43
|
+
this.runningRefresh();
|
|
44
|
+
});
|
|
48
45
|
}
|
|
49
46
|
load$() {
|
|
50
|
-
return this.data
|
|
51
|
-
.loadProcess(this.data.process)
|
|
47
|
+
return this._processData.get(this.data.process.id)
|
|
52
48
|
.pipe(tap((process) => {
|
|
53
49
|
this.process = process;
|
|
54
50
|
this._cdRef.markForCheck();
|
|
@@ -64,14 +60,14 @@ export class ProcessComponent {
|
|
|
64
60
|
title: 'Kill process',
|
|
65
61
|
template: 'Are you sure you would like to kill the process?',
|
|
66
62
|
})
|
|
67
|
-
.pipe(switchMap(() => this.
|
|
63
|
+
.pipe(switchMap(() => this._processData.kill(this.data.process)), switchMap(() => this.load$()))
|
|
68
64
|
.subscribe(() => {
|
|
69
65
|
this._message.success('Killed process');
|
|
70
66
|
});
|
|
71
67
|
}
|
|
72
68
|
run() {
|
|
73
69
|
this._message.success('Running process');
|
|
74
|
-
this.
|
|
70
|
+
this._processData.run(this.data.process)
|
|
75
71
|
.pipe(switchMap(() => this.load$()))
|
|
76
72
|
.subscribe(() => {
|
|
77
73
|
this.runningRefresh();
|
|
@@ -79,25 +75,25 @@ export class ProcessComponent {
|
|
|
79
75
|
}
|
|
80
76
|
queue() {
|
|
81
77
|
this._message.success('Running process');
|
|
82
|
-
this.
|
|
78
|
+
this._processData.queue(this.data.process)
|
|
83
79
|
.pipe(switchMap(() => this.load$()))
|
|
84
80
|
.subscribe();
|
|
85
81
|
}
|
|
86
82
|
download() {
|
|
87
|
-
this.
|
|
83
|
+
this._processData.download(this.data.process);
|
|
88
84
|
}
|
|
89
85
|
ngOnDestroy() {
|
|
90
86
|
this._destroy$.next(null);
|
|
91
87
|
this._destroy$.complete();
|
|
92
88
|
}
|
|
93
89
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProcessComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.FsMessage }, { token: i0.ChangeDetectorRef }, { token: i2.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ProcessComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title
|
|
90
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ProcessComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>\n Process\n </div>\n <mat-dialog-content>\n <div class=\"column\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ process.prettyName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div\n class=\"status\"\n [ngClass]=\"{ 'running': process.state === ProcessState.Running }\">\n {{ ProcessStates[process.state] }}\n <ng-container *ngIf=\"process.state === ProcessState.Running\">\n <mat-progress-spinner\n [diameter]=\"20\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-container>\n </div>\n </fs-label-field>\n <fs-label-field *ngIf=\"process.notify\">\n <fs-label>\n Notification Email\n </fs-label>\n {{ process.notify }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Process ID\n </fs-label>\n {{ process.pid || 'None' }}\n <ng-container *ngIf=\"process.pid\">\n <div class=\"small\">\n {{ ProcessProcessStates[process.processState] || 'Unknown' }}\n </div>\n </ng-container>\n </fs-label-field>\n <fs-label-field *ngIf=\"process.createDate\">\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.startDate\">\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.endDate\">\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.duration\">\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n </div>\n <fs-label-field *ngIf=\"process.message\">\n <fs-label>\n Message\n </fs-label>\n {{ process.message }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.log\">\n <fs-label>\n Log\n </fs-label>\n <div class=\"log\">\n {{ process.log }}\n </div>\n </fs-label-field>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Close\n </button>\n <button\n *ngIf=\"process.state === ProcessState.Running\"\n mat-button\n (click)=\"kill()\">\n Kill\n </button>\n <button\n *ngIf=\"process.state !== ProcessState.Running\"\n mat-button\n (click)=\"run()\">\n Run\n </button>\n <button\n *ngIf=\"(\n process.state !== ProcessState.Running && \n process.state !== ProcessState.Queued\n )\"\n mat-button\n (click)=\"queue()\">\n Queue\n </button>\n <button\n *ngIf=\"process.filename\"\n mat-button\n (click)=\"download()\">\n Download\n </button>\n </mat-dialog-actions>\n</fs-dialog>", styles: [".log{white-space:pre-line;font-family:monospace;font-size:95%;line-height:130%}.status{display:flex}.status.running{margin-right:28px}.status.running mat-progress-spinner{position:absolute;right:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i5.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i5.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i5.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "component", type: i8.FsLabelComponent, selector: "fs-label" }, { kind: "component", type: i8.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { kind: "component", type: i9.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "pipe", type: i10.FsDateDurationPipe, name: "fsDateDuration" }, { kind: "pipe", type: i10.FsDateFormatPipe, name: "fsDateFormat" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
95
91
|
}
|
|
96
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProcessComponent, decorators: [{
|
|
97
93
|
type: Component,
|
|
98
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title
|
|
94
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<fs-dialog *fsSkeleton=\"process\">\n <div mat-dialog-title>\n Process\n </div>\n <mat-dialog-content>\n <div class=\"column\">\n <div class=\"fs-row.gap-lg.wrap.align-start\">\n <fs-label-field>\n <fs-label>\n Name\n </fs-label>\n {{ process.prettyName }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Status\n </fs-label>\n <div\n class=\"status\"\n [ngClass]=\"{ 'running': process.state === ProcessState.Running }\">\n {{ ProcessStates[process.state] }}\n <ng-container *ngIf=\"process.state === ProcessState.Running\">\n <mat-progress-spinner\n [diameter]=\"20\"\n [mode]=\"'indeterminate'\">\n </mat-progress-spinner>\n </ng-container>\n </div>\n </fs-label-field>\n <fs-label-field *ngIf=\"process.notify\">\n <fs-label>\n Notification Email\n </fs-label>\n {{ process.notify }}\n </fs-label-field>\n <fs-label-field>\n <fs-label>\n Process ID\n </fs-label>\n {{ process.pid || 'None' }}\n <ng-container *ngIf=\"process.pid\">\n <div class=\"small\">\n {{ ProcessProcessStates[process.processState] || 'Unknown' }}\n </div>\n </ng-container>\n </fs-label-field>\n <fs-label-field *ngIf=\"process.createDate\">\n <fs-label>\n Create Date\n </fs-label>\n {{ process.createDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.startDate\">\n <fs-label>\n Start Date\n </fs-label>\n {{ process.startDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.endDate\">\n <fs-label>\n Complete Date\n </fs-label>\n {{ process.endDate | fsDateFormat: 'date-time' }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.duration\">\n <fs-label>\n Duration\n </fs-label>\n {{ process.duration | fsDateDuration: {hours: true, minutes: true, seconds: true} }}\n </fs-label-field>\n </div>\n <fs-label-field *ngIf=\"process.message\">\n <fs-label>\n Message\n </fs-label>\n {{ process.message }}\n </fs-label-field>\n <fs-label-field *ngIf=\"process.log\">\n <fs-label>\n Log\n </fs-label>\n <div class=\"log\">\n {{ process.log }}\n </div>\n </fs-label-field>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n [mat-dialog-close]=\"true\"\n color=\"primary\">\n Close\n </button>\n <button\n *ngIf=\"process.state === ProcessState.Running\"\n mat-button\n (click)=\"kill()\">\n Kill\n </button>\n <button\n *ngIf=\"process.state !== ProcessState.Running\"\n mat-button\n (click)=\"run()\">\n Run\n </button>\n <button\n *ngIf=\"(\n process.state !== ProcessState.Running && \n process.state !== ProcessState.Queued\n )\"\n mat-button\n (click)=\"queue()\">\n Queue\n </button>\n <button\n *ngIf=\"process.filename\"\n mat-button\n (click)=\"download()\">\n Download\n </button>\n </mat-dialog-actions>\n</fs-dialog>", styles: [".log{white-space:pre-line;font-family:monospace;font-size:95%;line-height:130%}.status{display:flex}.status.running{margin-right:28px}.status.running mat-progress-spinner{position:absolute;right:0}\n"] }]
|
|
99
95
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
100
96
|
type: Inject,
|
|
101
97
|
args: [MAT_DIALOG_DATA]
|
|
102
98
|
}] }, { type: i1.FsMessage }, { type: i0.ChangeDetectorRef }, { type: i2.FsPrompt }] });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvcHJvY2Vzcy9wcm9jZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9wcm9jZXNzL3Byb2Nlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEdBQzlELE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBYyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7OztBQVFoRSxNQUFNLE9BQU8sZ0JBQWdCO0lBVU87SUFTeEI7SUFDQTtJQUNBO0lBbkJILE9BQU8sQ0FBVTtJQUNqQixhQUFhLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLG9CQUFvQixHQUFHLGNB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SSxDQUFDLE9BQU8sQ0FBQzthQUMvQixJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUM5QjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7dUdBakdVLGdCQUFnQixrQkFVakIsZUFBZTsyRkFWZCxnQkFBZ0Isb0RDekI3QixraEhBK0hBOzsyRkR0R2EsZ0JBQWdCO2tCQUw1QixTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU07OzBCQVk1QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRha2VXaGlsZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQcm9jZXNzUHJvY2Vzc1N0YXRlcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XG5pbXBvcnQgeyBQcm9jZXNzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IFByb2Nlc3NTdGF0ZXMgfSBmcm9tICcuLy4uLy4uL2NvbnN0cy9wcm9jZXNzLXN0YXRlcy5jb25zdCc7XG5pbXBvcnQgeyBQcm9jZXNzU3RhdGUgfSBmcm9tICcuLy4uLy4uL2VudW1zL3Byb2Nlc3Mtc3RhdGUuZW51bSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcHJvY2VzczogUHJvY2VzcztcbiAgcHVibGljIFByb2Nlc3NTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShQcm9jZXNzU3RhdGVzKTtcbiAgcHVibGljIFByb2Nlc3NQcm9jZXNzU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoUHJvY2Vzc1Byb2Nlc3NTdGF0ZXMpO1xuICBwdWJsaWMgUHJvY2Vzc1N0YXRlID0gUHJvY2Vzc1N0YXRlO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YToge1xuICAgICAgIHJ1bjogKHByb2Nlc3M6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICAgICAgIHF1ZXVlOiAocHJvY2VzczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gICAgICAgZGVsZXRlOiAocHJvY2VzczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gICAgICAga2lsbDogKHByb2Nlc3M6IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxuICAgICAgIGxvYWRQcm9jZXNzOiAocHJvY2VzczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gICAgICAgZG93bmxvYWQ6IChwcm9jZXNzOiBhbnkpID0+IHZvaWQsXG4gICAgICAgcHJvY2VzczogYW55LFxuICAgIH0sXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9wcm9tcHQ6IEZzUHJvbXB0LFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGEubG9hZFByb2Nlc3MpIHtcbiAgICAgIHRoaXMubG9hZCQoKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJ1bm5pbmdSZWZyZXNoKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2Nlc3MgPSB0aGlzLmRhdGEucHJvY2VzcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZCQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG4gICAgICAubG9hZFByb2Nlc3ModGhpcy5kYXRhLnByb2Nlc3MpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChwcm9jZXNzKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzID0gcHJvY2VzcztcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG4gIFxuICBwdWJsaWMgcnVubmluZ1JlZnJlc2goKSB7XG4gICAgdGltZXIoMCwgMjAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5wcm9jZXNzLnN0YXRlID09PSBTdHJpbmcoIFByb2Nlc3NTdGF0ZS5SdW5uaW5nKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWQkKCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGtpbGwoKSB7XG4gICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgdGl0bGU6ICdLaWxsIHByb2Nlc3MnLFxuICAgICAgdGVtcGxhdGU6ICdBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8ga2lsbCB0aGUgcHJvY2Vzcz8nLFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZGF0YS5raWxsKHRoaXMuZGF0YS5wcm9jZXNzKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWQkKCkpLFxuICAgICAgKSAgXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdLaWxsZWQgcHJvY2VzcycpO1xuICAgICAgfSk7ICAgXG4gIH1cblxuICBwdWJsaWMgcnVuKCkge1xuICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUnVubmluZyBwcm9jZXNzJyk7XG4gICAgdGhpcy5kYXRhLnJ1bih0aGlzLmRhdGEucHJvY2VzcylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkJCgpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJ1bm5pbmdSZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBxdWV1ZSgpIHtcbiAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1J1bm5pbmcgcHJvY2VzcycpO1xuICAgIHRoaXMuZGF0YS5xdWV1ZSh0aGlzLmRhdGEucHJvY2VzcylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkJCgpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZCgpIHtcbiAgICB0aGlzLmRhdGEuZG93bmxvYWQodGhpcy5kYXRhLnByb2Nlc3MpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iLCI8ZnMtZGlhbG9nICpmc1NrZWxldG9uPVwicHJvY2Vzc1wiPlxuICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGU+UHJvY2VzczwvZGl2PlxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1yb3cuZ2FwLWxnLndyYXAuYWxpZ24tc3RhcnRcIj5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIE5hbWVcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7cHJvY2Vzcy5wcmV0dHlOYW1lfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgICAgU3RhdHVzXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgW25nQ2xhc3NdPVwieyAncnVubmluZyc6IHByb2Nlc3Muc3RhdGUgPT09IFByb2Nlc3NTdGF0ZS5SdW5uaW5nIH1cIj5cbiAgICAgICAgICAgIHt7UHJvY2Vzc1N0YXRlc1twcm9jZXNzLnN0YXRlXX19IFxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2Nlc3Muc3RhdGUgPT09IFByb2Nlc3NTdGF0ZS5SdW5uaW5nXCI+XG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIiBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5ub3RpZnlcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBOb3RpZmljYXRpb24gRW1haWxcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7cHJvY2Vzcy5ub3RpZnl9fVxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBQcm9jZXNzIElEXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7e3Byb2Nlc3MucGlkIHx8ICdOb25lJ319XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2Nlc3MucGlkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic21hbGxcIj5cbiAgICAgICAgICAgICAge3tQcm9jZXNzUHJvY2Vzc1N0YXRlc1twcm9jZXNzLnByb2Nlc3NTdGF0ZV0gfHwgJ1Vua25vd24nfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuXG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MuY3JlYXRlRGF0ZVwiPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIENyZWF0ZSBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmNyZWF0ZURhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5zdGFydERhdGVcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBTdGFydCBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLnN0YXJ0RGF0ZSB8IGZzRGF0ZUZvcm1hdDogJ2RhdGUtdGltZScgfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLmVuZERhdGVcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBDb21wbGV0ZSBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmVuZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5kdXJhdGlvblwiPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIER1cmF0aW9uXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmR1cmF0aW9uIHwgZnNEYXRlRHVyYXRpb246IHtob3VyczogdHJ1ZSwgbWludXRlczogdHJ1ZSwgc2Vjb25kczogdHJ1ZX0gfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLm1lc3NhZ2VcIj5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIE1lc3NhZ2VcbiAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAge3twcm9jZXNzLm1lc3NhZ2V9fVxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgICAgPGZzLWxhYmVsLWZpZWxkICpuZ0lmPVwicHJvY2Vzcy5sb2dcIj5cbiAgICAgICAgPGZzLWxhYmVsPlxuICAgICAgICAgIExvZ1xuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9nXCI+XG4gICAgICAgICAge3twcm9jZXNzLmxvZ319XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mcy1sYWJlbC1maWVsZD5cblxuICAgIDwvZGl2PlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIFxuICAgICAgICBtYXQtYnV0dG9uIFxuICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCIgXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgQ2xvc2VcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwicHJvY2Vzcy5zdGF0ZSA9PT0gUHJvY2Vzc1N0YXRlLlJ1bm5pbmcgJiYgZGF0YS5raWxsXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwia2lsbCgpXCI+XG4gICAgICBLaWxsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBcbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLnN0YXRlICE9PSBQcm9jZXNzU3RhdGUuUnVubmluZyAmJiBkYXRhLnJ1blwiIFxuICAgICAgICBtYXQtYnV0dG9uIFxuICAgICAgICAoY2xpY2spPVwicnVuKClcIj5cbiAgICAgIFJ1blxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gXG4gICAgICAgICpuZ0lmPVwiKFxuICAgICAgICAgIHByb2Nlc3Muc3RhdGUgIT09IFByb2Nlc3NTdGF0ZS5SdW5uaW5nICYmIFxuICAgICAgICAgIHByb2Nlc3Muc3RhdGUgIT09IFByb2Nlc3NTdGF0ZS5RdWV1ZWRcbiAgICAgICAgKSAmJiBkYXRhLnF1ZXVlXCIgXG4gICAgICAgIG1hdC1idXR0b24gXG4gICAgICAgIChjbGljayk9XCJxdWV1ZSgpXCI+XG4gICAgICBRdWV1ZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLmZpbGVuYW1lXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxuICAgICAgRG93bmxvYWRcbiAgICA8L2J1dHRvbj4gICAgXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvc3lzdGVtL2NvbXBvbmVudHMvcHJvY2Vzcy9wcm9jZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9zeXN0ZW0vY29tcG9uZW50cy9wcm9jZXNzL3Byb2Nlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUN0RSxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUWhFLE1BQU0sT0FBTyxnQkFBZ0I7SUFXTztJQUd4QjtJQUNBO0lBQ0E7SUFkSCxPQUFPLENBQVU7SUFDakIsYUFB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SCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQzlCO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQzt1R0F4RlUsZ0JBQWdCLGtCQVdqQixlQUFlOzJGQVhkLGdCQUFnQixvREMxQjdCLG1pSEEwSFk7OzJGRGhHQyxnQkFBZ0I7a0JBTDVCLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTTs7MEJBYTVDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzUHJvbXB0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvcHJvbXB0JztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YWtlV2hpbGUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUHJvY2Vzc1Byb2Nlc3NTdGF0ZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgUHJvY2Vzc0RhdGEgfSBmcm9tICcuLi8uLi9kYXRhL3Byb2Nlc3MuZGF0YSc7XG5pbXBvcnQgeyBpbmRleE5hbWVWYWx1ZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5kZXgtbmFtZS12YWx1ZSc7XG5pbXBvcnQgeyBQcm9jZXNzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IFByb2Nlc3NTdGF0ZXMgfSBmcm9tICcuLy4uLy4uL2NvbnN0cy9wcm9jZXNzLXN0YXRlcy5jb25zdCc7XG5pbXBvcnQgeyBQcm9jZXNzU3RhdGUgfSBmcm9tICcuLy4uLy4uL2VudW1zL3Byb2Nlc3Mtc3RhdGUuZW51bSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcHJvY2VzczogUHJvY2VzcztcbiAgcHVibGljIFByb2Nlc3NTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShQcm9jZXNzU3RhdGVzKTtcbiAgcHVibGljIFByb2Nlc3NQcm9jZXNzU3RhdGVzID0gaW5kZXhOYW1lVmFsdWUoUHJvY2Vzc1Byb2Nlc3NTdGF0ZXMpO1xuICBwdWJsaWMgUHJvY2Vzc1N0YXRlID0gUHJvY2Vzc1N0YXRlO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfcHJvY2Vzc0RhdGEgPSBpbmplY3QoUHJvY2Vzc0RhdGEpO1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7XG4gICAgICAgcHJvY2VzczogYW55LFxuICAgIH0sXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9wcm9tcHQ6IEZzUHJvbXB0LFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZCQoKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucnVubmluZ1JlZnJlc2goKTtcbiAgICAgIH0pO1xuXG4gIH1cblxuICBwdWJsaWMgbG9hZCQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc0RhdGEuZ2V0KHRoaXMuZGF0YS5wcm9jZXNzLmlkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocHJvY2VzcykgPT4ge1xuICAgICAgICAgIHRoaXMucHJvY2VzcyA9IHByb2Nlc3M7XG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuICBcbiAgcHVibGljIHJ1bm5pbmdSZWZyZXNoKCkge1xuICAgIHRpbWVyKDAsIDIwMDApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMucHJvY2Vzcy5zdGF0ZSA9PT0gU3RyaW5nKCBQcm9jZXNzU3RhdGUuUnVubmluZykpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkJCgpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBraWxsKCkge1xuICAgIHRoaXMuX3Byb21wdC5jb25maXJtKHtcbiAgICAgIHRpdGxlOiAnS2lsbCBwcm9jZXNzJyxcbiAgICAgIHRlbXBsYXRlOiAnQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIGtpbGwgdGhlIHByb2Nlc3M/JyxcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9wcm9jZXNzRGF0YS5raWxsKHRoaXMuZGF0YS5wcm9jZXNzKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWQkKCkpLFxuICAgICAgKSAgXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdLaWxsZWQgcHJvY2VzcycpO1xuICAgICAgfSk7ICAgXG4gIH1cblxuICBwdWJsaWMgcnVuKCkge1xuICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUnVubmluZyBwcm9jZXNzJyk7XG4gICAgdGhpcy5fcHJvY2Vzc0RhdGEucnVuKHRoaXMuZGF0YS5wcm9jZXNzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWQkKCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucnVubmluZ1JlZnJlc2goKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHF1ZXVlKCkge1xuICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUnVubmluZyBwcm9jZXNzJyk7XG4gICAgdGhpcy5fcHJvY2Vzc0RhdGEucXVldWUodGhpcy5kYXRhLnByb2Nlc3MpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZCQoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWQoKSB7XG4gICAgdGhpcy5fcHJvY2Vzc0RhdGEuZG93bmxvYWQodGhpcy5kYXRhLnByb2Nlc3MpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iLCI8ZnMtZGlhbG9nICpmc1NrZWxldG9uPVwicHJvY2Vzc1wiPlxuICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgUHJvY2Vzc1xuICA8L2Rpdj5cbiAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtcm93LmdhcC1sZy53cmFwLmFsaWduLXN0YXJ0XCI+XG4gICAgICAgIDxmcy1sYWJlbC1maWVsZD5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBOYW1lXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLnByZXR0eU5hbWUgfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIFN0YXR1c1xuICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInN0YXR1c1wiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3J1bm5pbmcnOiBwcm9jZXNzLnN0YXRlID09PSBQcm9jZXNzU3RhdGUuUnVubmluZyB9XCI+XG4gICAgICAgICAgICB7eyBQcm9jZXNzU3RhdGVzW3Byb2Nlc3Muc3RhdGVdIH19XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvY2Vzcy5zdGF0ZSA9PT0gUHJvY2Vzc1N0YXRlLlJ1bm5pbmdcIj5cbiAgICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjIwXCJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIj5cbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLm5vdGlmeVwiPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBFbWFpbFxuICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAge3sgcHJvY2Vzcy5ub3RpZnkgfX1cbiAgICAgICAgPC9mcy1sYWJlbC1maWVsZD5cbiAgICAgICAgPGZzLWxhYmVsLWZpZWxkPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIFByb2Nlc3MgSURcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7IHByb2Nlc3MucGlkIHx8ICdOb25lJyB9fVxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9jZXNzLnBpZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgICAgIHt7IFByb2Nlc3NQcm9jZXNzU3RhdGVzW3Byb2Nlc3MucHJvY2Vzc1N0YXRlXSB8fCAnVW5rbm93bicgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLmNyZWF0ZURhdGVcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBDcmVhdGUgRGF0ZVxuICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAge3sgcHJvY2Vzcy5jcmVhdGVEYXRlIHwgZnNEYXRlRm9ybWF0OiAnZGF0ZS10aW1lJyB9fVxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLnN0YXJ0RGF0ZVwiPlxuICAgICAgICAgIDxmcy1sYWJlbD5cbiAgICAgICAgICAgIFN0YXJ0IERhdGVcbiAgICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICAgIHt7IHByb2Nlc3Muc3RhcnREYXRlIHwgZnNEYXRlRm9ybWF0OiAnZGF0ZS10aW1lJyB9fVxuICAgICAgICA8L2ZzLWxhYmVsLWZpZWxkPlxuICAgICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLmVuZERhdGVcIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBDb21wbGV0ZSBEYXRlXG4gICAgICAgICAgPC9mcy1sYWJlbD5cbiAgICAgICAgICB7eyBwcm9jZXNzLmVuZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MuZHVyYXRpb25cIj5cbiAgICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgICBEdXJhdGlvblxuICAgICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgICAge3sgcHJvY2Vzcy5kdXJhdGlvbiB8IGZzRGF0ZUR1cmF0aW9uOiB7aG91cnM6IHRydWUsIG1pbnV0ZXM6IHRydWUsIHNlY29uZHM6IHRydWV9IH19XG4gICAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmcy1sYWJlbC1maWVsZCAqbmdJZj1cInByb2Nlc3MubWVzc2FnZVwiPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgTWVzc2FnZVxuICAgICAgICA8L2ZzLWxhYmVsPlxuICAgICAgICB7eyBwcm9jZXNzLm1lc3NhZ2UgfX1cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgICA8ZnMtbGFiZWwtZmllbGQgKm5nSWY9XCJwcm9jZXNzLmxvZ1wiPlxuICAgICAgICA8ZnMtbGFiZWw+XG4gICAgICAgICAgTG9nXG4gICAgICAgIDwvZnMtbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2dcIj5cbiAgICAgICAgICB7eyBwcm9jZXNzLmxvZyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZnMtbGFiZWwtZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICBDbG9zZVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLnN0YXRlID09PSBQcm9jZXNzU3RhdGUuUnVubmluZ1wiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cImtpbGwoKVwiPlxuICAgICAgS2lsbFxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJwcm9jZXNzLnN0YXRlICE9PSBQcm9jZXNzU3RhdGUuUnVubmluZ1wiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInJ1bigpXCI+XG4gICAgICBSdW5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiKFxuICAgICAgICAgIHByb2Nlc3Muc3RhdGUgIT09IFByb2Nlc3NTdGF0ZS5SdW5uaW5nICYmIFxuICAgICAgICAgIHByb2Nlc3Muc3RhdGUgIT09IFByb2Nlc3NTdGF0ZS5RdWV1ZWRcbiAgICAgICAgKVwiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInF1ZXVlKClcIj5cbiAgICAgIFF1ZXVlXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInByb2Nlc3MuZmlsZW5hbWVcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJkb3dubG9hZCgpXCI+XG4gICAgICBEb3dubG9hZFxuICAgIDwvYnV0dG9uPlxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbjwvZnMtZGlhbG9nPiJdfQ==
|