@o3r/rules-engine 10.0.0-prerelease.9 → 10.0.0-prerelease.91
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/builders/rules-engine-extractor/index.d.ts.map +1 -1
- package/builders/rules-engine-extractor/index.js +2 -2
- package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts +7 -7
- package/components/rules-engine/shared/fallback-to.pipe.d.ts +8 -1
- package/components/rules-engine/shared/fallback-to.pipe.d.ts.map +1 -1
- package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +5 -5
- package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +3 -3
- package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +4 -4
- package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +3 -3
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +5 -5
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +8 -8
- package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +16 -5
- package/esm2022/devkit/rules-engine-devtools.console.service.mjs +3 -3
- package/esm2022/devkit/rules-engine-devtools.message.service.mjs +3 -3
- package/esm2022/devkit/rules-engine-devtools.module.mjs +4 -4
- package/esm2022/devkit/rules-engine-devtools.service.mjs +3 -3
- package/esm2022/services/runner/rules-engine.runner.module.mjs +4 -4
- package/esm2022/services/runner/rules-engine.runner.service.mjs +3 -3
- package/esm2022/stores/rulesets/rulesets.effect.mjs +3 -3
- package/esm2022/stores/rulesets/rulesets.module.mjs +4 -4
- package/fesm2022/o3r-rules-engine.mjs +70 -59
- package/fesm2022/o3r-rules-engine.mjs.map +1 -1
- package/package.json +17 -14
- package/schematics/cms-adapter/index.d.ts +2 -3
- package/schematics/cms-adapter/index.d.ts.map +1 -1
- package/schematics/cms-adapter/index.js +7 -3
- package/schematics/facts-service/index.d.ts +1 -2
- package/schematics/facts-service/index.d.ts.map +1 -1
- package/schematics/facts-service/index.js +6 -3
- package/schematics/ng-add/index.d.ts +1 -1
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +6 -2
- package/schematics/ng-update/v10.0/action-module-split.d.ts.map +1 -1
- package/schematics/ng-update/v10.0/action-module-split.js +4 -0
- package/schematics/operator/index.d.ts +1 -1
- package/schematics/operator/index.d.ts.map +1 -1
- package/schematics/operator/index.js +6 -2
- package/schematics/rules-engine-to-component/index.d.ts +1 -1
- package/schematics/rules-engine-to-component/index.d.ts.map +1 -1
- package/schematics/rules-engine-to-component/index.js +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/rules-engine-extractor/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAE7D,cAAc,UAAU,CAAC;;AAIzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../builders/rules-engine-extractor/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAE7D,cAAc,UAAU,CAAC;;AAIzB,wBAsGI"}
|
|
@@ -9,7 +9,7 @@ const node_path_1 = require("node:path");
|
|
|
9
9
|
const helpers_1 = require("./helpers");
|
|
10
10
|
tslib_1.__exportStar(require("./schema"), exports);
|
|
11
11
|
const SCHEMA_FOLDER = 'fact-schemas';
|
|
12
|
-
exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
12
|
+
exports.default = (0, architect_1.createBuilder)((0, extractors_1.createBuilderWithMetricsIfInstalled)(async (options, context) => {
|
|
13
13
|
context.reportRunning();
|
|
14
14
|
const outputFactsFile = (0, node_path_1.resolve)(context.currentDirectory, options.outputFactsDirectory, 'rules.facts.metadata.json');
|
|
15
15
|
const outputOperatorsFile = (0, node_path_1.resolve)(context.currentDirectory, options.outputOperatorsDirectory, 'rules.operators.metadata.json');
|
|
@@ -102,5 +102,5 @@ exports.default = (0, architect_1.createBuilder)(async (options, context) => {
|
|
|
102
102
|
return {
|
|
103
103
|
success: true
|
|
104
104
|
};
|
|
105
|
-
});
|
|
105
|
+
}));
|
|
106
106
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "
|
|
3
|
-
import * as i2 from "
|
|
4
|
-
import * as i3 from "../rule-
|
|
5
|
-
import * as i4 from "../rule-
|
|
6
|
-
import * as i5 from "../rule-
|
|
7
|
-
import * as i6 from "../
|
|
2
|
+
import * as i1 from "./ruleset-history-pres.component";
|
|
3
|
+
import * as i2 from "../rule-condition/rule-condition-pres.component";
|
|
4
|
+
import * as i3 from "../rule-tree/rule-tree-pres.component";
|
|
5
|
+
import * as i4 from "../rule-actions/rule-actions-pres.component";
|
|
6
|
+
import * as i5 from "../rule-key-value/rule-key-value-pres.component";
|
|
7
|
+
import * as i6 from "../shared/fallback-to.pipe";
|
|
8
8
|
import * as i7 from "@angular/common";
|
|
9
9
|
export declare class RulesetHistoryPresModule {
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<RulesetHistoryPresModule, never>;
|
|
11
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<RulesetHistoryPresModule, [typeof i1.
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<RulesetHistoryPresModule, [typeof i1.RulesetHistoryPresComponent, typeof i2.RuleConditionPresComponent, typeof i3.RuleTreePresComponent, typeof i4.RuleActionsPresComponent, typeof i5.RuleKeyValuePresComponent], [typeof i6.O3rFallbackToPipe, typeof i7.CommonModule, typeof i7.CommonModule, typeof i7.CommonModule], [typeof i1.RulesetHistoryPresComponent]>;
|
|
12
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<RulesetHistoryPresModule>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=ruleset-history-pres.module.d.ts.map
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { PipeTransform } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class O3rFallbackToPipe implements PipeTransform {
|
|
4
4
|
transform<T>(value: T, fallback?: string): T | string;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<O3rFallbackToPipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<O3rFallbackToPipe, "o3rFallbackTo", true>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated please use O3rFallbackToPipe, will be removed in v12.
|
|
10
|
+
*/
|
|
11
|
+
export declare class FallbackToPipe extends O3rFallbackToPipe implements PipeTransform {
|
|
5
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<FallbackToPipe, never>;
|
|
6
13
|
static ɵpipe: i0.ɵɵPipeDeclaration<FallbackToPipe, "fallbackTo", false>;
|
|
7
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-to.pipe.d.ts","sourceRoot":"","sources":["../../../../src/components/rules-engine/shared/fallback-to.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,aAAa,EAAC,MAAM,eAAe,CAAC;;AAElD,qBACa,
|
|
1
|
+
{"version":3,"file":"fallback-to.pipe.d.ts","sourceRoot":"","sources":["../../../../src/components/rules-engine/shared/fallback-to.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,aAAa,EAAC,MAAM,eAAe,CAAC;;AAElD,qBACa,iBAAkB,YAAW,aAAa;IAC9C,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,SAAc,GAAG,CAAC,GAAG,MAAM;yCADtD,iBAAiB;uCAAjB,iBAAiB;CAI7B;AAED;;GAEG;AACH,qBACa,cAAe,SAAQ,iBAAkB,YAAW,aAAa;yCAAjE,cAAc;uCAAd,cAAc;CAAsD"}
|
|
@@ -19,12 +19,12 @@ export class RuleActionsPresComponent {
|
|
|
19
19
|
*/
|
|
20
20
|
this.runtimeOutputs = [];
|
|
21
21
|
}
|
|
22
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
23
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
22
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleActionsPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: { actions: "actions", temporaryFacts: "temporaryFacts", runtimeOutputs: "runtimeOutputs" }, ngImport: i0, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i3.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleActionsPresComponent, decorators: [{
|
|
26
26
|
type: Component,
|
|
27
|
-
args: [{ selector: 'o3r-rule-actions-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact |
|
|
27
|
+
args: [{ selector: 'o3r-rule-actions-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"ruleset-panel-category-title\">Output Actions</div>\n<div *ngIf=\"actions.length === 0 && runtimeOutputs.length === 0\" class=\"ruleset-panel-category-body empty\">\n No action\n</div>\n<ul class=\"ruleset-panel-category-body\">\n <li *ngFor=\"let action of actions\">\n <ng-container *ngIf=\"action.actionType\">\n <ng-container [ngSwitch]=\"action.actionType\">\n <div *ngSwitchCase=\"'SET_FACT'\">\n <div>Set Fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.fact | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_CONFIG'\">\n <div>Update Config {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"action.property | o3rFallbackTo: 'Missing \\'property\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_ASSET'\">\n <div>Update Asset:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.asset | o3rFallbackTo: 'Missing \\'asset\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchCase=\"'UPDATE_LOCALISATION'\">\n <div>Update localization:</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.key | o3rFallbackTo: 'Missing \\'key\\''\"\n [value]=\"action.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div\n *ngSwitchCase=\"'UPDATE_PLACEHOLDER'\"\n [class.error]=\"!action.placeholderId\">\n <div>Update placeholder in {{action.component}} {{action.library}}</div>\n <div>\n <o3r-rule-key-value-pres\n [oldValue]=\"action.placeholderId | o3rFallbackTo: 'Missing \\'placeholderId\\''\"\n [value]=\"action.value\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </div>\n </div>\n <div *ngSwitchDefault class=\"error\">\n <div>Unrecognized action</div>\n <div>{{action | json}}</div>\n </div>\n </ng-container>\n </ng-container>\n </li>\n <li *ngFor=\"let runtimeOutput of runtimeOutputs\">\n <div>Set temporary fact</div>\n <div>\n <o3r-rule-key-value-pres\n [key]=\"runtimeOutput | o3rFallbackTo: 'Missing \\'fact\\''\"\n [value]=\"temporaryFacts[runtimeOutput] | o3rFallbackTo\"\n [type]=\"'assignment'\"></o3r-rule-key-value-pres>\n </div>\n </li>\n</ul>\n", styles: ["o3r-rule-actions-pres .ruleset-panel-title,o3r-rule-actions-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-actions-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-actions-pres .ruleset-expansion-action,o3r-rule-actions-pres .icon-caret-down,o3r-rule-actions-pres .icon-caret-up{cursor:pointer}o3r-rule-actions-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-actions-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-actions-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-actions-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-actions-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}\n"] }]
|
|
28
28
|
}], propDecorators: { actions: [{
|
|
29
29
|
type: Input
|
|
30
30
|
}], temporaryFacts: [{
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
32
32
|
}], runtimeOutputs: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1hY3Rpb25zLXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGUtYWN0aW9ucy9ydWxlLWFjdGlvbnMtcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZS1hY3Rpb25zL3J1bGUtYWN0aW9ucy1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBVTdGLE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFTRTs7V0FFRztRQUVJLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFFaEM7OztXQUdHO1FBRUksbUJBQWMsR0FBMEIsRUFBRSxDQUFDO1FBRWxEOztXQUVHO1FBRUksbUJBQWMsR0FBYSxFQUFFLENBQUM7S0FDdEM7aUlBcEJZLHdCQUF3QjtxSEFBeEIsd0JBQXdCLGlLQ1ZyQywwNUZBd0VBOzsyRkQ5RGEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFROUIsT0FBTztzQkFEYixLQUFLO2dCQVFDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBBbGxCbG9jaywgRmFjdHMgfSBmcm9tICcuLi8uLi8uLi9lbmdpbmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvM3ItcnVsZS1hY3Rpb25zLXByZXMnLFxuICBzdHlsZVVybHM6IFsnLi9ydWxlLWFjdGlvbnMtcHJlcy5zdHlsZS5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9ydWxlLWFjdGlvbnMtcHJlcy50ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUnVsZUFjdGlvbnNQcmVzQ29tcG9uZW50IHtcblxuICAvKipcbiAgICogTGlzdCBvZiBhbGwgdGhlIG91dHB1dCBhY3Rpb25zIG9mIGEgcnVsZXMgb3IgcnVsZXNldCBleGVjdXRpb25cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3Rpb25zOiBBbGxCbG9ja1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHRlbXBvcmFyeSBmYWN0cyB1c2VkIGFuZC9vciBtb2RpZmllZCB3aXRoaW4gdGhlIHJ1bGUgb3IgdGhlIHJ1bGVzZXQuXG4gICAqIFRoZXkgYXJlIHNjb3BlZCB0byB0aGUgcnVsZXNldCBhbmQgdGhlaXIgdmFsdWUgaXMgdGhlIG9uZSBhZnRlciB0aGUgcnVsZSBvciBydWxlc2V0IGV4ZWN1dGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0ZW1wb3JhcnlGYWN0czogUmVjb3JkPHN0cmluZywgRmFjdHM+ID0ge307XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgdGVtcG9yYXJ5IGZhY3RzIHRoYXQgd2lsbCBiZSBtb2RpZmllZCBieSB0aGUgcnVsZXNldCBvciB0aGUgcnVsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBydW50aW1lT3V0cHV0czogc3RyaW5nW10gPSBbXTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+T3V0cHV0IEFjdGlvbnM8L2Rpdj5cbjxkaXYgKm5nSWY9XCJhY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiBydW50aW1lT3V0cHV0cy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keSBlbXB0eVwiPlxuICBObyBhY3Rpb25cbjwvZGl2PlxuPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5XCI+XG4gIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uLmFjdGlvblR5cGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjdGlvbi5hY3Rpb25UeXBlXCI+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidTRVRfRkFDVCdcIj5cbiAgICAgICAgICA8ZGl2PlNldCBGYWN0PC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICAgICAgICBba2V5XT1cImFjdGlvbi5mYWN0IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwnZmFjdFxcJydcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiYWN0aW9uLnZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgICAgIFt0eXBlXT1cIidhc3NpZ25tZW50J1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInVVBEQVRFX0NPTkZJRydcIj5cbiAgICAgICAgICA8ZGl2PlVwZGF0ZSBDb25maWcge3thY3Rpb24uY29tcG9uZW50fX0ge3thY3Rpb24ubGlicmFyeX19PC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICAgICAgICBba2V5XT1cImFjdGlvbi5wcm9wZXJ0eSB8IG8zckZhbGxiYWNrVG86ICdNaXNzaW5nIFxcJ3Byb3BlcnR5XFwnJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhY3Rpb24udmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ2Fzc2lnbm1lbnQnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidVUERBVEVfQVNTRVQnXCI+XG4gICAgICAgICAgPGRpdj5VcGRhdGUgQXNzZXQ6PC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICAgICAgICBbb2xkVmFsdWVdPVwiYWN0aW9uLmFzc2V0IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwnYXNzZXRcXCcnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjdGlvbi52YWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidVUERBVEVfTE9DQUxJU0FUSU9OJ1wiPlxuICAgICAgICAgIDxkaXY+VXBkYXRlIGxvY2FsaXphdGlvbjo8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgICAgIFtvbGRWYWx1ZV09XCJhY3Rpb24ua2V5IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwna2V5XFwnJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhY3Rpb24udmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidVUERBVEVfUExBQ0VIT0xERVInXCJcbiAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwiIWFjdGlvbi5wbGFjZWhvbGRlcklkXCI+XG4gICAgICAgICAgPGRpdj5VcGRhdGUgcGxhY2Vob2xkZXIgaW4ge3thY3Rpb24uY29tcG9uZW50fX0ge3thY3Rpb24ubGlicmFyeX19PC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxvM3ItcnVsZS1rZXktdmFsdWUtcHJlc1xuICAgICAgICAgICAgICBbb2xkVmFsdWVdPVwiYWN0aW9uLnBsYWNlaG9sZGVySWQgfCBvM3JGYWxsYmFja1RvOiAnTWlzc2luZyBcXCdwbGFjZWhvbGRlcklkXFwnJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhY3Rpb24udmFsdWVcIlxuICAgICAgICAgICAgICBbdHlwZV09XCInc3RhdGUnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdCBjbGFzcz1cImVycm9yXCI+XG4gICAgICAgICAgPGRpdj5VbnJlY29nbml6ZWQgYWN0aW9uPC9kaXY+XG4gICAgICAgICAgPGRpdj57e2FjdGlvbiB8IGpzb259fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2xpPlxuICA8bGkgKm5nRm9yPVwibGV0IHJ1bnRpbWVPdXRwdXQgb2YgcnVudGltZU91dHB1dHNcIj5cbiAgICA8ZGl2PlNldCB0ZW1wb3JhcnkgZmFjdDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8bzNyLXJ1bGUta2V5LXZhbHVlLXByZXNcbiAgICAgICAgW2tleV09XCJydW50aW1lT3V0cHV0IHwgbzNyRmFsbGJhY2tUbzogJ01pc3NpbmcgXFwnZmFjdFxcJydcIlxuICAgICAgICBbdmFsdWVdPVwidGVtcG9yYXJ5RmFjdHNbcnVudGltZU91dHB1dF0gfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgW3R5cGVdPVwiJ2Fzc2lnbm1lbnQnXCI+PC9vM3ItcnVsZS1rZXktdmFsdWUtcHJlcz5cbiAgICA8L2Rpdj5cbiAgPC9saT5cbjwvdWw+XG4iXX0=
|
|
@@ -25,10 +25,10 @@ export class RuleConditionPresComponent {
|
|
|
25
25
|
const value = `${operand.value ?? 'MISSING_VALUE'}`;
|
|
26
26
|
return operand.path ? operand.path.replace(/^[$]/, value) : value;
|
|
27
27
|
}
|
|
28
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
29
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
28
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleConditionPresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RuleConditionPresComponent, selector: "o3r-rule-condition-pres", inputs: { condition: "condition" }, ngImport: i0, template: "<ng-container *ngIf=\"!condition; else displayConditions\">\n <span class=\"input-value\">true</span>\n</ng-container>\n<ng-template #displayConditions>\n <ng-container *ngIf=\"!$any(condition).all && !$any(condition).any && !$any(condition).not\">\n <span class=\"input-key\">{{ lhs }}</span> {{ $any(condition).operator }} <span class=\"input-value\" *ngIf=\"rhs !== undefined\">{{ rhs }}</span>\n </ng-container>\n <ng-container *ngIf=\"$any(condition).all || $any(condition).any || $any(condition).not\">\n <span *ngIf=\"$any(condition).all\">ALL</span>\n <span *ngIf=\"$any(condition).any\">ANY</span>\n <span *ngIf=\"$any(condition).not\">NOT</span>\n <span>(\n <ng-container *ngFor=\"let cond of $any(condition).all || $any(condition).any || [$any(condition).not]; let last = last;\">\n <o3r-rule-condition-pres [condition]=\"cond\"></o3r-rule-condition-pres>\n <span *ngIf=\"!last\">, </span>\n </ng-container>\n )</span>\n </ng-container>\n</ng-template>\n", styles: ["o3r-rule-condition-pres{word-break:break-word}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RuleConditionPresComponent, selector: "o3r-rule-condition-pres", inputs: ["condition"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
30
30
|
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleConditionPresComponent, decorators: [{
|
|
32
32
|
type: Component,
|
|
33
33
|
args: [{ selector: 'o3r-rule-condition-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"!condition; else displayConditions\">\n <span class=\"input-value\">true</span>\n</ng-container>\n<ng-template #displayConditions>\n <ng-container *ngIf=\"!$any(condition).all && !$any(condition).any && !$any(condition).not\">\n <span class=\"input-key\">{{ lhs }}</span> {{ $any(condition).operator }} <span class=\"input-value\" *ngIf=\"rhs !== undefined\">{{ rhs }}</span>\n </ng-container>\n <ng-container *ngIf=\"$any(condition).all || $any(condition).any || $any(condition).not\">\n <span *ngIf=\"$any(condition).all\">ALL</span>\n <span *ngIf=\"$any(condition).any\">ANY</span>\n <span *ngIf=\"$any(condition).not\">NOT</span>\n <span>(\n <ng-container *ngFor=\"let cond of $any(condition).all || $any(condition).any || [$any(condition).not]; let last = last;\">\n <o3r-rule-condition-pres [condition]=\"cond\"></o3r-rule-condition-pres>\n <span *ngIf=\"!last\">, </span>\n </ng-container>\n )</span>\n </ng-container>\n</ng-template>\n", styles: ["o3r-rule-condition-pres{word-break:break-word}\n"] }]
|
|
34
34
|
}], propDecorators: { condition: [{
|
|
@@ -45,12 +45,12 @@ export class RuleKeyValuePresComponent {
|
|
|
45
45
|
await navigator.clipboard.writeText(content);
|
|
46
46
|
this.triggerNotification.next();
|
|
47
47
|
}
|
|
48
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
49
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
48
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleKeyValuePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: { key: "key", value: "value", oldValue: "oldValue", type: "type" }, usesOnChanges: true, ngImport: i0, template: "<span *ngIf=\"key\" class=\"input-key\">{{key}}<ng-container *ngIf=\"type === 'state'\">: </ng-container></span>\n<ng-container *ngIf=\"type === 'assignment'\"> = </ng-container>\n<ng-container *ngIf=\"oldValue\">\n <pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForOldValue\"\n (click)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\">{{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}</pre>\n <button (click)=\"copyToClipBoard(oldValue)\" *ngIf=\"isClipBoardFeatureAvailableForOldValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n \u2192\n</ng-container>\n<pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForValue\"\n (click)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\">{{isValuePrimitiveType ? value : (value | json)}}</pre>\n<button (click)=\"copyToClipBoard(value)\" *ngIf=\"isClipBoardFeatureAvailableForValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n<div role=\"alert\" class=\"notification\" *ngIf=\"showNotification$ | async\">Copied to clipboard</div>\n", styles: ["o3r-rule-key-value-pres{position:relative}o3r-rule-key-value-pres .ruleset-panel-title,o3r-rule-key-value-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-key-value-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-key-value-pres .ruleset-expansion-action,o3r-rule-key-value-pres .icon-caret-down,o3r-rule-key-value-pres .icon-caret-up{cursor:pointer}o3r-rule-key-value-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-key-value-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-key-value-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-key-value-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-rule-key-value-pres .limit-characters{display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:38rem;vertical-align:bottom}o3r-rule-key-value-pres .input-value{margin-top:0;margin-bottom:0}o3r-rule-key-value-pres button{background:none;border:0;appearance:none}o3r-rule-key-value-pres .notification{position:absolute;padding:1rem 1.5rem;border-radius:5px;background:#444;color:#eee;right:0;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
50
50
|
}
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleKeyValuePresComponent, decorators: [{
|
|
52
52
|
type: Component,
|
|
53
|
-
args: [{ selector: 'o3r-rule-key-value-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"key\" class=\"input-key\">{{key}}<ng-container *ngIf=\"type === 'state'\">: </ng-container></span>\n<ng-container *ngIf=\"type === 'assignment'\"> = </ng-container>\n<ng-container *ngIf=\"oldValue\">\n <pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForOldValue\"\n (click)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\">{{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}</pre>\n <button (click)=\"copyToClipBoard(oldValue)\" *ngIf=\"isClipBoardFeatureAvailableForOldValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n \u2192\n</ng-container>\n<pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForValue\"\n (click)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\">{{isValuePrimitiveType ? value : (value | json)}}</pre>\n<button (click)=\"copyToClipBoard(value)\" *ngIf=\"isClipBoardFeatureAvailableForValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n<div role=\"alert\" class=\"notification\" *ngIf=\"showNotification$ | async\">Copied to clipboard</div>\n", styles: ["o3r-rule-key-value-pres{position:relative}o3r-rule-key-value-pres .ruleset-panel-title,o3r-rule-key-value-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-key-value-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-key-value-pres .ruleset-expansion-action,o3r-rule-key-value-pres .icon-caret-down,o3r-rule-key-value-pres .icon-caret-up{cursor:pointer}o3r-rule-key-value-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-key-value-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width
|
|
53
|
+
args: [{ selector: 'o3r-rule-key-value-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"key\" class=\"input-key\">{{key}}<ng-container *ngIf=\"type === 'state'\">: </ng-container></span>\n<ng-container *ngIf=\"type === 'assignment'\"> = </ng-container>\n<ng-container *ngIf=\"oldValue\">\n <pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForOldValue\"\n (click)=\"shouldLimitCharactersForOldValue = !shouldLimitCharactersForOldValue\">{{isOldValuePrimitiveType ? oldValue : (oldValue | json)}}</pre>\n <button (click)=\"copyToClipBoard(oldValue)\" *ngIf=\"isClipBoardFeatureAvailableForOldValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n \u2192\n</ng-container>\n<pre class=\"input-value\"\n [class.limit-characters]=\"shouldLimitCharactersForValue\"\n (click)=\"shouldLimitCharactersForValue = !shouldLimitCharactersForValue\">{{isValuePrimitiveType ? value : (value | json)}}</pre>\n<button (click)=\"copyToClipBoard(value)\" *ngIf=\"isClipBoardFeatureAvailableForValue\" title=\"Copy to clipboard\">\uD83D\uDCCB</button>\n<div role=\"alert\" class=\"notification\" *ngIf=\"showNotification$ | async\">Copied to clipboard</div>\n", styles: ["o3r-rule-key-value-pres{position:relative}o3r-rule-key-value-pres .ruleset-panel-title,o3r-rule-key-value-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-rule-key-value-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-rule-key-value-pres .ruleset-expansion-action,o3r-rule-key-value-pres .icon-caret-down,o3r-rule-key-value-pres .icon-caret-up{cursor:pointer}o3r-rule-key-value-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-rule-key-value-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-rule-key-value-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-rule-key-value-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-rule-key-value-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-rule-key-value-pres .limit-characters{display:inline-block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:38rem;vertical-align:bottom}o3r-rule-key-value-pres .input-value{margin-top:0;margin-bottom:0}o3r-rule-key-value-pres button{background:none;border:0;appearance:none}o3r-rule-key-value-pres .notification{position:absolute;padding:1rem 1.5rem;border-radius:5px;background:#444;color:#eee;right:0;z-index:1}\n"] }]
|
|
54
54
|
}], propDecorators: { key: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}], value: [{
|
|
@@ -28,10 +28,10 @@ export class RuleTreePresComponent {
|
|
|
28
28
|
*/
|
|
29
29
|
this.successActionsExpanded = false;
|
|
30
30
|
}
|
|
31
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
32
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
31
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleTreePresComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: { name: "name", blockType: "blockType", condition: "condition", successElements: "successElements", failureElements: "failureElements" }, ngImport: i0, template: "<span *ngIf=\"name\">{{name | titlecase}}:</span>\n<div class=\"rule-wrapper tree\">\n <ng-container *ngIf=\"blockType === 'IF_ELSE'; else noCondition\">\n <div class=\"tree-root\" *ngIf=\"!name\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If\n <o3r-rule-condition-pres [condition]=\"condition\"></o3r-rule-condition-pres>\n </div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper tree-node\">\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title success-actions\"\n tabindex=\"0\"\n (click)=\"successActionsExpanded = !successActionsExpanded\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\"></i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\" *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title error-actions\"\n tabindex=\"0\"\n (click)=\"failureActionsExpanded = !failureActionsExpanded\"\n (keyup.enter)=\"failureActionsExpanded = !failureActionsExpanded\">\n <i class=\"icon refx-icon-cross\"></i>\n <span>Else</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!failureActionsExpanded\"\n [class.icon-caret-up]=\"failureActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"failureActionsExpanded\"\n [actions]=\"failureElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: failureElements}\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n<ng-template #noCondition>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If <span class=\"input-value\">true</span></div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper\">\n <div class=\"rule-actions\">\n <div class=\"rule-action-title success-actions\" tabindex=\"0\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\"\n (click)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\">\n </i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #subTree let-blocks=\"blocks\">\n <div class=\"rule-sub-trees\">\n <ng-container *ngFor=\"let block of blocks\">\n <div *ngIf=\"block.blockType === 'IF_ELSE'\" class=\"tree-branch\">\n <o3r-rule-tree-pres\n [blockType]=\"'IF_ELSE'\"\n [condition]=\"block.condition\"\n [failureElements]=\"block.failureElements\"\n [successElements]=\"block.successElements\"></o3r-rule-tree-pres>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: ["o3r-rule-tree-pres{display:block;padding-bottom:1rem}o3r-rule-tree-pres .rule-sub-trees{display:flex}o3r-rule-tree-pres .rule-conditions-title,o3r-rule-tree-pres .rule-action-title{text-align:center}o3r-rule-tree-pres .rule-conditions-title{border:1px solid #999999;background:#fff;color:#000;padding:.2rem}o3r-rule-tree-pres .rule-action-title{background:#fff;border-radius:0;border:1px solid #999999;cursor:pointer;display:flex;justify-content:center;align-items:center;gap:.5rem}o3r-rule-tree-pres .rule-tree-actions{display:block;padding:.5rem}o3r-rule-tree-pres .rule-actions:first-child>.rule-action-title{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}o3r-rule-tree-pres .rule-actions:last-child>.rule-action-title{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}o3r-rule-tree-pres .rule-actions-wrapper{display:flex}o3r-rule-tree-pres .rule-actions-wrapper .rule-actions{flex:1 1 100%}o3r-rule-tree-pres .success-actions{border-color:#16aa32}o3r-rule-tree-pres .success-actions.rule-action-title{background:#16aa32;color:#fff}o3r-rule-tree-pres .error-actions{border-color:#c02020}o3r-rule-tree-pres .error-actions.rule-action-title{background:#c02020;color:#fff}o3r-rule-tree-pres .tree .tree-leaf,o3r-rule-tree-pres .tree .tree-root{display:flex;width:100%}o3r-rule-tree-pres .tree .tree-leaf>div,o3r-rule-tree-pres .tree .tree-root>div{height:1rem;width:50%}o3r-rule-tree-pres .tree .tree-root div:first-child{border-right:1px dashed}o3r-rule-tree-pres .tree .tree-root{margin-top:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:last-child>.tree-leaf>div:first-child{border-right:1px dashed;border-top:1px dashed;border-top-right-radius:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:first-child>.tree-leaf>div:last-child{border-left:1px dashed;border-top:1px dashed;border-top-left-radius:.2rem}o3r-rule-tree-pres .icon{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleConditionPresComponent, selector: "o3r-rule-condition-pres", inputs: ["condition"] }, { kind: "component", type: RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
33
33
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RuleTreePresComponent, decorators: [{
|
|
35
35
|
type: Component,
|
|
36
36
|
args: [{ selector: 'o3r-rule-tree-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"name\">{{name | titlecase}}:</span>\n<div class=\"rule-wrapper tree\">\n <ng-container *ngIf=\"blockType === 'IF_ELSE'; else noCondition\">\n <div class=\"tree-root\" *ngIf=\"!name\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If\n <o3r-rule-condition-pres [condition]=\"condition\"></o3r-rule-condition-pres>\n </div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper tree-node\">\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title success-actions\"\n tabindex=\"0\"\n (click)=\"successActionsExpanded = !successActionsExpanded\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\"></i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\" *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n <div class=\"rule-actions tree-branch\">\n <div class=\"tree-leaf\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n <div class=\"rule-action-title error-actions\"\n tabindex=\"0\"\n (click)=\"failureActionsExpanded = !failureActionsExpanded\"\n (keyup.enter)=\"failureActionsExpanded = !failureActionsExpanded\">\n <i class=\"icon refx-icon-cross\"></i>\n <span>Else</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!failureActionsExpanded\"\n [class.icon-caret-up]=\"failureActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"failureActionsExpanded\"\n [actions]=\"failureElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: failureElements}\"></ng-container>\n </div>\n </div>\n </ng-container>\n</div>\n<ng-template #noCondition>\n <div class=\"rule-conditions\">\n <div class=\"rule-conditions-title\">If <span class=\"input-value\">true</span></div>\n <div class=\"tree-root\" [attr.aria-hidden]=\"true\">\n <div></div>\n <div></div>\n </div>\n </div>\n <div class=\"rule-actions-wrapper\">\n <div class=\"rule-actions\">\n <div class=\"rule-action-title success-actions\" tabindex=\"0\"\n (keyup.enter)=\"successActionsExpanded = !successActionsExpanded\"\n (click)=\"successActionsExpanded = !successActionsExpanded\">\n <i class=\"icon refx-icon-validate\">\n </i>\n <span>Then</span>\n <i class=\"icon\"\n [class.icon-caret-down]=\"!successActionsExpanded\"\n [class.icon-caret-up]=\"successActionsExpanded\">\n </i>\n </div>\n <o3r-rule-actions-pres class=\"rule-tree-actions\"\n *ngIf=\"successActionsExpanded\"\n [actions]=\"successElements\">\n </o3r-rule-actions-pres>\n <ng-container [ngTemplateOutlet]=\"subTree\" [ngTemplateOutletContext]=\"{blocks: successElements}\"></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #subTree let-blocks=\"blocks\">\n <div class=\"rule-sub-trees\">\n <ng-container *ngFor=\"let block of blocks\">\n <div *ngIf=\"block.blockType === 'IF_ELSE'\" class=\"tree-branch\">\n <o3r-rule-tree-pres\n [blockType]=\"'IF_ELSE'\"\n [condition]=\"block.condition\"\n [failureElements]=\"block.failureElements\"\n [successElements]=\"block.successElements\"></o3r-rule-tree-pres>\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: ["o3r-rule-tree-pres{display:block;padding-bottom:1rem}o3r-rule-tree-pres .rule-sub-trees{display:flex}o3r-rule-tree-pres .rule-conditions-title,o3r-rule-tree-pres .rule-action-title{text-align:center}o3r-rule-tree-pres .rule-conditions-title{border:1px solid #999999;background:#fff;color:#000;padding:.2rem}o3r-rule-tree-pres .rule-action-title{background:#fff;border-radius:0;border:1px solid #999999;cursor:pointer;display:flex;justify-content:center;align-items:center;gap:.5rem}o3r-rule-tree-pres .rule-tree-actions{display:block;padding:.5rem}o3r-rule-tree-pres .rule-actions:first-child>.rule-action-title{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}o3r-rule-tree-pres .rule-actions:last-child>.rule-action-title{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}o3r-rule-tree-pres .rule-actions-wrapper{display:flex}o3r-rule-tree-pres .rule-actions-wrapper .rule-actions{flex:1 1 100%}o3r-rule-tree-pres .success-actions{border-color:#16aa32}o3r-rule-tree-pres .success-actions.rule-action-title{background:#16aa32;color:#fff}o3r-rule-tree-pres .error-actions{border-color:#c02020}o3r-rule-tree-pres .error-actions.rule-action-title{background:#c02020;color:#fff}o3r-rule-tree-pres .tree .tree-leaf,o3r-rule-tree-pres .tree .tree-root{display:flex;width:100%}o3r-rule-tree-pres .tree .tree-leaf>div,o3r-rule-tree-pres .tree .tree-root>div{height:1rem;width:50%}o3r-rule-tree-pres .tree .tree-root div:first-child{border-right:1px dashed}o3r-rule-tree-pres .tree .tree-root{margin-top:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:last-child>.tree-leaf>div:first-child{border-right:1px dashed;border-top:1px dashed;border-top-right-radius:.2rem}o3r-rule-tree-pres .tree .tree-node>.tree-branch:first-child>.tree-leaf>div:last-child{border-left:1px dashed;border-top:1px dashed;border-top-left-radius:.2rem}o3r-rule-tree-pres .icon{cursor:pointer}\n"] }]
|
|
37
37
|
}], propDecorators: { name: [{
|
|
@@ -35,15 +35,15 @@ export class RulesetHistoryPresComponent {
|
|
|
35
35
|
}
|
|
36
36
|
this.cd.detectChanges();
|
|
37
37
|
}
|
|
38
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
39
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: RulesetHistoryPresComponent, selector: "o3r-ruleset-history-pres", inputs: { rulesetExecutions: "rulesetExecutions", executionDurationFormat: "executionDurationFormat" }, ngImport: i0, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponent as linkedComponent\">\n {{linkedComponent.name}} {{linkedComponent.library}}\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <span class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error.message}}</span>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | fallbackTo\"\n [value]=\"trigger.value.newValue | fallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | fallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:-moz-fit-content;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "component", type: i4.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i5.FallbackToPipe, name: "fallbackTo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
38
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RulesetHistoryPresComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: RulesetHistoryPresComponent, selector: "o3r-ruleset-history-pres", inputs: { rulesetExecutions: "rulesetExecutions", executionDurationFormat: "executionDurationFormat" }, ngImport: i0, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponent as linkedComponent\">\n {{linkedComponent.name}} {{linkedComponent.library}}\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <span class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error.message}}</span>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RuleTreePresComponent, selector: "o3r-rule-tree-pres", inputs: ["name", "blockType", "condition", "successElements", "failureElements"] }, { kind: "component", type: i3.RuleActionsPresComponent, selector: "o3r-rule-actions-pres", inputs: ["actions", "temporaryFacts", "runtimeOutputs"] }, { kind: "component", type: i4.RuleKeyValuePresComponent, selector: "o3r-rule-key-value-pres", inputs: ["key", "value", "oldValue", "type"] }, { kind: "pipe", type: i5.O3rFallbackToPipe, name: "o3rFallbackTo" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: RulesetHistoryPresComponent, decorators: [{
|
|
42
42
|
type: Component,
|
|
43
|
-
args: [{ selector: 'o3r-ruleset-history-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponent as linkedComponent\">\n {{linkedComponent.name}} {{linkedComponent.library}}\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <span class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error.message}}</span>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | fallbackTo\"\n [value]=\"trigger.value.newValue | fallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | fallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:-moz-fit-content;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"] }]
|
|
43
|
+
args: [{ selector: 'o3r-ruleset-history-pres', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section>\n <h4 class=\"mb-4\">Ruleset Execution History</h4>\n <ng-template #noRulesEngine>\n <div class=\"alert alert-danger m-2\" role=\"alert\">\n The Rules Engine is not configured on this page.\n </div>\n </ng-template>\n <ul *ngIf=\"rulesetExecutions; else noRulesEngine\" class=\"rulesets\">\n <li *ngFor=\"let execution of rulesetExecutions\" class=\"ruleset\">\n <div class=\"ruleset-panel-title ruleset-expansion-action\"\n [class.error]=\"execution.type === 'RulesetExecutionError'\"\n (click)=\"toggleExpansion(execution.executionId, 'ruleset')\">\n <div><span [title]=\"'This ruleset has been evaluated ' + execution.executionCounter + ' time(s)'\">{{execution.executionCounter}}</span> - {{execution.rulesetName | titlecase }}\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.linkedComponent as linkedComponent\">\n {{linkedComponent.name}} {{linkedComponent.library}}\n </div>\n <div class=\"ruleset-panel-subtitle\" *ngIf=\"execution.rulesetInformation?.validityRange as validityRange\">\n Date range: {{validityRange.from}} - {{validityRange.to}}\n </div>\n </div>\n <div class=\"ruleset-panel-title-aside\">\n <span class=\"error capsule\" *ngIf=\"execution.status === 'Error'\">Error</span>\n <span class=\"success capsule\" *ngIf=\"execution.status === 'Active'\">Applied</span>\n <span class=\"inactive capsule\" *ngIf=\"execution.status === 'Deactivated'\">Deactivated</span>\n <span class=\"warn capsule\" *ngIf=\"execution.status === 'NoEffect'\">No effect</span>\n <span class=\"time capsule\">\n <span>{{execution.timestamp | date: 'HH:mm:ss SSS'}}</span>\n <span>({{execution.duration | number: executionDurationFormat}}ms)</span>\n </span>\n <button\n class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[execution.executionId]?.ruleset\"\n [class.icon-caret-up]=\"expansionStatus[execution.executionId]?.ruleset\">\n </button>\n </div>\n </div>\n <div class=\"ruleset-panel-description\" *ngIf=\"expansionStatus[execution.executionId]?.ruleset\">\n <ng-container [ngTemplateOutlet]=\"rules\"\n [ngTemplateOutletContext]=\"{\n rules: execution.rulesetInformation.rules,\n expansionID: execution.executionId\n }\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts\n }\"></ng-container>\n <ng-container *ngIf=\"execution.type === 'RulesetExecutionError'; else success\">\n <div class=\"ruleset-panel-category-title\">Rules:</div>\n <ul class=\"ruleset-panel-category-body rule-description\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <ng-container>\n <div class=\"ruleset-panel-title\" [class.error]=\"ruleEvaluation.error\">\n <span>{{ruleEvaluation.rule.name | titlecase}} </span>\n <span class=\"capsule error\" *ngIf=\"ruleEvaluation.error\">Error</span>\n </div>\n <div>\n <ng-container *ngIf=\"ruleEvaluation.error\">\n <span class=\"ruleset-panel-category-title\">Error:</span>\n <span class=\"ruleset-panel-category-body error\">{{ruleEvaluation.error.message}}</span>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"inputs\"\n [ngTemplateOutletContext]=\"{\n inputs: execution.inputFacts,\n runtimeInputs: execution.rulesetInformation?.rules[index]?.inputRuntimeFacts\n }\"></ng-container>\n <o3r-rule-actions-pres *ngIf=\"!ruleEvaluation.error\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\"\n ></o3r-rule-actions-pres>\n </div>\n </ng-container>\n </li>\n </ul>\n </ng-container>\n <ng-template #success>\n <o3r-rule-actions-pres [actions]=\"execution.outputActions\"></o3r-rule-actions-pres>\n <div class=\"ruleset-panel-category-title\">Executed Rules</div>\n <ul class=\"rule-description ruleset-panel-category-body\">\n <li *ngFor=\"let ruleEvaluation of execution.rulesEvaluations; let index=index;\">\n <div class=\"ruleset-panel-title\">\n <span>{{ruleEvaluation.rule.name | titlecase}}</span>\n <span class=\"capsule inactive\" *ngIf=\"ruleEvaluation.cached\">Cached</span>\n <span class=\"capsule\">({{ruleEvaluation.duration | number: executionDurationFormat}}ms)</span>\n </div>\n <div>\n <ng-container [ngTemplateOutlet]=\"triggers\"\n [ngTemplateOutletContext]=\"{triggers: (ruleEvaluation.triggers[ruleEvaluation.rule.id])}\"></ng-container>\n <o3r-rule-actions-pres\n [actions]=\"ruleEvaluation.outputActions\"\n [temporaryFacts]=\"ruleEvaluation.temporaryFacts\"\n [runtimeOutputs]=\"execution.rulesetInformation?.rules[index]?.outputRuntimeFacts\">\n </o3r-rule-actions-pres>\n </div>\n </li>\n </ul>\n </ng-template>\n </div>\n </li>\n </ul>\n</section>\n\n<ng-template let-triggers=\"triggers\" #triggers>\n <div class=\"ruleset-panel-category-title\">Basefacts Triggers</div>\n <ul class=\"ruleset-panel-category-body triggers\">\n <ng-container *ngFor=\"let trigger of (triggers | keyvalue)\">\n <li *ngIf=\"trigger.value?.factName\">\n <o3r-rule-key-value-pres\n [key]=\"trigger.value.factName\"\n [oldValue]=\"trigger.value.oldValue | o3rFallbackTo\"\n [value]=\"trigger.value.newValue | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n </ng-container>\n </ul>\n</ng-template>\n\n<ng-template let-rules=\"rules\" let-expansionID=\"expansionID\" #rules>\n <div class=\"ruleset-panel-category-title ruleset-expansion-action\"\n (click)=\"toggleExpansion(expansionID, 'rulesOverview')\">\n <span>Rules Overview</span>\n <button class=\"icon\"\n [class.icon-caret-down]=\"!expansionStatus[expansionID]?.rulesOverview\"\n [class.icon-caret-up]=\"expansionStatus[expansionID]?.rulesOverview\">\n </button>\n </div>\n <ng-container *ngIf=\"expansionStatus[expansionID]?.rulesOverview\">\n <div *ngIf=\"rules?.length === 0\" class=\"ruleset-panel-category-body empty\">No rule</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"rules?.length > 0\">\n <li *ngFor=\"let rule of rules\">\n <o3r-rule-tree-pres [name]=\"rule.name\"\n [condition]=\"rule?.rootElement?.condition\"\n [blockType]=\"rule?.rootElement?.blockType\"\n [successElements]=\"rule?.rootElement?.successElements\"\n [failureElements]=\"rule?.rootElement?.failureElements\">\n </o3r-rule-tree-pres>\n </li>\n </ul>\n </ng-container>\n</ng-template>\n\n<ng-template let-inputs=\"inputs\" let-runtimeInputs=\"runtimeInputs\" #inputs>\n <div class=\"ruleset-panel-category-title\">Inputs snapshot</div>\n <div *ngIf=\"inputs?.length === 0\" class=\"ruleset-panel-category-body empty\">No inputs</div>\n <ul class=\"ruleset-panel-category-body\" *ngIf=\"inputs?.length > 0\">\n <li *ngFor=\"let input of inputs\">\n <o3r-rule-key-value-pres\n [key]=\"input.factName\"\n [value]=\"input.value | o3rFallbackTo\"\n [type]=\"'state'\"></o3r-rule-key-value-pres>\n </li>\n <li *ngFor=\"let input of runtimeInputs\">{{input}} (scope limited to ruleset)</li>\n </ul>\n</ng-template>\n", styles: ["o3r-ruleset-history-pres .ruleset-panel-title,o3r-ruleset-history-pres .ruleset-panel-category-title{display:flex;justify-content:space-between;align-items:center}o3r-ruleset-history-pres .ruleset-panel-title{font-size:1rem;padding:.5rem 0 .1rem}o3r-ruleset-history-pres .ruleset-expansion-action,o3r-ruleset-history-pres .icon-caret-down,o3r-ruleset-history-pres .icon-caret-up{cursor:pointer}o3r-ruleset-history-pres .ruleset-panel-subtitle{font-size:.75rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;min-width:fit-content}o3r-ruleset-history-pres .ruleset-panel-category-title{font-size:.95rem;background:#eee;padding:.5rem;margin-bottom:.5rem;margin-top:1rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-title{font-size:.893rem;cursor:default}o3r-ruleset-history-pres .rule-description .ruleset-panel-title{font-size:.94rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body{padding-bottom:.5rem;padding-left:1.5rem}o3r-ruleset-history-pres .rule-description .ruleset-panel-category-body:empty{margin:0;padding:0 0 0 1.5rem}o3r-ruleset-history-pres .rulesets{margin:0;padding:0;list-style:none}o3r-ruleset-history-pres .rulesets ul{margin:0;padding-left:2rem}o3r-ruleset-history-pres .rulesets li.ruleset:nth-child(odd){background:#fbfbfb}o3r-ruleset-history-pres .ruleset-panel-category-body li{list-style:disc}o3r-ruleset-history-pres li:empty{display:none}o3r-ruleset-history-pres .ruleset{border-bottom:1px solid #dddddd}o3r-ruleset-history-pres .ruleset .ruleset-panel-description{padding:0 1rem 0 2rem;margin-bottom:2em}o3r-ruleset-history-pres .ruleset:first-child{border-top:1px solid #dddddd}o3r-ruleset-history-pres .ruleset-panel-title.ruleset-expansion-action{padding:.5rem 1rem}o3r-ruleset-history-pres .empty{font-style:italic;padding-left:1.5rem}o3r-ruleset-history-pres .ruleset-panel-category-body:empty.triggers:after{content:\"No trigger for this rule\";display:block;font-style:italic;padding-bottom:.5rem}o3r-ruleset-history-pres .ruleset-panel-title-aside{padding-left:1rem}o3r-ruleset-history-pres .rule-description .capsule{font-size:.8em;padding:.1rem .5rem;margin:0 .5rem}o3r-ruleset-history-pres .icon{background:none;border:none;font-size:1em}o3r-ruleset-history-pres .capsule{padding:.3rem;margin:.5rem;font-size:.875em;min-width:6rem;text-align:center}o3r-ruleset-history-pres .capsule.time{display:flex;flex-direction:column}o3r-ruleset-history-pres .success{background-color:#16aa32;color:#fff}o3r-ruleset-history-pres .inactive{background-color:#aaa;color:#fff}o3r-ruleset-history-pres .error{color:#c02020}o3r-ruleset-history-pres .error .capsule.error{background-color:#c02020;color:#fff}o3r-ruleset-history-pres .warn{background-color:#b92;color:#fff}o3r-ruleset-history-pres .input-key{color:#26c}o3r-ruleset-history-pres .input-value{color:#c29}o3r-ruleset-history-pres .input-key,o3r-ruleset-history-pres .input-value{font-family:monospace}\n"] }]
|
|
44
44
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { rulesetExecutions: [{
|
|
45
45
|
type: Input
|
|
46
46
|
}], executionDurationFormat: [{
|
|
47
47
|
type: Input
|
|
48
48
|
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1oaXN0b3J5LXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZXNldC1oaXN0b3J5L3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFxQmhILE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLFlBQTZCLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBbEJsRDs7Ozs7Ozs7V0FRRztRQUNJLG9CQUFlLEdBQW9ELEVBQUUsQ0FBQztRQUl0RSxzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBR2hELDRCQUF1QixHQUFHLE9BQU8sQ0FBQztJQUVZLENBQUM7SUFFdEQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO2lJQWpDVSwyQkFBMkI7cUhBQTNCLDJCQUEyQix3S0NyQnhDLG1xUUF5SkE7OzJGRHBJYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3NGQWdCOUIsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLHVCQUF1QjtzQkFEN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUnVsZXNldCwgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQsIFJ1bGVzZXRFeGVjdXRpb25FdmVudCB9IGZyb20gJy4uLy4uLy4uL2VuZ2luZSc7XG5cbmV4cG9ydCB0eXBlIFJ1bGVzZXRFeGVjdXRpb25TdGF0dXMgPSAnRXJyb3InIHwgJ0FjdGl2ZScgfCAnRGVhY3RpdmF0ZWQnIHwgJ05vRWZmZWN0Jztcbi8qKlxuICogTW9kZWwgb2YgYSBSdWxlc2V0RXhlY3V0aW9uIHdpdGggbW9yZSBpbmZvcm1hdGlvbiBmb3IgZGVidWcgcHVycG9zZVxuICovXG5leHBvcnQgdHlwZSBSdWxlc2V0RXhlY3V0aW9uRGVidWcgPSAoUnVsZXNldEV4ZWN1dGlvbkV2ZW50IHwgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQpICYge1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgc3RhdHVzOiBSdWxlc2V0RXhlY3V0aW9uU3RhdHVzO1xuICBydWxlc2V0SW5mb3JtYXRpb246IFJ1bGVzZXQgfCB1bmRlZmluZWQ7XG59O1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1ydWxlc2V0LWhpc3RvcnktcHJlcycsXG4gIHN0eWxlVXJsczogWycuL3J1bGVzZXQtaGlzdG9yeS1wcmVzLnN0eWxlLnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlc2V0SGlzdG9yeVByZXNDb21wb25lbnQge1xuICAvKipcbiAgICogUmVmbGVjdHMgdGhlIHN0YXRlIG9mIGVhY2ggcnVsZXNldCBleHBhbmRlZCBlbGVtZW50cy5cbiAgICogRWFjaCBydWxlc2V0IGVudHJ5IGNvbnRhaW5zIGEgbGlzdCBvZiBzdWJwYW5lbCB0aGF0IGNhbiBiZSBjb2xsYXBzZWQgb3IgZXhwYW5kZWQuXG4gICAqIFJ1bGVzZXQgd2hvbGUgcGFuZWwgc3RhdHVzIGlzIHN0b3JlIHRoZSAncnVsZXNldCcgZW50cnkuXG4gICAqIEBleGFtcGxlXG4gICAqIEV4cGFuZGVkIHJ1bGVzZXQgd2l0aCBydWxlIG92ZXJ2aWV3IGNvbGxhcHNlZDpcbiAgICogeydydWxlc2V0SWQnOiB7J3J1bGVzZXQnIDogdHJ1ZSwgJ3J1bGVPdmVydmlldyc6IGZhbHNlfX1cbiAgICogQG5vdGUgQ29sbGFwc2luZyBhIHJ1bGVzZXQgd2lsbCBub3QgcmVzZXQgdGhlIHN1YnBhbmVsIGV4cGFuc2lvbiBzdGF0dXNcbiAgICovXG4gIHB1YmxpYyBleHBhbnNpb25TdGF0dXM6IHtba2V5OiBzdHJpbmddOiB7W3N1YnBhbmVsOiBzdHJpbmddOiBib29sZWFufSB9ID0ge307XG5cblxuICBASW5wdXQoKVxuICBwdWJsaWMgcnVsZXNldEV4ZWN1dGlvbnM6IFJ1bGVzZXRFeGVjdXRpb25EZWJ1Z1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0ID0gJzEuMy0zJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvKipcbiAgICogVG9nZ2xlIGEgcnVsZXNldCBzdWJwYW5lbFxuICAgKiBAcGFyYW0gcnVsZUlkXG4gICAqIEBwYXJhbSBzdWJwYW5lbCBlbGVtZW50IHRvIGNvbGxhcHNlLiAncnVsZXNldCcgd2lsbCB0b2dnbGUgdGhlIHdob2xlIHBhbmVsIGJ1dCB3b24ndCByZXNldCB0aGUgc3VicGFuZWxzIHN0YXRlcy5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVFeHBhbnNpb24ocnVsZUlkOiBzdHJpbmcsIHN1YnBhbmVsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF0pIHtcbiAgICAgIHRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF0gPSB7W3N1YnBhbmVsXTogdHJ1ZX07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF1bc3VicGFuZWxdID0gIXRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF1bc3VicGFuZWxdO1xuICAgIH1cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPHNlY3Rpb24+XG4gIDxoNCBjbGFzcz1cIm1iLTRcIj5SdWxlc2V0IEV4ZWN1dGlvbiBIaXN0b3J5PC9oND5cbiAgPG5nLXRlbXBsYXRlICNub1J1bGVzRW5naW5lPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgbS0yXCIgcm9sZT1cImFsZXJ0XCI+XG4gICAgICBUaGUgUnVsZXMgRW5naW5lIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgcGFnZS5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHVsICpuZ0lmPVwicnVsZXNldEV4ZWN1dGlvbnM7IGVsc2Ugbm9SdWxlc0VuZ2luZVwiIGNsYXNzPVwicnVsZXNldHNcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGV4ZWN1dGlvbiBvZiBydWxlc2V0RXhlY3V0aW9uc1wiIGNsYXNzPVwicnVsZXNldFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGUgcnVsZXNldC1leHBhbnNpb24tYWN0aW9uXCJcbiAgICAgICAgW2NsYXNzLmVycm9yXT1cImV4ZWN1dGlvbi50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJ1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbnNpb24oZXhlY3V0aW9uLmV4ZWN1dGlvbklkLCAncnVsZXNldCcpXCI+XG4gICAgICAgIDxkaXY+PHNwYW4gW3RpdGxlXT1cIidUaGlzIHJ1bGVzZXQgaGFzIGJlZW4gZXZhbHVhdGVkICcgKyBleGVjdXRpb24uZXhlY3V0aW9uQ291bnRlciArICcgdGltZShzKSdcIj57e2V4ZWN1dGlvbi5leGVjdXRpb25Db3VudGVyfX08L3NwYW4+IC0ge3tleGVjdXRpb24ucnVsZXNldE5hbWUgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1zdWJ0aXRsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ubGlua2VkQ29tcG9uZW50IGFzIGxpbmtlZENvbXBvbmVudFwiPlxuICAgICAgICAgICAge3tsaW5rZWRDb21wb25lbnQubmFtZX19IHt7bGlua2VkQ29tcG9uZW50LmxpYnJhcnl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXN1YnRpdGxlXCIgKm5nSWY9XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy52YWxpZGl0eVJhbmdlIGFzIHZhbGlkaXR5UmFuZ2VcIj5cbiAgICAgICAgICAgIERhdGUgcmFuZ2U6IHt7dmFsaWRpdHlSYW5nZS5mcm9tfX0gLSB7e3ZhbGlkaXR5UmFuZ2UudG99fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGUtYXNpZGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yIGNhcHN1bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5zdGF0dXMgPT09ICdFcnJvcidcIj5FcnJvcjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Y2Nlc3MgY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ0FjdGl2ZSdcIj5BcHBsaWVkPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5hY3RpdmUgY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ0RlYWN0aXZhdGVkJ1wiPkRlYWN0aXZhdGVkPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2FybiBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnTm9FZmZlY3QnXCI+Tm8gZWZmZWN0PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZSBjYXBzdWxlXCI+XG4gICAgICAgICAgICA8c3Bhbj57e2V4ZWN1dGlvbi50aW1lc3RhbXAgfCBkYXRlOiAnSEg6bW06c3MgU1NTJ319PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+KHt7ZXhlY3V0aW9uLmR1cmF0aW9uIHwgbnVtYmVyOiBleGVjdXRpb25EdXJhdGlvbkZvcm1hdH19bXMpPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtZG93bl09XCIhZXhwYW5zaW9uU3RhdHVzW2V4ZWN1dGlvbi5leGVjdXRpb25JZF0/LnJ1bGVzZXRcIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtdXBdPVwiZXhwYW5zaW9uU3RhdHVzW2V4ZWN1dGlvbi5leGVjdXRpb25JZF0/LnJ1bGVzZXRcIj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJleHBhbnNpb25TdGF0dXNbZXhlY3V0aW9uLmV4ZWN1dGlvbklkXT8ucnVsZXNldFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJ1bGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IGV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24ucnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbnNpb25JRDogZXhlY3V0aW9uLmV4ZWN1dGlvbklkXG4gICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImlucHV0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogZXhlY3V0aW9uLmlucHV0RmFjdHNcbiAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleGVjdXRpb24udHlwZSA9PT0gJ1J1bGVzZXRFeGVjdXRpb25FcnJvcic7IGVsc2Ugc3VjY2Vzc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+UnVsZXM6PC9kaXY+XG4gICAgICAgICAgPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IHJ1bGUtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZUV2YWx1YXRpb24gb2YgZXhlY3V0aW9uLnJ1bGVzRXZhbHVhdGlvbnM7IGxldCBpbmRleD1pbmRleDtcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZVwiIFtjbGFzcy5lcnJvcl09XCJydWxlRXZhbHVhdGlvbi5lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tydWxlRXZhbHVhdGlvbi5ydWxlLm5hbWUgfCB0aXRsZWNhc2V9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHN1bGUgZXJyb3JcIiAqbmdJZj1cInJ1bGVFdmFsdWF0aW9uLmVycm9yXCI+RXJyb3I8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWxlRXZhbHVhdGlvbi5lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5FcnJvcjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVycm9yXCI+e3tydWxlRXZhbHVhdGlvbi5lcnJvci5tZXNzYWdlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5wdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IGV4ZWN1dGlvbi5pbnB1dEZhY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVJbnB1dHM6IGV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8uaW5wdXRSdW50aW1lRmFjdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyAqbmdJZj1cIiFydWxlRXZhbHVhdGlvbi5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZW1wb3JhcnlGYWN0c109XCJydWxlRXZhbHVhdGlvbi50ZW1wb3JhcnlGYWN0c1wiXG4gICAgICAgICAgICAgICAgICAgIFtydW50aW1lT3V0cHV0c109XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5ydWxlc1tpbmRleF0/Lm91dHB1dFJ1bnRpbWVGYWN0c1wiXG4gICAgICAgICAgICAgICAgICA+PC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdWNjZXNzPlxuICAgICAgICAgIDxvM3ItcnVsZS1hY3Rpb25zLXByZXMgW2FjdGlvbnNdPVwiZXhlY3V0aW9uLm91dHB1dEFjdGlvbnNcIj48L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkV4ZWN1dGVkIFJ1bGVzPC9kaXY+XG4gICAgICAgICAgPHVsIGNsYXNzPVwicnVsZS1kZXNjcmlwdGlvbiBydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZUV2YWx1YXRpb24gb2YgZXhlY3V0aW9uLnJ1bGVzRXZhbHVhdGlvbnM7IGxldCBpbmRleD1pbmRleDtcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e3J1bGVFdmFsdWF0aW9uLnJ1bGUubmFtZSB8IHRpdGxlY2FzZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZSBpbmFjdGl2ZVwiICpuZ0lmPVwicnVsZUV2YWx1YXRpb24uY2FjaGVkXCI+Q2FjaGVkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZVwiPih7e3J1bGVFdmFsdWF0aW9uLmR1cmF0aW9uIHwgbnVtYmVyOiBleGVjdXRpb25EdXJhdGlvbkZvcm1hdH19bXMpPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7dHJpZ2dlcnM6IChydWxlRXZhbHVhdGlvbi50cmlnZ2Vyc1tydWxlRXZhbHVhdGlvbi5ydWxlLmlkXSl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlc1xuICAgICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwicnVsZUV2YWx1YXRpb24ub3V0cHV0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbdGVtcG9yYXJ5RmFjdHNdPVwicnVsZUV2YWx1YXRpb24udGVtcG9yYXJ5RmFjdHNcIlxuICAgICAgICAgICAgICAgICAgW3J1bnRpbWVPdXRwdXRzXT1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8ub3V0cHV0UnVudGltZUZhY3RzXCI+XG4gICAgICAgICAgICAgICAgPC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvc2VjdGlvbj5cblxuPG5nLXRlbXBsYXRlIGxldC10cmlnZ2Vycz1cInRyaWdnZXJzXCIgI3RyaWdnZXJzPlxuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkJhc2VmYWN0cyBUcmlnZ2VyczwvZGl2PlxuICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgdHJpZ2dlcnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0cmlnZ2VyIG9mICh0cmlnZ2VycyB8IGtleXZhbHVlKVwiPlxuICAgICAgPGxpICpuZ0lmPVwidHJpZ2dlci52YWx1ZT8uZmFjdE5hbWVcIj5cbiAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgW2tleV09XCJ0cmlnZ2VyLnZhbHVlLmZhY3ROYW1lXCJcbiAgICAgICAgICBbb2xkVmFsdWVdPVwidHJpZ2dlci52YWx1ZS5vbGRWYWx1ZSB8IGZhbGxiYWNrVG9cIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0cmlnZ2VyLnZhbHVlLm5ld1ZhbHVlIHwgZmFsbGJhY2tUb1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1ydWxlcz1cInJ1bGVzXCIgbGV0LWV4cGFuc2lvbklEPVwiZXhwYW5zaW9uSURcIiAjcnVsZXM+XG4gIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlIHJ1bGVzZXQtZXhwYW5zaW9uLWFjdGlvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuc2lvbihleHBhbnNpb25JRCwgJ3J1bGVzT3ZlcnZpZXcnKVwiPlxuICAgIDxzcGFuPlJ1bGVzIE92ZXJ2aWV3PC9zcGFuPlxuICAgIDxidXR0b24gY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNhcmV0LWRvd25dPVwiIWV4cGFuc2lvblN0YXR1c1tleHBhbnNpb25JRF0/LnJ1bGVzT3ZlcnZpZXdcIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtdXBdPVwiZXhwYW5zaW9uU3RhdHVzW2V4cGFuc2lvbklEXT8ucnVsZXNPdmVydmlld1wiPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuc2lvblN0YXR1c1tleHBhbnNpb25JRF0/LnJ1bGVzT3ZlcnZpZXdcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicnVsZXM/Lmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVtcHR5XCI+Tm8gcnVsZTwvZGl2PlxuICAgIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keVwiICpuZ0lmPVwicnVsZXM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZSBvZiBydWxlc1wiPlxuICAgICAgICA8bzNyLXJ1bGUtdHJlZS1wcmVzIFtuYW1lXT1cInJ1bGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbl09XCJydWxlPy5yb290RWxlbWVudD8uY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvY2tUeXBlXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5ibG9ja1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWNjZXNzRWxlbWVudHNdPVwicnVsZT8ucm9vdEVsZW1lbnQ/LnN1Y2Nlc3NFbGVtZW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZhaWx1cmVFbGVtZW50c109XCJydWxlPy5yb290RWxlbWVudD8uZmFpbHVyZUVsZW1lbnRzXCI+XG4gICAgICAgIDwvbzNyLXJ1bGUtdHJlZS1wcmVzPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaW5wdXRzPVwiaW5wdXRzXCIgbGV0LXJ1bnRpbWVJbnB1dHM9XCJydW50aW1lSW5wdXRzXCIgI2lucHV0cz5cbiAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5JbnB1dHMgc25hcHNob3Q8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImlucHV0cz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgZW1wdHlcIj5ObyBpbnB1dHM8L2Rpdj5cbiAgPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5XCIgKm5nSWY9XCJpbnB1dHM/Lmxlbmd0aCA+IDBcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0c1wiPlxuICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgIFtrZXldPVwiaW5wdXQuZmFjdE5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwiaW5wdXQudmFsdWUgfCBmYWxsYmFja1RvXCJcbiAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgPC9saT5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGlucHV0IG9mIHJ1bnRpbWVJbnB1dHNcIj57e2lucHV0fX0gKHNjb3BlIGxpbWl0ZWQgdG8gcnVsZXNldCk8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1oaXN0b3J5LXByZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcnVsZXMtZW5naW5lL3J1bGVzZXQtaGlzdG9yeS9ydWxlc2V0LWhpc3RvcnktcHJlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9ydWxlcy1lbmdpbmUvcnVsZXNldC1oaXN0b3J5L3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFxQmhILE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLFlBQTZCLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBbEJsRDs7Ozs7Ozs7V0FRRztRQUNJLG9CQUFlLEdBQW9ELEVBQUUsQ0FBQztRQUl0RSxzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBR2hELDRCQUF1QixHQUFHLE9BQU8sQ0FBQztJQUVZLENBQUM7SUFFdEQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBZ0I7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO2lJQWpDVSwyQkFBMkI7cUhBQTNCLDJCQUEyQix3S0NyQnhDLDRxUUF5SkE7OzJGRHBJYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3NGQWdCOUIsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUlDLHVCQUF1QjtzQkFEN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUnVsZXNldCwgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQsIFJ1bGVzZXRFeGVjdXRpb25FdmVudCB9IGZyb20gJy4uLy4uLy4uL2VuZ2luZSc7XG5cbmV4cG9ydCB0eXBlIFJ1bGVzZXRFeGVjdXRpb25TdGF0dXMgPSAnRXJyb3InIHwgJ0FjdGl2ZScgfCAnRGVhY3RpdmF0ZWQnIHwgJ05vRWZmZWN0Jztcbi8qKlxuICogTW9kZWwgb2YgYSBSdWxlc2V0RXhlY3V0aW9uIHdpdGggbW9yZSBpbmZvcm1hdGlvbiBmb3IgZGVidWcgcHVycG9zZVxuICovXG5leHBvcnQgdHlwZSBSdWxlc2V0RXhlY3V0aW9uRGVidWcgPSAoUnVsZXNldEV4ZWN1dGlvbkV2ZW50IHwgUnVsZXNldEV4ZWN1dGlvbkVycm9yRXZlbnQpICYge1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgc3RhdHVzOiBSdWxlc2V0RXhlY3V0aW9uU3RhdHVzO1xuICBydWxlc2V0SW5mb3JtYXRpb246IFJ1bGVzZXQgfCB1bmRlZmluZWQ7XG59O1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28zci1ydWxlc2V0LWhpc3RvcnktcHJlcycsXG4gIHN0eWxlVXJsczogWycuL3J1bGVzZXQtaGlzdG9yeS1wcmVzLnN0eWxlLnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3J1bGVzZXQtaGlzdG9yeS1wcmVzLnRlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSdWxlc2V0SGlzdG9yeVByZXNDb21wb25lbnQge1xuICAvKipcbiAgICogUmVmbGVjdHMgdGhlIHN0YXRlIG9mIGVhY2ggcnVsZXNldCBleHBhbmRlZCBlbGVtZW50cy5cbiAgICogRWFjaCBydWxlc2V0IGVudHJ5IGNvbnRhaW5zIGEgbGlzdCBvZiBzdWJwYW5lbCB0aGF0IGNhbiBiZSBjb2xsYXBzZWQgb3IgZXhwYW5kZWQuXG4gICAqIFJ1bGVzZXQgd2hvbGUgcGFuZWwgc3RhdHVzIGlzIHN0b3JlIHRoZSAncnVsZXNldCcgZW50cnkuXG4gICAqIEBleGFtcGxlXG4gICAqIEV4cGFuZGVkIHJ1bGVzZXQgd2l0aCBydWxlIG92ZXJ2aWV3IGNvbGxhcHNlZDpcbiAgICogeydydWxlc2V0SWQnOiB7J3J1bGVzZXQnIDogdHJ1ZSwgJ3J1bGVPdmVydmlldyc6IGZhbHNlfX1cbiAgICogQG5vdGUgQ29sbGFwc2luZyBhIHJ1bGVzZXQgd2lsbCBub3QgcmVzZXQgdGhlIHN1YnBhbmVsIGV4cGFuc2lvbiBzdGF0dXNcbiAgICovXG4gIHB1YmxpYyBleHBhbnNpb25TdGF0dXM6IHtba2V5OiBzdHJpbmddOiB7W3N1YnBhbmVsOiBzdHJpbmddOiBib29sZWFufSB9ID0ge307XG5cblxuICBASW5wdXQoKVxuICBwdWJsaWMgcnVsZXNldEV4ZWN1dGlvbnM6IFJ1bGVzZXRFeGVjdXRpb25EZWJ1Z1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGV4ZWN1dGlvbkR1cmF0aW9uRm9ybWF0ID0gJzEuMy0zJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAvKipcbiAgICogVG9nZ2xlIGEgcnVsZXNldCBzdWJwYW5lbFxuICAgKiBAcGFyYW0gcnVsZUlkXG4gICAqIEBwYXJhbSBzdWJwYW5lbCBlbGVtZW50IHRvIGNvbGxhcHNlLiAncnVsZXNldCcgd2lsbCB0b2dnbGUgdGhlIHdob2xlIHBhbmVsIGJ1dCB3b24ndCByZXNldCB0aGUgc3VicGFuZWxzIHN0YXRlcy5cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVFeHBhbnNpb24ocnVsZUlkOiBzdHJpbmcsIHN1YnBhbmVsOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF0pIHtcbiAgICAgIHRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF0gPSB7W3N1YnBhbmVsXTogdHJ1ZX07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF1bc3VicGFuZWxdID0gIXRoaXMuZXhwYW5zaW9uU3RhdHVzW3J1bGVJZF1bc3VicGFuZWxdO1xuICAgIH1cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPHNlY3Rpb24+XG4gIDxoNCBjbGFzcz1cIm1iLTRcIj5SdWxlc2V0IEV4ZWN1dGlvbiBIaXN0b3J5PC9oND5cbiAgPG5nLXRlbXBsYXRlICNub1J1bGVzRW5naW5lPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgbS0yXCIgcm9sZT1cImFsZXJ0XCI+XG4gICAgICBUaGUgUnVsZXMgRW5naW5lIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgcGFnZS5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPHVsICpuZ0lmPVwicnVsZXNldEV4ZWN1dGlvbnM7IGVsc2Ugbm9SdWxlc0VuZ2luZVwiIGNsYXNzPVwicnVsZXNldHNcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGV4ZWN1dGlvbiBvZiBydWxlc2V0RXhlY3V0aW9uc1wiIGNsYXNzPVwicnVsZXNldFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGUgcnVsZXNldC1leHBhbnNpb24tYWN0aW9uXCJcbiAgICAgICAgW2NsYXNzLmVycm9yXT1cImV4ZWN1dGlvbi50eXBlID09PSAnUnVsZXNldEV4ZWN1dGlvbkVycm9yJ1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbnNpb24oZXhlY3V0aW9uLmV4ZWN1dGlvbklkLCAncnVsZXNldCcpXCI+XG4gICAgICAgIDxkaXY+PHNwYW4gW3RpdGxlXT1cIidUaGlzIHJ1bGVzZXQgaGFzIGJlZW4gZXZhbHVhdGVkICcgKyBleGVjdXRpb24uZXhlY3V0aW9uQ291bnRlciArICcgdGltZShzKSdcIj57e2V4ZWN1dGlvbi5leGVjdXRpb25Db3VudGVyfX08L3NwYW4+IC0ge3tleGVjdXRpb24ucnVsZXNldE5hbWUgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1zdWJ0aXRsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnJ1bGVzZXRJbmZvcm1hdGlvbj8ubGlua2VkQ29tcG9uZW50IGFzIGxpbmtlZENvbXBvbmVudFwiPlxuICAgICAgICAgICAge3tsaW5rZWRDb21wb25lbnQubmFtZX19IHt7bGlua2VkQ29tcG9uZW50LmxpYnJhcnl9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLXN1YnRpdGxlXCIgKm5nSWY9XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy52YWxpZGl0eVJhbmdlIGFzIHZhbGlkaXR5UmFuZ2VcIj5cbiAgICAgICAgICAgIERhdGUgcmFuZ2U6IHt7dmFsaWRpdHlSYW5nZS5mcm9tfX0gLSB7e3ZhbGlkaXR5UmFuZ2UudG99fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGUtYXNpZGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yIGNhcHN1bGVcIiAqbmdJZj1cImV4ZWN1dGlvbi5zdGF0dXMgPT09ICdFcnJvcidcIj5FcnJvcjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1Y2Nlc3MgY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ0FjdGl2ZSdcIj5BcHBsaWVkPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5hY3RpdmUgY2Fwc3VsZVwiICpuZ0lmPVwiZXhlY3V0aW9uLnN0YXR1cyA9PT0gJ0RlYWN0aXZhdGVkJ1wiPkRlYWN0aXZhdGVkPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2FybiBjYXBzdWxlXCIgKm5nSWY9XCJleGVjdXRpb24uc3RhdHVzID09PSAnTm9FZmZlY3QnXCI+Tm8gZWZmZWN0PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZSBjYXBzdWxlXCI+XG4gICAgICAgICAgICA8c3Bhbj57e2V4ZWN1dGlvbi50aW1lc3RhbXAgfCBkYXRlOiAnSEg6bW06c3MgU1NTJ319PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+KHt7ZXhlY3V0aW9uLmR1cmF0aW9uIHwgbnVtYmVyOiBleGVjdXRpb25EdXJhdGlvbkZvcm1hdH19bXMpPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtZG93bl09XCIhZXhwYW5zaW9uU3RhdHVzW2V4ZWN1dGlvbi5leGVjdXRpb25JZF0/LnJ1bGVzZXRcIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtdXBdPVwiZXhwYW5zaW9uU3RhdHVzW2V4ZWN1dGlvbi5leGVjdXRpb25JZF0/LnJ1bGVzZXRcIj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJleHBhbnNpb25TdGF0dXNbZXhlY3V0aW9uLmV4ZWN1dGlvbklkXT8ucnVsZXNldFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJ1bGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXM6IGV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24ucnVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbnNpb25JRDogZXhlY3V0aW9uLmV4ZWN1dGlvbklkXG4gICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImlucHV0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogZXhlY3V0aW9uLmlucHV0RmFjdHNcbiAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleGVjdXRpb24udHlwZSA9PT0gJ1J1bGVzZXRFeGVjdXRpb25FcnJvcic7IGVsc2Ugc3VjY2Vzc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlXCI+UnVsZXM6PC9kaXY+XG4gICAgICAgICAgPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IHJ1bGUtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZUV2YWx1YXRpb24gb2YgZXhlY3V0aW9uLnJ1bGVzRXZhbHVhdGlvbnM7IGxldCBpbmRleD1pbmRleDtcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC10aXRsZVwiIFtjbGFzcy5lcnJvcl09XCJydWxlRXZhbHVhdGlvbi5lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tydWxlRXZhbHVhdGlvbi5ydWxlLm5hbWUgfCB0aXRsZWNhc2V9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHN1bGUgZXJyb3JcIiAqbmdJZj1cInJ1bGVFdmFsdWF0aW9uLmVycm9yXCI+RXJyb3I8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJydWxlRXZhbHVhdGlvbi5lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5FcnJvcjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVycm9yXCI+e3tydWxlRXZhbHVhdGlvbi5lcnJvci5tZXNzYWdlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5wdXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IGV4ZWN1dGlvbi5pbnB1dEZhY3RzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVJbnB1dHM6IGV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8uaW5wdXRSdW50aW1lRmFjdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlcyAqbmdJZj1cIiFydWxlRXZhbHVhdGlvbi5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZW1wb3JhcnlGYWN0c109XCJydWxlRXZhbHVhdGlvbi50ZW1wb3JhcnlGYWN0c1wiXG4gICAgICAgICAgICAgICAgICAgIFtydW50aW1lT3V0cHV0c109XCJleGVjdXRpb24ucnVsZXNldEluZm9ybWF0aW9uPy5ydWxlc1tpbmRleF0/Lm91dHB1dFJ1bnRpbWVGYWN0c1wiXG4gICAgICAgICAgICAgICAgICA+PC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdWNjZXNzPlxuICAgICAgICAgIDxvM3ItcnVsZS1hY3Rpb25zLXByZXMgW2FjdGlvbnNdPVwiZXhlY3V0aW9uLm91dHB1dEFjdGlvbnNcIj48L28zci1ydWxlLWFjdGlvbnMtcHJlcz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkV4ZWN1dGVkIFJ1bGVzPC9kaXY+XG4gICAgICAgICAgPHVsIGNsYXNzPVwicnVsZS1kZXNjcmlwdGlvbiBydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHlcIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZUV2YWx1YXRpb24gb2YgZXhlY3V0aW9uLnJ1bGVzRXZhbHVhdGlvbnM7IGxldCBpbmRleD1pbmRleDtcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e3J1bGVFdmFsdWF0aW9uLnJ1bGUubmFtZSB8IHRpdGxlY2FzZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZSBpbmFjdGl2ZVwiICpuZ0lmPVwicnVsZUV2YWx1YXRpb24uY2FjaGVkXCI+Q2FjaGVkPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2Fwc3VsZVwiPih7e3J1bGVFdmFsdWF0aW9uLmR1cmF0aW9uIHwgbnVtYmVyOiBleGVjdXRpb25EdXJhdGlvbkZvcm1hdH19bXMpPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7dHJpZ2dlcnM6IChydWxlRXZhbHVhdGlvbi50cmlnZ2Vyc1tydWxlRXZhbHVhdGlvbi5ydWxlLmlkXSl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG8zci1ydWxlLWFjdGlvbnMtcHJlc1xuICAgICAgICAgICAgICAgICAgW2FjdGlvbnNdPVwicnVsZUV2YWx1YXRpb24ub3V0cHV0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICBbdGVtcG9yYXJ5RmFjdHNdPVwicnVsZUV2YWx1YXRpb24udGVtcG9yYXJ5RmFjdHNcIlxuICAgICAgICAgICAgICAgICAgW3J1bnRpbWVPdXRwdXRzXT1cImV4ZWN1dGlvbi5ydWxlc2V0SW5mb3JtYXRpb24/LnJ1bGVzW2luZGV4XT8ub3V0cHV0UnVudGltZUZhY3RzXCI+XG4gICAgICAgICAgICAgICAgPC9vM3ItcnVsZS1hY3Rpb25zLXByZXM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvc2VjdGlvbj5cblxuPG5nLXRlbXBsYXRlIGxldC10cmlnZ2Vycz1cInRyaWdnZXJzXCIgI3RyaWdnZXJzPlxuICA8ZGl2IGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS10aXRsZVwiPkJhc2VmYWN0cyBUcmlnZ2VyczwvZGl2PlxuICA8dWwgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgdHJpZ2dlcnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0cmlnZ2VyIG9mICh0cmlnZ2VycyB8IGtleXZhbHVlKVwiPlxuICAgICAgPGxpICpuZ0lmPVwidHJpZ2dlci52YWx1ZT8uZmFjdE5hbWVcIj5cbiAgICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgICAgW2tleV09XCJ0cmlnZ2VyLnZhbHVlLmZhY3ROYW1lXCJcbiAgICAgICAgICBbb2xkVmFsdWVdPVwidHJpZ2dlci52YWx1ZS5vbGRWYWx1ZSB8IG8zckZhbGxiYWNrVG9cIlxuICAgICAgICAgIFt2YWx1ZV09XCJ0cmlnZ2VyLnZhbHVlLm5ld1ZhbHVlIHwgbzNyRmFsbGJhY2tUb1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1ydWxlcz1cInJ1bGVzXCIgbGV0LWV4cGFuc2lvbklEPVwiZXhwYW5zaW9uSURcIiAjcnVsZXM+XG4gIDxkaXYgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LXRpdGxlIHJ1bGVzZXQtZXhwYW5zaW9uLWFjdGlvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuc2lvbihleHBhbnNpb25JRCwgJ3J1bGVzT3ZlcnZpZXcnKVwiPlxuICAgIDxzcGFuPlJ1bGVzIE92ZXJ2aWV3PC9zcGFuPlxuICAgIDxidXR0b24gY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAgIFtjbGFzcy5pY29uLWNhcmV0LWRvd25dPVwiIWV4cGFuc2lvblN0YXR1c1tleHBhbnNpb25JRF0/LnJ1bGVzT3ZlcnZpZXdcIlxuICAgICAgICAgICAgW2NsYXNzLmljb24tY2FyZXQtdXBdPVwiZXhwYW5zaW9uU3RhdHVzW2V4cGFuc2lvbklEXT8ucnVsZXNPdmVydmlld1wiPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuc2lvblN0YXR1c1tleHBhbnNpb25JRF0/LnJ1bGVzT3ZlcnZpZXdcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicnVsZXM/Lmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5IGVtcHR5XCI+Tm8gcnVsZTwvZGl2PlxuICAgIDx1bCBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktYm9keVwiICpuZ0lmPVwicnVsZXM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcnVsZSBvZiBydWxlc1wiPlxuICAgICAgICA8bzNyLXJ1bGUtdHJlZS1wcmVzIFtuYW1lXT1cInJ1bGUubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmRpdGlvbl09XCJydWxlPy5yb290RWxlbWVudD8uY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvY2tUeXBlXT1cInJ1bGU/LnJvb3RFbGVtZW50Py5ibG9ja1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWNjZXNzRWxlbWVudHNdPVwicnVsZT8ucm9vdEVsZW1lbnQ/LnN1Y2Nlc3NFbGVtZW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZhaWx1cmVFbGVtZW50c109XCJydWxlPy5yb290RWxlbWVudD8uZmFpbHVyZUVsZW1lbnRzXCI+XG4gICAgICAgIDwvbzNyLXJ1bGUtdHJlZS1wcmVzPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaW5wdXRzPVwiaW5wdXRzXCIgbGV0LXJ1bnRpbWVJbnB1dHM9XCJydW50aW1lSW5wdXRzXCIgI2lucHV0cz5cbiAgPGRpdiBjbGFzcz1cInJ1bGVzZXQtcGFuZWwtY2F0ZWdvcnktdGl0bGVcIj5JbnB1dHMgc25hcHNob3Q8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImlucHV0cz8ubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJydWxlc2V0LXBhbmVsLWNhdGVnb3J5LWJvZHkgZW1wdHlcIj5ObyBpbnB1dHM8L2Rpdj5cbiAgPHVsIGNsYXNzPVwicnVsZXNldC1wYW5lbC1jYXRlZ29yeS1ib2R5XCIgKm5nSWY9XCJpbnB1dHM/Lmxlbmd0aCA+IDBcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGlucHV0IG9mIGlucHV0c1wiPlxuICAgICAgPG8zci1ydWxlLWtleS12YWx1ZS1wcmVzXG4gICAgICAgIFtrZXldPVwiaW5wdXQuZmFjdE5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwiaW5wdXQudmFsdWUgfCBvM3JGYWxsYmFja1RvXCJcbiAgICAgICAgW3R5cGVdPVwiJ3N0YXRlJ1wiPjwvbzNyLXJ1bGUta2V5LXZhbHVlLXByZXM+XG4gICAgPC9saT5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGlucHV0IG9mIHJ1bnRpbWVJbnB1dHNcIj57e2lucHV0fX0gKHNjb3BlIGxpbWl0ZWQgdG8gcnVsZXNldCk8L2xpPlxuICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|