1 | import { Injector, NgModule } from '@angular/core';
|
2 | import { CommonModule } from '@angular/common';
|
3 | import { RouterModule } from '@angular/router';
|
4 | import { FormsModule } from '@angular/forms';
|
5 | import { NbAlertModule, NbButtonModule, NbCardModule, NbCheckboxModule, NbIconModule, NbInputModule, NbLayoutModule, } from '@nebular/theme';
|
6 | import { NbAuthService } from './services/auth.service';
|
7 | import { NbAuthSimpleToken } from './services/token/token';
|
8 | import { NbTokenLocalStorage, NbTokenStorage } from './services/token/token-storage';
|
9 | import { NbTokenService } from './services/token/token.service';
|
10 | import { NbAuthTokenParceler, NB_AUTH_FALLBACK_TOKEN } from './services/token/token-parceler';
|
11 | import { NbDummyAuthStrategy } from './strategies/dummy/dummy-strategy';
|
12 | import { NbOAuth2AuthStrategy } from './strategies/oauth2/oauth2-strategy';
|
13 | import { NbPasswordAuthStrategy } from './strategies/password/password-strategy';
|
14 | import { defaultAuthOptions, NB_AUTH_INTERCEPTOR_HEADER, NB_AUTH_OPTIONS, NB_AUTH_STRATEGIES, NB_AUTH_TOKEN_INTERCEPTOR_FILTER, NB_AUTH_TOKENS, NB_AUTH_USER_OPTIONS, } from './auth.options';
|
15 | import { NbAuthComponent } from './components/auth.component';
|
16 | import { NbAuthBlockComponent } from './components/auth-block/auth-block.component';
|
17 | import { NbLoginComponent } from './components/login/login.component';
|
18 | import { NbRegisterComponent } from './components/register/register.component';
|
19 | import { NbLogoutComponent } from './components/logout/logout.component';
|
20 | import { NbRequestPasswordComponent } from './components/request-password/request-password.component';
|
21 | import { NbResetPasswordComponent } from './components/reset-password/reset-password.component';
|
22 | import { deepExtend } from './helpers';
|
23 | import * as i0 from "@angular/core";
|
24 | export function nbStrategiesFactory(options, injector) {
|
25 | const strategies = [];
|
26 | options.strategies
|
27 | .forEach(([strategyClass, strategyOptions]) => {
|
28 | const strategy = injector.get(strategyClass);
|
29 | strategy.setOptions(strategyOptions);
|
30 | strategies.push(strategy);
|
31 | });
|
32 | return strategies;
|
33 | }
|
34 | export function nbTokensFactory(strategies) {
|
35 | const tokens = [];
|
36 | strategies
|
37 | .forEach((strategy) => {
|
38 | tokens.push(strategy.getOption('token.class'));
|
39 | });
|
40 | return tokens;
|
41 | }
|
42 | export function nbOptionsFactory(options) {
|
43 | return deepExtend(defaultAuthOptions, options);
|
44 | }
|
45 | export function nbNoOpInterceptorFilter(req) {
|
46 | return true;
|
47 | }
|
48 | export class NbAuthModule {
|
49 | static forRoot(nbAuthOptions) {
|
50 | return {
|
51 | ngModule: NbAuthModule,
|
52 | providers: [
|
53 | { provide: NB_AUTH_USER_OPTIONS, useValue: nbAuthOptions },
|
54 | { provide: NB_AUTH_OPTIONS, useFactory: nbOptionsFactory, deps: [NB_AUTH_USER_OPTIONS] },
|
55 | { provide: NB_AUTH_STRATEGIES, useFactory: nbStrategiesFactory, deps: [NB_AUTH_OPTIONS, Injector] },
|
56 | { provide: NB_AUTH_TOKENS, useFactory: nbTokensFactory, deps: [NB_AUTH_STRATEGIES] },
|
57 | { provide: NB_AUTH_FALLBACK_TOKEN, useValue: NbAuthSimpleToken },
|
58 | { provide: NB_AUTH_INTERCEPTOR_HEADER, useValue: 'Authorization' },
|
59 | { provide: NB_AUTH_TOKEN_INTERCEPTOR_FILTER, useValue: nbNoOpInterceptorFilter },
|
60 | { provide: NbTokenStorage, useClass: NbTokenLocalStorage },
|
61 | NbAuthTokenParceler,
|
62 | NbAuthService,
|
63 | NbTokenService,
|
64 | NbDummyAuthStrategy,
|
65 | NbPasswordAuthStrategy,
|
66 | NbOAuth2AuthStrategy,
|
67 | ],
|
68 | };
|
69 | }
|
70 | static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
71 | static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: NbAuthModule, declarations: [NbAuthComponent,
|
72 | NbAuthBlockComponent,
|
73 | NbLoginComponent,
|
74 | NbRegisterComponent,
|
75 | NbRequestPasswordComponent,
|
76 | NbResetPasswordComponent,
|
77 | NbLogoutComponent], imports: [CommonModule,
|
78 | NbLayoutModule,
|
79 | NbCardModule,
|
80 | NbCheckboxModule,
|
81 | NbAlertModule,
|
82 | NbInputModule,
|
83 | NbButtonModule,
|
84 | RouterModule,
|
85 | FormsModule,
|
86 | NbIconModule], exports: [NbAuthComponent,
|
87 | NbAuthBlockComponent,
|
88 | NbLoginComponent,
|
89 | NbRegisterComponent,
|
90 | NbRequestPasswordComponent,
|
91 | NbResetPasswordComponent,
|
92 | NbLogoutComponent] }); }
|
93 | static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbAuthModule, imports: [CommonModule,
|
94 | NbLayoutModule,
|
95 | NbCardModule,
|
96 | NbCheckboxModule,
|
97 | NbAlertModule,
|
98 | NbInputModule,
|
99 | NbButtonModule,
|
100 | RouterModule,
|
101 | FormsModule,
|
102 | NbIconModule] }); }
|
103 | }
|
104 | i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbAuthModule, decorators: [{
|
105 | type: NgModule,
|
106 | args: [{
|
107 | imports: [
|
108 | CommonModule,
|
109 | NbLayoutModule,
|
110 | NbCardModule,
|
111 | NbCheckboxModule,
|
112 | NbAlertModule,
|
113 | NbInputModule,
|
114 | NbButtonModule,
|
115 | RouterModule,
|
116 | FormsModule,
|
117 | NbIconModule,
|
118 | ],
|
119 | declarations: [
|
120 | NbAuthComponent,
|
121 | NbAuthBlockComponent,
|
122 | NbLoginComponent,
|
123 | NbRegisterComponent,
|
124 | NbRequestPasswordComponent,
|
125 | NbResetPasswordComponent,
|
126 | NbLogoutComponent,
|
127 | ],
|
128 | exports: [
|
129 | NbAuthComponent,
|
130 | NbAuthBlockComponent,
|
131 | NbLoginComponent,
|
132 | NbRegisterComponent,
|
133 | NbRequestPasswordComponent,
|
134 | NbResetPasswordComponent,
|
135 | NbLogoutComponent,
|
136 | ],
|
137 | }]
|
138 | }] });
|
139 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWV3b3JrL2F1dGgvYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFDTCxhQUFhLEVBQ2IsY0FBYyxFQUNkLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFakYsT0FBTyxFQUNMLGtCQUFrQixFQUNsQiwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsY0FBYyxFQUNkLG9CQUFvQixHQUdyQixN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ZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7XG4gIE5iQWxlcnRNb2R1bGUsXG4gIE5iQnV0dG9uTW9kdWxlLFxuICBOYkNhcmRNb2R1bGUsXG4gIE5iQ2hlY2tib3hNb2R1bGUsXG4gIE5iSWNvbk1vZHVsZSxcbiAgTmJJbnB1dE1vZHVsZSxcbiAgTmJMYXlvdXRNb2R1bGUsXG59IGZyb20gJ0BuZWJ1bGFyL3RoZW1lJztcblxuaW1wb3J0IHsgTmJBdXRoU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE5iQXV0aFNpbXBsZVRva2VuLCBOYkF1dGhUb2tlbkNsYXNzIH0gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbi90b2tlbic7XG5pbXBvcnQgeyBOYlRva2VuTG9jYWxTdG9yYWdlLCBOYlRva2VuU3RvcmFnZSB9IGZyb20gJy4vc2VydmljZXMvdG9rZW4vdG9rZW4tc3RvcmFnZSc7XG5pbXBvcnQgeyBOYlRva2VuU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdG9rZW4vdG9rZW4uc2VydmljZSc7XG5pbXBvcnQgeyBOYkF1dGhUb2tlblBhcmNlbGVyLCBOQl9BVVRIX0ZBTExCQUNLX1RPS0VOIH0gZnJvbSAnLi9zZXJ2aWNlcy90b2tlbi90b2tlbi1wYXJjZWxlcic7XG5pbXBvcnQgeyBOYkF1dGhTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ2llcy9hdXRoLXN0cmF0ZWd5JztcbmltcG9ydCB7IE5iQXV0aFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJy4vc3RyYXRlZ2llcy9hdXRoLXN0cmF0ZWd5LW9wdGlvbnMnO1xuaW1wb3J0IHsgTmJEdW1teUF1dGhTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ2llcy9kdW1teS9kdW1teS1zdHJhdGVneSc7XG5pbXBvcnQgeyBOYk9BdXRoMkF1dGhTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ2llcy9vYXV0aDIvb2F1dGgyLXN0cmF0ZWd5JztcbmltcG9ydCB7IE5iUGFzc3dvcmRBdXRoU3RyYXRlZ3kgfSBmcm9tICcuL3N0cmF0ZWdpZXMvcGFzc3dvcmQvcGFzc3dvcmQtc3RyYXRlZ3knO1xuXG5pbXBvcnQge1xuICBkZWZhdWx0QXV0aE9wdGlvbnMsXG4gIE5CX0FVVEhfSU5URVJDRVBUT1JfSEVBREVSLFxuICBOQl9BVVRIX09QVElPTlMsXG4gIE5CX0FVVEhfU1RSQVRFR0lFUyxcbiAgTkJfQVVUSF9UT0tFTl9JTlRFUkNFUFRPUl9GSUxURVIsXG4gIE5CX0FVVEhfVE9LRU5TLFxuICBOQl9BVVRIX1VTRVJfT1BUSU9OUyxcbiAgTmJBdXRoT3B0aW9ucyxcbiAgTmJBdXRoU3RyYXRlZ3lDbGFzcyxcbn0gZnJvbSAnLi9hdXRoLm9wdGlvbnMnO1xuXG5pbXBvcnQgeyBOYkF1dGhDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0aC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBOYkF1dGhCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hdXRoLWJsb2NrL2F1dGgtYmxvY2suY29tcG9uZW50JztcbmltcG9ydCB7IE5iTG9naW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7IE5iUmVnaXN0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE5iTG9nb3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvZ291dC9sb2dvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE5iUmVxdWVzdFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3JlcXVlc3QtcGFzc3dvcmQvcmVxdWVzdC1wYXNzd29yZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmJSZXNldFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Jlc2V0LXBhc3N3b3JkL3Jlc2V0LXBhc3N3b3JkLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IGRlZXBFeHRlbmQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbmJTdHJhdGVnaWVzRmFjdG9yeShvcHRpb25zOiBOYkF1dGhPcHRpb25zLCBpbmplY3RvcjogSW5qZWN0b3IpOiBOYkF1dGhTdHJhdGVneVtdIHtcbiAgY29uc3Qgc3RyYXRlZ2llcyA9IFtdO1xuICBvcHRpb25zLnN0cmF0ZWdpZXNcbiAgICAuZm9yRWFjaCgoW3N0cmF0ZWd5Q2xhc3MsIHN0cmF0ZWd5T3B0aW9uc106IFtOYkF1dGhTdHJhdGVneUNsYXNzLCBOYkF1dGhTdHJhdGVneU9wdGlvbnNdKSA9PiB7XG4gICAgICBjb25zdCBzdHJhdGVneTogTmJBdXRoU3RyYXRlZ3kgPSBpbmplY3Rvci5nZXQoc3RyYXRlZ3lDbGFzcyk7XG4gICAgICBzdHJhdGVneS5zZXRPcHRpb25zKHN0cmF0ZWd5T3B0aW9ucyk7XG5cbiAgICAgIHN0cmF0ZWdpZXMucHVzaChzdHJhdGVneSk7XG4gICAgfSk7XG4gIHJldHVybiBzdHJhdGVnaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmJUb2tlbnNGYWN0b3J5KHN0cmF0ZWdpZXM6IE5iQXV0aFN0cmF0ZWd5W10pOiBOYkF1dGhUb2tlbkNsYXNzW10ge1xuICBjb25zdCB0b2tlbnMgPSBbXTtcbiAgc3RyYXRlZ2llc1xuICAgIC5mb3JFYWNoKChzdHJhdGVneTogTmJBdXRoU3RyYXRlZ3kpID0+IHtcbiAgICAgIHRva2Vucy5wdXNoKHN0cmF0ZWd5LmdldE9wdGlvbigndG9rZW4uY2xhc3MnKSk7XG4gICAgfSk7XG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYk9wdGlvbnNGYWN0b3J5KG9wdGlvbnMpIHtcbiAgcmV0dXJuIGRlZXBFeHRlbmQoZGVmYXVsdEF1dGhPcHRpb25zLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5iTm9PcEludGVyY2VwdG9yRmlsdGVyKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW4ge1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBOYkxheW91dE1vZHVsZSxcbiAgICBOYkNhcmRNb2R1bGUsXG4gICAgTmJDaGVja2JveE1vZHVsZSxcbiAgICBOYkFsZXJ0TW9kdWxlLFxuICAgIE5iSW5wdXRNb2R1bGUsXG4gICAgTmJCdXR0b25Nb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5iSWNvbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmJBdXRoQ29tcG9uZW50LFxuICAgIE5iQXV0aEJsb2NrQ29tcG9uZW50LFxuICAgIE5iTG9naW5Db21wb25lbnQsXG4gICAgTmJSZWdpc3RlckNvbXBvbmVudCxcbiAgICBOYlJlcXVlc3RQYXNzd29yZENvbXBvbmVudCxcbiAgICBOYlJlc2V0UGFzc3dvcmRDb21wb25lbnQsXG4gICAgTmJMb2dvdXRDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOYkF1dGhDb21wb25lbnQsXG4gICAgTmJBdXRoQmxvY2tDb21wb25lbnQsXG4gICAgTmJMb2dpbkNvbXBvbmVudCxcbiAgICBOYlJlZ2lzdGVyQ29tcG9uZW50LFxuICAgIE5iUmVxdWVzdFBhc3N3b3JkQ29tcG9uZW50LFxuICAgIE5iUmVzZXRQYXNzd29yZENvbXBvbmVudCxcbiAgICBOYkxvZ291dENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmJBdXRoTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QobmJBdXRoT3B0aW9ucz86IE5iQXV0aE9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5iQXV0aE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmJBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogTkJfQVVUSF9VU0VSX09QVElPTlMsIHVzZVZhbHVlOiBuYkF1dGhPcHRpb25zIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkJfQVVUSF9PUFRJT05TLCB1c2VGYWN0b3J5OiBuYk9wdGlvbnNGYWN0b3J5LCBkZXBzOiBbTkJfQVVUSF9VU0VSX09QVElPTlNdIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkJfQVVUSF9TVFJBVEVHSUVTLCB1c2VGYWN0b3J5OiBuYlN0cmF0ZWdpZXNGYWN0b3J5LCBkZXBzOiBbTkJfQVVUSF9PUFRJT05TLCBJbmplY3Rvcl0gfSxcbiAgICAgICAgeyBwcm92aWRlOiBOQl9BVVRIX1RPS0VOUywgdXNlRmFjdG9yeTogbmJUb2tlbnNGYWN0b3J5LCBkZXBzOiBbTkJfQVVUSF9TVFJBVEVHSUVTXSB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5CX0FVVEhfRkFMTEJBQ0tfVE9LRU4sIHVzZVZhbHVlOiBOYkF1dGhTaW1wbGVUb2tlbiB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5CX0FVVEhfSU5URVJDRVBUT1JfSEVBREVSLCB1c2VWYWx1ZTogJ0F1dGhvcml6YXRpb24nIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkJfQVVUSF9UT0tFTl9JTlRFUkNFUFRPUl9GSUxURVIsIHVzZVZhbHVlOiBuYk5vT3BJbnRlcmNlcHRvckZpbHRlciB9LFxuICAgICAgICB7IHByb3ZpZGU6IE5iVG9rZW5TdG9yYWdlLCB1c2VDbGFzczogTmJUb2tlbkxvY2FsU3RvcmFnZSB9LFxuICAgICAgICBOYkF1dGhUb2tlblBhcmNlbGVyLFxuICAgICAgICBOYkF1dGhTZXJ2aWNlLFxuICAgICAgICBOYlRva2VuU2VydmljZSxcbiAgICAgICAgTmJEdW1teUF1dGhTdHJhdGVneSxcbiAgICAgICAgTmJQYXNzd29yZEF1dGhTdHJhdGVneSxcbiAgICAgICAgTmJPQXV0aDJBdXRoU3RyYXRlZ3ksXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ== |
\ | No newline at end of file |