{"version":3,"file":"main.js","mappings":"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irB,MAAT,GAAkBA,MAAlB;MACH,CAJD;IAKH,CArDD;;IAuDA,SAAStN,qBAAT,GAAiC;MAC7B,IAAI;QACA,OAAO,IAAIsM,YAAJ,EAAP;MACH,CAFD,CAEE,OAAOxf,GAAP,EAAY,CACb;;MAED,OAAO,IAAIggB,aAAJ,EAAP;IACH;;IAED,SAAShN,YAAT,CAAsB2N,EAAtB,EAA0B;MACtB,OAAO,YAAW;QACd,IAAIxO,EAAE,CAACzO,aAAP,EAAsB;UAClBid,EAAE,CAACnP,KAAH,CAASnlB,OAAT,EAAkBuhB,KAAK,CAACwB,SAAN,CAAgB5S,KAAhB,CAAsB4R,IAAtB,CAA2BqD,SAA3B,CAAlB;QACH;MACJ,CAJD;IAKH;EACJ;;EAED,OAAO1Z,QAAP;AACH,CAl4DD;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AC9OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.constants.ts","./src/app/app.module.ts","./src/app/capacitor/cdq/cdq.ts","./src/app/components/navigation/navigation.component.ts","./src/app/loader-provider/loader.provider.ts","./src/app/services/alert/alert.service.ts","./src/app/services/environment/env.service.provider.ts","./src/app/services/environment/env.service.ts","./src/app/services/googleanalytics/ga.service.ts","./src/app/services/keycloak/interfaces/keycloak-event.ts","./src/app/services/keycloak/keycloak-ionic.service.ts","./src/app/services/keycloak/keycloak-social-login.service.ts","./src/app/services/keycloak/keycloak.initializer.ts","./src/app/services/keycloak/keycloak.interceptor.service.ts","./src/app/services/local-notifications/notifications.service.ts","./src/app/services/navigation/navigation.service.ts","./src/app/services/shared/shared.service.ts","./src/environments/environment.ts","./src/environments/git-version.ts","./src/main.ts","./keycloak-ionic/keycloak.js","./node_modules/@ionic-super-tabs/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/@ionic/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/@ionic/pwa-elements/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import {NgModule} from '@angular/core';\nimport {NoPreloading, RouterModule, Routes} from '@angular/router';\n\nconst routes: Routes = [\n\t{\n\t\tpath: '',\n\t\tredirectTo: 'offline',\n\t\tpathMatch: 'full'\n\t},\n\t{\n\t\tpath: 'offline',\n\t\tloadChildren: () => import('./offline/offline.module').then((m) => m.OfflinePageModule),\n\t},\n\t{\n\t\tpath: 'clients',\n\t\tloadChildren: () => import('./clients/clients.module').then(m => m.ClientsPageModule),\n\t},\n\t{\n\t\tpath: 'client-offer-detail/:id',\n\t\tloadChildren: () => import('./client-research/client-offer-detail/client-offer-detail.module').then(m => m.ClientOfferDetailPageModule)\n\t},\n\t{\n\t\tpath: 'client-vendor-detail/:id',\n\t\tloadChildren: () => import('./client-research/client-vendor-detail/client-vendor-detail.module').then(m => m.ClientVendorDetailPageModule)\n\t},\n\t{\n\t\tpath: 'client-vendor-offers',\n\t\tloadChildren: () => import('./client-research/client-vendor-offers/client-vendor-offers.module').then(m => m.ClientVendorOffersPageModule)\n\t},\n\t{\n\t\tpath: 'client-research',\n\t\tloadChildren: () =>\n\t\t\timport('./client-research/client-offer-detail/client-offer-detail.module').then((m) => m.ClientOfferDetailPageModule)\n\t},\n];\n\n@NgModule({\n\timports: [\n\t\tRouterModule.forRoot(routes, {\n\t\t\tpreloadingStrategy: NoPreloading,\n\t\t\tscrollPositionRestoration: 'enabled',\n\t\t\tenableTracing: true,\n\t\t\trelativeLinkResolution: 'legacy'\n\t\t})\n\t],\n\texports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import {Component, ElementRef, OnDestroy, ViewChild} from '@angular/core';\nimport {Platform, ToastController} from '@ionic/angular';\nimport {StatusBar} from '@ionic-native/status-bar/ngx';\nimport {SplashScreen} from '@capacitor/splash-screen';\nimport {Router} from '@angular/router';\nimport {PublicService, SecurityService} from '@cdq/api';\nimport {Subscription} from 'rxjs';\nimport {Network} from '@capacitor/network';\nimport * as LiveUpdates from '@capacitor/live-updates';\nimport {EnvService} from './services/environment/env.service';\nimport {GaService} from './services/googleanalytics/ga.service';\nimport {KeycloakIonicService} from './services/keycloak/keycloak-ionic.service';\nimport {AlertService} from \"./services/alert/alert.service\";\nimport {CDQCAPPlugin} from \"./capacitor/cdq/cdq\";\nimport {gitVersion} from \"../environments/git-version\";\ndeclare const gtag: Function;\ndeclare let ga: Function;\ndeclare let dT_;\n\n@Component({\n\tselector: 'app-root',\n\ttemplateUrl: 'app.component.html',\n\tstyleUrls: ['app.component.scss']\n})\nexport class AppComponent implements OnDestroy {\n\tprivate popupOpenSubscription: Subscription;\n\tprivate popupCloseSubscription: Subscription;\n\tprivate initializeSubscription: Subscription;\n\tprivate statusChangeSubscription: Subscription;\n\tprivate revokeChoiceSubscription: Subscription;\n\tprivate noCookieLawSubscription: Subscription;\n\n\tshowSplash = true;\n\tuserRole: 'VENDOR' | 'CLIENT' | 'OFFLINE' = 'OFFLINE';\n\n\tofferId = '209';\n\n\trouterHidden = true;\n\t@ViewChild('splash', {static: false})\n\tsplash: ElementRef;\n\n\tisLoggedIn = false;\n\tnotifContent = '';\n\tcookieEnabled = false;\n\tappOpened = false;\n\n\tconstructor(\n\t\tpublic platform: Platform,\n\t\tprivate statusBar: StatusBar,\n\t\tpublic router: Router,\n\t\tprivate securityService: SecurityService,\n\t\tprivate toastCtrl: ToastController,\n\t\tprivate keycloak: KeycloakIonicService,\n\t\tprivate envService: EnvService,\n\t\tprivate ga: GaService,\n\t\tprivate publicService: PublicService,\n\t\tprivate alertService: AlertService\n\t) {\n\t\tthis.checkConnection().then((status) => {\n\t\t\ttry {\n\t\t\t\tif (status) {\n\t\t\t\t\tthis.checkApi().then((value) => {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\tthis.initializeApp();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.log('[app] Api connection error, Maintenance')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.router.navigateByUrl('/not-found');\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log('[app] Get network connection error', error);\n\t\t\t}\n\t\t})\n\t}\n\n\tcheckConnection(): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tNetwork.getStatus().then((status) => {\n\t\t\t\tconsole.log('[app] Network status', status);\n\t\t\t\tconsole.log('[app] Status connected ?', status.connected)\n\t\t\t\tif (status.connected) {\n\t\t\t\t\tresolve(status.connected);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(false);\n\t\t\t\t}\n\t\t\t}).catch(e => {\n\t\t\t\treject(e);\n\t\t\t})\n\t\t})\n\t}\n\n\tcheckApi(): Promise {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.publicService.checkConnection().forEach(r => {\n\t\t\t\tconsole.log('[app] Checking connection with API', r);\n\t\t\t\tresolve(r);\n\t\t\t}).catch(e => {\n\t\t\t\tresolve(e);\n\t\t\t})\n\t\t})\n\t}\n\n\tasync configureAndUpdate() {\n\t\tif (this.platform.platforms().includes('mobile')) {\n\t\t\tif (this.envService.automaticUpdateEnabled) {\n let currentConfig = await LiveUpdates.getConfig();\n console.log('Live Chann: ', currentConfig.channel);\n console.log('Live AppId: ', currentConfig.appId);\n await LiveUpdates.setConfig({\n channel: this.envService.ionicDeployChannel,\n appId: '9be1e97e',\n });\n console.log('Live Chann: ', currentConfig.channel);\n console.log('Live AppId: ', currentConfig.appId);\n\n const result = await LiveUpdates.sync();\n // If active path has changed, then a new live update was downloaded\n console.log('Live Check Sync Result if available', result)\n if (result.activeApplicationPathChanged) {\n console.log('reloading app ', result)\n this.runUpdate();\n await LiveUpdates.reload();\n }\n\t\t\t}\n\t\t}\n\t}\n\n\tasync runUpdate() {\n\t\tthis.alertService.loadWithMessage('Mise à jour, veuillez patienter ...')\n\t}\n\n\tinitializeApp(): void {\n\n\t\tconsole.log(\n\t\t\t\"OLL - starting App in version: \" + gitVersion.branch + \"( \" + gitVersion.commit + \". tag: \" + gitVersion.tag + \")\"\n\t\t);\n\n\t\t// Init Google Analytics\n\t\tthis.ga.initGa();\n\t\tthis.platform.ready().then(() => {\n\n\t\t\t//load firebaseID\n\t\t\tif (this.platform.platforms().includes('mobile') && !this.platform.platforms().includes('mobileweb')) {\n\t\t\t\ttry {\n\t\t\t\t\tCDQCAPPlugin.firebaseInstallationId().then((res) => {\n\t\t\t\t\t\tconsole.log('[app] firebase InApp Installation Id: ', res.firebaseInstallationId);\n\t\t\t\t\t})\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log('[app] unable to load firebase installation id')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNetwork.addListener('networkStatusChange', (status) => {\n\t\t\t\tconsole.log('[app] Network status changed', status);\n\t\t\t\tif (!status.connected) {\n\t\t\t\t\tthis.toastCtrl.create({\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t\theader: 'Erreur',\n\t\t\t\t\t\tmessage: 'La communication avec le service est impossible. Vérifiez votre connexion.',\n\t\t\t\t\t\tcolor: 'danger',\n\t\t\t\t\t\tduration: 3000,\n\t\t\t\t\t\tbuttons: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tside: 'end',\n\t\t\t\t\t\t\t\ttext: 'OK',\n\t\t\t\t\t\t\t\trole: 'cancel',\n\t\t\t\t\t\t\t\thandler: () => {\n\t\t\t\t\t\t\t\t\tconsole.log('[app] Cancel');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}).then((toast) => {\n\t\t\t\t\t\ttoast.present();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('[app] Connection is OK');\n\t\t\t\t}\n\t\t\t});\n\n\n\t\t\t// if (this.platform.platforms().includes('desktop') || this.platform.platforms().includes('mobileweb')) {\n\t\t\t// \tif (!this.ccService.hasAnswered()) {\n\t\t\t// \t\tthis.ccService.open();\n\t\t\t// \t}\n\t\t\t// }\n\n\t\t\t// this.popupOpenSubscription = this.ccService.popupOpen$.subscribe(() => {\n\t\t\t// \t// you can use this.ccService.getConfig() to do stuff...\n\t\t\t// });\n\n\t\t\t// this.popupCloseSubscription = this.ccService.popupClose$.subscribe(() => {\n\t\t\t// \t// you can use this.ccService.getConfig() to do stuff...\n\t\t\t// });\n\n\t\t\t// this.initializeSubscription = this.ccService.initialize$.subscribe((event: NgcInitializeEvent) => {\n\t\t\t// \t// you can use this.ccService.getConfig() to do stuff...\n\t\t\t// });\n\n\t\t\t// this.statusChangeSubscription = this.ccService.statusChange$.subscribe((event: NgcStatusChangeEvent) => {\n\t\t\t// \t// you can use this.ccService.getConfig() to do stuff...\n\t\t\t// });\n\n\t\t\t// this.revokeChoiceSubscription = this.ccService.revokeChoice$.subscribe(() => {\n\t\t\t// \t// you can use this.ccService.getConfig() to do stuff...\n\t\t\t// });\n\n\t\t\t// this.noCookieLawSubscription = this.ccService.noCookieLaw$.subscribe((event: NgcNoCookieLawEvent) => {\n\t\t\t// \t// you can use this.ccService.getConfig() to do stuff...\n\t\t\t// });\n\n\t\t\tthis.keycloak.isLoggedIn().then((connected) => {\n\t\t\t\ttry {\n\t\t\t\t\tif (connected) {\n\t\t\t\t\t\tthis.isLoggedIn = true;\n\t\t\t\t\t\tthis.securityService.apiV1SecurityLoadGet().forEach((r) => {\n\t\t\t\t\t\t\tthis.userRole = r.result.userType;\n\t\t\t\t\t\t\tif (this.platform.platforms().includes('mobile')) {\n\t\t\t\t\t\t\t\tthis.statusBar.styleDefault();\n\t\t\t\t\t\t\t\tSplashScreen.hide({\n\t\t\t\t\t\t\t\t\tfadeOutDuration: 3000\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.platform.platforms().includes('mobile')) {\n\t\t\t\t\t\t\tthis.statusBar.styleDefault();\n\t\t\t\t\t\t\tSplashScreen.hide({\n\t\t\t\t\t\t\t\tfadeOutDuration: 3000\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.log('[app] error while initlizing app', e);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//google analytics handle\n\t\t\t// this.router.events.subscribe((event) => {\n\t\t\t// \ttry {\n\t\t\t// \t\tif (event instanceof NavigationEnd) {\n\t\t\t// \t\t\tga('set', 'page', event.urlAfterRedirects);\n\t\t\t// \t\t\tga('send', 'pageview');\n\t\t\t// \t\t}\n\t\t\t// \t} catch (e) {\n\t\t\t// \t\tconsole.log('error while setting analytics events', e);\n\t\t\t// \t}\n\t\t\t// });\n\n\t\t\tconsole.log('[app] deployment config update ', this.envService.ionicDeployChannel);\n\t\t\tthis.configureAndUpdate();\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.popupOpenSubscription.unsubscribe();\n\t\tthis.popupCloseSubscription.unsubscribe();\n\t\tthis.initializeSubscription.unsubscribe();\n\t\tthis.statusChangeSubscription.unsubscribe();\n\t\tthis.revokeChoiceSubscription.unsubscribe();\n\t\tthis.noCookieLawSubscription.unsubscribe();\n\t}\n}\n","export const appBaseUri = \"cdqapp://\";\nexport const appDefaultConnectedRoute = \"/clients\";\nexport const appDefaultOfflineUrl = '/offline/home';\nexport const appDefaultOfflineUrlMobile = '/offline/starter';\n\n","import { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuseStrategy } from '@angular/router';\nimport { IonicModule, IonicRouteStrategy } from '@ionic/angular';\nimport { StatusBar } from '@ionic-native/status-bar/ngx';\nimport { AppComponent } from './app.component';\nimport { AppRoutingModule } from './app-routing.module';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { Configuration } from '@cdq/api';\nimport { environment } from '../environments/environment';\nimport { FormsModule } from '@angular/forms';\nimport { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';\nimport { Device } from '@ionic-native/device/ngx';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { ChartsModule } from 'ng2-charts';\nimport { SuperTabsModule } from '@ionic-super-tabs/angular';\nimport { AgmCoreModule } from '@agm/core';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport * as Sentry from '@sentry/angular';\nimport { CommonModule } from '@angular/common';\nimport { Ng2SearchPipeModule } from 'ng2-search-filter';\nimport {EnvService} from './services/environment/env.service';\nimport {EnvServiceProvider} from './services/environment/env.service.provider';\nimport {KeycloakIonicService} from './services/keycloak/keycloak-ionic.service';\nimport {initializer} from './services/keycloak/keycloak.initializer';\nimport {KeycloakInterceptorService} from './services/keycloak/keycloak.interceptor.service';\nimport {NavigationComponent} from './components/navigation/navigation.component';\nimport {SwiperModule} from 'swiper/angular';\n\n\n@NgModule({\n declarations: [\n AppComponent,\n NavigationComponent,\n ],\n imports: [\n SwiperModule,\n CommonModule,\n SuperTabsModule.forRoot(),\n ChartsModule,\n BrowserModule,\n IonicModule.forRoot(),\n AppRoutingModule,\n HttpClientModule,\n FormsModule,\n ServiceWorkerModule.register('combined-sw.js', {\n enabled: environment.production,\n }),\n AgmCoreModule.forRoot({\n apiKey: 'AIzaSyAAr8z3OjnqnW5Wqp-r4eBWizbu6eayxk8',\n libraries: ['places'],\n }),\n BrowserAnimationsModule,\n MatDatepickerModule,\n MatInputModule,\n Ng2SearchPipeModule,\n ],\n providers: [\n EnvServiceProvider,\n {\n provide: ErrorHandler,\n useValue: Sentry.createErrorHandler({\n logErrors: true,\n showDialog: false,\n }),\n },\n Device,\n BarcodeScanner,\n StatusBar,\n { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: KeycloakInterceptorService,\n multi: true,\n },\n {\n provide: KeycloakIonicService,\n },\n {\n provide: Configuration,\n useFactory: (envService: EnvService) => {\n console.log('[app module] apiUrl : ', envService.apiUrl);\n const configBase = {\n withCredentials: true,\n basePath: envService.apiUrl,\n };\n return new Configuration(configBase);\n },\n deps: [EnvService],\n multi: false,\n },\n {\n provide: APP_INITIALIZER,\n useFactory: initializer,\n deps: [EnvService, KeycloakIonicService],\n multi: true,\n },\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { registerPlugin } from '@capacitor/core';\n\nexport interface CDQPlugin {\n firebaseInstallationId(): Promise<{ firebaseInstallationId: string }>;\n}\n\n//const CDQCAPPlugin = registerPlugin('CDQPlugin');\n//const CDQPlugin = registerPlugin('CDQPlugin');\nconst CDQCAPPlugin = registerPlugin('CDQPlugin');\nexport { CDQCAPPlugin }\n","\nimport {ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport { SecurityService } from \"@cdq/api\";\nimport { MenuController, Platform } from \"@ionic/angular\";\nimport { Router } from \"@angular/router\";\nimport {KeycloakIonicService} from 'src/app/services/keycloak/keycloak-ionic.service';\nimport {NavigationService} from 'src/app/services/navigation/navigation.service';\n\n@Component({\n selector: 'app-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.scss'],\n})\n\n\nexport class NavigationComponent implements OnInit {\n\n constructor(\n public navigationService: NavigationService,\n private keycloakService: KeycloakIonicService,\n private securityService: SecurityService,\n private menu: MenuController,\n private router: Router,\n public platform: Platform,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n this.navigationService.setChangeDetector(this.changeDetectorRef);\n this.refresh();\n }\n\n refresh() {\n this.navigationService.refresh(false, 'OFFLINE');\n }\n\n logout(): void {\n this.keycloakService.logout()\n }\n\n login(): void {\n this.keycloakService.login()\n }\n\n async closeMenu(): Promise {\n await this.menu.close('menu')\n }\n\n backToHome() {\n if (this.platform.platforms().includes('desktop'))\n this.router.navigateByUrl('/offline/home-web').catch(e => {\n console.log(e)\n })\n else\n this.router.navigateByUrl('/').catch(e => {\n console.log(e)\n })\n this.menu.close('menu').catch(e => {\n console.log(e)\n })\n }\n\n navigate(url: string) {\n console.log(url)\n this.router.navigateByUrl(url, {\n replaceUrl: true,\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport { LoadingController } from '@ionic/angular';\nimport { Subject } from 'rxjs';\nimport { concatMap, distinctUntilChanged } from 'rxjs/operators';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoaderProvider {\n\n private loadingRequestsStream$: Subject;\n private loaderElement: HTMLIonLoadingElement;\n private lazyDismissTimer: any;\n\n constructor(private loadingCtrl: LoadingController) {\n this.initValues();\n }\n\n private initValues() {\n this.loaderElement = null;\n this.lazyDismissTimer = null;\n this.loadingRequestsStream$ = new Subject();\n this.loadingRequestsStream$.pipe(\n distinctUntilChanged(),\n concatMap(loader =>{\n if (loader) {\n return this.createLoader(loader)\n } else {\n return this.dismissLoader()\n }\n })\n )\n .subscribe(); // we do not worry of unsubscribing here since this service will always be used across the app\n }\n\n public showLoader(msg?: string) {\n this.loadingRequestsStream$.next(msg);\n }\n\n public hideLoader() {\n this.loadingRequestsStream$.next();\n }\n\n private async createLoader(msg?: any):Promise {\n // we check if there is a loader already instantiated:\n if (!this.loaderElement) {\n // if not we create new loader and limit its max duration to 2000ms to prevent blocking loader to hangout indefinitely\n\n this.loaderElement = await this.loadingCtrl.create({\n cssClass: \"load-alert\",\n message: msg || \"Chargement ...\",\n spinner: \"crescent\",\n // duration: 3000\n });\n // its essential we return a Promise here as this is what concatMap will leverage for serialization\n return this.loaderElement.present();\n } else {\n // if loader element exists already we just return resolved promise:\n return Promise.resolve();\n }\n }\n\n private async dismissLoader(): Promise {\n // here we check if loader element exists and that there is no timer running already\n if (this.loaderElement && !this.lazyDismissTimer) {\n // we set the timer\n this.lazyDismissTimer = setTimeout(async () => {\n // after 700ms we dismiss our loader element:\n await this.loaderElement.dismiss();\n // nullify our properties right after dismiss promise fulfilled itself:\n this.loaderElement = null;\n clearTimeout(this.lazyDismissTimer);\n this.lazyDismissTimer = null;\n // still remember to return a promise to let concatMap know it can proceed\n return Promise.resolve();\n }, 700)\n } else {\n // if loader element does not exist or if there is already a timer running - there is nothing to dismiss, we just return empty promise\n return Promise.resolve();\n }\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {AlertController, LoadingController} from '@ionic/angular';\nimport {LoaderProvider} from '../../loader-provider/loader.provider';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AlertService {\n loader: any;\n spinner: any;\n alert: any;\n\n loaderElement: HTMLIonLoadingElement;\n\n constructor(\n public alertController: AlertController,\n public loadingCtrl: LoadingController,\n public loaderProvider: LoaderProvider,\n\n ) { }\n\n async confirmAlert(text: string, btnName?: string, cssClass?: string): Promise {\n const alert = await this.alertController.create({\n cssClass: cssClass || 'alert-basic',\n message: text,\n buttons: [\n {\n text: btnName || 'OK',\n role: 'cancel',\n }\n ]\n })\n await alert.present();\n }\n\n async test(btnName?: string, cssClass?: string): Promise {\n const alert = await this.alertController.create({\n cssClass: cssClass || 'alert-basic',\n message: ``,\n buttons: [\n {\n text: btnName || 'OK',\n role: 'cancel',\n }\n ]\n })\n await alert.present();\n }\n\n async temp(text: string, time: number, cssClass?: string, action?: () => void): Promise {\n const alert = await this.alertController.create({\n cssClass: cssClass || 'alert-basic',\n header: 'Information',\n message: text,\n });\n\n await alert.present();\n\n setTimeout(() => {\n if (action != null) {\n action;\n }\n alert.dismiss();\n }, time);\n }\n\n async closeAlert() {\n this.alert.dismiss();\n }\n\n async infos(\n title: string,\n text: string,\n btnName: string,\n action?: () => void, cssClass?: string\n ): Promise {\n this.alert = await this.alertController.create({\n cssClass: cssClass || 'alert-basic',\n header: title,\n message: text,\n buttons: [\n {\n text: btnName,\n handler: action,\n },\n ],\n });\n await this.alert.present();\n }\n\n async ask(\n title: string,\n text: string,\n btnValid: string,\n actionValid: () => void,\n btnError: string,\n actionError: () => void, cssClass?: string\n ): Promise {\n const alert = await this.alertController.create({\n cssClass: cssClass || 'alert-basic',\n header: title,\n message: text,\n\n buttons: [\n {\n text: btnError,\n role: 'cancel',\n handler: actionError,\n },\n {\n text: btnValid,\n handler: actionValid,\n },\n ],\n });\n await alert.present();\n }\n\n\n\n async confirm(\n title: string,\n text: string,\n btnName: string,\n action: () => void,\n BtnCancelName?: string,\n ): Promise {\n const alert = await this.alertController.create({\n cssClass: 'alert-basic',\n header: title,\n message: text,\n buttons: [\n {\n text: BtnCancelName || 'Retour',\n role: 'cancel',\n handler: () => {\n console.log('Annulé');\n },\n },\n {\n text: btnName,\n handler: action,\n },\n ],\n });\n await alert.present();\n }\n\n async photos(\n btnName: string,\n action: () => void,\n btnName2: string,\n action2: () => void\n ) {\n const alert = await this.alertController.create({\n header: 'Choisir par',\n cssClass: 'alert-basic',\n buttons: [\n {\n text: btnName,\n handler: action,\n },\n {\n text: btnName2,\n handler: action2,\n },\n ],\n });\n await alert.present();\n }\n\n async closeLoader() {\n this.loaderProvider.hideLoader();\n }\n\n async dismissAllPending() {\n this.loaderProvider.hideLoader();\n }\n\n async load(): Promise {\n const pp = new Promise((res, rej) => {\n this.loaderProvider.showLoader();\n res();\n });\n return pp;\n }\n\n loadNoAsync(): Promise {\n this.loaderProvider.showLoader();\n return null;\n }\n\n async loadWithMessage(msg: string): Promise {\n const pp = new Promise((res, rej) => {\n this.loaderProvider.showLoader(msg);\n res();\n });\n return pp;\n }\n\n async success(title: string, text: string) {\n const pp = new Promise((res, rej) => {\n this.loaderProvider.showLoader();\n res();\n });\n return pp;\n }\n\n}\n","import { EnvService } from './env.service';\n\nexport const EnvServiceFactory = () => {\n console.log('[env service provider] init envServiceFactory');\n // Create env\n const env = new EnvService();\n\n // Read environment variables from browser window\n const browserWindow = window || {};\n const browserWindowEnv = browserWindow['__env'] || {};\n\n // Assign environment variables from browser window to env\n // In the current implementation, properties from env.js overwrite defaults from the EnvService.\n // If needed, a deep merge can be performed here to merge properties instead of overwriting them.\n for (const key in browserWindowEnv) {\n if (browserWindowEnv.hasOwnProperty(key)) {\n env[key] = window['__env'][key];\n }\n }\n\n console.log('[env service provider] Env :', env);\n return env;\n};\n\nexport const EnvServiceProvider = {\n provide: EnvService,\n useFactory: EnvServiceFactory,\n deps: [],\n};\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnvService {\n // public apiUrl = 'https://api-features-testing1.testing.commercantsdequartier.com';\n public apiUrl = \"http://localhost:9191\";\n public ionicDeployChannel = '';\n public automaticUpdateEnabled = true;\n public allowDenyUpdate = true;\n public frontCdq = \"https://riverains.ouilovelocal.com\";\n public frontCdqPro = \"https://www.ouilovelocal.com\";\n public keycloak = {\n // url: 'https://sso-testing1.testing.commercantsdequartier.com',\n url: 'http://localhost:8180',\n realm: 'cdq',\n clientId: 'front-app',\n redirectUri: 'cdqapp:/',\n redirectUriBrowser: 'http://localhost:8100'\n };\n\n public firebaseConfig = {\n apiKey: \"AIzaSyBw3JzDseFf2kzqcnZtJxmQmUGzdN9OhNo\",\n authDomain: \"cdmr-demo.firebaseapp.com\",\n projectId: \"cdmr-demo\",\n storageBucket: \"cdmr-demo.appspot.com\",\n messagingSenderId: \"178442545708\",\n appId: \"1:178442545708:web:d3b8a7fb973c6f2d157f89\",\n measurementId: \"G-R7M6HM6YRJ\"\n }\n public GA_TRACKING_ID = 'G-RQX4MBKQ6P';\n public sourceFontTitle = '/assets/fonts/title-font.ttf';\n\n public enableDebug = true;\n public production = false\n public stripePublicKey = \"pk_test_51MEAIaHKAlKPUH91Btqy4kCnmVWHpABthIUKQjcu7sa2ZIxOaZ2Q6mthn85IsQV4icyzpeqCgigVVBIP7eEu2OEc00ZiUHjo4K\"\n\n constructor() { }\n}\n","import {Injectable} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {Platform} from '@ionic/angular';\nimport {EnvService} from '../environment/env.service';\n\ndeclare const gtag: Function;\ndeclare let ga: Function;\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class GaService {\n\tconstructor(\n\t\tprivate envService: EnvService,\n\t\tpublic platform: Platform,\n\t\tprivate router: Router\n\t) { }\n\n\taddGAScript() {\n\t\tconst gtagScript: HTMLScriptElement = document.createElement('script');\n\t\tgtagScript.async = true;\n\t\tgtagScript.src = `https://www.googletagmanager.com/gtag/js?id=${this.envService.GA_TRACKING_ID}`;\n\t\tdocument.head.prepend(gtagScript);\n gtag('js', new Date());\n\t\tgtag('config', this.envService.GA_TRACKING_ID, {\n\t\t\tsend_page_view: false\n\t\t});\n\t}\n\n\taddGAKey() {\n\t\tconst gaScript1 = document.createElement('script');\n\t\tgaScript1.innerText = `window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;ga(\\'create\\', \\'${this\n\t\t\t.envService.GA_TRACKING_ID}\\', \\'auto\\');`;\n\n\t\tconst gaScript = document.createElement('script');\n\t\tgaScript.setAttribute('async', 'true');\n\t\tgaScript.setAttribute('src', 'https://www.google-analytics.com/analytics.js');\n\n\t\tdocument.documentElement.firstChild.appendChild(gaScript1);\n\t\tdocument.documentElement.firstChild.appendChild(gaScript);\n\t}\n\n\tpublic isMobile() {\n\t\treturn (this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) || ((this.platform.platforms().includes(\"android\") ||\n\t\t\tthis.platform.platforms().includes(\"ios\")) && !this.platform.platforms().includes(\"mobileweb\"));\n\t}\n\n\tinitGa(): Promise {\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconsole.log('[ga service] ga test mobile ', this.platform.platforms().includes('mobile'));\n\t\t\tconsole.log('[ga service] ga test mobileweb ', this.platform.platforms().includes('mobileweb'));\n\t\t\tconsole.log('[ga service] ga test desktop ', this.platform.platforms().includes('desktop'));\n\t\t\tif (this.isMobile()) {\n\t\t\t\tconsole.log('[ga service] google analytics: is Mobile, disabled')\n\t\t\t\t/*this.ga.startTrackerWithId(this.envService.GA_TRACKING_ID).then(() => {\n\t\t\t\t\tconsole.log('Google analytics is ready now');\n\t\t\t\t\tthis.ga.setAppVersion('mobile');\n\n\t\t\t\t\tresolve(this.initRoutingEvent('mobile'));\n\t\t\t\t }).catch((e) => {\n\t\t\t\t\tconsole.log('Error starting GoogleAnalytics', e)\n\t\t\t\t\treject(e);\n\t\t\t\t });*/\n\t\t\t} else if (this.platform.platforms().includes('desktop') || this.platform.platforms().includes('mobileweb')) {\n\t\t\t\tconsole.log('[ga service] google analytics: is not Mobile, enabling through script')\n\t\t\t\tthis.addGAScript();\n\t\t\t\tthis.addGAKey();\n\n\t\t\t\tresolve(this.initRoutingEvent('desktop'));\n\t\t\t}\n\t\t})\n\t}\n\n\tinitRoutingEvent(platform: any) {\n\t\t// if(platform == 'desktop') {\n\n\t\t// \tconsole.log('Init router web');\n\n\t\t// \tthis.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {\n\t\t// \t\tgtag('event', 'page_view', {\n\t\t// \t\t\tpage_path: event.urlAfterRedirects\n\t\t// \t\t});\n\t\t// \t\tga('send', 'pageview');\n\n\t\t// \t\tconsole.log('GA router event', event);\n\t\t// \t});\n\t\t// }\n\t\t// else if(platform == 'mobile') {\n\n\t\t// \tconsole.log('Init router mobile');\n\n\t\t// \tthis.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => {\n\t\t// \t\tthis.ga.trackView('pageViewMobile', event.urlAfterRedirects);\n\t\t// \t\tconsole.log('GA router event', event);\n\t\t// \t});\n\t\t// }\n\t}\n}\n","export enum KeycloakEventType {\n /**\n * Called if there was an error during authentication.\n */\n OnAuthError,\n /**\n * Called if the user is logged out\n * (will only be called if the session status iframe is enabled, or in Cordova mode).\n */\n OnAuthLogout,\n /**\n * Called if there was an error while trying to refresh the token.\n */\n OnAuthRefreshError,\n /**\n * Called when the token is refreshed.\n */\n OnAuthRefreshSuccess,\n /**\n * Called when a user is successfully authenticated.\n */\n OnAuthSuccess,\n /**\n * Called when the adapter is initialized.\n */\n OnReady,\n /**\n * Called when the access token is expired. If a refresh token is available the token\n * can be refreshed with updateToken, or in cases where it is not (that is, with implicit flow)\n * you can redirect to login screen to obtain a new access token.\n */\n OnTokenExpired\n}\n\n/**\n * Structure of an event triggered by Keycloak, contains it's type\n * and arguments (if any).\n */\nexport interface KeycloakEvent {\n /**\n * Event type as described at {@link KeycloakEventType}.\n */\n type: KeycloakEventType;\n /**\n * Arguments from the keycloak-js event function.\n */\n args?: any;\n}\n","import {Injectable, NgZone} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport {from, Subject} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport * as Keycloak_ from 'keycloak-ionic';\nimport {ExcludedUrl, ExcludedUrlRegex, KeycloakOptions,} from './interfaces/keycloak-options';\nimport {KeycloakEvent, KeycloakEventType} from './interfaces/keycloak-event';\nimport {ModalController, Platform} from \"@ionic/angular\";\nimport {EnvService} from \"../environment/env.service\";\nimport {NavigationService} from \"../navigation/navigation.service\";\nimport {\n AccountForm, AccountType,\n AddressForm,\n AuthProvider,\n CustomerProfileForm, CustomerProfilService,\n KcTokens, OAuthService, RegisterAccountForm,\n SecurityService,\n VendorProfilService\n} from \"@cdq/api\";\nimport {ActivatedRoute, Router} from \"@angular/router\";\nimport {NotificationsService} from \"../local-notifications/notifications.service\";\nimport {AlertService} from \"../alert/alert.service\";\nimport {SharedService} from \"../shared/shared.service\";\nimport {KeycloakSocialLoginService} from './keycloak-social-login.service';\nimport {Preferences} from '@capacitor/preferences';\nimport * as AppConstants from '../../app.constants';\nimport {appDefaultConnectedRoute} from \"../../app.constants\";\n\nexport const Keycloak = Keycloak_;\ndeclare const gtag: Function;\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KeycloakIonicService {\n\n\n alreadyInit = false;\n\n constructor(\n public platform: Platform,\n private envService: EnvService,\n private navigationService: NavigationService,\n private securityService: SecurityService,\n private router: Router,\n private notificationService: NotificationsService,\n private vendorProfileService: VendorProfilService,\n private ngZone: NgZone,\n private alertService: AlertService,\n private sharedEvent: SharedService,\n private route: ActivatedRoute,\n private keycloakSocialLoginService: KeycloakSocialLoginService,\n private oauthService: OAuthService,\n private clientService: CustomerProfilService,\n private http: HttpClient,\n private modalCtrl: ModalController,\n // private ga: GaService\n ) {\n\n }\n\n private appBaseUri = 'cdqapp';\n\n /**\n * Keycloak-js instance.\n */\n private _instance: Keycloak.KeycloakInstance;\n /**\n * User profile as KeycloakProfile interface.\n */\n private _userProfile: Keycloak.KeycloakProfile;\n /**\n * Flag to indicate if the bearer will not be added to the authorization header.\n */\n private _enableBearerInterceptor = false;\n /**\n * When the implicit flow is choosen there must exist a silentRefresh, as there is\n * no refresh token.\n */\n private _silentRefresh = false;\n /**\n * Indicates that the user profile should be loaded at the keycloak initialization,\n * just after the login.\n */\n private _loadUserProfileAtStartUp = false;\n /**\n * The bearer prefix that will be appended to the Authorization Header.\n */\n private _bearerPrefix = '';\n /**\n * Value that will be used as the Authorization Http Header name.\n */\n private _authorizationHeaderName = '';\n /**\n * The excluded urls patterns that must skip the KeycloakBearerInterceptor.\n */\n private _excludedUrls: ExcludedUrlRegex[] = [];\n /**\n * Observer for the keycloak events\n */\n private _keycloakEvents$: Subject = new Subject();\n\n /**\n * Binds the keycloak-js events to the keycloakEvents Subject\n * which is a good way to monitor for changes, if needed.\n *\n * The keycloakEvents returns the keycloak-js event type and any\n * argument if the source function provides any.\n */\n private bindsKeycloakEvents(): void {\n this._instance.onAuthError = (errorData) => {\n this._keycloakEvents$.next({\n args: errorData,\n type: KeycloakEventType.OnAuthError,\n });\n };\n\n this._instance.onAuthLogout = () => {\n this._keycloakEvents$.next({type: KeycloakEventType.OnAuthLogout});\n };\n\n this._instance.onAuthRefreshSuccess = () => {\n this._keycloakEvents$.next({\n type: KeycloakEventType.OnAuthRefreshSuccess,\n });\n };\n\n this._instance.onAuthRefreshError = () => {\n this._keycloakEvents$.next({\n type: KeycloakEventType.OnAuthRefreshError,\n });\n };\n\n this._instance.onAuthSuccess = (args?: any) => {\n this._keycloakEvents$.next({type: KeycloakEventType.OnAuthSuccess, args: args});\n };\n\n this._instance.onTokenExpired = () => {\n this._keycloakEvents$.next({\n type: KeycloakEventType.OnTokenExpired,\n });\n };\n\n this._instance.onReady = (authenticated) => {\n this._keycloakEvents$.next({\n args: authenticated,\n type: KeycloakEventType.OnReady,\n });\n };\n }\n\n /**\n * Loads all bearerExcludedUrl content in a uniform type: ExcludedUrl,\n * so it becomes easier to handle.\n *\n * @param bearerExcludedUrls array of strings or ExcludedUrl that includes\n * the url and HttpMethod.\n */\n private loadExcludedUrls(\n bearerExcludedUrls: (string | ExcludedUrl)[]\n ): ExcludedUrlRegex[] {\n const excludedUrls: ExcludedUrlRegex[] = [];\n for (const item of bearerExcludedUrls) {\n let excludedUrl: ExcludedUrlRegex;\n if (typeof item === 'string') {\n excludedUrl = {urlPattern: new RegExp(item, 'i'), httpMethods: []};\n } else {\n excludedUrl = {\n urlPattern: new RegExp(item.url, 'i'),\n httpMethods: item.httpMethods,\n };\n }\n excludedUrls.push(excludedUrl);\n }\n return excludedUrls;\n }\n\n /**\n * Handles the class values initialization.\n *\n * @param options\n */\n private initServiceValues({\n enableBearerInterceptor = true,\n loadUserProfileAtStartUp = false,\n bearerExcludedUrls = [],\n authorizationHeaderName = 'Authorization',\n bearerPrefix = 'Bearer',\n initOptions,\n }: KeycloakOptions): void {\n this._enableBearerInterceptor = enableBearerInterceptor;\n this._loadUserProfileAtStartUp = loadUserProfileAtStartUp;\n this._authorizationHeaderName = authorizationHeaderName;\n this._bearerPrefix = bearerPrefix.trim().concat(' ');\n this._excludedUrls = this.loadExcludedUrls(bearerExcludedUrls);\n this._silentRefresh = initOptions ? initOptions.flow === 'implicit' : false;\n }\n\n /**\n * Keycloak initialization. It should be called to initialize the adapter.\n * Options is a object with 2 main parameters: config and initOptions. The first one\n * will be used to create the Keycloak instance. The second one are options to initialize the\n * keycloak instance.\n *\n * @param options\n * Config: may be a string representing the keycloak URI or an object with the\n * following content:\n * - url: Keycloak json URL\n * - realm: realm name\n * - clientId: client id\n *\n * initOptions:\n * Options to initialize the Keycloak adapter, matches the options as provided by Keycloak itself.\n *\n * enableBearerInterceptor:\n * Flag to indicate if the bearer will added to the authorization header.\n *\n * loadUserProfileInStartUp:\n * Indicates that the user profile should be loaded at the keycloak initialization,\n * just after the login.\n *\n * bearerExcludedUrls:\n * String Array to exclude the urls that should not have the Authorization Header automatically\n * added.\n *\n * authorizationHeaderName:\n * This value will be used as the Authorization Http Header name.\n *\n * bearerPrefix:\n * This value will be included in the Authorization Http Header param.\n *\n * @returns\n * A Promise with a boolean indicating if the initialization was successful.\n */\n public async init(options: KeycloakOptions = {}, login?: boolean) {\n console.log('[keycloak service] options init', options);\n this.initServiceValues(options);\n const {config, initOptions} = options;\n\n this._instance = Keycloak(config);\n this.bindsKeycloakEvents();\n\n this.setLoginSubscriptions('login')\n\n const authenticated = await this._instance.init(initOptions);\n\n if (authenticated && this._loadUserProfileAtStartUp) {\n await this.loadUserProfile();\n }\n return authenticated;\n }\n\n parseJWTToken(token: string) {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n\n return JSON.parse(jsonPayload);\n }\n\n\n public isMobile() {\n return (this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) || ((this.platform.platforms().includes(\"android\") ||\n this.platform.platforms().includes(\"ios\")) && !this.platform.platforms().includes(\"mobileweb\"));\n }\n\n\n public setLoginSubscriptions(source: string): void {\n console.log('[keycloak ionic service] subscribing on ' + source);\n const sub = this._keycloakEvents$.subscribe((val) => {\n console.log('[keycloak event]: ', val)\n if (val.type == KeycloakEventType.OnAuthSuccess) {\n try {\n\n const kcTokens = {\n accessToken: this._instance.token,\n refreshToken: this._instance.refreshToken,\n idToken: this._instance.idToken\n }\n\n Preferences.set({key: 'kcTokens', value: JSON.stringify(kcTokens)}).then(\n () => console.log('[keycloak success] success: keycloak token Stored!'),\n (error) =>\n console.error('[keycloak success] Error storing item', error)\n );\n\n console.log('[keycloak success]', this._instance.token, this._instance.refreshToken);\n if (this._instance.token) {\n this.sharedEvent.sendToken(this._instance.token);\n console.log('[keycloak success] token shared');\n }\n\n this._instance.loadUserProfile().then((val: any) => {\n console.log('[keycloak success] user profile', val)\n this.securityService.apiV1SecurityLoadGet().forEach(r => {\n console.log('[keycloak ionic service] security load', r);\n if (!r.result) {\n console.log('user is logged in keycloak, but no data. kc profil', val)\n let provider = undefined;\n if(val.attributes && val.attributes.idp_source && val.attributes.idp_source.length > 0){\n provider = val.attributes.idp_source[0]\n }\n console.log('found provider:', provider)\n if (provider) {\n this.keycloakSocialLoginService.socialProviderInfo(provider, this._instance).then((res: any) => {\n const generalCustomerAccount: CustomerProfileForm = new class implements CustomerProfileForm {\n account: AccountForm = new class implements AccountForm {\n firstname = '';\n lastname = '';\n phoneNumber: string;\n }\n activity: string;\n defaultAddress: AddressForm;\n age: number;\n aboutMe: string;\n }\n const newAccount: RegisterAccountForm = new class implements RegisterAccountForm {\n accountType: AccountType = AccountType.Client;\n email = '';\n firstname = '';\n lastname = '';\n phoneNumber = '';\n authProvider: AuthProvider = AuthProvider.App;\n }\n if (provider == 'apple') {\n newAccount.authProvider = AuthProvider.Apple;\n newAccount.email = val.email;\n newAccount.lastname = val.lastName;\n newAccount.firstname = val.firstName;\n\n } else if (provider == 'facebook') {\n newAccount.authProvider = AuthProvider.Facebook;\n newAccount.email = res.email;\n newAccount.firstname = res.first_name;\n newAccount.lastname = res.last_name;\n\n\n } else if (provider = 'google') {\n newAccount.authProvider = AuthProvider.Google;\n newAccount.email = res.emailAddresses[0].value;\n newAccount.firstname = res.names[0].givenName;\n newAccount.lastname = res.names[0].familyName;\n }\n\n this.oauthService.connexion(newAccount).subscribe((res) => {\n console.log('[register social] account created', res)\n if (res.result) {\n if (newAccount.authProvider == AuthProvider.Apple) {\n generalCustomerAccount.account.firstname = newAccount.firstname;\n generalCustomerAccount.account.lastname = newAccount.lastname;\n generalCustomerAccount.account.phoneNumber = newAccount.phoneNumber;\n this.clientService.profileSave(generalCustomerAccount).forEach(r => {\n console.log('[keycloak ionic service] apple client profile saved');\n this.ngZone.run(() => {\n this.router.navigateByUrl(appDefaultConnectedRoute, {\n replaceUrl: true,\n });\n })\n }).catch(e => {\n console.log('error on profile save', e);\n this.alertService.temp('ERROR API', 2000);\n });\n } else if (newAccount.authProvider == AuthProvider.Google) {\n //redirection is inside call\n this.keycloakSocialLoginService.saveGoogleInfo(res, generalCustomerAccount, newAccount);\n } else if (newAccount.authProvider == AuthProvider.Facebook) {\n //redirection is inside call\n this.keycloakSocialLoginService.saveFacebookInfo(res, generalCustomerAccount, newAccount);\n } else {\n console.log('[keycloak ionic service] social login unkown provider');\n }\n } else {\n console.log('[keycloak ionic service] social login failed after trying to save account');\n }\n });\n })\n } else {\n //\n console.log('[keycloak ionic service] social login failed for unknow reason. should throw an error here');\n }\n } else {\n console.log('user found, can redirect on');\n this.notificationService.updateDeviceTokenWhenLoggedId(r);\n\n this.ngZone.run(() => {\n this.navigationService.refresh(true, r.result.userType);\n if (!this.notificationService.tapOpened) {\n if (this.router.url.includes('client-offer-detail')) {\n this.sharedEvent.sendRefreshOfferViewEvent();\n }\n\n if (r.result.userType == 'CLIENT') {\n console.log('[RIVERAINS] logged in so navigating to client home page, or checking if coming from notification');\n console.log(' router url on open ', this.router.url)\n if (this.isMobile()) {\n if (this.router.url.includes('client-offer-detail')) {\n console.log('routing through notificaiton')\n //refresh view\n this.sharedEvent.sendRefreshOfferViewEvent();\n } else {\n if(!this.notificationService.tapOpened){\n this.ngZone.run(() => {\n this.navigationService.refresh(true, 'CLIENT');\n this.alertService.dismissAllPending();\n this.router.navigateByUrl(AppConstants.appDefaultConnectedRoute, {\n replaceUrl: true,\n });\n })\n } else {\n this.ngZone.run(() => {\n this.navigationService.refresh(true, 'CLIENT');\n this.alertService.dismissAllPending();\n })\n }\n }\n } else {\n console.log('[keycloak ionic service] connected as CLIENT on web');\n\n this.router.navigateByUrl(AppConstants.appDefaultConnectedRoute, {\n replaceUrl: true,\n })\n\n }\n } else if (r.result.userType == 'VENDOR') {\n console.log('[PROUSER] logged in should disconnect');\n console.log(' router url on open ', this.router.url)\n console.log(' isMobile: ', this.isMobile());\n console.log('[keycloak ionic service] existing client account, disconnecting, should switch app');\n this.alertService.closeLoader();\n this.alertService.ask('Compte existant', `Votre compte est déjà enregistré en tant que professionel, voulez-vous être redirigé vers l'autre application ?`, 'Oui, rediriger', () => {\n if (!this.isMobile()) {\n this.logout('/offline');\n } else {\n this.ngZone.run(() => {\n this.navigationService.refresh(false, 'OFFLINE');\n this.logout('/offline');\n });\n }\n }, 'Non, rester', () => {\n this.ngZone.run(() => {\n this.navigationService.refresh(true, 'OFFLINE');\n });\n if (!this.isMobile()) {\n this.logout('/offline');\n } else {\n this.ngZone.run(() => {\n this.navigationService.refresh(false, 'OFFLINE');\n this.logout('/offline');\n });\n }\n }\n );\n } else {\n //should throw error !!!\n console.log('error, shouldnt be here');\n }\n } else {\n // navigate to tapped url\n const notificationUrl = this.notificationService.tapUrl;\n this.notificationService.tapUrl = '';\n this.notificationService.tapOpened = false;\n this.router.navigateByUrl(notificationUrl);\n }\n console.log('[keycloak success]: could navigate. menu is refreshed. tapOpened: ' + this.notificationService.tapOpened);\n })\n\n\n if (this.isMobile()) {\n console.log('[keycloak ionic service] platform is mobile, should use GA lib')\n /*this.ga.setUserId(r.result.email).then((userId) => {\n console.log('Set User ID : ', userId);\n })*/\n } else {\n gtag('config', this.envService.GA_TRACKING_ID, {\n send_page_view: false,\n user_id: r.result.email,\n cdq_user: r.result.email\n });\n }\n }\n });\n })\n } catch (e) {\n console.log('[keycloak success] error while seting token', e)\n }\n }\n\n if (val.type == KeycloakEventType.OnAuthError) {\n console.log('[keycloak auth error]')\n try {\n Preferences.remove({key: 'kcTokens'}).then(\n (va) => {\n console.log('[keycloak auth error]. removed tokens from storage');\n },\n (err) => {\n console.log(\n '[keycloak auth error]. failed to remove token from storage'\n );\n }\n );\n } catch (e) {\n console.log('[keycloak auth error] error while removing tokens');\n }\n\n this.ngZone.run(() => {\n this.navigationService.refresh(false, 'OFFLINE');\n console.log('[keycloak logout]. menu refreshed. could navigate');\n // this.alertService.dismissAllPending();\n if (!this.notificationService.tapOpened) {\n this.router.navigateByUrl('/offline/home-web');\n }\n })\n }\n\n if (val.type == KeycloakEventType.OnAuthLogout) {\n console.log('[keycloak logout]. removing token from Preferences')\n try {\n Preferences.remove({key: 'kcTokens'}).then(\n (va) => {\n console.log('[keycloak auth error]. removed tokens from storage');\n },\n (err) => {\n console.log(\n '[keycloak auth error]. failed to remove token from storage'\n );\n }\n );\n } catch (e) {\n console.log('error while removing tokens');\n }\n this.ngZone.run(() => {\n this.navigationService.refresh(false, 'OFFLINE');\n console.log('[keycloak logout]. menu refreshed. could navigate');\n this.router.navigateByUrl('/offline/home',);\n })\n }\n });\n }\n\n\n buildUrl(identityProvider: AuthProvider) {\n const type = identityProvider.toLowerCase();\n const keycloakUrl = `${this.envService.keycloak.url}`;\n const providerUrl = `realms/${this.envService.keycloak.realm}/protocol/openid-connect/auth?client_id=${this.envService.keycloak.clientId}`;\n let redirectBaseUri = \"\";\n if (this.isMobile()) {\n redirectBaseUri = this.envService.keycloak.redirectUri\n } else {\n redirectBaseUri = this.envService.keycloak.redirectUriBrowser\n }\n const redirectUri = `${redirectBaseUri}/register/social`;\n const params = `?kc_idp_hint=${type}&response_type=code&scope=openid&kc_idp_hint=${type}`;\n const url = `${keycloakUrl}/${providerUrl}&redirect_uri=${redirectUri}${params}`;\n\n return url;\n }\n\n\n public async loginSocial(identityProvider: AuthProvider) {\n if ([AuthProvider.Google, AuthProvider.Facebook, AuthProvider.Apple].includes(identityProvider)) {\n console.log('calling custom login for external provider')\n let regSocialUri = '';\n if (this.isMobile()) {\n regSocialUri = this.appBaseUri + '://register/social?kc_idp_hint=' + identityProvider.toLowerCase()\n } else {\n regSocialUri = this.envService.keycloak.redirectUriBrowser + '/register/social?kc_idp_hint=' + identityProvider.toLowerCase();\n }\n this.login({\n idpHint: identityProvider.toLowerCase(),\n redirectUri: regSocialUri\n })\n }\n }\n\n\n /**\n * Redirects to login form on (options is an optional object with redirectUri and/or\n * prompt fields).\n *\n * @param options\n * Object, where:\n * - redirectUri: Specifies the uri to redirect to after login.\n * - prompt:By default the login screen is displayed if the user is not logged-in to Keycloak.\n * To only authenticate to the application if the user is already logged-in and not display the\n * login page if the user is not logged-in, set this option to none. To always require\n * re-authentication and ignore SSO, set this option to login .\n * - maxAge: Used just if user is already authenticated. Specifies maximum time since the\n * authentication of user happened. If user is already authenticated for longer time than\n * maxAge, the SSO is ignored and he will need to re-authenticate again.\n * - loginHint: Used to pre-fill the username/email field on the login form.\n * - action: If value is 'register' then user is redirected to registration page, otherwise to\n * login page.\n * - locale: Specifies the desired locale for the UI.\n * @returns\n * A void Promise if the login is successful and after the user profile loading.\n */\n public async login(options: Keycloak.KeycloakLoginOptions = {}) {\n //this.alertService.showSpinner().subscribe(() => {\n this._instance.login(options).then(() => {\n if (this._loadUserProfileAtStartUp) {\n this.loadUserProfile();\n }\n // this.alertService.dismissAllPending();\n });\n //});\n }\n\n /**\n * Redirects to logout.\n *\n * @param redirectUri\n * Specifies the uri to redirect to after logout.\n * @returns\n * A void Promise if the logout was successful, cleaning also the userProfile.\n */\n public async logout(redirectUri?: string) {\n\n if(this.isMobile()){\n try{\n Preferences.remove({key: 'kcTokens'}).finally(() => {\n redirectUri = this.appBaseUri + ':/' + (redirectUri ? redirectUri : '/offline');\n this._userProfile = undefined;\n //TODO: move mobile logout in capacitor\n const url = this._instance.authServerUrl + '/realms/' + this._instance.realm + '/protocol/openid-connect/logout'\n + '?post_logout_redirect_uri=' + encodeURIComponent(redirectUri)\n + '&id_token_hint=' + encodeURIComponent(this._instance.idToken);\n this._instance.logout({\n postRedirectUri: url\n })\n })\n } catch (e){\n console.log('error while logging out', e)\n }\n } else {\n this._userProfile = undefined;\n redirectUri = this.envService.keycloak.redirectUriBrowser + (redirectUri ? redirectUri : '');\n const url = this._instance.authServerUrl + '/realms/' + this._instance.realm + '/protocol/openid-connect/logout'\n + '?post_logout_redirect_uri=' + encodeURIComponent(redirectUri)\n + '&id_token_hint=' + encodeURIComponent(this._instance.idToken);\n console.log('[keycloak ionic service] logout url: ', url);\n window.location.href = url;\n }\n return;\n }\n\n\n /**\n * Redirects to registration form. Shortcut for login with option\n * action = 'register'. Options are same as for the login method but 'action' is set to\n * 'register'.\n *\n * @param options\n * login options\n * @returns\n * A void Promise if the register flow was successful.\n */\n public async register(\n options: Keycloak.KeycloakLoginOptions = {action: 'register'}\n ) {\n await this._instance.register(options);\n }\n\n /**\n * Check if the user has access to the specified role. It will look for roles in\n * realm and clientId, but will not check if the user is logged in for better performance.\n *\n * @param role\n * role name\n * @param resource\n * resource name If not specified, `clientId` is used\n * @returns\n * A boolean meaning if the user has the specified Role.\n */\n isUserInRole(role: string, resource?: string): boolean {\n let hasRole: boolean;\n hasRole = this._instance.hasResourceRole(role, resource);\n if (!hasRole) {\n hasRole = this._instance.hasRealmRole(role);\n }\n return hasRole;\n }\n\n /**\n * Return the roles of the logged user. The allRoles parameter, with default value\n * true, will return the clientId and realm roles associated with the logged user. If set to false\n * it will only return the user roles associated with the clientId.\n *\n * @param allRoles\n * Flag to set if all roles should be returned.(Optional: default value is true)\n * @returns\n * Array of Roles associated with the logged user.\n */\n getUserRoles(allRoles = true): string[] {\n let roles: string[] = [];\n if (this._instance.resourceAccess) {\n for (const key in this._instance.resourceAccess) {\n if (this._instance.resourceAccess.hasOwnProperty(key)) {\n const resourceAccess: any = this._instance.resourceAccess[key];\n const clientRoles = resourceAccess['roles'] || [];\n roles = roles.concat(clientRoles);\n }\n }\n }\n if (allRoles && this._instance.realmAccess) {\n const realmRoles = this._instance.realmAccess['roles'] || [];\n roles.push(...realmRoles);\n }\n return roles;\n }\n\n /**\n * Check if user is logged in.\n *\n * @returns\n * A boolean that indicates if the user is logged in.\n */\n async isLoggedIn(): Promise {\n try {\n if (!this._instance.authenticated) {\n return false;\n }\n try {\n await this.updateToken(20);\n } catch (e) {\n console.log('[keycloak js] isLoggedIn error. update token error', e);\n }\n return true;\n } catch (error) {\n console.log('[keycloak js] isLoggedIn error', error);\n return false;\n }\n }\n\n /**\n * Returns true if the token has less than minValidity seconds left before\n * it expires.\n *\n * @param minValidity\n * Seconds left. (minValidity) is optional. Default value is 0.\n * @returns\n * Boolean indicating if the token is expired.\n */\n isTokenExpired(minValidity = 0): boolean {\n return this._instance.isTokenExpired(minValidity);\n }\n\n /**\n * If the token expires within minValidity seconds the token is refreshed. If the\n * session status iframe is enabled, the session status is also checked.\n * Returns a promise telling if the token was refreshed or not. If the session is not active\n * anymore, the promise is rejected.\n *\n * @param minValidity\n * Seconds left. (minValidity is optional, if not specified 5 is used)\n * @returns\n * Promise with a boolean indicating if the token was succesfully updated.\n */\n public async updateToken(minValidity = 5) {\n // TODO: this is a workaround until the silent refresh (issue #43)\n // is not implemented, avoiding the redirect loop.\n if (this._silentRefresh) {\n if (this.isTokenExpired()) {\n throw new Error(\n 'Failed to refresh the token, or the session is expired'\n );\n }\n\n return true;\n }\n\n if (!this._instance) {\n throw new Error('Keycloak Angular library is not initialized.');\n }\n\n return this._instance.updateToken(minValidity);\n }\n\n /**\n * Loads the user profile.\n * Returns promise to set functions to be invoked if the profile was loaded\n * successfully, or if the profile could not be loaded.\n *\n * @param forceReload\n * If true will force the loadUserProfile even if its already loaded.\n * @returns\n * A promise with the KeycloakProfile data loaded.\n */\n public async loadUserProfile(forceReload = false) {\n if (this._userProfile && !forceReload) {\n return this._userProfile;\n }\n\n if (!this._instance.authenticated) {\n throw new Error(\n 'The user profile was not loaded as the user is not logged in.'\n );\n }\n\n return this._userProfile = await this._instance.loadUserProfile();\n }\n\n /**\n * Returns the authenticated token, calling updateToken to get a refreshed one if necessary.\n */\n public async getToken() {\n await this.updateToken(10);\n return this._instance.token;\n }\n\n /**\n * Returns the logged username.\n *\n * @returns\n * The logged username.\n */\n public getUsername() {\n if (!this._userProfile) {\n throw new Error('User not logged in or user profile was not loaded.');\n }\n\n return this._userProfile.username;\n }\n\n /**\n * Clear authentication state, including tokens. This can be useful if application\n * has detected the session was expired, for example if updating token fails.\n * Invoking this results in onAuthLogout callback listener being invoked.\n */\n clearToken(): void {\n this._instance.clearToken();\n }\n\n /**\n * Adds a valid token in header. The key & value format is:\n * Authorization Bearer .\n * If the headers param is undefined it will create the Angular headers object.\n *\n * @param headers\n * Updated header with Authorization and Keycloak token.\n * @returns\n * An observable with with the HTTP Authorization header and the current token.\n */\n public addTokenToHeader(headers: HttpHeaders = new HttpHeaders()) {\n return from(this.getToken()).pipe(\n map((token) =>\n token ? headers.set(this._authorizationHeaderName, this._bearerPrefix + token) : headers\n )\n );\n }\n\n\n /**\n * Returns the original Keycloak instance, if you need any customization that\n * this Angular service does not support yet. Use with caution.\n *\n * @returns\n * The KeycloakInstance from keycloak-js.\n */\n getKeycloakInstance(): Keycloak.KeycloakInstance {\n return this._instance;\n }\n\n /**\n * Returns the excluded URLs that should not be considered by\n * the http interceptor which automatically adds the authorization header in the Http Request.\n *\n * @returns\n * The excluded urls that must not be intercepted by the KeycloakBearerInterceptor.\n */\n get excludedUrls(): ExcludedUrlRegex[] {\n return this._excludedUrls;\n }\n\n /**\n * Flag to indicate if the bearer will be added to the authorization header.\n *\n * @returns\n * Returns if the bearer interceptor was set to be disabled.\n */\n get enableBearerInterceptor(): boolean {\n return this._enableBearerInterceptor;\n }\n\n /**\n * Keycloak subject to monitor the events triggered by keycloak-js.\n * The following events as available (as described at keycloak docs -\n * https://www.keycloak.org/docs/latest/securing_apps/index.html#callback-events):\n * - OnAuthError\n * - OnAuthLogout\n * - OnAuthRefreshError\n * - OnAuthRefreshSuccess\n * - OnAuthSuccess\n * - OnReady\n * - OnTokenExpire\n * In each occurrence of any of these, this subject will return the event type,\n * described at {@link KeycloakEventType} enum and the function args from the keycloak-js\n * if provided any.\n *\n * @returns\n * A subject with the {@link KeycloakEvent} which describes the event type and attaches the\n * function args.\n */\n get keycloakEvents$(): Subject {\n return this._keycloakEvents$;\n }\n\n public getLoginToken(): Promise {\n return new Promise((resolve, reject) => {\n let kcTokens: KcTokens = {\n accessToken: '',\n refreshToken: '',\n idToken: ''\n };\n Preferences.get({key: 'kcTokens'}).then(kcToken => {\n kcTokens = JSON.parse(kcToken.value);\n });\n resolve(kcTokens);\n });\n }\n\n public setLoginToken(tokens: KcTokens): Promise {\n\n return new Promise((resolve, reject) => {\n Preferences.set({key: 'kcTokens', value: JSON.stringify(tokens)}).then(\n () => console.log('[login] success: keycloak tokens Stored!'),\n error => console.error('[login] on success, error storing item', error)\n );\n this.initWithTokens(tokens).then(kcOptions => {\n console.log('[keycloak service] kc opts', kcOptions);\n if (kcOptions) {\n this.init(kcOptions, true);\n }\n })\n\n })\n }\n\n initWithTokens(tokens: KcTokens): Promise {\n return new Promise((resolve, reject) => {\n\n if (tokens) {\n const kcOptions: KeycloakOptions = {\n config: {\n url: this.envService.keycloak.url,\n realm: this.envService.keycloak.realm,\n clientId: this.envService.keycloak.clientId\n },\n initOptions: {\n responseMode: 'query',\n enableLogging: true,\n token: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n idToken: tokens.idToken,\n timeSkew: 360,\n checkLoginIframe: false,\n onLoad: 'login-required',\n }\n }\n\n this.platform.ready().then(() => {\n if (this.isMobile()) {\n kcOptions.initOptions.redirectUri = this.appBaseUri + '://home?fromLogin=1';\n kcOptions.initOptions.adapter = 'capacitor';\n console.log('[keycloak ionic service] init mobile mode', kcOptions.initOptions);\n } else if (this.platform.platforms().includes('desktop') || this.platform.platforms().includes('mobileweb')) {\n kcOptions.initOptions.onLoad = 'check-sso';\n kcOptions.initOptions.adapter = 'default';\n kcOptions.initOptions.silentCheckSsoRedirectUri = window.location.origin + '/assets/silent-check-sso.html';\n kcOptions.initOptions.redirectUri = this.envService.keycloak.redirectUriBrowser;\n console.log('[keycloak ionic service] init desktop mode', kcOptions.initOptions);\n }\n resolve(kcOptions);\n });\n }\n })\n }\n\n initAuth(): any {\n const globalP = new Promise((gResolve, gReject) => {\n const pp = new Promise((resolve, reject) => {\n const finalToken: any = {\n token: null,\n refreshToken: null,\n idToken: null,\n };\n try {\n Preferences.get({key: 'kcTokens'}).then((data) => {\n let finalToken: any = {\n accessToken: null,\n refreshToken: null,\n idToken: null,\n }\n try {\n finalToken = JSON.parse(data.value);\n } catch (e) {\n console.log('error while parsing tokens string from storage', e, data.value)\n }\n if (!finalToken) {\n finalToken = {\n accessToken: null,\n refreshToken: null,\n idToken: null,\n }\n }\n resolve(finalToken);\n });\n } catch (e) {\n console.log('error while getting token. resolving to empty', e)\n resolve(finalToken)\n }\n })\n pp.then((tokens) => {\n console.log('[keycloak ionice service] resolved tokens: ', tokens)\n const kcOptions: KeycloakOptions = {\n config: {\n url: this.envService.keycloak.url,\n realm: this.envService.keycloak.realm,\n clientId: this.envService.keycloak.clientId\n },\n initOptions: {\n responseMode: 'query',\n enableLogging: true,\n token: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n idToken: tokens.idToken,\n timeSkew: 3600,\n checkLoginIframe: false,\n }\n }\n this.platform.ready().then(() => {\n if (this.isMobile()) {\n kcOptions.initOptions.redirectUri = this.appBaseUri + '://home?fromLogin=1';\n kcOptions.initOptions.adapter = 'capacitor';\n console.log('[keycloak ionic service] init mobile mode', kcOptions);\n } else if (this.platform.platforms().includes('desktop') || this.platform.platforms().includes('mobileweb')) {\n kcOptions.initOptions.onLoad = 'check-sso';\n kcOptions.initOptions.adapter = 'default';\n //kcOptions.initOptions.silentCheckSsoRedirectUri = window.location.origin + '/assets/silent-check-sso.html';\n kcOptions.initOptions.redirectUri = this.envService.keycloak.redirectUriBrowser;\n kcOptions.initOptions.checkLoginIframe = false;\n console.log('[keycloak ionic service] init desktop mode', kcOptions);\n }\n this.init(kcOptions);\n console.log('[keycloak ionic service] init keycloak done. resolving')\n gResolve('');\n }, (err) => {\n console.log('[keycloak ionic service] tokens not resolved error', err);\n gResolve('');\n });\n });\n\n })\n return globalP;\n }\n\n loginWithHint(loginHint?: any, url?: any): void {\n console.log('LOGIN : ', loginHint);\n if (this.isMobile()) {\n console.log('[keycloak ionic service] login mobile mode');\n this._instance.login({\n maxAge: 0,\n loginHint: loginHint,\n redirectUri: url\n })\n } else {\n window.open(this._instance.createLoginUrl({maxAge: 0, loginHint: loginHint}), '_self');\n }\n }\n}\n","import {VendorProfilService} from '@cdq/api';\nimport {Injectable, NgZone} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {AccountType, CustomerProfilService} from '@cdq/api';\nimport {AlertService} from '../alert/alert.service';\nimport * as moment from 'moment';\nimport {EnvService} from '../environment/env.service';\nimport {OAuthProviderList} from './interfaces/oauth-provider';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable, Subject} from 'rxjs';\nimport {Platform} from '@ionic/angular';\nimport {appDefaultConnectedRoute} from \"../../app.constants\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KeycloakSocialLoginService {\n\n private user = new Subject();\n\n providersApis: OAuthProviderList = {\n 'google': {\n url: 'https://people.googleapis.com/v1/people/me',\n params: 'addresses,ageRanges,biographies,birthdays,calendarUrls,clientData,coverPhotos,emailAddresses,events,externalIds,genders,imClients,interests,locales,locations,memberships,metadata,miscKeywords,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,sipAddresses,skills,urls,userDefined'\n },\n 'facebook': {\n url: 'https://graph.facebook.com/me',\n params: 'id,name,email,gender,location,address,hometown,locale,picture,birthday,age_range,cover,devices,first_name,last_name,verified,languages,link,sports,timezone'\n },\n }\n\n constructor(private alertService: AlertService,\n private clientService: CustomerProfilService,\n private vendorService: VendorProfilService,\n private router: Router,\n private envService: EnvService,\n private http: HttpClient,\n public platform: Platform,\n public ngZone: NgZone) {\n }\n\n\n sendUser(user: any) {\n console.log('Send User :', user);\n this.user.next(user);\n }\n\n getUser(): Observable {\n console.log('Get user');\n return this.user.asObservable();\n }\n\n saveGoogleInfo(userGoogle: any, generalAccount: any, newAccount: any): void {\n if (userGoogle) {\n if (userGoogle.genders && userGoogle.genders.length > 0) {\n if (userGoogle.genders[0].value == 'male') {\n generalAccount.civilite = 1;\n } else if (userGoogle.genders[0].value == 'female') {\n generalAccount.civilite = 2;\n }\n }\n\n if (userGoogle.addresses) {\n generalAccount.formattedAddress = userGoogle.addresses[0].formattedValue;\n generalAccount.address = userGoogle.addresses[0].streetAddress;\n generalAccount.city = userGoogle.addresses[0].city;\n generalAccount.zipcode = userGoogle.addresses[0].postalCode;\n generalAccount.country = userGoogle.addresses[0].country;\n }\n if (userGoogle.birthdays) {\n if (userGoogle.birthdays[0].date.day.length == 1) {\n userGoogle.birthdays[0].date.day = '0' + userGoogle.birthdays[0].date.day.toString();\n }\n generalAccount.birthdate = `${userGoogle.birthdays[0].date.day.toString()}-${userGoogle.birthdays[0].date.month.toString()}-${userGoogle.birthdays[0].date.year.toString()}`;\n }\n generalAccount.account.firstname = newAccount.firstname;\n generalAccount.account.lastname = newAccount.lastname;\n generalAccount.account.phoneNumber = newAccount.phoneNumber;\n\n this.saveProfile(newAccount, generalAccount);\n }\n }\n\n saveFacebookInfo(userFacebook: any, generalAccount: any, newAccount: any): void {\n if (userFacebook) {\n if (userFacebook.gender == 'male') {\n generalAccount.civilite = 1;\n } else if (userFacebook.gender == 'female') {\n generalAccount.civilite = 2;\n }\n generalAccount.birthdate = userFacebook.birthday ? moment(userFacebook.birthday).format(\"YYYY-MM-DD\") : null;\n if (userFacebook.location) {\n generalAccount.formattedAddress = userFacebook.location.name\n }\n generalAccount.account.firstname = newAccount.firstname;\n generalAccount.account.lastname = newAccount.lastname;\n generalAccount.account.phoneNumber = newAccount.phoneNumber;\n\n this.saveProfile(newAccount, generalAccount);\n }\n }\n\n socialProviderInfo(provider: any, instance: Keycloak.KeycloakInstance): Promise {\n return new Promise((resolve, reject) => {\n this.http.get(`${this.envService.keycloak.url}/realms/${this.envService.keycloak.realm}/broker/${provider}/token`, {\n headers: {\n Authorization: 'Bearer ' + instance.token,\n }\n }).toPromise().then((providerToken: any) => {\n const myHeaders = new Headers();\n myHeaders.append(\n 'Authorization',\n 'Bearer ' + providerToken['access_token']\n );\n\n let url = \"\";\n const providerApi = this.providersApis[provider];\n if (provider == 'google') {\n url = `${providerApi.url}?personFields=${providerApi.params}`;\n } else if (provider == 'facebook') {\n url = `${providerApi.url}?fields=${providerApi.params}&access_token=${providerToken['access_token']}`;\n }\n\n if(url && !(provider == 'apple')) {\n fetch(url,\n {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow',\n }\n )\n .then((response) => resolve(response.json()))\n .catch((error) => console.log('error', error));\n } else {\n console.log('no api to call for apple...')\n resolve({})\n }\n\n })\n })\n }\n\n private saveProfile(newAccount: any, generalAccount: any) {\n if (newAccount.accountType == AccountType.Client) {\n console.log('[keycloak-social-login-service] saving riv account');\n this.clientService.profileSave(generalAccount).forEach(r => {\n console.log('[keycloak-social-login-service] client profile saved');\n this.ngZone.run(() => {\n this.router.navigateByUrl(appDefaultConnectedRoute, {\n replaceUrl: true,\n });\n })\n }).catch(e => {\n console.log('error on profile save', e);\n this.alertService.temp('ERROR API', 2000);\n });\n } else if (newAccount.accountType == AccountType.Vendor) {\n console.log('[keycloak-social-login-service] shoudl display error, because of vendor account on client app !!');\n }\n }\n}\n","import {EnvService} from \"../environment/env.service\";\nimport {KeycloakIonicService} from \"./keycloak-ionic.service\";\n\n\nexport function initializer(envService: EnvService, keycloakIonicService: KeycloakIonicService) {\n return (): Promise => {\n \n return keycloakIonicService.initAuth();\n };\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { Observable, from } from 'rxjs';\nimport { mergeMap, tap } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { AlertService } from '../alert/alert.service';\nimport { ToastController } from '@ionic/angular';\nimport { SharedService } from '../shared/shared.service';\nimport {EnvService} from \"../environment/env.service\";\nimport {KeycloakIonicService} from \"./keycloak-ionic.service\";\n\n\n@Injectable()\nexport class KeycloakInterceptorService implements HttpInterceptor{\n\n /**\n * Constructor\n * @param keycloakService {KeycloakService}\n */\n constructor(\n private keycloakService: KeycloakIonicService,\n private router : Router,\n private alertService : AlertService,\n private toastCtrl : ToastController,\n private sharedService : SharedService,\n private envService: EnvService\n ) {\n }\n\n\n /**\n * Interceptor for user token\n * @param request {HttpRequest}\n * @param next {HttpHandler}\n */\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n\n // Exclude interceptor for login request:\n // console.log('debug reg intercept search', request.url.search(environment.keycloak.url));\n if (request.url.search(this.envService.keycloak.url) === -1 && this.keycloakService.getKeycloakInstance().authenticated) {\n return this.getUserToken().pipe(\n mergeMap((token) => {\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n // return next.handle(request);\n return next.handle(request).pipe( tap(() => {},\n (err: any) => {\n if(err instanceof HttpErrorResponse) {\n if (err.status !== 401) {\n return;\n }\n this.alertService.success('Erreur', 'En raison d\\'une période d\\'inactivité, vous avez été automatiquement déconnecté.').then( async () => {\n this.keycloakService.logout()\n await this.router.navigateByUrl('/offline/home-web')\n }).catch(e => {\n console.log(e)\n })\n }\n }));\n }))\n } else {\n\n return next.handle(request).pipe( tap(() => {},\n (err:any) => {\n if(err instanceof HttpErrorResponse) {\n if(err.status !== 500) {\n return;\n }\n // if(this.router.url.includes('register')) {\n // console.log('Error')\n // this.sharedService.sendRegisterEvent()\n // this.createToast()\n // }\n }\n }))\n }\n }\n\n /**\n * Return observable token\n */\n getUserToken() {\n const tokenPromise: Promise = this.keycloakService.getToken();\n const tokenObservable: Observable = from(tokenPromise);\n return tokenObservable;\n }\n\n async createToast() {\n const toast = await this.toastCtrl.create({\n position: \"top\",\n header: 'Erreur',\n message: 'Informations invalides',\n color: 'danger',\n duration: 3000,\n buttons: [\n {\n side: \"end\",\n text: \"OK\",\n role: \"cancel\",\n handler: () => {\n console.log(\"Cancel clicked\");\n },\n },\n ],\n });\n toast.present();\n }\n\n\n}\n","import {Injectable, NgZone} from '@angular/core';\nimport {ActionPerformed, PushNotifications, PushNotificationSchema, Token} from \"@capacitor/push-notifications\";\nimport {Device} from \"@capacitor/device\";\nimport {SecurityService} from \"@cdq/api\";\nimport {Platform, ToastController} from \"@ionic/angular\";\nimport {NavigationStart, Router} from \"@angular/router\";\nimport {Preferences} from \"@capacitor/preferences\";\nimport {App} from '@capacitor/app';\nimport {\n Channel,\n LocalNotifications,\n ActionPerformed as LocalActionPerformed\n} from \"@capacitor/local-notifications\";\nimport {LocalNotificationSchema} from \"@capacitor/local-notifications/dist/esm/definitions\";\nimport {AlertService} from \"../alert/alert.service\";\nimport {CDQCAPPlugin} from \"../../capacitor/cdq/cdq\";\nimport {gitVersion} from \"../../../environments/git-version\";\nimport {EnvService} from \"../environment/env.service\";\nimport {Subscription} from \"rxjs\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NotificationsService {\n\n // localNotification = ['notif 1', 'notif 2', 'notif 3']\n\n private fcmToken: string;\n\n private notifId = 1;\n\n private androidChannelId: string;\n\n public tapOpened = false;\n public tapUrl = '';\n\n localNotification = {\n image: '',\n title: '',\n body: ''\n }\n\n listOfNotifications: any[] = []\n\n empty = false\n count = 0\n\n private navigationSubscription: Subscription;\n private isNotificationNavigation = false;\n\n constructor(private securityService: SecurityService,\n public platform: Platform,\n private ngZone: NgZone,\n private toastCtrl: ToastController,\n private alertSvc: AlertService,\n private router: Router,\n private envService: EnvService) {\n // this.checkNotificationPermissions();\n\n if (this.platform.platforms().includes('android')) {\n this.initNotifications();\n }\n\n // Listen for navigation events\n this.navigationSubscription = this.router.events.subscribe(event => {\n if (event instanceof NavigationStart && this.tapOpened) {\n this.isNotificationNavigation = true;\n if(this.tapOpened && !event.url.startsWith('/client-offer')){\n console.log('check routing path in ns service. currently opening offer, shoud cancel')\n }\n }\n });\n }\n\n checkNotification(): boolean {\n if (this.listOfNotifications.length > 0) {\n this.empty = false\n } else {\n this.empty = true\n }\n return this.empty\n }\n\n countNotification(): number {\n return this.count = this.listOfNotifications.length\n }\n\n public currentPushToken(){\n return this.fcmToken;\n }\n\n storeNotification(notification: any): void {\n this.localNotification.title = notification.notification.title\n this.localNotification.body = notification.notification.body\n this.localNotification.image = notification.notification.image\n this.listOfNotifications.push(this.localNotification)\n }\n\n listNotification(): any {\n return this.listOfNotifications\n }\n\n clearNotification(notification: any): void {\n this.listOfNotifications.forEach(r => {\n if (notification == r) {\n this.listOfNotifications = this.listOfNotifications.filter((value) => value != notification);\n }\n })\n }\n\n clearAll(): any {\n this.listOfNotifications = []\n return this.localNotification\n }\n\n initNotifications() {\n //handle first open\n console.log('[notification] initNotif')\n this.updateDeviceToken();\n if (this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) {\n PushNotifications.addListener(\"pushNotificationReceived\", async (notification: PushNotificationSchema) => {\n console.log(\"[CDQ Notification Handler] Push received: \", notification);\n const data = notification.data\n //this.storeNotification(notification.body)\n this.forwardNotification(notification);\n });\n // Method called when tapping on a notification\n PushNotifications.addListener(\"pushNotificationActionPerformed\", async (notification: ActionPerformed) => {\n console.log(\"[CDQ Notification Handler] Push Action Performed: \", notification);\n //Exemple : Redirect to offerId\n this.ngZone.run(() => {\n this.loadOfferFromTap(notification);\n })\n });\n\n console.log('push notification requested')\n const me = this;\n PushNotifications.addListener(\"registration\", (token: Token) => {\n this.fcmToken = token.value;\n Preferences.set({key: \"fcmToken\", value: token.value}).then(() => {\n console.log(\"fcm push token received\", token);\n }, (error) => console.error(\"error while storing fcm token\", error)\n //record device\n );\n this.updateDeviceToken();\n });\n\n PushNotifications.addListener(\"registrationError\", (error: any) => {\n console.log(\"Error on registration: \" + JSON.stringify(error));\n });\n\n PushNotifications.register();\n // PushNotifications.requestPermissions().then(result => {\n // if (result.receive === 'granted') {\n // // Register with Apple / Google to receive push via APNS/FCM\n // PushNotifications.register();\n // console.log('notifications authorized')\n // } else {\n // console.log('error while requestion permission', result)\n // }\n // });\n\n LocalNotifications.registerActionTypes({\n types: [{\n id: 'offerPush',\n actions: [{\n id: 'open',\n title: 'Voir l\\'Offre',\n input: false,\n foreground: true\n }, {\n id: 'offerParticipation',\n title: 'Participer',\n input: false,\n foreground: true\n }]\n }]\n })\n\n if (this.platform.platforms().includes(\"android\") && this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) {\n const notificationChannel: Channel = {\n id: 'cdq-android-notifications',// id must match android/app/src/main/res/values/strings.xml's default_notification_channel_id\n name: 'Oui Love Locals',\n description: '',\n importance: 4,\n visibility: 1\n };\n LocalNotifications.createChannel(notificationChannel);\n }\n LocalNotifications.addListener(\"localNotificationActionPerformed\", async (notification: LocalActionPerformed) => {\n console.log(\"[CDQ Notification Handler] Local Action Performed: \", notification);\n //Exemple : Redirect to offerId\n this.ngZone.run(() => {\n console.log('[notification] action performed on notification:', notification.actionId)\n\n // try to cancel any other navigation in progress\n\n this.loadOfferFromTap(notification);\n })\n });\n }\n }\n\n checkNotificationPermissions(): Promise {\n return new Promise((resolve, reject) => {\n PushNotifications.checkPermissions().then((value) => {\n if (value.receive == 'granted') {\n resolve(true);\n } else if (value.receive == 'prompt' || value.receive == 'denied') {\n resolve(false);\n }\n })\n })\n\n }\n\n loadOfferFromTap(notification: Type) {\n this.alertSvc.load();\n try {\n //get offer id\n //@tsi\n const notificationData = (notification.notification as LocalNotificationSchema)['data'];\n console.log('[notification] on open action ', notificationData)\n if (notification.actionId == 'offerParticipation' || notification.actionId == 'PARTICIPATE_OFFER') {\n ////get offer data and participate\n const offerId = notificationData.offerId\n console.log('opening offer ' + offerId + \" from notification\");\n } else if (!notification.actionId || notification.actionId == 'tap' || notification.actionId == 'open' || notification.actionId == 'offerParticipation'\n || notification.actionId == 'OPEN_OFFER') {\n ////get offer data and navigate\n const offerId = notificationData.offerId\n console.log('opening offer ' + offerId + \" from notification\");\n\n // @ts-ignore\n const data = (notification as any).notification.extra ? (notification as any).notification.extra : (notification as any).notification.data;\n console.log('[notification] - opening offer from ' + typeof (notification), notification)\n console.log('[notification] - opening offer data ' + typeof (notification), data, data.appUrl)\n let finalUrl;\n /*if (notificationData.offerId && notificationData.offerId > 0) {\n //genUrl\n finalUrl = '/client-offer-detail/' + notificationData.offerId\n } else */\n if (data.appUrl) {\n finalUrl = data.appUrl;\n if (finalUrl.indexOf('cdqapp://') == 0) {\n finalUrl = finalUrl.substr(8);\n }\n }\n console.log('[notification open] - will browse to ', finalUrl)\n if (finalUrl && finalUrl != null && finalUrl.length > 0) {\n this.tapOpened = true;\n setTimeout(() => {\n this.ngZone.run(() => {\n if (this.router.url.endsWith(finalUrl)) {\n console.log('route ending with tapped url', this.router.url);\n this.tapOpened = false;\n this.tapUrl = finalUrl;\n } else {\n this.router.navigateByUrl(finalUrl, {\n state: {\n type: 'notification',\n },\n }).then(value => {\n console.log('offer has been opened', this.tapUrl);\n });\n }\n })\n }, 2000);\n }\n }\n } catch (e) {\n console.log('error while navigating from notif', e)\n this.alertSvc.closeLoader();\n } finally {\n\n }\n }\n\n resetTapOpened(){\n this.tapOpened = false;\n }\n\n forwardNotification(notification:any) {\n const notif: LocalNotificationSchema = {\n id: this.notifId++,\n title: notification.data.title,\n body: notification.data.body,\n extra: {\n notificationId: notification.data.notificationInternalId,\n appUrl: notification.data.appUrl\n },\n channelId: 'cdq-android-notifications',\n actionTypeId: 'offerPush'\n };\n if (notification.data.imageLink) {\n notif.attachments = [{id: 'offerid', url: notification.data.imageLink}];\n }\n if (notification.data.appUrl) {\n if (notification.data.appUrl.indexOf('cdqapp://') == 0) {\n notif.extra.appUrl = notification.data.appUrl.substr(8);\n } else {\n notif.extra.appUrl = notification.data.appUrl;\n }\n }\n\n //if (this.platform.platforms().includes(\"android\") && this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) {\n LocalNotifications.schedule({notifications: [notif]});\n //}\n\n }\n\n updateDeviceToken() {\n try {\n const me = this;\n console.info('ON CALL, FCM token on service is ', me.fcmToken, this.fcmToken)\n if (this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) {\n\n Preferences.get({key: \"fcmToken\"}).then((options) => {\n let tokenSaved;\n if(options && options.value){\n tokenSaved = options.value;\n console.log('reloaded token', tokenSaved)\n } else {\n tokenSaved = undefined;\n }\n //load firebase id\n try {\n CDQCAPPlugin.firebaseInstallationId().then((res) => {\n console.log('firebase InApp Installation Id: ', res.firebaseInstallationId);\n App.getInfo().then(function (appInfo) {\n Device.getId().then(function (deviceIdHolder) {\n Device.getInfo().then(function (device) {\n const finalToken = me.fcmToken ? me.fcmToken : (tokenSaved ? tokenSaved : 'no_token_available');\n console.log('[notif] token found: ', finalToken)\n me.securityService.recordNotificationToken({\n devicePushToken: me.fcmToken ? me.fcmToken : 'no_token_available',\n version: device.osVersion,\n os: device.operatingSystem,\n model: device.model,\n manufacturer: device.manufacturer,\n deviceName: device.name,\n appVersion: appInfo.version,\n appBuild: appInfo.build,\n appName: appInfo.name,\n appId: appInfo.id,\n deviceUuid: deviceIdHolder.identifier,\n firebaseInstallId: res.firebaseInstallationId,\n gitVersion: gitVersion.commit,\n ionicChanel: me.envService.ionicDeployChannel\n }).subscribe((r) => {\n console.log(\"account updated with fcm token and devic id\", r);\n });\n })\n });\n });\n })\n }catch (e){\n console.log('unable to load firebase installation id')\n }\n });\n\n\n }\n } catch (e) {\n console.log('error while updating device token and id on API', e);\n }\n\n }\n\n updateDeviceTokenWhenLoggedId(res:any) {\n try {\n const me = this;\n console.info('ON CALL, FCM token on service is ', me.fcmToken, this.fcmToken);\n if (this.platform.platforms().includes(\"mobile\") && !this.platform.platforms().includes(\"mobileweb\")) {\n Preferences.get({key: \"fcmToken\"}).then((options) => {\n let tokenSaved;\n if (options && options.value) {\n tokenSaved = options.value;\n console.log('reloaded token', tokenSaved)\n } else {\n tokenSaved = undefined;\n }\n\n CDQCAPPlugin.firebaseInstallationId().then((res) => {\n console.log('firebase InApp Installation Id: ', res.firebaseInstallationId);\n\n App.getInfo().then(function (appInfo) {\n Device.getId().then(function (deviceIdHolder) {\n Device.getInfo().then(function (device) {\n const finalToken = me.fcmToken ? me.fcmToken : (tokenSaved ? tokenSaved : 'no_token_available');\n console.log('[notif] token found: ', finalToken)\n me.securityService.recordNotificationTokenWithAccount({\n devicePushToken: finalToken,\n version: device.osVersion,\n os: device.operatingSystem,\n model: device.model,\n manufacturer: device.manufacturer,\n deviceName: device.name,\n appVersion: appInfo.version,\n appBuild: appInfo.build,\n appName: appInfo.name,\n appId: appInfo.id,\n deviceUuid: deviceIdHolder.identifier,\n firebaseInstallId: res.firebaseInstallationId,\n gitVersion: gitVersion.commit,\n ionicChanel: me.envService.ionicDeployChannel\n }).subscribe((r) => {\n console.log(\"account updated with fcm token and devic id\", r);\n });\n })\n });\n });\n });\n });\n }\n } catch (e) {\n console.log('error while updating device token and id on API', e);\n }\n }\n\n listenForMessages() {\n /*this.messagingService.getMessages().subscribe(async (msg: any) => {\n console.log(\"New message\", msg);\n console.log('Body notif', msg.notification.body)\n this.notifContent = msg\n this.notificationService.storeNotification(this.notifContent)\n this.sharedService.sendNotifEvent()\n });*/\n }\n\n requestPermission() {\n\n }\n}\n","import {ChangeDetectorRef, Injectable, NgZone} from '@angular/core';\nimport {Router} from \"@angular/router\";\nimport {Platform} from '@ionic/angular';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationService {\n\n public vendorPages: Array<{\n title: string,\n icon: string,\n url: string;\n }>\n\n public clientPages: Array<{\n title: string,\n icon: string,\n url: string;\n }>\n\n public offlinePages: Array<{\n title: string,\n icon?: string,\n url?: string,\n action?: any,\n }>\n\n isA = '/offline/home-web'\n\n userRole = ''\n\n countNotifications = 0\n vendorVersion = false\n\n isHomeVendor = false\n isLoggedIn = false\n\n private changeDetectorRef: ChangeDetectorRef;\n\n\n constructor(\n private router: Router,\n public platform: Platform,\n private ngZone: NgZone,\n ) {\n }\n\n setChangeDetector(ch: ChangeDetectorRef) {\n this.changeDetectorRef = ch;\n }\n\n showNavigation() {\n\n if (this.platform.platforms().includes('desktop')) {\n this.clientPages = [\n {title: 'Recherche', icon: 'search', url: '/clients/client-map'},\n {title: 'Accueil', icon: 'home', url: '/offline/home-web'},\n {title: 'Mon profil', icon: 'person', url: '/clients/client-options/profile'},\n {title: 'Mes favoris', icon: 'heart', url: '/clients/client-options/favoris'},\n {title: 'Mes participations', icon: 'qr-code', url: '/clients/client-options/participations'},\n {title: 'Mes préférences', icon: 'heart-outline', url: '/clients/client-options/preferences'},\n {title: 'Mon portefeuille', icon: 'wallet', url: '/clients/client-options/portefeuille'},\n {title: 'Mes parrainages', icon: 'person-add', url: '/clients/client-options/parrainages'},\n {title: 'Contact', icon: 'call', url: '/clients/client-options/contact'},\n {title: 'Paramètres', icon: 'settings', url: '/clients/client-options/client-parameters'}\n ]\n } else {\n this.clientPages = [\n {title: 'Mes offres', icon: 'grid', url: '/clients/client-map'},\n {title: 'Mon profil', icon: 'person', url: '/clients/client-options/profile'},\n {title: 'Mes favoris', icon: 'heart', url: '/clients/client-options/favoris'},\n {title: 'Mes participations', icon: 'qr-code', url: '/clients/client-options/participations'},\n {title: 'Mon portefeuille', icon: 'wallet', url: '/clients/client-options/portefeuille'},\n {title: 'Mes parrainages', icon: 'person-add', url: '/clients/client-options/parrainages'},\n {title: 'Contact', icon: 'call', url: '/clients/client-options/contact'},\n ]\n }\n\n }\n\n refresh(loggedIn: boolean, userRole: string) {\n this.userRole = userRole;\n this.ngZone.run(() => {\n if (loggedIn) {\n this.isLoggedIn = true;\n this.showNavigation();\n } else {\n this.userRole = 'OFFLINE'\n this.offlinePages = [\n // {title: 'Accueil', icon: 'home', url: '/offline/home-web'},\n // {title: 'Contact', icon: 'mail-outline', url: '/clients/client-options/contact'},\n // {title: 'Aide', icon: 'help', url: '/offline/faq'},\n ]\n this.changeDetectorRef.detectChanges();\n }\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SharedService {\n private offer = new Subject()\n\n private delete = new Subject()\n\n private participation = new Subject()\n\n private cancelParticipation = new Subject()\n\n private register = new Subject()\n\n private draftOffer = new Subject()\n\n private updateOffer = new Subject()\n\n private updateImage = new Subject()\n\n private researchOffer = new Subject()\n\n private researchVendor = new Subject()\n\n private applyFilter = new Subject()\n\n private deleteNotif = new Subject()\n\n private notif = new Subject()\n\n private imgRivUpdate = new Subject()\n\n private imgComUpdate = new Subject()\n\n private refreshOfferViewEvent = new Subject()\n\n private token = new Subject();\n\n private idpHint = new Subject();\n\n private refreshHome = new Subject();\n\n sendRefreshHome() {\n console.log('[shared service] sendRefreshHome Event')\n this.refreshHome.next(null);\n }\n\n getRefreshHome(): Observable {\n console.log('[shared service] Get refreshHome Event');\n return this.refreshHome.asObservable();\n }\n\n sendImgComUpdate() {\n console.log('[shared service] Send imgComUpdate Event')\n this.imgComUpdate.next(null);\n }\n\n getImgComUpdate():Observable {\n console.log('[shared service] Get imgComUpdate Event');\n return this.imgComUpdate.asObservable();\n }\n\n sendImgRivUpdate() {\n console.log('[shared service] Send imgRivUpdate Event')\n this.imgRivUpdate.next(null);\n }\n\n getImgRivUpdate():Observable {\n console.log('[shared service] Get imgRivUpdate Event');\n return this.imgRivUpdate.asObservable();\n }\n\n sendNotifEvent() {\n console.log('[shared service] Send Notif Event')\n this.notif.next(null);\n }\n\n getNotifEvent():Observable {\n console.log('[shared service] Get notif Event');\n return this.notif.asObservable();\n }\n\n sendDeleteNotifEvent() {\n console.log('[shared service] Send Delete Notif Event')\n this.deleteNotif.next(null);\n }\n\n getDeleteNotifEvent():Observable {\n console.log('[shared service] Get delete notif Event');\n return this.deleteNotif.asObservable();\n }\n\n sendApplyFilterEvent() {\n console.log('[shared service] Send Apply Filter Event')\n this.applyFilter.next(null);\n }\n\n getApplyFilterEvent():Observable {\n console.log('[shared service] Get Apply Filter Event');\n return this.applyFilter.asObservable();\n }\n\n\n sendDraftEvent(object: any) {\n console.log('[shared service] Send Draft Event', object)\n this.draftOffer.next(object);\n }\n\n getDraftEvent():Observable {\n console.log('[shared service] Get Draft Event');\n return this.draftOffer.asObservable();\n }\n\n sendResearchVendorEvent(object: any) {\n console.log('[shared service] Send Research Vendor Event', object)\n this.researchVendor.next(object);\n\n }\n\n getResearchVendorEvent():Observable {\n console.log('[shared service] Get Research Vendor Event');\n return this.researchVendor.asObservable();\n }\n\n sendResearchOfferEvent(object: any) {\n console.log('[shared service] Send Research Offer Event', object)\n this.researchOffer.next(object);\n\n }\n\n getResearchOfferEvent():Observable {\n console.log('[shared service] Get Research Offer Event');\n return this.researchOffer.asObservable();\n }\n\n sendUpdateImageEvent() {\n console.log('[shared service] Send Update Image Event')\n this.updateImage.next(null);\n }\n\n getUpdateImageEvent():Observable {\n console.log('[shared service] Get Update Image Event');\n return this.updateImage.asObservable();\n }\n\n sendUpdateOfferEvent() {\n console.log('[shared service] Send Update Offer Event')\n this.updateOffer.next(null);\n }\n\n getUpdateOfferEvent():Observable {\n console.log('Get Update Offer Event');\n return this.updateOffer.asObservable();\n }\n\n sendRegisterEvent() {\n console.log('[shared service] Send Register Event')\n this.register.next(null);\n }\n getRegisterEvent():Observable {\n console.log('[shared service] Get Register Event');\n return this.register.asObservable();\n }\n\n\n sendOfferEvent() {\n console.log('[shared service] Send Offer Click Event')\n this.offer.next(null);\n }\n getOfferEvent():Observable {\n console.log('[shared service] Get Offer Click Event')\n return this.offer.asObservable();\n }\n\n sendDeleteEvent() {\n console.log('[shared service] Send Delete Click Event')\n this.delete.next(null);\n }\n\n getDeleteEvent():Observable {\n console.log('[shared service] Get Delete Offer Click Event')\n return this.delete.asObservable();\n }\n\n sendParticipationEvent() {\n console.log('[shared service] Send Participation Event')\n this.participation.next(null);\n }\n\n getParticipationEvent():Observable {\n console.log('[shared service] Get Participation Event')\n return this.participation.asObservable();\n }\n\n sendCancelParticipationEvent() {\n console.log('[shared service] Send Cancel Participation event')\n this.cancelParticipation.next(null);\n }\n\n getCancelParticipationEvent():Observable {\n console.log('[shared service] Get Cancel Participation event')\n return this.cancelParticipation.asObservable();\n }\n\n sendRefreshOfferViewEvent(){\n this.refreshOfferViewEvent.next(null);\n }\n\n getRefreshOfferViewEvent():Observable{\n return this.refreshOfferViewEvent.asObservable();\n }\n\n sendToken(token: any) {\n console.log('[shared service] Send Token :', token);\n this.token.next(token);\n }\n\n getToken() {\n console.log('[shared service] Get Token');\n return this.token.asObservable();\n }\n\n setIdpHint(provider: any) {\n console.log('[shared service] provider :', provider);\n this.idpHint.next(provider);\n }\n\n getIdpHint(provider: any) {\n console.log('[shared service] provider :', provider);\n this.idpHint.asObservable();\n }\n}\n","export const environment = {\n production: false\n};\n","export const gitVersion = {\n \"commit\": \"740dd00\",\n \"commitLong\": \"740dd00a110ae8c0adaf48b2b8e5fe57fafc4db8\",\n \"branch\": \"Detached: 740dd00a110ae8c0adaf48b2b8e5fe57fafc4db8\",\n \"tag\": \"v1.3.15\",\n \"tagFirst\": \"v1.3.15\"\n}","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport { defineCustomElements } from '@ionic/pwa-elements/loader';\nimport { gitVersion } from 'src/environments/git-version';\nimport * as Sentry from \"@sentry/angular\";\nimport {BrowserTracing} from \"@sentry/tracing\";\n\nSentry.init(\n {\n dsn: window[\"__env\"].sentryUrl, \n release: 'cdq@' + gitVersion.branch,\n dist: gitVersion.commit,\n tracesSampleRate: 1.0,\n debug: true,\n enabled: true,\n ignoreErrors: [],\n environment: 'testing',\n integrations: [\n new BrowserTracing({\n tracingOrigins: ['localhost:9191', window['__env'].apiUrl],\n }),\n ]\n }\n);\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n\n\n\ndefineCustomElements(window);\n","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root, factory) {\n if ( typeof exports === 'object' ) {\n if ( typeof module === 'object' ) {\n module.exports = factory( require(\"js-sha256\"), require(\"base64-js\") );\n } else {\n exports[\"keycloak\"] = factory( require(\"js-sha256\"), require(\"base64-js\") );\n }\n } else {\n /**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n !function () { \"use strict\"; function t(t, i) { i ? (d[0] = d[16] = d[1] = d[2] = d[3] = d[4] = d[5] = d[6] = d[7] = d[8] = d[9] = d[10] = d[11] = d[12] = d[13] = d[14] = d[15] = 0, this.blocks = d) : this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], t ? (this.h0 = 3238371032, this.h1 = 914150663, this.h2 = 812702999, this.h3 = 4144912697, this.h4 = 4290775857, this.h5 = 1750603025, this.h6 = 1694076839, this.h7 = 3204075428) : (this.h0 = 1779033703, this.h1 = 3144134277, this.h2 = 1013904242, this.h3 = 2773480762, this.h4 = 1359893119, this.h5 = 2600822924, this.h6 = 528734635, this.h7 = 1541459225), this.block = this.start = this.bytes = this.hBytes = 0, this.finalized = this.hashed = !1, this.first = !0, this.is224 = t } function i(i, r, s) { var e, n = typeof i; if (\"string\" === n) { var o, a = [], u = i.length, c = 0; for (e = 0; e < u; ++e)(o = i.charCodeAt(e)) < 128 ? a[c++] = o : o < 2048 ? (a[c++] = 192 | o >> 6, a[c++] = 128 | 63 & o) : o < 55296 || o >= 57344 ? (a[c++] = 224 | o >> 12, a[c++] = 128 | o >> 6 & 63, a[c++] = 128 | 63 & o) : (o = 65536 + ((1023 & o) << 10 | 1023 & i.charCodeAt(++e)), a[c++] = 240 | o >> 18, a[c++] = 128 | o >> 12 & 63, a[c++] = 128 | o >> 6 & 63, a[c++] = 128 | 63 & o); i = a } else { if (\"object\" !== n) throw new Error(h); if (null === i) throw new Error(h); if (f && i.constructor === ArrayBuffer) i = new Uint8Array(i); else if (!(Array.isArray(i) || f && ArrayBuffer.isView(i))) throw new Error(h) } i.length > 64 && (i = new t(r, !0).update(i).array()); var y = [], p = []; for (e = 0; e < 64; ++e) { var l = i[e] || 0; y[e] = 92 ^ l, p[e] = 54 ^ l } t.call(this, r, s), this.update(p), this.oKeyPad = y, this.inner = !0, this.sharedMemory = s } var h = \"input is invalid type\", r = \"object\" == typeof window, s = r ? window : {}; s.JS_SHA256_NO_WINDOW && (r = !1); var e = !r && \"object\" == typeof self, n = !s.JS_SHA256_NO_NODE_JS && \"object\" == typeof process && process.versions && process.versions.node; n ? s = global : e && (s = self); var o = !s.JS_SHA256_NO_COMMON_JS && \"object\" == typeof module && module.exports, a = \"function\" == typeof define && define.amd, f = !s.JS_SHA256_NO_ARRAY_BUFFER && \"undefined\" != typeof ArrayBuffer, u = \"0123456789abcdef\".split(\"\"), c = [-2147483648, 8388608, 32768, 128], y = [24, 16, 8, 0], p = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], l = [\"hex\", \"array\", \"digest\", \"arrayBuffer\"], d = []; !s.JS_SHA256_NO_NODE_JS && Array.isArray || (Array.isArray = function (t) { return \"[object Array]\" === Object.prototype.toString.call(t) }), !f || !s.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW && ArrayBuffer.isView || (ArrayBuffer.isView = function (t) { return \"object\" == typeof t && t.buffer && t.buffer.constructor === ArrayBuffer }); var A = function (i, h) { return function (r) { return new t(h, !0).update(r)[i]() } }, w = function (i) { var h = A(\"hex\", i); n && (h = b(h, i)), h.create = function () { return new t(i) }, h.update = function (t) { return h.create().update(t) }; for (var r = 0; r < l.length; ++r) { var s = l[r]; h[s] = A(s, i) } return h }, b = function (t, i) { var r = eval(\"require('crypto')\"), s = eval(\"require('buffer').Buffer\"), e = i ? \"sha224\" : \"sha256\", n = function (i) { if (\"string\" == typeof i) return r.createHash(e).update(i, \"utf8\").digest(\"hex\"); if (null === i || void 0 === i) throw new Error(h); return i.constructor === ArrayBuffer && (i = new Uint8Array(i)), Array.isArray(i) || ArrayBuffer.isView(i) || i.constructor === s ? r.createHash(e).update(new s(i)).digest(\"hex\") : t(i) }; return n }, v = function (t, h) { return function (r, s) { return new i(r, h, !0).update(s)[t]() } }, _ = function (t) { var h = v(\"hex\", t); h.create = function (h) { return new i(h, t) }, h.update = function (t, i) { return h.create(t).update(i) }; for (var r = 0; r < l.length; ++r) { var s = l[r]; h[s] = v(s, t) } return h }; t.prototype.update = function (t) { if (!this.finalized) { var i, r = typeof t; if (\"string\" !== r) { if (\"object\" !== r) throw new Error(h); if (null === t) throw new Error(h); if (f && t.constructor === ArrayBuffer) t = new Uint8Array(t); else if (!(Array.isArray(t) || f && ArrayBuffer.isView(t))) throw new Error(h); i = !0 } for (var s, e, n = 0, o = t.length, a = this.blocks; n < o;) { if (this.hashed && (this.hashed = !1, a[0] = this.block, a[16] = a[1] = a[2] = a[3] = a[4] = a[5] = a[6] = a[7] = a[8] = a[9] = a[10] = a[11] = a[12] = a[13] = a[14] = a[15] = 0), i) for (e = this.start; n < o && e < 64; ++n)a[e >> 2] |= t[n] << y[3 & e++]; else for (e = this.start; n < o && e < 64; ++n)(s = t.charCodeAt(n)) < 128 ? a[e >> 2] |= s << y[3 & e++] : s < 2048 ? (a[e >> 2] |= (192 | s >> 6) << y[3 & e++], a[e >> 2] |= (128 | 63 & s) << y[3 & e++]) : s < 55296 || s >= 57344 ? (a[e >> 2] |= (224 | s >> 12) << y[3 & e++], a[e >> 2] |= (128 | s >> 6 & 63) << y[3 & e++], a[e >> 2] |= (128 | 63 & s) << y[3 & e++]) : (s = 65536 + ((1023 & s) << 10 | 1023 & t.charCodeAt(++n)), a[e >> 2] |= (240 | s >> 18) << y[3 & e++], a[e >> 2] |= (128 | s >> 12 & 63) << y[3 & e++], a[e >> 2] |= (128 | s >> 6 & 63) << y[3 & e++], a[e >> 2] |= (128 | 63 & s) << y[3 & e++]); this.lastByteIndex = e, this.bytes += e - this.start, e >= 64 ? (this.block = a[16], this.start = e - 64, this.hash(), this.hashed = !0) : this.start = e } return this.bytes > 4294967295 && (this.hBytes += this.bytes / 4294967296 << 0, this.bytes = this.bytes % 4294967296), this } }, t.prototype.finalize = function () { if (!this.finalized) { this.finalized = !0; var t = this.blocks, i = this.lastByteIndex; t[16] = this.block, t[i >> 2] |= c[3 & i], this.block = t[16], i >= 56 && (this.hashed || this.hash(), t[0] = this.block, t[16] = t[1] = t[2] = t[3] = t[4] = t[5] = t[6] = t[7] = t[8] = t[9] = t[10] = t[11] = t[12] = t[13] = t[14] = t[15] = 0), t[14] = this.hBytes << 3 | this.bytes >>> 29, t[15] = this.bytes << 3, this.hash() } }, t.prototype.hash = function () { var t, i, h, r, s, e, n, o, a, f = this.h0, u = this.h1, c = this.h2, y = this.h3, l = this.h4, d = this.h5, A = this.h6, w = this.h7, b = this.blocks; for (t = 16; t < 64; ++t)i = ((s = b[t - 15]) >>> 7 | s << 25) ^ (s >>> 18 | s << 14) ^ s >>> 3, h = ((s = b[t - 2]) >>> 17 | s << 15) ^ (s >>> 19 | s << 13) ^ s >>> 10, b[t] = b[t - 16] + i + b[t - 7] + h << 0; for (a = u & c, t = 0; t < 64; t += 4)this.first ? (this.is224 ? (e = 300032, w = (s = b[0] - 1413257819) - 150054599 << 0, y = s + 24177077 << 0) : (e = 704751109, w = (s = b[0] - 210244248) - 1521486534 << 0, y = s + 143694565 << 0), this.first = !1) : (i = (f >>> 2 | f << 30) ^ (f >>> 13 | f << 19) ^ (f >>> 22 | f << 10), r = (e = f & u) ^ f & c ^ a, w = y + (s = w + (h = (l >>> 6 | l << 26) ^ (l >>> 11 | l << 21) ^ (l >>> 25 | l << 7)) + (l & d ^ ~l & A) + p[t] + b[t]) << 0, y = s + (i + r) << 0), i = (y >>> 2 | y << 30) ^ (y >>> 13 | y << 19) ^ (y >>> 22 | y << 10), r = (n = y & f) ^ y & u ^ e, A = c + (s = A + (h = (w >>> 6 | w << 26) ^ (w >>> 11 | w << 21) ^ (w >>> 25 | w << 7)) + (w & l ^ ~w & d) + p[t + 1] + b[t + 1]) << 0, i = ((c = s + (i + r) << 0) >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10), r = (o = c & y) ^ c & f ^ n, d = u + (s = d + (h = (A >>> 6 | A << 26) ^ (A >>> 11 | A << 21) ^ (A >>> 25 | A << 7)) + (A & w ^ ~A & l) + p[t + 2] + b[t + 2]) << 0, i = ((u = s + (i + r) << 0) >>> 2 | u << 30) ^ (u >>> 13 | u << 19) ^ (u >>> 22 | u << 10), r = (a = u & c) ^ u & y ^ o, l = f + (s = l + (h = (d >>> 6 | d << 26) ^ (d >>> 11 | d << 21) ^ (d >>> 25 | d << 7)) + (d & A ^ ~d & w) + p[t + 3] + b[t + 3]) << 0, f = s + (i + r) << 0; this.h0 = this.h0 + f << 0, this.h1 = this.h1 + u << 0, this.h2 = this.h2 + c << 0, this.h3 = this.h3 + y << 0, this.h4 = this.h4 + l << 0, this.h5 = this.h5 + d << 0, this.h6 = this.h6 + A << 0, this.h7 = this.h7 + w << 0 }, t.prototype.hex = function () { this.finalize(); var t = this.h0, i = this.h1, h = this.h2, r = this.h3, s = this.h4, e = this.h5, n = this.h6, o = this.h7, a = u[t >> 28 & 15] + u[t >> 24 & 15] + u[t >> 20 & 15] + u[t >> 16 & 15] + u[t >> 12 & 15] + u[t >> 8 & 15] + u[t >> 4 & 15] + u[15 & t] + u[i >> 28 & 15] + u[i >> 24 & 15] + u[i >> 20 & 15] + u[i >> 16 & 15] + u[i >> 12 & 15] + u[i >> 8 & 15] + u[i >> 4 & 15] + u[15 & i] + u[h >> 28 & 15] + u[h >> 24 & 15] + u[h >> 20 & 15] + u[h >> 16 & 15] + u[h >> 12 & 15] + u[h >> 8 & 15] + u[h >> 4 & 15] + u[15 & h] + u[r >> 28 & 15] + u[r >> 24 & 15] + u[r >> 20 & 15] + u[r >> 16 & 15] + u[r >> 12 & 15] + u[r >> 8 & 15] + u[r >> 4 & 15] + u[15 & r] + u[s >> 28 & 15] + u[s >> 24 & 15] + u[s >> 20 & 15] + u[s >> 16 & 15] + u[s >> 12 & 15] + u[s >> 8 & 15] + u[s >> 4 & 15] + u[15 & s] + u[e >> 28 & 15] + u[e >> 24 & 15] + u[e >> 20 & 15] + u[e >> 16 & 15] + u[e >> 12 & 15] + u[e >> 8 & 15] + u[e >> 4 & 15] + u[15 & e] + u[n >> 28 & 15] + u[n >> 24 & 15] + u[n >> 20 & 15] + u[n >> 16 & 15] + u[n >> 12 & 15] + u[n >> 8 & 15] + u[n >> 4 & 15] + u[15 & n]; return this.is224 || (a += u[o >> 28 & 15] + u[o >> 24 & 15] + u[o >> 20 & 15] + u[o >> 16 & 15] + u[o >> 12 & 15] + u[o >> 8 & 15] + u[o >> 4 & 15] + u[15 & o]), a }, t.prototype.toString = t.prototype.hex, t.prototype.digest = function () { this.finalize(); var t = this.h0, i = this.h1, h = this.h2, r = this.h3, s = this.h4, e = this.h5, n = this.h6, o = this.h7, a = [t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, i >> 24 & 255, i >> 16 & 255, i >> 8 & 255, 255 & i, h >> 24 & 255, h >> 16 & 255, h >> 8 & 255, 255 & h, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, s >> 24 & 255, s >> 16 & 255, s >> 8 & 255, 255 & s, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e, n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, 255 & n]; return this.is224 || a.push(o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o), a }, t.prototype.array = t.prototype.digest, t.prototype.arrayBuffer = function () { this.finalize(); var t = new ArrayBuffer(this.is224 ? 28 : 32), i = new DataView(t); return i.setUint32(0, this.h0), i.setUint32(4, this.h1), i.setUint32(8, this.h2), i.setUint32(12, this.h3), i.setUint32(16, this.h4), i.setUint32(20, this.h5), i.setUint32(24, this.h6), this.is224 || i.setUint32(28, this.h7), t }, i.prototype = new t, i.prototype.finalize = function () { if (t.prototype.finalize.call(this), this.inner) { this.inner = !1; var i = this.array(); t.call(this, this.is224, this.sharedMemory), this.update(this.oKeyPad), this.update(i), t.prototype.finalize.call(this) } }; var B = w(); B.sha256 = B, B.sha224 = w(!0), B.sha256.hmac = _(), B.sha224.hmac = _(!0), o ? module.exports = B : (s.sha256 = B.sha256, s.sha224 = B.sha224, a && define(function () { return B })) }();\n\n /**\n * [base64-js]{@link https://github.com/beatgammit/base64-js}\n *\n * @version v1.3.0\n * @author Kirill, Fomichev\n * @copyright Kirill, Fomichev 2014\n * @license MIT\n */\n (function (r) { if (typeof exports === \"object\" && typeof module !== \"undefined\") { module.exports = r() } else if (typeof define === \"function\" && define.amd) { define([], r) } else { var e; if (typeof window !== \"undefined\") { e = window } else if (typeof global !== \"undefined\") { e = global } else if (typeof self !== \"undefined\") { e = self } else { e = this } e.base64js = r() } })(function () { var r, e, n; return function () { function r(e, n, t) { function o(f, i) { if (!n[f]) { if (!e[f]) { var u = \"function\" == typeof require && require; if (!i && u) return u(f, !0); if (a) return a(f, !0); var v = new Error(\"Cannot find module '\" + f + \"'\"); throw v.code = \"MODULE_NOT_FOUND\", v } var d = n[f] = { exports: {} }; e[f][0].call(d.exports, function (r) { var n = e[f][1][r]; return o(n || r) }, d, d.exports, r, e, n, t) } return n[f].exports } for (var a = \"function\" == typeof require && require, f = 0; f < t.length; f++)o(t[f]); return o } return r }()({ \"/\": [function (r, e, n) { \"use strict\"; n.byteLength = d; n.toByteArray = h; n.fromByteArray = p; var t = []; var o = []; var a = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array; var f = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"; for (var i = 0, u = f.length; i < u; ++i) { t[i] = f[i]; o[f.charCodeAt(i)] = i } o[\"-\".charCodeAt(0)] = 62; o[\"_\".charCodeAt(0)] = 63; function v(r) { var e = r.length; if (e % 4 > 0) { throw new Error(\"Invalid string. Length must be a multiple of 4\") } var n = r.indexOf(\"=\"); if (n === -1) n = e; var t = n === e ? 0 : 4 - n % 4; return [n, t] } function d(r) { var e = v(r); var n = e[0]; var t = e[1]; return (n + t) * 3 / 4 - t } function c(r, e, n) { return (e + n) * 3 / 4 - n } function h(r) { var e; var n = v(r); var t = n[0]; var f = n[1]; var i = new a(c(r, t, f)); var u = 0; var d = f > 0 ? t - 4 : t; for (var h = 0; h < d; h += 4) { e = o[r.charCodeAt(h)] << 18 | o[r.charCodeAt(h + 1)] << 12 | o[r.charCodeAt(h + 2)] << 6 | o[r.charCodeAt(h + 3)]; i[u++] = e >> 16 & 255; i[u++] = e >> 8 & 255; i[u++] = e & 255 } if (f === 2) { e = o[r.charCodeAt(h)] << 2 | o[r.charCodeAt(h + 1)] >> 4; i[u++] = e & 255 } if (f === 1) { e = o[r.charCodeAt(h)] << 10 | o[r.charCodeAt(h + 1)] << 4 | o[r.charCodeAt(h + 2)] >> 2; i[u++] = e >> 8 & 255; i[u++] = e & 255 } return i } function s(r) { return t[r >> 18 & 63] + t[r >> 12 & 63] + t[r >> 6 & 63] + t[r & 63] } function l(r, e, n) { var t; var o = []; for (var a = e; a < n; a += 3) { t = (r[a] << 16 & 16711680) + (r[a + 1] << 8 & 65280) + (r[a + 2] & 255); o.push(s(t)) } return o.join(\"\") } function p(r) { var e; var n = r.length; var o = n % 3; var a = []; var f = 16383; for (var i = 0, u = n - o; i < u; i += f) { a.push(l(r, i, i + f > u ? u : i + f)) } if (o === 1) { e = r[n - 1]; a.push(t[e >> 2] + t[e << 4 & 63] + \"==\") } else if (o === 2) { e = (r[n - 2] << 8) + r[n - 1]; a.push(t[e >> 10] + t[e >> 4 & 63] + t[e << 2 & 63] + \"=\") } return a.join(\"\") } }, {}] }, {}, [])(\"/\") });\n\n /**\n * [promise-polyfill]{@link https://github.com/taylorhakes/promise-polyfill}\n *\n * @version v8.1.3\n * @author Hakes, Taylor\n * @copyright Hakes, Taylor 2014\n * @license MIT\n */\n !function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n():\"function\"==typeof define&&define.amd?define(n):n()}(0,function(){\"use strict\";function e(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})}function n(e){return!(!e||\"undefined\"==typeof e.length)}function t(){}function o(e){if(!(this instanceof o))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],c(e,this)}function r(e,n){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,o._immediateFn(function(){var t=1===e._state?n.onFulfilled:n.onRejected;if(null!==t){var o;try{o=t(e._value)}catch(r){return void f(n.promise,r)}i(n.promise,o)}else(1===e._state?i:f)(n.promise,e._value)})):e._deferreds.push(n)}function i(e,n){try{if(n===e)throw new TypeError(\"A promise cannot be resolved with itself.\");if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var t=n.then;if(n instanceof o)return e._state=3,e._value=n,void u(e);if(\"function\"==typeof t)return void c(function(e,n){return function(){e.apply(n,arguments)}}(t,n),e)}e._state=1,e._value=n,u(e)}catch(r){f(e,r)}}function f(e,n){e._state=2,e._value=n,u(e)}function u(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var n=0,t=e._deferreds.length;t>n;n++)r(e,e._deferreds[n]);e._deferreds=null}function c(e,n){var t=!1;try{e(function(e){t||(t=!0,i(n,e))},function(e){t||(t=!0,f(n,e))})}catch(o){if(t)return;t=!0,f(n,o)}}var a=setTimeout;o.prototype[\"catch\"]=function(e){return this.then(null,e)},o.prototype.then=function(e,n){var o=new this.constructor(t);return r(this,new function(e,n,t){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof n?n:null,this.promise=t}(e,n,o)),o},o.prototype[\"finally\"]=e,o.all=function(e){return new o(function(t,o){function r(e,n){try{if(n&&(\"object\"==typeof n||\"function\"==typeof n)){var u=n.then;if(\"function\"==typeof u)return void u.call(n,function(n){r(e,n)},o)}i[e]=n,0==--f&&t(i)}catch(c){o(c)}}if(!n(e))return o(new TypeError(\"Promise.all accepts an array\"));var i=Array.prototype.slice.call(e);if(0===i.length)return t([]);for(var f=i.length,u=0;i.length>u;u++)r(u,i[u])})},o.resolve=function(e){return e&&\"object\"==typeof e&&e.constructor===o?e:new o(function(n){n(e)})},o.reject=function(e){return new o(function(n,t){t(e)})},o.race=function(e){return new o(function(t,r){if(!n(e))return r(new TypeError(\"Promise.race accepts an array\"));for(var i=0,f=e.length;f>i;i++)o.resolve(e[i]).then(t,r)})},o._immediateFn=\"function\"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){a(e,0)},o._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)};var l=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw Error(\"unable to locate global object\")}();\"Promise\"in l?l.Promise.prototype[\"finally\"]||(l.Promise.prototype[\"finally\"]=e):l.Promise=o});\n\n var Keycloak = factory( root[\"sha256\"], root[\"base64js\"] );\n root[\"Keycloak\"] = Keycloak;\n\n if ( typeof define === \"function\" && define.amd ) {\n define( \"keycloak\", [], function () { return Keycloak; } );\n }\n }\n})(window, function (sha256_imported, base64js_imported) {\n if (typeof Promise === 'undefined') {\n throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');\n }\n\n var loggedPromiseDeprecation = false;\n\n function logPromiseDeprecation() {\n if (!loggedPromiseDeprecation) {\n loggedPromiseDeprecation = true;\n console.warn('[KEYCLOAK] Usage of legacy style promise methods such as `.error()` and `.success()` has been deprecated and support will be removed in future versions. Use standard style promise methods such as `.then() and `.catch()` instead.');\n }\n }\n\n function Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n return new Keycloak(config);\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if ((scripts[i].src.indexOf('keycloak.js') !== -1 || scripts[i].src.indexOf('keycloak.min.js') !== -1) && scripts[i].src.indexOf('version=') !== -1) {\n kc.iframeVersion = scripts[i].src.substring(scripts[i].src.indexOf('version=') + 8).split('&')[0];\n }\n }\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n kc.init = function (initOptions) {\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native', 'capacitor', 'capacitor-native'];\n\n if (initOptions && adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (initOptions && typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n }else if (window.Capacitor || window.capacitor){\n adapter = loadAdapter('capacitor-native');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (initOptions) {\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (initOptions.pkceMethod) {\n if (initOptions.pkceMethod !== \"S256\") {\n throw 'Invalid value for pkceMethod';\n }\n kc.pkceMethod = initOptions.pkceMethod;\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(errorData) {\n promise.setError(errorData);\n });\n\n var configPromise = loadConfig(config);\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function () {\n initPromise.setError();\n });\n }\n\n var checkSsoSilently = function() {\n var ifrm = document.createElement(\"iframe\");\n var src = kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function () {\n initPromise.setError();\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (e) {\n initPromise.setError();\n });\n } else if (initOptions) {\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function () {\n initPromise.setError();\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function() {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError();\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n } else {\n initPromise.setSuccess();\n }\n }\n\n function domReady() {\n var promise = createPromise();\n\n var checkReadyState = function () {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n document.removeEventListener('readystatechange', checkReadyState);\n promise.setSuccess();\n }\n }\n document.addEventListener('readystatechange', checkReadyState);\n\n checkReadyState(); // just in case the event was already fired and we missed it (in case the init is done later than at the load time, i.e. it's done from code)\n\n return promise.promise;\n }\n\n configPromise.then(function () {\n domReady().then(check3pCookiesSupported).then(processInit)\n .catch(function() {\n promise.setError();\n });\n });\n configPromise.catch(function() {\n promise.setError();\n });\n\n return promise.promise;\n }\n\n kc.login = function (options) {\n return adapter.login(options);\n }\n\n function generateRandomData(len) {\n // use web crypto APIs if possible\n var array = null;\n var crypto = window.crypto || window.msCrypto;\n if (crypto && crypto.getRandomValues && window.Uint8Array) {\n array = new Uint8Array(len);\n crypto.getRandomValues(array);\n return array;\n }\n\n // fallback to Math random\n array = new Array(len);\n for (var j = 0; j < array.length; j++) {\n array[j] = Math.floor(256 * Math.random());\n }\n return array;\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n function generatePkceChallenge(pkceMethod, codeVerifier) {\n switch (pkceMethod) {\n // The use of the \"plain\" method is considered insecure and therefore not supported.\n case \"S256\":\n // hash codeVerifier, then encode as url-safe base64 without padding\n var hashBytes = new Uint8Array(sha256_imported.arrayBuffer(codeVerifier));\n var encodedHash = base64js_imported.fromByteArray(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n return encodedHash;\n default:\n throw 'Invalid value for pkceMethod';\n }\n }\n\n kc.createLoginUrl = function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri)\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && options.maxAge) {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (kc.pkceMethod) {\n var codeVerifier = generateCodeVerifier(96);\n callbackState.pkceCodeVerifier = codeVerifier;\n var pkceChallenge = generatePkceChallenge(kc.pkceMethod, codeVerifier);\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n }\n\n kc.logout = function(options) {\n return adapter.logout(options);\n }\n\n\n kc.createLogoutUrl = function(options) {\n var url = kc.endpoints.logout()\n + '?redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n return url;\n }\n\n kc.register = function (options) {\n return adapter.register(options);\n }\n\n kc.createRegisterUrl = function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return kc.createLoginUrl(options);\n }\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n }\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n }\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n }\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(true);\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n }\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function() {\n promise.setError();\n });\n } else {\n exec();\n }\n\n return promise.promise;\n }\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n }\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status']);\n }\n\n if (error) {\n if (prompt != 'none') {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n var sucessData = oauth;\n authSuccess(oauth.access_token, null, oauth.id_token, true, sucessData);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard', oauth);\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise, data) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && ((kc.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n if(kc.onAuthSuccess){\n if(data){\n kc.onAuthSuccess(data);\n } else {\n kc.onAuthSuccess();\n }\n }\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig(url) {\n var promise = createPromise();\n var configUrl;\n\n if (!config) {\n configUrl = 'keycloak.json';\n } else if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n thirdPartyCookiesIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n }\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n if (!config.clientId) {\n throw 'clientId missing';\n }\n\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n if (!config['url']) {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].src.match(/.*keycloak\\.js/)) {\n config.url = scripts[i].src.substr(0, scripts[i].src.indexOf('/js/keycloak.js'));\n break;\n }\n }\n }\n if (!config.realm) {\n throw 'realm missing';\n }\n\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = decodeToken(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = decodeToken(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = decodeToken(token);\n kc.sessionId = kc.tokenParsed.session_state;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function decodeToken(str) {\n str = str.split('.')[1];\n\n str = str.replace(/-/g, '+');\n str = str.replace(/_/g, '/');\n switch (str.length % 4) {\n case 0:\n break;\n case 2:\n str += '==';\n break;\n case 3:\n str += '=';\n break;\n default:\n throw 'Invalid token';\n }\n\n str = decodeURIComponent(escape(atob(str)));\n\n str = JSON.parse(str);\n return str;\n }\n\n function createUUID() {\n var hexDigits = '0123456789abcdef';\n var s = generateRandomString(36, hexDigits).split(\"\");\n s[14] = '4';\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\n s[8] = s[13] = s[18] = s[23] = '-';\n var uuid = s.join('');\n return uuid;\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n console.log('cdq path: oauth is undefined after parsing')\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n console.log('cdq path: callback parser: ', url, kc.flow)\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n console.log('cdq path: kc resp mode: ' + kc.responseMode)\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n console.log('[keycloak js] param parsing: ', paramsString, supportedParams);\n var p = paramsString.split('&');\n console.log('p: ', p);\n var result = {\n paramsString: '',\n oauthParams: {}\n }\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n console.log('[keycloak js] param parsing result', result);\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n p.promise.success = function(callback) {\n logPromiseDeprecation();\n\n this.then(function handleSuccess(value) {\n callback(value);\n });\n\n return this;\n }\n\n p.promise.error = function(callback) {\n logPromiseDeprecation();\n\n this.catch(function handleError(error) {\n callback(error);\n });\n\n return this;\n }\n\n return p;\n }\n\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n }\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if (loginIframe.enable || kc.silentCheckSsoRedirectUri) {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n logWarn(\"[KEYCLOAK] 3rd party cookies aren't supported by this browser. checkLoginIframe and \" +\n \"silent check-sso are not available.\")\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function loadAdapter(type, appApi) {\n if (!type || type == 'default') {\n return {\n login: function(options) {\n window.location.replace(kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: function(options) {\n window.location.replace(kc.createLogoutUrl(options));\n return createPromise().promise;\n },\n\n register: function(options) {\n window.location.replace(kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n if (arguments.length == 1) {\n encodeHash = true;\n }\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n return {\n login: function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf('http://localhost') == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf('http://localhost') == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return 'http://localhost';\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: function(options) {\n var promise = createPromise();\n var loginUrl = kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n if (type == 'capacitor') {\n loginIframe.enable = false;\n\n return {\n\n login: function(options) {\n var promise = createPromise();\n var loginUrl = '';\n if(options.cdqSocial && options.cdqSocial.length > 0){\n loginUrl = options.cdqSocial;\n } else {\n loginUrl = kc.createLoginUrl(options);\n if(options.idpHint){\n\n }\n }\n console.log('CDQ Patch (capacitor): Login Url', loginUrl);\n\n var item = window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n console.log('CDQ Patch (capacitor): removing listener', item);\n if(item) { item.remove(); }\n console.log('CDQ Patch (capacitor): removing listener DONE', item);\n window.cordova.plugins.browsertab.close();\n\n console.log('CDQ Patch (capacitor): data', data);\n\n var oauth = parseCallback(data.url);\n console.log('CDQ Patch (capacitor) ', oauth)\n processCallback(oauth, promise);\n console.log('ending handle (capacitor): removing listener')\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n customLogout: function (redirectUri){\n var promise = createPromise();\n var logoutUrl = redirectUri;\n\n var item = window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n console.log('CDQ Patch (capacitor): removing listener', item);\n if(item) { item.remove(); }\n console.log('CDQ Patch(capacitor): removing listener DONE', item);\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n if(options.postRedirectUri){\n return this.customLogout(options.postRedirectUri)\n } else {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n var item = window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n console.log('CDQ Patch (capacitor): removing listener', item);\n if (item) {\n item.remove();\n }\n console.log('CDQ Patch(capacitor): removing listener DONE', item);\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n }\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(data.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n if (type == 'capacitor-native') {\n loginIframe.enable = false;\n\n return {\n login: function(options) {\n var promise = createPromise();\n var loginUrl = '';\n if(options.cdqSocial && options.cdqSocial.length > 0){\n loginUrl = options.cdqSocial;\n } else {\n loginUrl = kc.createLoginUrl(options);\n }\n console.log('CDQ Patch (capacitor-native): Login Url', loginUrl);\n\n const addUrlListener = window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n var oauth = parseCallback(data.url);\n processCallback(oauth, promise);\n addUrlListener.remove();\n });\n\n window.open(loginUrl,'_system');\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n const addUrlListener = window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n kc.clearToken();\n promise.setSuccess();\n addUrlListener.remove();\n });\n\n window.open(logoutUrl,'_system');\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n window.Capacitor.Plugins.App.addListener('appUrlOpen', (data) => {\n var oauth = parseCallback(data.url);\n processCallback(oauth, promise);\n });\n window.open(registerUrl,'_system');\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.open(accountUrl,'_system');\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n function clearExpired() {\n var time = new Date().getTime();\n for (var i = 0; i < localStorage.length; i++) {\n var key = localStorage.key(i);\n if (key && key.indexOf('kc-callback-') == 0) {\n var value = localStorage.getItem(key);\n if (value) {\n try {\n var expires = JSON.parse(value).expires;\n if (!expires || expires < time) {\n localStorage.removeItem(key);\n }\n } catch (err) {\n localStorage.removeItem(key);\n }\n }\n }\n }\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = 'kc-callback-' + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearExpired();\n return value;\n };\n\n cs.add = function(state) {\n clearExpired();\n\n var key = 'kc-callback-' + state.state;\n state.expires = new Date().getTime() + (60 * 60 * 1000);\n localStorage.setItem(key, JSON.stringify(state));\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie('kc-callback-' + state);\n setCookie('kc-callback-' + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n }\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n }\n\n return Keycloak;\n})\n","var map = {\n\t\"./super-tab-button_2.entry.js\": [\n\t\t95196,\n\t\t\"common\",\n\t\t\"node_modules_ionic-super-tabs_core_dist_esm_super-tab-button_2_entry_js\"\n\t],\n\t\"./super-tab-indicator.entry.js\": [\n\t\t61481,\n\t\t\"node_modules_ionic-super-tabs_core_dist_esm_super-tab-indicator_entry_js\"\n\t],\n\t\"./super-tab_3.entry.js\": [\n\t\t75652,\n\t\t\"common\",\n\t\t\"node_modules_ionic-super-tabs_core_dist_esm_super-tab_3_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 45222;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./ion-accordion_2.entry.js\": [\n\t\t70079,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-accordion_2_entry_js\"\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t25593,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-action-sheet_entry_js\"\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t13225,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-alert_entry_js\"\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t4812,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-app_8_entry_js\"\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t86655,\n\t\t\"node_modules_ionic_core_dist_esm_ion-avatar_3_entry_js\"\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t44856,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-back-button_entry_js\"\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t13059,\n\t\t\"node_modules_ionic_core_dist_esm_ion-backdrop_entry_js\"\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t58648,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-breadcrumb_2_entry_js\"\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t98308,\n\t\t\"node_modules_ionic_core_dist_esm_ion-button_2_entry_js\"\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t44690,\n\t\t\"node_modules_ionic_core_dist_esm_ion-card_5_entry_js\"\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t64090,\n\t\t\"node_modules_ionic_core_dist_esm_ion-checkbox_entry_js\"\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t36214,\n\t\t\"node_modules_ionic_core_dist_esm_ion-chip_entry_js\"\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t69447,\n\t\t\"node_modules_ionic_core_dist_esm_ion-col_3_entry_js\"\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t17950,\n\t\t\"default-node_modules_ionic_core_dist_esm_data-caf38df0_js-node_modules_ionic_core_dist_esm_th-d3ab8e\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime-button_entry_js\"\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t79689,\n\t\t\"default-node_modules_ionic_core_dist_esm_data-caf38df0_js-node_modules_ionic_core_dist_esm_th-d3ab8e\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime_3_entry_js\"\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t18840,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-fab_3_entry_js\"\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t40749,\n\t\t\"node_modules_ionic_core_dist_esm_ion-img_entry_js\"\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t69667,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-infinite-scroll_2_entry_js\"\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t83288,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-input_entry_js\"\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t35473,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item-option_3_entry_js\"\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t53634,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item_8_entry_js\"\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t22855,\n\t\t\"node_modules_ionic_core_dist_esm_ion-loading_entry_js\"\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t495,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-menu_3_entry_js\"\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t58737,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-modal_entry_js\"\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t99632,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-nav_2_entry_js\"\n\t],\n\t\"./ion-picker-column-internal.entry.js\": [\n\t\t54446,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-column-internal_entry_js\"\n\t],\n\t\"./ion-picker-internal.entry.js\": [\n\t\t32275,\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-internal_entry_js\"\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t48050,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-popover_entry_js\"\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t18994,\n\t\t\"node_modules_ionic_core_dist_esm_ion-progress-bar_entry_js\"\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t23592,\n\t\t\"node_modules_ionic_core_dist_esm_ion-radio_2_entry_js\"\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t35454,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-range_entry_js\"\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t290,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-refresher_2_entry_js\"\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t92666,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-reorder_2_entry_js\"\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t64816,\n\t\t\"node_modules_ionic_core_dist_esm_ion-ripple-effect_entry_js\"\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t45534,\n\t\t\"node_modules_ionic_core_dist_esm_ion-route_4_entry_js\"\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t94902,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-searchbar_entry_js\"\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t91938,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-segment_2_entry_js\"\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t78179,\n\t\t\"node_modules_ionic_core_dist_esm_ion-select_3_entry_js\"\n\t],\n\t\"./ion-slide_2.entry.js\": [\n\t\t90668,\n\t\t\"node_modules_ionic_core_dist_esm_ion-slide_2_entry_js\"\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t61624,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-spinner_entry_js\"\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t19989,\n\t\t\"node_modules_ionic_core_dist_esm_ion-split-pane_entry_js\"\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t28902,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab-bar_2_entry_js\"\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t70199,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab_2_entry_js\"\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t48395,\n\t\t\"node_modules_ionic_core_dist_esm_ion-text_entry_js\"\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t96357,\n\t\t\"node_modules_ionic_core_dist_esm_ion-textarea_entry_js\"\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t38268,\n\t\t\"node_modules_ionic_core_dist_esm_ion-toast_entry_js\"\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t15269,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-toggle_entry_js\"\n\t],\n\t\"./ion-virtual-scroll.entry.js\": [\n\t\t32875,\n\t\t\"node_modules_ionic_core_dist_esm_ion-virtual-scroll_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 50863;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./pwa-action-sheet.entry.js\": [\n\t\t45464,\n\t\t\"node_modules_ionic_pwa-elements_dist_esm_pwa-action-sheet_entry_js\"\n\t],\n\t\"./pwa-camera-modal-instance.entry.js\": [\n\t\t68724,\n\t\t\"node_modules_ionic_pwa-elements_dist_esm_pwa-camera-modal-instance_entry_js\"\n\t],\n\t\"./pwa-camera-modal.entry.js\": [\n\t\t8145,\n\t\t\"node_modules_ionic_pwa-elements_dist_esm_pwa-camera-modal_entry_js\"\n\t],\n\t\"./pwa-camera.entry.js\": [\n\t\t30527,\n\t\t\"node_modules_ionic_pwa-elements_dist_esm_pwa-camera_entry_js\"\n\t],\n\t\"./pwa-toast.entry.js\": [\n\t\t19036,\n\t\t\"node_modules_ionic_pwa-elements_dist_esm_pwa-toast_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 55899;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-ps\": 46235,\n\t\"./ar-ps.js\": 46235,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku-kmr\": 19619,\n\t\"./ku-kmr.js\": 19619,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["Component","ViewChild","Platform","ToastController","StatusBar","SplashScreen","Router","PublicService","SecurityService","Network","LiveUpdates","EnvService","GaService","KeycloakIonicService","AlertService","CDQCAPPlugin","gitVersion","AppComponent","constructor","platform","statusBar","router","securityService","toastCtrl","keycloak","envService","ga","publicService","alertService","checkConnection","then","status","checkApi","value","initializeApp","console","log","navigateByUrl","error","Promise","resolve","reject","getStatus","connected","catch","e","forEach","r","configureAndUpdate","platforms","includes","automaticUpdateEnabled","currentConfig","getConfig","channel","appId","setConfig","ionicDeployChannel","result","sync","activeApplicationPathChanged","runUpdate","reload","loadWithMessage","branch","commit","tag","initGa","ready","firebaseInstallationId","res","addListener","create","position","header","message","color","duration","buttons","side","text","role","handler","toast","present","isLoggedIn","apiV1SecurityLoadGet","userRole","userType","styleDefault","hide","fadeOutDuration","ngOnDestroy","popupOpenSubscription","unsubscribe","popupCloseSubscription","initializeSubscription","statusChangeSubscription","revokeChoiceSubscription","noCookieLawSubscription","args","static","selector","template","ChangeDetectorRef","MenuController","NavigationService","NavigationComponent","navigationService","keycloakService","menu","changeDetectorRef","ngOnInit","setChangeDetector","refresh","logout","login","closeMenu","close","backToHome","navigate","url","replaceUrl","Injectable","LoadingController","Subject","concatMap","distinctUntilChanged","LoaderProvider","loadingCtrl","initValues","loaderElement","lazyDismissTimer","loadingRequestsStream$","pipe","loader","createLoader","dismissLoader","subscribe","showLoader","msg","next","hideLoader","cssClass","spinner","setTimeout","dismiss","clearTimeout","providedIn","AlertController","alertController","loaderProvider","confirmAlert","btnName","alert","test","temp","time","action","closeAlert","infos","title","ask","btnValid","actionValid","btnError","actionError","confirm","BtnCancelName","photos","btnName2","action2","closeLoader","dismissAllPending","load","pp","rej","loadNoAsync","success","addGAScript","gtagScript","document","createElement","async","src","GA_TRACKING_ID","head","prepend","gtag","Date","send_page_view","addGAKey","gaScript1","innerText","gaScript","setAttribute","documentElement","firstChild","appendChild","isMobile","initRoutingEvent","NgZone","HttpClient","HttpHeaders","from","map","Keycloak_","KeycloakEventType","ModalController","AccountType","AuthProvider","CustomerProfilService","OAuthService","VendorProfilService","ActivatedRoute","NotificationsService","SharedService","KeycloakSocialLoginService","Preferences","AppConstants","appDefaultConnectedRoute","Keycloak","notificationService","vendorProfileService","ngZone","sharedEvent","route","keycloakSocialLoginService","oauthService","clientService","http","modalCtrl","bindsKeycloakEvents","_instance","onAuthError","errorData","_keycloakEvents$","type","OnAuthError","onAuthLogout","OnAuthLogout","onAuthRefreshSuccess","OnAuthRefreshSuccess","onAuthRefreshError","OnAuthRefreshError","onAuthSuccess","OnAuthSuccess","onTokenExpired","OnTokenExpired","onReady","authenticated","OnReady","loadExcludedUrls","bearerExcludedUrls","excludedUrls","item","excludedUrl","urlPattern","RegExp","httpMethods","push","initServiceValues","enableBearerInterceptor","loadUserProfileAtStartUp","authorizationHeaderName","bearerPrefix","initOptions","_enableBearerInterceptor","_loadUserProfileAtStartUp","_authorizationHeaderName","_bearerPrefix","trim","concat","_excludedUrls","_silentRefresh","flow","init","options","config","setLoginSubscriptions","loadUserProfile","parseJWTToken","token","base64Url","split","base64","replace","jsonPayload","decodeURIComponent","window","atob","c","charCodeAt","toString","slice","join","JSON","parse","source","sub","val","kcTokens","accessToken","refreshToken","idToken","set","key","stringify","sendToken","provider","undefined","attributes","idp_source","length","socialProviderInfo","generalCustomerAccount","newAccount","Client","App","authProvider","Apple","email","lastname","lastName","firstname","firstName","Facebook","first_name","last_name","Google","emailAddresses","names","givenName","familyName","connexion","account","phoneNumber","profileSave","run","saveGoogleInfo","saveFacebookInfo","updateDeviceTokenWhenLoggedId","tapOpened","sendRefreshOfferViewEvent","notificationUrl","tapUrl","user_id","cdq_user","remove","va","err","buildUrl","identityProvider","toLowerCase","keycloakUrl","providerUrl","realm","clientId","redirectBaseUri","redirectUri","redirectUriBrowser","params","loginSocial","regSocialUri","appBaseUri","idpHint","finally","_userProfile","authServerUrl","encodeURIComponent","postRedirectUri","location","href","register","isUserInRole","resource","hasRole","hasResourceRole","hasRealmRole","getUserRoles","allRoles","roles","resourceAccess","hasOwnProperty","clientRoles","realmAccess","realmRoles","updateToken","isTokenExpired","minValidity","Error","forceReload","getToken","getUsername","username","clearToken","addTokenToHeader","headers","getKeycloakInstance","keycloakEvents$","getLoginToken","get","kcToken","setLoginToken","tokens","initWithTokens","kcOptions","responseMode","enableLogging","timeSkew","checkLoginIframe","onLoad","adapter","silentCheckSsoRedirectUri","origin","initAuth","globalP","gResolve","gReject","finalToken","data","loginWithHint","loginHint","maxAge","open","createLoginUrl","HttpErrorResponse","mergeMap","tap","KeycloakInterceptorService","sharedService","intercept","request","search","getUserToken","clone","setHeaders","Authorization","handle","tokenPromise","tokenObservable","createToast","PushNotifications","Device","NavigationStart","LocalNotifications","alertSvc","image","body","initNotifications","navigationSubscription","events","event","isNotificationNavigation","startsWith","checkNotification","listOfNotifications","empty","countNotification","count","currentPushToken","fcmToken","storeNotification","notification","localNotification","listNotification","clearNotification","filter","clearAll","updateDeviceToken","forwardNotification","loadOfferFromTap","me","registerActionTypes","types","id","actions","input","foreground","notificationChannel","name","description","importance","visibility","createChannel","actionId","checkNotificationPermissions","checkPermissions","receive","notificationData","offerId","extra","appUrl","finalUrl","indexOf","substr","endsWith","state","resetTapOpened","notif","notifId","notificationId","notificationInternalId","channelId","actionTypeId","imageLink","attachments","schedule","notifications","info","tokenSaved","getInfo","appInfo","getId","deviceIdHolder","device","recordNotificationToken","devicePushToken","version","osVersion","os","operatingSystem","model","manufacturer","deviceName","appVersion","appBuild","build","appName","deviceUuid","identifier","firebaseInstallId","ionicChanel","recordNotificationTokenWithAccount","listenForMessages","requestPermission","root","factory","exports","module","require","t","i","d","blocks","h0","h1","h2","h3","h4","h5","h6","h7","block","start","bytes","hBytes","finalized","hashed","first","is224","s","n","o","a","u","h","f","ArrayBuffer","Uint8Array","Array","isArray","isView","update","array","y","p","l","call","oKeyPad","inner","sharedMemory","JS_SHA256_NO_WINDOW","self","JS_SHA256_NO_NODE_JS","process","versions","node","global","JS_SHA256_NO_COMMON_JS","define","amd","JS_SHA256_NO_ARRAY_BUFFER","Object","prototype","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","buffer","A","w","b","eval","createHash","digest","v","_","lastByteIndex","hash","finalize","hex","arrayBuffer","DataView","setUint32","B","sha256","sha224","hmac","base64js","code","byteLength","toByteArray","fromByteArray","TypeError","_state","_handled","_value","_deferreds","_immediateFn","onFulfilled","onRejected","promise","apply","arguments","_unhandledRejectionFn","all","race","setImmediate","warn","sha256_imported","base64js_imported","loggedPromiseDeprecation","logPromiseDeprecation","kc","refreshQueue","callbackStorage","loginIframe","enable","callbackList","interval","scripts","getElementsByTagName","iframeVersion","substring","useNonce","logInfo","createLogger","logWarn","createCallbackStorage","adapters","loadAdapter","Cordova","cordova","Capacitor","capacitor","checkLoginIframeInterval","loginRequired","responseType","silentCheckSsoFallback","pkceMethod","scope","createPromise","initPromise","setSuccess","setError","configPromise","loadConfig","doLogin","prompt","checkSsoSilently","ifrm","style","display","messageCallback","contentWindow","oauth","parseCallback","processCallback","removeChild","removeEventListener","addEventListener","setupCheckLoginIframe","unchanged","processInit","callback","history","replaceState","newUrl","valid","setToken","scheduleCheckIframe","domReady","checkReadyState","readyState","check3pCookiesSupported","generateRandomData","len","crypto","msCrypto","getRandomValues","j","Math","floor","random","generateCodeVerifier","generateRandomString","alphabet","randomData","chars","String","fromCharCode","generatePkceChallenge","codeVerifier","hashBytes","encodedHash","createUUID","nonce","callbackState","baseUrl","endpoints","authorize","locale","pkceCodeVerifier","pkceChallenge","add","createLogoutUrl","createRegisterUrl","createAccountUrl","getRealmUrl","accountManagement","access","req","XMLHttpRequest","setRequestHeader","onreadystatechange","profile","responseText","send","loadUserInfo","userinfo","userInfo","tokenParsed","expiresIn","ceil","getTime","isNaN","exec","withCredentials","timeLocal","tokenResponse","pop","iframePromise","charAt","getOrigin","protocol","hostname","port","onActionUpdate","error_description","access_token","id_token","sucessData","authSuccess","fulfillPromise","storedNonce","refreshTokenParsed","idTokenParsed","configUrl","setupOidcEndoints","oidcConfiguration","checkSessionIframe","thirdPartyCookiesIframe","authorization_endpoint","token_endpoint","end_session_endpoint","check_session_iframe","userinfo_endpoint","fileLoaded","oidcProvider","match","oidcProviderConfigUrl","oidcProviderConfig","xhr","responseURL","tokenTimeoutHandle","decodeToken","sessionId","session_state","subject","realm_access","resource_access","iat","round","str","escape","hexDigits","uuid","parseCallbackUrl","oauthState","supportedParams","queryIndex","fragmentIndex","parsed","parseCallbackParams","paramsString","oauthParams","handleSuccess","handleError","iframe","onload","authUrl","iframeOrigin","callbacks","splice","postMessage","appApi","accountUrl","encodeHash","cordovaOpenWindowWrapper","loginUrl","target","InAppBrowser","shallowCloneCordovaOptions","userOptions","cordovaOptions","keys","reduce","optionName","formatCordovaOptions","createCordovaOptions","hidden","ref","completed","closed","closeBrowser","reason","logoutUrl","registerUrl","universalLinks","plugins","browsertab","openUrl","cdqSocial","Plugins","customLogout","addUrlListener","LocalStorage","localStorage","setItem","removeItem","cs","clearExpired","getItem","expires","CookieStorage","getCookie","setCookie","cookieExpiration","minutes","exp","setTime","ca","cookie","expirationDate","toUTCString","fn"],"sourceRoot":"webpack:///","x_google_ignoreList":[23,24,25,26]}