tin-spa 2.3.12 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/classes/Classes.mjs +1 -179
- package/esm2020/lib/classes/LibClasses.mjs +179 -0
- package/esm2020/lib/classes/TinCore.mjs +10 -1
- package/esm2020/lib/components/date/date.component.mjs +3 -3
- package/esm2020/lib/components/datetime/datetime.component.mjs +6 -3
- package/esm2020/lib/components/email/email.component.mjs +131 -0
- package/esm2020/lib/components/form/form.component.mjs +27 -10
- package/esm2020/lib/components/money/money.component.mjs +3 -3
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +2 -2
- package/esm2020/lib/components/number/number.component.mjs +3 -3
- package/esm2020/lib/components/option/option.component.mjs +6 -3
- package/esm2020/lib/components/search/search.component.mjs +3 -3
- package/esm2020/lib/components/select/select.component.mjs +3 -3
- package/esm2020/lib/components/table/detailsDialog.component.mjs +14 -4
- package/esm2020/lib/components/table/table.component.mjs +3 -3
- package/esm2020/lib/components/table-header/table-header.component.mjs +67 -12
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +16 -2
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +3 -3
- package/esm2020/lib/components/table-row/table-row.component.mjs +21 -5
- package/esm2020/lib/components/text/text.component.mjs +3 -3
- package/esm2020/lib/modules/admin/admin-routing.module.mjs +22 -22
- package/esm2020/lib/modules/index/index-routing.module.mjs +4 -4
- package/esm2020/lib/modules/spa-admin.module.mjs +7 -7
- package/esm2020/lib/modules/spa-index.module.mjs +4 -4
- package/esm2020/lib/modules/spa-user.module.mjs +3 -3
- package/esm2020/lib/modules/user/user-routing.module.mjs +3 -3
- package/esm2020/lib/{components → pages}/accounts/accountDialog.component.mjs +3 -3
- package/esm2020/lib/pages/accounts/accounts.component.mjs +70 -0
- package/esm2020/lib/{components → pages}/bug/bug.component.mjs +1 -1
- package/esm2020/lib/pages/change-password/change-password.component.mjs +92 -0
- package/esm2020/lib/pages/create-account/create-account.component.mjs +110 -0
- package/esm2020/lib/pages/customers/customers.component.mjs +60 -0
- package/esm2020/lib/{components → pages}/departments/departments.component.mjs +2 -2
- package/esm2020/lib/{components → pages}/employees/employees.component.mjs +2 -2
- package/esm2020/lib/{components → pages}/grades/grades.component.mjs +1 -1
- package/esm2020/lib/pages/inventory/inventory.component.mjs +99 -0
- package/esm2020/lib/{components → pages}/inventory/quantityDialog.component.mjs +3 -3
- package/esm2020/lib/{components → pages}/invitations/invitations.component.mjs +1 -1
- package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +70 -0
- package/esm2020/lib/{components → pages}/login/login.component.mjs +5 -4
- package/esm2020/lib/{components → pages}/logs/logs.component.mjs +2 -2
- package/esm2020/lib/pages/membership/membership.component.mjs +48 -0
- package/esm2020/lib/{components → pages}/notifications/notifications.component.mjs +1 -1
- package/esm2020/lib/pages/plans/plans.component.mjs +47 -0
- package/esm2020/lib/{components → pages}/positions/positions.component.mjs +2 -2
- package/esm2020/lib/pages/profile/profile.component.mjs +93 -0
- package/esm2020/lib/pages/recover-account/recover-account.component.mjs +46 -0
- package/esm2020/lib/{components → pages}/roles/addRoleDialog.component.mjs +2 -2
- package/esm2020/lib/{components → pages}/roles/roles.component.mjs +1 -1
- package/esm2020/lib/{components → pages}/settings/settings.component.mjs +1 -1
- package/esm2020/lib/pages/signup/signup.component.mjs +50 -0
- package/esm2020/lib/pages/suppliers/suppliers.component.mjs +50 -0
- package/esm2020/lib/pages/tasks/tasks.component.mjs +86 -0
- package/esm2020/lib/{components → pages}/tenant-settings/inviteDialog.component.mjs +3 -3
- package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +155 -0
- package/esm2020/lib/pages/tenants/tenants.component.mjs +47 -0
- package/esm2020/lib/{components → pages}/transactions/transactDialog.component.mjs +5 -5
- package/esm2020/lib/pages/transactions/transactions.component.mjs +101 -0
- package/esm2020/lib/pages/users/users.component.mjs +118 -0
- package/esm2020/lib/pages/welcome/welcome.component.mjs +86 -0
- package/esm2020/lib/services/auth.service.mjs +3 -2
- package/esm2020/lib/services/csv.service.mjs +49 -0
- package/esm2020/lib/services/datalib.service.mjs +1 -1
- package/esm2020/lib/services/log.service.mjs +2 -2
- package/esm2020/lib/tin-spa.module.mjs +33 -28
- package/esm2020/public-api.mjs +26 -25
- package/fesm2015/tin-spa.mjs +434 -146
- package/fesm2015/tin-spa.mjs.map +1 -1
- package/fesm2020/tin-spa.mjs +433 -146
- package/fesm2020/tin-spa.mjs.map +1 -1
- package/lib/classes/Classes.d.ts +17 -173
- package/lib/classes/LibClasses.d.ts +172 -0
- package/lib/classes/TinCore.d.ts +3 -1
- package/lib/components/datetime/datetime.component.d.ts +2 -1
- package/lib/components/email/email.component.d.ts +39 -0
- package/lib/components/form/form.component.d.ts +2 -0
- package/lib/components/option/option.component.d.ts +2 -1
- package/lib/components/table-header/table-header.component.d.ts +14 -3
- package/lib/components/table-row/table-row.component.d.ts +1 -1
- package/lib/modules/spa-admin.module.d.ts +6 -6
- package/lib/modules/spa-index.module.d.ts +3 -3
- package/lib/modules/spa-user.module.d.ts +2 -2
- package/lib/{components → pages}/change-password/change-password.component.d.ts +1 -1
- package/lib/{components → pages}/create-account/create-account.component.d.ts +2 -1
- package/lib/{components → pages}/login/login.component.d.ts +3 -2
- package/lib/{components → pages}/profile/profile.component.d.ts +2 -1
- package/lib/{components → pages}/roles/addRoleDialog.component.d.ts +1 -1
- package/lib/{components → pages}/roles/roles.component.d.ts +1 -1
- package/lib/{components → pages}/signup/signup.component.d.ts +1 -1
- package/lib/{components → pages}/users/users.component.d.ts +1 -1
- package/lib/services/auth.service.d.ts +1 -1
- package/lib/services/csv.service.d.ts +10 -0
- package/lib/services/datalib.service.d.ts +2 -1
- package/lib/services/log.service.d.ts +1 -1
- package/lib/tin-spa.module.d.ts +29 -28
- package/package.json +1 -1
- package/public-api.d.ts +24 -23
- package/esm2020/lib/components/accounts/accounts.component.mjs +0 -70
- package/esm2020/lib/components/change-password/change-password.component.mjs +0 -92
- package/esm2020/lib/components/create-account/create-account.component.mjs +0 -109
- package/esm2020/lib/components/customers/customers.component.mjs +0 -60
- package/esm2020/lib/components/inventory/inventory.component.mjs +0 -99
- package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +0 -70
- package/esm2020/lib/components/membership/membership.component.mjs +0 -48
- package/esm2020/lib/components/plans/plans.component.mjs +0 -47
- package/esm2020/lib/components/profile/profile.component.mjs +0 -92
- package/esm2020/lib/components/recover-account/recover-account.component.mjs +0 -46
- package/esm2020/lib/components/signup/signup.component.mjs +0 -50
- package/esm2020/lib/components/suppliers/suppliers.component.mjs +0 -50
- package/esm2020/lib/components/tasks/tasks.component.mjs +0 -86
- package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +0 -155
- package/esm2020/lib/components/tenants/tenants.component.mjs +0 -47
- package/esm2020/lib/components/transactions/transactions.component.mjs +0 -101
- package/esm2020/lib/components/users/users.component.mjs +0 -118
- package/esm2020/lib/components/welcome/welcome.component.mjs +0 -86
- /package/lib/{components → pages}/accounts/accountDialog.component.d.ts +0 -0
- /package/lib/{components → pages}/accounts/accounts.component.d.ts +0 -0
- /package/lib/{components → pages}/bug/bug.component.d.ts +0 -0
- /package/lib/{components → pages}/customers/customers.component.d.ts +0 -0
- /package/lib/{components → pages}/departments/departments.component.d.ts +0 -0
- /package/lib/{components → pages}/employees/employees.component.d.ts +0 -0
- /package/lib/{components → pages}/grades/grades.component.d.ts +0 -0
- /package/lib/{components → pages}/inventory/inventory.component.d.ts +0 -0
- /package/lib/{components → pages}/inventory/quantityDialog.component.d.ts +0 -0
- /package/lib/{components → pages}/invitations/invitations.component.d.ts +0 -0
- /package/lib/{components → pages}/invitations-table/invitations-table.component.d.ts +0 -0
- /package/lib/{components → pages}/logs/logs.component.d.ts +0 -0
- /package/lib/{components → pages}/membership/membership.component.d.ts +0 -0
- /package/lib/{components → pages}/notifications/notifications.component.d.ts +0 -0
- /package/lib/{components → pages}/plans/plans.component.d.ts +0 -0
- /package/lib/{components → pages}/positions/positions.component.d.ts +0 -0
- /package/lib/{components → pages}/recover-account/recover-account.component.d.ts +0 -0
- /package/lib/{components → pages}/settings/settings.component.d.ts +0 -0
- /package/lib/{components → pages}/suppliers/suppliers.component.d.ts +0 -0
- /package/lib/{components → pages}/tasks/tasks.component.d.ts +0 -0
- /package/lib/{components → pages}/tenant-settings/inviteDialog.component.d.ts +0 -0
- /package/lib/{components → pages}/tenant-settings/tenant-settings.component.d.ts +0 -0
- /package/lib/{components → pages}/tenants/tenants.component.d.ts +0 -0
- /package/lib/{components → pages}/transactions/transactDialog.component.d.ts +0 -0
- /package/lib/{components → pages}/transactions/transactions.component.d.ts +0 -0
- /package/lib/{components → pages}/welcome/welcome.component.d.ts +0 -0
|
@@ -2,11 +2,11 @@ import { AppConfig } from './../../classes/Classes';
|
|
|
2
2
|
import { OnInit } from "@angular/core";
|
|
3
3
|
import { MatDialog } from "@angular/material/dialog";
|
|
4
4
|
import { DataServiceLib } from "../../services/datalib.service";
|
|
5
|
-
import { Role } from "../../classes/Classes";
|
|
6
5
|
import { Router } from "@angular/router";
|
|
7
6
|
import { MessageService } from '../../services/message.service';
|
|
8
7
|
import { AuthService } from '../../services/auth.service';
|
|
9
8
|
import { HttpService } from '../../services/http.service';
|
|
9
|
+
import { Role } from '../../classes/LibClasses';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export declare class RolesComponent implements OnInit {
|
|
12
12
|
private httpService;
|
|
@@ -2,8 +2,8 @@ import { OnInit } from '@angular/core';
|
|
|
2
2
|
import { MessageService } from '../../services/message.service';
|
|
3
3
|
import { DataServiceLib } from '../../services/datalib.service';
|
|
4
4
|
import { AuthService } from '../../services/auth.service';
|
|
5
|
-
import { User, Profile, Account } from '../../classes/Classes';
|
|
6
5
|
import { HttpService } from '../../services/http.service';
|
|
6
|
+
import { Account, Profile, User } from '../../classes/LibClasses';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class SignupComponent implements OnInit {
|
|
9
9
|
private httpService;
|
|
@@ -5,8 +5,8 @@ import { DataServiceLib } from "../../services/datalib.service";
|
|
|
5
5
|
import { Router } from "@angular/router";
|
|
6
6
|
import { MessageService } from "../../services/message.service";
|
|
7
7
|
import { AuthService } from "../../services/auth.service";
|
|
8
|
-
import { User } from '../../classes/Classes';
|
|
9
8
|
import { HttpService } from "../../services/http.service";
|
|
9
|
+
import { User } from "../../classes/LibClasses";
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export declare class UsersComponent implements OnInit {
|
|
12
12
|
private httpService;
|
|
@@ -3,9 +3,9 @@ import { Router, CanActivate, ActivatedRoute } from '@angular/router';
|
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import { StorageService } from './storage.service';
|
|
5
5
|
import { LogService } from './log.service';
|
|
6
|
-
import { Role } from '../classes/Classes';
|
|
7
6
|
import { HttpService } from './http.service';
|
|
8
7
|
import { SocialAuthService } from '@abacritt/angularx-social-login';
|
|
8
|
+
import { Role } from '../classes/LibClasses';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export declare class AuthService implements CanActivate {
|
|
11
11
|
private _route;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TableConfig } from '../classes/Classes';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CsvService {
|
|
4
|
+
generateCsv(data: any[], columns: string[], filename: string, config: TableConfig): void;
|
|
5
|
+
private convertToCsv;
|
|
6
|
+
private createColumnMap;
|
|
7
|
+
private escapeCommas;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CsvService, never>;
|
|
9
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CsvService>;
|
|
10
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Action, AppConfig, Button, CapItem, FormConfig, TableConfig
|
|
1
|
+
import { Action, AppConfig, Button, CapItem, FormConfig, TableConfig } from '../classes/Classes';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { HttpService } from './http.service';
|
|
4
4
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
|
+
import { User } from '../classes/LibClasses';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export declare class DataServiceLib {
|
|
7
8
|
private httpService;
|
package/lib/tin-spa.module.d.ts
CHANGED
|
@@ -27,40 +27,41 @@ import * as i25 from "./components/number/number.component";
|
|
|
27
27
|
import * as i26 from "./components/search/search.component";
|
|
28
28
|
import * as i27 from "./components/viewer/viewer.component";
|
|
29
29
|
import * as i28 from "./components/viewer/viewerDialog.component";
|
|
30
|
-
import * as i29 from "./
|
|
31
|
-
import * as i30 from "./
|
|
32
|
-
import * as i31 from "./
|
|
33
|
-
import * as i32 from "./
|
|
34
|
-
import * as i33 from "./
|
|
35
|
-
import * as i34 from "./
|
|
36
|
-
import * as i35 from "./
|
|
37
|
-
import * as i36 from "./
|
|
38
|
-
import * as i37 from "./
|
|
39
|
-
import * as i38 from "./
|
|
40
|
-
import * as i39 from "./
|
|
41
|
-
import * as i40 from "./
|
|
42
|
-
import * as i41 from "./
|
|
43
|
-
import * as i42 from "./
|
|
30
|
+
import * as i29 from "./pages/tenant-settings/tenant-settings.component";
|
|
31
|
+
import * as i30 from "./pages/tenant-settings/inviteDialog.component";
|
|
32
|
+
import * as i31 from "./pages/tenants/tenants.component";
|
|
33
|
+
import * as i32 from "./pages/bug/bug.component";
|
|
34
|
+
import * as i33 from "./pages/membership/membership.component";
|
|
35
|
+
import * as i34 from "./pages/plans/plans.component";
|
|
36
|
+
import * as i35 from "./pages/customers/customers.component";
|
|
37
|
+
import * as i36 from "./pages/inventory/inventory.component";
|
|
38
|
+
import * as i37 from "./pages/inventory/quantityDialog.component";
|
|
39
|
+
import * as i38 from "./pages/accounts/accounts.component";
|
|
40
|
+
import * as i39 from "./pages/accounts/accountDialog.component";
|
|
41
|
+
import * as i40 from "./pages/suppliers/suppliers.component";
|
|
42
|
+
import * as i41 from "./pages/transactions/transactions.component";
|
|
43
|
+
import * as i42 from "./pages/transactions/transactDialog.component";
|
|
44
44
|
import * as i43 from "./components/list-dialog/list-dialog.component";
|
|
45
|
-
import * as i44 from "./
|
|
46
|
-
import * as i45 from "./
|
|
47
|
-
import * as i46 from "./
|
|
48
|
-
import * as i47 from "./
|
|
49
|
-
import * as i48 from "./
|
|
50
|
-
import * as i49 from "./
|
|
51
|
-
import * as i50 from "./
|
|
52
|
-
import * as i51 from "./
|
|
53
|
-
import * as i52 from "./
|
|
45
|
+
import * as i44 from "./pages/tasks/tasks.component";
|
|
46
|
+
import * as i45 from "./pages/departments/departments.component";
|
|
47
|
+
import * as i46 from "./pages/employees/employees.component";
|
|
48
|
+
import * as i47 from "./pages/positions/positions.component";
|
|
49
|
+
import * as i48 from "./pages/grades/grades.component";
|
|
50
|
+
import * as i49 from "./pages/welcome/welcome.component";
|
|
51
|
+
import * as i50 from "./pages/invitations/invitations.component";
|
|
52
|
+
import * as i51 from "./pages/notifications/notifications.component";
|
|
53
|
+
import * as i52 from "./pages/invitations-table/invitations-table.component";
|
|
54
54
|
import * as i53 from "./components/table-header/table-header.component";
|
|
55
55
|
import * as i54 from "./components/table-row/table-row.component";
|
|
56
56
|
import * as i55 from "./components/table-action/table-action.component";
|
|
57
57
|
import * as i56 from "./components/alert/alert.component";
|
|
58
|
-
import * as i57 from "./
|
|
59
|
-
import * as i58 from "
|
|
60
|
-
import * as i59 from "
|
|
61
|
-
import * as i60 from "
|
|
58
|
+
import * as i57 from "./components/email/email.component";
|
|
59
|
+
import * as i58 from "./modules/spa-mat.module";
|
|
60
|
+
import * as i59 from "@angular/common/http";
|
|
61
|
+
import * as i60 from "./components/money/currency-input-mask.module";
|
|
62
|
+
import * as i61 from "ngx-doc-viewer";
|
|
62
63
|
export declare class TinSpaModule {
|
|
63
64
|
static ɵfac: i0.ɵɵFactoryDeclaration<TinSpaModule, never>;
|
|
64
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<TinSpaModule, [typeof i1.TinSpaComponent, typeof i2.TextComponent, typeof i3.CheckComponent, typeof i4.DateComponent, typeof i5.DatetimeComponent, typeof i6.LabelComponent, typeof i7.SelectComponent, typeof i8.ActivityComponent, typeof i9.FilterComponent, typeof i10.messageDialog, typeof i11.MoneyComponent, typeof i12.OptionComponent, typeof i13.TilesComponent, typeof i14.StepsComponent, typeof i15.AttachComponent, typeof i16.ChipsComponent, typeof i17.LoaderComponent, typeof i18.NavMenuComponent, typeof i19.TableComponent, typeof i20.TableInternalComponent, typeof i21.DetailsDialog, typeof i22.DetailsDialogInternal, typeof i23.FormComponent, typeof i24.CamelToWordsPipe, typeof i25.NumberComponent, typeof i26.SearchComponent, typeof i27.ViewerComponent, typeof i28.viewerDialog, typeof i29.TenantSettingsComponent, typeof i30.inviteDialog, typeof i31.TenantsComponent, typeof i32.BugComponent, typeof i33.MembershipComponent, typeof i34.PlansComponent, typeof i35.CustomersComponent, typeof i36.InventoryComponent, typeof i37.quantityDialog, typeof i38.AccountsComponent, typeof i39.accountDialog, typeof i40.SuppliersComponent, typeof i41.TransactionsComponent, typeof i42.transactDialog, typeof i43.ListDialogComponent, typeof i44.TasksComponent, typeof i45.DepartmentsComponent, typeof i46.EmployeesComponent, typeof i47.PositionsComponent, typeof i48.GradesComponent, typeof i49.WelcomeComponent, typeof i50.InvitationsComponent, typeof i51.NotificationsComponent, typeof i52.InvitationsTableComponent, typeof i53.TableHeaderComponent, typeof i54.TableRowComponent, typeof i55.TableActionComponent, typeof i56.AlertComponent], [typeof
|
|
65
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<TinSpaModule, [typeof i1.TinSpaComponent, typeof i2.TextComponent, typeof i3.CheckComponent, typeof i4.DateComponent, typeof i5.DatetimeComponent, typeof i6.LabelComponent, typeof i7.SelectComponent, typeof i8.ActivityComponent, typeof i9.FilterComponent, typeof i10.messageDialog, typeof i11.MoneyComponent, typeof i12.OptionComponent, typeof i13.TilesComponent, typeof i14.StepsComponent, typeof i15.AttachComponent, typeof i16.ChipsComponent, typeof i17.LoaderComponent, typeof i18.NavMenuComponent, typeof i19.TableComponent, typeof i20.TableInternalComponent, typeof i21.DetailsDialog, typeof i22.DetailsDialogInternal, typeof i23.FormComponent, typeof i24.CamelToWordsPipe, typeof i25.NumberComponent, typeof i26.SearchComponent, typeof i27.ViewerComponent, typeof i28.viewerDialog, typeof i29.TenantSettingsComponent, typeof i30.inviteDialog, typeof i31.TenantsComponent, typeof i32.BugComponent, typeof i33.MembershipComponent, typeof i34.PlansComponent, typeof i35.CustomersComponent, typeof i36.InventoryComponent, typeof i37.quantityDialog, typeof i38.AccountsComponent, typeof i39.accountDialog, typeof i40.SuppliersComponent, typeof i41.TransactionsComponent, typeof i42.transactDialog, typeof i43.ListDialogComponent, typeof i44.TasksComponent, typeof i45.DepartmentsComponent, typeof i46.EmployeesComponent, typeof i47.PositionsComponent, typeof i48.GradesComponent, typeof i49.WelcomeComponent, typeof i50.InvitationsComponent, typeof i51.NotificationsComponent, typeof i52.InvitationsTableComponent, typeof i53.TableHeaderComponent, typeof i54.TableRowComponent, typeof i55.TableActionComponent, typeof i56.AlertComponent, typeof i57.EmailComponent], [typeof i58.SpaMatModule, typeof i59.HttpClientModule, typeof i60.CurrencyInputModule, typeof i61.NgxDocViewerModule], [typeof i1.TinSpaComponent, typeof i58.SpaMatModule, typeof i56.AlertComponent, typeof i2.TextComponent, typeof i10.messageDialog, typeof i18.NavMenuComponent, typeof i17.LoaderComponent, typeof i13.TilesComponent, typeof i4.DateComponent, typeof i7.SelectComponent, typeof i5.DatetimeComponent, typeof i3.CheckComponent, typeof i15.AttachComponent, typeof i11.MoneyComponent, typeof i16.ChipsComponent, typeof i8.ActivityComponent, typeof i12.OptionComponent, typeof i6.LabelComponent, typeof i14.StepsComponent, typeof i9.FilterComponent, typeof i19.TableComponent, typeof i21.DetailsDialog, typeof i23.FormComponent, typeof i25.NumberComponent, typeof i26.SearchComponent, typeof i27.ViewerComponent, typeof i28.viewerDialog, typeof i43.ListDialogComponent, typeof i35.CustomersComponent, typeof i38.AccountsComponent, typeof i36.InventoryComponent, typeof i40.SuppliersComponent, typeof i41.TransactionsComponent, typeof i43.ListDialogComponent, typeof i44.TasksComponent, typeof i45.DepartmentsComponent, typeof i46.EmployeesComponent, typeof i47.PositionsComponent, typeof i48.GradesComponent, typeof i49.WelcomeComponent, typeof i57.EmailComponent]>;
|
|
65
66
|
static ɵinj: i0.ɵɵInjectorDeclaration<TinSpaModule>;
|
|
66
67
|
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -36,18 +36,6 @@ export * from './lib/components/steps/steps.component';
|
|
|
36
36
|
export * from './lib/components/filter/filter.component';
|
|
37
37
|
export * from './lib/components/message/messageDialog.component';
|
|
38
38
|
export * from './lib/components/loader/loader.component';
|
|
39
|
-
export * from './lib/components/users/users.component';
|
|
40
|
-
export * from './lib/components/login/login.component';
|
|
41
|
-
export * from './lib/components/nav-menu/nav-menu.component';
|
|
42
|
-
export * from './lib/components/roles/roles.component';
|
|
43
|
-
export * from './lib/components/roles/addRoleDialog.component';
|
|
44
|
-
export * from './lib/components/signup/signup.component';
|
|
45
|
-
export * from './lib/components/change-password/change-password.component';
|
|
46
|
-
export * from './lib/components/profile/profile.component';
|
|
47
|
-
export * from './lib/components/recover-account/recover-account.component';
|
|
48
|
-
export * from './lib/components/create-account/create-account.component';
|
|
49
|
-
export * from './lib/components/logs/logs.component';
|
|
50
|
-
export * from './lib/components/settings/settings.component';
|
|
51
39
|
export * from './lib/components/table/table.component';
|
|
52
40
|
export * from './lib/components/table/detailsDialog.component';
|
|
53
41
|
export * from './lib/components/form/form.component';
|
|
@@ -55,15 +43,28 @@ export * from './lib/components/number/number.component';
|
|
|
55
43
|
export * from './lib/components/search/search.component';
|
|
56
44
|
export * from './lib/components/viewer/viewer.component';
|
|
57
45
|
export * from './lib/components/viewer/viewerDialog.component';
|
|
58
|
-
export * from './lib/components/
|
|
59
|
-
export * from './lib/components/inventory/inventory.component';
|
|
60
|
-
export * from './lib/components/accounts/accounts.component';
|
|
61
|
-
export * from './lib/components/suppliers/suppliers.component';
|
|
46
|
+
export * from './lib/components/nav-menu/nav-menu.component';
|
|
62
47
|
export * from './lib/components/list-dialog/list-dialog.component';
|
|
63
|
-
export * from './lib/components/
|
|
64
|
-
export * from './lib/
|
|
65
|
-
export * from './lib/
|
|
66
|
-
export * from './lib/
|
|
67
|
-
export * from './lib/
|
|
68
|
-
export * from './lib/
|
|
69
|
-
export * from './lib/
|
|
48
|
+
export * from './lib/components/email/email.component';
|
|
49
|
+
export * from './lib/pages/transactions/transactions.component';
|
|
50
|
+
export * from './lib/pages/tasks/tasks.component';
|
|
51
|
+
export * from './lib/pages/departments/departments.component';
|
|
52
|
+
export * from './lib/pages/employees/employees.component';
|
|
53
|
+
export * from './lib/pages/positions/positions.component';
|
|
54
|
+
export * from './lib/pages/grades/grades.component';
|
|
55
|
+
export * from './lib/pages/welcome/welcome.component';
|
|
56
|
+
export * from './lib/pages/customers/customers.component';
|
|
57
|
+
export * from './lib/pages/inventory/inventory.component';
|
|
58
|
+
export * from './lib/pages/accounts/accounts.component';
|
|
59
|
+
export * from './lib/pages/suppliers/suppliers.component';
|
|
60
|
+
export * from './lib/pages/users/users.component';
|
|
61
|
+
export * from './lib/pages/login/login.component';
|
|
62
|
+
export * from './lib/pages/roles/roles.component';
|
|
63
|
+
export * from './lib/pages/roles/addRoleDialog.component';
|
|
64
|
+
export * from './lib/pages/signup/signup.component';
|
|
65
|
+
export * from './lib/pages/change-password/change-password.component';
|
|
66
|
+
export * from './lib/pages/profile/profile.component';
|
|
67
|
+
export * from './lib/pages/recover-account/recover-account.component';
|
|
68
|
+
export * from './lib/pages/create-account/create-account.component';
|
|
69
|
+
export * from './lib/pages/logs/logs.component';
|
|
70
|
+
export * from './lib/pages/settings/settings.component';
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { accountDialog } from './accountDialog.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/router";
|
|
6
|
-
import * as i2 from "../../services/datalib.service";
|
|
7
|
-
import * as i3 from "../../services/message.service";
|
|
8
|
-
import * as i4 from "../../services/auth.service";
|
|
9
|
-
import * as i5 from "@angular/material/dialog";
|
|
10
|
-
import * as i6 from "@angular/common";
|
|
11
|
-
import * as i7 from "@angular/material/button";
|
|
12
|
-
import * as i8 from "@angular/material/icon";
|
|
13
|
-
import * as i9 from "@angular/material/card";
|
|
14
|
-
import * as i10 from "../filter/filter.component";
|
|
15
|
-
export class AccountsComponent {
|
|
16
|
-
constructor(router, dataService, messageService, authService, dialog) {
|
|
17
|
-
this.router = router;
|
|
18
|
-
this.dataService = dataService;
|
|
19
|
-
this.messageService = messageService;
|
|
20
|
-
this.authService = authService;
|
|
21
|
-
this.dialog = dialog;
|
|
22
|
-
this.reload = new Subject();
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.loadData();
|
|
26
|
-
}
|
|
27
|
-
loadData() {
|
|
28
|
-
this.dataService.CallApi({ url: 'general/accounts/x' }, '').subscribe((apiResponse) => {
|
|
29
|
-
this.accounts = apiResponse.data;
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
view(x) {
|
|
33
|
-
this.dataService.NavigateWithValue("home/admin/transactions", x.accountID);
|
|
34
|
-
}
|
|
35
|
-
open(x) {
|
|
36
|
-
const dialogRef = this.dialog.open(accountDialog, {
|
|
37
|
-
width: "900px",
|
|
38
|
-
data: x,
|
|
39
|
-
});
|
|
40
|
-
dialogRef.afterClosed().subscribe((result) => {
|
|
41
|
-
if (result == 'success') {
|
|
42
|
-
this.loadData();
|
|
43
|
-
this.messageService.toast("Updated");
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
delete(row) {
|
|
48
|
-
this.messageService.confirm(`DELETE ${row.name} ?`).subscribe((result) => {
|
|
49
|
-
if (result == "yes") {
|
|
50
|
-
this.dataService.CallApi({ url: `general/accounts?action=delete`, method: 'post' }, row).subscribe((apiResponse) => {
|
|
51
|
-
if (apiResponse.message == "success") {
|
|
52
|
-
this.messageService.toast("Account Deleted");
|
|
53
|
-
this.loadData();
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.messageService.toast(apiResponse.message);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
;
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
AccountsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountsComponent, deps: [{ token: i1.Router }, { token: i2.DataServiceLib }, { token: i3.MessageService }, { token: i4.AuthService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
-
AccountsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountsComponent, selector: "spa-accounts", ngImport: i0, template: "<h4>Accounts</h4>\r\n<hr>\r\n\r\n<div class=\"tin-row d-flex justify-content-between\" style=\"font-size: 14px;margin-left: 5px;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"open(null)\">Create</button>\r\n <spa-filter [showText]=\"false\" (refreshClick)=\"loadData()\"></spa-filter>\r\n</div>\r\n\r\n<div class=\"row \" style=\"margin-left: 0px;\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" *ngFor=\"let account of accounts\" style=\"max-width: 350px;margin: 5px;\">\r\n\r\n <div class=\"tin-row d-flex justify-content-between\">\r\n <label style=\"font-size: 24px; font-weight: 300;\">{{account.name}}</label>\r\n <button mat-mini-fab color=\"primary\" (click)=\"open(account)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 5px;margin-bottom: 10px;\"/>\r\n\r\n <label *ngIf=\"account.description != ''\" style=\"font-size: small;margin-bottom: 5px;\">{{account.description}}</label>\r\n\r\n <div *ngIf=\"account\" class=\"tin-row\">\r\n <label style=\"margin-right: 5px;font-size: 14px;\">{{account?.currency}}</label>\r\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\r\n </div>\r\n\r\n <mat-card-actions class=\"d-flex justify-content-between\" >\r\n <button mat-stroked-button color=\"primary\" style=\"margin-right:10px;\" (click)=\"view(account)\">View</button>\r\n <button mat-mini-fab *ngIf=\"account.count == 0\" color=\"warn\" style=\"margin-right:10px\" (click)=\"delete(account)\"><mat-icon>delete</mat-icon></button>\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n</div>\r\n\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i9.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i10.FilterComponent, selector: "spa-filter", inputs: ["flatButtons", "showText", "showButton", "data"], outputs: ["refreshClick"] }, { kind: "pipe", type: i6.CurrencyPipe, name: "currency" }] });
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountsComponent, decorators: [{
|
|
67
|
-
type: Component,
|
|
68
|
-
args: [{ selector: 'spa-accounts', template: "<h4>Accounts</h4>\r\n<hr>\r\n\r\n<div class=\"tin-row d-flex justify-content-between\" style=\"font-size: 14px;margin-left: 5px;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"open(null)\">Create</button>\r\n <spa-filter [showText]=\"false\" (refreshClick)=\"loadData()\"></spa-filter>\r\n</div>\r\n\r\n<div class=\"row \" style=\"margin-left: 0px;\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" *ngFor=\"let account of accounts\" style=\"max-width: 350px;margin: 5px;\">\r\n\r\n <div class=\"tin-row d-flex justify-content-between\">\r\n <label style=\"font-size: 24px; font-weight: 300;\">{{account.name}}</label>\r\n <button mat-mini-fab color=\"primary\" (click)=\"open(account)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 5px;margin-bottom: 10px;\"/>\r\n\r\n <label *ngIf=\"account.description != ''\" style=\"font-size: small;margin-bottom: 5px;\">{{account.description}}</label>\r\n\r\n <div *ngIf=\"account\" class=\"tin-row\">\r\n <label style=\"margin-right: 5px;font-size: 14px;\">{{account?.currency}}</label>\r\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\r\n </div>\r\n\r\n <mat-card-actions class=\"d-flex justify-content-between\" >\r\n <button mat-stroked-button color=\"primary\" style=\"margin-right:10px;\" (click)=\"view(account)\">View</button>\r\n <button mat-mini-fab *ngIf=\"account.count == 0\" color=\"warn\" style=\"margin-right:10px\" (click)=\"delete(account)\"><mat-icon>delete</mat-icon></button>\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n</div>\r\n\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}\n"] }]
|
|
69
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.DataServiceLib }, { type: i3.MessageService }, { type: i4.AuthService }, { type: i5.MatDialog }]; } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYWNjb3VudHMvYWNjb3VudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvYWNjb3VudHMvYWNjb3VudHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU9sRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzFELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFBbUIsTUFBYyxFQUFTLFdBQTJCLEVBQVUsY0FBOEIsRUFBUyxXQUF3QixFQUFTLE1BQWlCO1FBQXJKLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFNeEssV0FBTSxHQUFxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBTm1JLENBQUM7SUFFN0ssUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBS0QsUUFBUTtRQUVOLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBeUIsRUFBRSxFQUFFO1lBQ2pHLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFJRCxJQUFJLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQztRQUVKLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoRCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRTNDLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO2dCQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsTUFBTSxDQUFDLEdBQUc7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBRXZFLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtnQkFHbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtvQkFFOUgsSUFBSSxXQUFXLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTt3QkFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNqQjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ2hEO2dCQUVILENBQUMsQ0FBQyxDQUFBO2FBR0g7WUFBQSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs4R0E5RFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsb0RDaEI5Qixxb0RBb0NBOzJGRHBCYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgVGFibGVDb25maWcsIEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IHF1YW50aXR5RGlhbG9nIH0gZnJvbSAnLi9xdWFudGl0eURpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGFjY291bnREaWFsb2cgfSBmcm9tICcuL2FjY291bnREaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWFjY291bnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3VudHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FjY291bnRzLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcm91dGVyOiBSb3V0ZXIscHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZERhdGEoKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgYWNjb3VudHM7XHJcblxyXG4gIGxvYWREYXRhKCl7XHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHsgdXJsOiAnZ2VuZXJhbC9hY2NvdW50cy94JyB9LCcnKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlIDogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5hY2NvdW50cyA9IGFwaVJlc3BvbnNlLmRhdGE7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcbiAgdmlldyh4KXtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuTmF2aWdhdGVXaXRoVmFsdWUoXCJob21lL2FkbWluL3RyYW5zYWN0aW9uc1wiLCB4LmFjY291bnRJRClcclxuICB9XHJcblxyXG4gIG9wZW4oeCkge1xyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oYWNjb3VudERpYWxvZywge1xyXG4gICAgICB3aWR0aDogXCI5MDBweFwiLFxyXG4gICAgICBkYXRhOiB4LFxyXG4gICAgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkRGF0YSgpXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlVwZGF0ZWRcIilcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlKHJvdyl7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oYERFTEVURSAke3Jvdy5uYW1lfSA/YCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKHsgdXJsOiBgZ2VuZXJhbC9hY2NvdW50cz9hY3Rpb249ZGVsZXRlYCwgbWV0aG9kOiAncG9zdCcgfSwgcm93KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgICAgIGlmIChhcGlSZXNwb25zZS5tZXNzYWdlID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJBY2NvdW50IERlbGV0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZERhdGEoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iLCI8aDQ+QWNjb3VudHM8L2g0PlxyXG48aHI+XHJcblxyXG48ZGl2IGNsYXNzPVwidGluLXJvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDttYXJnaW4tbGVmdDogNXB4O1wiPlxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW4obnVsbClcIj5DcmVhdGU8L2J1dHRvbj5cclxuICA8c3BhLWZpbHRlciBbc2hvd1RleHRdPVwiZmFsc2VcIiAocmVmcmVzaENsaWNrKT1cImxvYWREYXRhKClcIj48L3NwYS1maWx0ZXI+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInJvdyBcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAwcHg7XCI+XHJcblxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejhcIiAqbmdGb3I9XCJsZXQgYWNjb3VudCBvZiBhY2NvdW50c1wiIHN0eWxlPVwibWF4LXdpZHRoOiAzNTBweDttYXJnaW46IDVweDtcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGluLXJvdyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOiAyNHB4OyBmb250LXdlaWdodDogMzAwO1wiPnt7YWNjb3VudC5uYW1lfX08L2xhYmVsPlxyXG4gICAgICA8YnV0dG9uIG1hdC1taW5pLWZhYiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbihhY2NvdW50KVwiPjxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxociBzdHlsZT1cIm1hcmdpbi10b3A6IDVweDttYXJnaW4tYm90dG9tOiAxMHB4O1wiLz5cclxuXHJcbiAgICA8bGFiZWwgKm5nSWY9XCJhY2NvdW50LmRlc2NyaXB0aW9uICE9ICcnXCIgc3R5bGU9XCJmb250LXNpemU6IHNtYWxsO21hcmdpbi1ib3R0b206IDVweDtcIj57e2FjY291bnQuZGVzY3JpcHRpb259fTwvbGFiZWw+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImFjY291bnRcIiBjbGFzcz1cInRpbi1yb3dcIj5cclxuICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7Zm9udC1zaXplOiAxNHB4O1wiPnt7YWNjb3VudD8uY3VycmVuY3l9fTwvbGFiZWw+XHJcbiAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZTogMzRweDttYXJnaW4tcmlnaHQ6IDIwcHg7XCI+e3thY2NvdW50Py5iYWxhbmNlIHwgY3VycmVuY3kgOiAnJyA6ICcnfX08L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiA+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OjEwcHg7XCIgKGNsaWNrKT1cInZpZXcoYWNjb3VudClcIj5WaWV3PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1pbmktZmFiICpuZ0lmPVwiYWNjb3VudC5jb3VudCA9PSAwXCIgY29sb3I9XCJ3YXJuXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6MTBweFwiIChjbGljayk9XCJkZWxldGUoYWNjb3VudClcIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbiAgPC9tYXQtY2FyZD5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { ChangeUserPassword } from './../../classes/Classes';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/router";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "../../services/http.service";
|
|
7
|
-
import * as i4 from "../../services/message.service";
|
|
8
|
-
import * as i5 from "../../services/datalib.service";
|
|
9
|
-
import * as i6 from "../../services/auth.service";
|
|
10
|
-
import * as i7 from "@angular/material/button";
|
|
11
|
-
import * as i8 from "../text/text.component";
|
|
12
|
-
export class ChangePasswordComponent {
|
|
13
|
-
constructor(router, location, httpService, messageService, dataService, authService, route) {
|
|
14
|
-
this.router = router;
|
|
15
|
-
this.location = location;
|
|
16
|
-
this.httpService = httpService;
|
|
17
|
-
this.messageService = messageService;
|
|
18
|
-
this.dataService = dataService;
|
|
19
|
-
this.authService = authService;
|
|
20
|
-
this.route = route;
|
|
21
|
-
this.isProcessing = false;
|
|
22
|
-
this.changePassword = new ChangeUserPassword();
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.myRole = this.authService.currentRoleSource.value;
|
|
26
|
-
if (this.dataService.tmpProfileuserName == "") {
|
|
27
|
-
this.changePassword.userName = this.authService.currentUser;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
this.changePassword.userName = this.dataService.tmpProfileuserName;
|
|
31
|
-
this.dataService.tmpProfileuserName = "";
|
|
32
|
-
}
|
|
33
|
-
if (this.route.snapshot.queryParams["redirectTo"] != undefined) {
|
|
34
|
-
this.redirectPath = this.route.snapshot.queryParams["redirectTo"];
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
this.redirectPath = "home";
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
change() {
|
|
41
|
-
if (!this.myRole[this.dataService.capUsers.name]) {
|
|
42
|
-
if (this.changePassword.currentPassword == "") {
|
|
43
|
-
this.messageService.toast("Please enter current Password");
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (this.changePassword.newPassword == "") {
|
|
48
|
-
this.messageService.toast("Please enter new Password");
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (this.changePassword.confirmPassword == "") {
|
|
52
|
-
this.messageService.toast("Please confirm new Password");
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if (this.changePassword.confirmPassword != this.changePassword.newPassword) {
|
|
56
|
-
this.messageService.toast("Passwords do not match");
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
this.isProcessing = true;
|
|
60
|
-
if (this.myRole[this.dataService.capUsers.name]) {
|
|
61
|
-
this.dataService.ChangePasswordAdmin(this.changePassword).subscribe((apiResponse) => {
|
|
62
|
-
this.isProcessing = false;
|
|
63
|
-
if (apiResponse.message == "success") {
|
|
64
|
-
this.messageService.toast("Password Changed");
|
|
65
|
-
this.router.navigate([this.redirectPath]);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this.messageService.toast("Error: " + apiResponse.message);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
this.dataService.ChangePassword(this.changePassword).subscribe((apiResponse) => {
|
|
74
|
-
this.isProcessing = false;
|
|
75
|
-
if (apiResponse.message == "success") {
|
|
76
|
-
this.messageService.toast("Password Changed");
|
|
77
|
-
this.router.navigate([this.redirectPath]);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.messageService.toast("Error: " + apiResponse.message);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
ChangePasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ChangePasswordComponent, deps: [{ token: i1.Router }, { token: i2.Location }, { token: i3.HttpService }, { token: i4.MessageService }, { token: i5.DataServiceLib }, { token: i6.AuthService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
87
|
-
ChangePasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ChangePasswordComponent, selector: "spa-change-password", ngImport: i0, template: "<h4>Change Password</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <div class=\"fill\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" type=\"password\"></spa-text>\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n\r\n </div>\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! \u2026)<br>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n<!-- <div class=\"container\">\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" >\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"tin-input \" style=\"font-size:14px;\">\r\n\r\n <div class=\"col\" *ngIf=\"changePassword.userName!=''\">\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" width=\"300px\" [readonly]=\"true\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\" *ngIf=\"!myRole[dataService.capUsers.name]\">\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col mt-3\">\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! \u2026)<br>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div> -->\r\n\r\n", styles: [""], dependencies: [{ kind: "component", type: i7.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "options", "optionValue", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }] });
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ChangePasswordComponent, decorators: [{
|
|
89
|
-
type: Component,
|
|
90
|
-
args: [{ selector: 'spa-change-password', template: "<h4>Change Password</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <div class=\"fill\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" type=\"password\"></spa-text>\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n\r\n </div>\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! \u2026)<br>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n<!-- <div class=\"container\">\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" >\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"tin-input \" style=\"font-size:14px;\">\r\n\r\n <div class=\"col\" *ngIf=\"changePassword.userName!=''\">\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" width=\"300px\" [readonly]=\"true\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\" *ngIf=\"!myRole[dataService.capUsers.name]\">\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col mt-3\">\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! \u2026)<br>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div> -->\r\n\r\n" }]
|
|
91
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }, { type: i3.HttpService }, { type: i4.MessageService }, { type: i5.DataServiceLib }, { type: i6.AuthService }, { type: i1.ActivatedRoute }]; } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL2NoYW5nZS1wYXNzd29yZC9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvY2hhbmdlLXBhc3N3b3JkL2NoYW5nZS1wYXNzd29yZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQWUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBYWxELE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsWUFBbUIsTUFBYyxFQUFVLFFBQWtCLEVBQVUsV0FBd0IsRUFBVSxjQUE4QixFQUFTLFdBQTJCLEVBQVUsV0FBd0IsRUFBVSxLQUFxQjtRQUF6TixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQXVCNU8saUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsbUJBQWMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUF4QnNNLENBQUM7SUFFalAsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUE7UUFFdEQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFFLEVBQUUsRUFBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztTQUU3RDthQUFJO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztZQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLFNBQVMsRUFBRTtZQUM5RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtTQUNsRTthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUE7U0FDM0I7SUFFSCxDQUFDO0lBT00sTUFBTTtRQUVYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUMzRCxPQUFPO2FBQ1I7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDdkQsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUN6RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFHO1lBQzNFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDcEQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBRzlDLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtnQkFDL0YsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBRTFCLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRTlDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7aUJBRTNDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQyxDQUNBLENBQUM7U0FFSDthQUFJO1lBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtnQkFDMUYsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7Z0JBRTFCLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRTlDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7aUJBQzNDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQyxDQUNBLENBQUM7U0FFSDtJQUNILENBQUM7O29IQXZGVSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwyRENmcEMsMG1HQW9GQTsyRkRyRWEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBDaGFuZ2VVc2VyUGFzc3dvcmQsIEFwaVJlc3BvbnNlIH0gZnJvbSAnLi8uLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1jaGFuZ2UtcGFzc3dvcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFuZ2UtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYW5nZS1wYXNzd29yZC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENoYW5nZVBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbiwgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubXlSb2xlID0gdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFTZXJ2aWNlLnRtcFByb2ZpbGV1c2VyTmFtZT09XCJcIil7XHJcbiAgICAgIHRoaXMuY2hhbmdlUGFzc3dvcmQudXNlck5hbWUgPSB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRVc2VyO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmNoYW5nZVBhc3N3b3JkLnVzZXJOYW1lID0gdGhpcy5kYXRhU2VydmljZS50bXBQcm9maWxldXNlck5hbWU7XHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UudG1wUHJvZmlsZXVzZXJOYW1lID0gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInJlZGlyZWN0VG9cIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucmVkaXJlY3RQYXRoID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInJlZGlyZWN0VG9cIl1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVkaXJlY3RQYXRoID0gXCJob21lXCJcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBteVJvbGU7XHJcbiAgcmVkaXJlY3RQYXRoXHJcbiAgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2hhbmdlUGFzc3dvcmQgPSBuZXcgQ2hhbmdlVXNlclBhc3N3b3JkKCk7XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLm15Um9sZVt0aGlzLmRhdGFTZXJ2aWNlLmNhcFVzZXJzLm5hbWVdKXtcclxuICAgICAgaWYgKHRoaXMuY2hhbmdlUGFzc3dvcmQuY3VycmVudFBhc3N3b3JkID09IFwiXCIpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIGVudGVyIGN1cnJlbnQgUGFzc3dvcmRcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhbmdlUGFzc3dvcmQubmV3UGFzc3dvcmQgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIGVudGVyIG5ldyBQYXNzd29yZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNoYW5nZVBhc3N3b3JkLmNvbmZpcm1QYXNzd29yZCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgY29uZmlybSBuZXcgUGFzc3dvcmRcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jaGFuZ2VQYXNzd29yZC5jb25maXJtUGFzc3dvcmQgIT0gdGhpcy5jaGFuZ2VQYXNzd29yZC5uZXdQYXNzd29yZCApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBhc3N3b3JkcyBkbyBub3QgbWF0Y2hcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMubXlSb2xlW3RoaXMuZGF0YVNlcnZpY2UuY2FwVXNlcnMubmFtZV0pe1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2hhbmdlUGFzc3dvcmRBZG1pbih0aGlzLmNoYW5nZVBhc3N3b3JkKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5tZXNzYWdlID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGFzc3dvcmQgQ2hhbmdlZFwiKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5yZWRpcmVjdFBhdGhdKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9ZWxzZXtcclxuXHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2hhbmdlUGFzc3dvcmQodGhpcy5jaGFuZ2VQYXNzd29yZCkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoYXBpUmVzcG9uc2UubWVzc2FnZSA9PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBhc3N3b3JkIENoYW5nZWRcIik7XHJcblxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucmVkaXJlY3RQYXRoXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxoND5DaGFuZ2UgUGFzc3dvcmQ8L2g0PlxyXG48aHI+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lciB0aW4tZ3JpZFwiIHN0eWxlPVwiZm9udC1zaXplOjE0cHg7XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWxsXCI+XHJcblxyXG4gICAgPHNwYS10ZXh0IGlkPVwidHh0dXNlck5hbWVcIiBkaXNwbGF5PVwiVXNlcm5hbWVcIiBbKHZhbHVlKV09XCJjaGFuZ2VQYXNzd29yZC51c2VyTmFtZVwiICBbcmVhZG9ubHldPVwidHJ1ZVwiPjwvc3BhLXRleHQ+XHJcbiAgICA8c3BhLXRleHQgaWQ9XCJ0eHRQYXNzd29yZFwiIGRpc3BsYXk9XCJDdXJyZW50IFBhc3N3b3JkXCIgWyh2YWx1ZSldPVwiY2hhbmdlUGFzc3dvcmQuY3VycmVudFBhc3N3b3JkXCIgIHR5cGU9XCJwYXNzd29yZFwiPjwvc3BhLXRleHQ+XHJcbiAgICA8c3BhLXRleHQgaWQ9XCJ0eHROZXdQYXNzd29yZFwiIGRpc3BsYXk9XCJOZXcgUGFzc3dvcmRcIiBbKHZhbHVlKV09XCJjaGFuZ2VQYXNzd29yZC5uZXdQYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiPjwvc3BhLXRleHQ+XHJcbiAgICA8c3BhLXRleHQgaWQ9XCJ0eHRDb25maXJtUGFzc3dvcmRcIiBkaXNwbGF5PVwiQ29uZmlybSBQYXNzd29yZFwiIFsodmFsdWUpXT1cImNoYW5nZVBhc3N3b3JkLmNvbmZpcm1QYXNzd29yZFwiICB0eXBlPVwicGFzc3dvcmRcIj48L3NwYS10ZXh0PlxyXG4gICAgPGJ1dHRvbiBpZD1cImJ0bkNoYW5nZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjaGFuZ2UoKVwiIGNka0ZvY3VzSW5pdGlhbD5DaGFuZ2U8L2J1dHRvbj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgIDxiPipQbGVhc2UgY29uc2lkZXIgdGhlc2UgcmVxdWlyZW1lbnRzIGZvciB5b3VyIG5ldyBwYXNzd29yZC48L2I+IDxicj48YnI+XHJcblxyXG4gICAgICAgIEF0IGxlYXN0IDggY2hhcmFjdGVyczxicj5cclxuICAgICAgICBBdCBsZWFzdCAxIHVwcGVyY2FzZSBsZXR0ZXIgKEEtWik8YnI+XHJcbiAgICAgICAgQXQgbGVhc3QgMiBsb3dlcmNhc2UgbGV0dGVycyAoYS16KTxicj5cclxuICAgICAgICBBdCBsZWFzdCAxIGRpZ2l0ICgwLTkpPGJyPlxyXG4gICAgICAgIEF0IGxlYXN0IDEgc3BlY2lhbCBjaGFyYWN0ZXIgKH5gISDigKYpPGJyPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG48IS0tIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiA+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpbi1pbnB1dCBcIiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4O1wiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgKm5nSWY9XCJjaGFuZ2VQYXNzd29yZC51c2VyTmFtZSE9JydcIj5cclxuICAgICAgICAgIDxzcGEtdGV4dCBpZD1cInR4dHVzZXJOYW1lXCIgZGlzcGxheT1cIlVzZXJuYW1lXCIgWyh2YWx1ZSldPVwiY2hhbmdlUGFzc3dvcmQudXNlck5hbWVcIiB3aWR0aD1cIjMwMHB4XCIgW3JlYWRvbmx5XT1cInRydWVcIj48L3NwYS10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgKm5nSWY9XCIhbXlSb2xlW2RhdGFTZXJ2aWNlLmNhcFVzZXJzLm5hbWVdXCI+XHJcbiAgICAgICAgICA8c3BhLXRleHQgaWQ9XCJ0eHRQYXNzd29yZFwiIGRpc3BsYXk9XCJDdXJyZW50IFBhc3N3b3JkXCIgWyh2YWx1ZSldPVwiY2hhbmdlUGFzc3dvcmQuY3VycmVudFBhc3N3b3JkXCIgd2lkdGg9XCIzMDBweFwiIHR5cGU9XCJwYXNzd29yZFwiPjwvc3BhLXRleHQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxzcGEtdGV4dCBpZD1cInR4dE5ld1Bhc3N3b3JkXCIgZGlzcGxheT1cIk5ldyBQYXNzd29yZFwiIFsodmFsdWUpXT1cImNoYW5nZVBhc3N3b3JkLm5ld1Bhc3N3b3JkXCIgd2lkdGg9XCIzMDBweFwiIHR5cGU9XCJwYXNzd29yZFwiPjwvc3BhLXRleHQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICA8c3BhLXRleHQgaWQ9XCJ0eHRDb25maXJtUGFzc3dvcmRcIiBkaXNwbGF5PVwiQ29uZmlybSBQYXNzd29yZFwiIFsodmFsdWUpXT1cImNoYW5nZVBhc3N3b3JkLmNvbmZpcm1QYXNzd29yZFwiIHdpZHRoPVwiMzAwcHhcIiB0eXBlPVwicGFzc3dvcmRcIj48L3NwYS10ZXh0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIG10LTNcIj5cclxuICAgICAgICAgIDxidXR0b24gaWQ9XCJidG5DaGFuZ2VcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2hhbmdlKClcIiBjZGtGb2N1c0luaXRpYWw+Q2hhbmdlPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mb1wiIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgIDxiPipQbGVhc2UgY29uc2lkZXIgdGhlc2UgcmVxdWlyZW1lbnRzIGZvciB5b3VyIG5ldyBwYXNzd29yZC48L2I+IDxicj48YnI+XHJcblxyXG4gICAgICAgIEF0IGxlYXN0IDggY2hhcmFjdGVyczxicj5cclxuICAgICAgICBBdCBsZWFzdCAxIHVwcGVyY2FzZSBsZXR0ZXIgKEEtWik8YnI+XHJcbiAgICAgICAgQXQgbGVhc3QgMiBsb3dlcmNhc2UgbGV0dGVycyAoYS16KTxicj5cclxuICAgICAgICBBdCBsZWFzdCAxIGRpZ2l0ICgwLTkpPGJyPlxyXG4gICAgICAgIEF0IGxlYXN0IDEgc3BlY2lhbCBjaGFyYWN0ZXIgKH5gISDigKYpPGJyPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG5cclxuIl19
|