@eo-sdk/client 11.14.0-rc.9 → 11.14.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"about-state.component.d.ts","sourceRoot":"","sources":["../../../../../../src/app/eo-client/about-state/about-state.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;;AAEjE,qBAKa,mBAAmB;IAsDlB,OAAO,CAAC,OAAO;IAAkB,OAAO,CAAC,WAAW;IAAe,OAAO,CAAC,MAAM;IApD7F,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa;;;;QAAsgE;IACnhE,QAAQ,EAAE,MAAM,CAAC;IAEjB,IAAI;;;;;MAKF;IAEF,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoCN;gBAGkB,OAAO,EAAE,cAAc,EAAU,WAAW,EAAE,WAAW,EAAU,MAAM,EAAE,MAAM;IAerG,WAAW;IAMX,SAAS,CAAC,KAAK,KAAA,EAAE,IAAI,KAAA,GAAG,MAAM;yCA3EnB,mBAAmB;2CAAnB,mBAAmB;CA8E/B"}
1
+ {"version":3,"file":"about-state.component.d.ts","sourceRoot":"","sources":["../../../../../../src/app/eo-client/about-state/about-state.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;;AAEjE,qBAKa,mBAAmB;IAsDlB,OAAO,CAAC,OAAO;IAAkB,OAAO,CAAC,WAAW;IAAe,OAAO,CAAC,MAAM;IApD7F,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa;;;;QAAigE;IAC9gE,QAAQ,EAAE,MAAM,CAAC;IAEjB,IAAI;;;;;MAKF;IAEF,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoCN;gBAGkB,OAAO,EAAE,cAAc,EAAU,WAAW,EAAE,WAAW,EAAU,MAAM,EAAE,MAAM;IAerG,WAAW;IAMX,SAAS,CAAC,KAAK,KAAA,EAAE,IAAI,KAAA,GAAG,MAAM;yCA3EnB,mBAAmB;2CAAnB,mBAAmB;CA8E/B"}
@@ -21,6 +21,7 @@ export declare class DynamicListComponent implements ControlValueAccessor, Valid
21
21
  formControlName: string;
22
22
  formElementChanges: Observable<any>;
23
23
  isTableElement: boolean;
24
+ isFilterElement: boolean;
24
25
  hasAutocompleteUrl: boolean;
25
26
  hasAutocompleteValuesCached: boolean;
26
27
  autocompleteUrlValue: string;
@@ -137,6 +138,6 @@ export declare class DynamicListComponent implements ControlValueAccessor, Valid
137
138
  */
138
139
  private resetCachedValues;
139
140
  static ɵfac: i0.ɵɵFactoryDeclaration<DynamicListComponent, never>;
140
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicListComponent, "eo-dynamic-list", never, { "situation": { "alias": "situation"; "required": false; }; "multiselect": { "alias": "multiselect"; "required": false; }; "pickerTitle": { "alias": "pickerTitle"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "formElementChanges": { "alias": "formElementChanges"; "required": false; }; "isTableElement": { "alias": "isTableElement"; "required": false; }; "filterFunction": { "alias": "filterFunction"; "required": false; }; "listObject": { "alias": "listObject"; "required": false; }; "autocompleteUrl": { "alias": "autocompleteUrl"; "required": false; }; }, {}, never, never, false, never>;
141
+ static ɵcmp: i0.ɵɵComponentDeclaration<DynamicListComponent, "eo-dynamic-list", never, { "situation": { "alias": "situation"; "required": false; }; "multiselect": { "alias": "multiselect"; "required": false; }; "pickerTitle": { "alias": "pickerTitle"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "formElementChanges": { "alias": "formElementChanges"; "required": false; }; "isTableElement": { "alias": "isTableElement"; "required": false; }; "isFilterElement": { "alias": "isFilterElement"; "required": false; }; "filterFunction": { "alias": "filterFunction"; "required": false; }; "listObject": { "alias": "listObject"; "required": false; }; "autocompleteUrl": { "alias": "autocompleteUrl"; "required": false; }; }, {}, never, never, false, never>;
141
142
  }
142
143
  //# sourceMappingURL=dynamic-list.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-list.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-list.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,10 @@ export class AboutStateComponent {
8
8
  this.backend = backend;
9
9
  this.userService = userService;
10
10
  this.config = config;
11
- this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.14.0-rc.8", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.1.13", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "18.0.0", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "karma-coverage-istanbul-reporter", "version": "3.0.3", "license": "MIT" }, { "name": "lodash-es", "version": "4.17.21", "license": "MIT" }, { "name": "moment", "version": "2.30.1", "license": "MIT" }, { "name": "ngx-toastr", "version": "19.0.0", "license": "MIT" }, { "name": "rxjs", "version": "7.8.1", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.3", "license": "0BSD" }, { "name": "zone.js", "version": "0.14.7", "license": "MIT" }];
11
+ this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.14.0", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.1.13", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "18.0.0", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "karma-coverage-istanbul-reporter", "version": "3.0.3", "license": "MIT" }, { "name": "lodash-es", "version": "4.17.21", "license": "MIT" }, { "name": "moment", "version": "2.30.1", "license": "MIT" }, { "name": "ngx-toastr", "version": "19.0.0", "license": "MIT" }, { "name": "rxjs", "version": "7.8.1", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.3", "license": "0BSD" }, { "name": "zone.js", "version": "0.14.7", "license": "MIT" }];
12
12
  this.ctrl = {
13
13
  componentName: 'yuuvis® RAD client',
14
- componentVersion: '11.14.0-rc.9',
14
+ componentVersion: '11.14.1',
15
15
  productName: '',
16
16
  productVersion: ''
17
17
  };
@@ -79,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
79
79
  type: Component,
80
80
  args: [{ selector: 'eo-about-state', template: "<div class=\"eo-about-state\">\n\n <div class=\"about\">\n <div class=\"header\" [style.background-image]=\"backgroundImage\">\n <img [src]=\"headerLogo\"/>\n </div>\n\n <div class=\"body\">\n <div class=\"claim\" translate>eo.help.about.claim</div>\n\n <div class=\"wrap\">\n <table>\n <tbody>\n <tr>\n <th translate>eo.help.about.component.label</th>\n <td>{{ctrl.componentName}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.component.version.label</th>\n <td>{{ctrl.componentVersion}}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.label</th>\n <td>{{ ctrl.productName }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.product.version.label</th>\n <td>{{ ctrl.productVersion }}</td>\n </tr>\n <tr>\n <th translate>eo.help.about.producer.label</th>\n <td translate>eo.help.about.producer.text</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n\n <h2 translate>eo.help.license.title</h2>\n <p translate>eo.help.license.intro</p>\n <div class=\"showLic\" (click)=\"licenseShow = !licenseShow\">\n <span class=\"toggle\"><span translate>eo.help.license.title</span><span class=\"toggle-indicator\">{{licenseShow ? '-' : '+'}}</span></span></div>\n <div class=\"licenses\" *ngIf=\"licenseShow\">\n <div class=\"lib\" *ngFor=\"let lib of __libraries__; trackBy: trackByFn\">\n <div class=\"name\">{{lib.name}}</div>\n <div class=\"lic\">\n <a href=\"{{licenses[lib.license].url}}\" target=\"_blank\" *ngIf=\"licenses[lib.license].url\">{{licenses[lib.license].label}}</a>\n <span *ngIf=\"!licenses[lib.license].url\">{{licenses[lib.license].label}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n", styles: [":host{--about-header-height: 300px;position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center;overflow-y:auto}.eo-about-state{box-sizing:border-box;width:800px;display:flex;flex-flow:column}@media screen and (max-width: 832px){.eo-about-state{margin:0;min-width:inherit;width:100%}}.eo-about-state .about{box-shadow:0 2px 5px #0003;background:var(--panel-background);margin:var(--app-pane-padding)}.eo-about-state .about .header{position:relative;height:var(--about-header-height);background-size:cover}.eo-about-state .about .header:after{content:\"\";position:absolute;inset:0;background-color:rgba(var(--color-accent-rgb),.8)}.eo-about-state .about .header img{right:8%;bottom:18%;position:absolute;z-index:20;width:40%}.eo-about-state .about .body{padding:var(--app-pane-padding)}.eo-about-state .about .body .claim{padding:var(--app-pane-padding) 0}.eo-about-state .about .body h2{margin:1.5em 0 0;color:var(--text-color-caption);font-weight:var(--font-weight-light);font-size:var(--font-title)}.eo-about-state .about .body .wrap{display:flex;flex-flow:row wrap}.eo-about-state .about .body ul.links{color:var(--color-accent);list-style-type:none}.eo-about-state .about .body ul.links li{padding:2px 0}.eo-about-state .about .body ul.links a{text-decoration:none;color:var(--color-accent)}.eo-about-state .about .body ul.links a:hover{text-decoration:underline}.eo-about-state .about .body table{margin:var(--app-pane-padding);padding:calc(var(--app-pane-padding) / 4) 0;background-color:rgba(var(--color-black-rgb),.06);border-radius:2px}.eo-about-state .about .body table th{display:flex;flex-flow:column;align-items:flex-start;justify-content:center;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body table th,.eo-about-state .about .body table td{padding:calc(var(--app-pane-padding) / 8) calc(var(--app-pane-padding) / 2)}.eo-about-state .about .body .showLic span.toggle{color:var(--color-accent);display:inline-block;padding:0 4px 2px;border-radius:4px;border:1px solid var(--color-accent);cursor:pointer}.eo-about-state .about .body .showLic .toggle-indicator{padding:0 4px}.eo-about-state .about .body .licenses{padding-top:var(--app-pane-padding)}.eo-about-state .about .body .licenses .lib{display:flex;flex-flow:row nowrap;padding:calc(var(--app-pane-padding) / 4);border-top:1px solid var(--list-item-border-color)}.eo-about-state .about .body .licenses .lib .name{flex:1 1 auto}.eo-about-state .about .body .licenses .lib .lic{flex:0 0 auto;font-size:var(--font-hint);color:var(--text-color-caption)}.eo-about-state .about .body .licenses .lib .lic a{text-decoration:none;border-radius:2px;border:1px solid var(--color-accent);color:var(--color-accent);display:inline-block;padding:2px 4px;background-color:rgba(var(--color-black-rgb),.06);line-height:1em}\n"] }]
81
81
  }], ctorParameters: () => [{ type: i1.BackendService }, { type: i1.UserService }, { type: i1.Config }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvYWJvdXQtc3RhdGUvYWJvdXQtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvYWJvdXQtc3RhdGUvYWJvdXQtc3RhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFReEMsTUFBTSxPQUFPLG1CQUFtQjtJQXNEOUIsWUFBb0IsT0FBdUIsRUFBVSxXQUF3QixFQUFVLE1BQWM7UUFBakYsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqRHJHLGtCQUFhLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBQyw0QkFBNEIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywwQ0FBMEMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx5QkFBeUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywrQkFBK0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywyQkFBMkIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGdCQUFnQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLG1DQUFtQyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsY0FBYyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx1QkFBdUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyx3QkFBd0IsRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLG9CQUFvQixFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLHFCQUFxQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsY0FBYyxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLG1CQUFtQixFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsa0NBQWtDLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxZQUFZLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUduaEUsU0FBSSxHQUFHO1lBQ0wsYUFBYSxFQUFFLG9CQUFvQjtZQUNuQyxnQkFBZ0IsRUFBRSxjQUFjO1lBQ2hDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQztRQUVGLGFBQVEsR0FBRztZQUNULEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsb0NBQW9DO2FBQzVDO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixLQUFLLEVBQUUsNENBQTRDO2FBQ3BEO1lBQ0Qsb0JBQW9CLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixLQUFLLEVBQUUsNkNBQTZDO2FBQ3JEO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE9BQU8sRUFBRSxTQUFTO2dCQUNsQixLQUFLLEVBQUUsb0RBQW9EO2FBQzVEO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxvQ0FBb0M7YUFDNUM7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsS0FBSyxFQUFFLGdDQUFnQzthQUN4QztZQUNELFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsWUFBWTthQUN0QjtZQUNELFNBQVMsRUFBRTtnQkFDVCxPQUFPLEVBQUUsMkRBQTJEO2dCQUNwRSxLQUFLLEVBQUUsc0VBQXNFO2FBQzlFO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxxQ0FBcUM7YUFDN0M7U0FDRixDQUFDO1FBSUEsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXO2FBQ2IsS0FBSzthQUNMLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0E3RVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsc0RDUmhDLG84REF1REE7OzJGRC9DYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVc2VyU2VydmljZSwgQ29uZmlnLCBCYWNrZW5kU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tYWJvdXQtc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hYm91dC1zdGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFib3V0U3RhdGVDb21wb25lbnQge1xuXG4gIGJhY2tncm91bmRJbWFnZTogc3RyaW5nO1xuICBoZWFkZXJMb2dvOiBzdHJpbmc7XG4gIGxpY2Vuc2VTaG93OiBib29sZWFuO1xuICBfX2xpYnJhcmllc19fID0gW3tcIm5hbWVcIjpcIkBhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyXCIsXCJ2ZXJzaW9uXCI6XCIzMS4zLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsXCIsXCJ2ZXJzaW9uXCI6XCIzMS4zLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiLFwidmVyc2lvblwiOlwiMzEuMy4yXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFnLWdyaWQtY29tbXVuaXR5L2Nzdi1leHBvcnRcIixcInZlcnNpb25cIjpcIjMxLjMuMlwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhZy1ncmlkLWNvbW11bml0eS9zdHlsZXNcIixcInZlcnNpb25cIjpcIjMxLjMuMlwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIixcInZlcnNpb25cIjpcIjE4LjEuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2Nka1wiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29tbW9uXCIsXCJ2ZXJzaW9uXCI6XCIxOC4xLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYW5ndWxhci9jb21waWxlclwiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29yZVwiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvZm9ybXNcIixcInZlcnNpb25cIjpcIjE4LjEuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIixcInZlcnNpb25cIjpcIjE4LjEuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pY1wiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvcm91dGVyXCIsXCJ2ZXJzaW9uXCI6XCIxOC4xLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAY2FyYm9uL2NoYXJ0cy1hbmd1bGFyXCIsXCJ2ZXJzaW9uXCI6XCIxLjE2LjNcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwiQGVvLXNkay9jb3JlXCIsXCJ2ZXJzaW9uXCI6XCIxMS4xNC4wLXJjLjhcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmduZWF0L3VudGlsLWRlc3Ryb3lcIixcInZlcnNpb25cIjpcIjEwLjAuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBuZ3gtcHdhL2xvY2FsLXN0b3JhZ2VcIixcInZlcnNpb25cIjpcIjE4LjAuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIixcInZlcnNpb25cIjpcIjE1LjAuMFwiLFwibGljZW5zZVwiOlwiU0VFIExJQ0VOU0UgSU4gTElDRU5TRVwifSx7XCJuYW1lXCI6XCJAeXV1dmlzL2NvbXBvbmVudHNcIixcInZlcnNpb25cIjpcIjE4LjEuMTNcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAeXV1dmlzL3dpZGdldC1ncmlkXCIsXCJ2ZXJzaW9uXCI6XCIxOC4wLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJjb3JlLWpzXCIsXCJ2ZXJzaW9uXCI6XCIyLjYuMTJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJmaWxlLXNhdmVyXCIsXCJ2ZXJzaW9uXCI6XCIyLjAuNVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcImZvbnQtYXdlc29tZVwiLFwidmVyc2lvblwiOlwiNC43LjBcIixcImxpY2Vuc2VcIjpcIihPRkwtMS4xIEFORCBNSVQpXCJ9LHtcIm5hbWVcIjpcImthcm1hLWNvdmVyYWdlLWlzdGFuYnVsLXJlcG9ydGVyXCIsXCJ2ZXJzaW9uXCI6XCIzLjAuM1wiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcImxvZGFzaC1lc1wiLFwidmVyc2lvblwiOlwiNC4xNy4yMVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIm1vbWVudFwiLFwidmVyc2lvblwiOlwiMi4zMC4xXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwibmd4LXRvYXN0clwiLFwidmVyc2lvblwiOlwiMTkuMC4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwicnhqc1wiLFwidmVyc2lvblwiOlwiNy44LjFcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwidHNsaWJcIixcInZlcnNpb25cIjpcIjIuNi4zXCIsXCJsaWNlbnNlXCI6XCIwQlNEXCJ9LHtcIm5hbWVcIjpcInpvbmUuanNcIixcInZlcnNpb25cIjpcIjAuMTQuN1wiLFwibGljZW5zZVwiOlwiTUlUXCJ9XTtcbiAgdXNlckxhbmc6IHN0cmluZztcblxuICBjdHJsID0ge1xuICAgIGNvbXBvbmVudE5hbWU6ICd5dXV2aXPCriBSQUQgY2xpZW50JyxcbiAgICBjb21wb25lbnRWZXJzaW9uOiAnMTEuMTQuMC1yYy45JyxcbiAgICBwcm9kdWN0TmFtZTogJycsXG4gICAgcHJvZHVjdFZlcnNpb246ICcnXG4gIH07XG5cbiAgbGljZW5zZXMgPSB7XG4gICAgJ01JVCc6IHtcbiAgICAgICdsYWJlbCc6ICdNSVQnLFxuICAgICAgJ3VybCc6ICdodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUJ1xuICAgIH0sXG4gICAgJ0FwYWNoZS0yLjAnOiB7XG4gICAgICAnbGFiZWwnOiAnQXBhY2hlIDIuMCcsXG4gICAgICAndXJsJzogJ2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCdcbiAgICB9LFxuICAgICdCU0QtMy1DbGF1c2UtQ2xlYXInOiB7XG4gICAgICAnbGFiZWwnOiAnQlNEIDMtQ2xhdXNlJyxcbiAgICAgICd1cmwnOiAnaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZSdcbiAgICB9LFxuICAgICdDQzAtMS4wJzoge1xuICAgICAgJ2xhYmVsJzogJ0NDMCAxLjAnLFxuICAgICAgJ3VybCc6ICdodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLydcbiAgICB9LFxuICAgICcoT0ZMLTEuMSBBTkQgTUlUKSc6IHtcbiAgICAgICdsYWJlbCc6ICdNSVQnLFxuICAgICAgJ3VybCc6ICdodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUJ1xuICAgIH0sXG4gICAgJ1NJTE9GTC0xLjEnOiB7XG4gICAgICAnbGFiZWwnOiAnU0lMIE9wZW4gRm9udCBMaWNlbnNlIDEuMScsXG4gICAgICAndXJsJzogJ2h0dHA6Ly9zY3JpcHRzLnNpbC5vcmcvT0ZMX3dlYidcbiAgICB9LFxuICAgICdDb21tZXJjaWFsJzoge1xuICAgICAgJ2xhYmVsJzogJ0NvbW1lcmNpYWwnXG4gICAgfSxcbiAgICAnYWctZ3JpZCc6IHtcbiAgICAgICdsYWJlbCc6ICdhZy1HcmlkLUVudGVycHJpc2UgU29mdHdhcmUgTGljZW5jZSBBZ3JlZW1lbnQgVmVyc2lvbiAxLjcnLFxuICAgICAgJ3VybCc6ICdodHRwczovL2dpdGh1Yi5jb20vY2VvbHRlci9hZy1ncmlkLWVudGVycHJpc2UvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZCdcbiAgICB9LFxuICAgICcwQlNEJzoge1xuICAgICAgJ2xhYmVsJzogJ1plcm8tQ2xhdXNlIEJTRCcsXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy8wQlNEJ1xuICAgIH1cbiAgfTtcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XG4gICAgdGhpcy5fX2xpYnJhcmllc19fID0gdGhpcy5fX2xpYnJhcmllc19fLmZpbHRlcihsaWIgPT4gdGhpcy5saWNlbnNlc1tsaWIubGljZW5zZV0pO1xuICAgIHRoaXMuZ2V0VXNlckxhbmcoKTtcbiAgICB0aGlzLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoJHt0aGlzLmNvbmZpZy5nZXREYXNoYm9hcmRCYWNrZ3JvdW5kSW1hZ2UoKX0pYDtcbiAgICB0aGlzLmhlYWRlckxvZ28gPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ2Fib3V0LmhlYWRlckxvZ28nKTtcbiAgICBpZiAoIXRoaXMuaGVhZGVyTG9nbykge1xuICAgICAgdGhpcy5oZWFkZXJMb2dvID0gdGhpcy5jb25maWcuZ2V0UmF3KCdhcHBMb2dvJyk7XG4gICAgfVxuXG4gICAgdGhpcy5iYWNrZW5kLmdldEpzb24oJy9zeXN0ZW0vaW5mbycpLnN1YnNjcmliZShpbmZvID0+IHtcbiAgICAgIHRoaXMuY3RybC5wcm9kdWN0TmFtZSA9IGluZm8ucHJvZHVjdC5uYW1lO1xuICAgICAgdGhpcy5jdHJsLnByb2R1Y3RWZXJzaW9uID0gaW5mby5wcm9kdWN0LnByb2R1Y3R2ZXJzaW9uO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXNlckxhbmcoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnVzZXIkXG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4gdGhpcy51c2VyTGFuZyA9IGRhdGEudXNlclNldHRpbmdzLmNsaWVudGxvY2FsZSk7XG4gIH1cblxuICB0cmFja0J5Rm4oaW5kZXgsIGl0ZW0pOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWFib3V0LXN0YXRlXCI+XG5cbiAgPGRpdiBjbGFzcz1cImFib3V0XCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImJhY2tncm91bmRJbWFnZVwiPlxuICAgICAgPGltZyBbc3JjXT1cImhlYWRlckxvZ29cIi8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNsYWltXCIgdHJhbnNsYXRlPmVvLmhlbHAuYWJvdXQuY2xhaW08L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBcIj5cbiAgICAgICAgPHRhYmxlPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggdHJhbnNsYXRlPmVvLmhlbHAuYWJvdXQuY29tcG9uZW50LmxhYmVsPC90aD5cbiAgICAgICAgICAgIDx0ZD57e2N0cmwuY29tcG9uZW50TmFtZX19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5jb21wb25lbnQudmVyc2lvbi5sYWJlbDwvdGg+XG4gICAgICAgICAgICA8dGQ+e3tjdHJsLmNvbXBvbmVudFZlcnNpb259fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggdHJhbnNsYXRlPmVvLmhlbHAuYWJvdXQucHJvZHVjdC5sYWJlbDwvdGg+XG4gICAgICAgICAgICA8dGQ+e3sgY3RybC5wcm9kdWN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggdHJhbnNsYXRlPmVvLmhlbHAuYWJvdXQucHJvZHVjdC52ZXJzaW9uLmxhYmVsPC90aD5cbiAgICAgICAgICAgIDx0ZD57eyBjdHJsLnByb2R1Y3RWZXJzaW9uIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5wcm9kdWNlci5sYWJlbDwvdGg+XG4gICAgICAgICAgICA8dGQgdHJhbnNsYXRlPmVvLmhlbHAuYWJvdXQucHJvZHVjZXIudGV4dDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cblxuICAgICAgPGgyIHRyYW5zbGF0ZT5lby5oZWxwLmxpY2Vuc2UudGl0bGU8L2gyPlxuICAgICAgPHAgdHJhbnNsYXRlPmVvLmhlbHAubGljZW5zZS5pbnRybzwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzaG93TGljXCIgKGNsaWNrKT1cImxpY2Vuc2VTaG93ID0gIWxpY2Vuc2VTaG93XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlXCI+PHNwYW4gdHJhbnNsYXRlPmVvLmhlbHAubGljZW5zZS50aXRsZTwvc3Bhbj48c3BhbiBjbGFzcz1cInRvZ2dsZS1pbmRpY2F0b3JcIj57e2xpY2Vuc2VTaG93ID8gJy0nIDogJysnfX08L3NwYW4+PC9zcGFuPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxpY2Vuc2VzXCIgKm5nSWY9XCJsaWNlbnNlU2hvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGliXCIgKm5nRm9yPVwibGV0IGxpYiBvZiBfX2xpYnJhcmllc19fOyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPnt7bGliLm5hbWV9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaWNcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2xpY2Vuc2VzW2xpYi5saWNlbnNlXS51cmx9fVwiIHRhcmdldD1cIl9ibGFua1wiICpuZ0lmPVwibGljZW5zZXNbbGliLmxpY2Vuc2VdLnVybFwiPnt7bGljZW5zZXNbbGliLmxpY2Vuc2VdLmxhYmVsfX08L2E+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsaWNlbnNlc1tsaWIubGljZW5zZV0udXJsXCI+e3tsaWNlbnNlc1tsaWIubGljZW5zZV0ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvYWJvdXQtc3RhdGUvYWJvdXQtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvYWJvdXQtc3RhdGUvYWJvdXQtc3RhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFReEMsTUFBTSxPQUFPLG1CQUFtQjtJQXNEOUIsWUFBb0IsT0FBdUIsRUFBVSxXQUF3QixFQUFVLE1BQWM7UUFBakYsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqRHJHLGtCQUFhLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBQyw0QkFBNEIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywwQ0FBMEMsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx5QkFBeUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywrQkFBK0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQywyQkFBMkIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxjQUFjLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsaUJBQWlCLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsbUJBQW1CLEVBQUMsU0FBUyxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLEVBQUMsRUFBQyxNQUFNLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGdCQUFnQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLDJCQUEyQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLG1DQUFtQyxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGlCQUFpQixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLFlBQVksRUFBQyxFQUFDLEVBQUMsTUFBTSxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx1QkFBdUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyx3QkFBd0IsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsRUFBQyxFQUFDLE1BQU0sRUFBQyxxQkFBcUIsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFD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TSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQztRQUMzRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXO2FBQ2IsS0FBSzthQUNMLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0E3RVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsc0RDUmhDLG84REF1REE7OzJGRC9DYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVc2VyU2VydmljZSwgQ29uZmlnLCBCYWNrZW5kU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tYWJvdXQtc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hYm91dC1zdGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFib3V0U3RhdGVDb21wb25lbnQge1xuXG4gIGJhY2tncm91bmRJbWFnZTogc3RyaW5nO1xuICBoZWFkZXJMb2dvOiBzdHJpbmc7XG4gIGxpY2Vuc2VTaG93OiBib29sZWFuO1xuICBfX2xpYnJhcmllc19fID0gW3tcIm5hbWVcIjpcIkBhZy1ncmlkLWNvbW11bml0eS9hbmd1bGFyXCIsXCJ2ZXJzaW9uXCI6XCIzMS4zLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY2xpZW50LXNpZGUtcm93LW1vZGVsXCIsXCJ2ZXJzaW9uXCI6XCIzMS4zLjJcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiLFwidmVyc2lvblwiOlwiMzEuMy4yXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFnLWdyaWQtY29tbXVuaXR5L2Nzdi1leHBvcnRcIixcInZlcnNpb25cIjpcIjMxLjMuMlwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhZy1ncmlkLWNvbW11bml0eS9zdHlsZXNcIixcInZlcnNpb25cIjpcIjMxLjMuMlwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIixcInZlcnNpb25cIjpcIjE4LjEuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL2Nka1wiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29tbW9uXCIsXCJ2ZXJzaW9uXCI6XCIxOC4xLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAYW5ndWxhci9jb21waWxlclwiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvY29yZVwiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvZm9ybXNcIixcInZlcnNpb25cIjpcIjE4LjEuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIixcInZlcnNpb25cIjpcIjE4LjEuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pY1wiLFwidmVyc2lvblwiOlwiMTguMS4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQGFuZ3VsYXIvcm91dGVyXCIsXCJ2ZXJzaW9uXCI6XCIxOC4xLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAY2FyYm9uL2NoYXJ0cy1hbmd1bGFyXCIsXCJ2ZXJzaW9uXCI6XCIxLjE2LjNcIixcImxpY2Vuc2VcIjpcIkFwYWNoZS0yLjBcIn0se1wibmFtZVwiOlwiQGVvLXNkay9jb3JlXCIsXCJ2ZXJzaW9uXCI6XCIxMS4xNC4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQG5nbmVhdC91bnRpbC1kZXN0cm95XCIsXCJ2ZXJzaW9uXCI6XCIxMC4wLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmd4LXB3YS9sb2NhbC1zdG9yYWdlXCIsXCJ2ZXJzaW9uXCI6XCIxOC4wLjBcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCIsXCJ2ZXJzaW9uXCI6XCIxNS4wLjBcIixcImxpY2Vuc2VcIjpcIlNFRSBMSUNFTlNFIElOIExJQ0VOU0VcIn0se1wibmFtZVwiOlwiQHl1dXZpcy9jb21wb25lbnRzXCIsXCJ2ZXJzaW9uXCI6XCIxOC4xLjEzXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiQHl1dXZpcy93aWRnZXQtZ3JpZFwiLFwidmVyc2lvblwiOlwiMTguMC4wXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiY29yZS1qc1wiLFwidmVyc2lvblwiOlwiMi42LjEyXCIsXCJsaWNlbnNlXCI6XCJNSVRcIn0se1wibmFtZVwiOlwiZmlsZS1zYXZlclwiLFwidmVyc2lvblwiOlwiMi4wLjVcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJmb250LWF3ZXNvbWVcIixcInZlcnNpb25cIjpcIjQuNy4wXCIsXCJsaWNlbnNlXCI6XCIoT0ZMLTEuMSBBTkQgTUlUKVwifSx7XCJuYW1lXCI6XCJrYXJtYS1jb3ZlcmFnZS1pc3RhbmJ1bC1yZXBvcnRlclwiLFwidmVyc2lvblwiOlwiMy4wLjNcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJsb2Rhc2gtZXNcIixcInZlcnNpb25cIjpcIjQuMTcuMjFcIixcImxpY2Vuc2VcIjpcIk1JVFwifSx7XCJuYW1lXCI6XCJtb21lbnRcIixcInZlcnNpb25cIjpcIjIuMzAuMVwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcIm5neC10b2FzdHJcIixcInZlcnNpb25cIjpcIjE5LjAuMFwiLFwibGljZW5zZVwiOlwiTUlUXCJ9LHtcIm5hbWVcIjpcInJ4anNcIixcInZlcnNpb25cIjpcIjcuOC4xXCIsXCJsaWNlbnNlXCI6XCJBcGFjaGUtMi4wXCJ9LHtcIm5hbWVcIjpcInRzbGliXCIsXCJ2ZXJzaW9uXCI6XCIyLjYuM1wiLFwibGljZW5zZVwiOlwiMEJTRFwifSx7XCJuYW1lXCI6XCJ6b25lLmpzXCIsXCJ2ZXJzaW9uXCI6XCIwLjE0LjdcIixcImxpY2Vuc2VcIjpcIk1JVFwifV07XG4gIHVzZXJMYW5nOiBzdHJpbmc7XG5cbiAgY3RybCA9IHtcbiAgICBjb21wb25lbnROYW1lOiAneXV1dmlzwq4gUkFEIGNsaWVudCcsXG4gICAgY29tcG9uZW50VmVyc2lvbjogJzExLjE0LjEnLFxuICAgIHByb2R1Y3ROYW1lOiAnJyxcbiAgICBwcm9kdWN0VmVyc2lvbjogJydcbiAgfTtcblxuICBsaWNlbnNlcyA9IHtcbiAgICAnTUlUJzoge1xuICAgICAgJ2xhYmVsJzogJ01JVCcsXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQnXG4gICAgfSxcbiAgICAnQXBhY2hlLTIuMCc6IHtcbiAgICAgICdsYWJlbCc6ICdBcGFjaGUgMi4wJyxcbiAgICAgICd1cmwnOiAnaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wJ1xuICAgIH0sXG4gICAgJ0JTRC0zLUNsYXVzZS1DbGVhcic6IHtcbiAgICAgICdsYWJlbCc6ICdCU0QgMy1DbGF1c2UnLFxuICAgICAgJ3VybCc6ICdodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlJ1xuICAgIH0sXG4gICAgJ0NDMC0xLjAnOiB7XG4gICAgICAnbGFiZWwnOiAnQ0MwIDEuMCcsXG4gICAgICAndXJsJzogJ2h0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvJ1xuICAgIH0sXG4gICAgJyhPRkwtMS4xIEFORCBNSVQpJzoge1xuICAgICAgJ2xhYmVsJzogJ01JVCcsXG4gICAgICAndXJsJzogJ2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQnXG4gICAgfSxcbiAgICAnU0lMT0ZMLTEuMSc6IHtcbiAgICAgICdsYWJlbCc6ICdTSUwgT3BlbiBGb250IExpY2Vuc2UgMS4xJyxcbiAgICAgICd1cmwnOiAnaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxfd2ViJ1xuICAgIH0sXG4gICAgJ0NvbW1lcmNpYWwnOiB7XG4gICAgICAnbGFiZWwnOiAnQ29tbWVyY2lhbCdcbiAgICB9LFxuICAgICdhZy1ncmlkJzoge1xuICAgICAgJ2xhYmVsJzogJ2FnLUdyaWQtRW50ZXJwcmlzZSBTb2Z0d2FyZSBMaWNlbmNlIEFncmVlbWVudCBWZXJzaW9uIDEuNycsXG4gICAgICAndXJsJzogJ2h0dHBzOi8vZ2l0aHViLmNvbS9jZW9sdGVyL2FnLWdyaWQtZW50ZXJwcmlzZS9ibG9iL21hc3Rlci9MSUNFTlNFLm1kJ1xuICAgIH0sXG4gICAgJzBCU0QnOiB7XG4gICAgICAnbGFiZWwnOiAnWmVyby1DbGF1c2UgQlNEJyxcbiAgICAgICd1cmwnOiAnaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzLzBCU0QnXG4gICAgfVxuICB9O1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcbiAgICB0aGlzLl9fbGlicmFyaWVzX18gPSB0aGlzLl9fbGlicmFyaWVzX18uZmlsdGVyKGxpYiA9PiB0aGlzLmxpY2Vuc2VzW2xpYi5saWNlbnNlXSk7XG4gICAgdGhpcy5nZXRVc2VyTGFuZygpO1xuICAgIHRoaXMuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3RoaXMuY29uZmlnLmdldERhc2hib2FyZEJhY2tncm91bmRJbWFnZSgpfSlgO1xuICAgIHRoaXMuaGVhZGVyTG9nbyA9IHRoaXMuY29uZmlnLmdldFJhdygnYWJvdXQuaGVhZGVyTG9nbycpO1xuICAgIGlmICghdGhpcy5oZWFkZXJMb2dvKSB7XG4gICAgICB0aGlzLmhlYWRlckxvZ28gPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ2FwcExvZ28nKTtcbiAgICB9XG5cbiAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS9pbmZvJykuc3Vic2NyaWJlKGluZm8gPT4ge1xuICAgICAgdGhpcy5jdHJsLnByb2R1Y3ROYW1lID0gaW5mby5wcm9kdWN0Lm5hbWU7XG4gICAgICB0aGlzLmN0cmwucHJvZHVjdFZlcnNpb24gPSBpbmZvLnByb2R1Y3QucHJvZHVjdHZlcnNpb247XG4gICAgfSk7XG4gIH1cblxuICBnZXRVc2VyTGFuZygpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAudXNlciRcbiAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB0aGlzLnVzZXJMYW5nID0gZGF0YS51c2VyU2V0dGluZ3MuY2xpZW50bG9jYWxlKTtcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tYWJvdXQtc3RhdGVcIj5cblxuICA8ZGl2IGNsYXNzPVwiYWJvdXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiYmFja2dyb3VuZEltYWdlXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiaGVhZGVyTG9nb1wiLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xhaW1cIiB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5jbGFpbTwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwid3JhcFwiPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5jb21wb25lbnQubGFiZWw8L3RoPlxuICAgICAgICAgICAgPHRkPnt7Y3RybC5jb21wb25lbnROYW1lfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIHRyYW5zbGF0ZT5lby5oZWxwLmFib3V0LmNvbXBvbmVudC52ZXJzaW9uLmxhYmVsPC90aD5cbiAgICAgICAgICAgIDx0ZD57e2N0cmwuY29tcG9uZW50VmVyc2lvbn19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5wcm9kdWN0LmxhYmVsPC90aD5cbiAgICAgICAgICAgIDx0ZD57eyBjdHJsLnByb2R1Y3ROYW1lIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5wcm9kdWN0LnZlcnNpb24ubGFiZWw8L3RoPlxuICAgICAgICAgICAgPHRkPnt7IGN0cmwucHJvZHVjdFZlcnNpb24gfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIHRyYW5zbGF0ZT5lby5oZWxwLmFib3V0LnByb2R1Y2VyLmxhYmVsPC90aD5cbiAgICAgICAgICAgIDx0ZCB0cmFuc2xhdGU+ZW8uaGVscC5hYm91dC5wcm9kdWNlci50ZXh0PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cblxuXG4gICAgICA8aDIgdHJhbnNsYXRlPmVvLmhlbHAubGljZW5zZS50aXRsZTwvaDI+XG4gICAgICA8cCB0cmFuc2xhdGU+ZW8uaGVscC5saWNlbnNlLmludHJvPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cInNob3dMaWNcIiAoY2xpY2spPVwibGljZW5zZVNob3cgPSAhbGljZW5zZVNob3dcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGVcIj48c3BhbiB0cmFuc2xhdGU+ZW8uaGVscC5saWNlbnNlLnRpdGxlPC9zcGFuPjxzcGFuIGNsYXNzPVwidG9nZ2xlLWluZGljYXRvclwiPnt7bGljZW5zZVNob3cgPyAnLScgOiAnKyd9fTwvc3Bhbj48L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGljZW5zZXNcIiAqbmdJZj1cImxpY2Vuc2VTaG93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaWJcIiAqbmdGb3I9XCJsZXQgbGliIG9mIF9fbGlicmFyaWVzX187IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+e3tsaWIubmFtZX19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpY1wiPlxuICAgICAgICAgICAgPGEgaHJlZj1cInt7bGljZW5zZXNbbGliLmxpY2Vuc2VdLnVybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCJsaWNlbnNlc1tsaWIubGljZW5zZV0udXJsXCI+e3tsaWNlbnNlc1tsaWIubGljZW5zZV0ubGFiZWx9fTwvYT5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxpY2Vuc2VzW2xpYi5saWNlbnNlXS51cmxcIj57e2xpY2Vuc2VzW2xpYi5saWNlbnNlXS5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
@@ -398,7 +398,7 @@ let InboxStateComponent = class InboxStateComponent {
398
398
  this.actionService.showActions([], 'COMPONENT_SPECIFIC_ACTIONS');
399
399
  }
400
400
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InboxStateComponent, deps: [{ token: i1.TranslateService }, { token: i2.SelectionService }, { token: i3.PageTitleService }, { token: i1.InboxService }, { token: i4.PendingChangesService }, { token: i5.EmptyStateService }, { token: i1.BpmService }, { token: i6.UntypedFormBuilder }, { token: i1.BackendService }, { token: i1.EventService }, { token: i7.ActivatedRoute }, { token: i1.LocalStorageService }, { token: i8.ActionService }], target: i0.ɵɵFactoryTarget.Component }); }
401
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\"\n [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(filterForm?.value)\"\n (onToggle)=\"onFilterOverlayToggle($event)\">\n\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\"\n [filterForm]=\"filterForm\"\n [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\">\n\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n\n <form [formGroup]=\"filterForm\">\n @if (processModelsListObject.entries.length) {\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\">\n <eo-dynamic-list formControlName=\"modelFCN\" [pickerTitle]=\"'eo.state.process.filter.title' | translate\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n }\n </form>\n\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state'\"\n [plugins]=\"'object-details-tab.inbox' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}::ng-deep eo-form-input{width:100%}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i11.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i12.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i13.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i14.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i15.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i16.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i17.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i18.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i19.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { kind: "component", type: i20.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i21.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], outputs: ["hasContent"] }, { kind: "directive", type: i22.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i23.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i24.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "isTableElement", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: i25.InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: i26.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i27.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i27.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }, { kind: "pipe", type: i28.PluginPipe, name: "plugins" }] }); }
401
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: InboxStateComponent, selector: "eo-inbox-state", viewQueries: [{ propertyName: "eoGrid", first: true, predicate: ["eoGrid"], descendants: true }], ngImport: i0, template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\"\n [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(filterForm?.value)\"\n (onToggle)=\"onFilterOverlayToggle($event)\">\n\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\"\n [filterForm]=\"filterForm\"\n [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\">\n\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n\n <form [formGroup]=\"filterForm\">\n @if (processModelsListObject.entries.length) {\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\">\n <eo-dynamic-list formControlName=\"modelFCN\" [isFilterElement]=\"true\" [pickerTitle]=\"'eo.state.process.filter.title' | translate\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n }\n </form>\n\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state'\"\n [plugins]=\"'object-details-tab.inbox' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}::ng-deep eo-form-input{width:100%}\n"], dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i10.GridComponent, selector: "eo-grid", inputs: ["selectFirst", "selectionLimit", "sizeToFit", "fullWidth", "showHeader", "showFooter", "loaderContent", "options", "gridOptions"], outputs: ["eoGridCountChanged", "eoGridSelectionChanged", "eoGridFocusChanged", "eoGridCellClick", "eoGridDoubleClick", "eoGridContextMenuClick", "eoGridColumnResized"] }, { kind: "component", type: i11.TotalCountComponent, selector: "eo-total-count", inputs: ["eoGrid", "outsideGrid", "gridCount"] }, { kind: "component", type: i12.CustomSortComponent, selector: "eo-custom-sort", inputs: ["eoGrid", "overlay", "id", "sortFields"], outputs: ["change", "active"] }, { kind: "component", type: i13.CustomFilterComponent, selector: "eo-custom-filter", inputs: ["overlay", "eoGrid", "activeFilter", "isFilterActive", "filterForm"], outputs: ["change", "active", "onResetFilters"] }, { kind: "component", type: i14.TextFilterComponent, selector: "eo-text-filter", inputs: ["title", "placeholder", "enableSave", "filterParams", "matchFields"] }, { kind: "component", type: i15.SetFilterComponent, selector: "eo-set-filter", inputs: ["title", "searchLimit", "operator", "options", "filterParams"] }, { kind: "component", type: i16.ResetFilterComponent, selector: "eo-reset-filter", inputs: ["isFilterActive"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i17.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i18.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i19.OverlayComponent, selector: "eo-overlay", inputs: ["iconSrc", "badge", "iconClass", "active", "iconTitle", "userAvatar"], outputs: ["onToggle"] }, { kind: "component", type: i20.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i21.ObjectDetailsComponent, selector: "eo-object-details", inputs: ["plugins", "searchTerm", "enableCompare", "recyclebinTabs", "versionComponentTabs", "enableDiff", "enableSync", "cacheLayout", "applySelection", "parseDmsParams", "reference", "emptyState", "params", "params2", "item", "item2"], outputs: ["hasContent"] }, { kind: "directive", type: i22.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i23.FormInputComponent, selector: "eo-form-input", inputs: ["label", "tag", "description", "skipToggle", "isNull", "invalid", "disabled", "required"], outputs: ["onToggleLabel"] }, { kind: "component", type: i24.DynamicListComponent, selector: "eo-dynamic-list", inputs: ["situation", "multiselect", "pickerTitle", "readonly", "formControlName", "formElementChanges", "isTableElement", "isFilterElement", "filterFunction", "listObject", "autocompleteUrl"] }, { kind: "component", type: i25.InboxDetailsComponent, selector: "eo-inbox-details", inputs: ["plugins", "emptyState", "applySelection", "item"] }, { kind: "component", type: i26.ListContainerComponent, selector: "eo-list-container", inputs: ["applySelection", "applyVersion", "loading", "tabs", "parseDmsParams"] }, { kind: "component", type: i27.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i27.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "pipe", type: i17.TranslatePipe, name: "translate" }, { kind: "pipe", type: i28.PluginPipe, name: "plugins" }] }); }
402
402
  };
403
403
  InboxStateComponent = __decorate([
404
404
  UntilDestroy()
@@ -406,9 +406,9 @@ InboxStateComponent = __decorate([
406
406
  export { InboxStateComponent };
407
407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: InboxStateComponent, decorators: [{
408
408
  type: Component,
409
- args: [{ selector: 'eo-inbox-state', template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\"\n [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(filterForm?.value)\"\n (onToggle)=\"onFilterOverlayToggle($event)\">\n\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\"\n [filterForm]=\"filterForm\"\n [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\">\n\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n\n <form [formGroup]=\"filterForm\">\n @if (processModelsListObject.entries.length) {\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\">\n <eo-dynamic-list formControlName=\"modelFCN\" [pickerTitle]=\"'eo.state.process.filter.title' | translate\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n }\n </form>\n\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state'\"\n [plugins]=\"'object-details-tab.inbox' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}::ng-deep eo-form-input{width:100%}\n"] }]
409
+ args: [{ selector: 'eo-inbox-state', template: "<yvc-split-view [layoutSettingsID]=\"'inbox.state'\" [eoShortcuts]=\"shortcuts\">\n <!-- list -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-list-container #eoList [applySelection]=\"{out: inboxSelectionId}\">\n <div class=\"eo-header\">\n\n <eo-icon class=\"eo-header-icon\" [iconSrc]=\"'assets/_default/svg/ic_inbox.svg'\"></eo-icon>\n <div class=\"eo-header-info\">\n <div class=\"eo-header-title\" translate>eo.inbox.list.title</div>\n </div>\n <div class=\"eo-header-actions\">\n <eo-icon class=\"button refresh-button\" [ngClass]=\"{inboxChanged: inboxChanged}\"\n (click)=\"refreshGrid()\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\"\n [iconTitle]=\"('eo.list.refresh' | translate)\"></eo-icon>\n\n <eo-overlay #oFilter class=\"overlay-filter\"\n [iconSrc]=\"'assets/_default/svg/ic_filter.svg'\"\n [iconTitle]=\"'eo.list.filter' | translate\"\n [active]=\"hasChanged(filterForm?.value)\"\n (onToggle)=\"onFilterOverlayToggle($event)\">\n\n <eo-custom-filter #cFilter (change)=\"cFilter.updateGrid(eoList.eoGridSubject, $event)\"\n (active)=\"oFilter.onActiveChanged($event)\"\n [filterForm]=\"filterForm\"\n [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\">\n\n <eo-text-filter [title]=\"'eo.inbox.filter.title' | translate\" [filterParams]=\"defaultFilterParams\"\n [id]=\"'inbox.text'\" [matchFields]=\"['title','description','id']\" [enableSave]=\"true\"></eo-text-filter>\n <eo-set-filter class=\"type-filters\" [operator]=\"'OR'\" [id]=\"'inbox.type'\" [filterParams]=\"defaultFilterParams\" [options]=\"typeFilterFields\"></eo-set-filter>\n <eo-set-filter class=\"inbox-filters\" [operator]=\"'AND'\" [id]=\"'inbox.set'\" [filterParams]=\"defaultFilterParams\" [options]=\"inboxFilterFields\"></eo-set-filter>\n\n <form [formGroup]=\"filterForm\">\n @if (processModelsListObject.entries.length) {\n <eo-form-input [label]=\"('eo.state.process.filter.labels.model' | translate)\">\n <eo-dynamic-list formControlName=\"modelFCN\" [isFilterElement]=\"true\" [pickerTitle]=\"'eo.state.process.filter.title' | translate\" [listObject]=\"processModelsListObject\"></eo-dynamic-list>\n </eo-form-input>\n }\n </form>\n\n </eo-custom-filter>\n </eo-overlay>\n\n <eo-overlay #oSort class=\"overlay-sort\" [iconSrc]=\"'assets/_default/svg/ic_sort.svg'\"\n [iconTitle]=\"'eo.list.sort' | translate\">\n <eo-custom-sort #cSort [id]=\"'inbox.sort'\" (change)=\"cSort.updateGrid(eoList.eoGrid, $event)\"\n (active)=\"oSort.onActiveChanged($event)\" [sortFields]=\"sortFields\"></eo-custom-sort>\n </eo-overlay>\n\n <eo-icon class=\"button actions-button\" (click)=\"showActions()\" [iconTitle]=\"'eo.shortcuts.action.task' | translate\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n\n </div>\n </div>\n <div class=\"eo-body\">\n <eo-grid #eoGrid *ngIf=\"gridOptions?.rowData\" [gridOptions]=\"gridOptions\" [fullWidth]=\"true\" [showHeader]=\"true\"\n [showFooter]=\"true\" [selectFirst]=\"selectFirst\" [options]=\"{filterActive: oFilter.active}\"\n (eoGridCountChanged)=\"eoList.onCountChanged($event);onCountChanged($event)\"\n (eoGridSelectionChanged)=\"eoList.onSelectionChanged($event)\"\n (eoGridFocusChanged)=\"eoList.onFocusChanged($event)\">\n <div class=\"header\">\n </div>\n\n <div class=\"footer\">\n <eo-total-count [gridCount]=\"eoList.gridCount\" [outsideGrid]=\"false\" class=\"flex-row\"></eo-total-count>\n </div>\n\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_inbox.svg', text: oFilter.active ? 'eo.no.filter.result' : 'eo.inbox.list.empty'}\"></eo-error-message>\n <eo-reset-filter [isFilterActive]=\"oFilter.active || hasChanged(filterForm?.value)\"\n (click)=\"cFilter.resetFilter();cSort.reset();refreshGrid()\"></eo-reset-filter>\n </div>\n\n </eo-grid>\n </div>\n </eo-list-container>\n </ng-template>\n <!-- inbox details -->\n <ng-template yvcSplitArea [size]=\"30\">\n <eo-inbox-details [applySelection]=\"{in: inboxSelectionId, out: inboxDmsObjectSelectionId}\"\n [emptyState]=\"emptyState\" [plugins]=\"'inbox-details-tab.inbox' | plugins\">\n </eo-inbox-details>\n </ng-template>\n <!-- object details -->\n <ng-template yvcSplitArea [size]=\"40\">\n <eo-object-details [applySelection]=\"{in: inboxDmsObjectSelectionId}\" [cacheLayout]=\"'inbox.state'\"\n [plugins]=\"'object-details-tab.inbox' | plugins\">\n </eo-object-details>\n </ng-template>\n</yvc-split-view>\n", styles: [":host{position:absolute;left:var(--app-pane-padding);right:var(--app-pane-padding);top:var(--app-pane-padding);bottom:var(--app-pane-padding);overflow:hidden}:host yvc-split-view{height:100%}:host .inboxChanged{background:var(--color-success);color:#fff}:host .inboxChanged:hover{background:var(--color-success);color:#fff}:host ::ng-deep .ag-cell .list-item{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0;align-items:center;height:80px}:host ::ng-deep .ag-cell .list-item[unselectable]{-webkit-user-select:none;user-select:none}:host ::ng-deep .ag-cell .list-item .content{flex:1;padding:var(--app-pane-padding);display:inline-block;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .ag-cell .list-item .content .notes>span{border-radius:2px;-webkit-border-radius:2px;background-color:var(--color-primary-4);color:#fff;font-size:var(--font-hint);padding:1px calc(var(--app-pane-padding) / 4) 0 calc(var(--app-pane-padding) / 4)}:host ::ng-deep .ag-cell .list-item .content .notes.pastDue span.period{background-color:var(--color-error)}:host ::ng-deep .ag-cell .list-item .content .title{font-weight:var(--font-weight-normal);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .title-bold{font-weight:var(--font-weight-bold);font-size:var(--font-body)}:host ::ng-deep .ag-cell .list-item .content .description{font-size:var(--font-caption);color:var(--text-color-caption)}:host ::ng-deep .ag-cell .list-item.read .title{font-weight:var(--font-weight-normal)}:host ::ng-deep .ag-cell .list-item .meta{padding:0 calc(var(--app-pane-padding) / 2);display:flex;flex-flow:column;align-items:flex-end}:host ::ng-deep .ag-cell .list-item .meta .date{color:rgba(var(--color-black-rgb),.4)}::ng-deep eo-form-input{width:100%}\n"] }]
410
410
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.SelectionService }, { type: i3.PageTitleService }, { type: i1.InboxService }, { type: i4.PendingChangesService }, { type: i5.EmptyStateService }, { type: i1.BpmService }, { type: i6.UntypedFormBuilder }, { type: i1.BackendService }, { type: i1.EventService }, { type: i7.ActivatedRoute }, { type: i1.LocalStorageService }, { type: i8.ActionService }], propDecorators: { eoGrid: [{
411
411
  type: ViewChild,
412
412
  args: ['eoGrid']
413
413
  }] } });
414
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBR0wsVUFBVSxFQUVWLFNBQVMsRUFLVCxLQUFLLEVBQ04sTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5RUFBeUUsQ0FBQztBQUc1RyxPQUFPLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sNkVBQTZFLENBQUM7QUFHdEgsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWxCLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBcUQ5QixZQUFtQixTQUEyQixFQUNyQyxTQUEyQixFQUMxQixZQUE4QixFQUMvQixZQUEwQixFQUN6QixjQUFxQyxFQUNyQyxLQUF3QixFQUN6QixVQUFzQixFQUNyQixFQUFzQixFQUN0QixPQUF1QixFQUN2QixZQUEwQixFQUMxQixLQUFxQixFQUNyQixjQUFtQyxFQUNuQyxhQUE0QjtRQVpuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNyQyxj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YUFBYSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUdELFVBQVUsQ0FBQyxFQUFFO1FBQ1gsT0FBTyxFQUFFLEVBQUUsUUFBUSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0gsV0FBVztRQUNULE1BQU0sT0FBTyxHQUFHO1lBQ2Q7Z0JBQ0UsTUFBTSxFQUFFLElBQUkseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN0RDtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBNVpVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHdKQ3JDaEMscytKQTBGQTs7QURyRGEsbUJBQW1CO0lBTi9CLFlBQVksRUFBRTtHQU1GLG1CQUFtQixDQThaL0I7OzJGQTlaWSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCOytiQXNETCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCYWNrZW5kU2VydmljZSxcbiAgQnBtU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBJbmJveEl0ZW0sXG4gIEluYm94U2VydmljZSxcbiAgSW5ib3hTdGF0ZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7RW1wdHlTdGF0ZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7RW1wdHlTdGF0ZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS90aXRsZS9wYWdlLXRpdGxlLnNlcnZpY2UnO1xuaW1wb3J0IHtDdXN0b21Tb3J0Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2N1c3RvbS1zb3J0L2N1c3RvbS1zb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQge0lTZXRGaWx0ZXJ9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvZmlsdGVyL3NldEZpbHRlcnMvc2V0LWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtJbmJveFR5cGVzLCBJbmJveFR5cGVzRmlsdGVyfSBmcm9tICcuL2luYm94LnR5cGVzLmVudW0nO1xuaW1wb3J0IHtSZXR1cm5UYXNrQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3JldHVybi10YXNrLWFjdGlvbi9yZXR1cm4tdGFzay1hY3Rpb24nO1xuaW1wb3J0IHtBY3Rpb25TZXJ2aWNlLCBHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcyc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8taW5ib3gtc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5ib3gtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmJveC1zdGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluYm94U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgUGVuZGluZ0NoYW5nZXNDb21wb25lbnQge1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgc29ydEZpZWxkczogQ29sRGVmW107XG4gIGluYm94RmlsdGVyRmllbGRzOiBJU2V0RmlsdGVyW10gPSBbXTtcbiAgdHlwZUZpbHRlckZpZWxkczogSVNldEZpbHRlcltdID0gW107XG4gIGluYm94U2VsZWN0aW9uSWQgPSAnaW5ib3gnO1xuICBpbmJveERtc09iamVjdFNlbGVjdGlvbklkID0gJ2luYm94X2Rtcyc7XG4gIGZpbHRlckNhY2hlS2V5ID0gXCJlby5pbmJveC5saXN0LmZpbHRlclwiO1xuICBpbmJveFNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZTtcbiAgc2VsZWN0Rmlyc3QgPSB0cnVlO1xuICBmaWx0ZXJGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBlbXB0eVN0YXRlMTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuICBlbXB0eVN0YXRlMjogRW1wdHlTdGF0ZSA9IHtpY29uOiAnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuXG4gIHByb2Nlc3NNb2RlbHNMaXN0T2JqZWN0ID0ge1xuICAgIGVudHJpZXM6IFtdLFxuICAgIGNvbmZpZzoge1xuICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgdGl0bGU6ICd0aXRsZScsXG4gICAgICBzdWJFbnRyaWVzRmllbGQ6ICdtb2RlbHMnXG4gICAgfVxuICB9XG5cbiAgaWRNYXRjaCA9IHRydWU7XG4gIGdyaWREYXRhO1xuICBkZWZhdWx0RmlsdGVyUGFyYW1zOiBhbnkgPSB7fTtcbiAgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG4gIGluYm94Q2hhbmdlZCA9IGZhbHNlO1xuICBzdG9yYWdlS2V5TGFzdEl0ZW1JRCA9ICdlby5pbmJveC5sYXN0SXRlbUlEJztcblxuICAvLyBkZWZpbmUgYSBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCBmb3IgdGhlIGluYm94IHN0YXRlXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5pbmJveC1zdGF0ZScsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94Lmxpc3QudGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLmluYm94Lmxpc3QudGl0bGUnLFxuICAgIGZvY3VzZWQ6IHRydWUsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycpLFxuICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycsXG4gICAgICBzaG9ydGN1dDogJ1QnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0FjdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG4gIHN0b3JhZ2VGaWx0ZXJWYWx1ZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwdWJsaWMgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRCYXNlVGl0bGUodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3gubGlzdC50aXRsZScpKTtcbiAgICAvL3NlY29uZGFyeSBzZWxlY3Rpb24gaW5zdGFuY2UgZm9yIGluYm94IGl0ZW1zXG4gICAgdGhpcy5pbmJveFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmNyZWF0ZU5ldyh0aGlzLmluYm94U2VsZWN0aW9uSWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmNyZWF0ZU5ldyh0aGlzLmluYm94RG1zT2JqZWN0U2VsZWN0aW9uSWQpO1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyUGFyYW1zID0ge2NvbnRleHQ6IHtkZWZhdWx0VmFsdWU6IHBhcmFtcy5pZH19O1xuICAgICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBtb2RlbEZDTjogbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLmJwbVNlcnZpY2UuZmV0Y2hQcm9jZXNzTW9kZWxzKCkuc3Vic2NyaWJlKHByb2Nlc3NNb2RlbHMgPT4ge1xuICAgICAgbGV0IG1vZGVscyA9IFtdO1xuICAgICAgcHJvY2Vzc01vZGVscy5mb3JFYWNoKChtb2RlbDogYW55KSA9PiB7XG4gICAgICAgIGlmIChtb2RlbC5tb2RlbHMpIHtcbiAgICAgICAgICBtb2RlbC5tb2RlbHMuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgIG1vZGVscy5wdXNoKG0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RlbC5wcm9qZWN0cykge1xuICAgICAgICAgIG1vZGVsLnByb2plY3RzLmZvckVhY2gocHJvamVjdCA9PiB7XG4gICAgICAgICAgICBpZiAocHJvamVjdC5tb2RlbHMpIHtcbiAgICAgICAgICAgICAgcHJvamVjdC5tb2RlbHMuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgICAgICBtb2RlbHMucHVzaChtKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jZXNzTW9kZWxzTGlzdE9iamVjdC5lbnRyaWVzID0gbW9kZWxzO1xuICAgICAgdGhpcy5wcm9jZXNzTW9kZWxzTGlzdE9iamVjdC5lbnRyaWVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygndGl0bGUnKSk7XG4gICAgICB0aGlzLmdldFN0b3JhZ2VDYWNoZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRNb2RlbChlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaW5ib3hTZXJ2aWNlLmluYm94U3RhdGUkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlOiBJbmJveFN0YXRlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVvR3JpZCkge1xuICAgICAgICAgIC8vIHRvZG86IHRlbXBvcmFyeSBmaXggdW50aWwgc3RhdHVzIHNlcnZpY2UgdXBkYXRlXG4gICAgICAgICAgLy8gdGhpcy5pbmJveENoYW5nZWQgPSB0aGlzLmVvR3JpZC5jb250ZXh0Q291bnQgIT09IHN0YXRlLnRvdGFsbWVzc2FnZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZE1vZGVsKGU6IGFueSkge1xuICAgIGlmIChlLm1vZGVsRkNOICE9PSBudWxsICYmIGUubW9kZWxGQ04/Lm1vZGVsRkNOICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy5maWx0ZXJDYWNoZUtleSwgdGhpcy5maWx0ZXJGb3JtLmdldCgnbW9kZWxGQ04nKS52YWx1ZSk7XG4gICAgICB0aGlzLm9uUGFnZUNoYW5nZWQoKTtcbiAgICB9IGVsc2UgaWYgKGUubW9kZWxGQ04gPT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmdyaWREYXRhKTtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmZpbHRlckNhY2hlS2V5LCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdG9yYWdlQ2FjaGUoKSB7XG4gICAgdGhpcy5zdG9yYWdlRmlsdGVyVmFsdWUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5maWx0ZXJDYWNoZUtleSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdG9yYWdlRmlsdGVyVmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbml0RmlsdGVyKHRoaXMuc3RvcmFnZUZpbHRlclZhbHVlKTtcbiAgICAgIH1cbiAgICB9LCAzMDApO1xuICB9XG5cblxuICBwcml2YXRlIGluaXRGaWx0ZXIoc3RvcmFnZUZpbHRlclZhbHVlKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgbW9kZWxGQ046IHN0b3JhZ2VGaWx0ZXJWYWx1ZSxcbiAgICB9KVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmZldGNoUm93RGF0YSh7XG4gICAgICBzdWNjZXNzQ2FsbGJhY2s6IChyb3dzKSA9PiB7XG4gICAgICAgIHRoaXMuZW9HcmlkLmFwaT8uc2V0R3JpZE9wdGlvbjxhbnk+KCdyb3dEYXRhJywgcm93cyk7XG4gICAgICAgIHRoaXMuZW9HcmlkLnNlbGVjdFJvdygwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvY2Vzc2VzKCkge1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKHRoaXMuYWRkRmlsdGVyUGFyYW1zVG9VcmwoJycpLCB7fSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24odXJsLCB0aGlzLmJhY2tlbmQuZ2V0SW5ib3hCYXNlKCkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmVzcG9uc2UucHJvY2Vzc2VzID0gcmVzcG9uc2UuY29udGVudC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEluYm94SXRlbShpdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGaWx0ZXJQYXJhbXNUb1VybCh1cmwpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmZpbHRlckZvcm0udmFsdWUubW9kZWxGQ04pIHtcbiAgICAgIHVybCArPSAnL2dldD9zb3VyY2VHcm91cElkPScgKyB0aGlzLmdldE1vZGVsSWRGcm9tTmFtZSh0aGlzLmZpbHRlckZvcm0udmFsdWUubW9kZWxGQ04pICsgJyZwYWdlPTAmc2l6ZT0xMDAwJztcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSb3dEYXRhKHBhcmFtcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRQcm9jZXNzZXMoKS5zdWJzY3JpYmUoKHByb2Nlc3NlcykgPT4ge1xuICAgICAgICBpZiAocGFyYW1zLnN0YXJ0Um93ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lbXB0eVN0YXRlMSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZShwcm9jZXNzZXMuY29udGVudCA/IHByb2Nlc3Nlcy5jb250ZW50Lmxlbmd0aCA6IC0xLCB1bmRlZmluZWQsICdpY19uby1maWxlLnN2ZycpO1xuICAgICAgICAgIHRoaXMuZW1wdHlTdGF0ZTIgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUocHJvY2Vzc2VzLmNvbnRlbnQgPyBwcm9jZXNzZXMuY29udGVudC5sZW5ndGggOiAtMSwgdW5kZWZpbmVkLCAnaWNfbm8tZmlsZS5zdmcnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVvR3JpZC5ncmlkT3B0aW9ucy5jb250ZXh0LnJvd0NvdW50ID0gcHJvY2Vzc2VzLnRvdGFsRWxlbWVudHM7XG4gICAgICAgIHRoaXMuZW9HcmlkLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSBwcm9jZXNzZXMudG90YWxFbGVtZW50cztcbiAgICAgICAgcGFyYW1zLnN1Y2Nlc3NDYWxsYmFjayhwcm9jZXNzZXMucHJvY2Vzc2VzLCBwcm9jZXNzZXMudG90YWxFbGVtZW50cyk7XG4gICAgICB9KTtcbiAgICB9LCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGVsSWRGcm9tTmFtZShtb2RlbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGlkID0gJyc7XG4gICAgdGhpcy5wcm9jZXNzTW9kZWxzTGlzdE9iamVjdC5lbnRyaWVzLmZvckVhY2gobW9kZWwgPT4ge1xuICAgICAgaWYgKG1vZGVsLm5hbWUgPT09IG1vZGVsTmFtZSkge1xuICAgICAgICBpZCA9IG1vZGVsLmlkO1xuICAgICAgfSBlbHNlIGlmIChtb2RlbC5tb2RlbHMpIHtcbiAgICAgICAgbW9kZWwubW9kZWxzLmZvckVhY2goc3VibW9kZWwgPT4ge1xuICAgICAgICAgIGlmIChzdWJtb2RlbC5uYW1lID09PSBtb2RlbE5hbWUpIHtcbiAgICAgICAgICAgIGlkID0gc3VibW9kZWwuaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBvbkNvdW50Q2hhbmdlZChldnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmRlZmF1bHRGaWx0ZXJQYXJhbXMuY29udGV4dCAmJiB0aGlzLmRlZmF1bHRGaWx0ZXJQYXJhbXMuY29udGV4dC5kZWZhdWx0VmFsdWUpIHtcbiAgICAgIGlmIChldnQucm93Q291bnQgPT09IDApIHtcbiAgICAgICAgdGhpcy5pZE1hdGNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmluYm94U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmVvR3JpZC5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1BlbmRpbmdDaGFuZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKCk7XG4gIH1cblxuICByZWZyZXNoR3JpZCgpIHtcbiAgICB0aGlzLmluYm94Q2hhbmdlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uZGlzYWJsZShmYWxzZSk7XG4gICAgdGhpcy5pbmJveFNlcnZpY2UuZ2V0SXRlbXMoKS5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5nZXQoJ21vZGVsRkNOJykudmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE1vZGVsKHRoaXMuZmlsdGVyRm9ybS5nZXQoJ21vZGVsRkNOJykudmFsdWUpO1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICBpdGVtRmlsdGVyRmllbGRzKG5vZGUsIGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5vZGUuZGF0YVtJbmJveFR5cGVzRmlsdGVyW2l0ZW1dXTtcbiAgICBjb25zdCBhY2NlcHRlZEFuZFVuYWNjZXB0ZWRDb21iaW5lZCA9IHRoaXMuaW5ib3hGaWx0ZXJGaWVsZHMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmlkID09PSAnYWNjZXB0ZWRUYXNrcycpLnZhbHVlXG4gICAgICAmJiB0aGlzLmluYm94RmlsdGVyRmllbGRzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gJ3VuYWNjZXB0ZWRUYXNrcycpLnZhbHVlO1xuICAgIHN3aXRjaCAoSW5ib3hUeXBlc0ZpbHRlcltpdGVtXSkge1xuICAgICAgY2FzZSBJbmJveFR5cGVzRmlsdGVyLm92ZXJkdWU6XG4gICAgICAgIHJldHVybiBub2RlLmRhdGEuaXNPdmVyZHVlKCk7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIuYWJzZW50OlxuICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICAgIGNhc2UgSW5ib3hUeXBlc0ZpbHRlci5hY2NlcHRlZFRhc2tzOlxuICAgICAgICByZXR1cm4gYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPyBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgOiBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgJiYgISFub2RlLmRhdGEuYWNjZXB0ZWQ7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIudW5hY2NlcHRlZFRhc2tzOlxuICAgICAgICByZXR1cm4gYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPyBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgOiBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgJiYgIW5vZGUuZGF0YS5hY2NlcHRlZDtcbiAgICB9XG4gIH1cblxuICBmaWVsZEZpbHRlcnMoKSB7XG4gICAgdGhpcy50eXBlRmlsdGVyRmllbGRzID0gT2JqZWN0LmtleXMoSW5ib3hUeXBlcykubWFwKGl0ZW0gPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5pbmJveC4ke2l0ZW19YCksXG4gICAgICBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudHlwZSA9PT0gaXRlbSxcbiAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgaWQ6IGl0ZW1cbiAgICB9KSk7XG5cbiAgICB0aGlzLmluYm94RmlsdGVyRmllbGRzID0gT2JqZWN0LmtleXMoSW5ib3hUeXBlc0ZpbHRlcikubWFwKGl0ZW0gPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5pbmJveC5maWx0ZXIuJHtpdGVtfWApLFxuICAgICAgZmlsdGVyOiAobm9kZSkgPT4gdGhpcy5pdGVtRmlsdGVyRmllbGRzKG5vZGUsIGl0ZW0pLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgaWQ6IGl0ZW1cbiAgICB9KSk7XG4gIH1cblxuXG4gIHVwZGF0ZUdyaWQoZGF0YTogSW5ib3hJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoZGF0YSA/IGRhdGEubGVuZ3RoIDogLTEsIHVuZGVmaW5lZCwgJ2ljX25vLWZpbGUuc3ZnJyk7XG4gICAgaWYgKHRoaXMuZW9HcmlkICYmIHRoaXMuZW9HcmlkLmlzUmVhZHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmVvR3JpZC51cGRhdGVSb3dEYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuZmllbGRGaWx0ZXJzKCk7XG4gICAgbGV0IGNvbERlZnM6IENvbERlZltdID0gW3tcbiAgICAgIGhlYWRlck5hbWU6ICcnLFxuICAgICAgZmllbGQ6ICdfX2N1c3RvbScsXG4gICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuY2VsbFJlbmRlcmVyLFxuICAgICAgZmlsdGVyOiBmYWxzZVxuICAgICAgLy8gY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBJbmJveFJlbmRlcmVyQ29tcG9uZW50XG4gICAgfV07XG5cbiAgICB0aGlzLnNvcnRGaWVsZHMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiAncmVjZWl2ZWQnLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5zb3J0LmRhdGUnKSwgc29ydDogbnVsbCxcbiAgICAgICAgdmFsdWVHZXR0ZXI6IChwKSA9PiAocC5kYXRhW3AuY29sRGVmLmZpZWxkXSB8fCAnJykubWF0Y2goL1xcK1xcZFxcZDpcXGRcXGQvKSA/IG5ldyBEYXRlKHAuZGF0YVtwLmNvbERlZi5maWVsZF0pLnRvSVNPU3RyaW5nKCkgOiBwLmRhdGFbcC5jb2xEZWYuZmllbGRdXG4gICAgICB9LFxuICAgICAge2ZpZWxkOiAndGl0bGUnLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5zb3J0LnRpdGxlJyksIHNvcnQ6IG51bGx9LFxuICAgICAge2ZpZWxkOiAnZGVzY3JpcHRpb24nLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5zb3J0LmRlc2NyaXB0aW9uJyksIHNvcnQ6IG51bGx9XG4gICAgXTtcblxuICAgIGxldCBzb3J0Q29sRGVmcyA9IEN1c3RvbVNvcnRDb21wb25lbnQuc29ydENvbERlZnModGhpcy5zb3J0RmllbGRzKTtcblxuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb250ZXh0OiB7Y291bnQ6IGRhdGEubGVuZ3RofSxcbiAgICAgIHJvd0RhdGE6IGRhdGEsXG4gICAgICBjb2x1bW5EZWZzOiBjb2xEZWZzLmNvbmNhdChzb3J0Q29sRGVmcyksXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgcm93SGVpZ2h0OiA4MCxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZSdcbiAgICB9O1xuICB9XG5cbiAgb25GaWx0ZXJPdmVybGF5VG9nZ2xlKG9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVvR3JpZC5hcGk/LnNldEdyaWRPcHRpb24oJ3N1cHByZXNzQ2VsbEZvY3VzJywgb3Blbik7XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICB0aGlzLmVvR3JpZC5zZWxlY3RSb3coMCk7XG4gICAgfVxuICB9XG5cbiAgY2VsbFJlbmRlcmVyKHBhcmFtcykge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGlmIChPYmplY3Qua2V5cyhJbmJveFR5cGVzKS5pbmNsdWRlcyhwYXJhbXMuZGF0YS50eXBlKSkge1xuICAgICAgbGFiZWwgPSBwYXJhbXMuY29udGV4dC50cmFuc2xhdGUuaW5zdGFudChgZW8uaW5ib3guJHtwYXJhbXMuZGF0YS50eXBlfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IGBhc3NldHMvX2RlZmF1bHQvc3ZnL2ljXyR7SW5ib3hUeXBlc1twYXJhbXMuZGF0YS50eXBlXX0uc3ZnYDtcblxuICAgIGxldCBpY29uID0gcGFyYW1zLmNvbnRleHQuY3IucmVuZGVyKCdpY29uJywgcGFyYW1zLCB7dmFsdWU6IHt1cmwsIGxhYmVsfX0pO1xuICAgIGxldCBzaG9ydERhdGUgPSBwYXJhbXMuY29udGV4dC5jci5yZW5kZXIoJ2RhdGVUaW1lJywgcGFyYW1zLCB7dmFsdWU6IHBhcmFtcy5kYXRhLnJlY2VpdmVkLCBwYXR0ZXJuOiAnZW9TaG9ydERhdGUnfSk7XG4gICAgbGV0IHNob3J0VGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHt2YWx1ZTogcGFyYW1zLmRhdGEucmVjZWl2ZWQsIHBhdHRlcm46ICdlb1Nob3J0VGltZSd9KTtcbiAgICBsZXQgZHVldGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHt2YWx1ZTogcGFyYW1zLmRhdGEuZHVldGltZX0pO1xuICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSBwYXJhbXMuZGF0YS5hY2NlcHRlZCA/ICd0aXRsZScgOiAndGl0bGUtYm9sZCc7XG5cbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0ke3BhcmFtcy5kYXRhLmZvbGRlciA/ICcgZm9sZGVyJyA6ICcnfVwiIHVuc2VsZWN0YWJsZT5cbiAgICAgICAgICAgICAgJHtpY29ufVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb250ZW50Jz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPScke3RpdGxlQ2xhc3N9Jz4ke3BhcmFtcy5kYXRhLnRpdGxlIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2Rlc2NyaXB0aW9uJz4ke3BhcmFtcy5kYXRhLmRlc2NyaXB0aW9uIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J25vdGVzJHtwYXJhbXMuZGF0YS5pc092ZXJkdWUoKSA/ICcgcGFzdER1ZScgOiAnJ30nPlxuICAgICAgICAgICAgICAgICAgJHtwYXJhbXMuZGF0YS5kdWV0aW1lID8gJzxzcGFuIGNsYXNzPVwicGVyaW9kXCI+JyArIGR1ZXRpbWUgKyAnPC9zcGFuPicgOiAnJ31cbiAgICAgICAgICAgICAgICAgICR7cGFyYW1zLmRhdGEuaXNkZXB1dHkgPyAnPHNwYW4+JyArIHBhcmFtcy5jb250ZXh0LnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5pdGVtLm5vdGUuYWJzZW5jZScpICsgJzwvc3Bhbj4nIDogJyd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+JHtzaG9ydERhdGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVcIj4ke3Nob3J0VGltZX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XG4gICAgdGhpcy5pbmJveFNlcnZpY2VcbiAgICAgIC5pbmJveEl0ZW1zR3JpZERhdGEkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IEluYm94SXRlbVtdKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnVwZGF0ZUdyaWQodGhpcy5ncmlkRGF0YSk7XG4gICAgICAgIHRoaXMuZW9HcmlkPy5hcGkucmVkcmF3Um93cygpO1xuICAgICAgICBjb25zdCBsYXN0SW5ib3hJdGVtSUQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5TGFzdEl0ZW1JRCk7XG4gICAgICAgIGlmIChsYXN0SW5ib3hJdGVtSUQgJiYgdGhpcy5ncmlkRGF0YS5maW5kKGkgPT4gaS5pZCA9PT0gbGFzdEluYm94SXRlbUlEKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3QgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZW9HcmlkLnNlbGVjdFJvdyhsYXN0SW5ib3hJdGVtSUQpLCA1MDApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5JTkJPWF9JVEVNX0xPQ0tFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RJbmJveEl0ZW1JRCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlMYXN0SXRlbUlEKTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5maW5kKGkgPT4gaS5pZCA9PT0gbGFzdEluYm94SXRlbUlEKS5hY2NlcHRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZW9HcmlkLmFwaS5yZWRyYXdSb3dzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5JTkJPWF9JVEVNX1VOTE9DS0VEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEluYm94SXRlbUlEID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleUxhc3RJdGVtSUQpO1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZpbmQoaSA9PiBpLmlkID09PSBsYXN0SW5ib3hJdGVtSUQpLmFjY2VwdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW9HcmlkLmFwaS5yZWRyYXdSb3dzKCk7XG4gICAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIG9uRmluaXNoJCBvYnNlcnZhYmxlIG9mIHRoZSBhY3Rpb25TZXJ2aWNlLlxuICAgICAqIFdoZW4gdGhlIG9ic2VydmFibGUgZW1pdHMgYSB2YWx1ZSwgdGhlIHJlZnJlc2hHcmlkIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLm9uRmluaXNoJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAvLyBDbGVhcnMgYW55IGFjdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhpcyBjb21wb25lbnQuXG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLmNsZWFyQ29tcG9uZW50U3BlY2lmaWNBY3Rpb25zKCk7XG4gIH1cblxuXG4gIGhhc0NoYW5nZWQob1YpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb1Y/Lm1vZGVsRkNOICE9PSBudWxsICYmIG9WLm1vZGVsRkNOPy5tb2RlbEZDTiAhPT0gbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFNldHMgYW5kIGRpc3BsYXlzIGNvbXBvbmVudC1zcGVjaWZpYyBhY3Rpb25zLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIGFycmF5IG9mIGFjdGlvbnMsIHNldHMgdGhlbSBhcyBjb21wb25lbnQtc3BlY2lmaWMgYWN0aW9uc1xuICAgKiB1c2luZyB0aGUgYWN0aW9uU2VydmljZSwgYW5kIHRoZW4gZGlzcGxheXMgdGhlc2UgYWN0aW9ucyBvbiB0aGUgcGFnZS5cbiAgICovXG4gIHNob3dBY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogbmV3IFJldHVyblRhc2tBY3Rpb25Db21wb25lbnQodGhpcy50cmFuc2xhdGUpLFxuICAgICAgfVxuICAgIF07XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNldENvbXBvbmVudFNwZWNpZmljQWN0aW9ucyhhY3Rpb25zKTtcbiAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMoW10sICdDT01QT05FTlRfU1BFQ0lGSUNfQUNUSU9OUycpO1xuICB9XG5cbn1cbiIsIjx5dmMtc3BsaXQtdmlldyBbbGF5b3V0U2V0dGluZ3NJRF09XCInaW5ib3guc3RhdGUnXCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiPlxuICA8IS0tIGxpc3QgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiMzBcIj5cbiAgICA8ZW8tbGlzdC1jb250YWluZXIgI2VvTGlzdCBbYXBwbHlTZWxlY3Rpb25dPVwie291dDogaW5ib3hTZWxlY3Rpb25JZH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIj5cblxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfaW5ib3guc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiIHRyYW5zbGF0ZT5lby5pbmJveC5saXN0LnRpdGxlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiIFtuZ0NsYXNzXT1cIntpbmJveENoYW5nZWQ6IGluYm94Q2hhbmdlZH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2hHcmlkKClcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuXG4gICAgICAgICAgPGVvLW92ZXJsYXkgI29GaWx0ZXIgY2xhc3M9XCJvdmVybGF5LWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsdGVyLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLmxpc3QuZmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJoYXNDaGFuZ2VkKGZpbHRlckZvcm0/LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG9uVG9nZ2xlKT1cIm9uRmlsdGVyT3ZlcmxheVRvZ2dsZSgkZXZlbnQpXCI+XG5cbiAgICAgICAgICAgIDxlby1jdXN0b20tZmlsdGVyICNjRmlsdGVyIChjaGFuZ2UpPVwiY0ZpbHRlci51cGRhdGVHcmlkKGVvTGlzdC5lb0dyaWRTdWJqZWN0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyRm9ybV09XCJmaWx0ZXJGb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlckFjdGl2ZV09XCJvRmlsdGVyLmFjdGl2ZSB8fCBoYXNDaGFuZ2VkKGZpbHRlckZvcm0/LnZhbHVlKVwiPlxuXG4gICAgICAgICAgICAgIDxlby10ZXh0LWZpbHRlciBbdGl0bGVdPVwiJ2VvLmluYm94LmZpbHRlci50aXRsZScgfCB0cmFuc2xhdGVcIiBbZmlsdGVyUGFyYW1zXT1cImRlZmF1bHRGaWx0ZXJQYXJhbXNcIlxuICAgICAgICAgICAgICAgIFtpZF09XCInaW5ib3gudGV4dCdcIiBbbWF0Y2hGaWVsZHNdPVwiWyd0aXRsZScsJ2Rlc2NyaXB0aW9uJywnaWQnXVwiIFtlbmFibGVTYXZlXT1cInRydWVcIj48L2VvLXRleHQtZmlsdGVyPlxuICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBjbGFzcz1cInR5cGUtZmlsdGVyc1wiIFtvcGVyYXRvcl09XCInT1InXCIgW2lkXT1cIidpbmJveC50eXBlJ1wiIFtmaWx0ZXJQYXJhbXNdPVwiZGVmYXVsdEZpbHRlclBhcmFtc1wiIFtvcHRpb25zXT1cInR5cGVGaWx0ZXJGaWVsZHNcIj48L2VvLXNldC1maWx0ZXI+XG4gICAgICAgICAgICAgIDxlby1zZXQtZmlsdGVyIGNsYXNzPVwiaW5ib3gtZmlsdGVyc1wiIFtvcGVyYXRvcl09XCInQU5EJ1wiIFtpZF09XCInaW5ib3guc2V0J1wiIFtmaWx0ZXJQYXJhbXNdPVwiZGVmYXVsdEZpbHRlclBhcmFtc1wiIFtvcHRpb25zXT1cImluYm94RmlsdGVyRmllbGRzXCI+PC9lby1zZXQtZmlsdGVyPlxuXG4gICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICAgICAgICAgIEBpZiAocHJvY2Vzc01vZGVsc0xpc3RPYmplY3QuZW50cmllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIDxlby1mb3JtLWlucHV0IFtsYWJlbF09XCIoJ2VvLnN0YXRlLnByb2Nlc3MuZmlsdGVyLmxhYmVscy5tb2RlbCcgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxlby1keW5hbWljLWxpc3QgZm9ybUNvbnRyb2xOYW1lPVwibW9kZWxGQ05cIiBbcGlja2VyVGl0bGVdPVwiJ2VvLnN0YXRlLnByb2Nlc3MuZmlsdGVyLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFtsaXN0T2JqZWN0XT1cInByb2Nlc3NNb2RlbHNMaXN0T2JqZWN0XCI+PC9lby1keW5hbWljLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8L2VvLWZvcm0taW5wdXQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICAgIDwvZW8tY3VzdG9tLWZpbHRlcj5cbiAgICAgICAgICA8L2VvLW92ZXJsYXk+XG5cbiAgICAgICAgICA8ZW8tb3ZlcmxheSAjb1NvcnQgY2xhc3M9XCJvdmVybGF5LXNvcnRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zb3J0LnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ubGlzdC5zb3J0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPGVvLWN1c3RvbS1zb3J0ICNjU29ydCBbaWRdPVwiJ2luYm94LnNvcnQnXCIgKGNoYW5nZSk9XCJjU29ydC51cGRhdGVHcmlkKGVvTGlzdC5lb0dyaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAoYWN0aXZlKT1cIm9Tb3J0Lm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCIgW3NvcnRGaWVsZHNdPVwic29ydEZpZWxkc1wiPjwvZW8tY3VzdG9tLXNvcnQ+XG4gICAgICAgICAgPC9lby1vdmVybGF5PlxuXG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYWN0aW9ucy1idXR0b25cIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiIFtpY29uVGl0bGVdPVwiJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbW9yZS5zdmcnXCI+PC9lby1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgICA8ZW8tZ3JpZCAjZW9HcmlkICpuZ0lmPVwiZ3JpZE9wdGlvbnM/LnJvd0RhdGFcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiBbZnVsbFdpZHRoXT1cInRydWVcIiBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0Zvb3Rlcl09XCJ0cnVlXCIgW3NlbGVjdEZpcnN0XT1cInNlbGVjdEZpcnN0XCIgW29wdGlvbnNdPVwie2ZpbHRlckFjdGl2ZTogb0ZpbHRlci5hY3RpdmV9XCJcbiAgICAgICAgICAoZW9HcmlkQ291bnRDaGFuZ2VkKT1cImVvTGlzdC5vbkNvdW50Q2hhbmdlZCgkZXZlbnQpO29uQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChlb0dyaWRTZWxlY3Rpb25DaGFuZ2VkKT1cImVvTGlzdC5vblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVvR3JpZEZvY3VzQ2hhbmdlZCk9XCJlb0xpc3Qub25Gb2N1c0NoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgIDxlby10b3RhbC1jb3VudCBbZ3JpZENvdW50XT1cImVvTGlzdC5ncmlkQ291bnRcIiBbb3V0c2lkZUdyaWRdPVwiZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93XCI+PC9lby10b3RhbC1jb3VudD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgICAgICAgPGVvLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgICAgICAgW2VtcHR5U3RhdGVdPVwie2ljb246ICdpY19pbmJveC5zdmcnLCB0ZXh0OiBvRmlsdGVyLmFjdGl2ZSA/ICdlby5uby5maWx0ZXIucmVzdWx0JyA6ICdlby5pbmJveC5saXN0LmVtcHR5J31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICAgICAgICA8ZW8tcmVzZXQtZmlsdGVyIFtpc0ZpbHRlckFjdGl2ZV09XCJvRmlsdGVyLmFjdGl2ZSB8fCBoYXNDaGFuZ2VkKGZpbHRlckZvcm0/LnZhbHVlKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjRmlsdGVyLnJlc2V0RmlsdGVyKCk7Y1NvcnQucmVzZXQoKTtyZWZyZXNoR3JpZCgpXCI+PC9lby1yZXNldC1maWx0ZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9lby1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgPC9lby1saXN0LWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBpbmJveCBkZXRhaWxzIC0tPlxuICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjMwXCI+XG4gICAgPGVvLWluYm94LWRldGFpbHMgW2FwcGx5U2VsZWN0aW9uXT1cIntpbjogaW5ib3hTZWxlY3Rpb25JZCwgb3V0OiBpbmJveERtc09iamVjdFNlbGVjdGlvbklkfVwiXG4gICAgICBbZW1wdHlTdGF0ZV09XCJlbXB0eVN0YXRlXCIgW3BsdWdpbnNdPVwiJ2luYm94LWRldGFpbHMtdGFiLmluYm94JyB8IHBsdWdpbnNcIj5cbiAgICA8L2VvLWluYm94LWRldGFpbHM+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gb2JqZWN0IGRldGFpbHMgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNDBcIj5cbiAgICA8ZW8tb2JqZWN0LWRldGFpbHMgW2FwcGx5U2VsZWN0aW9uXT1cIntpbjogaW5ib3hEbXNPYmplY3RTZWxlY3Rpb25JZH1cIiBbY2FjaGVMYXlvdXRdPVwiJ2luYm94LnN0YXRlJ1wiXG4gICAgW3BsdWdpbnNdPVwiJ29iamVjdC1kZXRhaWxzLXRhYi5pbmJveCcgfCBwbHVnaW5zXCI+XG4gICAgPC9lby1vYmplY3QtZGV0YWlscz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwveXZjLXNwbGl0LXZpZXc+XG4iXX0=
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBR0wsVUFBVSxFQUVWLFNBQVMsRUFLVCxLQUFLLEVBQ04sTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5RUFBeUUsQ0FBQztBQUc1RyxPQUFPLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sNkVBQTZFLENBQUM7QUFHdEgsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWxCLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBcUQ5QixZQUFtQixTQUEyQixFQUNyQyxTQUEyQixFQUMxQixZQUE4QixFQUMvQixZQUEwQixFQUN6QixjQUFxQyxFQUNyQyxLQUF3QixFQUN6QixVQUFzQixFQUNyQixFQUFzQixFQUN0QixPQUF1QixFQUN2QixZQUEwQixFQUMxQixLQUFxQixFQUNyQixjQUFtQyxFQUNuQyxhQUE0QjtRQVpuQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUNyQyxj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YUFBYSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUdELFVBQVUsQ0FBQyxFQUFFO1FBQ1gsT0FBTyxFQUFFLEVBQUUsUUFBUSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsS0FBSyxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0gsV0FBVztRQUNULE1BQU0sT0FBTyxHQUFHO1lBQ2Q7Z0JBQ0UsTUFBTSxFQUFFLElBQUkseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN0RDtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBNVpVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHdKQ3JDaEMsaWdLQTBGQTs7QURyRGEsbUJBQW1CO0lBTi9CLFlBQVksRUFBRTtHQU1GLG1CQUFtQixDQThaL0I7OzJGQTlaWSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCOytiQXNETCxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCYWNrZW5kU2VydmljZSxcbiAgQnBtU2VydmljZSxcbiAgRW5haW9FdmVudCxcbiAgRXZlbnRTZXJ2aWNlLFxuICBJbmJveEl0ZW0sXG4gIEluYm94U2VydmljZSxcbiAgSW5ib3hTdGF0ZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXRpbHNcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7RW1wdHlTdGF0ZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7RW1wdHlTdGF0ZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS90aXRsZS9wYWdlLXRpdGxlLnNlcnZpY2UnO1xuaW1wb3J0IHtDdXN0b21Tb3J0Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvZ3JpZC9leHRlbnNpb25zL2N1c3RvbS1zb3J0L2N1c3RvbS1zb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQge0lTZXRGaWx0ZXJ9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvZmlsdGVyL3NldEZpbHRlcnMvc2V0LWZpbHRlcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHtJbmJveFR5cGVzLCBJbmJveFR5cGVzRmlsdGVyfSBmcm9tICcuL2luYm94LnR5cGVzLmVudW0nO1xuaW1wb3J0IHtSZXR1cm5UYXNrQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3JldHVybi10YXNrLWFjdGlvbi9yZXR1cm4tdGFzay1hY3Rpb24nO1xuaW1wb3J0IHtBY3Rpb25TZXJ2aWNlLCBHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcyc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8taW5ib3gtc3RhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5ib3gtc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmJveC1zdGF0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluYm94U3RhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgUGVuZGluZ0NoYW5nZXNDb21wb25lbnQge1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgc29ydEZpZWxkczogQ29sRGVmW107XG4gIGluYm94RmlsdGVyRmllbGRzOiBJU2V0RmlsdGVyW10gPSBbXTtcbiAgdHlwZUZpbHRlckZpZWxkczogSVNldEZpbHRlcltdID0gW107XG4gIGluYm94U2VsZWN0aW9uSWQgPSAnaW5ib3gnO1xuICBpbmJveERtc09iamVjdFNlbGVjdGlvbklkID0gJ2luYm94X2Rtcyc7XG4gIGZpbHRlckNhY2hlS2V5ID0gXCJlby5pbmJveC5saXN0LmZpbHRlclwiO1xuICBpbmJveFNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZTtcbiAgc2VsZWN0Rmlyc3QgPSB0cnVlO1xuICBmaWx0ZXJGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBlbXB0eVN0YXRlMTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuICBlbXB0eVN0YXRlMjogRW1wdHlTdGF0ZSA9IHtpY29uOiAnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJyd9O1xuXG4gIHByb2Nlc3NNb2RlbHNMaXN0T2JqZWN0ID0ge1xuICAgIGVudHJpZXM6IFtdLFxuICAgIGNvbmZpZzoge1xuICAgICAgdmFsdWVGaWVsZDogJ25hbWUnLFxuICAgICAgdGl0bGU6ICd0aXRsZScsXG4gICAgICBzdWJFbnRyaWVzRmllbGQ6ICdtb2RlbHMnXG4gICAgfVxuICB9XG5cbiAgaWRNYXRjaCA9IHRydWU7XG4gIGdyaWREYXRhO1xuICBkZWZhdWx0RmlsdGVyUGFyYW1zOiBhbnkgPSB7fTtcbiAgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG4gIGluYm94Q2hhbmdlZCA9IGZhbHNlO1xuICBzdG9yYWdlS2V5TGFzdEl0ZW1JRCA9ICdlby5pbmJveC5sYXN0SXRlbUlEJztcblxuICAvLyBkZWZpbmUgYSBHbG9iYWxTaG9ydGN1dENvbXBvbmVudCBmb3IgdGhlIGluYm94IHN0YXRlXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5pbmJveC1zdGF0ZScsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94Lmxpc3QudGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLmluYm94Lmxpc3QudGl0bGUnLFxuICAgIGZvY3VzZWQ6IHRydWUsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycpLFxuICAgICAgbmFtZUtleTogJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycsXG4gICAgICBzaG9ydGN1dDogJ1QnLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0FjdGlvbnMoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcblxuICBAVmlld0NoaWxkKCdlb0dyaWQnKSBlb0dyaWQ6IEdyaWRDb21wb25lbnQ7XG4gIHN0b3JhZ2VGaWx0ZXJWYWx1ZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwdWJsaWMgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wdHk6IEVtcHR5U3RhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBicG1TZXJ2aWNlOiBCcG1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRCYXNlVGl0bGUodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3gubGlzdC50aXRsZScpKTtcbiAgICAvL3NlY29uZGFyeSBzZWxlY3Rpb24gaW5zdGFuY2UgZm9yIGluYm94IGl0ZW1zXG4gICAgdGhpcy5pbmJveFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmNyZWF0ZU5ldyh0aGlzLmluYm94U2VsZWN0aW9uSWQpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmNyZWF0ZU5ldyh0aGlzLmluYm94RG1zT2JqZWN0U2VsZWN0aW9uSWQpO1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVyUGFyYW1zID0ge2NvbnRleHQ6IHtkZWZhdWx0VmFsdWU6IHBhcmFtcy5pZH19O1xuICAgICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBtb2RlbEZDTjogbnVsbCxcbiAgICB9KTtcbiAgICB0aGlzLmJwbVNlcnZpY2UuZmV0Y2hQcm9jZXNzTW9kZWxzKCkuc3Vic2NyaWJlKHByb2Nlc3NNb2RlbHMgPT4ge1xuICAgICAgbGV0IG1vZGVscyA9IFtdO1xuICAgICAgcHJvY2Vzc01vZGVscy5mb3JFYWNoKChtb2RlbDogYW55KSA9PiB7XG4gICAgICAgIGlmIChtb2RlbC5tb2RlbHMpIHtcbiAgICAgICAgICBtb2RlbC5tb2RlbHMuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgIG1vZGVscy5wdXNoKG0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RlbC5wcm9qZWN0cykge1xuICAgICAgICAgIG1vZGVsLnByb2plY3RzLmZvckVhY2gocHJvamVjdCA9PiB7XG4gICAgICAgICAgICBpZiAocHJvamVjdC5tb2RlbHMpIHtcbiAgICAgICAgICAgICAgcHJvamVjdC5tb2RlbHMuZm9yRWFjaChtID0+IHtcbiAgICAgICAgICAgICAgICBtb2RlbHMucHVzaChtKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jZXNzTW9kZWxzTGlzdE9iamVjdC5lbnRyaWVzID0gbW9kZWxzO1xuICAgICAgdGhpcy5wcm9jZXNzTW9kZWxzTGlzdE9iamVjdC5lbnRyaWVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygndGl0bGUnKSk7XG4gICAgICB0aGlzLmdldFN0b3JhZ2VDYWNoZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRNb2RlbChlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaW5ib3hTZXJ2aWNlLmluYm94U3RhdGUkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlOiBJbmJveFN0YXRlKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmVvR3JpZCkge1xuICAgICAgICAgIC8vIHRvZG86IHRlbXBvcmFyeSBmaXggdW50aWwgc3RhdHVzIHNlcnZpY2UgdXBkYXRlXG4gICAgICAgICAgLy8gdGhpcy5pbmJveENoYW5nZWQgPSB0aGlzLmVvR3JpZC5jb250ZXh0Q291bnQgIT09IHN0YXRlLnRvdGFsbWVzc2FnZXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZE1vZGVsKGU6IGFueSkge1xuICAgIGlmIChlLm1vZGVsRkNOICE9PSBudWxsICYmIGUubW9kZWxGQ04/Lm1vZGVsRkNOICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy5maWx0ZXJDYWNoZUtleSwgdGhpcy5maWx0ZXJGb3JtLmdldCgnbW9kZWxGQ04nKS52YWx1ZSk7XG4gICAgICB0aGlzLm9uUGFnZUNoYW5nZWQoKTtcbiAgICB9IGVsc2UgaWYgKGUubW9kZWxGQ04gPT09IG51bGwpIHtcbiAgICAgIHRoaXMudXBkYXRlR3JpZCh0aGlzLmdyaWREYXRhKTtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLmZpbHRlckNhY2hlS2V5LCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdG9yYWdlQ2FjaGUoKSB7XG4gICAgdGhpcy5zdG9yYWdlRmlsdGVyVmFsdWUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5maWx0ZXJDYWNoZUtleSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdG9yYWdlRmlsdGVyVmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbml0RmlsdGVyKHRoaXMuc3RvcmFnZUZpbHRlclZhbHVlKTtcbiAgICAgIH1cbiAgICB9LCAzMDApO1xuICB9XG5cblxuICBwcml2YXRlIGluaXRGaWx0ZXIoc3RvcmFnZUZpbHRlclZhbHVlKSB7XG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgbW9kZWxGQ046IHN0b3JhZ2VGaWx0ZXJWYWx1ZSxcbiAgICB9KVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmZldGNoUm93RGF0YSh7XG4gICAgICBzdWNjZXNzQ2FsbGJhY2s6IChyb3dzKSA9PiB7XG4gICAgICAgIHRoaXMuZW9HcmlkLmFwaT8uc2V0R3JpZE9wdGlvbjxhbnk+KCdyb3dEYXRhJywgcm93cyk7XG4gICAgICAgIHRoaXMuZW9HcmlkLnNlbGVjdFJvdygwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvY2Vzc2VzKCkge1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKHRoaXMuYWRkRmlsdGVyUGFyYW1zVG9VcmwoJycpLCB7fSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24odXJsLCB0aGlzLmJhY2tlbmQuZ2V0SW5ib3hCYXNlKCkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmVzcG9uc2UucHJvY2Vzc2VzID0gcmVzcG9uc2UuY29udGVudC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEluYm94SXRlbShpdGVtKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRGaWx0ZXJQYXJhbXNUb1VybCh1cmwpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmZpbHRlckZvcm0udmFsdWUubW9kZWxGQ04pIHtcbiAgICAgIHVybCArPSAnL2dldD9zb3VyY2VHcm91cElkPScgKyB0aGlzLmdldE1vZGVsSWRGcm9tTmFtZSh0aGlzLmZpbHRlckZvcm0udmFsdWUubW9kZWxGQ04pICsgJyZwYWdlPTAmc2l6ZT0xMDAwJztcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSb3dEYXRhKHBhcmFtcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRQcm9jZXNzZXMoKS5zdWJzY3JpYmUoKHByb2Nlc3NlcykgPT4ge1xuICAgICAgICBpZiAocGFyYW1zLnN0YXJ0Um93ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lbXB0eVN0YXRlMSA9IHRoaXMuZW1wdHkuZ2V0RW1wdHlTdGF0ZShwcm9jZXNzZXMuY29udGVudCA/IHByb2Nlc3Nlcy5jb250ZW50Lmxlbmd0aCA6IC0xLCB1bmRlZmluZWQsICdpY19uby1maWxlLnN2ZycpO1xuICAgICAgICAgIHRoaXMuZW1wdHlTdGF0ZTIgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUocHJvY2Vzc2VzLmNvbnRlbnQgPyBwcm9jZXNzZXMuY29udGVudC5sZW5ndGggOiAtMSwgdW5kZWZpbmVkLCAnaWNfbm8tZmlsZS5zdmcnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVvR3JpZC5ncmlkT3B0aW9ucy5jb250ZXh0LnJvd0NvdW50ID0gcHJvY2Vzc2VzLnRvdGFsRWxlbWVudHM7XG4gICAgICAgIHRoaXMuZW9HcmlkLmdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSBwcm9jZXNzZXMudG90YWxFbGVtZW50cztcbiAgICAgICAgcGFyYW1zLnN1Y2Nlc3NDYWxsYmFjayhwcm9jZXNzZXMucHJvY2Vzc2VzLCBwcm9jZXNzZXMudG90YWxFbGVtZW50cyk7XG4gICAgICB9KTtcbiAgICB9LCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGVsSWRGcm9tTmFtZShtb2RlbE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGlkID0gJyc7XG4gICAgdGhpcy5wcm9jZXNzTW9kZWxzTGlzdE9iamVjdC5lbnRyaWVzLmZvckVhY2gobW9kZWwgPT4ge1xuICAgICAgaWYgKG1vZGVsLm5hbWUgPT09IG1vZGVsTmFtZSkge1xuICAgICAgICBpZCA9IG1vZGVsLmlkO1xuICAgICAgfSBlbHNlIGlmIChtb2RlbC5tb2RlbHMpIHtcbiAgICAgICAgbW9kZWwubW9kZWxzLmZvckVhY2goc3VibW9kZWwgPT4ge1xuICAgICAgICAgIGlmIChzdWJtb2RlbC5uYW1lID09PSBtb2RlbE5hbWUpIHtcbiAgICAgICAgICAgIGlkID0gc3VibW9kZWwuaWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBvbkNvdW50Q2hhbmdlZChldnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmRlZmF1bHRGaWx0ZXJQYXJhbXMuY29udGV4dCAmJiB0aGlzLmRlZmF1bHRGaWx0ZXJQYXJhbXMuY29udGV4dC5kZWZhdWx0VmFsdWUpIHtcbiAgICAgIGlmIChldnQucm93Q291bnQgPT09IDApIHtcbiAgICAgICAgdGhpcy5pZE1hdGNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgICB0aGlzLmluYm94U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmVvR3JpZC5ncmlkT3B0aW9ucy5jb250ZXh0LmNvdW50ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlclBhcmFtcy5jb250ZXh0LmRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhc1BlbmRpbmdDaGFuZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKCk7XG4gIH1cblxuICByZWZyZXNoR3JpZCgpIHtcbiAgICB0aGlzLmluYm94Q2hhbmdlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5ib3hTZWxlY3Rpb24uZGlzYWJsZShmYWxzZSk7XG4gICAgdGhpcy5pbmJveFNlcnZpY2UuZ2V0SXRlbXMoKS5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5nZXQoJ21vZGVsRkNOJykudmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE1vZGVsKHRoaXMuZmlsdGVyRm9ybS5nZXQoJ21vZGVsRkNOJykudmFsdWUpO1xuICAgICAgfVxuICAgIH0sIDIwMCk7XG4gIH1cblxuICBpdGVtRmlsdGVyRmllbGRzKG5vZGUsIGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5vZGUuZGF0YVtJbmJveFR5cGVzRmlsdGVyW2l0ZW1dXTtcbiAgICBjb25zdCBhY2NlcHRlZEFuZFVuYWNjZXB0ZWRDb21iaW5lZCA9IHRoaXMuaW5ib3hGaWx0ZXJGaWVsZHMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmlkID09PSAnYWNjZXB0ZWRUYXNrcycpLnZhbHVlXG4gICAgICAmJiB0aGlzLmluYm94RmlsdGVyRmllbGRzLmZpbmQoZmlsdGVyID0+IGZpbHRlci5pZCA9PT0gJ3VuYWNjZXB0ZWRUYXNrcycpLnZhbHVlO1xuICAgIHN3aXRjaCAoSW5ib3hUeXBlc0ZpbHRlcltpdGVtXSkge1xuICAgICAgY2FzZSBJbmJveFR5cGVzRmlsdGVyLm92ZXJkdWU6XG4gICAgICAgIHJldHVybiBub2RlLmRhdGEuaXNPdmVyZHVlKCk7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIuYWJzZW50OlxuICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICAgIGNhc2UgSW5ib3hUeXBlc0ZpbHRlci5hY2NlcHRlZFRhc2tzOlxuICAgICAgICByZXR1cm4gYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPyBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgOiBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgJiYgISFub2RlLmRhdGEuYWNjZXB0ZWQ7XG4gICAgICBjYXNlIEluYm94VHlwZXNGaWx0ZXIudW5hY2NlcHRlZFRhc2tzOlxuICAgICAgICByZXR1cm4gYWNjZXB0ZWRBbmRVbmFjY2VwdGVkQ29tYmluZWQgPyBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgOiBub2RlLmRhdGEudHlwZSA9PT0gJ0JQTScgJiYgIW5vZGUuZGF0YS5hY2NlcHRlZDtcbiAgICB9XG4gIH1cblxuICBmaWVsZEZpbHRlcnMoKSB7XG4gICAgdGhpcy50eXBlRmlsdGVyRmllbGRzID0gT2JqZWN0LmtleXMoSW5ib3hUeXBlcykubWFwKGl0ZW0gPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5pbmJveC4ke2l0ZW19YCksXG4gICAgICBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudHlwZSA9PT0gaXRlbSxcbiAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgaWQ6IGl0ZW1cbiAgICB9KSk7XG5cbiAgICB0aGlzLmluYm94RmlsdGVyRmllbGRzID0gT2JqZWN0LmtleXMoSW5ib3hUeXBlc0ZpbHRlcikubWFwKGl0ZW0gPT4gKHtcbiAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGBlby5pbmJveC5maWx0ZXIuJHtpdGVtfWApLFxuICAgICAgZmlsdGVyOiAobm9kZSkgPT4gdGhpcy5pdGVtRmlsdGVyRmllbGRzKG5vZGUsIGl0ZW0pLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgaWQ6IGl0ZW1cbiAgICB9KSk7XG4gIH1cblxuXG4gIHVwZGF0ZUdyaWQoZGF0YTogSW5ib3hJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoZGF0YSA/IGRhdGEubGVuZ3RoIDogLTEsIHVuZGVmaW5lZCwgJ2ljX25vLWZpbGUuc3ZnJyk7XG4gICAgaWYgKHRoaXMuZW9HcmlkICYmIHRoaXMuZW9HcmlkLmlzUmVhZHkpIHtcbiAgICAgIHJldHVybiB0aGlzLmVvR3JpZC51cGRhdGVSb3dEYXRhKGRhdGEpO1xuICAgIH1cblxuICAgIHRoaXMuZmllbGRGaWx0ZXJzKCk7XG4gICAgbGV0IGNvbERlZnM6IENvbERlZltdID0gW3tcbiAgICAgIGhlYWRlck5hbWU6ICcnLFxuICAgICAgZmllbGQ6ICdfX2N1c3RvbScsXG4gICAgICBjZWxsUmVuZGVyZXI6IHRoaXMuY2VsbFJlbmRlcmVyLFxuICAgICAgZmlsdGVyOiBmYWxzZVxuICAgICAgLy8gY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBJbmJveFJlbmRlcmVyQ29tcG9uZW50XG4gICAgfV07XG5cbiAgICB0aGlzLnNvcnRGaWVsZHMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiAncmVjZWl2ZWQnLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5zb3J0LmRhdGUnKSwgc29ydDogbnVsbCxcbiAgICAgICAgdmFsdWVHZXR0ZXI6IChwKSA9PiAocC5kYXRhW3AuY29sRGVmLmZpZWxkXSB8fCAnJykubWF0Y2goL1xcK1xcZFxcZDpcXGRcXGQvKSA/IG5ldyBEYXRlKHAuZGF0YVtwLmNvbERlZi5maWVsZF0pLnRvSVNPU3RyaW5nKCkgOiBwLmRhdGFbcC5jb2xEZWYuZmllbGRdXG4gICAgICB9LFxuICAgICAge2ZpZWxkOiAndGl0bGUnLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5zb3J0LnRpdGxlJyksIHNvcnQ6IG51bGx9LFxuICAgICAge2ZpZWxkOiAnZGVzY3JpcHRpb24nLCBoZWFkZXJOYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5zb3J0LmRlc2NyaXB0aW9uJyksIHNvcnQ6IG51bGx9XG4gICAgXTtcblxuICAgIGxldCBzb3J0Q29sRGVmcyA9IEN1c3RvbVNvcnRDb21wb25lbnQuc29ydENvbERlZnModGhpcy5zb3J0RmllbGRzKTtcblxuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb250ZXh0OiB7Y291bnQ6IGRhdGEubGVuZ3RofSxcbiAgICAgIHJvd0RhdGE6IGRhdGEsXG4gICAgICBjb2x1bW5EZWZzOiBjb2xEZWZzLmNvbmNhdChzb3J0Q29sRGVmcyksXG4gICAgICByb3dCdWZmZXI6IDIwLFxuICAgICAgcm93SGVpZ2h0OiA4MCxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ3NpbmdsZSdcbiAgICB9O1xuICB9XG5cbiAgb25GaWx0ZXJPdmVybGF5VG9nZ2xlKG9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVvR3JpZC5hcGk/LnNldEdyaWRPcHRpb24oJ3N1cHByZXNzQ2VsbEZvY3VzJywgb3Blbik7XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICB0aGlzLmVvR3JpZC5zZWxlY3RSb3coMCk7XG4gICAgfVxuICB9XG5cbiAgY2VsbFJlbmRlcmVyKHBhcmFtcykge1xuICAgIGxldCBsYWJlbCA9ICcnO1xuICAgIGlmIChPYmplY3Qua2V5cyhJbmJveFR5cGVzKS5pbmNsdWRlcyhwYXJhbXMuZGF0YS50eXBlKSkge1xuICAgICAgbGFiZWwgPSBwYXJhbXMuY29udGV4dC50cmFuc2xhdGUuaW5zdGFudChgZW8uaW5ib3guJHtwYXJhbXMuZGF0YS50eXBlfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IGBhc3NldHMvX2RlZmF1bHQvc3ZnL2ljXyR7SW5ib3hUeXBlc1twYXJhbXMuZGF0YS50eXBlXX0uc3ZnYDtcblxuICAgIGxldCBpY29uID0gcGFyYW1zLmNvbnRleHQuY3IucmVuZGVyKCdpY29uJywgcGFyYW1zLCB7dmFsdWU6IHt1cmwsIGxhYmVsfX0pO1xuICAgIGxldCBzaG9ydERhdGUgPSBwYXJhbXMuY29udGV4dC5jci5yZW5kZXIoJ2RhdGVUaW1lJywgcGFyYW1zLCB7dmFsdWU6IHBhcmFtcy5kYXRhLnJlY2VpdmVkLCBwYXR0ZXJuOiAnZW9TaG9ydERhdGUnfSk7XG4gICAgbGV0IHNob3J0VGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHt2YWx1ZTogcGFyYW1zLmRhdGEucmVjZWl2ZWQsIHBhdHRlcm46ICdlb1Nob3J0VGltZSd9KTtcbiAgICBsZXQgZHVldGltZSA9IHBhcmFtcy5jb250ZXh0LmNyLnJlbmRlcignZGF0ZVRpbWUnLCBwYXJhbXMsIHt2YWx1ZTogcGFyYW1zLmRhdGEuZHVldGltZX0pO1xuICAgIGNvbnN0IHRpdGxlQ2xhc3MgPSBwYXJhbXMuZGF0YS5hY2NlcHRlZCA/ICd0aXRsZScgOiAndGl0bGUtYm9sZCc7XG5cbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW0ke3BhcmFtcy5kYXRhLmZvbGRlciA/ICcgZm9sZGVyJyA6ICcnfVwiIHVuc2VsZWN0YWJsZT5cbiAgICAgICAgICAgICAgJHtpY29ufVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjb250ZW50Jz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPScke3RpdGxlQ2xhc3N9Jz4ke3BhcmFtcy5kYXRhLnRpdGxlIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2Rlc2NyaXB0aW9uJz4ke3BhcmFtcy5kYXRhLmRlc2NyaXB0aW9uIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J25vdGVzJHtwYXJhbXMuZGF0YS5pc092ZXJkdWUoKSA/ICcgcGFzdER1ZScgOiAnJ30nPlxuICAgICAgICAgICAgICAgICAgJHtwYXJhbXMuZGF0YS5kdWV0aW1lID8gJzxzcGFuIGNsYXNzPVwicGVyaW9kXCI+JyArIGR1ZXRpbWUgKyAnPC9zcGFuPicgOiAnJ31cbiAgICAgICAgICAgICAgICAgICR7cGFyYW1zLmRhdGEuaXNkZXB1dHkgPyAnPHNwYW4+JyArIHBhcmFtcy5jb250ZXh0LnRyYW5zbGF0ZS5pbnN0YW50KCdlby5pbmJveC5pdGVtLm5vdGUuYWJzZW5jZScpICsgJzwvc3Bhbj4nIDogJyd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0YVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+JHtzaG9ydERhdGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVcIj4ke3Nob3J0VGltZX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlZnJlc2hHcmlkKCk7XG4gICAgdGhpcy5pbmJveFNlcnZpY2VcbiAgICAgIC5pbmJveEl0ZW1zR3JpZERhdGEkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IEluYm94SXRlbVtdKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnVwZGF0ZUdyaWQodGhpcy5ncmlkRGF0YSk7XG4gICAgICAgIHRoaXMuZW9HcmlkPy5hcGkucmVkcmF3Um93cygpO1xuICAgICAgICBjb25zdCBsYXN0SW5ib3hJdGVtSUQgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5TGFzdEl0ZW1JRCk7XG4gICAgICAgIGlmIChsYXN0SW5ib3hJdGVtSUQgJiYgdGhpcy5ncmlkRGF0YS5maW5kKGkgPT4gaS5pZCA9PT0gbGFzdEluYm94SXRlbUlEKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3QgPSBmYWxzZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZW9HcmlkLnNlbGVjdFJvdyhsYXN0SW5ib3hJdGVtSUQpLCA1MDApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5JTkJPWF9JVEVNX0xPQ0tFRClcbiAgICAgIC5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RJbmJveEl0ZW1JRCA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXlMYXN0SXRlbUlEKTtcbiAgICAgICAgdGhpcy5ncmlkRGF0YS5maW5kKGkgPT4gaS5pZCA9PT0gbGFzdEluYm94SXRlbUlEKS5hY2NlcHRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZW9HcmlkLmFwaS5yZWRyYXdSb3dzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXG4gICAgICAub24oRW5haW9FdmVudC5JTkJPWF9JVEVNX1VOTE9DS0VEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgbGFzdEluYm94SXRlbUlEID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleUxhc3RJdGVtSUQpO1xuICAgICAgICB0aGlzLmdyaWREYXRhLmZpbmQoaSA9PiBpLmlkID09PSBsYXN0SW5ib3hJdGVtSUQpLmFjY2VwdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW9HcmlkLmFwaS5yZWRyYXdSb3dzKCk7XG4gICAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZXMgdG8gdGhlIG9uRmluaXNoJCBvYnNlcnZhYmxlIG9mIHRoZSBhY3Rpb25TZXJ2aWNlLlxuICAgICAqIFdoZW4gdGhlIG9ic2VydmFibGUgZW1pdHMgYSB2YWx1ZSwgdGhlIHJlZnJlc2hHcmlkIG1ldGhvZCBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLm9uRmluaXNoJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAvLyBDbGVhcnMgYW55IGFjdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhpcyBjb21wb25lbnQuXG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLmNsZWFyQ29tcG9uZW50U3BlY2lmaWNBY3Rpb25zKCk7XG4gIH1cblxuXG4gIGhhc0NoYW5nZWQob1YpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb1Y/Lm1vZGVsRkNOICE9PSBudWxsICYmIG9WLm1vZGVsRkNOPy5tb2RlbEZDTiAhPT0gbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFNldHMgYW5kIGRpc3BsYXlzIGNvbXBvbmVudC1zcGVjaWZpYyBhY3Rpb25zLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIGFycmF5IG9mIGFjdGlvbnMsIHNldHMgdGhlbSBhcyBjb21wb25lbnQtc3BlY2lmaWMgYWN0aW9uc1xuICAgKiB1c2luZyB0aGUgYWN0aW9uU2VydmljZSwgYW5kIHRoZW4gZGlzcGxheXMgdGhlc2UgYWN0aW9ucyBvbiB0aGUgcGFnZS5cbiAgICovXG4gIHNob3dBY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogbmV3IFJldHVyblRhc2tBY3Rpb25Db21wb25lbnQodGhpcy50cmFuc2xhdGUpLFxuICAgICAgfVxuICAgIF07XG4gICAgdGhpcy5hY3Rpb25TZXJ2aWNlLnNldENvbXBvbmVudFNwZWNpZmljQWN0aW9ucyhhY3Rpb25zKTtcbiAgICB0aGlzLmFjdGlvblNlcnZpY2Uuc2hvd0FjdGlvbnMoW10sICdDT01QT05FTlRfU1BFQ0lGSUNfQUNUSU9OUycpO1xuICB9XG5cbn1cbiIsIjx5dmMtc3BsaXQtdmlldyBbbGF5b3V0U2V0dGluZ3NJRF09XCInaW5ib3guc3RhdGUnXCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiPlxuICA8IS0tIGxpc3QgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiMzBcIj5cbiAgICA8ZW8tbGlzdC1jb250YWluZXIgI2VvTGlzdCBbYXBwbHlTZWxlY3Rpb25dPVwie291dDogaW5ib3hTZWxlY3Rpb25JZH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIj5cblxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfaW5ib3guc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiIHRyYW5zbGF0ZT5lby5pbmJveC5saXN0LnRpdGxlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiByZWZyZXNoLWJ1dHRvblwiIFtuZ0NsYXNzXT1cIntpbmJveENoYW5nZWQ6IGluYm94Q2hhbmdlZH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2hHcmlkKClcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmxpc3QucmVmcmVzaCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuXG4gICAgICAgICAgPGVvLW92ZXJsYXkgI29GaWx0ZXIgY2xhc3M9XCJvdmVybGF5LWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsdGVyLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLmxpc3QuZmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJoYXNDaGFuZ2VkKGZpbHRlckZvcm0/LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG9uVG9nZ2xlKT1cIm9uRmlsdGVyT3ZlcmxheVRvZ2dsZSgkZXZlbnQpXCI+XG5cbiAgICAgICAgICAgIDxlby1jdXN0b20tZmlsdGVyICNjRmlsdGVyIChjaGFuZ2UpPVwiY0ZpbHRlci51cGRhdGVHcmlkKGVvTGlzdC5lb0dyaWRTdWJqZWN0LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyRm9ybV09XCJmaWx0ZXJGb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ZpbHRlckFjdGl2ZV09XCJvRmlsdGVyLmFjdGl2ZSB8fCBoYXNDaGFuZ2VkKGZpbHRlckZvcm0/LnZhbHVlKVwiPlxuXG4gICAgICAgICAgICAgIDxlby10ZXh0LWZpbHRlciBbdGl0bGVdPVwiJ2VvLmluYm94LmZpbHRlci50aXRsZScgfCB0cmFuc2xhdGVcIiBbZmlsdGVyUGFyYW1zXT1cImRlZmF1bHRGaWx0ZXJQYXJhbXNcIlxuICAgICAgICAgICAgICAgIFtpZF09XCInaW5ib3gudGV4dCdcIiBbbWF0Y2hGaWVsZHNdPVwiWyd0aXRsZScsJ2Rlc2NyaXB0aW9uJywnaWQnXVwiIFtlbmFibGVTYXZlXT1cInRydWVcIj48L2VvLXRleHQtZmlsdGVyPlxuICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBjbGFzcz1cInR5cGUtZmlsdGVyc1wiIFtvcGVyYXRvcl09XCInT1InXCIgW2lkXT1cIidpbmJveC50eXBlJ1wiIFtmaWx0ZXJQYXJhbXNdPVwiZGVmYXVsdEZpbHRlclBhcmFtc1wiIFtvcHRpb25zXT1cInR5cGVGaWx0ZXJGaWVsZHNcIj48L2VvLXNldC1maWx0ZXI+XG4gICAgICAgICAgICAgIDxlby1zZXQtZmlsdGVyIGNsYXNzPVwiaW5ib3gtZmlsdGVyc1wiIFtvcGVyYXRvcl09XCInQU5EJ1wiIFtpZF09XCInaW5ib3guc2V0J1wiIFtmaWx0ZXJQYXJhbXNdPVwiZGVmYXVsdEZpbHRlclBhcmFtc1wiIFtvcHRpb25zXT1cImluYm94RmlsdGVyRmllbGRzXCI+PC9lby1zZXQtZmlsdGVyPlxuXG4gICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICAgICAgICAgIEBpZiAocHJvY2Vzc01vZGVsc0xpc3RPYmplY3QuZW50cmllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIDxlby1mb3JtLWlucHV0IFtsYWJlbF09XCIoJ2VvLnN0YXRlLnByb2Nlc3MuZmlsdGVyLmxhYmVscy5tb2RlbCcgfCB0cmFuc2xhdGUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxlby1keW5hbWljLWxpc3QgZm9ybUNvbnRyb2xOYW1lPVwibW9kZWxGQ05cIiBbaXNGaWx0ZXJFbGVtZW50XT1cInRydWVcIiBbcGlja2VyVGl0bGVdPVwiJ2VvLnN0YXRlLnByb2Nlc3MuZmlsdGVyLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFtsaXN0T2JqZWN0XT1cInByb2Nlc3NNb2RlbHNMaXN0T2JqZWN0XCI+PC9lby1keW5hbWljLWxpc3Q+XG4gICAgICAgICAgICAgICAgICA8L2VvLWZvcm0taW5wdXQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Zvcm0+XG5cbiAgICAgICAgICAgIDwvZW8tY3VzdG9tLWZpbHRlcj5cbiAgICAgICAgICA8L2VvLW92ZXJsYXk+XG5cbiAgICAgICAgICA8ZW8tb3ZlcmxheSAjb1NvcnQgY2xhc3M9XCJvdmVybGF5LXNvcnRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zb3J0LnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ubGlzdC5zb3J0JyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPGVvLWN1c3RvbS1zb3J0ICNjU29ydCBbaWRdPVwiJ2luYm94LnNvcnQnXCIgKGNoYW5nZSk9XCJjU29ydC51cGRhdGVHcmlkKGVvTGlzdC5lb0dyaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAoYWN0aXZlKT1cIm9Tb3J0Lm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCIgW3NvcnRGaWVsZHNdPVwic29ydEZpZWxkc1wiPjwvZW8tY3VzdG9tLXNvcnQ+XG4gICAgICAgICAgPC9lby1vdmVybGF5PlxuXG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYWN0aW9ucy1idXR0b25cIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiIFtpY29uVGl0bGVdPVwiJ2VvLnNob3J0Y3V0cy5hY3Rpb24udGFzaycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbW9yZS5zdmcnXCI+PC9lby1pY29uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgICA8ZW8tZ3JpZCAjZW9HcmlkICpuZ0lmPVwiZ3JpZE9wdGlvbnM/LnJvd0RhdGFcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiBbZnVsbFdpZHRoXT1cInRydWVcIiBbc2hvd0hlYWRlcl09XCJ0cnVlXCJcbiAgICAgICAgICBbc2hvd0Zvb3Rlcl09XCJ0cnVlXCIgW3NlbGVjdEZpcnN0XT1cInNlbGVjdEZpcnN0XCIgW29wdGlvbnNdPVwie2ZpbHRlckFjdGl2ZTogb0ZpbHRlci5hY3RpdmV9XCJcbiAgICAgICAgICAoZW9HcmlkQ291bnRDaGFuZ2VkKT1cImVvTGlzdC5vbkNvdW50Q2hhbmdlZCgkZXZlbnQpO29uQ291bnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIChlb0dyaWRTZWxlY3Rpb25DaGFuZ2VkKT1cImVvTGlzdC5vblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGVvR3JpZEZvY3VzQ2hhbmdlZCk9XCJlb0xpc3Qub25Gb2N1c0NoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgIDxlby10b3RhbC1jb3VudCBbZ3JpZENvdW50XT1cImVvTGlzdC5ncmlkQ291bnRcIiBbb3V0c2lkZUdyaWRdPVwiZmFsc2VcIiBjbGFzcz1cImZsZXgtcm93XCI+PC9lby10b3RhbC1jb3VudD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgICAgICAgPGVvLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgICAgICAgW2VtcHR5U3RhdGVdPVwie2ljb246ICdpY19pbmJveC5zdmcnLCB0ZXh0OiBvRmlsdGVyLmFjdGl2ZSA/ICdlby5uby5maWx0ZXIucmVzdWx0JyA6ICdlby5pbmJveC5saXN0LmVtcHR5J31cIj48L2VvLWVycm9yLW1lc3NhZ2U+XG4gICAgICAgICAgICA8ZW8tcmVzZXQtZmlsdGVyIFtpc0ZpbHRlckFjdGl2ZV09XCJvRmlsdGVyLmFjdGl2ZSB8fCBoYXNDaGFuZ2VkKGZpbHRlckZvcm0/LnZhbHVlKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjRmlsdGVyLnJlc2V0RmlsdGVyKCk7Y1NvcnQucmVzZXQoKTtyZWZyZXNoR3JpZCgpXCI+PC9lby1yZXNldC1maWx0ZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9lby1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgPC9lby1saXN0LWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPCEtLSBpbmJveCBkZXRhaWxzIC0tPlxuICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjMwXCI+XG4gICAgPGVvLWluYm94LWRldGFpbHMgW2FwcGx5U2VsZWN0aW9uXT1cIntpbjogaW5ib3hTZWxlY3Rpb25JZCwgb3V0OiBpbmJveERtc09iamVjdFNlbGVjdGlvbklkfVwiXG4gICAgICBbZW1wdHlTdGF0ZV09XCJlbXB0eVN0YXRlXCIgW3BsdWdpbnNdPVwiJ2luYm94LWRldGFpbHMtdGFiLmluYm94JyB8IHBsdWdpbnNcIj5cbiAgICA8L2VvLWluYm94LWRldGFpbHM+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDwhLS0gb2JqZWN0IGRldGFpbHMgLS0+XG4gIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNDBcIj5cbiAgICA8ZW8tb2JqZWN0LWRldGFpbHMgW2FwcGx5U2VsZWN0aW9uXT1cIntpbjogaW5ib3hEbXNPYmplY3RTZWxlY3Rpb25JZH1cIiBbY2FjaGVMYXlvdXRdPVwiJ2luYm94LnN0YXRlJ1wiXG4gICAgW3BsdWdpbnNdPVwiJ29iamVjdC1kZXRhaWxzLXRhYi5pbmJveCcgfCBwbHVnaW5zXCI+XG4gICAgPC9lby1vYmplY3QtZGV0YWlscz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwveXZjLXNwbGl0LXZpZXc+XG4iXX0=