tango-app-ui-shared 3.7.42 → 3.7.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/modules/layout/audit-tab-access.mjs +55 -0
- package/esm2022/lib/modules/layout/header/header-banner/header-banner.component.mjs +15 -7
- package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +9 -17
- package/fesm2022/tango-app-ui-shared.mjs +72 -21
- package/fesm2022/tango-app-ui-shared.mjs.map +1 -1
- package/lib/modules/layout/audit-tab-access.d.ts +23 -0
- package/lib/modules/layout/header/header-banner/header-banner.component.d.ts +10 -1
- package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tango Trax › Audit tabs a user may open, from Manage Users › Tango Trax › Audit's tab rows
|
|
3
|
+
* (TangoTrax_Audit_<Tab>_isAdd / _isEdit; Add or Edit shows the tab). A Tango (internal) user sees every tab. A user
|
|
4
|
+
* saved before the tab rows existed has no tab keys and keeps every tab while Audit itself is on (the user API fills
|
|
5
|
+
* them in from Audit too). Same rule as the audit pages (tango-analyse-trax audit-v2-access.ts auditTabsOn).
|
|
6
|
+
*/
|
|
7
|
+
export const AUDIT_TAB_LINKS = [
|
|
8
|
+
{ key: 'Audit_ActionCenter', path: '/manage/trax/audit-v2/actioncenter', label: 'Action Center' },
|
|
9
|
+
{ key: 'Audit_Dashboard', path: '/manage/trax/audit-v2/dashboard', label: 'Dashboard' },
|
|
10
|
+
{ key: 'Audit_Flags', path: '/manage/trax/audit-v2/flags', label: 'Flags' },
|
|
11
|
+
{ key: 'Audit_Gallery', path: '/manage/trax/audit-v2/gallery', label: 'Gallery' },
|
|
12
|
+
{ key: 'Audit_Manage', path: '/manage/trax/audit-v2/manage', label: 'Manage' },
|
|
13
|
+
{ key: 'Audit_Reports', path: '/manage/trax/audit-v2/reports', label: 'Reports' }
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* Whether Tango Trax -> Audit (or Schedules) is shown. A Tango user or client superadmin always sees it. A client user sees it
|
|
17
|
+
* when its Add or Edit key is true (TangoTrax_<module>_isAdd / _isEdit, from Manage Users; the user API fills Audit /
|
|
18
|
+
* Schedules in from Checklist for users saved before those rows); without those keys the Checklist keys decide.
|
|
19
|
+
*/
|
|
20
|
+
export function traxModuleOn(p, module) {
|
|
21
|
+
if (!p) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (fullAuditAccess(p)) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
const add = p['TangoTrax_' + module + '_isAdd'];
|
|
28
|
+
const edit = p['TangoTrax_' + module + '_isEdit'];
|
|
29
|
+
if (add !== undefined || edit !== undefined) {
|
|
30
|
+
return !!add || !!edit;
|
|
31
|
+
}
|
|
32
|
+
return !!p.TangoTrax_checklist_isAdd || !!p.TangoTrax_checklist_isEdit;
|
|
33
|
+
}
|
|
34
|
+
/** The Audit tabs this user may open, in menu order; [] while permissions are loading or without Audit. */
|
|
35
|
+
export function auditTabsOn(p, auditOn) {
|
|
36
|
+
if (!p || !auditOn) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
if (fullAuditAccess(p)) {
|
|
40
|
+
return AUDIT_TAB_LINKS;
|
|
41
|
+
}
|
|
42
|
+
return AUDIT_TAB_LINKS.filter(t => {
|
|
43
|
+
const add = p['TangoTrax_' + t.key + '_isAdd'];
|
|
44
|
+
const edit = p['TangoTrax_' + t.key + '_isEdit'];
|
|
45
|
+
return add === undefined && edit === undefined ? true : !!add || !!edit;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Users who always get the whole Audit menu: Tango (internal) users, and a client's superadmin (Manage Users shows no
|
|
50
|
+
* permission table for a superadmin, so their Audit rows cannot be set). Client admins and users follow their rows.
|
|
51
|
+
*/
|
|
52
|
+
function fullAuditAccess(p) {
|
|
53
|
+
return p?.userType === 'tango' || p?.role === 'superadmin';
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdGFiLWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC9hdWRpdC10YWItYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUF3RDtJQUNsRixFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtJQUNqRyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUN2RixFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDM0UsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2pGLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsOEJBQThCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUM5RSxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Q0FDbEYsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLENBQU0sRUFBRSxNQUE2QjtJQUNoRSxJQUFJLENBQUMsQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRTtJQUN6QixJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFDeEMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDbEQsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztLQUFFO0lBQ3hFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0FBQ3pFLENBQUM7QUFFRCwyR0FBMkc7QUFDM0csTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUFNLEVBQUUsT0FBZ0I7SUFDbEQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUFFLE9BQU8sRUFBRSxDQUFDO0tBQUU7SUFDbEMsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFBRSxPQUFPLGVBQWUsQ0FBQztLQUFFO0lBQ25ELE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sR0FBRyxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FBQyxFQUFFLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxFQUFFLElBQUksS0FBSyxZQUFZLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGFuZ28gVHJheCDigLogQXVkaXQgdGFicyBhIHVzZXIgbWF5IG9wZW4sIGZyb20gTWFuYWdlIFVzZXJzIOKAuiBUYW5nbyBUcmF4IOKAuiBBdWRpdCdzIHRhYiByb3dzXG4gKiAoVGFuZ29UcmF4X0F1ZGl0XzxUYWI+X2lzQWRkIC8gX2lzRWRpdDsgQWRkIG9yIEVkaXQgc2hvd3MgdGhlIHRhYikuIEEgVGFuZ28gKGludGVybmFsKSB1c2VyIHNlZXMgZXZlcnkgdGFiLiBBIHVzZXJcbiAqIHNhdmVkIGJlZm9yZSB0aGUgdGFiIHJvd3MgZXhpc3RlZCBoYXMgbm8gdGFiIGtleXMgYW5kIGtlZXBzIGV2ZXJ5IHRhYiB3aGlsZSBBdWRpdCBpdHNlbGYgaXMgb24gKHRoZSB1c2VyIEFQSSBmaWxsc1xuICogdGhlbSBpbiBmcm9tIEF1ZGl0IHRvbykuIFNhbWUgcnVsZSBhcyB0aGUgYXVkaXQgcGFnZXMgKHRhbmdvLWFuYWx5c2UtdHJheCBhdWRpdC12Mi1hY2Nlc3MudHMgYXVkaXRUYWJzT24pLlxuICovXG5leHBvcnQgY29uc3QgQVVESVRfVEFCX0xJTktTOiBBcnJheTx7IGtleTogc3RyaW5nOyBwYXRoOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4gPSBbXG4gIHsga2V5OiAnQXVkaXRfQWN0aW9uQ2VudGVyJywgcGF0aDogJy9tYW5hZ2UvdHJheC9hdWRpdC12Mi9hY3Rpb25jZW50ZXInLCBsYWJlbDogJ0FjdGlvbiBDZW50ZXInIH0sXG4gIHsga2V5OiAnQXVkaXRfRGFzaGJvYXJkJywgcGF0aDogJy9tYW5hZ2UvdHJheC9hdWRpdC12Mi9kYXNoYm9hcmQnLCBsYWJlbDogJ0Rhc2hib2FyZCcgfSxcbiAgeyBrZXk6ICdBdWRpdF9GbGFncycsIHBhdGg6ICcvbWFuYWdlL3RyYXgvYXVkaXQtdjIvZmxhZ3MnLCBsYWJlbDogJ0ZsYWdzJyB9LFxuICB7IGtleTogJ0F1ZGl0X0dhbGxlcnknLCBwYXRoOiAnL21hbmFnZS90cmF4L2F1ZGl0LXYyL2dhbGxlcnknLCBsYWJlbDogJ0dhbGxlcnknIH0sXG4gIHsga2V5OiAnQXVkaXRfTWFuYWdlJywgcGF0aDogJy9tYW5hZ2UvdHJheC9hdWRpdC12Mi9tYW5hZ2UnLCBsYWJlbDogJ01hbmFnZScgfSxcbiAgeyBrZXk6ICdBdWRpdF9SZXBvcnRzJywgcGF0aDogJy9tYW5hZ2UvdHJheC9hdWRpdC12Mi9yZXBvcnRzJywgbGFiZWw6ICdSZXBvcnRzJyB9XG5dO1xuXG4vKipcbiAqIFdoZXRoZXIgVGFuZ28gVHJheCAtPiBBdWRpdCAob3IgU2NoZWR1bGVzKSBpcyBzaG93bi4gQSBUYW5nbyB1c2VyIG9yIGNsaWVudCBzdXBlcmFkbWluIGFsd2F5cyBzZWVzIGl0LiBBIGNsaWVudCB1c2VyIHNlZXMgaXRcbiAqIHdoZW4gaXRzIEFkZCBvciBFZGl0IGtleSBpcyB0cnVlIChUYW5nb1RyYXhfPG1vZHVsZT5faXNBZGQgLyBfaXNFZGl0LCBmcm9tIE1hbmFnZSBVc2VyczsgdGhlIHVzZXIgQVBJIGZpbGxzIEF1ZGl0IC9cbiAqIFNjaGVkdWxlcyBpbiBmcm9tIENoZWNrbGlzdCBmb3IgdXNlcnMgc2F2ZWQgYmVmb3JlIHRob3NlIHJvd3MpOyB3aXRob3V0IHRob3NlIGtleXMgdGhlIENoZWNrbGlzdCBrZXlzIGRlY2lkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYXhNb2R1bGVPbihwOiBhbnksIG1vZHVsZTogJ0F1ZGl0JyB8ICdTY2hlZHVsZXMnKTogYm9vbGVhbiB7XG4gIGlmICghcCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKGZ1bGxBdWRpdEFjY2VzcyhwKSkgeyByZXR1cm4gdHJ1ZTsgfVxuICBjb25zdCBhZGQgPSBwWydUYW5nb1RyYXhfJyArIG1vZHVsZSArICdfaXNBZGQnXTtcbiAgY29uc3QgZWRpdCA9IHBbJ1RhbmdvVHJheF8nICsgbW9kdWxlICsgJ19pc0VkaXQnXTtcbiAgaWYgKGFkZCAhPT0gdW5kZWZpbmVkIHx8IGVkaXQgIT09IHVuZGVmaW5lZCkgeyByZXR1cm4gISFhZGQgfHwgISFlZGl0OyB9XG4gIHJldHVybiAhIXAuVGFuZ29UcmF4X2NoZWNrbGlzdF9pc0FkZCB8fCAhIXAuVGFuZ29UcmF4X2NoZWNrbGlzdF9pc0VkaXQ7XG59XG5cbi8qKiBUaGUgQXVkaXQgdGFicyB0aGlzIHVzZXIgbWF5IG9wZW4sIGluIG1lbnUgb3JkZXI7IFtdIHdoaWxlIHBlcm1pc3Npb25zIGFyZSBsb2FkaW5nIG9yIHdpdGhvdXQgQXVkaXQuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRUYWJzT24ocDogYW55LCBhdWRpdE9uOiBib29sZWFuKTogQXJyYXk8eyBrZXk6IHN0cmluZzsgcGF0aDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH0+IHtcbiAgaWYgKCFwIHx8ICFhdWRpdE9uKSB7IHJldHVybiBbXTsgfVxuICBpZiAoZnVsbEF1ZGl0QWNjZXNzKHApKSB7IHJldHVybiBBVURJVF9UQUJfTElOS1M7IH1cbiAgcmV0dXJuIEFVRElUX1RBQl9MSU5LUy5maWx0ZXIodCA9PiB7XG4gICAgY29uc3QgYWRkID0gcFsnVGFuZ29UcmF4XycgKyB0LmtleSArICdfaXNBZGQnXTtcbiAgICBjb25zdCBlZGl0ID0gcFsnVGFuZ29UcmF4XycgKyB0LmtleSArICdfaXNFZGl0J107XG4gICAgcmV0dXJuIGFkZCA9PT0gdW5kZWZpbmVkICYmIGVkaXQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIWFkZCB8fCAhIWVkaXQ7XG4gIH0pO1xufVxuXG4vKipcbiAqIFVzZXJzIHdobyBhbHdheXMgZ2V0IHRoZSB3aG9sZSBBdWRpdCBtZW51OiBUYW5nbyAoaW50ZXJuYWwpIHVzZXJzLCBhbmQgYSBjbGllbnQncyBzdXBlcmFkbWluIChNYW5hZ2UgVXNlcnMgc2hvd3Mgbm9cbiAqIHBlcm1pc3Npb24gdGFibGUgZm9yIGEgc3VwZXJhZG1pbiwgc28gdGhlaXIgQXVkaXQgcm93cyBjYW5ub3QgYmUgc2V0KS4gQ2xpZW50IGFkbWlucyBhbmQgdXNlcnMgZm9sbG93IHRoZWlyIHJvd3MuXG4gKi9cbmZ1bmN0aW9uIGZ1bGxBdWRpdEFjY2VzcyhwOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHA/LnVzZXJUeXBlID09PSAndGFuZ28nIHx8IHA/LnJvbGUgPT09ICdzdXBlcmFkbWluJztcbn1cbiJdfQ==
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
import { AUDIT_TAB_LINKS, auditTabsOn, traxModuleOn } from '../../audit-tab-access';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
import * as i1 from "../../../../services/auth.service";
|
|
4
6
|
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "
|
|
7
|
+
import * as i3 from "tango-app-ui-global";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
6
9
|
export class HeaderBannerComponent {
|
|
7
10
|
service;
|
|
8
11
|
router;
|
|
12
|
+
gs;
|
|
9
13
|
showCreateOrder = 'UNAUTHORIZED';
|
|
10
|
-
|
|
14
|
+
/** Audit tabs this user may open (Manage Users › Tango Trax › Audit's tab rows); every tab until permissions load. */
|
|
15
|
+
auditTabs$;
|
|
16
|
+
constructor(service, router, gs) {
|
|
11
17
|
this.service = service;
|
|
12
18
|
this.router = router;
|
|
19
|
+
this.gs = gs;
|
|
20
|
+
this.auditTabs$ = this.gs.userAccess.pipe(map((p) => (p ? auditTabsOn(p, traxModuleOn(p, 'Audit')) : AUDIT_TAB_LINKS)));
|
|
13
21
|
}
|
|
14
22
|
/** The Audit module has its own tab set, shown in place of the Checklist tabs. */
|
|
15
23
|
get isAuditModule() {
|
|
@@ -23,11 +31,11 @@ export class HeaderBannerComponent {
|
|
|
23
31
|
this.showCreateOrder = res?.message || 'UNAUTHORIZED';
|
|
24
32
|
});
|
|
25
33
|
}
|
|
26
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderBannerComponent, deps: [{ token: i1.AuthService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HeaderBannerComponent, selector: "lib-header-banner", ngImport: i0, template: " <div class=\"card pt-3\" style=\"border-radius: 0% !important;\">\r\n\r\n <div *ngIf=\"isAuditModule\" class=\"d-flex overflow-auto1 h-35px mb-2 mx-5\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderBannerComponent, deps: [{ token: i1.AuthService }, { token: i2.Router }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
35
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HeaderBannerComponent, selector: "lib-header-banner", ngImport: i0, template: " <div class=\"card pt-3\" style=\"border-radius: 0% !important;\">\r\n\r\n <div *ngIf=\"isAuditModule\" class=\"d-flex overflow-auto1 h-35px mb-2 mx-5\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <!-- Only the tabs the user may open (Manage Users \u203A Tango Trax \u203A Audit's tab rows). -->\r\n <li class=\"nav-item\" *ngFor=\"let tab of auditTabs$ | async\"><a [routerLink]=\"tab.path\"\r\n routerLinkActive=\"active\" class=\"nav-link text-active-primary me-6\">{{ tab.label }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"!isAuditModule\" class=\"d-flex overflow-auto1 h-35px mb-2 mx-5\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <li\r\n class=\"nav-item\"><a routerLink=\"/manage/trax/actioncenter\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6 \">Action Center</a>\r\n </li>\r\n <li \r\n class=\"nav-item\"><a routerLink=\"/manage/trax/dashboard\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6 \">Dashboard</a>\r\n </li>\r\n <li \r\n class=\"nav-item\"><a routerLink=\"/manage/trax/flags\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6\">Flags</a>\r\n </li>\r\n <li \r\n class=\"nav-item\"><a routerLink=\"/manage/trax/gallery\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6\">Gallery</a>\r\n </li>\r\n <li class=\"nav-item\" ><a routerLink=\"/manage/trax/checklist\"\r\n routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Manage</a>\r\n </li>\r\n <li class=\"nav-item\" *ngIf=\"users?.isEyetestUser\"><a routerLink=\"/manage/trax/audit\"\r\n routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Audit</a>\r\n </li>\r\n <!-- <li class=\"nav-item cursor-pointer\"><a (click)=\"changes('trax-reports')\"\r\n routerLink=\"/manage/trax/reports\" routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Reports</a>\r\n </li> -->\r\n <li *ngIf=\"showCreateOrder === 'AUTHORIZED'\" class=\"nav-item cursor-pointer\"><a \r\n routerLink=\"/manage/trax/create-order\" routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Create Order</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>", styles: [""], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
28
36
|
}
|
|
29
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderBannerComponent, decorators: [{
|
|
30
38
|
type: Component,
|
|
31
|
-
args: [{ selector: 'lib-header-banner', template: " <div class=\"card pt-3\" style=\"border-radius: 0% !important;\">\r\n\r\n <div *ngIf=\"isAuditModule\" class=\"d-flex overflow-auto1 h-35px mb-2 mx-5\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n
|
|
32
|
-
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.Router }] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
args: [{ selector: 'lib-header-banner', template: " <div class=\"card pt-3\" style=\"border-radius: 0% !important;\">\r\n\r\n <div *ngIf=\"isAuditModule\" class=\"d-flex overflow-auto1 h-35px mb-2 mx-5\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <!-- Only the tabs the user may open (Manage Users \u203A Tango Trax \u203A Audit's tab rows). -->\r\n <li class=\"nav-item\" *ngFor=\"let tab of auditTabs$ | async\"><a [routerLink]=\"tab.path\"\r\n routerLinkActive=\"active\" class=\"nav-link text-active-primary me-6\">{{ tab.label }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"!isAuditModule\" class=\"d-flex overflow-auto1 h-35px mb-2 mx-5\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder flex-nowrap\">\r\n <li\r\n class=\"nav-item\"><a routerLink=\"/manage/trax/actioncenter\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6 \">Action Center</a>\r\n </li>\r\n <li \r\n class=\"nav-item\"><a routerLink=\"/manage/trax/dashboard\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6 \">Dashboard</a>\r\n </li>\r\n <li \r\n class=\"nav-item\"><a routerLink=\"/manage/trax/flags\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6\">Flags</a>\r\n </li>\r\n <li \r\n class=\"nav-item\"><a routerLink=\"/manage/trax/gallery\" routerLinkActive=\"active\"\r\n class=\"nav-link text-active-primary me-6\">Gallery</a>\r\n </li>\r\n <li class=\"nav-item\" ><a routerLink=\"/manage/trax/checklist\"\r\n routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Manage</a>\r\n </li>\r\n <li class=\"nav-item\" *ngIf=\"users?.isEyetestUser\"><a routerLink=\"/manage/trax/audit\"\r\n routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Audit</a>\r\n </li>\r\n <!-- <li class=\"nav-item cursor-pointer\"><a (click)=\"changes('trax-reports')\"\r\n routerLink=\"/manage/trax/reports\" routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Reports</a>\r\n </li> -->\r\n <li *ngIf=\"showCreateOrder === 'AUTHORIZED'\" class=\"nav-item cursor-pointer\"><a \r\n routerLink=\"/manage/trax/create-order\" routerLinkActive=\"active\" \r\n class=\"nav-link text-active-primary me-6\">Create Order</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>" }]
|
|
40
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.Router }, { type: i3.GlobalStateService }] });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvaGVhZGVyL2hlYWRlci1iYW5uZXIvaGVhZGVyLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvaGVhZGVyL2hlYWRlci1iYW5uZXIvaGVhZGVyLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQU9wRixNQUFNLE9BQU8scUJBQXFCO0lBTWQ7SUFBNkI7SUFBd0I7SUFMekUsZUFBZSxHQUFrQyxjQUFjLENBQUE7SUFFL0Qsc0hBQXNIO0lBQzdHLFVBQVUsQ0FBa0U7SUFFckYsWUFBb0IsT0FBbUIsRUFBVSxNQUFjLEVBQVUsRUFBc0I7UUFBM0UsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUM3RixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ILENBQUM7SUFFRCxrRkFBa0Y7SUFDbEYsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsS0FBSyxDQUFLO0lBQ1QsUUFBUTtRQUNMLE1BQU0sUUFBUSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsT0FBTyxJQUFJLGNBQWMsQ0FBQTtRQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7d0dBckJZLHFCQUFxQjs0RkFBckIscUJBQXFCLHlEQ1psQyxzc0hBaURPOzs0RkRyQ00scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBVURJVF9UQUJfTElOS1MsIGF1ZGl0VGFic09uLCB0cmF4TW9kdWxlT24gfSBmcm9tICcuLi8uLi9hdWRpdC10YWItYWNjZXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlci1iYW5uZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItYmFubmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vaGVhZGVyLWJhbm5lci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlckJhbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbnNob3dDcmVhdGVPcmRlcjogJ0FVVEhPUklaRUQnIHwgJ1VOQVVUSE9SSVpFRCcgPSAnVU5BVVRIT1JJWkVEJ1xyXG5cclxuLyoqIEF1ZGl0IHRhYnMgdGhpcyB1c2VyIG1heSBvcGVuIChNYW5hZ2UgVXNlcnMg4oC6IFRhbmdvIFRyYXgg4oC6IEF1ZGl0J3MgdGFiIHJvd3MpOyBldmVyeSB0YWIgdW50aWwgcGVybWlzc2lvbnMgbG9hZC4gKi9cclxucmVhZG9ubHkgYXVkaXRUYWJzJDogT2JzZXJ2YWJsZTxBcnJheTx7IGtleTogc3RyaW5nOyBwYXRoOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4+O1xyXG5cclxuY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOkF1dGhTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UgKXtcclxuICB0aGlzLmF1ZGl0VGFicyQgPSB0aGlzLmdzLnVzZXJBY2Nlc3MucGlwZShtYXAoKHA6IGFueSkgPT4gKHAgPyBhdWRpdFRhYnNPbihwLCB0cmF4TW9kdWxlT24ocCwgJ0F1ZGl0JykpIDogQVVESVRfVEFCX0xJTktTKSkpO1xyXG59XHJcblxyXG4vKiogVGhlIEF1ZGl0IG1vZHVsZSBoYXMgaXRzIG93biB0YWIgc2V0LCBzaG93biBpbiBwbGFjZSBvZiB0aGUgQ2hlY2tsaXN0IHRhYnMuICovXHJcbmdldCBpc0F1ZGl0TW9kdWxlKCk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB0aGlzLnJvdXRlci51cmwuaW5jbHVkZXMoJy9tYW5hZ2UvdHJheC9hdWRpdC12MicpO1xyXG59XHJcbnVzZXJzOmFueTtcclxuIG5nT25Jbml0KCk6IHZvaWR7XHJcbiAgICBjb25zdCB1c2VyRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInVzZXItaW5mb1wiKSB8fCBcInt9XCIpO1xyXG4gIHRoaXMudXNlcnMgPSB1c2VyRGF0YTtcclxuICB0aGlzLnNlcnZpY2UuaXNMb2N1c0F1dGhvcml6ZWQoKS5zdWJzY3JpYmUoKHJlczphbnkpPT57XHJcbiAgICAgIHRoaXMuc2hvd0NyZWF0ZU9yZGVyID0gcmVzPy5tZXNzYWdlIHx8ICdVTkFVVEhPUklaRUQnXHJcbiAgICB9KVxyXG59XHJcbn1cclxuIiwiIDxkaXYgY2xhc3M9XCJjYXJkIHB0LTNcIiBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDAlICFpbXBvcnRhbnQ7XCI+XHJcblxyXG4gICAgIDxkaXYgICpuZ0lmPVwiaXNBdWRpdE1vZHVsZVwiIGNsYXNzPVwiZC1mbGV4IG92ZXJmbG93LWF1dG8xIGgtMzVweCBtYi0yIG14LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyIGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBPbmx5IHRoZSB0YWJzIHRoZSB1c2VyIG1heSBvcGVuIChNYW5hZ2UgVXNlcnMg4oC6IFRhbmdvIFRyYXgg4oC6IEF1ZGl0J3MgdGFiIHJvd3MpLiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0Zvcj1cImxldCB0YWIgb2YgYXVkaXRUYWJzJCB8IGFzeW5jXCI+PGEgW3JvdXRlckxpbmtdPVwidGFiLnBhdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTZcIj57eyB0YWIubGFiZWwgfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgIDxkaXYgICpuZ0lmPVwiIWlzQXVkaXRNb2R1bGVcIiBjbGFzcz1cImQtZmxleCBvdmVyZmxvdy1hdXRvMSBoLTM1cHggbWItMiBteC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFicyBuYXYtbGluZS10YWJzLTJ4IGJvcmRlci10cmFuc3BhcmVudCBmcy01IGZ3LWJvbGRlciBmbGV4LW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWl0ZW1cIj48YSByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2FjdGlvbmNlbnRlclwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTYgXCI+QWN0aW9uIENlbnRlcjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWl0ZW1cIj48YSByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTYgXCI+RGFzaGJvYXJkPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWl0ZW1cIj48YSByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2ZsYWdzXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1lLTZcIj5GbGFnczwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCI+PGEgcm91dGVyTGluaz1cIi9tYW5hZ2UvdHJheC9nYWxsZXJ5XCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbWUtNlwiPkdhbGxlcnk8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgPjxhIHJvdXRlckxpbms9XCIvbWFuYWdlL3RyYXgvY2hlY2tsaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbWUtNlwiPk1hbmFnZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgKm5nSWY9XCJ1c2Vycz8uaXNFeWV0ZXN0VXNlclwiPjxhIHJvdXRlckxpbms9XCIvbWFuYWdlL3RyYXgvYXVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtZS02XCI+QXVkaXQ8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaSAgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPjxhIChjbGljayk9XCJjaGFuZ2VzKCd0cmF4LXJlcG9ydHMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvbWFuYWdlL3RyYXgvcmVwb3J0c1wiICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbWUtNlwiPlJlcG9ydHM8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2hvd0NyZWF0ZU9yZGVyID09PSAnQVVUSE9SSVpFRCdcIiAgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiPjxhIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL21hbmFnZS90cmF4L2NyZWF0ZS1vcmRlclwiICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbWUtNlwiPkNyZWF0ZSBPcmRlcjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gPC9kaXY+Il19
|