@byuhbll/components 4.6.2 → 4.7.0-beta.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.
- package/esm2022/lib/animations/animations.mjs +19 -1
- package/esm2022/lib/button/button.mjs +95 -0
- package/esm2022/lib/button-group/button-group.component.mjs +63 -0
- package/esm2022/lib/contact-utils.mjs +2 -2
- package/esm2022/lib/expand-collapse/expand-collapse.component.mjs +4 -4
- package/esm2022/lib/hbll-footer/hbll-footer.component.mjs +10 -9
- package/esm2022/lib/hbll-header/hbll-header.component.mjs +11 -24
- package/esm2022/lib/hbll-header/nav-bar-dropdown/nav-bar-dropdown.component.mjs +3 -3
- package/esm2022/lib/header-with-impersonation/header-with-impersonation.component.mjs +3 -5
- package/esm2022/lib/impersonation-banner/impersonation-banner.component.mjs +4 -4
- package/esm2022/lib/subatomic-components/button-group-item/button-group-item.component.mjs +29 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/byuhbll-components.mjs +225 -44
- package/fesm2022/byuhbll-components.mjs.map +1 -1
- package/lib/animations/animations.d.ts +1 -0
- package/lib/button/button.d.ts +139 -0
- package/lib/button-group/button-group.component.d.ts +17 -0
- package/lib/contact-utils.d.ts +1 -1
- package/lib/hbll-footer/hbll-footer.component.d.ts +3 -3
- package/lib/hbll-header/hbll-header.component.d.ts +0 -2
- package/lib/header-with-impersonation/header-with-impersonation.component.d.ts +1 -3
- package/lib/impersonation-banner/impersonation-banner.component.d.ts +2 -2
- package/lib/subatomic-components/button-group-item/button-group-item.component.d.ts +18 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -40,7 +40,7 @@ export class ImpersonationBannerComponent {
|
|
|
40
40
|
this.http = inject(HttpClient);
|
|
41
41
|
this.accessTokenPayload = input.required();
|
|
42
42
|
this.personBaseUri = input('https://apps.lib.byu.edu/person/v2/');
|
|
43
|
-
this.
|
|
43
|
+
this.libraryApiBaseUri = input('https://api.lib.byu.edu/v1');
|
|
44
44
|
this.endImpersonation = new EventEmitter();
|
|
45
45
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
46
|
this.parsedToken = computed(() => this.accessTokenPayload().token ? jwtDecode(this.accessTokenPayload().token) : {});
|
|
@@ -109,7 +109,7 @@ export class ImpersonationBannerComponent {
|
|
|
109
109
|
return of(null);
|
|
110
110
|
}
|
|
111
111
|
return this.http
|
|
112
|
-
.get(urlcat(this.
|
|
112
|
+
.get(urlcat(this.libraryApiBaseUri(), PATRON_ACCOUNTS_PATH), {
|
|
113
113
|
headers: {
|
|
114
114
|
Authorization: `Bearer ${this.accessTokenPayload().token}`,
|
|
115
115
|
},
|
|
@@ -140,7 +140,7 @@ export class ImpersonationBannerComponent {
|
|
|
140
140
|
})));
|
|
141
141
|
}
|
|
142
142
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ImpersonationBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ImpersonationBannerComponent, isStandalone: true, selector: "lib-impersonation-banner", inputs: { accessTokenPayload: { classPropertyName: "accessTokenPayload", publicName: "accessTokenPayload", isSignal: true, isRequired: true, transformFunction: null }, personBaseUri: { classPropertyName: "personBaseUri", publicName: "personBaseUri", isSignal: true, isRequired: false, transformFunction: null }, myAccountApiBaseUri: { classPropertyName: "myAccountApiBaseUri", publicName: "myAccountApiBaseUri", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { endImpersonation: "endImpersonation" }, ngImport: i0, template: "@if (isImpersonating()) {\n <div class=\"banner-padding\"></div>\n <div class=\"top-banner\" data-testid=\"banner\">\n <div class=\"banner-group profile-name-container\">\n <div class=\"profile-avatar\">\n <div class=\"profile-image\">\n <img\n [src]=\"userPhotoUrl()\"\n [alt]=\"userFullName()\"\n alt=\"user photo\"\n onerror=\"this.remove()\"\n />\n </div>\n <span class=\"material-symbols-outlined profile-icon\"> person </span>\n </div>\n <div class=\"profile-name-group\">\n <span class=\"soft\">Impersonating</span>\n <div class=\"profile-name-wrapper\">\n <span class=\"profile-name\">{{ userFullName() }}</span>\n @if (accountStatuses()) {\n <div class=\"application-status-bar\">\n @if (accountStatuses()?.ok?.length) {\n <div class=\"application-status-indicator\">\n <span class=\"application-status-ok application-status\">\n <span class=\"material-symbols-outlined icon-checkmark\">\n check\n </span>\n <span class=\"application-count\">{{\n accountStatuses()?.ok?.length\n }}</span>\n </span>\n <div class=\"status-tooltip-container\">\n <div class=\"status-tooltip\">\n OK Applications\n <hr />\n @for (\n application of accountStatuses()?.ok ?? [];\n track application.label\n ) {\n <div class=\"application-status\">\n <span\n class=\"material-symbols-outlined icon-checkmark\"\n >\n check\n </span>\n <span>{{ application.label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (accountStatuses()?.blocked?.length) {\n <div class=\"application-status-indicator\">\n <span class=\"application-status-blocked application-status\">\n <span class=\"material-symbols-outlined icon-warning\">\n warning\n </span>\n <span class=\"application-count\">{{\n accountStatuses()?.blocked?.length\n }}</span>\n </span>\n <div class=\"status-tooltip-container\">\n <div class=\"status-tooltip\">\n Blocked Applications\n <hr />\n @for (\n application of accountStatuses()?.blocked ?? [];\n track application.code\n ) {\n <div class=\"application-status\">\n <span\n class=\"material-symbols-outlined icon-warning\"\n >\n warning\n </span>\n <span>{{ application.label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (accountStatuses()?.none?.length) {\n <div class=\"application-status-indicator\">\n <span class=\"application-status-none application-status\">\n <span class=\"material-symbols-outlined icon-lock\">\n lock\n </span>\n <span class=\"application-count\">{{\n accountStatuses()?.none?.length\n }}</span>\n </span>\n <div class=\"status-tooltip-container\">\n <div class=\"status-tooltip\">\n No Account\n <hr />\n @for (\n application of accountStatuses()?.none ?? [];\n track application.label\n ) {\n <div class=\"application-status\">\n <span\n class=\"material-symbols-outlined icon-lock\"\n >\n lock\n </span>\n <span>{{ application.label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <div class=\"profile-details-container banner-group\">\n @for (detail of userInfoTabs() | keyvalue; track detail.key) {\n <div class=\"profile-detail\">\n <span class=\"soft label\">{{ detail.key }}</span>\n <lib-copy-tooltip [copyText]=\"detail.value\">\n <div class=\"profile-detail-tag white-tag clickable\">\n {{ detail.value || 'Unknown' }}\n </div>\n </lib-copy-tooltip>\n </div>\n }\n </div>\n <div class=\"profile-details-container banner-group\">\n <div class=\"profile-detail\">\n <span class=\"soft label\">Status</span>\n <div class=\"multiple-detail-tags\">\n <div\n class=\"profile-detail-tag color-tag\"\n title=\"{{ employeeStatusDescription() }}\"\n >\n {{ user()?.primary_position_type_display ?? 'Non-employee' }}\n @if (activityStatus()) {\n <span\n class=\"profile-status-circle\"\n [class.status-active]=\"activityStatus() === 'active'\"\n [class.status-inactive]=\"activityStatus() === 'inactive'\"\n [class.status-retired]=\"activityStatus() === 'retired'\"\n ></span>\n }\n </div>\n <div class=\"profile-detail-tag color-tag\">\n {{ (user()?.undergrad_graduate_status | titlecase) || 'Non-student' }}\n </div>\n <div class=\"profile-detail-tag color-tag\">\n {{ independentStudyStatus() ? 'Independent Study' : 'No Ind. Study' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"spacer\"></div>\n <button class=\"end-impersonation-button shadow\" (click)=\"this.endImpersonation.emit()\">\n <span class=\"material-symbols-outlined icon\"> close </span>\n <span class=\"exit-text\">Exit</span>\n </button>\n </div>\n @if (isRestricted()) {\n <div class=\"restricted-bar-padding\"></div>\n <div class=\"restricted-bar\">\n <span class=\"title\">restricted person</span>\n <span class=\"text\">\n If anyone asks about this person, you are instructed to respond,\n <span class=\"emphasize\">\"We have no records for this person.\"</span>\n </span>\n </div>\n }\n <div class=\"right-border\"></div>\n <div class=\"bottom-border\"></div>\n <div class=\"left-border\"></div>\n}\n", styles: ["*{box-sizing:border-box}.top-banner,.bottom-border,.right-border,.left-border{background-color:#9070bf;border:none;position:fixed;box-sizing:border-box;z-index:1000}lib-copy-tooltip{z-index:10000;display:block}.top-banner,.bottom-border{left:0;right:0}.right-border,.left-border{width:7px;top:0;bottom:0}.bottom-border{bottom:0;height:7px}.right-border{right:0}.left-border{left:0}.banner-padding{padding-top:5em}.restricted-bar-padding{padding-top:40px}.restricted-bar{position:fixed;top:5em;left:7px;right:7px;height:40px;display:flex;align-items:center;color:#f3f3f3;background:repeating-linear-gradient(315deg,#c23737,#c23737 35px,#c25050 35px 70px);z-index:6000;font-size:1.6em}.restricted-bar .title{text-transform:uppercase;font-weight:600;margin:0 2em}.restricted-bar .text{margin:0 1em}.restricted-bar .text .emphasize{font-weight:600;font-style:italic}.top-banner{top:0;height:5em;display:flex;justify-content:space-between;width:100%;align-items:center;padding:2.5em;color:#f3f3f3;font-size:1em}.top-banner .banner-group{display:flex;margin-right:1.6em}.top-banner .profile-details-container{height:2.4em;display:flex;min-width:0}.top-banner .profile-details-container .profile-detail{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:space-between;margin-right:.6em;font-weight:600;min-width:0;position:relative;z-index:6001}.top-banner .profile-details-container .profile-detail .label{font-size:.75em;white-space:nowrap;min-width:0;max-width:100%}.top-banner .profile-details-container .profile-detail .profile-detail-tag{font-size:.8em;padding:.2em .4em;border-radius:5px;display:inline-flex;align-items:center;gap:.5em;white-space:nowrap;min-width:0;max-width:100%}.top-banner .profile-details-container .profile-detail .profile-detail-tag:hover{min-width:max-content;z-index:1000}.top-banner .profile-details-container .profile-detail .profile-detail-tag:last-of-type{margin-right:0}.top-banner .profile-details-container .profile-detail .profile-detail-tag .profile-status-circle{font-size:1em;width:10px;height:10px;border-radius:50%;flex-shrink:0}.top-banner .profile-details-container .profile-detail .profile-detail-tag .status-active{background-color:#00e732}.top-banner .profile-details-container .profile-detail .profile-detail-tag .status-retired{background-color:#ffba38}.top-banner .profile-details-container .profile-detail .profile-detail-tag .status-inactive{border:2px white solid}.top-banner .profile-details-container .profile-detail .multiple-detail-tags{display:flex;flex-flow:row nowrap;min-width:0;max-width:100%}.top-banner .profile-details-container .profile-detail .multiple-detail-tags .profile-detail-tag{margin-right:.6em}.top-banner .profile-name-container{display:flex;align-items:center}.top-banner .profile-name-container .profile-avatar{border-radius:50%;background-color:#fff;padding:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;color:#a9a9a9;align-self:center;font-size:15px;overflow:hidden;height:3.5em;width:3.5em;margin-right:.6em;flex-shrink:0}.top-banner .profile-name-container .profile-avatar .profile-icon{margin:-.25em}.top-banner .profile-name-container .profile-avatar .profile-image{height:100%;width:100%;object-fit:cover;font-size:1em}.top-banner .profile-name-container .profile-avatar .profile-image+.profile-icon{display:none;font-size:3.5em}.top-banner .profile-name-container .profile-avatar .profile-image:empty{display:none}.top-banner .profile-name-container .profile-avatar .profile-image:empty+.profile-icon{display:block}.top-banner .profile-name-container .profile-name-group{font-size:1em;font-weight:600}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper{display:flex;align-items:center;white-space:nowrap}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .profile-name{font-size:1.6em;line-height:1em}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar{margin-left:1em;opacity:1;display:flex;align-items:center}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-indicator{position:relative;margin-right:.8em}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-indicator .application-count{margin-left:.5em;vertical-align:middle}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-indicator:last-child{margin-right:0}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status:hover+.status-tooltip-container{display:block}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-ok{color:#87ed8f}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-ok .icon-checkmark{background-color:#87ed8f;color:#9070bf;border-radius:50%;padding:.2em;font-size:1em;vertical-align:middle}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-blocked{color:#e9ce34}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-blocked .icon-warning{font-size:1.7em;vertical-align:middle}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-blocked .application-count{margin-left:.1em}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-none{color:#f4785b}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-none .icon-lock{background-color:#f4785b;color:#9070bf;border-radius:50%;padding:.2em;font-size:1em;vertical-align:middle}.top-banner .soft{opacity:.7}.top-banner .end-impersonation-button{height:2.4em;cursor:pointer;border-radius:2em;font-size:1em;padding:0 1.4em 0 1em;border:none;outline:none;flex-shrink:0;background-color:#fff;color:#c63d3d;font-weight:600;transition:box-shadow .2s;display:flex;align-items:center}.top-banner .end-impersonation-button:hover{box-shadow:#0003 0 8px 10px}.top-banner .end-impersonation-button .icon{font-size:1.2em;margin-right:.2em}.top-banner .spacer{flex-grow:1}.top-banner .shadow{box-shadow:#0003 0 2px 10px}.top-banner .white-tag{cursor:pointer;background-color:#ffffff26}.top-banner .white-tag:hover{background-color:#614979}.top-banner .color-tag:nth-of-type(1){background-color:#26acffcc}.top-banner .color-tag:nth-of-type(2){background-color:#9394ffcc}.top-banner .color-tag:nth-of-type(3){background-color:#a28ceecc}.top-banner .status-tooltip-container{color:#fff;background-color:#2e2e2e;display:none;transition:all .1s ease-in-out;position:absolute;top:calc(100% + 1em);left:50%;transform:translate(-50%);border-radius:.4em}.top-banner .status-tooltip-container:before{content:\"\";position:absolute;top:-.5em;left:50%;transform:translate(-50%);border-style:solid;border-width:0 1em 1em 1em;border-color:transparent transparent rgb(46,46,46) transparent}.top-banner .status-tooltip{text-align:left;padding:.8em;line-height:2em;font-weight:700}.top-banner .status-tooltip .application-status{display:flex;align-items:center;font-weight:400}.top-banner .status-tooltip .application-status [class*=icon-]{font-size:1.2em;margin-right:.2em}.top-banner .status-tooltip .application-status .icon-checkmark{color:#87ed8f}.top-banner .status-tooltip .application-status .icon-warning{color:#e9ce34}.top-banner .status-tooltip .application-status .icon-lock{color:#f4785b}@media screen and (max-width: 1100px){.top-banner .profile-name-group .soft{font-size:.7em}.top-banner .profile-name-group .profile-name{font-size:1.3em}.top-banner .end-impersonation-button{border-radius:50%;height:auto;padding:.6em}.top-banner .end-impersonation-button .icon{margin:0}.top-banner .end-impersonation-button .exit-text{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "component", type: CopyTooltipComponent, selector: "lib-copy-tooltip", inputs: ["position", "copyText"] }] }); }
|
|
143
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ImpersonationBannerComponent, isStandalone: true, selector: "lib-impersonation-banner", inputs: { accessTokenPayload: { classPropertyName: "accessTokenPayload", publicName: "accessTokenPayload", isSignal: true, isRequired: true, transformFunction: null }, personBaseUri: { classPropertyName: "personBaseUri", publicName: "personBaseUri", isSignal: true, isRequired: false, transformFunction: null }, libraryApiBaseUri: { classPropertyName: "libraryApiBaseUri", publicName: "libraryApiBaseUri", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { endImpersonation: "endImpersonation" }, ngImport: i0, template: "@if (isImpersonating()) {\n <div class=\"banner-padding\"></div>\n <div class=\"top-banner\" data-testid=\"banner\">\n <div class=\"banner-group profile-name-container\">\n <div class=\"profile-avatar\">\n <div class=\"profile-image\">\n <img\n [src]=\"userPhotoUrl()\"\n [alt]=\"userFullName()\"\n alt=\"user photo\"\n onerror=\"this.remove()\"\n />\n </div>\n <span class=\"material-symbols-outlined profile-icon\"> person </span>\n </div>\n <div class=\"profile-name-group\">\n <span class=\"soft\">Impersonating</span>\n <div class=\"profile-name-wrapper\">\n <span class=\"profile-name\">{{ userFullName() }}</span>\n @if (accountStatuses()) {\n <div class=\"application-status-bar\">\n @if (accountStatuses()?.ok?.length) {\n <div class=\"application-status-indicator\">\n <span class=\"application-status-ok application-status\">\n <span class=\"material-symbols-outlined icon-checkmark\">\n check\n </span>\n <span class=\"application-count\">{{\n accountStatuses()?.ok?.length\n }}</span>\n </span>\n <div class=\"status-tooltip-container\">\n <div class=\"status-tooltip\">\n OK Applications\n <hr />\n @for (\n application of accountStatuses()?.ok ?? [];\n track application.label\n ) {\n <div class=\"application-status\">\n <span\n class=\"material-symbols-outlined icon-checkmark\"\n >\n check\n </span>\n <span>{{ application.label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (accountStatuses()?.blocked?.length) {\n <div class=\"application-status-indicator\">\n <span class=\"application-status-blocked application-status\">\n <span class=\"material-symbols-outlined icon-warning\">\n warning\n </span>\n <span class=\"application-count\">{{\n accountStatuses()?.blocked?.length\n }}</span>\n </span>\n <div class=\"status-tooltip-container\">\n <div class=\"status-tooltip\">\n Blocked Applications\n <hr />\n @for (\n application of accountStatuses()?.blocked ?? [];\n track application.code\n ) {\n <div class=\"application-status\">\n <span\n class=\"material-symbols-outlined icon-warning\"\n >\n warning\n </span>\n <span>{{ application.label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (accountStatuses()?.none?.length) {\n <div class=\"application-status-indicator\">\n <span class=\"application-status-none application-status\">\n <span class=\"material-symbols-outlined icon-lock\">\n lock\n </span>\n <span class=\"application-count\">{{\n accountStatuses()?.none?.length\n }}</span>\n </span>\n <div class=\"status-tooltip-container\">\n <div class=\"status-tooltip\">\n No Account\n <hr />\n @for (\n application of accountStatuses()?.none ?? [];\n track application.label\n ) {\n <div class=\"application-status\">\n <span\n class=\"material-symbols-outlined icon-lock\"\n >\n lock\n </span>\n <span>{{ application.label }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n </div>\n </div>\n </div>\n <div class=\"profile-details-container banner-group\">\n @for (detail of userInfoTabs() | keyvalue; track detail.key) {\n <div class=\"profile-detail\">\n <span class=\"soft label\">{{ detail.key }}</span>\n <lib-copy-tooltip [copyText]=\"detail.value\">\n <div class=\"profile-detail-tag white-tag clickable\">\n {{ detail.value || 'Unknown' }}\n </div>\n </lib-copy-tooltip>\n </div>\n }\n </div>\n <div class=\"profile-details-container banner-group\">\n <div class=\"profile-detail\">\n <span class=\"soft label\">Status</span>\n <div class=\"multiple-detail-tags\">\n <div\n class=\"profile-detail-tag color-tag\"\n title=\"{{ employeeStatusDescription() }}\"\n >\n {{ user()?.primary_position_type_display ?? 'Non-employee' }}\n @if (activityStatus()) {\n <span\n class=\"profile-status-circle\"\n [class.status-active]=\"activityStatus() === 'active'\"\n [class.status-inactive]=\"activityStatus() === 'inactive'\"\n [class.status-retired]=\"activityStatus() === 'retired'\"\n ></span>\n }\n </div>\n <div class=\"profile-detail-tag color-tag\">\n {{ (user()?.undergrad_graduate_status | titlecase) || 'Non-student' }}\n </div>\n <div class=\"profile-detail-tag color-tag\">\n {{ independentStudyStatus() ? 'Independent Study' : 'No Ind. Study' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"spacer\"></div>\n <button class=\"end-impersonation-button shadow\" (click)=\"this.endImpersonation.emit()\">\n <span class=\"material-symbols-outlined icon\"> close </span>\n <span class=\"exit-text\">Exit</span>\n </button>\n </div>\n @if (isRestricted()) {\n <div class=\"restricted-bar-padding\"></div>\n <div class=\"restricted-bar\">\n <span class=\"title\">restricted person</span>\n <span class=\"text\">\n If anyone asks about this person, you are instructed to respond,\n <span class=\"emphasize\">\"We have no records for this person.\"</span>\n </span>\n </div>\n }\n <div class=\"right-border\"></div>\n <div class=\"bottom-border\"></div>\n <div class=\"left-border\"></div>\n}\n", styles: ["*{box-sizing:border-box}.top-banner,.bottom-border,.right-border,.left-border{background-color:#9070bf;border:none;position:fixed;box-sizing:border-box;z-index:1000}lib-copy-tooltip{z-index:10000;display:block}.top-banner,.bottom-border{left:0;right:0}.right-border,.left-border{width:7px;top:0;bottom:0}.bottom-border{bottom:0;height:7px}.right-border{right:0}.left-border{left:0}.banner-padding{padding-top:5em}.restricted-bar-padding{padding-top:40px}.restricted-bar{position:fixed;top:5em;left:7px;right:7px;height:40px;display:flex;align-items:center;color:#f3f3f3;background:repeating-linear-gradient(315deg,#c23737,#c23737 35px,#c25050 35px 70px);z-index:6000;font-size:1.6em}.restricted-bar .title{text-transform:uppercase;font-weight:600;margin:0 2em}.restricted-bar .text{margin:0 1em}.restricted-bar .text .emphasize{font-weight:600;font-style:italic}.top-banner{top:0;height:5em;display:flex;justify-content:space-between;width:100%;align-items:center;padding:2.5em;color:#f3f3f3;font-size:1em}.top-banner .banner-group{display:flex;margin-right:1.6em}.top-banner .profile-details-container{height:2.4em;display:flex;min-width:0}.top-banner .profile-details-container .profile-detail{display:flex;flex-flow:column nowrap;align-items:flex-start;justify-content:space-between;margin-right:.6em;font-weight:600;min-width:0;position:relative;z-index:6001}.top-banner .profile-details-container .profile-detail .label{font-size:.75em;white-space:nowrap;min-width:0;max-width:100%}.top-banner .profile-details-container .profile-detail .profile-detail-tag{font-size:.8em;padding:.2em .4em;border-radius:5px;display:inline-flex;align-items:center;gap:.5em;white-space:nowrap;min-width:0;max-width:100%}.top-banner .profile-details-container .profile-detail .profile-detail-tag:hover{min-width:max-content;z-index:1000}.top-banner .profile-details-container .profile-detail .profile-detail-tag:last-of-type{margin-right:0}.top-banner .profile-details-container .profile-detail .profile-detail-tag .profile-status-circle{font-size:1em;width:10px;height:10px;border-radius:50%;flex-shrink:0}.top-banner .profile-details-container .profile-detail .profile-detail-tag .status-active{background-color:#00e732}.top-banner .profile-details-container .profile-detail .profile-detail-tag .status-retired{background-color:#ffba38}.top-banner .profile-details-container .profile-detail .profile-detail-tag .status-inactive{border:2px white solid}.top-banner .profile-details-container .profile-detail .multiple-detail-tags{display:flex;flex-flow:row nowrap;min-width:0;max-width:100%}.top-banner .profile-details-container .profile-detail .multiple-detail-tags .profile-detail-tag{margin-right:.6em}.top-banner .profile-name-container{display:flex;align-items:center}.top-banner .profile-name-container .profile-avatar{border-radius:50%;background-color:#fff;padding:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;color:#a9a9a9;align-self:center;font-size:15px;overflow:hidden;height:3.5em;width:3.5em;margin-right:.6em;flex-shrink:0}.top-banner .profile-name-container .profile-avatar .profile-icon{margin:-.25em}.top-banner .profile-name-container .profile-avatar .profile-image{height:100%;width:100%;object-fit:cover;font-size:1em}.top-banner .profile-name-container .profile-avatar .profile-image+.profile-icon{display:none;font-size:3.5em}.top-banner .profile-name-container .profile-avatar .profile-image:empty{display:none}.top-banner .profile-name-container .profile-avatar .profile-image:empty+.profile-icon{display:block}.top-banner .profile-name-container .profile-name-group{font-size:1em;font-weight:600}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper{display:flex;align-items:center;white-space:nowrap}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .profile-name{font-size:1.6em;line-height:1em}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar{margin-left:1em;opacity:1;display:flex;align-items:center}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-indicator{position:relative;margin-right:.8em}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-indicator .application-count{margin-left:.5em;vertical-align:middle}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-indicator:last-child{margin-right:0}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status:hover+.status-tooltip-container{display:block}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-ok{color:#87ed8f}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-ok .icon-checkmark{background-color:#87ed8f;color:#9070bf;border-radius:50%;padding:.2em;font-size:1em;vertical-align:middle}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-blocked{color:#e9ce34}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-blocked .icon-warning{font-size:1.7em;vertical-align:middle}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-blocked .application-count{margin-left:.1em}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-none{color:#f4785b}.top-banner .profile-name-container .profile-name-group .profile-name-wrapper .application-status-bar .application-status-none .icon-lock{background-color:#f4785b;color:#9070bf;border-radius:50%;padding:.2em;font-size:1em;vertical-align:middle}.top-banner .soft{opacity:.7}.top-banner .end-impersonation-button{height:2.4em;cursor:pointer;border-radius:2em;font-size:1em;padding:0 1.4em 0 1em;border:none;outline:none;flex-shrink:0;background-color:#fff;color:#c63d3d;font-weight:600;transition:box-shadow .2s;display:flex;align-items:center}.top-banner .end-impersonation-button:hover{box-shadow:#0003 0 8px 10px}.top-banner .end-impersonation-button .icon{font-size:1.2em;margin-right:.2em}.top-banner .spacer{flex-grow:1}.top-banner .shadow{box-shadow:#0003 0 2px 10px}.top-banner .white-tag{cursor:pointer;background-color:#ffffff26}.top-banner .white-tag:hover{background-color:#614979}.top-banner .color-tag:nth-of-type(1){background-color:#26acffcc}.top-banner .color-tag:nth-of-type(2){background-color:#9394ffcc}.top-banner .color-tag:nth-of-type(3){background-color:#a28ceecc}.top-banner .status-tooltip-container{color:#fff;background-color:#2e2e2e;display:none;transition:all .1s ease-in-out;position:absolute;top:calc(100% + 1em);left:50%;transform:translate(-50%);border-radius:.4em}.top-banner .status-tooltip-container:before{content:\"\";position:absolute;top:-.5em;left:50%;transform:translate(-50%);border-style:solid;border-width:0 1em 1em 1em;border-color:transparent transparent rgb(46,46,46) transparent}.top-banner .status-tooltip{text-align:left;padding:.8em;line-height:2em;font-weight:700}.top-banner .status-tooltip .application-status{display:flex;align-items:center;font-weight:400}.top-banner .status-tooltip .application-status [class*=icon-]{font-size:1.2em;margin-right:.2em}.top-banner .status-tooltip .application-status .icon-checkmark{color:#87ed8f}.top-banner .status-tooltip .application-status .icon-warning{color:#e9ce34}.top-banner .status-tooltip .application-status .icon-lock{color:#f4785b}@media screen and (max-width: 1100px){.top-banner .profile-name-group .soft{font-size:.7em}.top-banner .profile-name-group .profile-name{font-size:1.3em}.top-banner .end-impersonation-button{border-radius:50%;height:auto;padding:.6em}.top-banner .end-impersonation-button .icon{margin:0}.top-banner .end-impersonation-button .exit-text{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }, { kind: "component", type: CopyTooltipComponent, selector: "lib-copy-tooltip", inputs: ["position", "copyText"] }] }); }
|
|
144
144
|
}
|
|
145
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ImpersonationBannerComponent, decorators: [{
|
|
146
146
|
type: Component,
|
|
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
148
148
|
}], propDecorators: { endImpersonation: [{
|
|
149
149
|
type: Output
|
|
150
150
|
}] } });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2ltcGVyc29uYXRpb24tYmFubmVyL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9pbXBlcnNvbmF0aW9uLWJhbm5lci9pbXBlcnNvbmF0aW9uLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUNILFlBQVksR0FHZixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRTlFLE1BQU0sY0FBYyxHQUFHLDREQUE0RCxDQUFDO0FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUM7QUFDbkQsTUFBTSwrQkFBK0Is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QyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxZQUNuQywwQkFBMEI7OEJBUzFCLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT3V0cHV0LCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBBY2Nlc3NTdGF0dXMsXG4gICAgQWNjb3VudHNSZXNwb25zZSxcbiAgICB0eXBlIEFwcGxpY2F0aW9uQWNjZXNzLFxufSBmcm9tICcuL21vZGVscy9hcHBsaWNhdGlvbi1hY2Nlc3MnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRva2VuUGF5bG9hZCB9IGZyb20gJy4uL21vZGVscy90b2tlbi1wYXlsb2FkJztcbmltcG9ydCB7IGp3dERlY29kZSwgSnd0UGF5bG9hZCB9IGZyb20gJ2p3dC1kZWNvZGUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmRlcGVuZGVudFN0dWR5UmVzcG9uc2UsIFBlcnNvblN1bW1hcnkgfSBmcm9tICcuL21vZGVscy9wZXJzb24tc3VtbWFyeSc7XG5pbXBvcnQgdXJsY2F0IGZyb20gJ3VybGNhdCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29weVRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuLi9jb3B5LXRvb2x0aXAvY29weS10b29sdGlwLmNvbXBvbmVudCc7XG5cbmNvbnN0IFVTRVJfUEhPVE9fVVJMID0gJ2h0dHBzOi8veS5ieXUuZWR1L3J5L2FlL3Byb2QvcGVyc29uL2NnaS9wZXJzb25QaG90by5jZ2k/bj0nO1xuY29uc3QgUEVSU09OX1NVTU1BUllfUEFUSCA9ICcvc3VtbWFyeS86bGlicmFyeUlkLyc7XG5jb25zdCBJTkRFUEVOREVOVF9TVFVEWV9SRVNQT05TRV9QQVRIID0gJy9pbmRlcGVuZGVudC1zdHVkeS86bGlicmFyeUlkLyc7XG5jb25zdCBQQVRST05fQUNDT1VOVFNfUEFUSCA9ICcvcGF0cm9uL2FjY291bnRzJztcblxuLyoqXG4gKiBAdG9kbzogUmVmYWN0b3I6IG15IHJlY29tbWVuZGF0aW9uIHdvdWxkIGJlIHRvIGFsbG93IGEgdXNlciB0byBiZSBwYXNzZWQgaW50byB0aGlzIGNvbXBvbmVudCB2aWEgYW4gaW5wdXQgaW5zdGVhZCBvZiB0aGUgdXNlcnMgY29taW5nIGZyb20gYW4gQVBJIGNhbGwgYmFzZWQgb24gdGhlIEpXVCBwYXNzZWQgaW4uIFRoaXMgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZTpcbiAqICBgYGBcbiAqICAgIO+8oElucHV0KCkgdXNlcjoge1xuICogICAgICBwcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheT86IHN0cmluZ1xuICogICAgICB1bmRlcmdyYWRfZ3JhZHVhdGVfc3RhdHVzPzogc3RyaW5nXG4gKiAgICAgIHJlc3RyaWN0ZWQ/OiBib29sZWFuXG4gKiAgICAgIGlzX3JldGlyZWQ/OiBib29sZWFuXG4gKiAgICAgIGlzX2VtcGxveWVlPzogYm9vbGVhblxuICogICAgICBwcmltYXJ5X3Bvc2l0aW9uX3R5cGU/OiBzdHJpbmdcbiAqICAgIH1cbiAqIGBgYFxuICogQWNjZXB0aW5nIGFsbCBwcm9wZXJ0aWVzIHRoYXQgYXJlIHVzZWQgaW4gdGhpcyBjb21wb25lbnQgd2l0aG91dCBuZWVkaW5nIHRvIGJyaW5nIGluIHRoZSB1c2VyIHR5cGUgZXhwbGljaXRseS4gT3IgdGhlIHByb3BlcnRpZXMgb24gdGhpcyB1c2VyIG9iamVjdCBjb3VsZCBiZSBtYWRlIGV2ZW4gbW9yZSBnZW5lcmFsIGFzIHRvIG5vdCBiZSB0aWVkIGF0IGFsbCB0byBhbnkgc3BlY2lmaWMgdHlwZS5cbiAqXG4gKiBTb21ldGhpbmcgc2ltaWxhciBjb3VsZCBiZSBkb25lIHdpdGggYGFjY291bnRTdGF0dXNlc2AuIEknZCByZWNvbW1lbmQgdGhlIGNvbnN1bWluZyBhcHBsaWNhdGlvbiBwcmVwYXJlIGFycmF5cyBvZiBzdHJpbmdzIHRvIGJlIHBhc3NlZCBpbnRvIGlucHV0cyBvZiBgYWNjb3VudHNPa2AsIGBhY2NvdW50c0Jsb2NrZWRgLCBhbmQgYGFjY291bnRzTm9uZWAsIHRoYXQgYXJlIHRoZW4gcGFzc2VkIGludG8gYW5kIGRpc3BsYXllZCBpbiB0aGUgdGVtcGxhdGUuXG4gKlxuICogVGhlIGlkZWEgYmVoaW5kIHRoZXNlIHJldmlzaW9ucyBpcyB0aGF0IHRoZXJlIGlzIGxlc3MgYnVzaW5lc3MgbG9naWMgYmFrZWQgaW50byB0aGlzIGNvbXBvbmVudCwgYXMgaXQncyByb2xlIGlzIGp1c3Qgb25lIG9mIHByZXNlbnRhdGlvbi4gSXQgd2lsbCBhbHNvIGF2b2lkIG11bHRpcGxlIEFQSSBjYWxscyBmb3IgdGhlIHNhbWUgZGF0YSBpbiBvdXIgYmlnIEFuZ3VsYXIgYXBwcy5cbiAqXG4gKiBCZXN0IG9mIGx1Y2ssXG4gKiBQYXVsXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ29weVRvb2x0aXBDb21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnbGliLWltcGVyc29uYXRpb24tYmFubmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEltcGVyc29uYXRpb25CYW5uZXJDb21wb25lbnQge1xuICAgIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBhY2Nlc3NUb2tlblBheWxvYWQgPSBpbnB1dC5yZXF1aXJlZDxUb2tlblBheWxvYWQ+KCk7XG4gICAgcGVyc29uQmFzZVVyaSA9IGlucHV0KCdodHRwczovL2FwcHMubGliLmJ5dS5lZHUvcGVyc29uL3YyLycpO1xuICAgIG15QWNjb3VudEFwaUJhc2VVcmkgPSBpbnB1dCgnaHR0cHM6Ly9hcGkubGliLmJ5dS5lZHUvdjEnKTtcbiAgICBAT3V0cHV0KCkgZW5kSW1wZXJzb25hdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByb3RlY3RlZCBwYXJzZWRUb2tlbjogU2lnbmFsPEp3dFBheWxvYWQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW4gPyBqd3REZWNvZGUodGhpcy5hY2Nlc3NUb2tlblBheWxvYWQoKS50b2tlbikgOiB7fSxcbiAgICApO1xuICAgIHByb3RlY3RlZCBpc0ltcGVyc29uYXRpbmcgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMucGFyc2VkVG9rZW4oKVsnaW1wZXJzb25hdG9yJ10pO1xuICAgIHByb3RlY3RlZCBsaWJyYXJ5SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBhcnNlZFRva2VuKClbJ2xpYnJhcnlfaWQnXSk7XG4gICAgcHJvdGVjdGVkIHVzZXIgPSB0b1NpZ25hbChcbiAgICAgICAgY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMubGlicmFyeUlkKSwgdG9PYnNlcnZhYmxlKHRoaXMuaXNJbXBlcnNvbmF0aW5nKV0pLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKFtsaWJyYXJ5SWQsIGlzSW1wZXJzb25hdGluZ10pID0+XG4gICAgICAgICAgICAgICAgbGlicmFyeUlkICYmIGlzSW1wZXJzb25hdGluZ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuaHR0cC5nZXQ8UGVyc29uU3VtbWFyeT4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVybGNhdCh0aGlzLnBlcnNvbkJhc2VVcmkoKSwgUEVSU09OX1NVTU1BUllfUEFUSCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VuUGF5bG9hZCgpLnRva2VufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBvZihudWxsKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgdXNlckZ1bGxOYW1lID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5wYXJzZWRUb2tlbigpWydnaXZlbl9uYW1lJ11cbiAgICAgICAgICAgID8gYCR7dGhpcy5wYXJzZWRUb2tlbigpWydnaXZlbl9uYW1lJ119ICR7dGhpcy5wYXJzZWRUb2tlbigpWydmYW1pbHlfbmFtZSddfWBcbiAgICAgICAgICAgIDogJ1Vua25vd24nLFxuICAgICk7XG4gICAgcHJvdGVjdGVkIGlzUmVzdHJpY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudXNlcigpPy5yZXN0cmljdGVkKTtcbiAgICBwcm90ZWN0ZWQgdXNlckluZm9UYWJzID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgICAgICBbJ05ldCBJRCcsIHRoaXMucGFyc2VkVG9rZW4oKVsnbmV0X2lkJ10gPz8gJyddLFxuICAgICAgICAgICAgICAgIFsnQllVIElEJywgdGhpcy5wYXJzZWRUb2tlbigpWydieXVfaWQnXSA/PyAnJ10sXG4gICAgICAgICAgICAgICAgWydFbWFpbCcsIHRoaXMudXNlcigpPy5lbWFpbF9hZGRyZXNzID8/ICcnXSxcbiAgICAgICAgICAgIF0pLFxuICAgICk7XG4gICAgcHJvdGVjdGVkIHVzZXJQaG90b1VybCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMucGFyc2VkVG9rZW4oKVsnbmV0X2lkJ10gPyBVU0VSX1BIT1RPX1VSTCArIHRoaXMucGFyc2VkVG9rZW4oKVsnbmV0X2lkJ10gOiAnJyxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIGFjdGl2aXR5U3RhdHVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy51c2VyKCk/LmlzX3JldGlyZWQpIHJldHVybiAncmV0aXJlZCc7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudXNlcigpPy5pc19lbXBsb3llZSkgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnVzZXIoKT8ucHJpbWFyeV9wb3NpdGlvbl90eXBlKSByZXR1cm4gJ2luYWN0aXZlJztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgZW1wbG95ZWVTdGF0dXNEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSAnJztcbiAgICAgICAgaWYgKHRoaXMudXNlcigpIS5pc19yZXRpcmVkKSB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdSZXRpcmVkJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVzZXIoKSEuaXNfZW1wbG95ZWUpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ0FjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VyKCkhLnByaW1hcnlfcG9zaXRpb25fdHlwZSkge1xuICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAnSW5hY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudXNlcigpIS5wcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheSkge1xuICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYCAke3RoaXMudXNlcigpIS5wcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheX0gRW1wbG95ZWVgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uID8/IG51bGw7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgaW5kZXBlbmRlbnRTdHVkeVN0YXR1cyA9IHRvU2lnbmFsKFxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5saWJyYXJ5SWQpLCB0b09ic2VydmFibGUodGhpcy5pc0ltcGVyc29uYXRpbmcpXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2xpYnJhcnlJZCwgaXNJbXBlcnNvbmF0aW5nXSkgPT5cbiAgICAgICAgICAgICAgICBsaWJyYXJ5SWQgJiYgaXNJbXBlcnNvbmF0aW5nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQ8SW5kZXBlbmRlbnRTdHVkeVJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybGNhdCh0aGlzLnBlcnNvbkJhc2VVcmkoKSwgSU5ERVBFTkRFTlRfU1RVRFlfUkVTUE9OU0VfUEFUSCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW59YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZT8uaXNfZW5yb2xsZWQpKVxuICAgICAgICAgICAgICAgICAgICA6IG9mKG51bGwpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICApO1xuICAgIHByb3RlY3RlZCBhY2NvdW50U3RhdHVzZXMgPSB0b1NpZ25hbChcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuaXNJbXBlcnNvbmF0aW5nKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChpc0ltcGVyc29uYXRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzSW1wZXJzb25hdGluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgLmdldDxBY2NvdW50c1Jlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybGNhdCh0aGlzLm15QWNjb3VudEFwaUJhc2VVcmkoKSwgUEFUUk9OX0FDQ09VTlRTX1BBVEgpLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW59YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoYWNjb3VudHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50U3RhdHVzZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBbXSBhcyBBcHBsaWNhdGlvbkFjY2Vzc1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkOiBbXSBhcyBBcHBsaWNhdGlvbkFjY2Vzc1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lOiBbXSBhcyBBcHBsaWNhdGlvbkFjY2Vzc1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGFjY291bnRzLmFwcGxpY2F0aW9ucykuZm9yRWFjaCgoYXBwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXBwLmFjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NTdGF0dXMuT0s6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzLm9rLnB1c2goYXBwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzU3RhdHVzLkJMT0NLRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzLmJsb2NrZWQucHVzaChhcHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NTdGF0dXMuTk9ORTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50U3RhdHVzZXMubm9uZS5wdXNoKGFwcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2NvdW50U3RhdHVzZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcbn1cbiIsIkBpZiAoaXNJbXBlcnNvbmF0aW5nKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYmFubmVyLXBhZGRpbmdcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidG9wLWJhbm5lclwiIGRhdGEtdGVzdGlkPVwiYmFubmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXItZ3JvdXAgcHJvZmlsZS1uYW1lLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJ1c2VyUGhvdG9VcmwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cInVzZXJGdWxsTmFtZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInVzZXIgcGhvdG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25lcnJvcj1cInRoaXMucmVtb3ZlKClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBwcm9maWxlLWljb25cIj4gcGVyc29uIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbmFtZS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mdFwiPkltcGVyc29uYXRpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbmFtZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1uYW1lXCI+e3sgdXNlckZ1bGxOYW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjb3VudFN0YXR1c2VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY2NvdW50U3RhdHVzZXMoKT8ub2s/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtb2sgYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tY2hlY2ttYXJrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGljYXRpb24tY291bnRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50U3RhdHVzZXMoKT8ub2s/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy10b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSyBBcHBsaWNhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gb2YgYWNjb3VudFN0YXR1c2VzKCk/Lm9rID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgYXBwbGljYXRpb24ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tY2hlY2ttYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFwcGxpY2F0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY2NvdW50U3RhdHVzZXMoKT8uYmxvY2tlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1cy1ibG9ja2VkIGFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLWNvdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzKCk/LmJsb2NrZWQ/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy10b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja2VkIEFwcGxpY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBvZiBhY2NvdW50U3RhdHVzZXMoKT8uYmxvY2tlZCA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGFwcGxpY2F0aW9uLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFwcGxpY2F0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY2NvdW50U3RhdHVzZXMoKT8ubm9uZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1cy1ub25lIGFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLWxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLWNvdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzKCk/Lm5vbmU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy10b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBBY2NvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIG9mIGFjY291bnRTdGF0dXNlcygpPy5ub25lID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgYXBwbGljYXRpb24ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFwcGxpY2F0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWxzLWNvbnRhaW5lciBiYW5uZXItZ3JvdXBcIj5cbiAgICAgICAgICAgIEBmb3IgKGRldGFpbCBvZiB1c2VySW5mb1RhYnMoKSB8IGtleXZhbHVlOyB0cmFjayBkZXRhaWwua2V5KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mdCBsYWJlbFwiPnt7IGRldGFpbC5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItY29weS10b29sdGlwIFtjb3B5VGV4dF09XCJkZXRhaWwudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWRldGFpbC10YWcgd2hpdGUtdGFnIGNsaWNrYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFpbC52YWx1ZSB8fCAnVW5rbm93bicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1jb3B5LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWxzLWNvbnRhaW5lciBiYW5uZXItZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWRldGFpbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mdCBsYWJlbFwiPlN0YXR1czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtZGV0YWlsLXRhZ3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLWRldGFpbC10YWcgY29sb3ItdGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZW1wbG95ZWVTdGF0dXNEZXNjcmlwdGlvbigpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlcigpPy5wcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheSA/PyAnTm9uLWVtcGxveWVlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpdml0eVN0YXR1cygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLXN0YXR1cy1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RhdHVzLWFjdGl2ZV09XCJhY3Rpdml0eVN0YXR1cygpID09PSAnYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGF0dXMtaW5hY3RpdmVdPVwiYWN0aXZpdHlTdGF0dXMoKSA9PT0gJ2luYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGF0dXMtcmV0aXJlZF09XCJhY3Rpdml0eVN0YXR1cygpID09PSAncmV0aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWwtdGFnIGNvbG9yLXRhZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKHVzZXIoKT8udW5kZXJncmFkX2dyYWR1YXRlX3N0YXR1cyB8IHRpdGxlY2FzZSkgfHwgJ05vbi1zdHVkZW50JyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlsLXRhZyBjb2xvci10YWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGluZGVwZW5kZW50U3R1ZHlTdGF0dXMoKSA/ICdJbmRlcGVuZGVudCBTdHVkeScgOiAnTm8gSW5kLiBTdHVkeScgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVuZC1pbXBlcnNvbmF0aW9uLWJ1dHRvbiBzaGFkb3dcIiAoY2xpY2spPVwidGhpcy5lbmRJbXBlcnNvbmF0aW9uLmVtaXQoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb25cIj4gY2xvc2UgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleGl0LXRleHRcIj5FeGl0PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGlzUmVzdHJpY3RlZCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN0cmljdGVkLWJhci1wYWRkaW5nXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN0cmljdGVkLWJhclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnJlc3RyaWN0ZWQgcGVyc29uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgSWYgYW55b25lIGFza3MgYWJvdXQgdGhpcyBwZXJzb24sIHlvdSBhcmUgaW5zdHJ1Y3RlZCB0byByZXNwb25kLFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1waGFzaXplXCI+XCJXZSBoYXZlIG5vIHJlY29yZHMgZm9yIHRoaXMgcGVyc29uLlwiPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0LWJvcmRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3R0b20tYm9yZGVyXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxlZnQtYm9yZGVyXCI+PC9kaXY+XG59XG4iXX0=
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2ltcGVyc29uYXRpb24tYmFubmVyL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9pbXBlcnNvbmF0aW9uLWJhbm5lci9pbXBlcnNvbmF0aW9uLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUNILFlBQVksR0FHZixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRTlFLE1BQU0sY0FBYyxHQUFHLDREQUE0RCxDQUFDO0FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUM7QUFDbkQsTUFBTSwrQkFBK0Is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eEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsWUFDbkMsMEJBQTBCOzhCQVMxQixnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIE91dHB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQWNjZXNzU3RhdHVzLFxuICAgIEFjY291bnRzUmVzcG9uc2UsXG4gICAgdHlwZSBBcHBsaWNhdGlvbkFjY2Vzcyxcbn0gZnJvbSAnLi9tb2RlbHMvYXBwbGljYXRpb24tYWNjZXNzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUb2tlblBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvdG9rZW4tcGF5bG9hZCc7XG5pbXBvcnQgeyBqd3REZWNvZGUsIEp3dFBheWxvYWQgfSBmcm9tICdqd3QtZGVjb2RlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5kZXBlbmRlbnRTdHVkeVJlc3BvbnNlLCBQZXJzb25TdW1tYXJ5IH0gZnJvbSAnLi9tb2RlbHMvcGVyc29uLXN1bW1hcnknO1xuaW1wb3J0IHVybGNhdCBmcm9tICd1cmxjYXQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvcHlUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29weS10b29sdGlwL2NvcHktdG9vbHRpcC5jb21wb25lbnQnO1xuXG5jb25zdCBVU0VSX1BIT1RPX1VSTCA9ICdodHRwczovL3kuYnl1LmVkdS9yeS9hZS9wcm9kL3BlcnNvbi9jZ2kvcGVyc29uUGhvdG8uY2dpP249JztcbmNvbnN0IFBFUlNPTl9TVU1NQVJZX1BBVEggPSAnL3N1bW1hcnkvOmxpYnJhcnlJZC8nO1xuY29uc3QgSU5ERVBFTkRFTlRfU1RVRFlfUkVTUE9OU0VfUEFUSCA9ICcvaW5kZXBlbmRlbnQtc3R1ZHkvOmxpYnJhcnlJZC8nO1xuY29uc3QgUEFUUk9OX0FDQ09VTlRTX1BBVEggPSAnL3BhdHJvbi9hY2NvdW50cyc7XG5cbi8qKlxuICogQHRvZG86IFJlZmFjdG9yOiBteSByZWNvbW1lbmRhdGlvbiB3b3VsZCBiZSB0byBhbGxvdyBhIHVzZXIgdG8gYmUgcGFzc2VkIGludG8gdGhpcyBjb21wb25lbnQgdmlhIGFuIGlucHV0IGluc3RlYWQgb2YgdGhlIHVzZXJzIGNvbWluZyBmcm9tIGFuIEFQSSBjYWxsIGJhc2VkIG9uIHRoZSBKV1QgcGFzc2VkIGluLiBUaGlzIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2U6XG4gKiAgYGBgXG4gKiAgICDvvKBJbnB1dCgpIHVzZXI6IHtcbiAqICAgICAgcHJpbWFyeV9wb3NpdGlvbl90eXBlX2Rpc3BsYXk/OiBzdHJpbmdcbiAqICAgICAgdW5kZXJncmFkX2dyYWR1YXRlX3N0YXR1cz86IHN0cmluZ1xuICogICAgICByZXN0cmljdGVkPzogYm9vbGVhblxuICogICAgICBpc19yZXRpcmVkPzogYm9vbGVhblxuICogICAgICBpc19lbXBsb3llZT86IGJvb2xlYW5cbiAqICAgICAgcHJpbWFyeV9wb3NpdGlvbl90eXBlPzogc3RyaW5nXG4gKiAgICB9XG4gKiBgYGBcbiAqIEFjY2VwdGluZyBhbGwgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIGluIHRoaXMgY29tcG9uZW50IHdpdGhvdXQgbmVlZGluZyB0byBicmluZyBpbiB0aGUgdXNlciB0eXBlIGV4cGxpY2l0bHkuIE9yIHRoZSBwcm9wZXJ0aWVzIG9uIHRoaXMgdXNlciBvYmplY3QgY291bGQgYmUgbWFkZSBldmVuIG1vcmUgZ2VuZXJhbCBhcyB0byBub3QgYmUgdGllZCBhdCBhbGwgdG8gYW55IHNwZWNpZmljIHR5cGUuXG4gKlxuICogU29tZXRoaW5nIHNpbWlsYXIgY291bGQgYmUgZG9uZSB3aXRoIGBhY2NvdW50U3RhdHVzZXNgLiBJJ2QgcmVjb21tZW5kIHRoZSBjb25zdW1pbmcgYXBwbGljYXRpb24gcHJlcGFyZSBhcnJheXMgb2Ygc3RyaW5ncyB0byBiZSBwYXNzZWQgaW50byBpbnB1dHMgb2YgYGFjY291bnRzT2tgLCBgYWNjb3VudHNCbG9ja2VkYCwgYW5kIGBhY2NvdW50c05vbmVgLCB0aGF0IGFyZSB0aGVuIHBhc3NlZCBpbnRvIGFuZCBkaXNwbGF5ZWQgaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIFRoZSBpZGVhIGJlaGluZCB0aGVzZSByZXZpc2lvbnMgaXMgdGhhdCB0aGVyZSBpcyBsZXNzIGJ1c2luZXNzIGxvZ2ljIGJha2VkIGludG8gdGhpcyBjb21wb25lbnQsIGFzIGl0J3Mgcm9sZSBpcyBqdXN0IG9uZSBvZiBwcmVzZW50YXRpb24uIEl0IHdpbGwgYWxzbyBhdm9pZCBtdWx0aXBsZSBBUEkgY2FsbHMgZm9yIHRoZSBzYW1lIGRhdGEgaW4gb3VyIGJpZyBBbmd1bGFyIGFwcHMuXG4gKlxuICogQmVzdCBvZiBsdWNrLFxuICogUGF1bFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENvcHlUb29sdGlwQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2xpYi1pbXBlcnNvbmF0aW9uLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbXBlcnNvbmF0aW9uLWJhbm5lci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbXBlcnNvbmF0aW9uQmFubmVyQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgYWNjZXNzVG9rZW5QYXlsb2FkID0gaW5wdXQucmVxdWlyZWQ8VG9rZW5QYXlsb2FkPigpO1xuICAgIHBlcnNvbkJhc2VVcmkgPSBpbnB1dCgnaHR0cHM6Ly9hcHBzLmxpYi5ieXUuZWR1L3BlcnNvbi92Mi8nKTtcbiAgICBsaWJyYXJ5QXBpQmFzZVVyaSA9IGlucHV0KCdodHRwczovL2FwaS5saWIuYnl1LmVkdS92MScpO1xuICAgIEBPdXRwdXQoKSBlbmRJbXBlcnNvbmF0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJvdGVjdGVkIHBhcnNlZFRva2VuOiBTaWduYWw8Snd0UGF5bG9hZCAmIFJlY29yZDxzdHJpbmcsIGFueT4+ID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblBheWxvYWQoKS50b2tlbiA/IGp3dERlY29kZSh0aGlzLmFjY2Vzc1Rva2VuUGF5bG9hZCgpLnRva2VuKSA6IHt9LFxuICAgICk7XG4gICAgcHJvdGVjdGVkIGlzSW1wZXJzb25hdGluZyA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5wYXJzZWRUb2tlbigpWydpbXBlcnNvbmF0b3InXSk7XG4gICAgcHJvdGVjdGVkIGxpYnJhcnlJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFyc2VkVG9rZW4oKVsnbGlicmFyeV9pZCddKTtcbiAgICBwcm90ZWN0ZWQgdXNlciA9IHRvU2lnbmFsKFxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5saWJyYXJ5SWQpLCB0b09ic2VydmFibGUodGhpcy5pc0ltcGVyc29uYXRpbmcpXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2xpYnJhcnlJZCwgaXNJbXBlcnNvbmF0aW5nXSkgPT5cbiAgICAgICAgICAgICAgICBsaWJyYXJ5SWQgJiYgaXNJbXBlcnNvbmF0aW5nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5odHRwLmdldDxQZXJzb25TdW1tYXJ5PihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsY2F0KHRoaXMucGVyc29uQmFzZVVyaSgpLCBQRVJTT05fU1VNTUFSWV9QQVRILCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW59YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICA6IG9mKG51bGwpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICApO1xuICAgIHByb3RlY3RlZCB1c2VyRnVsbE5hbWUgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgICB0aGlzLnBhcnNlZFRva2VuKClbJ2dpdmVuX25hbWUnXVxuICAgICAgICAgICAgPyBgJHt0aGlzLnBhcnNlZFRva2VuKClbJ2dpdmVuX25hbWUnXX0gJHt0aGlzLnBhcnNlZFRva2VuKClbJ2ZhbWlseV9uYW1lJ119YFxuICAgICAgICAgICAgOiAnVW5rbm93bicsXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgaXNSZXN0cmljdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy51c2VyKCk/LnJlc3RyaWN0ZWQpO1xuICAgIHByb3RlY3RlZCB1c2VySW5mb1RhYnMgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIG5ldyBNYXAoW1xuICAgICAgICAgICAgICAgIFsnTmV0IElEJywgdGhpcy5wYXJzZWRUb2tlbigpWyduZXRfaWQnXSA/PyAnJ10sXG4gICAgICAgICAgICAgICAgWydCWVUgSUQnLCB0aGlzLnBhcnNlZFRva2VuKClbJ2J5dV9pZCddID8/ICcnXSxcbiAgICAgICAgICAgICAgICBbJ0VtYWlsJywgdGhpcy51c2VyKCk/LmVtYWlsX2FkZHJlc3MgPz8gJyddLFxuICAgICAgICAgICAgXSksXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgdXNlclBob3RvVXJsID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5wYXJzZWRUb2tlbigpWyduZXRfaWQnXSA/IFVTRVJfUEhPVE9fVVJMICsgdGhpcy5wYXJzZWRUb2tlbigpWyduZXRfaWQnXSA6ICcnLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgYWN0aXZpdHlTdGF0dXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnVzZXIoKT8uaXNfcmV0aXJlZCkgcmV0dXJuICdyZXRpcmVkJztcbiAgICAgICAgZWxzZSBpZiAodGhpcy51c2VyKCk/LmlzX2VtcGxveWVlKSByZXR1cm4gJ2FjdGl2ZSc7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudXNlcigpPy5wcmltYXJ5X3Bvc2l0aW9uX3R5cGUpIHJldHVybiAnaW5hY3RpdmUnO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBlbXBsb3llZVN0YXR1c0Rlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMudXNlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkZXNjcmlwdGlvbiA9ICcnO1xuICAgICAgICBpZiAodGhpcy51c2VyKCkhLmlzX3JldGlyZWQpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ1JldGlyZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNlcigpIS5pc19lbXBsb3llZSkge1xuICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAnQWN0aXZlJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVzZXIoKSEucHJpbWFyeV9wb3NpdGlvbl90eXBlKSB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdJbmFjdGl2ZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51c2VyKCkhLnByaW1hcnlfcG9zaXRpb25fdHlwZV9kaXNwbGF5KSB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbiArPSBgICR7dGhpcy51c2VyKCkhLnByaW1hcnlfcG9zaXRpb25fdHlwZV9kaXNwbGF5fSBFbXBsb3llZWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24gPz8gbnVsbDtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBpbmRlcGVuZGVudFN0dWR5U3RhdHVzID0gdG9TaWduYWwoXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RvT2JzZXJ2YWJsZSh0aGlzLmxpYnJhcnlJZCksIHRvT2JzZXJ2YWJsZSh0aGlzLmlzSW1wZXJzb25hdGluZyldKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChbbGlicmFyeUlkLCBpc0ltcGVyc29uYXRpbmddKSA9PlxuICAgICAgICAgICAgICAgIGxpYnJhcnlJZCAmJiBpc0ltcGVyc29uYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldDxJbmRlcGVuZGVudFN0dWR5UmVzcG9uc2U+KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsY2F0KHRoaXMucGVyc29uQmFzZVVyaSgpLCBJTkRFUEVOREVOVF9TVFVEWV9SRVNQT05TRV9QQVRILCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlblBheWxvYWQoKS50b2tlbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlPy5pc19lbnJvbGxlZCkpXG4gICAgICAgICAgICAgICAgICAgIDogb2YobnVsbCksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICk7XG4gICAgcHJvdGVjdGVkIGFjY291bnRTdGF0dXNlcyA9IHRvU2lnbmFsKFxuICAgICAgICB0b09ic2VydmFibGUodGhpcy5pc0ltcGVyc29uYXRpbmcpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGlzSW1wZXJzb25hdGluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNJbXBlcnNvbmF0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgICAgICAuZ2V0PEFjY291bnRzUmVzcG9uc2U+KHVybGNhdCh0aGlzLmxpYnJhcnlBcGlCYXNlVXJpKCksIFBBVFJPTl9BQ0NPVU5UU19QQVRIKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VuUGF5bG9hZCgpLnRva2VufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoYWNjb3VudHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50U3RhdHVzZXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBbXSBhcyBBcHBsaWNhdGlvbkFjY2Vzc1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkOiBbXSBhcyBBcHBsaWNhdGlvbkFjY2Vzc1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lOiBbXSBhcyBBcHBsaWNhdGlvbkFjY2Vzc1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGFjY291bnRzLmFwcGxpY2F0aW9ucykuZm9yRWFjaCgoYXBwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYXBwLmFjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NTdGF0dXMuT0s6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzLm9rLnB1c2goYXBwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzU3RhdHVzLkJMT0NLRUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzLmJsb2NrZWQucHVzaChhcHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NTdGF0dXMuTk9ORTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50U3RhdHVzZXMubm9uZS5wdXNoKGFwcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2NvdW50U3RhdHVzZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcbn1cbiIsIkBpZiAoaXNJbXBlcnNvbmF0aW5nKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYmFubmVyLXBhZGRpbmdcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidG9wLWJhbm5lclwiIGRhdGEtdGVzdGlkPVwiYmFubmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXItZ3JvdXAgcHJvZmlsZS1uYW1lLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJ1c2VyUGhvdG9VcmwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cInVzZXJGdWxsTmFtZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInVzZXIgcGhvdG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25lcnJvcj1cInRoaXMucmVtb3ZlKClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBwcm9maWxlLWljb25cIj4gcGVyc29uIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbmFtZS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mdFwiPkltcGVyc29uYXRpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtbmFtZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZmlsZS1uYW1lXCI+e3sgdXNlckZ1bGxOYW1lKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjb3VudFN0YXR1c2VzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY2NvdW50U3RhdHVzZXMoKT8ub2s/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtb2sgYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tY2hlY2ttYXJrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGljYXRpb24tY291bnRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50U3RhdHVzZXMoKT8ub2s/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy10b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSyBBcHBsaWNhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gb2YgYWNjb3VudFN0YXR1c2VzKCk/Lm9rID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgYXBwbGljYXRpb24ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tY2hlY2ttYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFwcGxpY2F0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY2NvdW50U3RhdHVzZXMoKT8uYmxvY2tlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1cy1ibG9ja2VkIGFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLXdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLWNvdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzKCk/LmJsb2NrZWQ/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy10b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja2VkIEFwcGxpY2F0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBvZiBhY2NvdW50U3RhdHVzZXMoKT8uYmxvY2tlZCA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGFwcGxpY2F0aW9uLmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24td2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFwcGxpY2F0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY2NvdW50U3RhdHVzZXMoKT8ubm9uZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1cy1ub25lIGFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLWxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLWNvdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzKCk/Lm5vbmU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy10b29sdGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBBY2NvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIG9mIGFjY291bnRTdGF0dXNlcygpPy5ub25lID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgYXBwbGljYXRpb24ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb24tbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFwcGxpY2F0aW9uLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWxzLWNvbnRhaW5lciBiYW5uZXItZ3JvdXBcIj5cbiAgICAgICAgICAgIEBmb3IgKGRldGFpbCBvZiB1c2VySW5mb1RhYnMoKSB8IGtleXZhbHVlOyB0cmFjayBkZXRhaWwua2V5KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mdCBsYWJlbFwiPnt7IGRldGFpbC5rZXkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxsaWItY29weS10b29sdGlwIFtjb3B5VGV4dF09XCJkZXRhaWwudmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWRldGFpbC10YWcgd2hpdGUtdGFnIGNsaWNrYWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRldGFpbC52YWx1ZSB8fCAnVW5rbm93bicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1jb3B5LXRvb2x0aXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWxzLWNvbnRhaW5lciBiYW5uZXItZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWRldGFpbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic29mdCBsYWJlbFwiPlN0YXR1czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtZGV0YWlsLXRhZ3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLWRldGFpbC10YWcgY29sb3ItdGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZW1wbG95ZWVTdGF0dXNEZXNjcmlwdGlvbigpIH19XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlcigpPy5wcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheSA/PyAnTm9uLWVtcGxveWVlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpdml0eVN0YXR1cygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9maWxlLXN0YXR1cy1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RhdHVzLWFjdGl2ZV09XCJhY3Rpdml0eVN0YXR1cygpID09PSAnYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGF0dXMtaW5hY3RpdmVdPVwiYWN0aXZpdHlTdGF0dXMoKSA9PT0gJ2luYWN0aXZlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zdGF0dXMtcmV0aXJlZF09XCJhY3Rpdml0eVN0YXR1cygpID09PSAncmV0aXJlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWwtdGFnIGNvbG9yLXRhZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgKHVzZXIoKT8udW5kZXJncmFkX2dyYWR1YXRlX3N0YXR1cyB8IHRpdGxlY2FzZSkgfHwgJ05vbi1zdHVkZW50JyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlsLXRhZyBjb2xvci10YWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGluZGVwZW5kZW50U3R1ZHlTdGF0dXMoKSA/ICdJbmRlcGVuZGVudCBTdHVkeScgOiAnTm8gSW5kLiBTdHVkeScgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImVuZC1pbXBlcnNvbmF0aW9uLWJ1dHRvbiBzaGFkb3dcIiAoY2xpY2spPVwidGhpcy5lbmRJbXBlcnNvbmF0aW9uLmVtaXQoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGljb25cIj4gY2xvc2UgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleGl0LXRleHRcIj5FeGl0PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGlzUmVzdHJpY3RlZCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN0cmljdGVkLWJhci1wYWRkaW5nXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXN0cmljdGVkLWJhclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnJlc3RyaWN0ZWQgcGVyc29uPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgSWYgYW55b25lIGFza3MgYWJvdXQgdGhpcyBwZXJzb24sIHlvdSBhcmUgaW5zdHJ1Y3RlZCB0byByZXNwb25kLFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1waGFzaXplXCI+XCJXZSBoYXZlIG5vIHJlY29yZHMgZm9yIHRoaXMgcGVyc29uLlwiPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0LWJvcmRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJib3R0b20tYm9yZGVyXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxlZnQtYm9yZGVyXCI+PC9kaXY+XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ButtonGroupItemComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.isActive = false;
|
|
7
|
+
this.disabled = false;
|
|
8
|
+
this.buttonClick = new EventEmitter();
|
|
9
|
+
}
|
|
10
|
+
onClick() {
|
|
11
|
+
this.buttonClick.emit(this.button.id);
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonGroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
14
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ButtonGroupItemComponent, isStandalone: true, selector: "lib-button-group-item", inputs: { button: "button", isActive: "isActive", disabled: "disabled" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"tab-btn\"\n [class.active]=\"isActive\"\n [disabled]=\"disabled\"\n (click)=\"onClick()\"\n role=\"tab\"\n [attr.aria-pressed]=\"isActive\"\n [attr.aria-label]=\"button.title\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n>\n @if (button.icon) {\n <span class=\"icon\">\n <img\n [src]=\"button.icon\"\n [class]=\"disabled ? 'disabled-icon' : isActive ? 'white-icon' : 'dark-icon'\"\n [alt]=\"button.iconAlt || ''\"\n />\n </span>\n }\n\n @if (button.title) {\n <span class=\"button-title\">{{ button.title }}</span>\n }\n</button>\n", styles: [".tab-btn{padding:.5rem;font-size:1rem;font-weight:400;color:#00245d;background-color:#fff;cursor:pointer;position:relative;border:1px solid #d0d0d0;border-left:none;border-radius:0;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:.25rem;height:2.3rem}.tab-btn:not(:disabled):hover{background-color:#e5edf8}.tab-btn.active{background-color:#0047ba;color:#fff;z-index:10}.tab-btn.active:not(:disabled):hover{background-color:#003995}.tab-btn:focus{outline:.125rem solid #b967c7;outline-offset:.125rem}.tab-btn:disabled{cursor:not-allowed;color:#767676;background-color:#e7e7e7;border:1px solid #767676}.tab-btn .icon{display:flex;align-items:center;justify-content:center}.tab-btn .icon img{height:1rem;width:auto}.tab-btn .button-title{flex-shrink:0}.white-icon{filter:invert(100%) sepia(0%) saturate(7489%) hue-rotate(149deg) brightness(104%) contrast(100%)}.dark-icon{filter:invert(12%) sepia(44%) saturate(3863%) hue-rotate(207deg) brightness(90%) contrast(105%)}.disabled-icon{filter:invert(48%) sepia(0%) saturate(0%) hue-rotate(146deg) brightness(96%) contrast(88%)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ButtonGroupItemComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'lib-button-group-item', standalone: true, imports: [CommonModule], template: "<button\n type=\"button\"\n class=\"tab-btn\"\n [class.active]=\"isActive\"\n [disabled]=\"disabled\"\n (click)=\"onClick()\"\n role=\"tab\"\n [attr.aria-pressed]=\"isActive\"\n [attr.aria-label]=\"button.title\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n>\n @if (button.icon) {\n <span class=\"icon\">\n <img\n [src]=\"button.icon\"\n [class]=\"disabled ? 'disabled-icon' : isActive ? 'white-icon' : 'dark-icon'\"\n [alt]=\"button.iconAlt || ''\"\n />\n </span>\n }\n\n @if (button.title) {\n <span class=\"button-title\">{{ button.title }}</span>\n }\n</button>\n", styles: [".tab-btn{padding:.5rem;font-size:1rem;font-weight:400;color:#00245d;background-color:#fff;cursor:pointer;position:relative;border:1px solid #d0d0d0;border-left:none;border-radius:0;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center;gap:.25rem;height:2.3rem}.tab-btn:not(:disabled):hover{background-color:#e5edf8}.tab-btn.active{background-color:#0047ba;color:#fff;z-index:10}.tab-btn.active:not(:disabled):hover{background-color:#003995}.tab-btn:focus{outline:.125rem solid #b967c7;outline-offset:.125rem}.tab-btn:disabled{cursor:not-allowed;color:#767676;background-color:#e7e7e7;border:1px solid #767676}.tab-btn .icon{display:flex;align-items:center;justify-content:center}.tab-btn .icon img{height:1rem;width:auto}.tab-btn .button-title{flex-shrink:0}.white-icon{filter:invert(100%) sepia(0%) saturate(7489%) hue-rotate(149deg) brightness(104%) contrast(100%)}.dark-icon{filter:invert(12%) sepia(44%) saturate(3863%) hue-rotate(207deg) brightness(90%) contrast(105%)}.disabled-icon{filter:invert(48%) sepia(0%) saturate(0%) hue-rotate(146deg) brightness(96%) contrast(88%)}\n"] }]
|
|
19
|
+
}], propDecorators: { button: [{
|
|
20
|
+
type: Input,
|
|
21
|
+
args: [{ required: true }]
|
|
22
|
+
}], isActive: [{
|
|
23
|
+
type: Input
|
|
24
|
+
}], disabled: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], buttonClick: [{
|
|
27
|
+
type: Output
|
|
28
|
+
}] } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWdyb3VwLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3N1YmF0b21pYy1jb21wb25lbnRzL2J1dHRvbi1ncm91cC1pdGVtL2J1dHRvbi1ncm91cC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zdWJhdG9taWMtY29tcG9uZW50cy9idXR0b24tZ3JvdXAtaXRlbS9idXR0b24tZ3JvdXAtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFpQi9DLE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFTYSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0tBS3REO0lBSEcsT0FBTztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0FSUSx3QkFBd0I7a0dBQXhCLHdCQUF3QixvTUNsQnJDLHFyQkF5QkEsbXBDRFhjLFlBQVk7OzJGQUliLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDSSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzhCQUtJLE1BQU07c0JBQWhDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkNvbmZpZyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIGljb25BbHQ/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWJ1dHRvbi1ncm91cC1pdGVtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZ3JvdXAtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2J1dHRvbi1ncm91cC1pdGVtLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uR3JvdXBJdGVtQ29tcG9uZW50IHtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBidXR0b24hOiBCdXR0b25Db25maWc7XG4gICAgQElucHV0KCkgaXNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KHRoaXMuYnV0dG9uLmlkKTtcbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJ0YWItYnRuXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImlzQWN0aXZlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgIHJvbGU9XCJ0YWJcIlxuICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc0FjdGl2ZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b24udGl0bGVcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbj5cbiAgICBAaWYgKGJ1dHRvbi5pY29uKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvblwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZC1pY29uJyA6IGlzQWN0aXZlID8gJ3doaXRlLWljb24nIDogJ2RhcmstaWNvbidcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiYnV0dG9uLmljb25BbHQgfHwgJydcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIEBpZiAoYnV0dG9uLnRpdGxlKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uLXRpdGxlXCI+e3sgYnV0dG9uLnRpdGxlIH19PC9zcGFuPlxuICAgIH1cbjwvYnV0dG9uPlxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -16,4 +16,6 @@ export * from './lib/snackbar/snackbar.component';
|
|
|
16
16
|
export { getUserStatusFromRoles } from './lib/contact-utils';
|
|
17
17
|
export { ADVANCED_SEARCH_QUALIFIER_MAP, ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, } from './lib/ss-search-bar/constants';
|
|
18
18
|
export * from './lib/status-button/status-button.component';
|
|
19
|
-
|
|
19
|
+
export * from './lib/button/button';
|
|
20
|
+
export * from './lib/button-group/button-group.component';
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6Qix1QkFBdUIsR0FDMUIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9oYmxsLWl0ZW0tdHlwZS1pY29uLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaGJsbC1mb290ZXIvaGJsbC1mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlYWRlci13aXRoLWltcGVyc29uYXRpb24vaGVhZGVyLXdpdGgtaW1wZXJzb25hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW1wZXJzb25hdGUtbW9kYWwvaW1wZXJzb25hdGUtbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltcGVyc29uYXRpb24tYmFubmVyL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL3NzLXNlYXJjaC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvbW9kZWxzL2FkdmFuY2VkLXNlYXJjaC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcy1zZWFyY2gtYmFyL21vZGVscy9zZWFyY2gtc2NvcGUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3Mtc2VhcmNoLWJhci9tb2RlbHMvc2VhcmNoLWNvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBnZXRVc2VyU3RhdHVzRnJvbVJvbGVzIH0gZnJvbSAnLi9saWIvY29udGFjdC11dGlscyc7XG5leHBvcnQge1xuICAgIEFEVkFOQ0VEX1NFQVJDSF9RVUFMSUZJRVJfTUFQLFxuICAgIEFEVkFOQ0VEX1NFQVJDSF9GSUVMRF9NQVAsXG4gICAgQURWQU5DRURfU0VBUkNIX09QVElPTlMsXG59IGZyb20gJy4vbGliL3NzLXNlYXJjaC1iYXIvY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0YXR1cy1idXR0b24vc3RhdHVzLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYnV0dG9uL2J1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24tZ3JvdXAvYnV0dG9uLWdyb3VwLmNvbXBvbmVudCc7XG4iXX0=
|