@byuhbll/components 4.4.2 → 4.5.0-beta-2

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.
@@ -39,8 +39,8 @@ export class ImpersonationBannerComponent {
39
39
  constructor() {
40
40
  this.http = inject(HttpClient);
41
41
  this.accessTokenPayload = input.required();
42
- this.personBaseUri = input('https://apps.lib.byu.edu/person/v2/');
43
- this.libraryApiBaseUri = input('https://api.lib.byu.edu/v1');
42
+ this.personBaseUri = input('https://staging.lib.byu.edu/person/v2/');
43
+ this.libraryApiBaseUri = input('https://18927523-review-remove-ill-9pn6z0.review.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) : {});
@@ -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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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=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi1iYW5uZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2ltcGVyc29uYXRpb24tYmFubmVyL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9pbXBlcnNvbmF0aW9uLWJhbm5lci9pbXBlcnNvbmF0aW9uLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUNILFlBQVksR0FHZixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7O0FBRTlFLE1BQU0sY0FBYyxHQUFHLDREQUE0RCxDQUFDO0FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsc0JBQXNCLENBQUM7QUFDbkQsTUFBTSwrQkFBK0Is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eEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsWUFDbkMsMEJBQTBCOzhCQVMxQixnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgaW5wdXQsIE91dHB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQWNjZXNzU3RhdHVzLFxuICAgIEFjY291bnRzUmVzcG9uc2UsXG4gICAgdHlwZSBBcHBsaWNhdGlvbkFjY2Vzcyxcbn0gZnJvbSAnLi9tb2RlbHMvYXBwbGljYXRpb24tYWNjZXNzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUb2tlblBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMvdG9rZW4tcGF5bG9hZCc7XG5pbXBvcnQgeyBqd3REZWNvZGUsIEp3dFBheWxvYWQgfSBmcm9tICdqd3QtZGVjb2RlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5kZXBlbmRlbnRTdHVkeVJlc3BvbnNlLCBQZXJzb25TdW1tYXJ5IH0gZnJvbSAnLi9tb2RlbHMvcGVyc29uLXN1bW1hcnknO1xuaW1wb3J0IHVybGNhdCBmcm9tICd1cmxjYXQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvcHlUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29weS10b29sdGlwL2NvcHktdG9vbHRpcC5jb21wb25lbnQnO1xuXG5jb25zdCBVU0VSX1BIT1RPX1VSTCA9ICdodHRwczovL3kuYnl1LmVkdS9yeS9hZS9wcm9kL3BlcnNvbi9jZ2kvcGVyc29uUGhvdG8uY2dpP249JztcbmNvbnN0IFBFUlNPTl9TVU1NQVJZX1BBVEggPSAnL3N1bW1hcnkvOmxpYnJhcnlJZC8nO1xuY29uc3QgSU5ERVBFTkRFTlRfU1RVRFlfUkVTUE9OU0VfUEFUSCA9ICcvaW5kZXBlbmRlbnQtc3R1ZHkvOmxpYnJhcnlJZC8nO1xuY29uc3QgUEFUUk9OX0FDQ09VTlRTX1BBVEggPSAnL3BhdHJvbi9hY2NvdW50cyc7XG5cbi8qKlxuICogQHRvZG86IFJlZmFjdG9yOiBteSByZWNvbW1lbmRhdGlvbiB3b3VsZCBiZSB0byBhbGxvdyBhIHVzZXIgdG8gYmUgcGFzc2VkIGludG8gdGhpcyBjb21wb25lbnQgdmlhIGFuIGlucHV0IGluc3RlYWQgb2YgdGhlIHVzZXJzIGNvbWluZyBmcm9tIGFuIEFQSSBjYWxsIGJhc2VkIG9uIHRoZSBKV1QgcGFzc2VkIGluLiBUaGlzIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2U6XG4gKiAgYGBgXG4gKiAgICDvvKBJbnB1dCgpIHVzZXI6IHtcbiAqICAgICAgcHJpbWFyeV9wb3NpdGlvbl90eXBlX2Rpc3BsYXk/OiBzdHJpbmdcbiAqICAgICAgdW5kZXJncmFkX2dyYWR1YXRlX3N0YXR1cz86IHN0cmluZ1xuICogICAgICByZXN0cmljdGVkPzogYm9vbGVhblxuICogICAgICBpc19yZXRpcmVkPzogYm9vbGVhblxuICogICAgICBpc19lbXBsb3llZT86IGJvb2xlYW5cbiAqICAgICAgcHJpbWFyeV9wb3NpdGlvbl90eXBlPzogc3RyaW5nXG4gKiAgICB9XG4gKiBgYGBcbiAqIEFjY2VwdGluZyBhbGwgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIGluIHRoaXMgY29tcG9uZW50IHdpdGhvdXQgbmVlZGluZyB0byBicmluZyBpbiB0aGUgdXNlciB0eXBlIGV4cGxpY2l0bHkuIE9yIHRoZSBwcm9wZXJ0aWVzIG9uIHRoaXMgdXNlciBvYmplY3QgY291bGQgYmUgbWFkZSBldmVuIG1vcmUgZ2VuZXJhbCBhcyB0byBub3QgYmUgdGllZCBhdCBhbGwgdG8gYW55IHNwZWNpZmljIHR5cGUuXG4gKlxuICogU29tZXRoaW5nIHNpbWlsYXIgY291bGQgYmUgZG9uZSB3aXRoIGBhY2NvdW50U3RhdHVzZXNgLiBJJ2QgcmVjb21tZW5kIHRoZSBjb25zdW1pbmcgYXBwbGljYXRpb24gcHJlcGFyZSBhcnJheXMgb2Ygc3RyaW5ncyB0byBiZSBwYXNzZWQgaW50byBpbnB1dHMgb2YgYGFjY291bnRzT2tgLCBgYWNjb3VudHNCbG9ja2VkYCwgYW5kIGBhY2NvdW50c05vbmVgLCB0aGF0IGFyZSB0aGVuIHBhc3NlZCBpbnRvIGFuZCBkaXNwbGF5ZWQgaW4gdGhlIHRlbXBsYXRlLlxuICpcbiAqIFRoZSBpZGVhIGJlaGluZCB0aGVzZSByZXZpc2lvbnMgaXMgdGhhdCB0aGVyZSBpcyBsZXNzIGJ1c2luZXNzIGxvZ2ljIGJha2VkIGludG8gdGhpcyBjb21wb25lbnQsIGFzIGl0J3Mgcm9sZSBpcyBqdXN0IG9uZSBvZiBwcmVzZW50YXRpb24uIEl0IHdpbGwgYWxzbyBhdm9pZCBtdWx0aXBsZSBBUEkgY2FsbHMgZm9yIHRoZSBzYW1lIGRhdGEgaW4gb3VyIGJpZyBBbmd1bGFyIGFwcHMuXG4gKlxuICogQmVzdCBvZiBsdWNrLFxuICogUGF1bFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENvcHlUb29sdGlwQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2xpYi1pbXBlcnNvbmF0aW9uLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltcGVyc29uYXRpb24tYmFubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbXBlcnNvbmF0aW9uLWJhbm5lci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJbXBlcnNvbmF0aW9uQmFubmVyQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgYWNjZXNzVG9rZW5QYXlsb2FkID0gaW5wdXQucmVxdWlyZWQ8VG9rZW5QYXlsb2FkPigpO1xuICAgIHBlcnNvbkJhc2VVcmkgPSBpbnB1dCgnaHR0cHM6Ly9zdGFnaW5nLmxpYi5ieXUuZWR1L3BlcnNvbi92Mi8nKTtcbiAgICBsaWJyYXJ5QXBpQmFzZVVyaSA9IGlucHV0KCdodHRwczovLzE4OTI3NTIzLXJldmlldy1yZW1vdmUtaWxsLTlwbjZ6MC5yZXZpZXcubGliLmJ5dS5lZHUvdjEnKTtcbiAgICBAT3V0cHV0KCkgZW5kSW1wZXJzb25hdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByb3RlY3RlZCBwYXJzZWRUb2tlbjogU2lnbmFsPEp3dFBheWxvYWQgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW4gPyBqd3REZWNvZGUodGhpcy5hY2Nlc3NUb2tlblBheWxvYWQoKS50b2tlbikgOiB7fSxcbiAgICApO1xuICAgIHByb3RlY3RlZCBpc0ltcGVyc29uYXRpbmcgPSBjb21wdXRlZCgoKSA9PiAhIXRoaXMucGFyc2VkVG9rZW4oKVsnaW1wZXJzb25hdG9yJ10pO1xuICAgIHByb3RlY3RlZCBsaWJyYXJ5SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBhcnNlZFRva2VuKClbJ2xpYnJhcnlfaWQnXSk7XG4gICAgcHJvdGVjdGVkIHVzZXIgPSB0b1NpZ25hbChcbiAgICAgICAgY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMubGlicmFyeUlkKSwgdG9PYnNlcnZhYmxlKHRoaXMuaXNJbXBlcnNvbmF0aW5nKV0pLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKFtsaWJyYXJ5SWQsIGlzSW1wZXJzb25hdGluZ10pID0+XG4gICAgICAgICAgICAgICAgbGlicmFyeUlkICYmIGlzSW1wZXJzb25hdGluZ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuaHR0cC5nZXQ8UGVyc29uU3VtbWFyeT4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVybGNhdCh0aGlzLnBlcnNvbkJhc2VVcmkoKSwgUEVSU09OX1NVTU1BUllfUEFUSCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VuUGF5bG9hZCgpLnRva2VufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBvZihudWxsKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgKTtcbiAgICBwcm90ZWN0ZWQgdXNlckZ1bGxOYW1lID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5wYXJzZWRUb2tlbigpWydnaXZlbl9uYW1lJ11cbiAgICAgICAgICAgID8gYCR7dGhpcy5wYXJzZWRUb2tlbigpWydnaXZlbl9uYW1lJ119ICR7dGhpcy5wYXJzZWRUb2tlbigpWydmYW1pbHlfbmFtZSddfWBcbiAgICAgICAgICAgIDogJ1Vua25vd24nLFxuICAgICk7XG4gICAgcHJvdGVjdGVkIGlzUmVzdHJpY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudXNlcigpPy5yZXN0cmljdGVkKTtcbiAgICBwcm90ZWN0ZWQgdXNlckluZm9UYWJzID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgICAgICBbJ05ldCBJRCcsIHRoaXMucGFyc2VkVG9rZW4oKVsnbmV0X2lkJ10gPz8gJyddLFxuICAgICAgICAgICAgICAgIFsnQllVIElEJywgdGhpcy5wYXJzZWRUb2tlbigpWydieXVfaWQnXSA/PyAnJ10sXG4gICAgICAgICAgICAgICAgWydFbWFpbCcsIHRoaXMudXNlcigpPy5lbWFpbF9hZGRyZXNzID8/ICcnXSxcbiAgICAgICAgICAgIF0pLFxuICAgICk7XG4gICAgcHJvdGVjdGVkIHVzZXJQaG90b1VybCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICAgIHRoaXMucGFyc2VkVG9rZW4oKVsnbmV0X2lkJ10gPyBVU0VSX1BIT1RPX1VSTCArIHRoaXMucGFyc2VkVG9rZW4oKVsnbmV0X2lkJ10gOiAnJyxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIGFjdGl2aXR5U3RhdHVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy51c2VyKCk/LmlzX3JldGlyZWQpIHJldHVybiAncmV0aXJlZCc7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudXNlcigpPy5pc19lbXBsb3llZSkgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnVzZXIoKT8ucHJpbWFyeV9wb3NpdGlvbl90eXBlKSByZXR1cm4gJ2luYWN0aXZlJztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgZW1wbG95ZWVTdGF0dXNEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVzY3JpcHRpb24gPSAnJztcbiAgICAgICAgaWYgKHRoaXMudXNlcigpIS5pc19yZXRpcmVkKSB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdSZXRpcmVkJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVzZXIoKSEuaXNfZW1wbG95ZWUpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ0FjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy51c2VyKCkhLnByaW1hcnlfcG9zaXRpb25fdHlwZSkge1xuICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAnSW5hY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudXNlcigpIS5wcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheSkge1xuICAgICAgICAgICAgZGVzY3JpcHRpb24gKz0gYCAke3RoaXMudXNlcigpIS5wcmltYXJ5X3Bvc2l0aW9uX3R5cGVfZGlzcGxheX0gRW1wbG95ZWVgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uID8/IG51bGw7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgaW5kZXBlbmRlbnRTdHVkeVN0YXR1cyA9IHRvU2lnbmFsKFxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5saWJyYXJ5SWQpLCB0b09ic2VydmFibGUodGhpcy5pc0ltcGVyc29uYXRpbmcpXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoW2xpYnJhcnlJZCwgaXNJbXBlcnNvbmF0aW5nXSkgPT5cbiAgICAgICAgICAgICAgICBsaWJyYXJ5SWQgJiYgaXNJbXBlcnNvbmF0aW5nXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQ8SW5kZXBlbmRlbnRTdHVkeVJlc3BvbnNlPihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybGNhdCh0aGlzLnBlcnNvbkJhc2VVcmkoKSwgSU5ERVBFTkRFTlRfU1RVRFlfUkVTUE9OU0VfUEFUSCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuYWNjZXNzVG9rZW5QYXlsb2FkKCkudG9rZW59YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZT8uaXNfZW5yb2xsZWQpKVxuICAgICAgICAgICAgICAgICAgICA6IG9mKG51bGwpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICApO1xuICAgIHByb3RlY3RlZCBhY2NvdW50U3RhdHVzZXMgPSB0b1NpZ25hbChcbiAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuaXNJbXBlcnNvbmF0aW5nKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChpc0ltcGVyc29uYXRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzSW1wZXJzb25hdGluZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgLmdldDxBY2NvdW50c1Jlc3BvbnNlPih1cmxjYXQodGhpcy5saWJyYXJ5QXBpQmFzZVVyaSgpLCBQQVRST05fQUNDT1VOVFNfUEFUSCksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlblBheWxvYWQoKS50b2tlbn1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKGFjY291bnRzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWNjb3VudFN0YXR1c2VzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogW10gYXMgQXBwbGljYXRpb25BY2Nlc3NbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZDogW10gYXMgQXBwbGljYXRpb25BY2Nlc3NbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZTogW10gYXMgQXBwbGljYXRpb25BY2Nlc3NbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhhY2NvdW50cy5hcHBsaWNhdGlvbnMpLmZvckVhY2goKGFwcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFwcC5hY2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzU3RhdHVzLk9LOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRTdGF0dXNlcy5vay5wdXNoKGFwcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFjY2Vzc1N0YXR1cy5CTE9DS0VEOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRTdGF0dXNlcy5ibG9ja2VkLnB1c2goYXBwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzU3RhdHVzLk5PTkU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzLm5vbmUucHVzaChhcHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjb3VudFN0YXR1c2VzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG59XG4iLCJAaWYgKGlzSW1wZXJzb25hdGluZygpKSB7XG4gICAgPGRpdiBjbGFzcz1cImJhbm5lci1wYWRkaW5nXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRvcC1iYW5uZXJcIiBkYXRhLXRlc3RpZD1cImJhbm5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyLWdyb3VwIHByb2ZpbGUtbmFtZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWF2YXRhclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwidXNlclBob3RvVXJsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJ1c2VyRnVsbE5hbWUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJ1c2VyIHBob3RvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3I9XCJ0aGlzLnJlbW92ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgcHJvZmlsZS1pY29uXCI+IHBlcnNvbiA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLW5hbWUtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZnRcIj5JbXBlcnNvbmF0aW5nPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLW5hbWUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPnt7IHVzZXJGdWxsTmFtZSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFjY291bnRTdGF0dXNlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzLWJhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjb3VudFN0YXR1c2VzKCk/Lm9rPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1cy1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzLW9rIGFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLWNoZWNrbWFya1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcGxpY2F0aW9uLWNvdW50XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudFN0YXR1c2VzKCk/Lm9rPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0sgQXBwbGljYXRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIG9mIGFjY291bnRTdGF0dXNlcygpPy5vayA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGFwcGxpY2F0aW9uLmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLWNoZWNrbWFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBhcHBsaWNhdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjb3VudFN0YXR1c2VzKCk/LmJsb2NrZWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtYmxvY2tlZCBhcHBsaWNhdGlvbi1zdGF0dXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaWNvbi13YXJuaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHBsaWNhdGlvbi1jb3VudFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRTdGF0dXNlcygpPy5ibG9ja2VkPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tlZCBBcHBsaWNhdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gb2YgYWNjb3VudFN0YXR1c2VzKCk/LmJsb2NrZWQgPz8gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBhcHBsaWNhdGlvbi5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLXdhcm5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBhcHBsaWNhdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWNjb3VudFN0YXR1c2VzKCk/Lm5vbmU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tc3RhdHVzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHBsaWNhdGlvbi1zdGF0dXMtbm9uZSBhcHBsaWNhdGlvbi1zdGF0dXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaWNvbi1sb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcHBsaWNhdGlvbi1jb3VudFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRTdGF0dXNlcygpPy5ub25lPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtdG9vbHRpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gQWNjb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBvZiBhY2NvdW50U3RhdHVzZXMoKT8ubm9uZSA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGFwcGxpY2F0aW9uLmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcGxpY2F0aW9uLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uLWxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBhcHBsaWNhdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlscy1jb250YWluZXIgYmFubmVyLWdyb3VwXCI+XG4gICAgICAgICAgICBAZm9yIChkZXRhaWwgb2YgdXNlckluZm9UYWJzKCkgfCBrZXl2YWx1ZTsgdHJhY2sgZGV0YWlsLmtleSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWRldGFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZnQgbGFiZWxcIj57eyBkZXRhaWwua2V5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWNvcHktdG9vbHRpcCBbY29weVRleHRdPVwiZGV0YWlsLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWwtdGFnIHdoaXRlLXRhZyBjbGlja2FibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkZXRhaWwudmFsdWUgfHwgJ1Vua25vd24nIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItY29weS10b29sdGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlscy1jb250YWluZXIgYmFubmVyLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNvZnQgbGFiZWxcIj5TdGF0dXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpcGxlLWRldGFpbC10YWdzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1kZXRhaWwtdGFnIGNvbG9yLXRhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGVtcGxveWVlU3RhdHVzRGVzY3JpcHRpb24oKSB9fVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXIoKT8ucHJpbWFyeV9wb3NpdGlvbl90eXBlX2Rpc3BsYXkgPz8gJ05vbi1lbXBsb3llZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZpdHlTdGF0dXMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZmlsZS1zdGF0dXMtY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnN0YXR1cy1hY3RpdmVdPVwiYWN0aXZpdHlTdGF0dXMoKSA9PT0gJ2FjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RhdHVzLWluYWN0aXZlXT1cImFjdGl2aXR5U3RhdHVzKCkgPT09ICdpbmFjdGl2ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RhdHVzLXJldGlyZWRdPVwiYWN0aXZpdHlTdGF0dXMoKSA9PT0gJ3JldGlyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtZGV0YWlsLXRhZyBjb2xvci10YWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICh1c2VyKCk/LnVuZGVyZ3JhZF9ncmFkdWF0ZV9zdGF0dXMgfCB0aXRsZWNhc2UpIHx8ICdOb24tc3R1ZGVudCcgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWRldGFpbC10YWcgY29sb3ItdGFnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmRlcGVuZGVudFN0dWR5U3RhdHVzKCkgPyAnSW5kZXBlbmRlbnQgU3R1ZHknIDogJ05vIEluZC4gU3R1ZHknIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJlbmQtaW1wZXJzb25hdGlvbi1idXR0b24gc2hhZG93XCIgKGNsaWNrKT1cInRoaXMuZW5kSW1wZXJzb25hdGlvbi5lbWl0KClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBpY29uXCI+IGNsb3NlIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXhpdC10ZXh0XCI+RXhpdDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgQGlmIChpc1Jlc3RyaWN0ZWQoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdHJpY3RlZC1iYXItcGFkZGluZ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdHJpY3RlZC1iYXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5yZXN0cmljdGVkIHBlcnNvbjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxuICAgICAgICAgICAgICAgIElmIGFueW9uZSBhc2tzIGFib3V0IHRoaXMgcGVyc29uLCB5b3UgYXJlIGluc3RydWN0ZWQgdG8gcmVzcG9uZCxcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtcGhhc2l6ZVwiPlwiV2UgaGF2ZSBubyByZWNvcmRzIGZvciB0aGlzIHBlcnNvbi5cIjwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxkaXYgY2xhc3M9XCJyaWdodC1ib3JkZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLWJvcmRlclwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWJvcmRlclwiPjwvZGl2PlxufVxuIl19
@@ -584,10 +584,7 @@ class HbllHeaderComponent {
584
584
  };
585
585
  this.setMobileSidebarHeight = () => {
586
586
  const headerHeight = this.header.nativeElement.getBoundingClientRect().height;
587
- // TODO: remove banner code after banner is removed from beta
588
- const bannerElement = document.querySelector('#beta-navigation-banner');
589
- const bannerHeight = bannerElement ? bannerElement.getBoundingClientRect().height || 0 : 0;
590
- this.mobileSidebarHeight = window.innerHeight - headerHeight - bannerHeight;
587
+ this.mobileSidebarHeight = window.innerHeight - headerHeight;
591
588
  };
592
589
  }
593
590
  get isLoggedIn() {
@@ -893,16 +890,12 @@ class HbllFooterComponent {
893
890
  console.warn('Skip footer target not found on the page.');
894
891
  }
895
892
  }
896
- setSessionCookie() {
897
- document.cookie = `betaNavigationPreference=prod2; path=/`;
898
- window.location.reload();
899
- }
900
893
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
901
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllFooterComponent, isStandalone: true, selector: "lib-hbll-footer", inputs: { mainsitebaseurl: "mainsitebaseurl", libraryapibaseuri: "libraryapibaseuri", byuid: "byuid", emailname: "emailname", emailemail: "emailemail", emailmessage: "emailmessage", emailstatus: "emailstatus" }, viewQueries: [{ propertyName: "emailDialog", first: true, predicate: ["emailDialog"], descendants: true }], ngImport: i0, template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <button class=\"skip-link-footer\" (click)=\"skipFooter()\" >Skip footer</button>\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\" >Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n >&nbsp; <strong>Call</strong>&nbsp;(801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n >&nbsp; <strong>Text</strong>&nbsp;(801) 623-6838\n </a>\n </li>\n <li>\n <button (click)=\"emailDialog.showModal()\" data-testid=\"emailUsBtn\" style=\"padding: 4px;\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n >&nbsp;\n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n <div class=\"toggle-container\">\n <button\n type=\"button\"\n class=\"toggle toggle-off\"\n role=\"switch\"\n [attr.aria-checked]=\"false\"\n aria-label=\"Toggle Legacy View (off)\"\n (click)=\"setSessionCookie()\"\n >\n <span class=\"toggle-pill\">\n <span class=\"toggle-check\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 2\">\n <line x1=\"1\" y1=\"1\" x2=\"11\" y2=\"1\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n </span>\n </span>\n <span class=\"toggle-text\">Toggle Legacy View<sup class=\"superstar\">\u2605</sup></span>\n </button>\n </div>\n <i class=\"toggle-subtext\"><sup class=\"superstar\">\u2605</sup>Available until 10/20/2025</i>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />&copy;&nbsp;{{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <span id=\"teconsent\"></span>\n </div>\n </section>\n </div>\n <div id=\"consent-banner\"></div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailQuestionComment\">\n Question or comment&nbsp;<span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailQuestionComment\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}.skip-link-footer{position:absolute;top:30px;left:30px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;border:3px solid #0050b7;border-radius:4px;cursor:pointer;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.skip-link-footer:focus{opacity:1;pointer-events:auto;transform:none}.skip-link-footer:hover{color:#00285b;background-color:#e3edf8;border-color:#e3edf8}footer{line-height:1.2em;background-color:#e6e6e6}footer a{padding:4px}footer ::ng-deep #consent-banner{z-index:11;position:fixed}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:2rem!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:IBM Plex Sans,sans-serif;font-optical-sizing:auto;font-weight:300;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em;display:flex;align-items:center;justify-content:center;gap:5px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a{color:#fff;text-decoration:underline;padding:4px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a:hover{color:#fff}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}footer .hbll-footer-wrapper .toggle-container{display:flex;justify-content:flex-end;margin-top:.6rem}@media screen and (max-width: 43.0625em){footer .hbll-footer-wrapper .toggle-container{justify-content:flex-start}}footer .hbll-footer-wrapper .hbll-footer-social-list+.toggle-container{margin-top:.75rem}footer .hbll-footer-wrapper .toggle{border:0;background:transparent;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:.6rem;font:inherit;color:#4d535b;line-height:1.3}footer .hbll-footer-wrapper .toggle-text{-webkit-user-select:none;user-select:none;white-space:nowrap;font:inherit;color:#000}footer .hbll-footer-wrapper .toggle-pill{width:3.1em;height:1.75em;background:#fff;border-radius:999px;display:inline-flex;align-items:center;justify-content:flex-start;padding-left:.375em;box-shadow:inset 0 0 0 1px #00000026}footer .hbll-footer-wrapper .toggle-check{width:1.25em;height:1.25em;border-radius:999px;background:#676f79;display:inline-flex;align-items:center;justify-content:center}footer .hbll-footer-wrapper .toggle-check svg{width:.9em;height:.9em;display:block}footer .hbll-footer-wrapper .toggle:focus-visible .toggle-pill{outline:.1875rem solid rgba(0,0,0,.2);outline-offset:2px}@media (min-width: 63.375em){.hbll-footer-wrapper .hbll-footer-links section[aria-labelledby=footerConnectHeading] .toggle-container{margin-top:5em;align-self:flex-end}}@media (max-width: 63.3125em){.hbll-footer-wrapper .hbll-footer-links section[aria-labelledby=footerConnectHeading] .toggle-container{margin-top:.75rem;align-self:auto;justify-content:flex-start}}.superstar{font-size:.3em}.toggle-subtext{color:#4b4b4b}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
894
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllFooterComponent, isStandalone: true, selector: "lib-hbll-footer", inputs: { mainsitebaseurl: "mainsitebaseurl", libraryapibaseuri: "libraryapibaseuri", byuid: "byuid", emailname: "emailname", emailemail: "emailemail", emailmessage: "emailmessage", emailstatus: "emailstatus" }, viewQueries: [{ propertyName: "emailDialog", first: true, predicate: ["emailDialog"], descendants: true }], ngImport: i0, template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <button class=\"skip-link-footer\" (click)=\"skipFooter()\">Skip footer</button>\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\">Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n >&nbsp; <strong>Call</strong>&nbsp;(801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n >&nbsp; <strong>Text</strong>&nbsp;(801) 623-6838\n </a>\n </li>\n <li>\n <button\n (click)=\"emailDialog.showModal()\"\n data-testid=\"emailUsBtn\"\n style=\"padding: 4px\"\n >\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n >&nbsp;\n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />&copy;&nbsp;{{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <span id=\"teconsent\"></span>\n </div>\n </section>\n </div>\n <div id=\"consent-banner\"></div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailQuestionComment\">\n Question or comment&nbsp;<span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailQuestionComment\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}.skip-link-footer{position:absolute;top:30px;left:30px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;border:3px solid #0050b7;border-radius:4px;cursor:pointer;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.skip-link-footer:focus{opacity:1;pointer-events:auto;transform:none}.skip-link-footer:hover{color:#00285b;background-color:#e3edf8;border-color:#e3edf8}footer{line-height:1.2em;background-color:#e6e6e6}footer a{padding:4px}footer ::ng-deep #consent-banner{z-index:11;position:fixed}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:2rem!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:IBM Plex Sans,sans-serif;font-optical-sizing:auto;font-weight:300;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em;display:flex;align-items:center;justify-content:center;gap:5px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a{color:#fff;text-decoration:underline;padding:4px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a:hover{color:#fff}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
902
895
  }
903
896
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllFooterComponent, decorators: [{
904
897
  type: Component,
905
- args: [{ selector: 'lib-hbll-footer', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <button class=\"skip-link-footer\" (click)=\"skipFooter()\" >Skip footer</button>\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\" >Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n >&nbsp; <strong>Call</strong>&nbsp;(801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n >&nbsp; <strong>Text</strong>&nbsp;(801) 623-6838\n </a>\n </li>\n <li>\n <button (click)=\"emailDialog.showModal()\" data-testid=\"emailUsBtn\" style=\"padding: 4px;\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n >&nbsp;\n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n <div class=\"toggle-container\">\n <button\n type=\"button\"\n class=\"toggle toggle-off\"\n role=\"switch\"\n [attr.aria-checked]=\"false\"\n aria-label=\"Toggle Legacy View (off)\"\n (click)=\"setSessionCookie()\"\n >\n <span class=\"toggle-pill\">\n <span class=\"toggle-check\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 2\">\n <line x1=\"1\" y1=\"1\" x2=\"11\" y2=\"1\" stroke=\"white\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n </span>\n </span>\n <span class=\"toggle-text\">Toggle Legacy View<sup class=\"superstar\">\u2605</sup></span>\n </button>\n </div>\n <i class=\"toggle-subtext\"><sup class=\"superstar\">\u2605</sup>Available until 10/20/2025</i>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />&copy;&nbsp;{{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <span id=\"teconsent\"></span>\n </div>\n </section>\n </div>\n <div id=\"consent-banner\"></div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailQuestionComment\">\n Question or comment&nbsp;<span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailQuestionComment\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}.skip-link-footer{position:absolute;top:30px;left:30px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;border:3px solid #0050b7;border-radius:4px;cursor:pointer;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.skip-link-footer:focus{opacity:1;pointer-events:auto;transform:none}.skip-link-footer:hover{color:#00285b;background-color:#e3edf8;border-color:#e3edf8}footer{line-height:1.2em;background-color:#e6e6e6}footer a{padding:4px}footer ::ng-deep #consent-banner{z-index:11;position:fixed}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:2rem!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:IBM Plex Sans,sans-serif;font-optical-sizing:auto;font-weight:300;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em;display:flex;align-items:center;justify-content:center;gap:5px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a{color:#fff;text-decoration:underline;padding:4px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a:hover{color:#fff}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}footer .hbll-footer-wrapper .toggle-container{display:flex;justify-content:flex-end;margin-top:.6rem}@media screen and (max-width: 43.0625em){footer .hbll-footer-wrapper .toggle-container{justify-content:flex-start}}footer .hbll-footer-wrapper .hbll-footer-social-list+.toggle-container{margin-top:.75rem}footer .hbll-footer-wrapper .toggle{border:0;background:transparent;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:.6rem;font:inherit;color:#4d535b;line-height:1.3}footer .hbll-footer-wrapper .toggle-text{-webkit-user-select:none;user-select:none;white-space:nowrap;font:inherit;color:#000}footer .hbll-footer-wrapper .toggle-pill{width:3.1em;height:1.75em;background:#fff;border-radius:999px;display:inline-flex;align-items:center;justify-content:flex-start;padding-left:.375em;box-shadow:inset 0 0 0 1px #00000026}footer .hbll-footer-wrapper .toggle-check{width:1.25em;height:1.25em;border-radius:999px;background:#676f79;display:inline-flex;align-items:center;justify-content:center}footer .hbll-footer-wrapper .toggle-check svg{width:.9em;height:.9em;display:block}footer .hbll-footer-wrapper .toggle:focus-visible .toggle-pill{outline:.1875rem solid rgba(0,0,0,.2);outline-offset:2px}@media (min-width: 63.375em){.hbll-footer-wrapper .hbll-footer-links section[aria-labelledby=footerConnectHeading] .toggle-container{margin-top:5em;align-self:flex-end}}@media (max-width: 63.3125em){.hbll-footer-wrapper .hbll-footer-links section[aria-labelledby=footerConnectHeading] .toggle-container{margin-top:.75rem;align-self:auto;justify-content:flex-start}}.superstar{font-size:.3em}.toggle-subtext{color:#4b4b4b}\n"] }]
898
+ args: [{ selector: 'lib-hbll-footer', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <button class=\"skip-link-footer\" (click)=\"skipFooter()\">Skip footer</button>\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\">Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n >&nbsp; <strong>Call</strong>&nbsp;(801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n >&nbsp; <strong>Text</strong>&nbsp;(801) 623-6838\n </a>\n </li>\n <li>\n <button\n (click)=\"emailDialog.showModal()\"\n data-testid=\"emailUsBtn\"\n style=\"padding: 4px\"\n >\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n >&nbsp;\n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />&copy;&nbsp;{{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <span id=\"teconsent\"></span>\n </div>\n </section>\n </div>\n <div id=\"consent-banner\"></div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailQuestionComment\">\n Question or comment&nbsp;<span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailQuestionComment\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}.skip-link-footer{position:absolute;top:30px;left:30px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;border:3px solid #0050b7;border-radius:4px;cursor:pointer;z-index:10;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.skip-link-footer:focus{opacity:1;pointer-events:auto;transform:none}.skip-link-footer:hover{color:#00285b;background-color:#e3edf8;border-color:#e3edf8}footer{line-height:1.2em;background-color:#e6e6e6}footer a{padding:4px}footer ::ng-deep #consent-banner{z-index:11;position:fixed}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center;position:relative}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:2rem!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:IBM Plex Sans,sans-serif;font-optical-sizing:auto;font-weight:300;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em;display:flex;align-items:center;justify-content:center;gap:5px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a{color:#fff;text-decoration:underline;padding:4px}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy ::ng-deep #teconsent a:hover{color:#fff}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"] }]
906
899
  }], propDecorators: { emailDialog: [{
907
900
  type: ViewChild,
908
901
  args: ['emailDialog']
@@ -1002,8 +995,8 @@ class ImpersonationBannerComponent {
1002
995
  constructor() {
1003
996
  this.http = inject(HttpClient);
1004
997
  this.accessTokenPayload = input.required();
1005
- this.personBaseUri = input('https://apps.lib.byu.edu/person/v2/');
1006
- this.libraryApiBaseUri = input('https://api.lib.byu.edu/v1');
998
+ this.personBaseUri = input('https://staging.lib.byu.edu/person/v2/');
999
+ this.libraryApiBaseUri = input('https://18927523-review-remove-ill-9pn6z0.review.lib.byu.edu/v1');
1007
1000
  this.endImpersonation = new EventEmitter();
1008
1001
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1009
1002
  this.parsedToken = computed(() => this.accessTokenPayload().token ? jwtDecode(this.accessTokenPayload().token) : {});