{"version":3,"file":"universis-common.mjs","sources":["../../src/shared/services/configuration.service.ts","../../src/shared/components/modal/dialog.component.ts","../../src/shared/services/modal.service.ts","../../src/shared/components/msgbox/msgbox.component.ts","../../src/shared/components/msgbox/msgbox.component.html","../../src/shared/components/modal/spinner.component.ts","../../src/shared/components/modal/toast.component.ts","../../src/shared/services/toast.service.ts","../../src/shared/services/grade-scale.service.ts","../../src/shared/services/loading.service.ts","../../src/shared/pipes/localized-date.pipe.ts","../../src/shared/services/numeral/locales.ts","../../src/shared/pipes/semester.pipe.ts","../../src/shared/pipes/template.pipe.ts","../../src/shared/pipes/truncate.pipe.ts","../../src/shared/directives/ngvar.directive.ts","../../src/auth/services/user.service.ts","../../src/auth/services/activated-user.service.ts","../../src/error/error.service.ts","../../src/auth/guards/auth.guard.ts","../../src/shared/directives/if-location.directive.ts","../../src/shared/services/diagnostics.service.ts","../../src/shared/directives/if-service.directive.ts","../../src/shared/pipes/localized-attributes.pipe.ts","../../src/shared/services/user-storage.ts","../../src/shared/services/user-activity/user-activity.service.ts","../../src/shared/services/session-user-activity/session-user-activity.service.ts","../../src/shared/services/persistent-user-activity/persistent-user-activity.service.ts","../../src/shared/services/request-types/request-types.service.ts","../../src/shared/services/app-sidebar.service.ts","../../src/shared/services/app-guest-sidebar.service.ts","../../src/shared/services/browser-storage.service.ts","../../src/shared/services/fallback-user-storage.service.ts","../../src/shared/services/app-event.service.ts","../../src/shared/components/modal/xmas-spinner.component.ts","../../src/shared/services/xmas-loading.service.ts","../../src/shared/services/certificate-service/certificate-service.service.ts","../../src/environments/environment.ts","../../src/shared/components/signature-info/i18n/signature-info.en.ts","../../src/shared/components/signature-info/i18n/signature-info.el.ts","../../src/shared/components/signature-info/i18n/signature-info.translations.ts","../../src/shared/components/signature-info/signature-info.component.ts","../../src/shared/components/signature-info/signature-info.component.html","../../src/shared/services/referrer-route.service.ts","../../src/shared/services/export-spreadsheet.service.ts","../../src/shared/shared.module.ts","../../src/events/services/server-event.service.ts","../../src/error/error.custom.ts","../../src/auth/services/authentication.service.ts","../../src/auth/components/login/login.component.ts","../../src/auth/components/logout/logout.component.ts","../../src/auth/auth-callback.component.ts","../../src/auth/components/refresh/refresh-token.component.ts","../../src/auth/auth.routing.ts","../../src/auth/services/pkce-authentication.service.ts","../../src/auth/auth.module.ts","../../src/events/server-event.module.ts","../../src/error/components/error-base/error-base.component.ts","../../src/error/components/error-base/error-base.component.html","../../src/error/error.handler.ts","../../src/error/components/network-changed-error/network-changed-error.component.ts","../../src/error/error.routing.ts","../../src/error/i18n/error.en.ts","../../src/error/i18n/error.el.ts","../../src/error/i18n/index.ts","../../src/error/error.module.ts","../../src/helpers/decorators.ts","../../src/helpers/session-storage-helper.service.ts","../../src/public_api.ts","../../src/universis-common.ts"],"sourcesContent":["import {EventEmitter, Injectable, InjectionToken, Injector} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { isDevMode } from '@angular/core';\nimport { DATA_CONTEXT_CONFIG } from '@themost/angular';\nimport { BehaviorSubject } from 'rxjs';\n\n\nexport declare interface ApplicationSettingsConfiguration {\n    name?: string;\n    image?: string;\n    description?: string;\n    thumbnail?: string;\n}\n\nexport declare interface RemoteSettingsConfiguration {\n  server: string;\n}\n\nexport declare interface LocalizationSettingsConfiguration {\n  locales?: Array<string>;\n  uiLocales?: Array<string>;\n  defaultLocale?: string;\n  append?: any;\n}\n\nexport declare interface SettingsConfiguration {\n  app?: ApplicationSettingsConfiguration;\n  remote: RemoteSettingsConfiguration;\n  i18n?: LocalizationSettingsConfiguration;\n  auth?: any;\n}\n\nexport declare interface ApplicationConfiguration {\n  settings: SettingsConfiguration;\n}\n\nexport let APP_CONFIGURATION = new InjectionToken('app.configuration');\n\n\n/**\n *\n * This Service is used to get or set global configuration for the project\n * @export\n * @class ConfigurationService\n */\n@Injectable()\nexport class ConfigurationService {\n\n  public config: any;\n  public loaded: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\n  constructor(private _translateService: TranslateService,\n              private _injector: Injector,\n              private _http: HttpClient) {\n    //\n  }\n\n  /**\n   *\n   * Load Configs saved in Project\n   * @returns {Promise<any>}\n   * @memberof ConfigurationService\n   */\n  public async load(): Promise<boolean> {\n    if (this.config) {\n      return true;\n    }\n    // get environment\n    const env = isDevMode() ? 'development' : 'production';\n    // load configuration based on environment\n    // e.g. assets/config/app.production.json or\n    // assets/config/app.development.json\n    try {\n      return await this.loadFrom(`assets/config/app.${env}.json`);\n    } catch (err: Error | any) {\n      if (err.status === 404) { // not found\n        // load default application configuration\n        return await this.loadFrom(`assets/config/app.json`);\n      }\n      throw err;\n    }\n  }\n\n  public async loadFrom(url: string): Promise<boolean> {\n\n    // get configuration from url\n    this.config = await new Promise((resolve, reject) => {\n      this._http.get(url).subscribe( result => {\n        return resolve(result);\n      }, err => {\n        return reject(err);\n      });\n    });\n    // get DATA_CONTEXT_CONFIG\n    const dataContextConfig = this._injector.get(DATA_CONTEXT_CONFIG);\n    // IMPORTANT: Set DATA_CONTEXT_CONFIG base URI from configuration\n    dataContextConfig.base = this.config.settings.remote.server;\n    // set locale for translate service\n    this._translateService.use(this.currentLocale);\n    // emit event for loaded configuration\n    this.loaded.next(this.config as ApplicationConfiguration);\n    // return\n    return true;\n  }\n\n  /**\n   * Gets current application settings\n   */\n  get settings(): SettingsConfiguration {\n    return this.config && this.config.settings;\n  }\n\n  /**\n   * Gets the current user language\n   */\n  get currentLocale(): string {\n    const currentLang = localStorage.getItem('currentLang');\n    if (currentLang) {\n      return currentLang;\n    }\n    if (this.settings &&\n        this.settings.i18n &&\n        this.settings.i18n.defaultLocale) {\n      // return current language\n      return this.settings.i18n.defaultLocale;\n    }\n    // use fallback language\n    return 'en';\n  }\n\n  set currentLocale(locale: string) {\n    // save current locale\n    localStorage.setItem('currentLang', locale);\n    // set locale for translate service\n    this._translateService.use(locale);\n  }\n\n}\n","import {Component, OnInit, Input, ElementRef} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport 'jquery';\nimport 'bootstrap/js/dist/modal';\n\ndeclare var jQuery: any;\n\nexport enum DIALOG_BUTTONS {\n  Ok = 1,\n  Yes = 2,\n  No = 4,\n  Abort = 8,\n  Retry = 16,\n  Ignore = 32,\n  Cancel = 64,\n  YesNo = 6,\n  AbortRetryIgnore = 54,\n  OkCancel = 65,\n  YesNoCancel = 70\n}\n\n@Component({\n  selector: 'universis-dialog.modal',\n  styles: [`\n    .modal-dialog .modal-body {\n        margin-top: 0;\n        margin-bottom: 0;\n      }\n      .modal-footer {\n        border-top: 0;\n      }\n      .btn {\n        text-transform: uppercase;\n        font-size: 16px;\n      }\n  `\n  ],\n  template: `\n    <div class=\"modal-dialog\" [ngClass]=\"theme\" role=\"document\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header\">\n          <h4 class=\"modal-title\">{{title | translate}}</h4>\n        </div>\n        <div class=\"modal-body\" [innerHTML]=\"message\"></div>\n        <div class=\"modal-footer\">\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 1)\"\n                  (click)=\"hide('ok')\" class=\"btn btn-theme btn-ok\" [translate]=\"'OK'\"></button>\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 2)\"\n                  (click)=\"hide('yes')\" class=\"btn btn-theme btn-yes\" [translate]=\"'Yes'\"></button>\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 4)\"\n                  (click)=\"hide('no')\" class=\"btn btn-gray-100 btn-no\" [translate]=\"'No'\"></button>\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 8)\"\n                  (click)=\"hide('abort')\" class=\"btn btn-danger btn-abort\" [translate]=\"'Abort'\"></button>\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 16)\"\n                  (click)=\"hide('retry')\" class=\"btn btn-gray-100 btn-retry\" [translate]=\"'Retry'\"></button>\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 32)\"\n                  (click)=\"hide('ignore')\" class=\"btn btn-gray-100 btn-ignore\" [translate]=\"'Ignore'\"></button>\n          <button [lang]=\"language\" type=\"button\" *ngIf=\"bitwiseAnd(buttons, 64)\"\n                  (click)=\"hide('cancel')\"  class=\"btn btn-gray-100 btn-cancel\" [translate]=\"'Cancel'\"></button>\n        </div>\n      </div>\n    </div>\n  `\n})\n/**\n *\n * A modal dialog component with ok and cancel buttons\n * @export\n * @class DialogComponent\n */\nexport class DialogComponent implements OnInit {\n\n\n  @Input() title: string = '';\n  @Input() message: string = '';\n  @Input() theme: string | undefined;\n  public buttons: DIALOG_BUTTONS = DIALOG_BUTTONS.Ok;\n  private modalRef: any;\n  public language = 'en';\n\n  constructor(private _element: ElementRef, private _translateService: TranslateService) {\n    this.language = this._translateService.currentLang;\n  }\n\n  public bitwiseAnd(a, b) {\n    return a & b;\n  }\n\n  /**\n   * Shows modal dialog\n   * @returns Promise<any>\n   */\n  show() {\n    return new Promise((resolve, reject) => {\n        if (this.modalRef) {\n          this.modalRef.one('hide.bs.modal', () => {\n            // get related target if any\n            const result = this.modalRef.data('result');\n            // return result\n            return resolve(result);\n          });\n          const modalRef: { modal(action: string): void } = this.modalRef;\n          modalRef.modal('show');\n        } else {\n          reject('Modal element may not be empty at this context');\n        }\n    });\n  }\n\n  /**\n   * Hides modal dialog\n   * @param value\n   */\n  hide(value: any) {\n    this.modalRef.data('result', value);\n    const modalRef: { modal(action: string): void } = this.modalRef;\n    modalRef.modal('hide');\n  }\n\n  /**\n   * Converts modal buttons classes modal-ok, modal-yes-no etc to dialog buttons\n   * @param {Array<string>} classList\n   */\n  private classListToButtons(classList: Array<string>) {\n    return classList.map( classListElement => {\n      // maps each item to an array of matches (if match)\n      return /^modal(-ok)?(-yes)?(-no)?(-abort)?(-retry)?(-ignore)?(-cancel)?/ig.exec(classListElement);\n    }).filter(match => {\n      // filter not matched elements\n      return match != null;\n    }).map( (match) => {\n      // maps each match as an array of 2 ^ k results\n      // @ts-ignore\n      return match.map((item, k) => {\n        if (item && k > 0) {\n          return Math.pow(2, k - 1);\n        }\n        return 0;\n      }).reduce( (a, b) => {\n        // return a sum of results\n        return a + b;\n      });\n    }).reduce( (a, b) => {\n      // return a final sum of results\n      return a | b;\n    });\n  }\n\n  async ngOnInit() {\n    // get element classes\n    const classList = Array.from((<HTMLDivElement>this._element.nativeElement).classList);\n    // get buttons from element class list\n    const classListButtons = this.classListToButtons(classList);\n    // if element has button classes (modal-ok, modal-yes-no etc)\n    if (classListButtons) {\n      // set dialog buttons\n      this.buttons = classListButtons;\n    }\n    this.modalRef = jQuery(this._element.nativeElement);\n    // initialize modal\n    const modalRef: { modal(options: any): void } = this.modalRef;\n    modalRef.modal({\n      backdrop: 'static',\n      focus: true,\n      keyboard: false,\n      show: false\n    });\n  }\n}\n","import {ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector} from '@angular/core';\nimport {DialogComponent, DIALOG_BUTTONS} from '../components/modal/dialog.component';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';\n\nexport interface DialogComponentExtras {\n  theme?: string;\n}\n\n/**\n *\n * Displays a Modal window or a type of Notification (based on choice the color changes)\n * @export\n * @class ModalService\n */\n@Injectable()\nexport class ModalService {\n  modalRef: any;\n  config = {\n    ignoreBackdropClick: true,\n    keyboard: false,\n    initialState: null,\n    class: 'modal-content-base'\n  };\n\n  constructor(private componentFactoryResolver: ComponentFactoryResolver,\n              private appRef: ApplicationRef,\n              private injector: Injector,\n              private modalService: BsModalService) { }\n\n  showDialog(title: string, message: string, buttons: DIALOG_BUTTONS = DIALOG_BUTTONS.Ok, extras?: DialogComponentExtras) {\n    const componentRef = this.componentFactoryResolver\n        .resolveComponentFactory(DialogComponent)\n        .create(this.injector);\n    componentRef.instance.title = title;\n    componentRef.instance.message = message;\n    componentRef.instance.buttons = buttons;\n    if (extras) {\n      componentRef.instance.theme = extras.theme;\n    }\n    // attach component to the appRef so that it's inside the ng component tree\n    this.appRef.attachView(componentRef.hostView);\n    // get DOM element from component\n    const modalElement = (componentRef.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n    // append DOM element to the body\n    document.body.appendChild(modalElement);\n    return componentRef.instance.ngOnInit().then(() => {\n      // show dialog\n      return componentRef.instance.show().then( result => {\n        // detach view\n        this.appRef.detachView(componentRef.hostView);\n        // destroy component ref\n        componentRef.destroy();\n        //\n        return Promise.resolve(result);\n      });\n    });\n  }\n\n  showWarningDialog(title: string, message: string, buttons: DIALOG_BUTTONS = DIALOG_BUTTONS.OkCancel) {\n      return this.showDialog(\n        '',\n        `<div class=\"text-center\">\n                <div class=\"icon-circle icon-circle-warning\">\n                    <i class=\"fa fa-exclamation\"></i>\n                </div>\n                <div class=\"font-2xl font-weight-bold mt-2\">\n                ${title}\n                </div>\n                <p class=\"mt-2\">\n                ${message}\n                </p>\n            </div>\n            `,\n        buttons, {\n          theme: 'modal-dialog-warning'\n        });\n  }\n\n  showSuccessDialog(title: string, message: string, buttons: DIALOG_BUTTONS = DIALOG_BUTTONS.Ok) {\n    return this.showDialog(\n        '',\n        `<div class=\"text-center\">\n                <div class=\"icon-circle icon-circle-success\">\n                    <i class=\"fa fa-check\"></i>\n                </div>\n                <div class=\"font-2xl font-weight-bold mt-2\">\n                ${title}\n                </div>\n                <p class=\"mt-2\">\n                ${message}\n                </p>\n            </div>\n            `,\n        buttons, {\n          theme: 'modal-dialog-success'\n        });\n  }\n\n  showErrorDialog(title: string, message: string, buttons: DIALOG_BUTTONS = DIALOG_BUTTONS.Ok) {\n    return this.showDialog(\n        '',\n        `<div class=\"text-center\">\n                <div class=\"icon-circle icon-circle-danger\">\n                    <i class=\"fa fa-times\"></i>\n                </div>\n                <div class=\"font-2xl font-weight-bold mt-2\">\n                ${title}\n                </div>\n                <p class=\"mt-2\">\n                ${message}\n                </p>\n            </div>\n            `,\n        buttons, {\n          theme: 'modal-dialog-danger'\n        });\n  }\n\n    showInfoDialog(title: string, message: string, buttons: DIALOG_BUTTONS = DIALOG_BUTTONS.Ok) {\n        return this.showDialog(\n            '',\n            `<div class=\"text-center\">\n                <div class=\"icon-circle icon-circle-info\">\n                    <i class=\"fa fa-info\"></i>\n                </div>\n                <div class=\"font-2xl font-weight-bold mt-2\">\n                ${title}\n                </div>\n                <p class=\"mt-2\">\n                ${message}\n                </p>\n            </div>\n            `,\n            buttons, {\n                theme: 'modal-dialog-info'\n            });\n    }\n\n  openModal(template: any, customClass?: string): BsModalRef {\n    let config;\n    if (customClass) {\n      config = JSON.parse(JSON.stringify(this.config));\n      config.class = customClass;\n    } else {\n      config = this.config;\n    }\n    return this.modalRef = this.modalService.show(template, config);\n  }\n\n  openModalComponent(template: any, options?: any): BsModalRef {\n        return this.modalRef = this.modalService.show(template, options);\n    }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n *\n * Component for Card-Box element with Inputs:\n * Usage <universis-msgbox [title]=\"HelloWorld\" ...></universis-msgbox>\n * @Input() title: Title of Box\n * @Input() icon: Icon displayed on the left of the element\n * @Input() info: The Status displayed on user\n * @Input() message: Explanation of the status\n * @Input() extraMessage: Some extra guidance\n * @Input() actionButton: Text displayed as Text in button\n * @Input() actionText: Text displayed as an action\n * @Input() disableBut: Disable button\n * @export\n */\n@Component({\n  selector: 'universis-msgbox',\n  templateUrl: './msgbox.component.html',\n  styleUrls: ['./msgbox.component.scss']\n})\nexport class MsgboxComponent {\n\n  @Input() title: string | undefined;\n  @Input() icon: string | undefined;\n  @Input() info: string | undefined;\n  @Input() message: string | undefined;\n  @Input() extraMessage: string | undefined;\n  @Input() actionButton: string | undefined;\n  @Input() actionText: string | undefined;\n  @Input() disableBut: boolean | undefined;\n  // Default class sets the color to green, otherwise pass it the correct bootstrap class\n  @Input() buttonClass = 'btn-success';\n  // Usage (action)=\"someFunction()\"\n  @Output() action = new EventEmitter<any>();\n\n  btnClicked: boolean | undefined;\n\n  clicked() {\n    this.action.emit();\n  }\n}\n","<div class=\"card\">\n  <div class=\"msgbox_main-container\">\n    <div class=\"msgbox_icon\">\n      <span class=\"fa-4x far {{icon}}\" style=\"color:#678898;\"></span>\n    </div>\n    <div class=\"msgbox_details\">\n      <div *ngIf=\"title && !title.includes('title')\" class=\"msgbox_title\" id=\"title\">{{title}}</div>\n      <div class=\"font pt-3 msgbox_item\" id=\"message\">{{message}}</div>\n      <div class=\"pt-3 msgbox_item\" *ngIf=\"extraMessage && !extraMessage.includes('extraMessage')\">{{extraMessage}}</div>\n      <div>\n        <div class=\"pt-3 msgbox_item\" *ngIf=\"actionButton && !actionButton.includes('actionButton')\">\n          <button type=\"button\" class=\"btn s--btn\" [ngClass]=\"buttonClass\" [disabled]=\"disableBut\" (click)=\"clicked()\">{{actionButton}}</button>\n        </div>\n        <div class=\"pt-3 msgbox_item\" *ngIf=\"actionText && !actionText.includes('actionText')\" id=\"text\">\n          <span><span class=\"fa-1x icon-arrow-right\"></span>{{actionText}}</span>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n/**\n *\n * A native spinner component\n * @export\n * @class SpinnerComponent\n * @implements {OnInit}\n */\n@Component({\n  selector: 'universis-spinner',\n  styleUrls: [`./spinner.component.scss`],\n  template: `\n      <div class=\"s--spinner\">\n        <div class=\"sk-three-bounce\">\n          <div class=\"sk-child sk-bounce1\"></div>\n          <div class=\"sk-child sk-bounce2\"></div>\n          <div class=\"sk-child sk-bounce3\"></div>\n        </div>\n      </div>\n  `\n})\nexport class SpinnerComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit() {\n    //\n  }\n}\n","import {AfterViewInit, Component, ElementRef, Input, OnInit} from '@angular/core';\nimport 'jquery';\nimport * as _Toast from 'bootstrap/js/dist/toast';\nconst Toast = (_Toast as any).default || _Toast;\n/**\n *\n * A native spinner component\n * @export\n * @class SpinnerComponent\n * @implements {OnInit}\n */\n@Component({\n    selector: 'universis-toast.toast',\n    template: `\n                <div class=\"toast-header d-flex p-0\">\n                  <strong class=\"mr-auto\">{{ title }}</strong>\n                  <button type=\"button\" class=\"ml-2 mb-1 align-self-start close\" data-dismiss=\"toast\" (click)=\"hide();\" aria-label=\"Close\">\n                    <span aria-hidden=\"true\">&times;</span>\n                  </button>\n                </div>\n                 <div class=\"toast-body p-0\">\n                  <div class=\"toast-body-content\" [innerHTML]=\"message\"></div>\n                </div>\n                <div class=\"toast-header p-0\">\n                  <small class=\"toast-date\">{{ dateCreated | date: 'shortTime'}}</small>\n                </div>\n  `,\n    styles: [\n        `:host {\n            z-index: auto;\n        }`\n    ]\n})\n\n\nexport class ToastComponent implements OnInit, AfterViewInit {\n\n    @Input() title: string | undefined;\n    @Input() message: string | undefined;\n    @Input() autoHide = true;\n    @Input() delay = 5000;\n    public dateCreated = new Date();\n\n    private toast: any;\n\n    constructor(private _element: ElementRef) { }\n\n    ngOnInit() {\n\n    }\n\n    ngAfterViewInit(): void {\n      this.toast = new Toast(this._element.nativeElement, {\n        animation: false,\n        autohide: this.autoHide,\n        delay: this.delay\n      });\n      return this.toast.show();\n    }\n\n    public show() {\n        if (this.toast) {\n            this.toast.show();\n        }\n    }\n\n    public hide() {\n      const container = document.body.getElementsByClassName('universis-toast-container')[0];\n      if (container.getElementsByClassName('show').length === 1) {\n        container.classList.add('hidden');\n      }\n\n      if (this.toast) {\n        this.toast.hide();\n      }\n    }\n}\n","import {Injectable, ComponentFactoryResolver, ApplicationRef, Injector, EmbeddedViewRef} from '@angular/core';\nimport {ToastComponent} from '../components/modal/toast.component';\n\n\n/**\n * @export\n * @class ToastService\n */\n@Injectable()\nexport class ToastService {\n\n  constructor(private componentFactoryResolver: ComponentFactoryResolver,\n              private appRef: ApplicationRef,\n              private injector: Injector) { }\n\n  /**\n   * Shows a toast message\n   * @param {string} title A string which represents message title\n   * @param {string} message A string which represents message body\n   * @param {boolean=} autoHide A boolean which indicates whether a message will auto hide or not\n   * @param {number=} delay A number which indicates the number of milliseconds before auto hide message\n   */\n  show(title: string, message: string, autoHide: boolean | undefined = true, delay: number | undefined = 5000) {\n    // search for toast container\n    let container = document.body.getElementsByClassName('universis-toast-container')[0];\n    if (container == null) {\n      // create toast container\n      container = document.createElement('div');\n      container.classList.add('universis-toast-container', 'p-3');\n      // append to boyd\n      document.body.appendChild(container);\n    }\n    // create a component reference for toast component\n    const componentRef = this.componentFactoryResolver\n        .resolveComponentFactory(ToastComponent)\n        .create(this.injector);\n    componentRef.instance.title = title;\n    componentRef.instance.message = message;\n    componentRef.instance.autoHide = autoHide;\n    componentRef.instance.delay = delay;\n    componentRef.location.nativeElement.classList.add('show');\n\n    // attach component to the appRef so that it's inside the ng component tree\n    this.appRef.attachView(componentRef.hostView);\n\n    // get DOM element from component\n    const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n\n    // append DOM element to the body\n    container.appendChild(domElem);\n\n    container.classList.remove('hidden');\n\n    setTimeout(() => {\n      componentRef.instance.hide();\n    }, delay);\n  }\n\n  // noinspection JSMethodCanBeStatic\n  /**\n   * Clears toast messages\n   */\n  clear() {\n    // search for toast container\n    const container = document.body.getElementsByClassName('universis-toast-container')[0];\n    if (container) {\n      // remove children\n      while (container.firstChild) {\n        container.removeChild(container.firstChild);\n      }\n    }\n  }\n\n}\n","import { Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {AngularDataContext} from '@themost/angular';\nimport {DecimalPipe} from '@angular/common';\nimport {ConfigurationService} from './configuration.service';\n\nexport function round(x: any, n?: number): number {\n  if (typeof x !== 'number') {\n      return 0;\n  }\n  if (n) {\n      return parseFloat(x.toFixed(n));\n  }\n  return Math.round(x);\n}\n\nexport class GradeScale {\n\n  public id?: number;\n  public name?: string;\n  public scaleType?: number;\n  public scaleFactor?: number;\n  public scaleBase?: number;\n  public formatPrecision = 2;\n  public scalePrecision = 2;\n  public values?: any[];\n\n  private _formatter: DecimalPipe;\n  private readonly _decimalCharRegExp: RegExp;\n\n  constructor(private _locale: string, private scale: any = null) {\n    // init decimal pipe\n    this._formatter = new DecimalPipe(this._locale);\n    // get decimal separator regular expression\n    // @ts-ignore\n    this._decimalCharRegExp = new RegExp('\\\\' + this._formatter.transform(0.1, '1.1-1').substr(1, 1), 'ig');\n    if (scale) {\n      this.id = scale['id'];\n      this.name = scale['name'];\n      this.scaleType = scale['scaleType'];\n      this.scaleFactor = scale['scaleFactor'];\n      this.scaleBase = scale['scaleBase'];\n      this.formatPrecision = scale['formatPrecision'];\n      this.scalePrecision = scale['scalePrecision'];\n      this.values = scale['values'];\n    }\n  }\n\n  /**\n   * Formats the specified based on this grade scale and returns the formatted value\n   * @param {number} grade\n   * @returns string\n   */\n  format(grade: number): string {\n    if (this.scaleType === 0) {\n      if (typeof this.scaleFactor !== 'number') {\n        throw new TypeError('Grade scale factor must be a number.');\n      }\n      if (this.scaleFactor <= 0) {\n        throw new TypeError('Grade scale factor must greater than zero.');\n      }\n      // arithmetic grade scale\n      if (typeof (grade as any) === 'number') {\n        // get final grade by applying rounding\n        const finalGrade = round((grade / this.scaleFactor), this.formatPrecision);\n        // return formatted value based on the current locale\n        const result = this._formatter.transform(finalGrade, `1.${this.formatPrecision}-${this.formatPrecision}`);\n        if (result != null) {\n          return result;\n        }\n      }\n      return '';\n    } else if (this.scaleType === 1 || this.scaleType === 3) {\n      let finalValue = round(grade, this.scalePrecision);\n      if (this.values != null) {\n        let findValue = this.values.find(x => {\n          return finalValue >= x.valueFrom && finalValue <= x.valueTo;\n        });\n        if (findValue) {\n          return findValue.name;\n        }\n      }\n      throw new RangeError('Out of range value for grade');\n    }\n    throw new Error('Not yet implemented');\n  }\n\n  /**\n   * Converts the given grade to the equivalent grade value base on this grade scale\n   * @param grade\n   */\n  convert(grade: any): number | undefined {\n    if (this.scaleType === 0) {\n      let finalGrade;\n      // if grade is a number\n      if (typeof grade === 'undefined' || grade === null) {\n        return;\n      } else if (typeof grade === 'number') {\n        finalGrade = grade;\n      } else if (typeof grade === 'string') {\n        // try to convert the given grade\n        finalGrade = parseFloat(grade.replace(this._decimalCharRegExp, '.'));\n        if (isNaN(finalGrade)) {\n          return;\n        }\n      }\n      if (typeof this.scaleFactor !== 'number') {\n        throw new TypeError('Grade scale factor must be a number.');\n      }\n      if (this.scaleFactor <= 0) {\n        throw new TypeError('Grade scale factor must greater than zero.');\n      }\n      // validate grade\n      const res = <number>round((finalGrade * this.scaleFactor), this.formatPrecision + 1 );\n      // throw error if result is greater than 1\n      if (res < 0 || res > 1) {\n        throw new Error('Grade is out of range. It must be between 0 to 1.');\n      }\n      return res;\n    } else if (this.scaleType === 1 || this.scaleType === 3) {\n      if (this.values) {\n        let findValue = this.values.find( x => {\n          return x.name === grade || x.alternateName === grade;\n        });\n        if (findValue) {\n          return findValue.exactValue;\n        }\n      }\n      throw new RangeError('Out of range value for grade');\n    }\n    throw new Error('Not yet implemented');\n  }\n\n}\n\n@Injectable()\nexport class GradeScaleService {\n\n  private _gradeScales?: Array<GradeScale>;\n\n  constructor(private _context: AngularDataContext,\n              private _configurationService: ConfigurationService) {\n\n    //\n  }\n\n  /**\n   * Gets all the available grade scales\n   */\n  getGradeScales() {\n    if (this._gradeScales) {\n      return Promise.resolve(this._gradeScales);\n    }\n    return this._context.model('GradeScales').getItems().then(result => {\n      const locale = this._configurationService.currentLocale;\n      this._gradeScales = result.map( x => {\n        return Object.assign(new GradeScale(locale), x);\n      });\n      return Promise.resolve(this._gradeScales);\n    }, (err) => {\n\n      console.log(err);\n      return null;\n    });\n  }\n\n  /**\n   * Gets a grade scale based on the given identifier\n   * @param {*} id\n   */\n  getGradeScale(id: any): Promise<GradeScale | undefined> {\n    if (this._gradeScales) {\n      return Promise.resolve(this._gradeScales.find(value => {\n        return value.id === id;\n      }));\n    }\n    return this.getGradeScales().then(res => {\n      if (res == null) {\n        return;\n      }\n      return Promise.resolve(res.find(value => {\n        return value.id === id;\n      }));\n    });\n  }\n\n}\n\n@Pipe({\n  name: 'grade'\n})\nexport class GradePipe implements PipeTransform {\n\n  constructor(private _gradeScaleService: GradeScaleService) {\n    //\n  }\n\n  transform(value: any, gradeScale?: any): any {\n    if (gradeScale instanceof GradeScale) {\n      return Promise.resolve(gradeScale.format(value));\n    }\n    return this._gradeScaleService.getGradeScale(gradeScale).then( result => {\n      if (typeof result === 'undefined') {\n        return Promise.reject(new Error('The specified grade scale cannot be found or is inaccessible'));\n      }\n      return Promise.resolve(result.format(value));\n    });\n  }\n\n}\n","import {ApplicationRef, ComponentFactoryResolver, ComponentRef, EmbeddedViewRef, Injectable, Injector} from '@angular/core';\nimport {SpinnerComponent} from '../components/modal/spinner.component';\n/**\n *\n * Displays Loading Spinner\n * @export\n * @class LoadingService\n */\n@Injectable()\nexport class LoadingService {\n  private componentRef: ComponentRef<any> | null = null;\n\n  constructor(private componentFactoryResolver: ComponentFactoryResolver,\n              private appRef: ApplicationRef,\n              private injector: Injector) {\n  }\n\n  private appendComponentToBody(component: any) {\n\n    // do nothing if component ref already exists\n    if (this.componentRef) {\n      return;\n    }\n\n    // create a component reference from the component\n    this.componentRef = this.componentFactoryResolver\n        .resolveComponentFactory(component)\n        .create(this.injector);\n\n    // attach component to the appRef so that it's inside the ng component tree\n    this.appRef.attachView(this.componentRef.hostView);\n\n    // get DOM element from component\n    const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n\n    // append DOM element to the body\n    document.body.appendChild(domElem);\n  }\n\n  /**\n   *\n   * Toggles show/hide state of spinner\n   */\n  toggle() {\n    if (this.componentRef) {\n      this.hideLoading();\n    } else {\n      this.showLoading();\n    }\n  }\n\n  /**\n   *\n   * Shows spinner\n   */\n  showLoading() {\n    if (this.componentRef == null) {\n      this.appendComponentToBody(SpinnerComponent);\n    }\n  }\n\n  /**\n   *\n   * Hides spinner\n   */\n  hideLoading() {\n    if (this.componentRef) {\n      this.appRef.detachView(this.componentRef.hostView);\n      this.componentRef.destroy();\n      this.componentRef = null;\n    }\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DatePipe} from '@angular/common';\n\n/**\n *\n * Custom DatePipe representation\n * @export\n * @class LocalizedDatePipe\n * @implements {PipeTransform}\n */\n@Pipe({\n    name: 'localizedDate',\n    pure: false\n})\nexport class LocalizedDatePipe implements PipeTransform {\n\n    constructor(private translateService: TranslateService) {\n    }\n\n    /**\n     *\n     * Converts Date value that been passed\n     * @param {*} value The Date that needs to be converted\n     * @param {string} [pattern='mediumDate'] Pattern of Date\n     * @returns {*} Converted Date\n     * @memberof LocalizedDatePipe\n     */\n    transform(value: any, pattern: string = 'mediumDate'): any {\n        const datePipe: DatePipe = new DatePipe(this.translateService.currentLang);\n        if (typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}$/.test(value)) {\n            return datePipe.transform(new Date(value + ':00'), pattern);\n        }\n        return datePipe.transform(value, pattern);\n    }\n}\n","export async function registration (_numeral: { register(locale: string, shortLocale: string, config: any) }){\n  await _numeral.register('locale', 'el', {\n    delimiters: {\n      thousands: '.',\n      decimal: ','\n    },\n    abbreviations: {\n      thousand: 'χιλ',\n      million: 'εκ',\n      billion: 'δισ',\n      trillion: 'τρισ'\n    },\n    ordinal: function (number) {\n      return 'ο';\n    },\n    currency: {\n      symbol: '€'\n    }\n  });\n\n  await _numeral.register('locale', 'el-gr', {\n    delimiters: {\n      thousands: '.',\n      decimal: ','\n    },\n    abbreviations: {\n      thousand: 'χιλ',\n      million: 'εκ',\n      billion: 'δισ',\n      trillion: 'τρισ'\n    },\n    ordinal: function (number) {\n      return 'ο';\n    },\n    currency: {\n      symbol: '€'\n    }\n  });\n\n  await _numeral.register('locale', 'cy', {\n    delimiters: {\n      thousands: '.',\n      decimal: ','\n    },\n    abbreviations: {\n      thousand: 'χιλ',\n      million: 'εκ',\n      billion: 'δισ',\n      trillion: 'τρισ'\n    },\n    ordinal: function (number) {\n      return 'ο';\n    },\n    currency: {\n      symbol: '€'\n    }\n  });\n\n  await _numeral.register('locale', 'cy-cy', {\n    delimiters: {\n      thousands: '.',\n      decimal: ','\n    },\n    abbreviations: {\n      thousand: 'χιλ',\n      million: 'εκ',\n      billion: 'δισ',\n      trillion: 'τρισ'\n    },\n    ordinal: function (number) {\n      return 'ο';\n    },\n    currency: {\n      symbol: '€'\n    }\n  });\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport * as _numeral from 'numeral';\nconst numeral = (_numeral as any).default || _numeral;\nimport 'numeral/locales';\nimport {registration} from '../services/numeral/locales';\n\n@Pipe({\n    name: 'semester',\n    pure: false\n})\nexport class SemesterPipe implements PipeTransform {\n\n    constructor(private _translateService: TranslateService) {\n      const numeralWithLocales: { locales: { [key: string]: any }} = numeral as any;\n      if(numeralWithLocales.locales['el'] == null) {\n        registration(numeral).then(async ()=> {\n          await Promise.resolve();\n        });\n      }\n    }\n\n    transform(value: any, pattern: string = 'long'): any {\n        if (typeof value === 'object') {\n            value = value.id;\n        }\n        if (value >= 250) {\n            return this._translateService.instant(`Semester.full.${value}`);\n        }\n        numeral.locale(this._translateService.currentLang);\n        return this._translateService.instant(`Semester.${pattern}`,\n            {\n                value: value,\n                ordinal: numeral(value).format('o')\n            });\n    }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {template, TemplateSettings} from 'lodash';\n\n/**\n *  Template Pipe is an impure pipe that can escape\n *  HTML and interpolated data properties and\n *  execute JavaScript in \"evaluate\" delimiters\n */\n@Pipe({\n  name: 'template',\n  pure: false\n})\nexport class TemplatePipe implements PipeTransform {\n  constructor() {\n  }\n\n  /**\n   * Uses lodash template function to generate a string\n   * from a given template escaping the delimiters. It\n   * deletes the template source after its initialization,\n   * generates the string and nullifies the compiled template\n   * function variable to be garbage-collected.\n   * @param {string} inputTemplate: The template used to generate the string\n   * @param {any} value: The parameter passed to compiled template function\n   * @param {Object | undefined} options: Custom options to pass to lodash template\n   */\n  transform(inputTemplate: string, value: any, options?: TemplateSettings | undefined): any {\n    let _tpl;\n    if (options !== undefined) {\n      /*\n       lodash doesn't throw error when options are not valid, so\n       there is no need to add a try catch block\n       */\n      _tpl = template(inputTemplate, options);\n    } else {\n      _tpl = template(inputTemplate);\n    }\n    delete _tpl.source;\n    const _res = _tpl(value);\n    _tpl = null;\n    return _res;\n  }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({ name: 'truncate' })\nexport class TruncatePipe implements PipeTransform {\n\n  /*\n  The transform method is essential to a pipe. The PipeTransform interface defines that method and guides both tooling and the compiler. Technically, it's optional; Angular looks for and executes the transform method regardless.\n  */\n\n  transform(value: string, limit: number): string | null {\n    if (value == null) {\n        return null;\n    }\n    return value.length < limit\n      ? value\n      : value.slice(0, limit) + '...';\n  }\n}\n","import {Directive, Input} from '@angular/core';\n\n// tslint:disable directive-selector\n@Directive({\n    selector: '[ngVar]',\n    exportAs: 'ngVar'\n})\nexport class NgVarDirective {\n\n    constructor() {\n    }\n\n    [key: string]: any;\n\n    private $implicit: any;\n\n    @Input('ngVar') set assign(value: any) {\n        this.$implicit = value;\n    }\n\n    public get value(): any {\n        return this.$implicit;\n    }\n\n    public set value(value: any) {\n        this.$implicit = value;\n    }\n\n}\n// tslint:enable directive-selector\n","import { Injectable } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { ConfigurationService } from '../../shared/services/configuration.service';\n\n/**\n * @private\n */\nconst currentProfileProperty = 'currentProfile';\n/**\n * @private\n */\nconst currentUserProperty = 'currentUser';\n\ndeclare var $: any;\n\n@Injectable()\nexport class UserService {\n\n\n  private _user: any;\n\n\n  constructor(private _context: AngularDataContext,\n    private _configurationService: ConfigurationService) {\n  }\n\n  /**\n   * Refreshes user token taken by implicit authorization flow.\n   */\n  checkLogin() {\n    // set refresh frame\n    const settings = this._configurationService.settings.auth;\n    const _iframe = $('<iframe>', {\n      /* tslint:disable max-line-length */\n      src: `${settings.authorizeURL}?response_type=token&client_id=${settings.oauth2.clientID}&redirect_uri=${settings.oauth2.callbackURL}&prompt=none`,\n      id: 'openid',\n      frameborder: 1,\n      scrolling: 'no',\n      onload: function() {\n        //\n      }\n    }).hide().appendTo('body');\n  }\n\n\n  /**\n   * Gets current user\n   * @returns {Promise<*>} An object which represents the current user\n   *\n   * Example\n   * ```typescript\nimport {UserService} from '@universis/common';\n\nconstructor(private _userService: UserService) {\n  //\n}\nngOnInit() {\n  this._userService.getUser().then(user => {\n    // place code here...\n  });\n}\n```\n   */\n  async getUser(): Promise<any> {\n    return this.getUserSync();\n  }\n\n  getUserSync() {\n    // if user already taken\n    if (this._user) {\n      // return user\n      return this._user;\n    }\n    const sessionStorageUser = sessionStorage.getItem(currentUserProperty);\n    if (sessionStorageUser) {\n      // get user from storage\n      const currentUser = JSON.parse(sessionStorageUser);\n      // get interactive user\n      this._user = Object.assign({}, currentUser);\n      // set context\n      Object.defineProperty(this._user, 'context', {\n        configurable: true,\n        enumerable: false,\n        value: this._context\n      });\n      // set user bearer authorization\n      this._context.setBearerAuthorization(this._user.token.access_token);\n      // set current language\n      this._context.getService().setHeader('accept-language', this._configurationService.currentLocale);\n      // return user\n      return this._user;\n    }\n    return null;\n  }\n\n  /**\n   * Sets current user profile\n   * @param {*} profile\n   * @returns UserService\n   */\n  setProfile(profile?: any): UserService {\n    if (typeof profile === 'undefined' || profile == null) {\n      sessionStorage.removeItem(currentProfileProperty);\n    } else {\n      sessionStorage.setItem(currentProfileProperty, JSON.stringify(profile));\n    }\n    return this;\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { UserService } from './user.service';\n\n@Injectable()\nexport class ActivatedUser {\n\n    public user: BehaviorSubject<any> = new BehaviorSubject(null);\n\n    constructor(private _userService: UserService) {\n        this.user.next(this.activatedUser);\n    }\n\n    private get activatedUser() {\n        return this._userService.getUserSync();\n    }\n\n}\n","import { Injectable, Component, OnInit, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport declare interface TranslateError {\n  title?: string;\n  message?: string;\n  action?: string;\n  actionText?: string;\n  continue?: string;\n  icon?: string;\n  iconClass?: string;\n}\n\nexport declare interface ShowErrorModalOptions {\n  continueLink?: string;\n  buttonText?: string;\n  iconClass?: string;\n}\n\n@Component( {\n  selector: 'universis-error-modal',\n  template: `\n    <div class=\"modal-header text-center\">\n      <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"hide()\">\n        <span aria-hidden=\"true\">&times;</span>\n      </button>\n    </div>\n    <div class=\"modal-body mt-0 mb-0 text-center\">\n      <div class=\"text-center\">\n        <ng-container *ngIf=\"iconClass; then iconTemplate; else iconDefault\">\n        </ng-container>\n        <ng-template #iconTemplate>\n          <div class=\"mb-2\">\n            <i [ngClass]=\"iconClass\" class=\"fa-4x\"></i>\n          </div>\n        </ng-template>\n\n        <ng-template #iconDefault>\n          <div class=\"icon-circle icon-circle-danger\">\n              <i class=\"fa fa-times\"></i>\n          </div>\n        </ng-template>\n            <div class=\"font-2xl font-weight-bold mt-2\">\n              {{title}}\n            </div>\n            <p class=\"mt-2\">\n             {{message}}\n            </p>\n        </div>\n    </div>\n    <div class=\"modal-footer\">\n      <button [lang]=\"language\" type=\"button\" (click)=\"hide()\"\n              class=\"btn btn-gray-100 btn-ok text-uppercase\" [translate]=\"buttonText\"></button>\n    </div>\n  `, styles: [`\n  .btn-ok {\n    font-size: 16px;\n  }\n  `]\n   })\n\n  export class ErrorModalComponent implements OnInit {\n\n    public code;\n    public language;\n    @Input() continueLink = '/';\n    @Input() message: string | undefined;\n    @Input() title: string | undefined;\n    @Input() iconClass?: string;\n    @Input() buttonText = 'Error.Continue';\n    @Input() error: any;\n\n    constructor ( private _translateService: TranslateService,\n                  public bsModalRef: BsModalRef,\n                  private _router: Router ) {\n      this.language = this._translateService.currentLang;\n    }\n\n  hide() {\n      this.bsModalRef.hide();\n      if (this.continueLink == null) {\n        return Promise.resolve();\n      }\n      if (this.continueLink === '.') {\n        return Promise.resolve();\n      }\n      return this._router.navigate([this.continueLink]);\n    }\n\n    ngOnInit() {\n\n      // get last error\n      const error = this.error;\n      // check error.code property\n      if (error && typeof error.code === 'string') {\n        this.code = error.code;\n      } else if (error && typeof (error.status || error.statusCode) === 'number') {\n        this.code = `E${error.status || error.statusCode}`;\n      } else {\n        this.code = 'E500';\n      }\n      if (error && typeof error.continue === 'string') {\n        this.continueLink = error.continue;\n      }\n      this._translateService.get(this.code).subscribe((translation: TranslateError) => {\n        if (translation) {\n          this.title = translation.title;\n          this.message = (this.error instanceof HttpErrorResponse && this.error.error && this.error.error.message)\n            ? this.error.error.message : translation.message;\n          // set custom icon class\n          if (this.iconClass == null) {\n            if (translation.iconClass || translation.icon) {\n              this.iconClass = translation.iconClass || translation.icon;\n            }\n          }\n          // set custom button text\n          if (this.buttonText === 'Error.Continue') {\n            if (translation.actionText || translation.action) {\n              this.buttonText = translation.actionText || translation.action;\n            }\n          }\n          if (translation.continue) {\n            // force set message\n            this.message = translation.message;\n            // force set continue link\n            this.continueLink = translation.continue;\n          }\n        } else {\n          this._translateService.get('E500').subscribe((translation: TranslateError) => {\n            this.title = translation.title;\n            this.message = (this.error instanceof HttpErrorResponse && this.error.error && this.error.error.message)\n              ? this.error.error.message : translation.message;\n          });\n        }\n      });\n    }\n  }\n\n\n@Injectable()\nexport class ErrorService {\n\n  private _lastError: any;\n\n  constructor(private _router: Router, private _modalService: BsModalService) {\n    //\n  }\n\n  /**\n   * @param {*} error\n   * @returns {Promise<boolean>}\n   */\n  navigateToError(error) {\n    this.setLastError(error);\n    // if error is an instance of HttpErrorResponse\n    if (error instanceof HttpErrorResponse) {\n      if (error && error.error && error.error.statusCode) {\n        return this._router.navigate(['/error', error.error.statusCode]);\n      }\n      // navigate to specific error e.g. /error/401\n      // this will allow application to override specific error pages and show custom errors\n      return this._router.navigate(['/error', error.status]);\n    }\n    if (error && error.statusCode) {\n      return this._router.navigate(['/error', error.statusCode]);\n    }\n    // otherwise show default error component\n    return this._router.navigate(['/error']);\n  }\n\n  showError(error: any, options?: ShowErrorModalOptions) {\n    const initialState = Object.assign({\n      error: error\n    }, options);\n    this._modalService.show(ErrorModalComponent, {initialState});\n  }\n\n  /**\n   * Sets last application error\n   * @param {*=} err\n   * @return ErrorService\n   */\n  setLastError(err?: any) {\n    this._lastError = err;\n    return this;\n  }\n\n  /**\n   * Gets last application error\n   * @return {any}\n   */\n  getLastError() {\n    return this._lastError;\n  }\n\n}\n","import {Inject, Injectable, InjectionToken} from '@angular/core';\nimport {ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot} from '@angular/router';\nimport { UserService } from '../services/user.service';\nimport { Observable } from 'rxjs';\nimport { ErrorService } from '../../error/error.service';\nimport {ConfigurationService} from '../../shared/services/configuration.service';\nimport {LocationPermission} from './auth.guard.interfaces';\n\nexport let APP_LOCATIONS = new InjectionToken('app.locations');\n\nexport const DEFAULT_APP_LOCATIONS = [{\n    privilege: 'Location',\n    target: {\n        url: '^/auth/'\n    },\n    mask: 1\n  },\n  {\n    privilege: 'Location',\n    target: {\n        url: '^/error'\n    },\n    mask: 1\n  }\n];\n\n@Injectable()\nexport class AuthGuard implements CanActivate, CanActivateChild {\n\n  constructor(private _router: Router,\n    @Inject(APP_LOCATIONS) private _locations: Array<LocationPermission>,\n    private _errorService: ErrorService,\n    private _configurationService: ConfigurationService,\n    private _userService: UserService) {\n\n    // merge app locations, if any\n    if (this._configurationService.settings && this._configurationService.settings.auth) {\n      // get extra locations\n      const appLocations = this._configurationService.settings.auth.locations;\n      if (Array.isArray(appLocations)) {\n        // get APP_LOCATIONS\n        if (this._locations) {\n          this._locations.unshift.apply(this._locations, appLocations);\n        }\n      }\n    }\n    this._locations.forEach((x) => {\n      if (typeof x.target.pattern === 'undefined' || x.target.pattern === null) {\n        x.target.pattern = new RegExp(x.target.url, 'i');\n      }\n    });\n  }\n\n  public canActivateLocation(path: string, user: any): LocationPermission | undefined {\n\n    let groups: string[] = [];\n    if (user && user.groups) {\n      groups = user.groups.map((x) => {\n        return x.name;\n      });\n    }\n    return this._locations.find((x) => {\n      return x.target?.pattern?.test(path)\n        && (typeof x.account === 'undefined' || groups.indexOf(x.account.name) >= 0)\n        && (x.mask === 0 || (typeof x.mask === 'number' && (x.mask & 1) === 1))\n        && user;\n    });\n\n  }\n\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {\n    return this._canActivate(state);\n  }\n\n  canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n    return this._canActivate(state);\n  }\n\n  private _canActivate(state: RouterStateSnapshot): Observable<boolean> | boolean {\n    return new Observable<boolean>(resolve => {\n      this._userService.getUser().then((res) => {\n        const location = this.canActivateLocation(state.url, res);\n        if (location && (typeof location.account === 'undefined')) {\n          return resolve.next(true);\n        }\n        if (res) {\n          if (location && typeof location.mask === 'number' && (location.mask & 1) === 1) {\n            return resolve.next(true);\n          } else {\n            if (location && location.redirectTo) {\n              void this._router.navigate([location.redirectTo]);\n              return resolve.next(false);\n            }\n            // noinspection JSIgnoredPromiseFromCall\n            this._router.navigate(['/error/403.1'], {\n              queryParams: {\n                action: 'Error.LoginAsDifferentUser',\n                continue: '/auth/loginAs'\n              }\n            });\n            return resolve.next(false);\n          }\n        }\n        // noinspection JSIgnoredPromiseFromCall\n        this._router.navigate(['/auth/login'], { queryParams: {\n            continue: state.url\n          }});\n        return resolve.next(false);\n      });\n    });\n  }\n}\n","import {AfterViewInit, Directive, Input, OnDestroy, TemplateRef, ViewContainerRef} from '@angular/core';\nimport { ActivatedUser } from '../../auth/services/activated-user.service';\nimport { AuthGuard } from '../../auth/guards/auth.guard';\nimport { Subscription } from 'rxjs';\n\n// tslint:disable directive-selector\n@Directive({\n    selector: '[if-location]'\n})\nexport class IfLocationDirective implements AfterViewInit, OnDestroy {\n\n    private $implicit?: string;\n    subscription?: Subscription;\n\n    constructor(private activateUser: ActivatedUser,\n        private view: ViewContainerRef,\n        private authGuard: AuthGuard,\n        private template: TemplateRef<any>) {\n        \n    }\n    ngOnDestroy(): void {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n\n    @Input('if-location') set assign(value: string) {\n        if (value) {\n            Object.assign(this, {\n                $implicit: value\n            });\n        }\n    }\n\n    public get value(): string | undefined {\n        return this.$implicit;\n    }\n\n    public set value(value: string | undefined) {\n        this.$implicit = value;\n    }\n\n    ngAfterViewInit(): void {\n        this.subscription = this.activateUser.user.subscribe((user) => {\n            if (this.$implicit == null) {\n                return this.view.clear();\n            }\n            const locationPermission = this.authGuard.canActivateLocation(this.$implicit, user);\n            const mask = locationPermission && locationPermission.mask;\n            if (mask != null && ((mask & 1) === 0)) {\n                this.view.clear();\n            } else {\n                this.view.createEmbeddedView(this.template);\n            }\n        });\n    }\n\n}\n// tslint:enable directive-selector\n","import { Injectable } from \"@angular/core\";\nimport { AngularDataContext } from \"@themost/angular\";\n\nexport declare interface ApiServerStatus {\n  version: string;\n  database: string;\n  modifiedAt?: Date;\n  attachedAt?: Date;\n}\n\nexport declare interface ServiceDefinition {\n  serviceType: string;\n  strategyType?: string;\n}\n\n/**\n *\n * This Service is used to get diagnostics from the api server\n * @export\n * @class DiagnosticsService\n */\n\n@Injectable()\nexport class DiagnosticsService {\n\n  private _services: Array<ServiceDefinition> | undefined;\n\n  constructor(private context: AngularDataContext) { }\n\n  /**\n   *\n   * Get status of api server\n   * @returns {Promise<ApiServerStatus>} - Returns ApiServerStatus promise with version, database and optional modifiedAt/attachedAt dates.\n   * @memberof DiagnosticsService\n   */\n  getStatus(): Promise<ApiServerStatus> {\n    return this.context.getService().execute({\n      method: 'GET',\n      url: 'diagnostics/status',\n      headers: { },\n      data: null\n    });\n  }\n\n  async getServices(): Promise<Array<ServiceDefinition>> {\n    if (this._services) {\n      return this._services;\n    }\n    const results = await this.context.getService().execute({\n      method: 'GET',\n      url: 'diagnostics/services',\n      headers: {},\n      data: null\n    });\n    this._services = results;\n    return results;\n  }\n\n  refresh() {\n    delete this._services;\n  }\n\n  async hasService(serviceType: string): Promise<boolean> {\n    const results = await this.getServices();\n    return results.findIndex((item) => {\n      return item.serviceType === serviceType;\n    }) > -1;\n  }\n\n  async hasStrategy(serviceType: string, strategyType: string): Promise<boolean> {\n    const results = await this.getServices();\n    return results.findIndex((item) => {\n      return item.serviceType === serviceType &&\n        item.strategyType === strategyType;\n    }) > -1;\n  }\n\n}\n","import { Directive, AfterViewInit, OnDestroy, ViewContainerRef, TemplateRef, Input } from \"@angular/core\";\nimport { DiagnosticsService } from \"../services/diagnostics.service\";\nimport { Subscription } from \"rxjs\";\n\n@Directive({\n  selector: '[if-service]'\n})\nexport class IfServiceDirective implements AfterViewInit, OnDestroy {\n  private $implicit?: string;\n  subscription?: Subscription;\n\n  constructor(\n    private view: ViewContainerRef,\n    private template: TemplateRef<any>,\n    private diagnosticsService: DiagnosticsService\n  ) {}\n\n  ngOnDestroy(): void {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n  @Input('if-service') set assign(value: string) {\n    if (value) {\n      Object.assign(this, {\n        $implicit: value\n      });\n    }\n  }\n\n  public get value() {\n    return this.$implicit as string;\n  }\n\n  public set value(value: string) {\n    this.$implicit = value;\n  }\n\n  ngAfterViewInit(): void {\n    if (this.$implicit == null) {\n      return;\n    }\n    this.diagnosticsService.hasService(this.$implicit).then((result) => {\n      if (result == true) {\n        this.view.createEmbeddedView(this.template);\n      } else {\n        this.view.clear();\n      }\n    });\n  }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Pipe({\n  name: 'localize',\n  pure: true\n})\nexport class LocalizedAttributesPipe implements PipeTransform {\n  constructor(private translateService: TranslateService) {\n  }\n\n  /**\n   * Display correct locales for models.\n    @param {object} model\n    @param {string} attribute\n   */\n  transform(model: object, attribute: string): any {\n    if (model['locale'] && model['locale']['inLanguage'] == this.translateService.currentLang){\n        if (model['locale'][attribute]) {\n            return model['locale'][attribute]\n        }\n    }\n    return model[attribute] || undefined\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {ConfigurationService} from './configuration.service';\nimport {AngularDataContext} from '@themost/angular';\n\n/**\n *\n * This Service is used to get or set user storage items\n * @export\n * @class ConfigurationService\n */\n@Injectable()\nexport class UserStorageService {\n\n    private _hasUserStorage;\n\n    constructor(private context: AngularDataContext) {\n        //\n    }\n\n    /**\n     * Validates if server supports user storage\n     */\n    async hasUserStorage() {\n        // if flag has not been set yet\n        if (this._hasUserStorage == null) {\n            // ping server for user storage\n            const services = await this.context.getService().execute({\n                method: 'GET',\n                url: 'diagnostics/services',\n                headers: { },\n                data: null\n            });\n            // if return value is an array of services\n            if (Array.isArray(services)) {\n                // search for user storage service\n                this._hasUserStorage = services.find( service => {\n                    return service.serviceType === 'UserStorageService';\n                }) != null;\n                return this._hasUserStorage;\n            }\n            // otherwise set flag to false\n            this._hasUserStorage = false;\n        }\n        // and finally return flag\n        return this._hasUserStorage;\n    }\n\n    /**\n     * Gets a user storage item based on the given key\n     * @param key\n     */\n    async getItem(key: string): Promise<any> {\n        const hasUserStorage = await this.hasUserStorage();\n        if (!hasUserStorage) {\n            throw new Error('API server configuration does not support user storage service.');\n        }\n       return await this.context.getService().execute({\n           method: 'POST',\n           url: 'users/me/storage/get',\n           headers: { },\n           data: {\n               key: key\n           }\n       });\n    }\n\n    // noinspection JSUnusedGlobalSymbols\n    /**\n     * Sets a user storage item\n     * @param key\n     * @param value\n     */\n    async setItem(key: string, value: any): Promise<any> {\n\n        const hasUserStorage = await this.hasUserStorage();\n        if (!hasUserStorage) {\n            throw new Error('API server configuration does not support user storage service.');\n        }\n        return await this.context.getService().execute({\n            method: 'POST',\n            url: 'users/me/storage/set',\n            headers: { },\n            data: {\n                key: key,\n                value: value\n            }\n        });\n    }\n\n    /**\n     * Removes a user storage item\n     * @param key\n     */\n    async removeItem(key: string): Promise<any> {\n        const hasUserStorage = await this.hasUserStorage();\n        if (!hasUserStorage) {\n            throw new Error('API server configuration does not support user storage service.');\n        }\n        return await this.context.getService().execute({\n            method: 'POST',\n            url: 'users/me/storage/set',\n            headers: { },\n            data: {\n                key: key,\n                value: null\n            }\n        });\n    }\n\n}\n","import { Injectable } from '@angular/core';\nimport { uniqBy, slice } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n *\n * @interface UserActivityEntry\n *\n * UserActivityEntry is a single entry at the user activity list\n *\n */\nexport declare interface UserActivityEntry {\n  category: string;\n  description: string;\n  url: string;\n  dateCreated: Date;\n}\n\n\n/**\n * UserActivityService\n *\n * Handles the user activity tracking.\n *\n */\n\n@Injectable()\nexport class UserActivityService {\n\n  protected userActivityEntries$: BehaviorSubject<UserActivityEntry[]>;\n  protected maxItems = 10;\n  protected list: Array<UserActivityEntry> = [];\n\n\n  constructor() {\n    this.userActivityEntries$ = new BehaviorSubject<UserActivityEntry[]>([]);\n  }\n\n  /**\n   *\n   * Adds a single item at the userActivity service.\n   *\n   * @param {UserActivityEntry} entry The entry to be written\n   *\n   */\n  public async setItem(entry: UserActivityEntry): Promise<void> {\n\n    if (!entry) {\n      throw new Error('Entry may not be null');\n    }\n\n    if (!entry.url) {\n      throw new Error('Entry URL may not be empty');\n    }\n\n    const snapshot = [...this.list];\n    snapshot.unshift(entry);\n\n    const filteredList = uniqBy(snapshot, ({ url }) => url);\n    const limitedList = slice(filteredList, 0, this.maxItems);\n    this.list = limitedList;\n\n    if (this.userActivityEntries$) {\n      this.userActivityEntries$.next(limitedList);\n    }\n  }\n\n  /**\n   *\n   * Get the list of the user activity.\n   *\n   * @returns {Array<UserActivityEntry>} The list of the entries\n   *\n   */\n  public async getItems(): Promise<Array<UserActivityEntry>> {\n    return this.list;\n  }\n\n  /**\n   *\n   * Get the list of the user activity as observable\n   *\n   */\n  public async getItemsAsObservable(): Promise<Observable<Array<UserActivityEntry>>> {\n    return this.userActivityEntries$.asObservable();\n  }\n}\n","import { UserActivityService, UserActivityEntry } from '../user-activity/user-activity.service';\n\n/**\n *\n * SessionUserActivityService\n *\n * Handles the io operations with the session storage for the user activity\n * service\n *\n */\n\nexport class SessionUserActivityService extends UserActivityService {\n\n  constructor() {\n    super();\n    const userActivity = sessionStorage.getItem('userActivity');\n\n    if (userActivity) {\n      const rawList = JSON.parse(userActivity);\n\n      // NOTE: JSON.stringify transforms dates as ISOString, but the\n      //       UserActivityEntry expects Date object.\n      this.list = rawList.map((item) => ({\n          ...item,\n          dateCreated: new Date(item.dateCreated)\n        })\n      );\n    }\n  }\n\n  /**\n   *\n   * Adds a new entry at the user activity list\n   *\n   * @param {UserActivityEntry} entry The entry to write at the session storage\n   *\n   * @override\n   *\n   */\n  public setItem(entry: UserActivityEntry): Promise<void> {\n    return super.setItem(entry).then(() => {\n      sessionStorage.setItem('userActivity', JSON.stringify(this.list));\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { UserStorageService } from '../user-storage';\nimport { UserActivityService, UserActivityEntry } from '../user-activity/user-activity.service';\nimport { Observable } from 'rxjs';\n\n/**\n *\n * PersistentUserActivityService\n *\n * Handles and store the user activity at the userStorage\n *\n */\n@Injectable()\nexport class PersistentUserActivityService extends UserActivityService {\n\n  private initialized = false;\n\n  constructor(protected userStorage: UserStorageService) {\n    super();\n  }\n\n  /**\n   *\n   * Fetches existing userActivity data from the userStorage\n   *\n   */\n  private async initialize(): Promise<void> {\n    const hasUserStorage = await this.userStorage.hasUserStorage();\n\n    if (!hasUserStorage) {\n      throw new Error('UserStorage is not found.');\n    }\n\n    const userActivity = await this.userStorage.getItem('registrar/userActivity');\n\n    if (userActivity && userActivity.value) {\n      this.list = userActivity.value;\n      this.userActivityEntries$.next(this.list);\n      this.initialized = true;\n    }\n  }\n\n  /**\n   *\n   * Adds a new user activity entry on userStorage\n   *\n   * @param {UserActivityEntry} entry The entry to be stored\n   *\n   */\n  public setItem(entry: UserActivityEntry): Promise<void>  {\n    if (!this.isInitialized()) {\n      return this.initialize().then(() => {\n        return super.setItem(entry).then(() => {\n          return this.userStorage.setItem('registrar/userActivity', this.list);\n        });\n      });\n    }\n    return super.setItem(entry).then(() => {\n      return this.userStorage.setItem('registrar/userActivity', this.list);\n    });\n  }\n\n  /**\n   *\n   * @override\n   * Get the list of user activity entries\n   *\n   * @returns {Array<UserActivityEntry>} The list of user activity entries\n   */\n  public async getItems(): Promise<Array<UserActivityEntry>> {\n    if (!this.isInitialized()) {\n      await this.initialize();\n    }\n\n    return this.list;\n  }\n\n  /**\n   *\n   * Get the initialization status of the service.\n   * When the service is initialized, the userActivity is fetched and the\n   * service is ready to use\n   *\n   * @returns {boolean} A flag to tell whether the service is ready to use\n   *\n   */\n  public isInitialized(): boolean {\n    return this.initialized;\n  }\n\n  /**\n   *\n   * @override\n   * Get the list of the user activity as observable\n   *\n   */\n  public async getItemsAsObservable(): Promise<Observable<Array<UserActivityEntry>>> {\n    if (!this.isInitialized()) {\n      await this.initialize();\n    }\n    return this.userActivityEntries$.asObservable();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Args } from '@themost/client';\n\n/**\n *\n * Request types service\n *\n * Registrar stuff accepts requests. Requests can be organized by category.\n * This service stores the list of the available requests.\n *\n * This service can be used to read the available categories, the entries of those\n * categories and update the list of the categories.\n *\n * An example of a request category type is the document category (e.g. transcript).\n *\n */\n\n\n/**\n *\n * RequestTypeItem interface\n *\n * Represents a request type that is going to be used by request type service\n *\n * @param {string} name The name of an item, commonly a translation key e.g. 'Requests.Transcript'\n * @param {string} alternateName the key of the item e.g. transcript\n * @param {string} description An optional description\n * @param {string} category The category of this item e.g. DocumentRequests, OtherRequests, Questions etc\n * @param {string} entryPoint The entry point that is going to be used for this request\n * @param {string} previewEntryPoint The entry point that is going to be used for previewing a request\n *\n */\nexport declare interface RequestTypeItem {\n  name: string;\n  alternateName: string;\n  category: string;\n  entryPoint: string;\n  previewEntryPoint?: string;\n  description?: string;\n}\n\n/**\n *\n * RequestTypeServiceBase\n *\n */\ndeclare interface RequestTypeServiceBase {\n  add(item: RequestTypeItem): void;\n  addRange(...items: Array<RequestTypeItem>): void;\n  remove(item: RequestTypeItem): RequestTypeItem | null;\n  getItems(): Array<RequestTypeItem>;\n}\n\n\n/**\n *\n * RequestTypesServiceService\n *\n * Read the available categories, the entries of those categories and update the list of the categories.\n *\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class RequestTypesService implements RequestTypeServiceBase {\n\n  /**\n   * @param {Array<any>} requestTypes The list of the request categories\n   */\n  private requestTypes: Array<RequestTypeItem> = [];\n\n  constructor() { }\n\n  /**\n   *\n   * Adds a new item to the service list\n   *\n   * @param {RequestTypeItem} item The request type item to be added\n   *\n   */\n  add(item: RequestTypeItem): void {\n    Args.notNull(item, 'RequestTypeItem');\n    Args.notNull(item.name, 'RequestTypeItem name');\n    Args.notNull(item.alternateName, 'RequestTypeItem alternateName');\n    Args.notNull(item.category, 'RequestTypeItem category');\n    Args.notNull(item.entryPoint, 'RequestTypeItem entryPoint');\n\n    const re = new RegExp(`^${item.alternateName}$`, 'ig');\n    const itemExist = this.requestTypes.some((existingItem) =>\n      re.test(existingItem.alternateName)\n    );\n\n    if (!itemExist) {\n      this.requestTypes.push(item);\n    }\n  }\n\n  /**\n   *\n   * Adds a number of items to the service list\n   *\n   * @param {Array<RequestTypeItem>} items The array of the items to be included.\n   *\n   */\n  addRange(...items: Array<RequestTypeItem>): void {\n    for (const item of items) {\n      this.add(item);\n    }\n  }\n\n  /**\n   *\n   * Remove\n   *\n   * Removes an item from the list and returns the deleted item\n   * Returns null when the item is not found\n   *\n   * @param {RequestTypeItem} item The item to be deleted\n   *\n   */\n  remove(item: RequestTypeItem): RequestTypeItem | null {\n    Args.notNull(item, 'RequestTypeItem');\n\n    const re = new RegExp(`^${item.alternateName}$`, 'ig');\n    const findIndex = this.requestTypes.findIndex((existingItem) =>\n      re.test(existingItem.alternateName)\n    );\n\n    if (findIndex < 0) {\n      return null;\n    }\n\n    // remove item at index found and return the deleted item\n    return this.requestTypes.splice(findIndex, 1)[0];\n  }\n\n  /**\n   *\n   * Remove\n   *\n   * Removes an item from the list and returns the deleted item\n   * Returns null when the item is not found\n   *\n   * @param {string} alternateName The alternateName of item to be deleted\n   *\n   */\n  removeByName(alternateName: string): RequestTypeItem | null {\n    const re = new RegExp(`^${alternateName}$`, 'ig');\n    const targetItem = this.requestTypes.find((existingItem) =>\n      re.test(existingItem.alternateName)\n    );\n\n    if (!targetItem) {\n      return null;\n    }\n\n    return this.remove(targetItem);\n  }\n\n  /**\n   *\n   * getItems\n   *\n   * Returns the current state of the request items list\n   *\n   */\n  getItems(): Array<RequestTypeItem> {\n    return [...this.requestTypes];\n  }\n}\n","import {ChangeDetectorRef, Injectable, Inject, InjectionToken} from '@angular/core';\nimport {TranslateService, TranslatePipe} from '@ngx-translate/core';\n\nexport declare interface AppSidebarNavigationItem {\n  key: string;\n  url: string;\n  name?: string;\n  class?: string;\n  index?: number;\n  icon?: string;\n  children?: Array<AppSidebarNavigationItem>;\n}\n\nexport let SIDEBAR_LOCATIONS = new InjectionToken<Array<AppSidebarNavigationItem>>('app.sidebar.locations');\n\nclass TranslationChangeDetector extends ChangeDetectorRef {\n  checkNoChanges(): void {\n  }\n\n  detach(): void {\n  }\n\n  detectChanges(): void {\n  }\n\n  markForCheck(): void {\n  }\n\n  reattach(): void {\n  }\n\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppSidebarService {\n\n  public navigationItems: Array<AppSidebarNavigationItem> = [];\n  private readonly _changeDetector: TranslationChangeDetector;\n  constructor(private _translateService: TranslateService,\n    @Inject(SIDEBAR_LOCATIONS) private sidebarLocations: Array<AppSidebarNavigationItem>) {\n    this._changeDetector = new TranslationChangeDetector();\n  }\n\n  public loadConfig(): Promise<void> {\n    return new Promise((resolve) => {\n      this.addRange(this.sidebarLocations);\n      return resolve();\n    });\n  }\n\n  /**\n   * Adds one or more navigation items to application sidebar\n   * @param {AppSidebarNavigationItem} item\n   */\n  public add(...item: Array<AppSidebarNavigationItem>): void {\n        // initialize translate pipe with null change detector\n        const pipe = new TranslatePipe(this._translateService, this._changeDetector);\n        // add navigation items to array\n        this.navigationItems.push.apply(this.navigationItems, item.map(navigationItem => {\n          // translate name\n        const x = Object.assign(navigationItem, {\n          name: pipe.transform(navigationItem.key)\n        });\n        if (Array.isArray(x.children)) {\n          // translate children\n          x.children = x.children.map( child => {\n            return Object.assign(child, {\n              name: pipe.transform(child.key)\n            });\n          });\n        }\n        return x;\n      }));\n  }\n\n  /**\n   * Adds a collection of navigation items to application sidebar\n   * @param {Array<AppSidebarNavigationItem>} items\n   */\n  public addRange(items: Array<AppSidebarNavigationItem>): void {\n    return this.add.apply(this, items);\n  }\n\n  /**\n   * Remove one navigation item from application sidebar\n   * @param {AppSidebarNavigationItem} item\n   */\n  public remove(item: AppSidebarNavigationItem): void {\n    // find item to remove\n    const itemIndex = this.navigationItems.findIndex(el => el.name === item.name || el.url === item.url ||  el.key === item.key);\n    // if item is found\n    if (itemIndex !== -1) {\n      this.navigationItems.splice(itemIndex, 1, );\n    }\n  }\n\n  /**\n   * Removes one or more navigation items from application sidebar\n   * @param {Array<AppSidebarNavigationItem>} items\n   */\n  public removeRange(items: Array<AppSidebarNavigationItem>): void {\n    for (const item of items) {\n      this.remove(item);\n    }\n  }\n\n  /**\n   * Adds one or more navigation items to as children to a sidebar item\n   * @param {AppSidebarNavigationItem} parent\n   * @param {AppSidebarNavigationItem} item\n   */\n  public addChild(parent: AppSidebarNavigationItem, ...item: Array<AppSidebarNavigationItem>): void {\n    // initialize translate pipe with null change detector\n    const pipe = new TranslatePipe(this._translateService, this._changeDetector);\n    // translate child\n    const translatedChild = item.map(navigationItem => {\n      // translate name\n      const x = Object.assign(navigationItem, {\n        name: pipe.transform(navigationItem.key)\n      });\n      if (Array.isArray(x.children)) {\n        // translate children\n        x.children = x.children.map( child => {\n          return Object.assign(child, {\n            name: pipe.transform(child.key)\n          });\n        });\n      }\n      return x;\n    });\n    // find parent by index and insert into place\n    const parentIndex = this.navigationItems.findIndex(el => el.name === parent.name || el.url === parent.url || el.key === parent.key);\n    if (parentIndex) {\n      const parentWithChildren = this.navigationItems[parentIndex];\n      const childrenArray = parentWithChildren.children || [];\n      childrenArray.push.apply(childrenArray, translatedChild);\n      parentWithChildren.children = childrenArray;\n      // Replaces parent with parentWithChildren\n      this.navigationItems.splice(parentIndex, 1, parentWithChildren);\n    }\n  }\n\n  /**\n   * Adds a collection of navigation items to as children to a parent\n   * @param {AppSidebarNavigationItem} parent\n   * @param {Array<AppSidebarNavigationItem>} items\n   */\n  public addChildren(parent: AppSidebarNavigationItem, items: Array<AppSidebarNavigationItem>): void {\n    return this.addChild.apply(this, [parent, ...items]);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Injectable,\n  Inject,\n  InjectionToken\n} from '@angular/core';\nimport {TranslateService, TranslatePipe} from '@ngx-translate/core';\n\nexport declare interface AppSidebarNavigationItem {\n  key: string;\n  url: string;\n  name?: string;\n  class?: string;\n  index?: number;\n  icon?: string;\n  children?: Array<AppSidebarNavigationItem>;\n}\n\nexport let GUEST_SIDEBAR_LOCATIONS = new InjectionToken<Array<AppSidebarNavigationItem>>('app.guest-sidebar.locations');\n\nclass TranslationChangeDetector extends ChangeDetectorRef {\n  checkNoChanges(): void {\n  }\n\n  detach(): void {\n  }\n\n  detectChanges(): void {\n  }\n\n  markForCheck(): void {\n  }\n\n  reattach(): void {\n  }\n\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppGuestSidebarService {\n\n  public navigationItems: Array<AppSidebarNavigationItem> = [];\n  private readonly _changeDetector: TranslationChangeDetector;\n  constructor(private _translateService: TranslateService,\n    @Inject(GUEST_SIDEBAR_LOCATIONS) private sidebarLocations: Array<AppSidebarNavigationItem>) {\n    this._changeDetector = new TranslationChangeDetector();\n  }\n\n  public loadConfig(): Promise<void> {\n    return new Promise((resolve) => {\n      this.addRange(this.sidebarLocations);\n      return resolve();\n    });\n  }\n\n  /**\n   * Adds one or more navigation items to application sidebar\n   * @param {AppSidebarNavigationItem} item\n   */\n  public add(...item: Array<AppSidebarNavigationItem>): void {\n        // initialize translate pipe with null change detector\n        const pipe = new TranslatePipe(this._translateService, this._changeDetector);\n        // add navigation items to array\n        this.navigationItems.push.apply(this.navigationItems, item.map(navigationItem => {\n          // translate name\n        const x = Object.assign(navigationItem, {\n          name: pipe.transform(navigationItem.key)\n        });\n        if (Array.isArray(x.children)) {\n          // translate children\n          x.children = x.children.map( child => {\n            return Object.assign(child, {\n              name: pipe.transform(child.key)\n            });\n          });\n        }\n        return x;\n      }));\n  }\n\n  /**\n   * Adds a collection of navigation items to application sidebar\n   * @param {Array<AppSidebarNavigationItem>} items\n   */\n  public addRange(items: Array<AppSidebarNavigationItem>): void {\n    return this.add.apply(this, items);\n  }\n\n  /**\n   * Remove one navigation item from application sidebar\n   * @param {AppSidebarNavigationItem} item\n   */\n  public remove(item: AppSidebarNavigationItem): void {\n    // find item to remove\n    const itemIndex = this.navigationItems.findIndex(el => el.name === item.name || el.url === item.url ||  el.key === item.key);\n    // if item is found\n    if (itemIndex !== -1) {\n      this.navigationItems.splice(itemIndex, 1, );\n    }\n  }\n\n  /**\n   * Removes one or more navigation items from application sidebar\n   * @param {Array<AppSidebarNavigationItem>} items\n   */\n  public removeRange(items: Array<AppSidebarNavigationItem>): void {\n    for (const item of items) {\n      this.remove(item);\n    }\n  }\n\n  /**\n   * Adds one or more navigation items to as children to a sidebar item\n   * @param {AppSidebarNavigationItem} parent\n   * @param {AppSidebarNavigationItem} item\n   */\n  public addChild(parent: AppSidebarNavigationItem, ...item: Array<AppSidebarNavigationItem>): void {\n    // initialize translate pipe with null change detector\n    const pipe = new TranslatePipe(this._translateService, this._changeDetector);\n    // translate child\n    const translatedChild = item.map(navigationItem => {\n      // translate name\n      const x = Object.assign(navigationItem, {\n        name: pipe.transform(navigationItem.key)\n      });\n      if (Array.isArray(x.children)) {\n        // translate children\n        x.children = x.children.map( child => {\n          return Object.assign(child, {\n            name: pipe.transform(child.key)\n          });\n        });\n      }\n      return x;\n    });\n    // find parent by index and insert into place\n    const parentIndex = this.navigationItems.findIndex(el => el.name === parent.name || el.url === parent.url || el.key === parent.key);\n    if (parentIndex) {\n      const parentWithChildren = this.navigationItems[parentIndex];\n      const childrenArray = parentWithChildren.children || [];\n      childrenArray.push.apply(childrenArray, translatedChild);\n      parentWithChildren.children = childrenArray;\n      // Replaces parent with parentWithChildren\n      this.navigationItems.splice(parentIndex, 1, parentWithChildren);\n    }\n  }\n\n  /**\n   * Adds a collection of navigation items to as children to a parent\n   * @param {AppSidebarNavigationItem} parent\n   * @param {Array<AppSidebarNavigationItem>} items\n   */\n  public addChildren(parent: AppSidebarNavigationItem, items: Array<AppSidebarNavigationItem>): void {\n    return this.addChild.apply(this, [parent, ...items]);\n  }\n}\n","import {AngularDataContext} from '@themost/angular';\nimport * as _ from 'lodash';\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class LocalUserStorageService {\n\n  constructor(private context: AngularDataContext) {\n  }\n\n  /**\n   *\n   * Indicates whether the localStorage is available\n   *\n   */\n  hasUserStorage(): boolean {\n    return !!localStorage;\n  }\n\n  async getItem(key: string): Promise<any> {\n    const localStorageItem = localStorage.getItem('userLocalStorage');\n    let userLocalStorage = {};\n    if (localStorageItem) {\n      userLocalStorage = JSON.parse(localStorageItem);\n    }\n    const finalKey = key.replace(/\\//g, '.');\n    return {\n      key: key,\n      value: await _.get(userLocalStorage, finalKey, null)\n    };\n  }\n\n  async setItem(key: string, value: any): Promise<any> {\n    const localStorageItem = await localStorage.getItem('userLocalStorage');\n    let userLocalStorage = {};\n    if (localStorageItem) {\n      userLocalStorage = JSON.parse(localStorageItem);\n    }\n    const finalKey = key.replace(/\\//g, '.');\n    if (_.has(userLocalStorage, finalKey) && (value === (await this.getItem(finalKey)).value)) {\n      return;\n    }\n    _.set(userLocalStorage, finalKey, value);\n    await localStorage.setItem('userLocalStorage', JSON.stringify(userLocalStorage));\n  }\n\n  async removeItem(key: string): Promise<any> {\n    const localStorageItem = localStorage.getItem('userLocalStorage');\n    let userLocalStorage = {};\n    if (localStorageItem) {\n      userLocalStorage = JSON.parse(localStorageItem);\n    }\n    const finalKey = key.replace(/\\//g, '.');\n    if (_.has(userLocalStorage, finalKey)) {\n      const result = _.unset(userLocalStorage, finalKey);\n      if (result) {\n        localStorage.setItem('userLocalStorage', JSON.stringify(userLocalStorage));\n        return Promise.resolve();\n      } else {\n        return Promise.reject('Key could not be removed');\n      }\n    } else {\n      return Promise.reject('Key was not found in the object');\n    }\n  }\n}\n\n@Injectable()\nexport class SessionUserStorageService {\n\n  constructor(private context: AngularDataContext) {\n  }\n\n  async getItem(key: string): Promise<any> {\n    const sessionStorageItem = sessionStorage.getItem('userSessionStorage');\n    let userSessionStorage = {};\n    if (sessionStorageItem) {\n      userSessionStorage = JSON.parse(sessionStorageItem);\n    }\n    const finalKey = key.replace(/\\//g, '.');\n    return {\n      key: key,\n      value: await _.get(userSessionStorage, finalKey, null)\n    };\n  }\n\n  async setItem(key: string, value: any): Promise<any> {\n    const sessionStorageItem = sessionStorage.getItem('userSessionStorage');\n    let userSessionStorage = {};\n    if (sessionStorageItem) {\n      userSessionStorage = JSON.parse(sessionStorageItem);\n    }\n    const finalKey = key.replace(/\\//g, '.');\n    if (_.has(userSessionStorage, finalKey) && (value === (await this.getItem(finalKey)).value)) {\n      return;\n    }\n    _.set(userSessionStorage, finalKey, value);\n    await sessionStorage.setItem('userSessionStorage', JSON.stringify(userSessionStorage));\n  }\n\n  async removeItem(key: string): Promise<any> {\n    const sessionStorageItem = sessionStorage.getItem('userSessionStorage');\n    let userSessionStorage = {};\n    if (sessionStorageItem) {\n      userSessionStorage = JSON.parse(sessionStorageItem);\n    }\n    const finalKey = key.replace(/\\//g, '.');\n    if (_.has(userSessionStorage, finalKey)) {\n      const result = _.unset(userSessionStorage, finalKey);\n      if (result) {\n        sessionStorage.setItem('userSessionStorage', JSON.stringify(userSessionStorage));\n        return Promise.resolve();\n      } else {\n        return Promise.reject('Key could not be removed');\n      }\n    } else {\n      return Promise.reject('Key was not found in the object');\n    }\n  }\n}\n","import {AngularDataContext} from '@themost/angular';\nimport {UserStorageService} from './user-storage';\nimport {Inject, Injectable, InjectionToken, Optional} from '@angular/core';\nimport {LocalUserStorageService, SessionUserStorageService} from './browser-storage.service';\n\nexport declare interface UserStorageInterface {\n  localStorage: boolean;\n  sessionStorage: boolean;\n}\n\nexport const USER_STORAGE = new InjectionToken<UserStorageInterface>('user-storage.location');\n\n\n@Injectable()\nexport class FallbackUserStorageService {\n\n  private _useSessionStorage = true;\n  private _useLocalStorage = false;\n  private _hasUserStorage: boolean | undefined;\n  private _userStorageService: UserStorageService;\n  private _localUserStorage: LocalUserStorageService | undefined;\n  private _sessionUserStorage: SessionUserStorageService | undefined;\n\n  constructor(private _context: AngularDataContext,\n              @Optional() @Inject(USER_STORAGE) private userStorage?: UserStorageInterface) {\n    this._userStorageService = new UserStorageService(_context);\n    this._userStorageService.hasUserStorage().then((res) => {\n      this._hasUserStorage = res;\n      if (!this._hasUserStorage && userStorage) {\n        if (userStorage.sessionStorage !== undefined) {\n          this.userSessionStorage = userStorage.sessionStorage;\n          this._sessionUserStorage = this.userSessionStorage ? new SessionUserStorageService(_context) : undefined;\n        }\n        if (userStorage.localStorage !== undefined) {\n          this.userLocalStorage = userStorage.localStorage;\n          this._localUserStorage = this.userLocalStorage ? new LocalUserStorageService(_context) : undefined;\n        }\n      }\n    });\n  }\n\n  get userLocalStorage(): boolean {\n    return this._useLocalStorage;\n  }\n\n  set userLocalStorage(useLocal: boolean) {\n    this._useLocalStorage = useLocal;\n  }\n\n  get userSessionStorage(): boolean {\n    return this._useSessionStorage;\n  }\n\n  set userSessionStorage(useSession: boolean) {\n    this._useSessionStorage = useSession;\n  }\n\n  async getItem(key: string): Promise<any> {\n    const userStorage = await this._userStorageService.hasUserStorage();\n    if (userStorage) {\n      return this._userStorageService.getItem(key);\n    } else {\n      if (this.userSessionStorage && this._sessionUserStorage) {\n        return this._sessionUserStorage.getItem(key);\n      } else if (this.userLocalStorage && this._localUserStorage) {\n        return this._localUserStorage.getItem(key);\n      } else {\n        throw new Error('No user storage provider was found');\n      }\n    }\n  }\n\n  async setItem(key: string, value: string): Promise<any> {\n    const userStorage = await this._userStorageService.hasUserStorage();\n    if (userStorage) {\n      return this._userStorageService.setItem(key, value);\n    } else {\n      if (this.userSessionStorage && this._sessionUserStorage) {\n        return this._sessionUserStorage.setItem(key, value);\n      } else if (this.userLocalStorage && this._localUserStorage) {\n        return this._localUserStorage.setItem(key, value);\n      } else {\n        throw new Error('No user storage provider was found');\n      }\n    }\n  }\n\n  async removeItem(key: string): Promise<any> {\n    const userStorage = await this._userStorageService.hasUserStorage();\n    if (userStorage) {\n      return this._userStorageService.removeItem(key);\n    } else {\n      if (this.userSessionStorage && this._sessionUserStorage) {\n        return this._sessionUserStorage.removeItem(key);\n      } else if (this.userLocalStorage && this._localUserStorage) {\n        return this._localUserStorage.removeItem(key);\n      } else {\n        throw new Error('No user storage provider was found');\n      }\n    }\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport { skip } from 'rxjs/operators';\n\n@Injectable()\nexport class AppEventService {\n    public readonly change: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n    public readonly add: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n    public readonly remove: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n    public readonly added: Observable<any> = this.add.pipe(skip(1));\n    public readonly changed: Observable<any> = this.change.pipe(skip(1));\n    public readonly removed: Observable<any> = this.remove.pipe(skip(1));\n    constructor() {\n    }\n\n}\n","import {Component, OnInit} from '@angular/core';\n\n@Component({\n  selector: 'xmas-spinner',\n  template: `\n    <div class=\"s--spinner\">\n      <div class=\"container\">\n        <div id=\"santa\" class=\"mx-auto my-auto\">\n          <svg data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"350\" height=\"400\">\n            <path fill=\"transparent\" d=\"M0 0h350v400H0z\"/>\n            <g fill=\"#CCE6F4\" class=\"cloud\">\n              <path d=\"M63 53h65a13 13 0 0113 13 13 13 0 01-13 13H61a12 12 0 01-12-12 14 14 0 0114-14z\"/>\n              <path d=\"M83 26a19 19 0 0119 19v1a19 19 0 01-19 19h-2a18 18 0 01-18-18v-1a20 20 0 0120-20z\"/>\n              <path d=\"M113 38a14 14 0 0114 14v1a14 14 0 01-14 14h-2a13 13 0 01-13-13v-1a15 15 0 0115-15z\"/>\n            </g>\n            <g fill=\"#CCE6F4\" class=\"cloud\">\n              <path\n                d=\"M202.936 343.907h52.943a10.589 10.589 0 0110.588 10.589 10.589 10.589 0 01-10.588 10.588h-54.572a9.774 9.774 0 01-9.774-9.774 11.403 11.403 0 0111.403-11.403z\"/>\n              <path\n                d=\"M219.226 321.916a15.476 15.476 0 0115.476 15.475v.815a15.476 15.476 0 01-15.476 15.475h-1.629a14.661 14.661 0 01-14.661-14.66v-.815a16.29 16.29 0 0116.29-16.29z\"/>\n              <path\n                d=\"M243.661 331.69a11.403 11.403 0 0111.403 11.403v.814a11.403 11.403 0 01-11.403 11.403h-1.629a10.589 10.589 0 01-10.588-10.588v-.815a12.218 12.218 0 0112.217-12.217z\"/>\n            </g>\n            <g fill=\"#CCE6F4\" class=\"cloud\">\n              <path\n                d=\"M12.936 245.907h52.943a10.589 10.589 0 0110.588 10.589 10.589 10.589 0 01-10.588 10.588H11.307a9.774 9.774 0 01-9.774-9.774 11.403 11.403 0 0111.403-11.403z\"/>\n              <path\n                d=\"M29.226 223.916a15.476 15.476 0 0115.476 15.475v.815a15.476 15.476 0 01-15.476 15.475h-1.629a14.661 14.661 0 01-14.661-14.66v-.815a16.29 16.29 0 0116.29-16.29z\"/>\n              <path\n                d=\"M53.661 233.69a11.403 11.403 0 0111.403 11.403v.814a11.403 11.403 0 01-11.403 11.403h-1.629a10.589 10.589 0 01-10.588-10.588v-.815A12.218 12.218 0 0153.66 233.69z\"/>\n            </g>\n            <g fill=\"#CCE6F4\" class=\"cloud\">\n              <path\n                d=\"M246.79835,143.07881h75.40328a15.04912,15.04912,0,0,1,15.04912,15.04912v0a15.0491,15.0491,0,0,1-15.0491,15.0491H244.79837a14.04912,14.04912,0,0,1-14.04912-14.04912v0A16.0491,16.0491,0,0,1,246.79835,143.07881Z\"/>\n              <path\n                d=\"M269.00509,111.82294h2.04917a21.04912,21.04912,0,0,1,21.04912,21.04912v3.04917a21.04909,21.04909,0,0,1-21.04909,21.04909h-4.04917A20.04912,20.04912,0,0,1,246.956,136.9212V133.872a22.04909,22.04909,0,0,1,22.04909-22.04909Z\"/>\n              <path\n                d=\"M304.522,125.71444h.47291A16.04912,16.04912,0,0,1,321.044,141.76356v1.47291a16.0491,16.0491,0,0,1-16.0491,16.0491H302.522a15.04912,15.04912,0,0,1-15.04912-15.04912v-1.47291A17.0491,17.0491,0,0,1,304.522,125.71444Z\"/>\n            </g>\n            <g class=\"plane\">\n              <rect x=\"215.747\" y=\"157.738\" width=\"25.511\" height=\"43.645\" rx=\"12.755\" ry=\"12.755\" fill=\"#711723\"/>\n              <path fill=\"#f40009\"\n                    d=\"M166.263 185.401h74.995v31.965h-74.995zM166.263 217.366h74.995a31.965 31.965 0 01-31.965 31.965h-43.03v-31.965z\"/>\n              <g class=\"hand\">\n                <rect x=\"136.437\" y=\"152.836\" width=\"26.365\" height=\"9.113\" rx=\"4.557\" ry=\"4.557\" transform=\"rotate(-120 149.62 157.393)\"\n                      fill=\"#f6bfb1\"/>\n                <path fill=\"#f40009\" d=\"M144.906 163.746l11.978-6.916 20.407 35.346-11.978 6.916z\"/>\n                <rect x=\"139.226\" y=\"154.214\" width=\"20.172\" height=\"6.973\" rx=\"3.486\" ry=\"3.486\" transform=\"rotate(-30 149.312 157.7)\"\n                      fill=\"#e6e6e6\"/>\n              </g>\n              <path fill=\"#f6bfb1\" d=\"M171.488 155.28h37.805v23.974h-37.805z\"/>\n              <path\n                d=\"M165.956 185.093v64.545h-12.602v-.024c-.406.015-.818.024-1.23.024a32.272 32.272 0 110-64.545c.412 0 .824.01 1.23.025v-.025z\"\n                fill=\"#711723\"/>\n              <path fill=\"#300403\" d=\"M161.345 185.093h4.918v64.545h-4.918z\"/>\n              <path d=\"M113.376 210.296v11.987h-2.34v-.004a6.053 6.053 0 01-.23.004 5.993 5.993 0 110-11.987c.077 0 .154.002.23.005v-.005z\"\n                    fill=\"#f40009\"/>\n              <g fill=\"#300403\">\n                <circle cx=\"155.505\" cy=\"244.106\" r=\"2.459\"/>\n                <circle cx=\"155.505\" cy=\"190.933\" r=\"2.459\"/>\n                <circle cx=\"155.505\" cy=\"208.452\" r=\"2.459\"/>\n                <circle cx=\"155.505\" cy=\"226.586\" r=\"2.459\"/>\n              </g>\n              <rect class=\"blade\" x=\"113.244\" y=\"167.266\" width=\"6.762\" height=\"98.354\" rx=\"3.381\" ry=\"3.381\" fill=\"#300403\"/>\n              <path\n                d=\"M195.154 211.526h34.732a4.918 4.918 0 014.917 4.918 4.918 4.918 0 01-4.917 4.917h-34.732a4.918 4.918 0 01-4.917-4.917 4.918 4.918 0 014.917-4.918z\"\n                fill=\"#711723\"/>\n              <g fill=\"#fff\">\n                <rect x=\"174.148\" y=\"171.282\" width=\"15.925\" height=\"40.192\" rx=\"7.963\" ry=\"7.963\"/>\n                <rect x=\"188.824\" y=\"171.282\" width=\"15.925\" height=\"40.192\" rx=\"7.963\" ry=\"7.963\"/>\n                <rect x=\"180.862\" y=\"167.691\" width=\"15.925\" height=\"51.21\" rx=\"7.963\" ry=\"7.963\" transform=\"rotate(-90 188.824 193.296)\"/>\n                <path\n                  d=\"M161.55 180.896a7.963 7.963 0 016.42-9.252l20.066-3.625a7.963 7.963 0 019.251 6.42 7.963 7.963 0 01-6.42 9.251l-20.066 3.626a7.963 7.963 0 01-9.251-6.42z\"/>\n                <path\n                  d=\"M183.122 174.543a7.963 7.963 0 019.251-6.42l19.491 3.521a7.963 7.963 0 016.42 9.252 7.963 7.963 0 01-9.251 6.42l-19.491-3.522a7.963 7.963 0 01-6.42-9.25z\"/>\n              </g>\n              <rect x=\"167.185\" y=\"151.899\" width=\"6.455\" height=\"27.355\" rx=\"3.227\" ry=\"3.227\" fill=\"#711723\"/>\n              <rect x=\"207.449\" y=\"151.899\" width=\"6.455\" height=\"27.355\" rx=\"3.227\" ry=\"3.227\" fill=\"#711723\"/>\n              <circle cx=\"190.083\" cy=\"165.883\" r=\"3.842\" fill=\"#e76160\"/>\n              <circle cx=\"190.083\" cy=\"179.868\" r=\"6.454\"/>\n              <path fill=\"#f40009\"\n                    d=\"M167.185 148.21h46.718v7.069h-46.718zM213.903 145.137h-46.718a10.757 10.757 0 0110.757-10.758h25.204a10.757 10.757 0 0110.757 10.758z\"/>\n              <path fill=\"#711723\" d=\"M167.185 143.907h46.718v4.303h-46.718z\"/>\n              <circle cx=\"181.016\" cy=\"146.059\" r=\"7.377\" fill=\"#711723\"/>\n              <circle cx=\"181.016\" cy=\"146.059\" r=\"5.62\" fill=\"#300403\"/>\n              <circle cx=\"200.072\" cy=\"146.059\" r=\"7.377\" fill=\"#711723\"/>\n              <circle cx=\"200.072\" cy=\"146.059\" r=\"5.62\" fill=\"#300403\"/>\n              <path d=\"M176.713 165.422s2.459-3.995 6.454 0M197.306 165.422s2.459-3.995 6.454 0\" fill=\"none\" stroke=\"#000\"\n                    stroke-miterlimit=\"10\" stroke-width=\"1.844\"/>\n            </g>\n          </svg>\n        </div>\n      </div>\n    </div>\n  `,\n  styles: [`\n    .s--spinner{\n      position: fixed;\n      width: 100%;\n      height: 100%;\n      top: 0;\n      background-color: rgba(127,127,127,.50);\n      z-index: 10000;\n      /* d-flex */\n      display: -ms-flexbox !important;\n      display: flex !important;\n      /*justify-content-center */\n      -ms-flex-pack: center !important;\n      justify-content: center !important;\n      /* align-items-center */\n      -ms-flex-align: center !important;\n      align-items: center !important;\n\n    }\n\n    .container {\n      height: 480px;\n      width: 350px;\n      -webkit-transform: translate(-50%, -50%);\n      -ms-transform: translate(-50%, -50%);\n      transform: translate(-50%, -50%);\n      position: absolute;\n      top: 50%;\n      left: 50%;\n    }\n\n    svg {\n      position: absolute;\n      top: 0;\n      left: 0;\n    }\n\n    .plane {\n      position: relative;\n      -webkit-animation: float 3s infinite;\n      animation: float 3s infinite;\n    }\n\n    @-webkit-keyframes float {\n      50% {\n        -webkit-transform: translateY(25px);\n        transform: translateY(25px);\n      }\n    }\n\n    @keyframes float {\n      50% {\n        -webkit-transform: translateY(25px);\n        transform: translateY(25px);\n      }\n    }\n\n    .hand {\n      -webkit-transform: rotate(10deg);\n      -ms-transform: rotate(10deg);\n      transform: rotate(10deg);\n      -webkit-animation: wave 1.5s infinite;\n      animation: wave 1.5s infinite;\n      -webkit-transform-origin: center;\n      -ms-transform-origin: center;\n      transform-origin: center;\n    }\n\n    .blade {\n      -webkit-animation: spin 1s infinite linear;\n      animation: spin 1s infinite linear;\n      -webkit-transform-origin: 50% 54%;\n      -ms-transform-origin: 50% 54%;\n      transform-origin: 50% 54%;\n    }\n\n    @-webkit-keyframes spin {\n      100% {\n        -webkit-transform: rotateX(360deg);\n        transform: rotateX(360deg);\n      }\n    }\n\n    @keyframes spin {\n      100% {\n        -webkit-transform: rotateX(360deg);\n        transform: rotateX(360deg);\n      }\n    }\n\n    @-webkit-keyframes wave {\n      50% {\n        -webkit-transform: rotate(-10deg);\n        transform: rotate(-10deg);\n      }\n    }\n\n    @keyframes wave {\n      50% {\n        -webkit-transform: rotate(-10deg);\n        transform: rotate(-10deg);\n      }\n    }\n  `]\n})\nexport class XmasSpinnerComponent implements OnInit {\n  constructor() {\n  }\n\n  ngOnInit() {\n  }\n}\n","import {ApplicationRef, ComponentFactoryResolver, ComponentRef, EmbeddedViewRef, Injectable, Injector} from '@angular/core';\nimport {XmasSpinnerComponent} from '../components/modal/xmas-spinner.component';\n/**\n *\n * Displays Xmas Loading Spinner\n * @export\n * @class XmasLoadingService\n */\n@Injectable()\nexport class XmasLoadingService {\n  protected componentRef: ComponentRef<any> | null = null;\n\n  constructor(private componentFactoryResolver: ComponentFactoryResolver,\n              private appRef: ApplicationRef,\n              private injector: Injector) {\n  }\n\n  protected appendComponentToBody(component: any) {\n\n    // do nothing if component ref already exists\n    if (this.componentRef) {\n      return;\n    }\n\n    // create a component reference from the component\n    this.componentRef = this.componentFactoryResolver\n      .resolveComponentFactory(component)\n      .create(this.injector);\n\n    // attach component to the appRef so that it's inside the ng component tree\n    this.appRef.attachView(this.componentRef.hostView);\n\n    // get DOM element from component\n    const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>)\n      .rootNodes[0] as HTMLElement;\n\n    // append DOM element to the body\n    document.body.appendChild(domElem);\n  }\n\n  /**\n   *\n   * Toggles show/hide state of spinner\n   */\n  toggle() {\n    if (this.componentRef) {\n      this.hideLoading();\n    } else {\n      this.showLoading();\n    }\n  }\n\n  /**\n   *\n   * Shows spinner\n   */\n  showLoading() {\n    if (this.componentRef == null) {\n      this.appendComponentToBody(XmasSpinnerComponent);\n    }\n  }\n\n  /**\n   *\n   * Hides spinner\n   */\n  hideLoading() {\n    if (this.componentRef) {\n      this.appRef.detachView(this.componentRef.hostView);\n      this.componentRef.destroy();\n      this.componentRef = null;\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Args } from '@themost/client';\nimport { X509 } from 'jsrsasign';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CertificateService {\n\n  constructor() { }\n\n  /**\n   *\n   * It returns a X509 certificate from the raw certificate sting\n   *\n   * @param {string} certificate The raw user certificate\n   *\n   * @returns {X509} The certificate object in x509 format\n   *\n   */\n  getX509Certificate(certificate) {\n    const formatted = this.formatCertificate(certificate);\n    const x509 = new X509();\n    x509.readCertPEM(formatted);\n    return x509;\n  }\n\n  /**\n   *\n   * Parses a certificate from a continuous string of chars in a PEM formatted\n   * certificate\n   *\n   * @param {string} certificate The x509 certificate in raw format\n   *\n   * @returns {X509} The certificate object in x509 format\n   *\n   */\n  formatCertificate(certificate: string): X509 {\n    Args.notNull(certificate, 'Certificate must be defined');\n    Args.notEmpty(certificate, 'Certificate can not be empty');\n\n    const certHead = `-----BEGIN CERTIFICATE-----`;\n    const certTail = `-----END CERTIFICATE-----`;\n    const splitCert = this.splitStringToChunks(certificate, 64);\n    const parts = [certHead, ...splitCert,  certTail];\n    return parts.join('\\n');\n  }\n\n  /**\n   *\n   * Splits a string of text in an array of same length characters\n   *\n   * @param {string} payload The string to be split\n   * @param {number} lineLength The number  of characters in line\n   *\n   * @returns {Array<string>} The split string parts\n   *\n   */\n  splitStringToChunks(payload: string, lineLength: number): string[] {\n    Args.notNull(payload, 'Certificate must be defined');\n    Args.notEmpty(payload, 'Certificate can not be empty');\n    if (!lineLength || lineLength <= 0) {\n      throw new Error('Line length can not be negative or zero');\n    }\n\n    let index = 0;\n    let remainingChars = payload.length;\n    let maximumIteration = payload.length + 1;\n\n    const parts: string[] = [];\n    // split the certificate in 64-character length lines\n    while(remainingChars > 0) {\n\n      if (index > maximumIteration) {\n        throw new Error('Maximum number of  iterations exceeded');\n      }\n\n      parts.push(payload.substring(index*lineLength, (index+1)*lineLength));\n      remainingChars = payload.length - (index + 1) * lineLength;\n      index++;\n    }\n\n    return parts;\n  }\n\n  /**\n   *\n   * Parses a jsrsasign to a Date object\n   *\n   * @param {string} date The date as is returned form jsrsasign library in UTC 0\n   *\n   * @returns {Date} The parsed date\n   */\n  parseCertificateDate(date: string): Date | null {\n    const parts = date.match(/.{1,2}/g); //split the date to 2-char wide parts\n    if (parts != null) {\n      const yearPrefix = new Date().getFullYear().toString().substring(0,2); // The current millennium\n      parts[0] = yearPrefix + parts[0];\n      // construct a js-friendly date string\n      const asString = `${parts[0]}-${parts[1]}-${parts[2]} ${parts[3]}:${parts[4]}:${parts[5]}.000Z`;\n      return new Date(asString);\n    }\n    return null;\n  }\n\n  /**\n   * Gets certificate extensions attributes\n   *\n   */\n  private static getCertificateParams(certificate: X509): any[] {\n    const extension = certificate.parseExt();\n    if(extension !== -1 && Array.isArray(certificate.aExtInfo)){\n      return certificate.getExtParamArray();\n    }\n    return [];\n  }\n\n  /**\n   * Extracts key usages from the certificate:\n   * It parses X509 v3 key and extended key usages\n   * and returns an array with the purposes.\n   * @param {X509} certificate\n   */\n  extractPurposes(certificate:X509): any[] {\n    const params = CertificateService.getCertificateParams(certificate);\n    if ((params.filter(x => x.extname === 'extKeyUsage')).length > 0){\n      const commonOIDs = CertificateService.mapOIDToString();\n      let purposes =certificate.getExtExtKeyUsage();\n      if(purposes && purposes.array){\n        purposes= purposes.array;\n      }\n      let keyUsage = params.filter(x => x.extname === 'keyUsage');\n      purposes = [...purposes,  ...keyUsage[0].names];\n      purposes = purposes.map(purpose => {\n        if(commonOIDs.has(purpose)){\n          purpose = commonOIDs.get(purpose);\n        }\n        return purpose;\n      });\n      return Array.from(new Set(purposes));\n    }\n    return [];\n  }\n\n  /**\n   * Creates a map of common keyUsage OIDs\n   * to their name\n   * @return {Map<string,string>}\n   */\n  private static mapOIDToString(){\n    const commonOIDs = new Map<string, string>();\n    // Any OID starting with 1.3.6.1.5.5.7.3 is\n    // directly defined in x509 v3 req key purposes\n    commonOIDs.set(\"1.3.6.1.5.5.7.3.1\", \"serverAuth\");\n    commonOIDs.set(\"1.3.6.1.5.5.7.3.2\", \"clientAuth\")\n    commonOIDs.set(\"1.3.6.1.5.5.7.3.3\", \"codeSigning\");\n    commonOIDs.set(\"1.3.6.1.5.5.7.3.4\", \"emailProtection\")\n    commonOIDs.set(\"1.3.6.1.5.5.7.3.8\",\"timestamping\");\n    // Any OID starting with 1.3.6.1.4.1.311\n    // is provided by Microsoft\n    commonOIDs.set(\"1.3.6.1.4.1.311.20.2.2\", \"smartCardLogon\");\n    commonOIDs.set(\"1.3.6.1.4.1.311.10.3.12\", \"documentSign\");\n    commonOIDs.set(\"1.3.6.1.4.1.311.80.1\", \"documentEnc\");\n    commonOIDs.set(\"2.5.29.37.0\", \"any\");\n    return commonOIDs;\n  }\n\n  /**\n   * Extract the owner of the certificate:\n   * In an X509 certificate the subject contains\n   * information on the user and the common name\n   * is the name of the user that the certificate\n   * was issued to by the certificate authority.\n   * @param {X509} certificate\n   */\n  extractCertificateOwner(certificate: X509) {\n    const subjectCN = (certificate.getSubjectString())\n      .split('/')\n      .filter(x => x.includes('CN'))\n      .join(',')\n      .split('=')[1];\n    let fullName = subjectCN.split(\" \");\n    if (fullName.length === 1){\n      fullName = [...fullName, \"\"]\n    }\n    return {\n      givenName: fullName[0],\n      familyName: fullName[1]\n    }\n  }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n  production: false,\n  languages: ['el', 'en']\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error';  // Included with Angular CLI.\n","export const en = {\n  SignatureInfo: {\n    CheckHash: \"Check hash\",\n    SignatureBlock: \"Signature block\",\n    Issuer: \"Issued by\",\n    Subject: \"Subject\",\n    SerialNumber: \"Serial number\",\n    Version: \"Version\",\n    NotValidBefore: \"Starting validity date\",\n    NotValidAfter: \"Expiration date\",\n    Algorithm: \"Algorithm\",\n    PublicKey: \"Public Key\",\n    PublicKeyParameters: \"Public key parameters\",\n    Field: \"Field\",\n    Value: \"Value\",\n    General: \"General\",\n    Details: \"Details\",\n    CertificateInformation: \"Certificate Information\",\n    IssuedTo: \"Issued to\",\n    NotValidBeforeShort: \"Valid from\",\n    NotValidAfterShort: \"to\",\n    Verified: \"Verified\",\n    NotVerified: \"Not Verified\",\n    Close: \"Close\",\n    CertificatePurposes: {\n      Header: \"This certificate is used for the following purposes:\",\n      emailProtection: \"Protect e-mail messages\",\n      documentSign: \"Document Signing\",\n      clientAuth: \"Prove your identity to a remote computer\",\n      smartCardLogon: \"Allow logging on to devices with a smart card\",\n      nonRepudiation: \"Non repudiation\",\n      digitalSignature: \"Digital Signature\",\n      documentEnc: \"Document Encryption\",\n      serverAuth: \"Prove your server identity\",\n      codeSigning: \"Code signing\",\n      timestamping: \"Timestamping\",\n      keyEncipherment: \"Key encipherment\",\n      any: \"Any other purpose\"\n    }\n  }\n}\n","export const el = {\n  SignatureInfo: {\n    CheckHash: \"Hash επαλήθευσης\",\n    SignatureBlock: \"Τμήμα υπογραφής\",\n    Issuer: \"Εκδότης\",\n    Subject: \"Θέμα\",\n    SerialNumber: \"Σειριακός αριθμός\",\n    Version: \"Εκδοση\",\n    NotValidBefore: \"Ημερομηνία έναρξης ισχύος\",\n    NotValidAfter: \"Ημερομηνία λήξης\",\n    Algorithm: \"Αλγόριθμος\",\n    PublicKey: \"Δημόσιο κλειδί\",\n    PublicKeyParameters: \"Παράμετροι δημόσιου κλειδιού\",\n    Field: \"Πεδίο\",\n    Value: \"Τιμή\",\n    General: \"Γενικά\",\n    Details: \"Λεπτομέρειες\",\n    CertificateInformation: \"Πληροφορίες πιστοποιητικού\",\n    IssuedTo: \"Εκδόθηκε για\",\n    NotValidBeforeShort: \"Ισχύει από\",\n    NotValidAfterShort: \"έως\",\n    Verified: \"Επαληθευμένη\",\n    NotVerified: \"Μη επαληθευμένη\",\n    Close : \"Κλείσιμο\",\n    CertificatePurposes: {\n      Header: \"Αυτο το πιστοποιητικό μπορεί να χρησιμοποιηθεί για τους παρακάτω σκοπούς:\",\n      emailProtection: \"Προστασία μήνυμα ηλεκτρονικού ταχυδρομείου\",\n      documentSign: \"Υπογραφή εγγράφων\",\n      clientAuth: \"Επαλήθευση της ταυτότητά σας σε έναν απομακρυσμένο υπολογιστή\",\n      smartCardLogon: \"Να σας επιτρέψει να συνδέεστε σε συσκευές με τη χρήση έξυπνης κάρτας\",\n      nonRepudiation: \"Μη αποποίηση ευθύνης\",\n      digitalSignature: \"Ψηφιακή Υπογραφή\",\n      documentEnc: \"Κρυπτογράφηση εγγράφου\",\n      serverAuth: \"Επαλήθευση της ταυτότητας του διακομιστή σας\",\n      codeSigning: \"Υπογραφή κώδικα\",\n      timestamping: \"Χρονική Σήμανση\",\n      keyEncipherment: \"Ως κλειδί κρυπτογράφησης\",\n      any: \"Οποιοδήποτε άλλο σκοπό\"\n    }\n  }\n}\n","import {en} from './signature-info.en';\nimport {el} from './signature-info.el';\n\nexport const SIGNATURE_INFO :{\n  [key:string]: any\n} = {\n  en: en,\n  el: el\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { X509 } from 'jsrsasign';\nimport { CertificateService } from '../../services/certificate-service/certificate-service.service';\nimport {BsModalRef} from 'ngx-bootstrap/modal';\nimport {TranslateService} from '@ngx-translate/core';\nimport {environment} from '../../../environments/environment';\nimport {SIGNATURE_INFO} from './i18n/signature-info.translations';\n\n/**\n *\n * @interface SignatureAttribute\n *\n * @property {string} translationKey The translation key to show to the user\n * @property {string} value The value to show to the user\n * @property {object} Validation data. isValid is the validation status, showValidation indicates whether to show the validation\n *\n */\ninterface SignatureAttribute {\n  translationKey: string;\n  value?: string;\n  validation?: {\n    isValid: boolean;\n    showValidation: boolean;\n  }\n}\n\n@Component({\n  selector: 'universis-signature-info',\n  templateUrl: './signature-info.component.html'\n})\nexport class SignatureInfoComponent implements OnInit {\n\n  /**\n   * @property {Object} user The user who submitted the exam  document\n   */\n  @Input() user;\n\n  /**\n   * @property {boolean} isVerified A flag to indicate whether the signature was\n   * verified at least once on server side. Can be used to show to the user that\n   * the signature was accepted at some point in the past even if the certificate is expired.\n   */\n  @Input() isVerified: boolean | undefined;\n  @Input() certificate: string | undefined;\n  @Input() signatureBlock: string | undefined;\n  @Input() checkHashKey: string | undefined;\n  @Input() examinationCode: string | undefined;\n  @Input() dateCreated: Date | undefined;\n\n\n  /**\n   * The list of attributes to show to the user\n   */\n  public signatureAttributes: SignatureAttribute[] = [];\n  public tab: number  = 1;\n  public generalAttributes: SignatureAttribute[] = [];\n  public purposes: Array<any> = [];\n\n  constructor(private _bsModalRef: BsModalRef,\n              private _certificateService: CertificateService,\n              private _translateService: TranslateService) {\n    environment.languages.forEach((culture) => {\n      if(SIGNATURE_INFO[culture])\n        this._translateService.setTranslation(culture, SIGNATURE_INFO[culture], true);\n    });\n  }\n\n  async ngOnInit() {\n    this.signatureAttributes = [\n      {\n        translationKey: 'SignatureInfo.CheckHash',\n        value: this.checkHashKey\n      },\n      {\n        translationKey: 'SignatureInfo.SignatureBlock',\n        value: this.signatureBlock\n      }\n    ];\n    try {\n      let parsed;\n      parsed = this._certificateService.getX509Certificate(this.certificate);\n      if(!this.user){\n        this.user = this._certificateService.extractCertificateOwner(parsed);\n      }\n      const certAttributes = this.resolveAttributes(parsed);\n      this.purposes = this._certificateService.extractPurposes(parsed);\n      this.signatureAttributes = [...certAttributes, ...this.signatureAttributes];\n      this.generalAttributes = this.getGeneralAttributes(parsed);\n    } catch(err) {\n      console.log('err: ', err);\n    }\n  }\n\n  /**\n   *\n   * Resolves a certificate to usable fields\n   *\n   * @param {X509} certificate The X509 object certificate\n   *\n   */\n  resolveAttributes(certificate: X509) {\n    const certificateAttributes: {\n      translationKey: string,\n      value?: any,\n      validation?: any\n    }[] = [];\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.Version',\n      value: certificate.getVersion()\n    });\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.SerialNumber',\n      value: certificate.getSerialNumberHex()\n    });\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.Algorithm',\n      value: certificate.getSignatureAlgorithmField()\n    });\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.Issuer',\n      value: (certificate.getIssuer().str).replace(/\\//g, '\\n')\n    });\n\n    const notBefore = this._certificateService.parseCertificateDate(\n      certificate.getNotBefore()\n    );\n\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.NotValidBefore',\n      value: notBefore,\n      validation: {\n        isValid: notBefore ? new Date() >= notBefore : false,\n        showValidation: true\n      }\n    });\n\n    const notAfter = this._certificateService.parseCertificateDate(\n      certificate.getNotAfter()\n    )\n\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.NotValidAfter',\n      value:  notAfter,\n      validation: {\n        isValid: notAfter ? notAfter >= new Date() : false,\n        showValidation: true\n      }\n    });\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.Subject',\n      value: (certificate.getSubject().str).replace(/\\//g, '\\n')\n    });\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.PublicKey',\n      value: certificate.getPublicKeyHex()\n    });\n    certificateAttributes.push({\n      translationKey: 'SignatureInfo.PublicKeyParameters',\n      value: certificate.getPublicKeyIdx()\n    });\n    return certificateAttributes;\n  }\n\n  getGeneralAttributes(certificate): SignatureAttribute[] {\n    let attributes: {\n      translationKey: string,\n      value?: any,\n      validation?: any\n    }[] = [];\n    attributes.push({\n      translationKey: 'SignatureInfo.IssuedTo',\n      // get certificate subject common name\n      value: (certificate.getSubjectString()).split('/').filter(x => x.includes('CN')).join(',').split('=')[1]\n    });\n    attributes.push({\n      translationKey: 'SignatureInfo.Issuer',\n      // get certificate issuer common name (CN)\n      value: (certificate.getIssuerString()).split('/').filter(x => x.includes('CN')).join(',').split('=')[1]\n    });\n    const notBefore = this._certificateService.parseCertificateDate(\n      certificate.getNotBefore()\n    );\n    attributes.push({\n      translationKey: 'SignatureInfo.NotValidBeforeShort',\n      value: notBefore,\n      validation: {\n        isValid: notBefore ? new Date() >= notBefore : false,\n        showValidation: true\n      }\n    });\n    const notAfter = this._certificateService.parseCertificateDate(\n      certificate.getNotAfter()\n    );\n    attributes.push({\n      translationKey: 'SignatureInfo.NotValidAfterShort',\n      value:  notAfter,\n      validation: {\n        isValid: notAfter ? notAfter >= new Date() : false,\n        showValidation: true\n      }\n    });\n    return attributes;\n  }\n\n  hideCertificateModal() {\n    this._bsModalRef.hide();\n  }\n}\n","<div class=\"modal-header p-0\">\n  <button\n    (click)=\"hideCertificateModal()\"\n    type=\"button\"\n    class=\"close\"\n    data-dismiss=\"modal\"\n    aria-label=\"Cancel\"\n  >\n    <span aria-hidden=\"true\">&times;</span>\n  </button>\n</div>\n<div class=\"modal-body mt-0 pt-0\">\n  <div class=\"card-body\" *ngIf=\"user\">\n    <div class=\"row\">\n      <div class=\"col-12\">\n        <h5 class=\"mt-2 mb-3\">\n          {{user?.familyName}} {{user?.givenName}}\n          <span *ngIf=\"dateCreated\">{{ dateCreated | date:'short' }}</span>\n          (\n          <span *ngIf=\"isVerified\" class=\"text-purple\" [translate]=\"'SignatureInfo.Verified'\"></span>\n          <span *ngIf=\"!isVerified\" class=\"text-red\" [translate]=\"'SignatureInfo.NotVerified'\"></span>\n          )\n          <small> {{examinationCode}} </small>\n        </h5>\n      </div>\n    </div>\n    <div class=\"mb-3\">\n      <div class=\" d-none d-md-block\">\n        <ul class=\"nav nav-tabs\">\n          <li class=\"nav-item\">\n            <a class=\"nav-link active\" [class.active]=\"tab === 1\" rel=\"tab1\"\n               (click)=\"tab =1\">{{'SignatureInfo.General' | translate}}</a>\n          </li>\n          <li class=\"nav-item\">\n            <a class=\"nav-link\" [class.active]=\"tab === 2\" rel=\"tab2\"\n               (click)=\"tab =2\"> {{'SignatureInfo.Details' | translate}}</a>\n          </li>\n        </ul>\n      </div>\n    </div>\n\n    <div *ngIf=\"tab===1\">\n      <div class=\"card\">\n        <h5 class=\"d-block card-header mt-2 mb-n2 align-items-center\">\n          <i class=\"fa fa-certificate\"></i>\n          {{'SignatureInfo.CertificateInformation' | translate}}\n        </h5>\n        <hr/>\n        <div class=\"d-block card-body\">\n          <div class=\"container font-lg mt-n2 pt-n2\" *ngIf=\"purposes && purposes.length\">\n            <div class=\"row\">\n              <div>\n                <span> {{'SignatureInfo.CertificatePurposes.Header' |translate}}</span>\n              </div>\n            </div>\n            <ul>\n              <li *ngFor=\"let purpose of purposes\">\n                {{'SignatureInfo.CertificatePurposes.' + purpose |translate}}\n              </li>\n            </ul>\n            <hr/>\n          </div>\n          <div *ngFor=\"let attribute of generalAttributes | slice: 0:2\" class=\"row font-lg\">\n            <div *ngIf=\"attribute && attribute.value\">\n              <div class=\"flex-sm-column flex-wrap\">\n                <span class=\"text-theme col-4 text-nowrap\">{{attribute.translationKey | translate}}: </span>\n                <span class=\"col-8\">{{attribute.value}}</span>\n              </div>\n            </div>\n          </div>\n          <div class=\"row font-lg\">\n          <span *ngFor=\"let attribute of generalAttributes |slice: 2:4\" class=\"flex-sm-column\">\n            <span *ngIf=\"attribute && attribute.value\">\n              <span class=\"col-4 text-theme text-nowrap\">{{attribute.translationKey | translate}}: </span>\n              <span class=\"col-4 pr-2\">{{attribute.value |date:'short'}}</span>\n            </span>\n          </span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div *ngIf=\"tab=== 2\">\n      <div id=\"group-list\" class=\"flex-column\">\n        <div class=\"sis--list-group sis--list-group-body\">\n          <ul class=\"sis--list-group sis--list-group-header\">\n            <li class=\"sis--list-group-item\">\n              <div class=\"d-flex justify-content-center align-items-center\">\n                <div class=\"sis--list-group-item_lg_column d-none d-block\"\n                     [translate]=\"'SignatureInfo.Field'\"></div>\n                <div class=\"sis--list-group-item_lg_column d-none d-block px-4\"\n                     [translate]=\"'SignatureInfo.Value'\"></div>\n              </div>\n            </li>\n          </ul>\n          <ul class=\"sis--list-group sis--list-group-body\">\n            <li class=\"sis--list-group-item\" *ngFor=\"let attribute of signatureAttributes\">\n              <div class=\"d-flex justify-content-center align-items-center list-color\">\n                <div class=\"sis--list-group-item_lg_column d-none d-block flex-wrap\">\n              <span class=\"text-secondary\">\n                <i class=\"fa fa-certificate\"></i>\n                {{attribute.translationKey | translate}}\n              </span>\n                </div>\n                <div class=\"sis--list-group-item_lg_column d-block flex-wrap\">\n              <span class=\"text-secondary p-2 p-md-0 text-break \" [ngClass]=\"{\n                'text-red': attribute.validation && attribute.validation.showValidation && !attribute.validation.isValid,\n                'text-green': attribute.validation && attribute.validation.showValidation && attribute.validation.isValid\n              }\">{{ attribute.value}}</span>\n                </div>\n              </div>\n            </li>\n          </ul>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"row\">\n    <div class=\"col text-center\">\n      <button\n        (click)=\"hideCertificateModal()\"\n        class=\"btn btn-success\"\n        [translate]=\"'SignatureInfo.Close'\"\n      ></button>\n    </div>\n  </div>\n</div>\n","import {Injectable} from '@angular/core';\nimport { DefaultUrlSerializer, NavigationEnd, NavigationStart, PRIMARY_OUTLET, Router, UrlSegmentGroup } from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, first, map } from 'rxjs/operators';\n\nexport interface ReferrerRouteParams {\n  commands: string[];\n  queryParams?: any;\n  fragment?: string;\n}\n\n/**\n *\n * Displays Loading Spinner\n * @export\n * @class LoadingService\n */\n@Injectable()\nexport class ReferrerRouteService {\n\n  public referrer$ = new BehaviorSubject<string | null>(null);\n  private _referrer: string | null = null;\n\n  constructor(private router: Router) {\n    router.events\n    .pipe(filter(event => event instanceof NavigationEnd || event instanceof NavigationStart))\n    .subscribe((event) => {\n        if (event instanceof NavigationStart) {\n          if (router.routerState.snapshot && router.routerState.snapshot.url.length) {\n            this._referrer = router.routerState.snapshot.url;\n          } else {\n            this._referrer = null;\n          }\n        } else if (event instanceof NavigationEnd) {\n          if (this._referrer != null && this._referrer !== event.urlAfterRedirects) {\n            this.referrer$.next(this._referrer);\n            this._referrer = null;\n          }\n        }\n    });\n  }\n\n  public get first$(): Observable<string | null> {\n    return this.referrer$.pipe(first());\n  }\n\n  public get routeParams$(): Observable<ReferrerRouteParams | undefined> {\n    return this.referrer$.pipe(first()).pipe(map((url: string | null) => {\n      if (url) {\n        const urlSerializer = new DefaultUrlSerializer();\n        const tree = urlSerializer.parse(url);\n        const queryParams = tree.queryParams;\n        tree.queryParams = {};\n        const fragment = tree.fragment;\n        tree.fragment = null;\n        tree.queryParams = {};\n        const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n        const commands = g.segments.map((segment) => segment.path);\n        commands.splice(0, 0, '/');\n        return {\n          commands,\n          queryParams,\n          fragment\n        } as ReferrerRouteParams;\n      }\n      return;\n    }));\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as FileSaver from 'file-saver';\nimport * as XLSX from 'xlsx';\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\n\n@Injectable()\n  export class ExportSpreadsheetService {\n\n    private saveAs(buffer: any, file: string): void {\n        const data: Blob = new Blob([buffer], {type: EXCEL_TYPE});\n        FileSaver.saveAs(data, file);\n    }\n\n    export(data: any[], file: string, options?: {\n      header?: string[];\n      skipHeader?: boolean;\n  }) {\n        const worksheet = XLSX.utils.json_to_sheet(data, {\n          skipHeader: !!(options && options.skipHeader)\n        });\n        if (options?.header && !options.skipHeader) {\n          options.header.forEach((header, index) => {\n            const cell = worksheet[XLSX.utils.encode_col(index) + '1'];\n            cell.v = header;\n          });\n        }\n        const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\n        const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\n        this.saveAs(excelBuffer, file);\n    }\n  }\n","import {CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {LocalizedDatePipe} from './pipes/localized-date.pipe';\nimport {SemesterPipe} from './pipes/semester.pipe';\nimport {MsgboxComponent} from './components/msgbox/msgbox.component';\nimport {DialogComponent} from './components/modal/dialog.component';\nimport {SpinnerComponent} from './components/modal/spinner.component';\nimport {APP_CONFIGURATION, ApplicationConfiguration, ConfigurationService} from './services/configuration.service';\nimport {LoadingService} from './services/loading.service';\nimport {HttpClientModule} from '@angular/common/http';\nimport {ToastComponent} from './components/modal/toast.component';\nimport {ToastService} from './services/toast.service';\nimport {ModalService} from './services/modal.service';\nimport {GradePipe, GradeScaleService} from './services/grade-scale.service';\nimport {NgVarDirective} from './directives/ngvar.directive';\nimport {UserStorageService} from './services/user-storage';\nimport { UserActivityService } from './services/user-activity/user-activity.service';\nimport { SessionUserActivityService } from './services/session-user-activity/session-user-activity.service';\nimport {\n  PersistentUserActivityService\n} from './services/persistent-user-activity/persistent-user-activity.service';\nimport {DiagnosticsService} from './services/diagnostics.service';\nimport { RequestTypesService } from './services/request-types/request-types.service';\nimport {AppSidebarService, SIDEBAR_LOCATIONS} from './services/app-sidebar.service';\nimport {GUEST_SIDEBAR_LOCATIONS} from './services/app-guest-sidebar.service';\nimport {LocalUserStorageService} from './services/browser-storage.service';\nimport {SessionUserStorageService} from './services/browser-storage.service';\nimport {FallbackUserStorageService} from './services/fallback-user-storage.service';\nimport {AppEventService} from './services/app-event.service';\nimport {TemplatePipe} from './pipes/template.pipe';\nimport {LocalizedAttributesPipe} from './pipes/localized-attributes.pipe'\nimport {XmasSpinnerComponent} from './components/modal/xmas-spinner.component';\nimport {XmasLoadingService} from './services/xmas-loading.service';\nimport {CertificateService} from './services/certificate-service/certificate-service.service';\nimport {SignatureInfoComponent} from './components/signature-info/signature-info.component';\nimport { TruncatePipe } from './pipes/truncate.pipe';\nimport { RouterModule } from '@angular/router';\nimport { ReferrerRouteService } from './services/referrer-route.service';\nimport { ExportSpreadsheetService } from './services/export-spreadsheet.service';\nimport { IfLocationDirective } from './directives/if-location.directive';\nimport { IfServiceDirective } from './directives/if-service.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    HttpClientModule,\n    TranslateModule,\n    RouterModule\n  ],\n  declarations: [\n    LocalizedDatePipe,\n    GradePipe,\n    SemesterPipe,\n    MsgboxComponent,\n    DialogComponent,\n    SpinnerComponent,\n    ToastComponent,\n    NgVarDirective,\n    TemplatePipe,\n    LocalizedAttributesPipe,\n    XmasSpinnerComponent,\n    SignatureInfoComponent,\n    TruncatePipe,\n    IfLocationDirective,\n    IfServiceDirective\n  ],\n  entryComponents: [\n    DialogComponent,\n    SpinnerComponent,\n    ToastComponent,\n    XmasSpinnerComponent,\n    SignatureInfoComponent\n  ],\n  providers: [\n    {\n      provide: APP_CONFIGURATION,\n      useValue: <ApplicationConfiguration>{\n        settings: {\n          remote: {\n            server: '/'\n          },\n          i18n: {\n            locales: [ 'en' ],\n            defaultLocale: 'en'\n          }\n        }\n      }\n    },\n    {\n      provide: SIDEBAR_LOCATIONS,\n      useValue: []\n    },\n    {\n      provide: GUEST_SIDEBAR_LOCATIONS,\n      useValue: []\n    }\n  ],\n  exports: [\n    LocalizedDatePipe,\n    GradePipe,\n    SemesterPipe,\n    TemplatePipe,\n    MsgboxComponent,\n    DialogComponent,\n    SpinnerComponent,\n    ToastComponent,\n    NgVarDirective,\n    LocalizedAttributesPipe,\n    SignatureInfoComponent,\n    TruncatePipe,\n    IfLocationDirective,\n    IfServiceDirective\n  ],\n  schemas: [\n    CUSTOM_ELEMENTS_SCHEMA\n  ]\n})\nexport class SharedModule {\n\n  static forRoot(): ModuleWithProviders<SharedModule> {\n    return {\n      ngModule: SharedModule,\n      providers: [\n        ConfigurationService,\n        ModalService,\n        ToastService,\n        LoadingService,\n        XmasLoadingService,\n        GradeScaleService,\n        UserStorageService,\n        UserActivityService,\n        SessionUserActivityService,\n        PersistentUserActivityService,\n        DiagnosticsService,\n        RequestTypesService,\n        AppSidebarService,\n        LocalUserStorageService,\n        SessionUserStorageService,\n        FallbackUserStorageService,\n        AppEventService,\n        CertificateService,\n        ReferrerRouteService,\n        ExportSpreadsheetService\n      ]\n    };\n  }\n}\n","import {Inject, Injectable, InjectionToken, Injector, Type} from '@angular/core';\nimport {BehaviorSubject, Subject, Subscription} from 'rxjs';\nimport { EventSourcePolyfill } from 'event-source-polyfill';\nimport { ConfigurationService } from '../../shared/services/configuration.service';\nimport { ActivatedUser } from '../../auth/services/activated-user.service';\nimport { takeUntil } from 'rxjs/operators';\nexport enum ServerEventServiceStatus {\n    Connecting,\n    Open,\n    Closed\n}\n\ndeclare interface UserSnapshot {\n    id?: any;\n    name: string;\n    token: {\n        access_token: string;\n        scope: string;\n    };\n}\n\nexport declare interface ServerEvent {\n    id?: string;\n    additionalType?: string;\n    entitySet?: string;\n    entityType?: string;\n    entityAction?: string;\n    target?: any;\n    result?: any;\n    status?: any;\n    error?: any;\n    recipient?: string;\n    scope?: string;\n    dateCreated?: Date;\n}\n\nexport declare interface ServerEventSubscriber {\n    subscribe<T>(event: T): void;\n}\n\ndeclare interface ServerEventServiceConfiguration {\n    heartbeatTimeout?: number;\n}\n\nexport let SERVER_EVENT_SUBSCRIBERS = new InjectionToken<Array<Type<ServerEventSubscriber>>>('server.event.subscribers');\n\nexport let SERVER_EVENT_CHILD_SUBSCRIBERS = new InjectionToken<Array<Type<ServerEventSubscriber>>>('server.event.child.subscribers');\n\n@Injectable()\nexport class ServerEventService {\n    public message: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n    public error: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n    private eventSource: EventSourcePolyfill;\n    private _heartbeatTimeout = 120 * 1000;\n    private _heartbeatInterval: any;\n    private activatedUser: ActivatedUser | undefined;\n    public subscribers: Map<any, Subscription> = new Map();\n    private destroy$: Subject<void> = new Subject<void>();\n\n    constructor(private configuration: ConfigurationService,\n        private injector: Injector,\n        @Inject(SERVER_EVENT_SUBSCRIBERS) private addSubscribers: Array<Type<ServerEventSubscriber>>) {\n            this.configuration.loaded\n                .pipe(takeUntil(this.destroy$))\n                .subscribe(applicationConfiguration => {\n                if (applicationConfiguration != null) {\n                    // inject activated user only after config is loaded\n                    this.activatedUser = this.injector.get(ActivatedUser);\n                    // load\n                    this.load();\n                    // and destroy subscription\n                    this.closeSubscription();\n                }\n            });\n        }\n\n    closeSubscription(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    load(): void {\n        if (this.configuration.config\n            && this.configuration.config.settings\n            && this.configuration.config.settings.serverEvent) {\n                const serverEvent: ServerEventServiceConfiguration = this.configuration.config.settings.serverEvent;\n                if (serverEvent.heartbeatTimeout) {\n                    this._heartbeatTimeout = serverEvent.heartbeatTimeout;\n                }\n        }\n        if (Array.isArray(this.addSubscribers)) {\n            this.addSubscribers.forEach((addSubscriber) => {\n                this.subscribe(addSubscriber);\n            });\n        }\n        if (this.activatedUser) {\n          this.activatedUser.user.subscribe((user) => {\n            if (user == null) {\n              if (this.status === ServerEventServiceStatus.Open) {\n                this.close();\n              }\n            }\n            if (user) {\n              if (this.status === ServerEventServiceStatus.Open) {\n                this.close();\n              }\n              this.open();\n            }\n          });\n        }\n    }\n\n    /**\n     * Adds a server event subscriber\n     * @param token\n     */\n    subscribe(token: Type<ServerEventSubscriber>): void {\n        const subscriber: ServerEventSubscriber = this.injector.get<ServerEventSubscriber>(token);\n        if (subscriber == null) {\n            throw new Error('Server event subscriber cannot be instantiated.');\n        }\n        if (typeof subscriber.subscribe !== 'function') {\n            throw new Error('Expected an instance which implements ServerEventSubscriber.');\n        }\n        const observer = subscriber.subscribe.bind(subscriber);\n        this.subscribers.set(token, this.message.subscribe(observer));\n    }\n\n    /**\n     * Removes a server event subscriber\n     * @param token\n     */\n    unsubscribe(token: Type<ServerEventSubscriber>): void {\n        const subscription = this.subscribers.get(token);\n        // if subscription is not null\n        if (subscription != null) {\n            // unsubscribe\n            subscription.unsubscribe();\n        }\n        // remove item\n        this.subscribers.delete(token);\n    }\n\n    protected get source(): string {\n        if (this.configuration.settings &&\n            this.configuration.settings.remote &&\n            this.configuration.settings.remote.server) {\n            return new URL('users/me/events/subscribe', this.configuration.settings.remote.server).toString();\n        }\n        return '/users/me/events/subscribe';\n    }\n\n    protected get heartbeatTimeout(): number {\n        return this._heartbeatTimeout;\n    }\n\n    get status(): ServerEventServiceStatus {\n        if (this.eventSource) {\n            return this.eventSource.readyState;\n        }\n        return ServerEventServiceStatus.Closed;\n    }\n\n    async openAsync(): Promise<ServerEventService> {\n        return this.open();\n    }\n\n    private getUserSync(): UserSnapshot | undefined {\n        const value = sessionStorage.getItem('currentUser');\n        if (value == null) {\n            return;\n        }\n        return JSON.parse(value) as UserSnapshot;\n    }\n\n    open(): this {\n        if (this.status === ServerEventServiceStatus.Open) {\n            return this;\n        }\n        const user = this.getUserSync();\n        const headers = {\n            'Accept': 'application/json',\n        };\n        if (user != null) {\n          Object.assign(headers, {\n            'Authorization': `Bearer ${user.token.access_token}`\n          })\n        }\n        this.eventSource = new EventSourcePolyfill(this.source, {\n            heartbeatTimeout: this.heartbeatTimeout,\n            headers\n        });\n        const messageListener = this.onMessage.bind(this);\n        const errorListener = this.onError.bind(this);\n        this.eventSource.addEventListener('message', messageListener);\n        this.eventSource.addEventListener('error', errorListener);\n        // set heartbeat interval\n        this._heartbeatInterval = setInterval(() => {\n            // close\n            if (this.eventSource && this.eventSource.readyState !== ServerEventServiceStatus.Closed) {\n                this.eventSource.close();\n            }\n            const user = this.getUserSync();\n            if (user == null) {\n                return;\n            }\n            const headers = {\n                'Accept': 'application/json',\n                'Authorization': `Bearer ${user.token.access_token}`\n            };\n            // and create new\n            this.eventSource = new EventSourcePolyfill(this.source, {\n                heartbeatTimeout: this.heartbeatTimeout,\n                headers\n            });\n            // set listeners\n            this.eventSource.addEventListener('message', messageListener);\n            this.eventSource.addEventListener('error', errorListener);\n        }, this.heartbeatTimeout - 5000); // set heartbeat interval\n        return this;\n    }\n\n    protected onMessage(ev: any): void {\n        // emit message\n        if (ev.type === 'message') {\n            let data: any = null;\n            if (typeof ev.data === 'string') {\n                data = JSON.parse(ev.data);\n            } else if (typeof ev.data === 'object') {\n                data = ev.data;\n            }\n            if (data) {\n                this.message.next(data);\n            }\n        }\n    }\n\n    protected onError(ev: any): void {\n        // emit error\n        if (ev.error) {\n            return this.error.next(ev.error);\n        }\n        return this.error.next(ev);\n    }\n\n    close(): boolean {\n        if (this.eventSource) {\n            this.eventSource.close();\n            return true;\n        }\n        // clear heartbeat interval\n        if (this._heartbeatInterval) {\n            clearInterval(this._heartbeatInterval);\n        }\n        return false;\n    }\n\n}\n","import { ResponseError } from '@themost/client';\n\nexport class ApiError extends ResponseError {\n  protected code: string;\n  constructor(message: string, public statusCode: number) {\n    super(message, statusCode);\n    // important: set prototype for a class that extends Error in typescript\n    this['__proto__'] = new.target.prototype;\n    this.code = `E${statusCode}`;\n  }\n}\n\nexport class ProfileNotFoundError extends ApiError {\n\n  constructor() {\n    super('User profile cannot be found', 404);\n    // important: set prototype for a class that extends Error in typescript\n    this['__proto__'] = new.target.prototype;\n    this.code = 'E404.3';\n  }\n}\n\nexport class UserProfileNotFoundError extends ApiError {\n\n  constructor() {\n    super('Your profile cannot be found', 404);\n    // important: set prototype for a class that extends Error in typescript\n    this['__proto__'] = new.target.prototype;\n    this.code = 'E404.1';\n  }\n}\n\nexport class RequestNotFoundError extends ApiError {\n  constructor() {\n    super('User request cannot be found', 404);\n    // important: set prototype for a class that extends Error in typescript\n    this['__proto__'] = new.target.prototype;\n    this.code = 'E404.2';\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { ConfigurationService } from '../../shared/services/configuration.service';\nimport {ActivatedRoute} from '@angular/router';\nimport { AES, enc, lib } from 'crypto-js';\nimport { ActivatedUser } from './activated-user.service';\nimport { ResponseError } from '@themost/client';\nimport {ApiError, UserProfileNotFoundError} from '../../error/error.custom';\nimport { SessionStorageHelperService } from '../../public_api';\n\nexport interface AuthCallbackResponse {\n  access_token: string;\n  expires_in: number;\n  refresh_token?: string;\n  refresh_expires_in?: number;\n  token_type: string;\n  scope: string;\n}\n\nexport interface OnRefreshToken {\n  refresh(): Promise<AuthCallbackResponse | void>;\n}\n@Injectable()\nexport class AuthenticationService {\n\n    constructor(protected configuration: ConfigurationService,\n                protected context: AngularDataContext,\n                protected activatedRoute: ActivatedRoute,\n                protected activatedUser: ActivatedUser) {\n    }\n\n  /**\n   * Generates an OAuth2 state param based on the given string.\n   * @param {string} value\n   * @returns {string}\n   */\n   protected generateState(value: string): string {\n    // get current code_verifier\n    const code_verifier = this.getCodeVerifier();\n    // encrypt value by using code_verifier\n    // and get base64 string\n    const b64 = AES.encrypt(value, code_verifier).toString();\n    // return state param in hex format\n    return enc.Base64.parse(b64).toString(enc.Hex);\n  }\n\n  /**\n   * Gets an OAuth2 code_verifier\n   * @returns {string}\n   */\n  protected getCodeVerifier(): string {\n    let code_verifier = sessionStorage.getItem('code_verifier');\n    if (code_verifier == null) {\n      // generate\n      code_verifier = lib.WordArray.random(24).toString() as string;\n      // and store value\n      if (code_verifier != null) {\n      sessionStorage.setItem('code_verifier', code_verifier);\n      }\n    }\n    // finally, return code verifier\n    return code_verifier;\n  }\n\n    /**\n     * Redirects user to OAuth2 server authorization URL. This operation initializes an implicit authorization flow.\n     */\n  authorize() {\n    const settings = this.configuration.settings.auth;\n    /* tslint:disable-next-line max-line-length */\n        // get scopes\n        settings.oauth2.scope = settings.oauth2.scope || [];\n        const {continue: continue1} = this.activatedRoute.snapshot.queryParams;\n        // get continue param or use /\n        let continueParam = '/';\n        if (continue1 && /^\\//.test(continue1)) {\n          continueParam = continue1;\n        }\n        const state = this.generateState(continueParam);\n        window.location.href = `${settings.authorizeURL}?redirect_uri=${encodeURIComponent(settings.oauth2.callbackURL)}` +\n            `&response_type=token&client_id=${settings.oauth2.clientID}` +\n            `&scope=${settings.oauth2.scope.join(',')}&state=${state}`;\n  }\n\n\n  protected preCallback(queryParams: any): void {\n    if (queryParams.error) {\n      console.error('An error occurred on authorization callback');\n      console.error(queryParams);\n      if (queryParams.error === 'unauthorized_client') {\n        throw new ResponseError('Unauthorized client', 499.1);\n      }\n      throw new ResponseError('Callback error', 499.2);\n    }\n  }\n\n  /**\n   * Handles OAuth2 server callback of an implicit authorization flow.\n   * @param {*} queryParams\n   * @returns {Promise<*>} - Returns an object which represents the authorized user.\n   */\n  async callback(queryParams: any): Promise<any> {\n      // handle callback errors if any\n      this.preCallback(queryParams);\n      // call users/me\n      this.context.setBearerAuthorization(queryParams.access_token);\n      // get user\n\n    try {\n      const user = await this.context.model('users/me').asQueryable().expand('groups').getItem();\n      if (user == null) {\n        // noinspection ExceptionCaughtLocallyJS\n        throw new Error('Unauthorized');\n      }\n      // assign token to user\n      user.token = Object.assign({\n        code_verifier: this.getCodeVerifier()\n      }, queryParams, {\n          created_at: new Date()\n      });\n      // clear session storage on success\n      new SessionStorageHelperService().clear();\n      // store user to storage\n      sessionStorage.setItem('currentUser', JSON.stringify(user));\n      // call subscription for ActivatedUser service;\n      this.activatedUser.user.next(user);\n      // and finally return user\n      return user;\n    } catch (err: Error | any) {\n      if(err && err.status === 498) {\n        throw new UserProfileNotFoundError();\n      }\n      if (err.error && err.error.statusCode) {\n        throw err.error;\n      }\n      throw new ApiError( 'Couldn\\'t complete authorization callback',401)\n    }\n  }\n\n    /**\n     * Performs user logout.\n     * @returns {Promise<boolean>} - Returns true if user has been logged out successfully. Otherwise, returns false.\n     */\n  async logout(): Promise<boolean> {\n    // get authentication settings\n    const settings  = this.configuration.settings && this.configuration.settings.auth;\n    if (settings && settings.logoutURL) {\n      // clear session storage\n      new SessionStorageHelperService().clear();\n      // redirect to logout uri\n      window.location.href = settings.logoutURL;\n      // and return\n      return true;\n    }\n    return false;\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '../../services/authentication.service';\n\n\n@Component({\n  selector: 'universis-app-login',\n  template: `<div></div>`,\n  encapsulation: ViewEncapsulation.None,\n})\n\nexport class LoginComponent implements OnInit {\n\n  constructor(private _router: Router,\n    private _authService: AuthenticationService) {\n  }\n\n  ngOnInit(): void {\n    // reset login status\n    this._authService.authorize();\n  }\n}\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from '../../services/authentication.service';\n\n\n@Component({\n  selector: 'universis-app-logout',\n  template: `<div></div>`,\n  encapsulation: ViewEncapsulation.None,\n})\n\nexport class LogoutComponent implements OnInit {\n\n  constructor(private _router: Router,\n    private _authService: AuthenticationService) {\n  }\n\n  ngOnInit(): void {\n    // reset login status\n    this._authService.logout().then(() => {\n      //\n    });\n  }\n}\n","import {\n  Component,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { ActivatedRoute, Router, ParamMap } from '@angular/router';\nimport { AuthenticationService } from './services/authentication.service';\nimport { UserService } from './services/user.service';\nimport {ErrorService} from '../error/error.service';\nimport {AES, enc, Encoder} from 'crypto-js';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'universis-auth-callback',\n  template: '<div></div>',\n  encapsulation: ViewEncapsulation.None,\n})\n\nexport class AuthCallbackComponent implements OnInit, OnDestroy {\n  private queryMapSubscription: Subscription | undefined;\n\n  constructor(\n    private _router: Router,\n    private _userService: UserService,\n    private _route: ActivatedRoute,\n    private _errorService: ErrorService,\n    private _authService: AuthenticationService) {\n  }\n  ngOnDestroy(): void {\n    if (this.queryMapSubscription) {\n      this.queryMapSubscription.unsubscribe();\n    }\n  }\n\n  ngOnInit() {\n    // validate code\n\n    this.queryMapSubscription = this._route.queryParamMap.subscribe((paramMap: ParamMap) => {\n      const params: any = paramMap.keys.reduce((obj, currentValue) => {\n        const values = paramMap.getAll(currentValue);\n        Object.defineProperty(obj, currentValue, {\n          enumerable: true,\n          configurable: true,\n          writable: true,\n          value: values.length > 1 ? values : values[0]\n        });\n        return obj;\n      }, {});\n      this._authService.callback(params).then((res: any) => {\n        if (typeof res === 'object') {\n          // try to get state parameter\n          let navigateURL = '/';\n\n          const state = paramMap.get('state');\n          // get code verifier\n          if (state && res.token && res.token.code_verifier) {\n            // try to decrypt state parameter\n            try {\n              // get hex bytes\n              const hex: { toString(encoder: Encoder) } = enc.Hex.parse(state);\n              // convert hex to base64\n              const b64 = hex.toString(enc.Base64);\n              // decrypt state parameter\n              const stateURL = AES.decrypt(b64, res.token.code_verifier).toString(enc.Utf8);\n              // if stateURL is a relative URL\n              if (stateURL && /^\\//.test(stateURL)) {\n                // set navigate to state URL\n                navigateURL = stateURL;\n              }\n            } catch (err) {\n              console.error('AUTH', 'STATE', err);\n            }\n          }\n          // and finally navigate client\n          return this._router.navigate([navigateURL]);\n        }\n        return;\n      }).catch( err => {\n        return this._errorService.navigateToError(err);\n      });\n    });\n  }\n\n}\n","import { AfterViewInit, Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { AngularDataContext } from '@themost/angular';\nimport { Subscription, lastValueFrom } from 'rxjs';\nimport { ActivatedUser } from '../../services/activated-user.service';\nimport { AuthenticationService, OnRefreshToken } from '../../services/authentication.service';\nimport { Router } from '@angular/router';\n\n@Component({\n    selector: 'universis-refresh-token',\n    template: `<div></div>`,\n    encapsulation: ViewEncapsulation.None,\n})\n\nexport class RefreshTokenComponent implements OnInit, OnDestroy {\n\n    private userSubscription: Subscription | undefined;\n    private refreshTimer: any;\n    private refreshErrors = 0;\n\n    /**\n     * Gets or sets the validation interval. The default value is 60000 ms.\n     */\n    @Input() timerInterval = 60000;\n    /**\n     * Sets the number of milliseconds -before expiration - for refreshing an access token.\n     * The default value is 60000 ms.\n     */\n    @Input() refreshBefore = 60000;\n\n    constructor(private activatedUser: ActivatedUser,\n        private authService: AuthenticationService,\n        private context: AngularDataContext) {\n    }\n    ngOnDestroy(): void {\n        if (this.userSubscription) {\n            this.userSubscription.unsubscribe();\n        }\n        this.resetTimer();\n    }\n\n    private resetTimer() {\n        if (this.refreshTimer) {\n            clearInterval(this.refreshTimer);\n            this.refreshTimer = null;\n        }\n    }\n\n    ngOnInit(): void {\n        this.userSubscription = this.activatedUser.user.subscribe((user) => {\n            if (user) {\n                // reset timer\n                this.resetTimer();\n                const token: {\n                    expires_in?: number;\n                    refresh_token?: string;\n                    refresh_expires_in?: number;\n                    created_at?: Date;\n                } = user.token;\n                if (token && token.refresh_token) {\n                    // get expiration\n                    const expires_in: number = token.expires_in || 0;\n                    if (Number.isInteger(expires_in) && expires_in > 0) {\n                        if (token.created_at != null) {\n                            // get date created\n                            const createdAt: Date = new Date(token.created_at);\n                            // get expiration date and time\n                            const willBeExpiredAt = new Date(createdAt.getTime() + expires_in * 1000);\n                            if (this.timerInterval >= expires_in * 1000) {\n                                this.timerInterval = this.refreshBefore = Math.round(expires_in * .5 * 1000);\n                            }\n                            this.refreshTimer = setInterval(() => {\n                                if (new Date().getTime() + this.refreshBefore >= willBeExpiredAt.getTime()) {\n                                    // do refresh\n                                    const service = this.authService as any as OnRefreshToken;\n                                    if (typeof service.refresh === 'function') {\n                                        service.refresh().then((result: any) => {\n                                            // clone result and refresh token\n                                            user.token = JSON.parse(JSON.stringify(Object.assign(result, {\n                                                created_at: new Date()\n                                            })));\n                                            // clear interval\n                                            this.resetTimer();\n                                            // store user to storage\n                                            sessionStorage.setItem('currentUser', JSON.stringify(user));\n                                            // set bearer authorization\n                                            this.context.setBearerAuthorization(user.token.access_token);\n                                            // and notify components for change\n                                            this.activatedUser.user.next(user);\n                                        }).catch((err) => {\n                                            this.refreshErrors += 1;\n                                            if (this.refreshErrors > 3) {\n                                                return;\n                                            }\n                                            console.error('An error occurred while trying to refresh token');\n                                            console.error(err);\n                                        });\n                                    }\n                                }\n                            }, this.timerInterval);\n                        } else {\n                            console.warn('REFRESH_TOKEN', 'Refresh token operation cannot be completed' +\n                                ' because token timestamp cannot be determined.');\n                        }\n                    } else {\n                        console.warn('REFRESH_TOKEN', 'Refresh token operation cannot be completed' +\n                            ' because expiration timeout has not been set.');\n                    }\n                }\n            } else {\n                // clear interval because user is null\n                this.resetTimer();\n            }\n        });\n    }\n}\n\n@Component({\n    selector: 'universis-refresh-token-action',\n    template: `<div></div>`,\n    encapsulation: ViewEncapsulation.None,\n})\n\nexport class RefreshTokenActionComponent implements AfterViewInit, OnDestroy {\n    \n    constructor(private activatedUser: ActivatedUser,\n        private authService: AuthenticationService,\n        private context: AngularDataContext,\n        private router: Router) {\n    }\n    ngOnDestroy(): void {\n    }\n\n    ngAfterViewInit(): void {\n        void lastValueFrom(this.activatedUser.user).then((user) => {\n            if (user) {\n                const service = this.authService as any as OnRefreshToken;\n                if (typeof service.refresh !== 'function') {\n                    return this.router.navigate(['/auth/logout']);\n                }\n                service.refresh().then((result: any) => {\n                    user.token = JSON.parse(JSON.stringify(Object.assign(result, {\n                        created_at: new Date()\n                    })));\n                    // store user to storage\n                    sessionStorage.setItem('currentUser', JSON.stringify(user));\n                    // set bearer authorization\n                    this.context.setBearerAuthorization(user.token.access_token);\n                    // and notify components for change\n                    this.activatedUser.user.next(user);\n                    return this.router.navigate(['/']);\n                });\n            } else {\n                return this.router.navigate(['/auth/logout']);\n            }\n        });\n    }\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthCallbackComponent } from './auth-callback.component';\nimport { LogoutComponent } from './components/logout/logout.component';\nimport { LoginComponent } from './components/login/login.component';\nimport { RefreshTokenActionComponent } from './components/refresh/refresh-token.component';\n\nconst routes: Routes = [\n  {\n    path: 'auth',\n    children: [\n      {\n        path: '',\n        pathMatch: 'full',\n        redirectTo: 'login'\n      },\n      {\n        path: 'login', component: LoginComponent, data: {\n          title: 'Login'\n        }\n      },\n      {\n        path: 'refresh', component: RefreshTokenActionComponent, data: {\n          title: 'Refresh'\n        }\n      },\n      {\n        path: 'logout', component: LogoutComponent, data: {\n          title: 'Logout'\n        }\n      },\n      {\n        path: 'loginAs', component: LogoutComponent, data: {\n          title: 'LoginAsDifferentUser'\n        }\n      },\n      {\n        path: 'callback', data: {\n          code: null\n        }, component: AuthCallbackComponent\n      }\n    ]\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule]\n})\nexport class AuthRoutingModule {\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AngularDataContext } from '@themost/angular';\nimport { ConfigurationService } from '../../shared/services/configuration.service';\nimport { ActivatedUser } from './activated-user.service';\nimport { AuthCallbackResponse, AuthenticationService, OnRefreshToken } from './authentication.service';\nimport { SHA256, enc } from 'crypto-js';\nimport { HttpClient } from '@angular/common/http';\nimport { ResponseError } from '@themost/client';\nimport { first } from 'rxjs/operators';\n\nfunction base64URLEncode(str: string) {\n    return str.replace(/\\+/g, '-')\n        .replace(/\\//g, '_')\n        .replace(/=/g, '');\n}\n\ndeclare interface ExchangeCodeResponse {\n    access_token: string;\n    token_type: string;\n    expires_in: number;\n    refresh_token: string;\n    scope?: string;\n}\n\n@Injectable()\nexport class PkceAuthenticationService extends AuthenticationService implements OnRefreshToken {\n\n    constructor(private http: HttpClient,\n                configuration: ConfigurationService,\n                context: AngularDataContext,\n                activatedRoute: ActivatedRoute,\n                activatedUser: ActivatedUser) {\n        super(configuration, context, activatedRoute, activatedUser);\n    }\n    /**\n     * Refreshes OAuth2 access token\n     * @returns {AuthCallbackResponse=}\n     */\n    refresh(): Promise<AuthCallbackResponse | void> {\n        return new Promise((resolve, reject) => {\n            // get activated user\n            this.activatedUser.user.pipe(first()).subscribe((user) => {\n                // if user exists\n                if (user && user.token && user.token.refresh_token) {\n                    // get token url\n                    const oauth2Settings: {\n                        clientID?: string;\n                        tokenURL?: string\n                    } = this.configuration.settings.auth &&\n                        this.configuration.settings.auth.oauth2;\n                    if (oauth2Settings && oauth2Settings.tokenURL) {\n                        const form = new URLSearchParams();\n                        form.set('grant_type', 'refresh_token');\n                        if (oauth2Settings.clientID != null) {\n                          form.set('client_id', oauth2Settings.clientID);\n                        }\n                        form.set('refresh_token', user.token.refresh_token);\n                        return this.http.post<AuthCallbackResponse>(\n                            oauth2Settings.tokenURL,\n                            form.toString(),\n                            {\n                                headers: {\n                                    'Content-Type': 'application/x-www-form-urlencoded'\n                                }\n                            }\n                        ).subscribe((result) => {\n                            return resolve(result);\n                        }, (err) => {\n                            return reject(err);\n                        });\n                    } else {\n                        return reject(new Error('Invalid application configuration. Token URL is missing.'));\n                    }\n                }\n                return resolve();\n            }, (err) => {\n                return reject(err);\n            });\n        });\n    }\n\n    /**\n     * Authorize user by using PKCE Authorization Flow\n     */\n    authorize() {\n        const settings = this.configuration.settings.auth;\n        /* tslint:disable-next-line max-line-length */\n        // get scopes\n        settings.oauth2.scope = settings.oauth2.scope || [];\n        // get query params\n        const {continue: continue1} = this.activatedRoute.snapshot.queryParams;\n        // get current code_verifier\n        const code_verifier = this.getCodeVerifier();\n        // get continue param or use /\n        let continueParam = '/';\n        if (continue1 && /^\\//.test(continue1)) {\n            continueParam = continue1;\n        }\n        const state = this.generateState(continueParam);\n        // get pkce code challenge\n        const code_challenge = SHA256(code_verifier).toString(enc.Base64) as string;\n        // and method\n        const code_challenge_method = 'S256';\n        // redirect client\n        window.location.href = `${settings.authorizeURL}?` +\n            `redirect_uri=${encodeURIComponent(settings.oauth2.callbackURL)}` +\n            `&response_type=code` +\n            `&client_id=${settings.oauth2.clientID}` +\n            `&code_challenge=${base64URLEncode(code_challenge)}` +\n            `&code_challenge_method=${code_challenge_method}` +\n            `&scope=${settings.oauth2.scope.join(',')}` +\n            `&state=${state}`;\n      }\n\n      /**\n       * H\n       * @param {*} queryParams\n       */\n      async callback(queryParams: any): Promise<any> {\n          this.preCallback(queryParams);\n          // if callback contains access_token\n        if (Object.prototype.hasOwnProperty.call(queryParams, 'access_token')) {\n            // handle access token and continue\n            return super.callback(queryParams);\n        }\n        if (Object.prototype.hasOwnProperty.call(queryParams, 'code')) {\n            // handle code exchange\n            const oauth2Settings: {\n                clientID?: string,\n                tokenURL?: string,\n                callbackURL: string\n            } = this.configuration.settings.auth &&\n                this.configuration.settings.auth.oauth2;\n            if (oauth2Settings == null) {\n                throw new Error('Application configuration is invalid. OAuth2 configuration section is missing.');\n            }\n            if (oauth2Settings.tokenURL == null) {\n                throw new Error('OAuth2 configuration section is invalid. Code exchange URL is missing.');\n            }\n\n            // get current code verifier\n            const code_verifier = this.getCodeVerifier();\n            // prepare form\n            const form = new URLSearchParams();\n            form.set('grant_type', 'authorization_code');\n            form.set('code', queryParams.code);\n            if (oauth2Settings.clientID != null) {\n              form.set('client_id', oauth2Settings.clientID);\n            }\n            form.set('redirect_uri', oauth2Settings.callbackURL);\n            if (code_verifier != null) {\n                form.set('code_verifier', code_verifier);\n            }\n            try {\n                const response = await this.http.post<ExchangeCodeResponse>(oauth2Settings.tokenURL, form.toString(), {\n                    headers: {\n                        'Content-Type': 'application/x-www-form-urlencoded'\n                    }\n               }).toPromise();\n               return super.callback(response);\n            } catch (err: Error | any) {\n                console.error('An error occurred while exchange code.');\n                if (err.status === 0) {\n                    throw new ResponseError('Connection Failed', 0.1);\n                }\n                throw err;\n            }\n        }\n        // otherwise, throw error if access_token or code is empty\n        throw new ResponseError('Bad authorization callback request', 400);\n      }\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { AuthenticationService } from './services/authentication.service';\nimport { UserService } from './services/user.service';\nimport { LoginComponent } from './components/login/login.component';\nimport { LogoutComponent } from './components/logout/logout.component';\nimport { APP_LOCATIONS, DEFAULT_APP_LOCATIONS, AuthGuard } from './guards/auth.guard';\nimport { AuthRoutingModule } from './auth.routing';\nimport { AuthCallbackComponent } from './auth-callback.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AngularDataContext, MostModule } from '@themost/angular';\nimport { ActivatedUser } from './services/activated-user.service';\nimport { PkceAuthenticationService } from './services/pkce-authentication.service';\nimport { ConfigurationService } from '../shared/services/configuration.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { RefreshTokenActionComponent, RefreshTokenComponent } from './components/refresh/refresh-token.component';\nimport { LocationPermission } from './guards/auth.guard.interfaces';\n\nexport function AuthenticationServiceFactory(\n    http: HttpClient,\n    configuration: ConfigurationService,\n    context: AngularDataContext,\n    activatedRoute: ActivatedRoute,\n    activatedUser: ActivatedUser) {\n    const authSettings: { use?: string } = configuration.settings.auth;\n    if (Object.prototype.hasOwnProperty.call(authSettings, 'use')) {\n        if (authSettings.use === 'PkceAuthenticationService') {\n            // use PkceAuthenticationService\n            return new PkceAuthenticationService(http, configuration,\n                context, activatedRoute, activatedUser);\n        }\n        // show warning for unsupported service\n        console.log('WARN', 'The specified authentication service is not yet implemented.');\n    }\n    // use fallback which is of course an instance of SignerService\n    return new AuthenticationService(configuration,\n        context, activatedRoute, activatedUser);\n}\n\n@NgModule({\n    imports: [\n        HttpClientModule,\n        CommonModule,\n        FormsModule,\n        TranslateModule,\n        MostModule,\n        AuthRoutingModule\n    ],\n    declarations: [\n        LoginComponent,\n        LogoutComponent,\n        AuthCallbackComponent,\n        RefreshTokenComponent,\n        RefreshTokenActionComponent\n    ],\n    exports: [\n        RefreshTokenComponent\n    ],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class AuthModule {\n\n    static forRoot(locations?: Array<LocationPermission>): ModuleWithProviders<AuthModule> {\n        return {\n            ngModule: AuthModule,\n            providers: [\n                AuthGuard,\n                {\n                    provide: AuthenticationService,\n                    useFactory: AuthenticationServiceFactory,\n                    deps: [\n                        HttpClient,\n                        ConfigurationService,\n                        AngularDataContext,\n                        ActivatedRoute,\n                        ActivatedUser,\n                    ],\n                },\n                UserService,\n                ActivatedUser,\n                {\n                    provide: APP_LOCATIONS,\n                    useValue: locations || DEFAULT_APP_LOCATIONS\n                }\n            ]\n        };\n    }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule, Type } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AuthModule } from '../auth/auth.module';\nimport { SharedModule } from '../shared/shared.module';\n// tslint:disable-next-line: max-line-length\nimport { ServerEventService, ServerEventSubscriber, SERVER_EVENT_CHILD_SUBSCRIBERS, SERVER_EVENT_SUBSCRIBERS } from './services/server-event.service';\n\ndeclare type EventSubscribers = Array<Type<ServerEventSubscriber>>;\n\n@NgModule({\n    imports: [\n        CommonModule,\n        HttpClientModule,\n        RouterModule,\n        SharedModule,\n        AuthModule\n    ]\n})\nexport class ServerEventModule {\n    static forRoot(subscribers?: EventSubscribers): ModuleWithProviders<ServerEventModule> {\n        return {\n            ngModule: ServerEventModule,\n            providers: [\n                ServerEventService,\n                {\n                    provide: SERVER_EVENT_SUBSCRIBERS,\n                    useValue: subscribers || []\n                },\n                {\n                    provide: SERVER_EVENT_CHILD_SUBSCRIBERS,\n                    multi: true,\n                    useValue: []\n                }\n            ]\n        };\n    }\n\n    static forChild(subscribers: EventSubscribers): ModuleWithProviders<ServerEventModule> {\n        return {\n            ngModule: ServerEventModule,\n            providers: [\n                {\n                    provide: SERVER_EVENT_CHILD_SUBSCRIBERS,\n                    multi: true,\n                    useValue: subscribers\n                },\n            ]\n        };\n    }\n\n}\n","import {Component, Input, OnDestroy, OnInit, Renderer2, ViewEncapsulation} from '@angular/core';\nimport { ErrorService, TranslateError } from '../../error.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n  selector: 'universis-error-base',\n  templateUrl: './error-base.component.html',\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./error-base.component.scss']\n})\nexport class ErrorBaseComponent implements OnInit, OnDestroy {\n\n\n  public isUserLoggedIn = false;\n  public code: string;\n  public title: string | undefined;\n  public message: string | undefined;\n  public continue: string | undefined;\n  @Input() action: string = 'Error.Continue';\n  public continueLinkIsAbsolute: boolean;\n  @Input() iconClass = 'far fa-frown';\n\n  constructor(protected _errorService: ErrorService,\n            protected _translateService: TranslateService,\n              protected _renderer: Renderer2) {\n      // hide universis-spinner\n      const spinnerElement = document.body.getElementsByTagName('universis-spinner')[0];\n      if (spinnerElement) {\n        this._renderer.setStyle(spinnerElement, 'display', 'none');\n      }\n      // user logged in\n      this.isUserLoggedIn = (sessionStorage.getItem('currentUser') != null);\n      // add center content classes\n      this._renderer.addClass(document.body, 'flex-row');\n      this._renderer.addClass(document.body, 'align-items-center');\n    // get last error\n    const error = this._errorService.getLastError();\n    // check error.code property\n    if (error && typeof error.code === 'string') {\n      this.code = error.code;\n    } else if (error && typeof (error.status || error.statusCode) === 'number') {\n      this.code = `E${error.status || error.statusCode}`;\n    } else {\n      this.code = 'E500';\n    }\n    if (error && typeof error.continue === 'string') {\n      this.continue = error.continue;\n    } else {\n      this.continue = '/';\n    }\n    // check if continue link is an absolute URL\n    this.continueLinkIsAbsolute = this.continueIsAbsolute();\n\n  }\n\n    get displayCode() {\n        if (/^E(\\d+)\\.?(\\d+)?$/g.test(this.code)) {\n            return this.code;\n        }\n        return 'E500';\n    }\n\n  ngOnInit() {\n\n\n    this._translateService.get(this.code).subscribe((translation: TranslateError) => {\n      if (translation) {\n        this.title = translation.title;\n        this.message = translation.message;\n        // if translation has a custom action text\n        if (translation.action || translation.actionText) {\n          // set action text\n          this.action = translation.action || translation.actionText;\n        }\n        // check if translation has a custom icon class (icon or iconClass)\n        if (translation.icon || translation.iconClass) {\n          this.iconClass = translation.icon || translation.iconClass;\n        }\n      } else {\n        this._translateService.get('E500').subscribe((result) => {\n          this.title = result.title;\n          this.message = result.message;\n        });\n      }\n    });\n  }\n\n    continueIsAbsolute(): boolean {\n      const regex = new RegExp('^((https?|ftps?):\\\\/\\\\/)([\\\\da-z.-]+)\\\\.([a-z.]{2,6})([\\\\/\\\\w .-]*)*\\\\/?$');\n      // returns true if the continue link is absolute\n      if (this.continue == null) {\n        return false;\n      }\n      return regex.test(this.continue);\n    }\n\n    ngOnDestroy(): void {\n      // remove center content classes\n        this._renderer.removeClass(document.body, 'flex-row');\n        this._renderer.removeClass(document.body, 'align-items-center');\n    }\n}\n\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: '.m-error.m-error--http',\n  templateUrl: './error-base.component.html',\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./error-base.component.scss']\n})\nexport class HttpErrorComponent extends ErrorBaseComponent implements OnInit, OnDestroy {\n  constructor(protected _errorService: ErrorService,\n    protected _translateService: TranslateService,\n    private _router: Router,\n    private _route: ActivatedRoute,\n              protected _renderer: Renderer2) {\n    super(_errorService, _translateService, _renderer);\n  }\n\n  ngOnInit() {\n    // get params and query params\n    this._route.params.subscribe(({status}) => {\n      if (status) {\n        this.code = `E${status}`;\n      }\n      this._route.queryParams.subscribe(({action, continue: continue1}) => {\n        if (continue1) {\n          this.continue = continue1;\n          // check if continue link is an absolute URL\n          this.continueLinkIsAbsolute = this.continueIsAbsolute();\n        }\n        if (action) {\n          this.action = action;\n        }\n        this._translateService.get(this.code || 'E500').subscribe((translation) => {\n          if (translation) {\n            this.title = translation.title;\n            this.message = translation.message;\n          }\n        });\n      });\n    });\n  }\n}\n","<nav class=\"navbar navbar-expand navbar-light bg-light\" id=\"errorNav\">\n  <div class=\"collapse navbar-collapse\">\n    <ul class=\"navbar-nav ml-auto\">\n      <li class=\"nav-item\">\n        <a class=\"nav-link\" [routerLink]=\"['/auth/logout']\" routerLinkActive=\"router-link-active\"  [translate]=\"'Error.Logout'\"></a>\n      </li>\n    </ul>\n  </div>\n</nav>\n\n<div class=\"container error-container\">\n        <div class=\"col-md-8 col-sm-10 col-xs-10\">\n          <div class=\"d-flex flex-row justify-content-center\">\n            <i [ngClass]=\"iconClass\" class=\"fa-10x text-secondary\" [title]=displayCode></i>\n          </div>\n            <div class=\"d-flex flex-row justify-content-center\">\n                <div class=\"px-4 py-md-3\">\n                    <h3 class=\"pt-3 text-center\">{{title}}</h3>\n                    <h5 class=\"text-muted text-center\">{{message}}</h5>\n                    <div class=\"text-center pt-4\">\n                        <ng-container *ngIf = \"continueLinkIsAbsolute\">\n                          <a [attr.href]=\"continue\" [translate]=\"action\" class=\"btn btn-light rounded\"></a>\n                        </ng-container>\n                        <ng-container *ngIf = \"!continueLinkIsAbsolute\">\n                          <a [routerLink]=\"continue\" [translate]=\"action\" class=\"btn btn-light rounded\"></a>\n                        </ng-container>\n                    </div>\n                </div>\n            </div>\n    </div>\n</div>\n\n\n","import { ErrorHandler, Injectable } from '@angular/core';\n\n@Injectable()\nexport class ErrorsHandler implements ErrorHandler {\n\n  static navigateToError(status: number, continueLink?: string): void {\n    if (continueLink) {\n      window.location.href = `#/error/${status}?continue=${encodeURIComponent(continueLink)}`;\n    } else {\n      window.location.href = `#/error/${status}`;\n    }\n  }\n\n\n\n  handleError(error: any) {\n      // handle http response errors\n      if (error.rejection && typeof error.rejection.status === 'number') {\n          switch(error.rejection.status) {\n              case 0:\n                return ErrorsHandler.navigateToError(408.1);\n              case 401:\n              case 498:\n                return ErrorsHandler.navigateToError(401.1, '/auth/loginAs');\n              case 403.3:\n              case 408:\n              case 429:\n              case 502:\n              case 503:\n                return ErrorsHandler.navigateToError(error.rejection.status);\n              case 403.6:\n                return ErrorsHandler.navigateToError(error.rejection.status, '/auth/loginAs');\n          }\n      }\n  }\n\n\n\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n    selector: 'network-changed-error',\n    template: `\n<nav class=\"navbar navbar-expand navbar-light bg-light\" id=\"errorNav\">\n  <div class=\"collapse navbar-collapse\">\n    <ul class=\"navbar-nav ml-auto\">\n      <li class=\"nav-item\">\n        <a class=\"nav-link\" [routerLink]=\"['/auth/logout']\" routerLinkActive=\"router-link-active\"  [translate]=\"'Error.Logout'\"></a>\n      </li>\n    </ul>\n  </div>\n</nav>\n<div class=\"container error-container\">\n        <div class=\"col-md-8 col-sm-12 col-xs-12\">\n          <div class=\"d-flex flex-row justify-content-center\">\n            <i [ngClass]=\"iconClass\" class=\"fa-10x text-gray-100\"></i>\n          </div>\n            <div class=\"d-flex flex-row justify-content-center\">\n                <div class=\"px-4 py-md-3\">\n                    <h3 class=\"pt-3 font-weight-normal text-center\">{{'E403.6.title' | translate}}</h3>\n                    <h5 class=\"text-muted font-weight-normal text-center\">{{'E403.6.message' | translate}}</h5>\n                    <div class=\"text-center pt-4\">\n                    <a [routerLink]=\"[actionLink]\" [translate]=\"'Continue'\" class=\"btn btn-light rounded\"></a>\n                    <div class=pt-2>\n                        <span class=\"text-muted\">{{'E403.6.refresh' | translate:{value: autoRefresh} }}</span>\n                    </div>\n                    </div>\n                </div>\n            </div>\n    </div>\n</div>\n    `,\n    styleUrls: ['../error-base/error-base.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class NetworkChangedErrorComponent implements OnInit, OnDestroy {\n\n    public iconClass = 'fa fa-hourglass-start';\n    public supportsRefresh = true;\n    public autoRefresh = 5;\n    private refreshTimer: any;\n    public actionLink = '/auth/refresh';\n    public iconClasses = [\n        'fa fa-hourglass-start',\n        'fa fa-hourglass-half',\n        'fa fa-hourglass-end'\n    ]\n\n    constructor(private router: Router) {\n      \n    }\n    ngOnDestroy(): void {\n        //\n    }\n    ngOnInit(): void {\n      this.refreshTimer = setInterval(() => {\n          const index = new Date().getSeconds() % this.iconClasses.length;\n          this.iconClass = this.iconClasses[index];\n          if (this.autoRefresh > 0) {\n              this.autoRefresh--;\n          } else {\n              clearInterval(this.refreshTimer);\n              this.router.navigate([\n                this.actionLink\n              ]);\n          }\n      }, 1000);\n    }\n\n}","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {ErrorBaseComponent, HttpErrorComponent} from './components/error-base/error-base.component';\nimport { NetworkChangedErrorComponent } from './components/network-changed-error/network-changed-error.component';\n\nconst routes: Routes = [\n  {\n    path: 'error',\n    component: ErrorBaseComponent\n  },\n  {\n    path: 'error/403.6',\n    component: NetworkChangedErrorComponent\n  },\n  {\n    path: 'error/:status',\n    component: HttpErrorComponent\n  }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule],\n})\nexport class ErrorRoutingModule {\n}\n","/* tslint:disable quotemark */\n/* tslint:disable max-line-length */\nexport const en = {\n    \"Error\": {\n      \"Continue\": \"Continue\",\n      \"LoginAsDifferentUser\": \"Login as different user\",\n      \"Logout\": \"Logout\"\n    },\n    \"E0\": {\n        \"title\": \"Connection Failed\",\n        \"message\": \"The connection to the server failed. Please try again\",\n        \"1\": {\n            \"title\": \"Connection Failed\",\n            \"message\": \"The connection to the authorization server failed or client settings are invalid. Please try again.\",\n        }\n    },\n    \"E400\": {\n        \"title\": \"Bad Request\",\n        \"message\": \"The request cannot be fulfilled due to bad syntax.\",\n        \"1\": {\n            \"title\": \"Your session has expired\",\n            \"message\": \"Please login again.\"\n        }\n    },\n    \"E401\": {\n        \"title\": \"Unauthorized\",\n        \"message\": \"The request was a legal request, but requires user authentication.\",\n        \"1\": {\n            \"title\": \"An active session is required\",\n            \"message\": \"The request was a legal request, but requires user authentication or your session has expired.\"\n        }\n    },\n    \"E403\": {\n        \"title\": \"Forbidden\",\n        \"message\": \"The server understood the request, but is refusing to fulfill it.\",\n        \"1\": {\n            \"title\": \"Access Denied\",\n            \"message\": \"The server understood the request, but you don't have the appropriate permission to access this resource.\"\n        },\n        \"2\": {\n            \"title\": \"Access Denied\",\n            \"message\": \"The server understood the request, but you are not an enabled user and you don't have the appropriate permission\" +\n                \" to access this resource\"\n        },\n        \"3\": {\n            \"title\": \"Access Denied\",\n            \"message\": \"The server understood the request, but there are no active departments in this resource \" +\n                \"or the user has no rights in any of the departments of the institution.\",\n        },\n        \"6\": {\n            \"title\": \"Invalid network credentials\",\n            \"message\": \"The server understood the request, but your network credentials cannot be used due to possible network change.\",\n            \"refresh\": \"Auto refresh in {{value}} seconds\"\n        }\n    },\n    \"E404\": {\n        \"title\": \"Not Found\",\n        \"message\": \"The requested resource could not be found but may be available again in the future.\",\n        \"1\": {\n            \"title\": \"Your profile cannot be found\",\n            \"message\": \"Please try again. If the problem persists, please contact the system administrators.\"\n        },\n        \"2\": {\n            \"title\": \"User profile cannot be found\",\n            \"message\": \"Please try again. If the problem persists, please contact the system administrators.\"\n        },\n        \"3\": {\n            \"title\": \"Application cannot be found\",\n            \"message\": \"Please try again. If the problem persists, please contact the system administrators.\"\n        },\n        \"4\": {\n            \"title\": \"Contract cannot be found\",\n            \"message\": \"Please try again. If the problem persists please contact to system administrators.\"\n        }\n    },\n    \"E405\": {\n        \"title\": \"Method Not Allowed\",\n        \"message\": \"A request was made of a resource using a request method not supported by that resource.\"\n    },\n    \"E406\": {\n        \"title\": \"Not Acceptable\",\n        \"message\": \"The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request.\"\n    },\n    \"E407\": {\n        \"title\": \"Proxy Authentication Required\",\n        \"message\": \"The client must first authenticate itself with the proxy.\"\n    },\n    \"E408\": {\n        \"title\": \"Request Timeout\",\n        \"message\": \"The server timed out waiting for the request.\",\n      \"1\": {\n        \"title\": \"Connection Failed\",\n        \"message\": \"The connection to the server failed. Please try again\"\n      }\n    },\n    \"E409\": {\n        \"title\": \"Conflict\",\n        \"message\": \"The request could not be completed due to a conflict with the current state of the resource.\"\n    },\n    \"E410\": {\n        \"title\": \"Gone\",\n        \"message\": \"The resource requested is no longer available and will not be available again.\"\n    },\n    \"E411\": {\n        \"title\": \"Length Required\",\n        \"message\": \"The request did not specify the length of its content, which is required by the requested resource.\"\n    },\n    \"E412\": {\n        \"title\": \"Precondition Failed\",\n        \"message\": \"The server does not meet one of the preconditions that the requester put on the request.\"\n    },\n    \"E413\": {\n        \"title\": \"Payload Too Large\",\n        \"message\": \"The request is larger than the server is willing or able to process.\"\n    },\n    \"E414\": {\n        \"title\": \"Request-URI Too Long\",\n        \"message\": \"The URI provided was too long for the server to process.\"\n    },\n    \"E415\": {\n        \"title\": \"Request Entity Too Large\",\n        \"message\": \"The request is larger than the server is willing or able to process.\"\n    },\n    \"E416\": {\n        \"title\": \"Requested Range Not Satisfiable\",\n        \"message\": \"The client has asked for a portion of the file, but the server cannot supply that portion.\"\n    },\n    \"E417\": {\n        \"title\": \"Expectation Failed\",\n        \"message\": \"The server cannot meet the requirements of the Expect request-header field.\"\n    },\n    \"E422\": {\n      \"title\": \"Invalid file\",\n      \"message\": \"The server cannot process the file data.\"\n    },\n    \"E429\": {\n        \"title\": \"Too many requests\",\n        \"message\": \"Too many requests have been made. Please try again later.\"\n      },\n    \"E496\": {\n        \"title\": \"No Cert\",\n        \"message\": \"The client must provide a certificate to fulfill the request.\"\n    },\n    \"E498\": {\n        \"title\": \"Token expired\",\n        \"message\": \"Token was expired or is in invalid state.\"\n    },\n    \"E499\": {\n        \"title\": \"Token required\",\n        \"message\": \"A token is required to fulfill the request.\",\n        \"1\": {\n            \"title\": \"Unauthorized client\",\n            \"message\": \"Client is not allowed to initiate browser login with given response_type.\"\n        },\n        \"2\": {\n            \"title\": \"Internal authorization error\",\n            \"message\": \"The last step of authorization flow cannot be completed due to internal server error.\"\n        }\n    },\n    \"E500\": {\n        \"title\": \"Internal Server Error\",\n        \"message\": \"The server encountered an internal error and was unable to complete your request.\"\n    },\n    \"E501\": {\n        \"title\": \"Not Implemented\",\n        \"message\": \"The server either does not recognize the request method, or it lacks the ability to fulfil the request.\"\n    },\n    \"E502\": {\n        \"title\": \"Bad Gateway\",\n        \"message\": \"The server was acting as a gateway or proxy and received an invalid response from the upstream server.\"\n    },\n    \"E503\": {\n        \"title\": \"Service Unavailable\",\n        \"message\": \"The server is currently unavailable (because it is overloaded or down for maintenance).\"\n    }\n};\n/* tslint:enable max-line-length */\n/* tslint:enable quotemark */\n","/* tslint:disable quotemark */\n/* tslint:disable max-line-length */\nexport const el = {\n    \"Error\": {\n      \"Continue\": \"Συνέχεια\",\n      \"LoginAsDifferentUser\": \"Είσοδος ως διαφορετικός χρήστης\",\n      \"Logout\": \"Αποσύνδεση\"\n    },\n    \"E0\": {\n        \"title\": \"Αποτυχία σύνδεσης\",\n        \"message\": \"Η σύνδεση με το διακομιστή απέτυχε. Προσπαθήστε ξανά\",\n        \"1\": {\n            \"title\": \"Αποτυχία παραλαβής στοιχείων σύνδεσης\",\n            \"message\": \"Η σύνδεση με το διακομιστή εξουσιοδότησης απέτυχε ή τα στοιχεία διασύνδεσης δεν είναι έγκυρα. Προσπαθήστε ξανά.\",\n        }\n    },\n    \"E400\": {\n        \"title\": \"Εσφαλμένη αίτηση\",\n        \"message\": \"Το αίτημα δεν μπορεί να ικανοποιηθεί λόγω κακής σύνταξης.\",\n        \"1\": {\n          \"title\": \"Η συνεδρία σας έληξε\",\n          \"message\": \"Παρακαλούμε συνδεθείτε ξανά.\"\n        }\n    },\n    \"E401\": {\n        \"title\": \"Μη εξουσιοδοτημένη πρόσβαση\",\n        \"message\": \"Η πρόσβαση δεν επιτρέπεται λόγω μη έγκυρων διαπιστευτηρίων.\",\n        \"1\": {\n            \"title\": \"Απαιτείται ενεργή σύνδεση\",\n            \"message\": \"Η πρόσβαση δεν επιτρέπεται λόγω μη έγκυρων διαπιστευτηρίων ή η διάρκεια της σύνδεσης σας έχει λήξει.\"\n        }\n    },\n    \"E403\": {\n        \"title\": \"Απαγόρευση\",\n        \"message\": \"Ο διακομιστής κατανόησε το αίτημα, αλλά αρνείται να το εκπληρώσει.\",\n        \"1\": {\n            \"title\": \"Δεν επιτρέπεται η πρόσβαση\",\n            \"message\": \"Ο διακομιστής κατανόησε το αίτημα, αλλά δεν έχετε την κατάλληλη άδεια πρόσβασης σε αυτόν τον πόρο.\"\n        },\n      \"2\": {\n          \"title\": \"Δεν επιτρέπεται η πρόσβαση\",\n          \"message\": \"Ο διακομιστής κατανόησε το αίτημα, αλλά δεν είστε ενεργός χρήστης και δεν δεν έχετε άδεια πρόσβασης σε αυτόν τον πόρο\"\n      },\n      \"3\": {\n        \"title\": \"Δεν επιτρέπεται η πρόσβαση\",\n        \"message\": \"Ο διακομιστής κατανόησε το αίτημα, αλλά δεν υπάρχουν ενεργά τμήματα σε αυτόν τον πόρο \" +\n          \"ή ο χρήστης δεν έχει δικαιώματα σε κάποιο από τα τμήματα του ιδρύματος.\"\n      },\n      \"6\": {\n        \"title\": \"Μη έγκυρα διαπιστευτήρια δικτύου\",\n        \"message\": \"Ο διακομιστής κατανόησε το αίτημα σας, αλλά τα διαπιστευτήρια σας δεν μπορούν να χρησιμοποιηθούν λόγω πιθανής αλλαγής δικτύου.\",\n        \"refresh\": \"Αυτόματη ανανέωση σε {{value}} δευτερόλεπτα\"\n      }\n    },\n    \"E404\": {\n        \"title\": \"Δεν βρέθηκε\",\n        \"message\": \"Ο πόρος δεν ήταν δυνατό να βρεθεί αλλά μπορεί να είναι και πάλι διαθέσιμος στο μέλλον.\",\n        \"1\": {\n            \"title\": \"Το προφίλ σας δε βρέθηκε\",\n            \"message\": \"Προσπαθήστε ξανά. Εάν το πρόβλημα παραμείνει επικοινωνήστε με τους διαχειριστές του συστήματος σας.\"\n        },\n        \"2\": {\n            \"title\": \"Το προφίλ του χρήστη δεν βρέθηκε\",\n            \"message\": \"Προσπαθήστε ξανά. Εάν το πρόβλημα παραμείνει επικοινωνήστε με τους διαχειριστές του συστήματος σας.\"\n        },\n        \"3\": {\n            \"title\": \"Η αίτηση δεν βρέθηκε\",\n            \"message\": \"Προσπαθήστε ξανά. Εάν το πρόβλημα παραμείνει επικοινωνήστε με τους διαχειριστές του συστήματος σας.\"\n        },\n        \"4\": {\n            \"title\": \"Το συμβόλαιο δεν βρέθηκε\",\n            \"message\": \"Προσπαθήστε ξανά. Εάν το πρόβλημα παραμείνει επικοινωνήστε με τους διαχειριστές του συστήματος σας.\"\n        }\n    },\n    \"E405\": {\n        \"title\": \"Δεν επιτρέπεται η εφαρμογή της μεθόδου\",\n        \"message\": \"Ζητήθηκε ένας πόρος χρησιμοποιώντας μια μέθοδο αίτησης που δεν υποστηρίζεται από αυτόν τον πόρο.\"\n    },\n    \"E406\": {\n        \"title\": \"Δεν είναι αποδεκτό\",\n        \"message\": \"Ο πόρος είναι ικανός να παράγει περιεχόμενο μη αποδεκτό σύμφωνα με τις κεφαλίδες Accept που αποστέλλονται στην αίτηση.\"\n    },\n    \"E407\": {\n        \"title\": \"Απαιτείται έλεγχος ταυτότητας διακομιστή μεσολάβησης\",\n        \"message\": \"Ο πελάτης πρέπει πρώτα να επικυρώσει τον εαυτό του με το διακομιστή μεσολάβησης.\"\n    },\n    \"E408\": {\n        \"title\": \"Χρονικό όριο αίτησης\",\n        \"message\": \"The server timed out waiting for the request.\",\n      \"1\": {\n        \"title\": \"Αποτυχία σύνδεσης\",\n        \"message\": \"Η σύνδεση με το διακομιστή απέτυχε. Προσπαθήστε ξανά\"\n      }\n    },\n    \"E409\": {\n        \"title\": \"Σύγκρουση\",\n        \"message\": \"Το αίτημα δεν ήταν δυνατό να ολοκληρωθεί λόγω διένεξης με την τρέχουσα κατάσταση του πόρου.\"\n    },\n    \"E410\": {\n        \"title\": \"Gone\",\n        \"message\": \"The resource requested is no longer available and will not be available again.\"\n    },\n    \"E411\": {\n        \"title\": \"Length Required\",\n        \"message\": \"The request did not specify the length of its content, which is required by the requested resource.\"\n    },\n    \"E412\": {\n        \"title\": \"Precondition Failed\",\n        \"message\": \"The server does not meet one of the preconditions that the requester put on the request.\"\n    },\n    \"E413\": {\n        \"title\": \"Υπέρβαση μεγέθους αιτήματος\",\n        \"message\": \"Το μέγεθος του αιτήματος είναι μεγαλύτερο από αυτό που επιτρέπει ή μπορεί να επεξεργαστεί ο διακομιστής.\"\n    },\n    \"E414\": {\n        \"title\": \"Υπέρβαση μήκους διεύθυνσης\",\n        \"message\": \"Η διέυθυνση του αιτήματος ήταν πολύ μεγάλη για να την επεξεργαστεί ο διακομιστής.\"\n    },\n    \"E415\": {\n        \"title\": \"Υπέρβαση μεγέθους αιτήματος\",\n        \"message\": \"Το μέγεθος του αιτήματος είναι μεγαλύτερο από αυτό που επιτρέπει ή μπορεί να επεξεργαστεί ο διακομιστής.\"\n    },\n    \"E416\": {\n        \"title\": \"Requested Range Not Satisfiable\",\n        \"message\": \"The client has asked for a portion of the file, but the server cannot supply that portion.\"\n    },\n    \"E417\": {\n      \"title\": \"Expectation Failed\",\n      \"message\": \"The server cannot meet the requirements of the Expect request-header field.\"\n    },\n    \"E422\": {\n      \"title\": \"Μη έγκυρο αρχείο\",\n      \"message\": \"Ο διακομιστής δεν μπορεί να επεξεργαστεί τα δεδομένα του αρχείου.\"\n    },\n    \"E429\": {\n        \"title\": \"Μεγάλος αριθμός αιτήσεων\",\n        \"message\": \"Έχουν πραγματοποιηθεί πάρα πολλές αιτήσεις προς τον διακομιστή. Δοκιμάστε ξανά αργότερα.\"\n    },\n    \"E496\": {\n        \"title\": \"Έλλειψη πιστοποιητικού\",\n        \"message\": \"Ένα έγκυρο πιστοποιητικό είναι απαραίτητο για την ολοκλήρωση του αιτήματος.\"\n    },\n    \"E498\": {\n        \"title\": \"Λήξη κλειδιού πιστοποίησης\",\n        \"message\": \"Το κλειδί πιστοποίησης έχει λήξει ή δεν είναι έγκυρο.\"\n    },\n    \"E499\": {\n        \"title\": \"Απαιτείται κλειδί πιστοποίησης\",\n        \"message\": \"Ένα έγκυρο κλειδί πιστοποίσης είναι απαραίτητο για να ολοκληρωθεί η ενέργεια.\",\n        \"1\": {\n            \"title\": \"Μη έγκυρος πελάτης πιστοποίησης\",\n            \"message\": \"Ο επιλεγμένος πελάτης πιστοποίησης δεν επιτρέπεται να πραγματοποιήσει την διαδικασία πιστοποιήσης με τις ορισμένες παραμέτρους.\"\n        },\n        \"2\": {\n            \"title\": \"Εσωτερικό σφάλμα πιστοποίησης\",\n            \"message\": \"Το τελευταίο στάδιο της διαδικασίας πιστοποίησης δεν μπορεί να ολοκληρωθεί λόγω εσωτερικού σφάλματος.\"\n        }\n    },\n    \"E500\": {\n        \"title\": \"Εσωτερικό σφάλμα διακομιστή\",\n        \"message\": \"Ο διακομιστής αντιμετώπισε ένα εσωτερικό σφάλμα και δεν μπόρεσε να ολοκληρώσει το αίτημά σας.\"\n    },\n    \"E501\": {\n        \"title\": \"Αδυναμία ολοκλήρωσης αιτήματος\",\n        \"message\": \"Ο διακομιστής είτε δεν αναγνωρίζει τη μέθοδο αιτήματος, είτε δεν έχει τη δυνατότητα να εκπληρώσει το αίτημα.\"\n    },\n    \"E502\": {\n        \"title\": \"Μη έγκυρη απάντηση\",\n        \"message\": \"Ο διακομιστής λειτούργησε ως πύλη ή διακομιστής μεσολάβησης και έλαβε μια μη έγκυρη απάντηση.\"\n    },\n    \"E503\": {\n        \"title\": \"Μη διαθέσιμη υπηρεσία\",\n        \"message\": \"Ο διακομιστής δεν είναι διαθέσιμος αυτήν τη στιγμή (επειδή είναι υπερφορτωμένος ή εκτός λειτουργίας για συντήρηση).\"\n    }\n};\n/* tslint:enable max-line-length */\n/* tslint:enable quotemark */\n\n","import {en} from './error.en';\nimport {el} from './error.el';\n\nexport const ERROR_LOCALES: { [key: string]: any } = {\n    el: el,\n    en: en\n};\n","import { ErrorHandler, ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport {\n    ErrorBaseComponent,\n    HttpErrorComponent\n} from './components/error-base/error-base.component';\nimport { ErrorRoutingModule } from './error.routing';\nimport { ErrorService, ErrorModalComponent } from './error.service';\nimport { ErrorsHandler } from './error.handler';\nimport { environment } from '../environments/environment';\n\nimport {ERROR_LOCALES} from './i18n';\nimport { NetworkChangedErrorComponent } from './components/network-changed-error/network-changed-error.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        TranslateModule,\n        ErrorRoutingModule\n    ],\n    providers: [\n\n    ],\n    declarations: [\n        ErrorBaseComponent,\n        HttpErrorComponent,\n        ErrorModalComponent,\n        NetworkChangedErrorComponent\n    ],\n    exports: [\n        ErrorBaseComponent,\n        HttpErrorComponent\n    ],\n    entryComponents: [\n        ErrorModalComponent\n    ]\n})\nexport class ErrorModule {\n\n    constructor( @Optional() @SkipSelf() parentModule: ErrorModule, private _translateService: TranslateService) {\n        if (parentModule == null) { // ErrorModule is imported by AppModule\n            environment.languages.forEach( language => {\n                if (ERROR_LOCALES.hasOwnProperty(language)) {\n                    this._translateService.setTranslation(language, ERROR_LOCALES[language], true);\n                }\n            });\n        }\n    }\n\n    static forRoot(): ModuleWithProviders<ErrorModule> {\n        return {\n            ngModule: ErrorModule,\n            providers: [\n                ErrorService,\n                {\n                    provide: ErrorHandler,\n                    useClass: ErrorsHandler,\n                }\n            ]\n        };\n    }\n\n}\n","import { SHA1 } from 'crypto-js';\n/**\n * Returns a string which represents a key generated by @asyncMemoize() or @memoize() decorators\n * @param target - The target object\n * @param propertyKey - A string which represents the method that is going to be called\n * @param args - An optional param array of arguments\n * @example\n * // calculate memoized key for myObject.getFunc1(100, true)\n * const key = getMemoizeKey(myObject, 'getFunc1', 100, true);\n */\nexport function getMemoizeKey(target: any, propertyKey: string, ...args: any[]) {\n    let computedHash;\n    // get arguments hash\n    if (args.length) {\n        computedHash = SHA1(JSON.stringify(args));\n    }\n    let targetConstructor = target.constructor.name;\n    // validate static function\n    if (targetConstructor === 'Function') {\n        targetConstructor = target.prototype.constructor.name;\n    }\n    if (computedHash) {\n        // add computed hash to key\n        return`${targetConstructor}.${propertyKey}.${computedHash}`;\n    } else {\n        return `${targetConstructor}.${propertyKey}`;\n    }\n}\n\n/**\n * Removes a key-value pair generated by @asyncMemoize() or @memoize() decorators\n * @param target - The target object\n * @param propertyKey - A string which represents the method that is going to be called\n * @param args - An optional param array of arguments\n * @example\n * // removes memoized key for myObject.getFunc1(100, true)\n * removeMemoizeKey(myObject, 'getFunc1', 100, true);\n */\nexport function removeMemoizeKey(target: any, propertyKey: string, ...args: any[]) {\n    // get key\n    const key = getMemoizeKey(target, propertyKey, ...args);\n    // remove item from storage\n    sessionStorage.removeItem(key);\n}\n\n/**\n * Use @asyncMemoize() decorator to memoize the result of an async method to storage\n * @example\n * class TestClass1 {\n *     @asyncMemoize()\n *     async getItems() {\n *         return ['apple', 'lemon', 'orange'];\n *     }\n * }\n */\nexport function asyncMemoize() {\n    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n        // validate that descriptor.value is a function\n        if (typeof descriptor.value !== 'function') {\n            throw new Error('Invalid decorator descriptor. @memoize() decorator should be applied in class methods.');\n        }\n        // get original descriptor value (which is a method)\n        const func = descriptor.value;\n        // change descriptor\n        // important: use standard function to avoid error\n        // The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5.\n        descriptor.value = function() {\n            const args = Array.from(arguments);\n            const thisArg = this;\n            return new Promise(function(resolve, reject) {\n                const key = getMemoizeKey(target, propertyKey, ...args);\n                // try to get item from storage\n                const valueString = sessionStorage.getItem(key);\n                // parse value string\n                if (valueString) {\n                    try {\n                        return resolve(JSON.parse(valueString));\n                    } catch (err) {\n                        return reject(err);\n                    }\n                }\n                // call method\n                return func.apply(thisArg, args).then(function(value) {\n                    // set item to storage\n                    if (typeof value !== 'undefined') {\n                        sessionStorage.setItem(key, JSON.stringify(value));\n                    }\n                    // and finally return result\n                    return resolve(value);\n                }).catch(reason => {\n                    return reject(reason);\n                });\n            });\n\n        };\n    };\n}\n\n/**\n * Use @memoize() decorator to memoize the result of an async method to storage\n * @example\n * class TestClass1 {\n *     @memoize()\n *     getItems() {\n *         return ['apple', 'lemon', 'orange'];\n *     }\n * }\n */\nexport function memoize() {\n    return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n        // validate that descriptor.value is a function\n        if (typeof descriptor.value !== 'function') {\n            throw new Error('Invalid decorator descriptor. @memoize() decorator should be applied in class methods.');\n        }\n        // get original descriptor value (which is a method)\n        const func = descriptor.value;\n        // change descriptor\n        descriptor.value = function() {\n            const key = getMemoizeKey(target, propertyKey, ...arguments);\n            // try to get item from storage\n            const valueString = sessionStorage.getItem(key);\n            if (valueString) {\n                return JSON.parse(valueString);\n            }\n            // call method\n            const value = func.apply(this, arguments);\n            // set item to session storage\n            sessionStorage.setItem(key, JSON.stringify(value));\n            // and finally return result\n            return value;\n        };\n    };\n}\n","class SessionStorageHelperService {\n    clear() {\n        const keys = Object.keys(sessionStorage);\n        // get private values starting with double underscore\n        const restore = keys.filter((key) => {\n            return /^__/.test(key);\n        }).reduce((previous, current) => {\n            previous[current] = sessionStorage.getItem(current);\n            return previous;\n        }, {});\n        // clear session storage\n        sessionStorage.clear();\n        // restore private values\n        Object.keys(restore).forEach((key) => {\n            sessionStorage.setItem(key, restore[key])\n        });\n    }\n    flush() {\n        sessionStorage.clear();\n    }\n}\n\nexport {\n    SessionStorageHelperService\n}","\n// shared module\n\nexport { ConfigurationService,\n    APP_CONFIGURATION,\n    ApplicationConfiguration,\n    ApplicationSettingsConfiguration,\n    LocalizationSettingsConfiguration,\n    RemoteSettingsConfiguration,\n    SettingsConfiguration} from './shared/services/configuration.service';\nexport { ModalService } from './shared/services/modal.service';\nexport { DialogComponent, DIALOG_BUTTONS } from './shared/components/modal/dialog.component';\nexport { MsgboxComponent } from './shared/components/msgbox/msgbox.component';\nexport { SpinnerComponent } from './shared/components/modal/spinner.component';\nexport { ToastComponent } from './shared/components/modal/toast.component';\nexport { ToastService } from './shared/services/toast.service';\nexport { GradeScale, GradeScaleService, GradePipe, round } from './shared/services/grade-scale.service';\nexport { LoadingService } from './shared/services/loading.service';\nexport { LocalizedDatePipe } from './shared/pipes/localized-date.pipe';\nexport { SemesterPipe } from './shared/pipes/semester.pipe';\nexport { TemplatePipe } from './shared/pipes/template.pipe';\nexport { TruncatePipe } from './shared/pipes/truncate.pipe';\nexport { NgVarDirective } from './shared/directives/ngvar.directive';\nexport { IfLocationDirective } from './shared/directives/if-location.directive';\nexport { IfServiceDirective } from './shared/directives/if-service.directive';\nexport { LocalizedAttributesPipe} from './shared/pipes/localized-attributes.pipe';\nexport { SharedModule } from './shared/shared.module';\nexport { UserActivityService, UserActivityEntry } from './shared/services/user-activity/user-activity.service';\nexport { SessionUserActivityService } from './shared/services/session-user-activity/session-user-activity.service';\nexport {\n  PersistentUserActivityService\n} from './shared/services/persistent-user-activity/persistent-user-activity.service';\nexport { DiagnosticsService, ApiServerStatus } from './shared/services/diagnostics.service';\nexport { AppSidebarService, AppSidebarNavigationItem, SIDEBAR_LOCATIONS } from './shared/services/app-sidebar.service';\nexport { AppGuestSidebarService, GUEST_SIDEBAR_LOCATIONS } from './shared/services/app-guest-sidebar.service';\nexport { UserStorageService } from './shared/services/user-storage';\nexport { RequestTypesService, RequestTypeItem } from './shared/services/request-types/request-types.service';\nexport { LocalUserStorageService, SessionUserStorageService} from './shared/services/browser-storage.service';\nexport { FallbackUserStorageService, UserStorageInterface, USER_STORAGE } from './shared/services/fallback-user-storage.service';\nexport { ExportSpreadsheetService } from './shared/services/export-spreadsheet.service';\nexport { AppEventService } from './shared/services/app-event.service';\nexport { CertificateService } from './shared/services/certificate-service/certificate-service.service';\nexport { SignatureInfoComponent } from './shared/components/signature-info/signature-info.component'\n// events module\nexport { ServerEvent, SERVER_EVENT_SUBSCRIBERS, SERVER_EVENT_CHILD_SUBSCRIBERS, ServerEventService,\n  ServerEventSubscriber, ServerEventServiceStatus } from './events/services/server-event.service';\nexport { ServerEventModule } from './events/server-event.module';\n// error module\nexport { ErrorBaseComponent, HttpErrorComponent } from './error/components/error-base/error-base.component';\nexport { ApiError, ProfileNotFoundError, RequestNotFoundError, UserProfileNotFoundError } from './error/error.custom';\nexport { ErrorsHandler } from './error/error.handler';\nexport { ErrorService } from './error/error.service';\nexport { ErrorRoutingModule } from './error/error.routing';\nexport { ErrorModule } from './error/error.module';\nexport { ReferrerRouteService, ReferrerRouteParams } from './shared/services/referrer-route.service';\n\n// auth module\nexport { LoginComponent } from './auth/components/login/login.component';\nexport { LogoutComponent } from './auth/components/logout/logout.component';\nexport { LocationPermission,\n  LocationPermissionAccount, LocationPermissionTarget } from './auth/guards/auth.guard.interfaces';\nexport * from './auth/guards/auth.guard';\nexport * from './auth/guards/auth.guard.interfaces';\nexport { AuthRoutingModule } from './auth/auth.routing';\nexport { AuthCallbackComponent } from './auth/auth-callback.component';\nexport { RefreshTokenComponent } from './auth/components/refresh/refresh-token.component';\nexport * from './auth/auth.module';\nexport { UserService } from './auth/services/user.service';\nexport { AuthCallbackResponse, AuthenticationService } from './auth/services/authentication.service';\nexport { ActivatedUser } from './auth/services/activated-user.service';\nexport {XmasLoadingService} from './shared/services/xmas-loading.service';\nexport {XmasSpinnerComponent} from './shared/components/modal/xmas-spinner.component';\n// helpers\nexport { getMemoizeKey, asyncMemoize, memoize, removeMemoizeKey } from './helpers/decorators';\nexport { SessionStorageHelperService } from './helpers/session-storage-helper.service';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i2.ConfigurationService","i1.UserService","i3","i2.ErrorService","i3.ConfigurationService","i4.UserService","i1.ActivatedUser","i2.AuthGuard","i1.DiagnosticsService","i1.UserStorageService","TranslationChangeDetector","en","el","i2.CertificateService","i1.ConfigurationService","i4.ActivatedUser","i2.AuthenticationService","i2.UserService","i3.ErrorService","i4.AuthenticationService","i4","routes","i5.ActivatedUser","i1.ErrorService"],"mappings":"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"}