tin-spa 14.0.1 → 14.3.11

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.
Files changed (234) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/classes/Classes.mjs +206 -53
  3. package/esm2020/lib/classes/TinCore.mjs +46 -213
  4. package/esm2020/lib/components/accounts/accountDialog.component.mjs +56 -0
  5. package/esm2020/lib/components/accounts/accounts.component.mjs +70 -0
  6. package/esm2020/lib/components/alert/alert.component.mjs +7 -21
  7. package/esm2020/lib/components/attach/attach.component.mjs +33 -49
  8. package/esm2020/lib/components/bug/bug.component.mjs +14 -0
  9. package/esm2020/lib/components/change-password/change-password.component.mjs +92 -0
  10. package/esm2020/lib/components/create-account/create-account.component.mjs +109 -0
  11. package/esm2020/lib/components/customers/customers.component.mjs +60 -0
  12. package/esm2020/lib/components/date/date.component.mjs +8 -10
  13. package/esm2020/lib/components/datetime/datetime.component.mjs +3 -6
  14. package/esm2020/lib/{pages → components}/departments/departments.component.mjs +5 -3
  15. package/esm2020/lib/components/employees/employees.component.mjs +21 -0
  16. package/esm2020/lib/components/filter/filter.component.mjs +3 -7
  17. package/esm2020/lib/components/form/form.component.mjs +52 -157
  18. package/esm2020/lib/components/grades/grades.component.mjs +14 -0
  19. package/esm2020/lib/components/inventory/inventory.component.mjs +99 -0
  20. package/esm2020/lib/components/inventory/quantityDialog.component.mjs +53 -0
  21. package/esm2020/lib/components/invitations/invitations.component.mjs +14 -0
  22. package/esm2020/lib/components/invitations-table/invitations-table.component.mjs +70 -0
  23. package/esm2020/lib/components/label/label.component.mjs +3 -9
  24. package/esm2020/lib/components/list-dialog/list-dialog.component.mjs +3 -3
  25. package/esm2020/lib/components/login/login.component.mjs +127 -0
  26. package/esm2020/lib/components/logs/logs.component.mjs +37 -0
  27. package/esm2020/lib/components/membership/membership.component.mjs +48 -0
  28. package/esm2020/lib/components/money/money.component.mjs +9 -26
  29. package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +28 -32
  30. package/esm2020/lib/components/notifications/notifications.component.mjs +14 -0
  31. package/esm2020/lib/components/number/number.component.mjs +8 -23
  32. package/esm2020/lib/components/option/option.component.mjs +14 -39
  33. package/esm2020/lib/components/plans/plans.component.mjs +47 -0
  34. package/esm2020/lib/components/positions/positions.component.mjs +21 -0
  35. package/esm2020/lib/components/profile/profile.component.mjs +92 -0
  36. package/esm2020/lib/components/recover-account/recover-account.component.mjs +46 -0
  37. package/esm2020/lib/{pages → components}/roles/addRoleDialog.component.mjs +3 -3
  38. package/esm2020/lib/components/roles/roles.component.mjs +91 -0
  39. package/esm2020/lib/components/search/search.component.mjs +5 -10
  40. package/esm2020/lib/components/select/select.component.mjs +119 -56
  41. package/esm2020/lib/components/settings/settings.component.mjs +62 -0
  42. package/esm2020/lib/components/signup/signup.component.mjs +50 -0
  43. package/esm2020/lib/components/steps/steps.component.mjs +61 -83
  44. package/esm2020/lib/components/suppliers/suppliers.component.mjs +50 -0
  45. package/esm2020/lib/components/table/detailsDialog.component.mjs +41 -215
  46. package/esm2020/lib/components/table/table.component.mjs +108 -142
  47. package/esm2020/lib/components/table-action/table-action.component.mjs +8 -42
  48. package/esm2020/lib/components/table-header/table-header.component.mjs +15 -87
  49. package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +39 -219
  50. package/esm2020/lib/components/table-internal/table-internal.component.mjs +109 -144
  51. package/esm2020/lib/components/table-row/table-row.component.mjs +6 -41
  52. package/esm2020/lib/components/tasks/tasks.component.mjs +86 -0
  53. package/esm2020/lib/components/tenant-settings/inviteDialog.component.mjs +60 -0
  54. package/esm2020/lib/components/tenant-settings/tenant-settings.component.mjs +155 -0
  55. package/esm2020/lib/components/tenants/tenants.component.mjs +47 -0
  56. package/esm2020/lib/components/text/text.component.mjs +48 -122
  57. package/esm2020/lib/components/tiles/tiles.component.mjs +26 -44
  58. package/esm2020/lib/components/transactions/transactDialog.component.mjs +80 -0
  59. package/esm2020/lib/components/transactions/transactions.component.mjs +101 -0
  60. package/esm2020/lib/components/users/users.component.mjs +118 -0
  61. package/esm2020/lib/components/viewer/viewer.component.mjs +3 -7
  62. package/esm2020/lib/components/viewer/viewerDialog.component.mjs +13 -20
  63. package/esm2020/lib/components/welcome/welcome.component.mjs +86 -0
  64. package/esm2020/lib/modules/admin/admin-routing.module.mjs +22 -32
  65. package/esm2020/lib/modules/index/index-routing.module.mjs +4 -4
  66. package/esm2020/lib/modules/spa-admin.module.mjs +7 -7
  67. package/esm2020/lib/modules/spa-index.module.mjs +4 -4
  68. package/esm2020/lib/modules/spa-user.module.mjs +3 -3
  69. package/esm2020/lib/modules/user/user-routing.module.mjs +3 -3
  70. package/esm2020/lib/services/auth.service.mjs +2 -3
  71. package/esm2020/lib/services/button.service.mjs +32 -92
  72. package/esm2020/lib/services/datalib.service.mjs +78 -551
  73. package/esm2020/lib/services/dialog.service.mjs +7 -51
  74. package/esm2020/lib/services/log.service.mjs +2 -2
  75. package/esm2020/lib/services/table-config.service.mjs +7 -55
  76. package/esm2020/lib/tin-spa.module.mjs +30 -72
  77. package/esm2020/public-api.mjs +25 -35
  78. package/fesm2015/tin-spa.mjs +2681 -6963
  79. package/fesm2015/tin-spa.mjs.map +1 -1
  80. package/fesm2020/tin-spa.mjs +2750 -7078
  81. package/fesm2020/tin-spa.mjs.map +1 -1
  82. package/lib/classes/Classes.d.ts +296 -280
  83. package/lib/classes/TinCore.d.ts +4 -15
  84. package/lib/components/alert/alert.component.d.ts +3 -4
  85. package/lib/components/attach/attach.component.d.ts +6 -13
  86. package/lib/{pages → components}/change-password/change-password.component.d.ts +1 -1
  87. package/lib/{pages → components}/create-account/create-account.component.d.ts +1 -2
  88. package/lib/{pages → components}/customers/customers.component.d.ts +8 -2
  89. package/lib/components/date/date.component.d.ts +1 -1
  90. package/lib/components/datetime/datetime.component.d.ts +1 -2
  91. package/lib/components/filter/filter.component.d.ts +0 -1
  92. package/lib/components/form/form.component.d.ts +9 -20
  93. package/lib/components/invitations/invitations.component.d.ts +8 -0
  94. package/lib/{pages → components}/invitations-table/invitations-table.component.d.ts +1 -1
  95. package/lib/components/label/label.component.d.ts +1 -3
  96. package/lib/{pages → components}/login/login.component.d.ts +3 -10
  97. package/lib/{pages → components}/logs/logs.component.d.ts +6 -2
  98. package/lib/{pages → components}/membership/membership.component.d.ts +6 -2
  99. package/lib/components/money/money.component.d.ts +1 -8
  100. package/lib/components/nav-menu/nav-menu.component.d.ts +2 -6
  101. package/lib/components/notifications/notifications.component.d.ts +8 -0
  102. package/lib/components/number/number.component.d.ts +1 -7
  103. package/lib/components/option/option.component.d.ts +2 -11
  104. package/lib/{pages → components}/plans/plans.component.d.ts +6 -2
  105. package/lib/{pages → components}/profile/profile.component.d.ts +1 -2
  106. package/lib/{pages → components}/roles/addRoleDialog.component.d.ts +1 -1
  107. package/lib/{pages → components}/roles/roles.component.d.ts +3 -15
  108. package/lib/components/search/search.component.d.ts +1 -3
  109. package/lib/components/select/select.component.d.ts +35 -16
  110. package/lib/{pages → components}/signup/signup.component.d.ts +1 -1
  111. package/lib/components/steps/steps.component.d.ts +9 -18
  112. package/lib/{pages → components}/suppliers/suppliers.component.d.ts +4 -1
  113. package/lib/components/table/detailsDialog.component.d.ts +7 -29
  114. package/lib/components/table/table.component.d.ts +9 -18
  115. package/lib/components/table-action/table-action.component.d.ts +1 -4
  116. package/lib/components/table-header/table-header.component.d.ts +4 -19
  117. package/lib/components/table-internal/detailsDialog-internal.component.d.ts +7 -29
  118. package/lib/components/table-internal/table-internal.component.d.ts +9 -18
  119. package/lib/components/table-row/table-row.component.d.ts +2 -5
  120. package/lib/{pages → components}/tasks/tasks.component.d.ts +1 -1
  121. package/lib/components/tenant-settings/inviteDialog.component.d.ts +28 -0
  122. package/lib/{pages → components}/tenant-settings/tenant-settings.component.d.ts +7 -12
  123. package/lib/{pages → components}/tenants/tenants.component.d.ts +2 -2
  124. package/lib/components/text/text.component.d.ts +5 -22
  125. package/lib/components/tiles/tiles.component.d.ts +4 -7
  126. package/lib/{pages → components}/users/users.component.d.ts +16 -8
  127. package/lib/components/viewer/viewerDialog.component.d.ts +1 -3
  128. package/lib/modules/spa-admin.module.d.ts +6 -6
  129. package/lib/modules/spa-index.module.d.ts +3 -3
  130. package/lib/modules/spa-user.module.d.ts +2 -2
  131. package/lib/services/auth.service.d.ts +1 -1
  132. package/lib/services/button.service.d.ts +8 -11
  133. package/lib/services/datalib.service.d.ts +10 -58
  134. package/lib/services/dialog.service.d.ts +2 -3
  135. package/lib/services/log.service.d.ts +1 -1
  136. package/lib/services/table-config.service.d.ts +1 -9
  137. package/lib/tin-spa.module.d.ts +33 -53
  138. package/package.json +1 -1
  139. package/public-api.d.ts +23 -33
  140. package/esm2020/lib/classes/LibClasses.mjs +0 -180
  141. package/esm2020/lib/components/capsules/capsules.component.mjs +0 -63
  142. package/esm2020/lib/components/cards/cards.component.mjs +0 -103
  143. package/esm2020/lib/components/email/email.component.mjs +0 -133
  144. package/esm2020/lib/components/html/html.component.mjs +0 -34
  145. package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -165
  146. package/esm2020/lib/components/multi-text/multi-text.component.mjs +0 -208
  147. package/esm2020/lib/components/notes/notes.component.mjs +0 -62
  148. package/esm2020/lib/components/page/page.component.mjs +0 -101
  149. package/esm2020/lib/components/select-bitwise/select-bitwise.component.mjs +0 -87
  150. package/esm2020/lib/components/select-common/select-common.component.mjs +0 -206
  151. package/esm2020/lib/components/select-internal/select-internal.component.mjs +0 -75
  152. package/esm2020/lib/components/select-lite/select-lite.component.mjs +0 -18
  153. package/esm2020/lib/components/statuses/statuses.component.mjs +0 -44
  154. package/esm2020/lib/components/suffix/suffix.component.mjs +0 -70
  155. package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +0 -404
  156. package/esm2020/lib/components/table-lite/table-lite.component.mjs +0 -441
  157. package/esm2020/lib/components/tabs/tabs.component.mjs +0 -74
  158. package/esm2020/lib/pages/accounts/accountDialog.component.mjs +0 -56
  159. package/esm2020/lib/pages/accounts/accounts.component.mjs +0 -70
  160. package/esm2020/lib/pages/app-models/app-models.component.mjs +0 -56
  161. package/esm2020/lib/pages/approvals/approvals.component.mjs +0 -19
  162. package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +0 -165
  163. package/esm2020/lib/pages/bug/bug.component.mjs +0 -14
  164. package/esm2020/lib/pages/change-password/change-password.component.mjs +0 -92
  165. package/esm2020/lib/pages/create-account/create-account.component.mjs +0 -110
  166. package/esm2020/lib/pages/customers/customers.component.mjs +0 -21
  167. package/esm2020/lib/pages/employees/employees.component.mjs +0 -20
  168. package/esm2020/lib/pages/grades/grades.component.mjs +0 -14
  169. package/esm2020/lib/pages/inventory/inventory.component.mjs +0 -99
  170. package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +0 -53
  171. package/esm2020/lib/pages/invitations-table/invitations-table.component.mjs +0 -71
  172. package/esm2020/lib/pages/login/login.component.mjs +0 -166
  173. package/esm2020/lib/pages/logs/logs.component.mjs +0 -42
  174. package/esm2020/lib/pages/membership/membership.component.mjs +0 -44
  175. package/esm2020/lib/pages/notifications/notifications.component.mjs +0 -90
  176. package/esm2020/lib/pages/notifications-config/notifications-config.component.mjs +0 -113
  177. package/esm2020/lib/pages/plans/plans.component.mjs +0 -44
  178. package/esm2020/lib/pages/positions/positions.component.mjs +0 -21
  179. package/esm2020/lib/pages/profile/profile.component.mjs +0 -94
  180. package/esm2020/lib/pages/recover-account/recover-account.component.mjs +0 -46
  181. package/esm2020/lib/pages/roles/roles.component.mjs +0 -151
  182. package/esm2020/lib/pages/settings/settings.component.mjs +0 -54
  183. package/esm2020/lib/pages/signup/signup.component.mjs +0 -50
  184. package/esm2020/lib/pages/suppliers/suppliers.component.mjs +0 -22
  185. package/esm2020/lib/pages/tasks/tasks.component.mjs +0 -86
  186. package/esm2020/lib/pages/tenant-settings/tenant-settings.component.mjs +0 -228
  187. package/esm2020/lib/pages/tenants/tenants.component.mjs +0 -47
  188. package/esm2020/lib/pages/transactions/transactDialog.component.mjs +0 -80
  189. package/esm2020/lib/pages/transactions/transactions.component.mjs +0 -101
  190. package/esm2020/lib/pages/users/users.component.mjs +0 -167
  191. package/esm2020/lib/pages/welcome/welcome.component.mjs +0 -86
  192. package/esm2020/lib/select-context.directive.mjs +0 -23
  193. package/esm2020/lib/services/csv.service.mjs +0 -49
  194. package/esm2020/lib/services/notifications.service.mjs +0 -33
  195. package/lib/classes/LibClasses.d.ts +0 -173
  196. package/lib/components/capsules/capsules.component.d.ts +0 -26
  197. package/lib/components/cards/cards.component.d.ts +0 -39
  198. package/lib/components/email/email.component.d.ts +0 -40
  199. package/lib/components/html/html.component.d.ts +0 -16
  200. package/lib/components/multi-select/multi-select.component.d.ts +0 -47
  201. package/lib/components/multi-text/multi-text.component.d.ts +0 -56
  202. package/lib/components/notes/notes.component.d.ts +0 -19
  203. package/lib/components/page/page.component.d.ts +0 -38
  204. package/lib/components/select-bitwise/select-bitwise.component.d.ts +0 -31
  205. package/lib/components/select-common/select-common.component.d.ts +0 -53
  206. package/lib/components/select-internal/select-internal.component.d.ts +0 -23
  207. package/lib/components/select-lite/select-lite.component.d.ts +0 -8
  208. package/lib/components/statuses/statuses.component.d.ts +0 -12
  209. package/lib/components/suffix/suffix.component.d.ts +0 -23
  210. package/lib/components/table-lite/detailsDialog-lite.component.d.ts +0 -86
  211. package/lib/components/table-lite/table-lite.component.d.ts +0 -91
  212. package/lib/components/tabs/tabs.component.d.ts +0 -32
  213. package/lib/pages/app-models/app-models.component.d.ts +0 -15
  214. package/lib/pages/approvals/approvals.component.d.ts +0 -10
  215. package/lib/pages/approvals-config/approvals-config.component.d.ts +0 -24
  216. package/lib/pages/notifications/notifications.component.d.ts +0 -16
  217. package/lib/pages/notifications-config/notifications-config.component.d.ts +0 -17
  218. package/lib/select-context.directive.d.ts +0 -10
  219. package/lib/services/csv.service.d.ts +0 -10
  220. package/lib/services/notifications.service.d.ts +0 -12
  221. /package/lib/{pages → components}/accounts/accountDialog.component.d.ts +0 -0
  222. /package/lib/{pages → components}/accounts/accounts.component.d.ts +0 -0
  223. /package/lib/{pages → components}/bug/bug.component.d.ts +0 -0
  224. /package/lib/{pages → components}/departments/departments.component.d.ts +0 -0
  225. /package/lib/{pages → components}/employees/employees.component.d.ts +0 -0
  226. /package/lib/{pages → components}/grades/grades.component.d.ts +0 -0
  227. /package/lib/{pages → components}/inventory/inventory.component.d.ts +0 -0
  228. /package/lib/{pages → components}/inventory/quantityDialog.component.d.ts +0 -0
  229. /package/lib/{pages → components}/positions/positions.component.d.ts +0 -0
  230. /package/lib/{pages → components}/recover-account/recover-account.component.d.ts +0 -0
  231. /package/lib/{pages → components}/settings/settings.component.d.ts +0 -0
  232. /package/lib/{pages → components}/transactions/transactDialog.component.d.ts +0 -0
  233. /package/lib/{pages → components}/transactions/transactions.component.d.ts +0 -0
  234. /package/lib/{pages → components}/welcome/welcome.component.d.ts +0 -0
@@ -0,0 +1,127 @@
1
+ import { Component } from "@angular/core";
2
+ import { User, AppConfig, Constants } from "../../classes/Classes";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/http.service";
5
+ import * as i2 from "../../services/storage.service";
6
+ import * as i3 from "@angular/router";
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 "./../../services/log.service";
11
+ import * as i8 from "@abacritt/angularx-social-login";
12
+ import * as i9 from "@angular/forms";
13
+ import * as i10 from "@angular/common";
14
+ import * as i11 from "@angular/material/button";
15
+ import * as i12 from "@angular/material/icon";
16
+ import * as i13 from "@angular/material/form-field";
17
+ import * as i14 from "@angular/material/input";
18
+ import * as i15 from "@angular/material/card";
19
+ import * as i16 from "../text/text.component";
20
+ export class LoginComponent {
21
+ constructor(httpService, storageService, router, messageService, dataService, authService, logService, route, socialService) {
22
+ this.httpService = httpService;
23
+ this.storageService = storageService;
24
+ this.router = router;
25
+ this.messageService = messageService;
26
+ this.dataService = dataService;
27
+ this.authService = authService;
28
+ this.logService = logService;
29
+ this.route = route;
30
+ this.socialService = socialService;
31
+ this.style = "default";
32
+ this.email = "";
33
+ this.password = "";
34
+ this.user = new User();
35
+ this.hide = true;
36
+ this.isProcessing = false;
37
+ this.appConfig = new AppConfig();
38
+ }
39
+ ngOnInit() {
40
+ this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);
41
+ if (this.route.snapshot.queryParams["redirectTo"] != undefined) {
42
+ this.redirectPath = this.route.snapshot.queryParams["redirectTo"];
43
+ }
44
+ else {
45
+ this.redirectPath = "home";
46
+ }
47
+ this.authService.autoLoginObserv.subscribe(x => {
48
+ this.autoLogin = x;
49
+ console.log("AUTO LOGIN :" + this.autoLogin);
50
+ });
51
+ this.socialUser = null;
52
+ this.socialService.authState.subscribe((socialUser) => {
53
+ this.socialUser = socialUser;
54
+ this.user.userName = socialUser.id;
55
+ this.user.password = socialUser.id; //dummy data
56
+ this.user.token = socialUser.idToken;
57
+ this.user.authType = socialUser.provider;
58
+ this.login();
59
+ });
60
+ // this.authService.logoff();
61
+ }
62
+ signup() {
63
+ this.router.navigate(["signup"]);
64
+ }
65
+ recoverAccount() {
66
+ this.router.navigate(["recover-account"]);
67
+ }
68
+ login() {
69
+ if (this.user.userName == "" || this.user.password == "") {
70
+ this.messageService.toast("Please enter your credentials");
71
+ return;
72
+ }
73
+ this.logService.info("logging in");
74
+ this.isProcessing = true;
75
+ this.user.userName = this.user.userName;
76
+ this.dataService.Login(this.user).subscribe((apiResponse) => {
77
+ this.isProcessing = false;
78
+ if (apiResponse.success) {
79
+ // if (apiResponse.data.authType == 'local' && !this.appConfig.localAuth) {
80
+ // this.messageService.toast("Contact Admin: Authentication Type error");
81
+ // return;
82
+ // }
83
+ // if (apiResponse.data.authType == 'AD' && !this.appConfig.ADAuth) {
84
+ // this.messageService.toast("Contact Admin: Authentication Type error");
85
+ // return;
86
+ // }
87
+ this.authService.Updateloggedin(true);
88
+ this.authService.UpdateToken(apiResponse.data.token);
89
+ this.storageService.store(Constants.AUTH_TOKEN, apiResponse.data.token);
90
+ this.authService.UpdateTokenExpire(apiResponse.data.expiration);
91
+ this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.data.expiration);
92
+ this.authService.UpdateCurrentUser(this.user.userName);
93
+ this.storageService.store(Constants.AUTH_USER, this.user.userName);
94
+ this.authService.updateLoggedUserFullName(apiResponse.data.firstName);
95
+ this.storageService.store(Constants.AUTH_NAME, apiResponse.data.firstName);
96
+ this.authService.UpdateRole(apiResponse.data.role);
97
+ this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.data.role));
98
+ this.authService.updateTenantName(apiResponse.data.tenantName);
99
+ this.storageService.store(Constants.AUTH_TENANT_NAME, apiResponse.data.tenantName);
100
+ this.logService.info("logged in");
101
+ if (apiResponse.data.changePassword == true && apiResponse.data.authType == 'local') {
102
+ this.router.navigate(["home/user/change-password"], {
103
+ queryParams: { redirectTo: this.redirectPath },
104
+ queryParamsHandling: 'merge',
105
+ skipLocationChange: false
106
+ });
107
+ return;
108
+ }
109
+ this.router.navigate([this.redirectPath]);
110
+ }
111
+ else {
112
+ this.messageService.toast("Error: " + apiResponse.message);
113
+ this.user.password = "";
114
+ }
115
+ }, (error) => {
116
+ this.isProcessing = false;
117
+ this.messageService.toast(this.httpService.Error(error));
118
+ });
119
+ }
120
+ }
121
+ LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginComponent, deps: [{ token: i1.HttpService }, { token: i2.StorageService }, { token: i3.Router }, { token: i4.MessageService }, { token: i5.DataServiceLib }, { token: i6.AuthService }, { token: i7.LogService }, { token: i3.ActivatedRoute }, { token: i8.SocialAuthService }], target: i0.ɵɵFactoryTarget.Component });
122
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LoginComponent, selector: "spa-login", ngImport: i0, template: "\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017\u20132023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n", styles: [".login-page{position:absolute;inset:0;overflow:auto}.background{min-height:100%}.container{display:flex;flex-direction:column;align-items:center;height:100vh}.logo{margin-top:3em;margin-bottom:1em}.buttons{display:flex;flex-direction:row;justify-content:space-evenly}.button{display:flex;flex-direction:row;justify-content:center;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.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: i11.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i13.MatLabel, selector: "mat-label" }, { kind: "directive", type: i13.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i14.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i15.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i15.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i15.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i15.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i15.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i16.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"] }, { kind: "directive", type: i8.GoogleSigninButtonDirective, selector: "asl-google-signin-button", inputs: ["type", "size", "text", "shape", "theme", "logo_alignment", "width", "locale"] }] });
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LoginComponent, decorators: [{
124
+ type: Component,
125
+ args: [{ selector: "spa-login", template: "\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017\u20132023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n", styles: [".login-page{position:absolute;inset:0;overflow:auto}.background{min-height:100%}.container{display:flex;flex-direction:column;align-items:center;height:100vh}.logo{margin-top:3em;margin-bottom:1em}.buttons{display:flex;flex-direction:row;justify-content:space-evenly}.button{display:flex;flex-direction:row;justify-content:center;margin-top:10px}\n"] }]
126
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.StorageService }, { type: i3.Router }, { type: i4.MessageService }, { type: i5.DataServiceLib }, { type: i6.AuthService }, { type: i7.LogService }, { type: i3.ActivatedRoute }, { type: i8.SocialAuthService }]; } });
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFJekQsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQWUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNoRixNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixXQUF3QixFQUFVLGNBQThCLEVBQVMsTUFBYyxFQUFVLGNBQThCLEVBQVMsV0FBMkIsRUFDOUssV0FBd0IsRUFBVSxVQUFzQixFQUFVLEtBQXFCLEVBQVUsYUFBZ0M7UUFEdEgsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzlLLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBMEMxSSxVQUFLLEdBQVcsU0FBUyxDQUFDO1FBRTFCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUlmLFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixpQkFBWSxHQUFZLEtB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YztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExvZ1NlcnZpY2UgfSBmcm9tIFwiLi8uLi8uLi9zZXJ2aWNlcy9sb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBVc2VyLCBBcHBDb25maWcsIEFwaVJlc3BvbnNlLCBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9DbGFzc2VzXCI7XHJcbmltcG9ydCB7IEh0dHBTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2h0dHAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTb2NpYWxBdXRoU2VydmljZSwgU29jaWFsVXNlciB9IGZyb20gJ0BhYmFjcml0dC9hbmd1bGFyeC1zb2NpYWwtbG9naW4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwic3BhLWxvZ2luXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9sb2dpbi5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9sb2dpbi5jb21wb25lbnQuY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsXHJcbiAgICBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIGxvZ1NlcnZpY2U6IExvZ1NlcnZpY2UsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHNvY2lhbFNlcnZpY2U6IFNvY2lhbEF1dGhTZXJ2aWNlICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5hcHBDb25maWdPYnNlcnYuc3Vic2NyaWJlKHggPT4gdGhpcy5hcHBDb25maWcgPSB4KTtcclxuXHJcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInJlZGlyZWN0VG9cIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucmVkaXJlY3RQYXRoID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcInJlZGlyZWN0VG9cIl1cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnJlZGlyZWN0UGF0aCA9IFwiaG9tZVwiXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmF1dG9Mb2dpbk9ic2Vydi5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgIHRoaXMuYXV0b0xvZ2luID0geFxyXG4gICAgICBjb25zb2xlLmxvZyhcIkFVVE8gTE9HSU4gOlwiICsgdGhpcy5hdXRvTG9naW4pXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc29jaWFsVXNlciA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5zb2NpYWxTZXJ2aWNlLmF1dGhTdGF0ZS5zdWJzY3JpYmUoKHNvY2lhbFVzZXI6IFNvY2lhbFVzZXIpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuc29jaWFsVXNlciA9IHNvY2lhbFVzZXI7XHJcblxyXG4gICAgICB0aGlzLnVzZXIudXNlck5hbWUgPSBzb2NpYWxVc2VyLmlkO1xyXG4gICAgICB0aGlzLnVzZXIucGFzc3dvcmQgPSBzb2NpYWxVc2VyLmlkOyAvL2R1bW15IGRhdGFcclxuICAgICAgdGhpcy51c2VyLnRva2VuID0gc29jaWFsVXNlci5pZFRva2VuO1xyXG4gICAgICB0aGlzLnVzZXIuYXV0aFR5cGUgPSBzb2NpYWxVc2VyLnByb3ZpZGVyO1xyXG5cclxuICAgICAgdGhpcy5sb2dpbigpO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuYXV0aFNlcnZpY2UubG9nb2ZmKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYXV0b0xvZ2luOiBib29sZWFuO1xyXG4gIHNvY2lhbFVzZXI6IFNvY2lhbFVzZXIgfCBudWxsO1xyXG5cclxuICBzdHlsZTogc3RyaW5nID0gXCJkZWZhdWx0XCI7XHJcblxyXG4gIGVtYWlsOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHBhc3N3b3JkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICByZWRpcmVjdFBhdGhcclxuXHJcbiAgcHVibGljIHVzZXIgPSBuZXcgVXNlcigpO1xyXG4gIGhpZGUgPSB0cnVlO1xyXG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBhcHBDb25maWcgPSBuZXcgQXBwQ29uZmlnKCk7XHJcblxyXG4gIHB1YmxpYyBzaWdudXAoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJzaWdudXBcIl0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlY292ZXJBY2NvdW50KCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wicmVjb3Zlci1hY2NvdW50XCJdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dpbigpIHtcclxuXHJcblxyXG4gICAgaWYgKHRoaXMudXNlci51c2VyTmFtZSA9PSBcIlwiIHx8IHRoaXMudXNlci5wYXNzd29yZCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgZW50ZXIgeW91ciBjcmVkZW50aWFsc1wiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmxvZ1NlcnZpY2UuaW5mbyhcImxvZ2dpbmcgaW5cIik7XHJcblxyXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xyXG5cclxuXHJcbiAgICB0aGlzLnVzZXIudXNlck5hbWUgPSB0aGlzLnVzZXIudXNlck5hbWVcclxuXHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkxvZ2luKHRoaXMudXNlcikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XHJcblxyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgLy8gaWYgKGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGUgPT0gJ2xvY2FsJyAmJiAhdGhpcy5hcHBDb25maWcubG9jYWxBdXRoKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiQ29udGFjdCBBZG1pbjogQXV0aGVudGljYXRpb24gVHlwZSBlcnJvclwiKTtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGlmIChhcGlSZXNwb25zZS5kYXRhLmF1dGhUeXBlID09ICdBRCcgJiYgIXRoaXMuYXBwQ29uZmlnLkFEQXV0aCkge1xyXG4gICAgICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkNvbnRhY3QgQWRtaW46IEF1dGhlbnRpY2F0aW9uIFR5cGUgZXJyb3JcIik7XHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVsb2dnZWRpbih0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVUb2tlbihhcGlSZXNwb25zZS5kYXRhLnRva2VuKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1RPS0VOLCBhcGlSZXNwb25zZS5kYXRhLnRva2VuKTtcclxuXHJcbiAgICAgICAgdGhpcy5hdXRoU2VydmljZS5VcGRhdGVUb2tlbkV4cGlyZShhcGlSZXNwb25zZS5kYXRhLmV4cGlyYXRpb24pO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfVE9LRU5fRVhQSVJFLCBhcGlSZXNwb25zZS5kYXRhLmV4cGlyYXRpb24pO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLlVwZGF0ZUN1cnJlbnRVc2VyKHRoaXMudXNlci51c2VyTmFtZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9VU0VSLCB0aGlzLnVzZXIudXNlck5hbWUpO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZUxvZ2dlZFVzZXJGdWxsTmFtZShhcGlSZXNwb25zZS5kYXRhLmZpcnN0TmFtZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zdG9yZShDb25zdGFudHMuQVVUSF9OQU1FLCBhcGlSZXNwb25zZS5kYXRhLmZpcnN0TmFtZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuVXBkYXRlUm9sZShhcGlSZXNwb25zZS5kYXRhLnJvbGUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc3RvcmUoQ29uc3RhbnRzLkFVVEhfUk9MRVMsIEpTT04uc3RyaW5naWZ5KGFwaVJlc3BvbnNlLmRhdGEucm9sZSkpO1xyXG5cclxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnVwZGF0ZVRlbmFudE5hbWUoYXBpUmVzcG9uc2UuZGF0YS50ZW5hbnROYW1lKTtcclxuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnN0b3JlKENvbnN0YW50cy5BVVRIX1RFTkFOVF9OQU1FLCBhcGlSZXNwb25zZS5kYXRhLnRlbmFudE5hbWUpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5sb2dTZXJ2aWNlLmluZm8oXCJsb2dnZWQgaW5cIik7XHJcblxyXG5cclxuICAgICAgICBpZiAoYXBpUmVzcG9uc2UuZGF0YS5jaGFuZ2VQYXNzd29yZCA9PSB0cnVlICYmIGFwaVJlc3BvbnNlLmRhdGEuYXV0aFR5cGUgPT0gJ2xvY2FsJykge1xyXG5cclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImhvbWUvdXNlci9jaGFuZ2UtcGFzc3dvcmRcIl0sIHtcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgcmVkaXJlY3RUbzogdGhpcy5yZWRpcmVjdFBhdGggfSxcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcclxuICAgICAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnJlZGlyZWN0UGF0aF0pO1xyXG5cclxuXHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB0aGlzLnVzZXIucGFzc3dvcmQgPSBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHRoaXMuaHR0cFNlcnZpY2UuRXJyb3IoZXJyb3IpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCJcclxuICA8ZGl2ICpuZ0lmPVwic3R5bGU9PSdvbGQnXCIgY2xhc3M9XCJ0aW4tYmctbG9naW4gbG9naW4tcGFnZVwiPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJhcHBDb25maWcubG9nbyE9JydcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6M2VtO21hcmdpbi1ib3R0b206MWVtXCI+XHJcblxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbm9ybWFsJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7bWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbWVkaXVtJ1wiICBbc3JjXT1cImFwcENvbmZpZy5sb2dvXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7bWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG4gICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbGFyZ2UnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAyNTBweDsgbWFyZ2luLXJpZ2h0OjNlbTttYXJnaW4tbGVmdDozZW1cIiAvPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ28gPT0nJ1wiIHN0eWxlPVwibWFyZ2luLXRvcDoyZW1cIj5cclxuICAgICAgICA8IS0tIEFkZCBtYXJnaW4gdG9wIHdoZW4gdGhlcmUgaXMgbm8gbG9nbyAtLT5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm93IGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwibWFyZ2luLXRvcDozZW07XCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIGQtc20tYmxvY2tcIj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6MWVtXCI+XHJcblxyXG4gICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejMgbG9naW4tY2FyZFwiIHN0eWxlPVwid2lkdGg6NDAwcHg7IFwiPlxyXG5cclxuICAgICAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZT57e2FwcENvbmZpZy5hcHBOYW1lfX08L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcblxyXG4gICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0IG10LTJcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYS10ZXh0IGlkPVwidHh0dXNlck5hbWVcIiBkaXNwbGF5PVwiVXNlcm5hbWVcIiBbKHZhbHVlKV09XCJ1c2VyLnVzZXJOYW1lXCIgPjwvc3BhLXRleHQ+XHJcblxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCA+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ0eHRQYXNzd29yZFwiIG1hdElucHV0IFt0eXBlXT1cImhpZGUgPyAncGFzc3dvcmQnIDogJ3RleHQnXCIgIChrZXl1cC5lbnRlcik9XCJsb2dpbigpXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnBhc3N3b3JkXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IChjbGljayk9XCJoaWRlID0gIWhpZGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidIaWRlIHBhc3N3b3JkJ1wiIFthdHRyLmFyaWEtcHJlc3NlZF09XCJoaWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIj57e2hpZGUgPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuXHJcblxyXG4gICAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IFwiPlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuTG9naW5cIiAgbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiIChjbGljayk9XCJsb2dpbigpXCIgY29sb3I9XCJwcmltYXJ5XCI+TG9naW48L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiYXBwQ29uZmlnLnNlbGZTZXJ2aWNlXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYnRuU2lnbnVwXCIgbWF0LXN0cm9rZWQtYnV0dG9uICBjb2xvcj1cInByaW1hcnlcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIiAoY2xpY2spPVwic2lnbnVwKClcIj5TaWdudXA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuXHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImFwcENvbmZpZy5zZWxmU2VydmljZVwiPlxyXG4gICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICA8YSBtYXQtYnV0dG9uIGlkPVwibG5rUmVjb3ZlclwiICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxZW1cIiAoY2xpY2spPVwicmVjb3ZlckFjY291bnQoKVwiPkZvcmdvdCB5b3VyIHBhc3N3b3JkID88L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic3R5bGU9PSdkZWZhdWx0J1wiIGNsYXNzPVwibG9naW4tcGFnZSBiYWNrZ3JvdW5kIHRpbi1iZy1sb2dpblwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiA+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibG9nb1wiPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCJhcHBDb25maWcubG9nb1NpemU9PSdub3JtYWwnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAxMDBweFwiIC8+XHJcbiAgICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZy5sb2dvU2l6ZT09J21lZGl1bSdcIiAgW3NyY109XCJhcHBDb25maWcubG9nb1wiIHN0eWxlPVwid2lkdGg6IDE1MHB4XCIgLz5cclxuICAgICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnLmxvZ29TaXplPT0nbGFyZ2UnXCIgIFtzcmNdPVwiYXBwQ29uZmlnLmxvZ29cIiBzdHlsZT1cIndpZHRoOiAyNTBweFwiIC8+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MyBcIiBzdHlsZT1cIndpZHRoOjQwMHB4OyBcIj5cclxuXHJcbiAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBzdHlsZT1cImZvbnQtc2l6ZTogNDBweDttYXJnaW4tYm90dG9tOiAxMHB4OyBtYXJnaW4tdG9wOiAyMHB4OyBmb250LXdlaWdodDogMzAwXCI+e3thcHBDb25maWcuYXBwTmFtZX19PC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuXHJcbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJhcHBDb25maWcubG9jYWxBdXRoIHx8IGFwcENvbmZpZy5BREF1dGhcIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0IG10LTJcIj5cclxuXHJcbiAgICAgICAgICAgIDxzcGEtdGV4dCBpZD1cInR4dHVzZXJOYW1lXCIgZGlzcGxheT1cIlVzZXJuYW1lXCIgWyh2YWx1ZSldPVwidXNlci51c2VyTmFtZVwiPjwvc3BhLXRleHQ+XHJcblxyXG4gICAgICAgICAgICA8c3BhLXRleHQgaWQ9XCJ0eHRQYXNzd29yZFwiIGRpc3BsYXk9XCJQYXNzd29yZFwiIGZvcm1hdD1cInBhc3N3b3JkXCIgWyh2YWx1ZSldPVwidXNlci5wYXNzd29yZFwiIChlbnRlclByZXNzKT1cImxvZ2luKClcIj48L3NwYS10ZXh0PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG5cclxuICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBtdC0wXCIgKm5nSWY9XCJhcHBDb25maWcubG9jYWxBdXRoIHx8IGFwcENvbmZpZy5BREF1dGhcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImJ0bkxvZ2luXCIgbWF0LWZsYXQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiBzdHlsZT1cIndpZHRoOiAzNTBweDtcIiAoY2xpY2spPVwibG9naW4oKVwiIGNvbG9yPVwicHJpbWFyeVwiPkxvZ2luPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uXCIgKm5nSWY9XCIoYXBwQ29uZmlnLmxvY2FsQXV0aCB8fCBhcHBDb25maWcuQURBdXRoKSAmJiBhcHBDb25maWcuc2VsZlNlcnZpY2VcIiA+XHJcbiAgICAgICAgICAgIDxidXR0b24gIGlkPVwiYnRuU2lnbnVwXCIgbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHN0eWxlPVwid2lkdGg6IDM1MHB4O1wiIChjbGljayk9XCJzaWdudXAoKVwiPlNpZ24gdXAgd2l0aCBFbWFpbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvblwiICpuZ0lmPVwiYXBwQ29uZmlnLmdvb2dsZUF1dGhcIj5cclxuICAgICAgICAgICAgPGFzbC1nb29nbGUtc2lnbmluLWJ1dHRvbiB0eXBlPSdzdGFuZGFyZCcgd2lkdGg9XCIzNTBweFwiIHNpemU9J21lZGl1bScgbG9nb19hbGlnbm1lbnQ9XCJjZW50ZXJcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48L2FzbC1nb29nbGUtc2lnbmluLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcblxyXG4gICAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgICAgPGEgKm5nSWY9XCJhcHBDb25maWcuc2VsZlNlcnZpY2VcIiBtYXQtYnV0dG9uIGlkPVwibG5rUmVjb3ZlclwiIHN0eWxlPVwibWFyZ2luLXRvcDogMWVtXCIgKGNsaWNrKT1cInJlY292ZXJBY2NvdW50KClcIj5Gb3Jnb3QgeW91ciBwYXNzd29yZCA/PC9hPlxyXG5cclxuXHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPGRpdiAqbmdJZj1cInN0eWxlPT0nYnMnXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cIm1iLTRcIiBzcmM9XCJjOlxcVGluYXNoZVxcQ29kZVxcQW5ndWxhclxcSnVua1xcYnMtZXhhbXBsZXNcXGFzc2V0c1xcYnJhbmRcXGJvb3RzdHJhcC1sb2dvLnN2Z1wiIGFsdD1cIlwiIHdpZHRoPVwiNzJcIiBoZWlnaHQ9XCI1N1wiPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzPVwiaDMgbWItMyBmdy1ub3JtYWxcIiA+UGxlYXNlIHNpZ24gaW48L2gxPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mbG9hdGluZ1wiPlxyXG4gICAgICAgICAgPGlucHV0ICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZmxvYXRpbmdJbnB1dFwiIHBsYWNlaG9sZGVyPVwibmFtZUBleGFtcGxlLmNvbVwiIFsobmdNb2RlbCldPVwidXNlci51c2VyTmFtZVwiPlxyXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZsb2F0aW5nSW5wdXRcIj5Vc2VybmFtZTwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZsb2F0aW5nXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImZsb2F0aW5nUGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmxvYXRpbmdQYXNzd29yZFwiPlBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgdGV4dC1zdGFydCBteS0zXCI+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJyZW1lbWJlci1tZVwiIGlkPVwiZmxleENoZWNrRGVmYXVsdFwiID5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tEZWZhdWx0XCI+XHJcbiAgICAgICAgICAgIFJlbWVtYmVyIG1lXHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIHB5LTJcIiAgKGNsaWNrKT1cImxvZ2luKClcIj5TaWduIGluPC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxwIGNsYXNzPVwibXQtNSBtYi0zIHRleHQtYm9keS1zZWNvbmRhcnlcIj4mY29weTsgMjAxN+KAkzIwMjM8L3A+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuIl19
@@ -0,0 +1,37 @@
1
+ import { Component, ViewChild } from '@angular/core';
2
+ import { MatTableDataSource } from '@angular/material/table';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/auth.service";
5
+ import * as i2 from "../../services/datalib.service";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/material/table";
8
+ import * as i5 from "@angular/material/paginator";
9
+ import * as i6 from "../filter/filter.component";
10
+ export class LogsComponent {
11
+ constructor(authService, dataService) {
12
+ this.authService = authService;
13
+ this.dataService = dataService;
14
+ this.isProcessing = false;
15
+ this.displayedColumns = ["dateLogged", "userName", "fullName", "source", "details"];
16
+ }
17
+ ngOnInit() {
18
+ this.authService.isAuthorised(this.dataService.capLogs.name);
19
+ this.loadLogs();
20
+ }
21
+ loadLogs() {
22
+ this.dataService.GetLog("all", "").subscribe((apiResponse) => {
23
+ this.logs = new MatTableDataSource(apiResponse);
24
+ this.logs.paginator = this.logsPaginator;
25
+ });
26
+ }
27
+ }
28
+ LogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogsComponent, deps: [{ token: i1.AuthService }, { token: i2.DataServiceLib }], target: i0.ɵɵFactoryTarget.Component });
29
+ LogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: LogsComponent, selector: "spa-logs", viewQueries: [{ propertyName: "logsPaginator", first: true, predicate: ["logsPaginator"], descendants: true }], ngImport: i0, template: "<h4>Logs</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n\r\n <div class=\"col-2\">\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"logs\" (refreshClick)=\"loadLogs()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <p *ngIf=\"!logs\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"logs\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"logs\">\r\n\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> User </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.userName}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"dateLogged\">\r\n <th mat-header-cell *matHeaderCellDef class=\"datetime\"> Date Logged </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.dateLogged | date: 'dd MMM yy HH:mm:ss'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef> Source </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.source}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"details\">\r\n <th mat-header-cell *matHeaderCellDef> Details </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.details}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let log\">{{log.user?.firstName}} {{log.user?.lastName}}</td>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #logsPaginator [pageSizeOptions]=\"[50, 100, 200]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i6.FilterComponent, selector: "spa-filter", inputs: ["flatButtons", "showText", "showButton", "data"], outputs: ["refreshClick"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LogsComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'spa-logs', template: "<h4>Logs</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n\r\n <div class=\"col-2\">\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"logs\" (refreshClick)=\"loadLogs()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <p *ngIf=\"!logs\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"logs\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"logs\">\r\n\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> User </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.userName}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"dateLogged\">\r\n <th mat-header-cell *matHeaderCellDef class=\"datetime\"> Date Logged </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.dateLogged | date: 'dd MMM yy HH:mm:ss'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef> Source </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.source}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"details\">\r\n <th mat-header-cell *matHeaderCellDef> Details </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.details}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let log\">{{log.user?.firstName}} {{log.user?.lastName}}</td>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #logsPaginator [pageSizeOptions]=\"[50, 100, 200]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n", styles: [".mat-mini-fab{width:32px;height:32px}.mat-mini-fab mat-icon{font-size:16px;margin-top:-3px}.refreshIcon{font-size:22px!important;margin-top:-7px!important}\n"] }]
33
+ }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i2.DataServiceLib }]; }, propDecorators: { logsPaginator: [{
34
+ type: ViewChild,
35
+ args: ["logsPaginator"]
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9sb2dzL2xvZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbG9ncy9sb2dzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQVE3RCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUFvQixXQUF3QixFQUFVLFdBQTJCO1FBQTdELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBT2pGLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBTTlCLHFCQUFnQixHQUFhLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBYkgsQ0FBQztJQUV2RixRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFVTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBRTNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBRTNDLENBQUMsQ0FDQSxDQUFDO0lBQ0osQ0FBQzs7MEdBeEJVLGFBQWE7OEZBQWIsYUFBYSxnS0NYMUIsbS9EQWlFQTsyRkR0RGEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxVQUFVOytIQWFRLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtbG9ncycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvZ3MuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2dzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXNlZCh0aGlzLmRhdGFTZXJ2aWNlLmNhcExvZ3MubmFtZSk7XHJcbiAgICB0aGlzLmxvYWRMb2dzKCk7XHJcbiAgfVxyXG5cclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKFwibG9nc1BhZ2luYXRvclwiKSBsb2dzUGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcblxyXG5cclxuICBsb2dzO1xyXG5cclxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcImRhdGVMb2dnZWRcIiwgXCJ1c2VyTmFtZVwiLCBcImZ1bGxOYW1lXCIsIFwic291cmNlXCIsIFwiZGV0YWlsc1wiXTtcclxuXHJcbiAgcHVibGljIGxvYWRMb2dzKCkge1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5HZXRMb2coXCJhbGxcIiwgXCJcIikuc3Vic2NyaWJlKChhcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5sb2dzID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZShhcGlSZXNwb25zZSk7XHJcbiAgICAgIHRoaXMubG9ncy5wYWdpbmF0b3IgPSB0aGlzLmxvZ3NQYWdpbmF0b3I7XHJcblxyXG4gICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxoND5Mb2dzPC9oND5cclxuPGhyIC8+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4XCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPHNwYS1maWx0ZXIgW2RhdGFdPVwibG9nc1wiIChyZWZyZXNoQ2xpY2spPVwibG9hZExvZ3MoKVwiPjwvc3BhLWZpbHRlcj5cclxuICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgPHAgKm5nSWY9XCIhbG9nc1wiPjxlbT5Mb2FkaW5nLi4uPC9lbT48L3A+XHJcblxyXG5cclxuICA8ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiICpuZ0lmPVwibG9nc1wiPlxyXG5cclxuICAgIDx0YWJsZSBpZD1cInRibFRhYmxlXCIgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImxvZ3NcIj5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVzZXJOYW1lXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gVXNlciA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBsb2dcIj4ge3tsb2cudXNlck5hbWV9fSA8L3RkPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRhdGVMb2dnZWRcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwiZGF0ZXRpbWVcIj4gRGF0ZSBMb2dnZWQgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgbG9nXCI+IHt7bG9nLmRhdGVMb2dnZWQgfCBkYXRlOiAnZGQgTU1NIHl5IEhIOm1tOnNzJ319IDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzb3VyY2VcIj5cclxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBTb3VyY2UgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgbG9nXCI+IHt7bG9nLnNvdXJjZX19IDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXRhaWxzXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGV0YWlscyA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBsb2dcIj4ge3tsb2cuZGV0YWlsc319IDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJmdWxsTmFtZVwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IE5hbWUgPC90aD5cclxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgbG9nXCI+e3tsb2cudXNlcj8uZmlyc3ROYW1lfX0ge3tsb2cudXNlcj8ubGFzdE5hbWV9fTwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cclxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cclxuXHJcblxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtcGFnaW5hdG9yICNsb2dzUGFnaW5hdG9yIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUwLCAxMDAsIDIwMF1cIiBzaG93Rmlyc3RMYXN0QnV0dG9ucz48L21hdC1wYWdpbmF0b3I+XHJcbjwvZGl2PlxyXG5cclxuIl19
@@ -0,0 +1,48 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../services/datalib.service";
4
+ import * as i2 from "../../services/message.service";
5
+ import * as i3 from "../../services/auth.service";
6
+ import * as i4 from "../table/table.component";
7
+ export class MembershipComponent {
8
+ constructor(dataService, messageService, authService) {
9
+ this.dataService = dataService;
10
+ this.messageService = messageService;
11
+ this.authService = authService;
12
+ this.formConfig = {
13
+ fields: [
14
+ { name: 'memberName', type: 'text', required: true, min: 2 },
15
+ { name: 'tenantName', type: 'text', required: true },
16
+ ],
17
+ reset: true,
18
+ };
19
+ this.config = {
20
+ showFilter: true,
21
+ minColumns: ['memberName', 'tenantName', 'roleName'],
22
+ flatButtons: true,
23
+ columns: [
24
+ { name: 'tenantName', type: 'text' },
25
+ { name: 'memberName', type: 'text' },
26
+ { name: 'roleName', type: 'text' },
27
+ { name: 'status', type: 'text' },
28
+ ],
29
+ buttons: [
30
+ { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/members?action=create', method: 'post' } },
31
+ { name: 'view', dialog: true },
32
+ { name: 'edit', dialog: true, action: { url: 'tenant/members?action=edit', method: 'post' } },
33
+ { name: 'delete', dialog: true, action: { url: 'tenant/members?action=delete', method: 'post' } },
34
+ ],
35
+ loadAction: { url: 'tenant/all_members/x' },
36
+ formConfig: this.formConfig
37
+ };
38
+ }
39
+ ngOnInit() {
40
+ }
41
+ }
42
+ MembershipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembershipComponent, deps: [{ token: i1.DataServiceLib }, { token: i2.MessageService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
43
+ MembershipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MembershipComponent, selector: "spa-membership", ngImport: i0, template: "<h4>Membership</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i4.TableComponent, selector: "spa-table", inputs: ["hideTitle", "data", "config", "reload"], outputs: ["dataLoad", "refreshClick", "searchClick", "createClick", "actionClick", "inputChange"] }] });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembershipComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'spa-membership', template: "<h4>Membership</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n" }]
47
+ }], ctorParameters: function () { return [{ type: i1.DataServiceLib }, { type: i2.MessageService }, { type: i3.AuthService }]; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyc2hpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9tZW1iZXJzaGlwL21lbWJlcnNoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbWVtYmVyc2hpcC9tZW1iZXJzaGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVdsRCxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLFlBQW9CLFdBQTJCLEVBQVUsY0FBOEIsRUFBUyxXQUF3QjtRQUFwRyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUt4SCxlQUFVLEdBQWU7WUFFdkIsTUFBTSxFQUFFO2dCQUNOLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDNUQsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTthQUN0RDtZQUVELEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQTtRQUVELFdBQU0sR0FBZ0I7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLENBQUMsWUFBWSxFQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7WUFDbkQsV0FBVyxFQUFFLElBQUk7WUFFakIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNwQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDcEMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ2xDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2FBQ2pDO1lBRUQsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDcEgsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQzlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzdGLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7YUFDbEc7WUFFRCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsc0JBQXNCLEVBQUU7WUFFM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCLENBQUE7SUFyQzJILENBQUM7SUFFN0gsUUFBUTtJQUNSLENBQUM7O2dIQUxVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHNEQ1hoQywwSUFPQTsyRkRJYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBUYWJsZUNvbmZpZyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtbWVtYmVyc2hpcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbWJlcnNoaXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbWJlcnNoaXAuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW1iZXJzaGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2VMaWIsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnID0ge1xyXG5cclxuICAgIGZpZWxkczogW1xyXG4gICAgICB7IG5hbWU6ICdtZW1iZXJOYW1lJywgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSwgbWluOiAyIH0sXHJcbiAgICAgIHsgbmFtZTogJ3RlbmFudE5hbWUnLCAgdHlwZTogJ3RleHQnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICByZXNldDogdHJ1ZSxcclxuICB9XHJcblxyXG4gIGNvbmZpZzogVGFibGVDb25maWcgPSB7XHJcbiAgICBzaG93RmlsdGVyOiB0cnVlLFxyXG4gICAgbWluQ29sdW1uczogWydtZW1iZXJOYW1lJywndGVuYW50TmFtZScsICdyb2xlTmFtZSddLFxyXG4gICAgZmxhdEJ1dHRvbnM6IHRydWUsXHJcblxyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IG5hbWU6ICd0ZW5hbnROYW1lJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgbmFtZTogJ21lbWJlck5hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAncm9sZU5hbWUnLCB0eXBlOiAndGV4dCcgfSxcclxuICAgICAgeyBuYW1lOiAnc3RhdHVzJywgdHlwZTogJ3RleHQnIH0sXHJcbiAgICBdLFxyXG5cclxuICAgIGJ1dHRvbnM6IFtcclxuICAgICAgeyBuYW1lOiAnY3JlYXRlJywgZGlzcGxheTogJ0NyZWF0ZScsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudC9tZW1iZXJzP2FjdGlvbj1jcmVhdGUnLCBtZXRob2Q6ICdwb3N0JyB9IH0sXHJcbiAgICAgIHsgbmFtZTogJ3ZpZXcnLCBkaWFsb2c6IHRydWUgfSxcclxuICAgICAgeyBuYW1lOiAnZWRpdCcsIGRpYWxvZzogdHJ1ZSwgYWN0aW9uOiB7IHVybDogJ3RlbmFudC9tZW1iZXJzP2FjdGlvbj1lZGl0JywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgICB7IG5hbWU6ICdkZWxldGUnLCBkaWFsb2c6IHRydWUsIGFjdGlvbjogeyB1cmw6ICd0ZW5hbnQvbWVtYmVycz9hY3Rpb249ZGVsZXRlJywgbWV0aG9kOiAncG9zdCcgfSB9LFxyXG4gICAgXSxcclxuXHJcbiAgICBsb2FkQWN0aW9uOiB7IHVybDogJ3RlbmFudC9hbGxfbWVtYmVycy94JyB9LFxyXG5cclxuICAgIGZvcm1Db25maWc6IHRoaXMuZm9ybUNvbmZpZ1xyXG4gIH1cclxufVxyXG4iLCI8aDQ+TWVtYmVyc2hpcDwvaDQ+XG48aHI+XG5cblxuPGRpdiBjbGFzcz1cIm10LTNcIiBzdHlsZT1cIiBmb250LXNpemU6IDE0cHg7XCI+XG4gIDxzcGEtdGFibGUgW2NvbmZpZ109XCJjb25maWdcIj48L3NwYS10YWJsZT5cbjwvZGl2PlxuIl19
@@ -3,10 +3,12 @@ import { FormControl, Validators } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@angular/forms";
6
- import * as i3 from "@angular/material/form-field";
7
- import * as i4 from "@angular/material/input";
8
- import * as i5 from "./currency-input-mask.directive";
9
- import * as i6 from "../suffix/suffix.component";
6
+ import * as i3 from "@angular/material/button";
7
+ import * as i4 from "@angular/material/icon";
8
+ import * as i5 from "@angular/material/form-field";
9
+ import * as i6 from "@angular/material/input";
10
+ import * as i7 from "@angular/material/tooltip";
11
+ import * as i8 from "./currency-input-mask.directive";
10
12
  export class MoneyComponent {
11
13
  constructor() {
12
14
  this.readonly = false;
@@ -24,9 +26,6 @@ export class MoneyComponent {
24
26
  this.min = 0;
25
27
  this.max = 9000000000000000; //Math.max 9000000000000000
26
28
  this.infoClick = new EventEmitter();
27
- this.copyContent = false;
28
- this.clearContent = false;
29
- this.isHovered = false;
30
29
  //validation
31
30
  this.control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);
32
31
  }
@@ -50,20 +49,10 @@ export class MoneyComponent {
50
49
  this.control.updateValueAndValidity();
51
50
  }
52
51
  }
53
- onMouseEnter() {
54
- this.isHovered = true;
55
- }
56
- onMouseLeave() {
57
- this.isHovered = false;
58
- }
59
52
  onInfoClick(event) {
60
53
  event.stopPropagation();
61
54
  this.infoClick.emit();
62
55
  }
63
- clear() {
64
- this.value = "";
65
- this.valueChange.emit(this.value);
66
- }
67
56
  changed(x) {
68
57
  this.valueChange.emit(x);
69
58
  }
@@ -93,10 +82,10 @@ export class MoneyComponent {
93
82
  }
94
83
  }
95
84
  MoneyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MoneyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
96
- MoneyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MoneyComponent, selector: "spa-money", inputs: { readonly: "readonly", hint: "hint", display: "display", placeholder: "placeholder", value: "value", width: "width", currency: "currency", required: "required", min: "min", max: "max", infoMessage: "infoMessage", copyContent: "copyContent", clearContent: "clearContent", suffix: "suffix" }, outputs: { valueChange: "valueChange", leave: "leave", enterPress: "enterPress", infoClick: "infoClick" }, usesOnChanges: true, ngImport: i0, template: "\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width ?? '100%'}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n\r\n</mat-form-field>\r\n\r\n", styles: ["input.example-right-align{-moz-appearance:textfield}.example-right-align{text-align:right}input.example-right-align::-webkit-outer-spin-button,input.example-right-align::-webkit-inner-spin-button{display:none}.curr{background-color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i5.CurrencyInputMaskDirective, selector: "[appCurrencyInputMask]" }, { kind: "component", type: i6.SuffixComponent, selector: "spa-suffix", inputs: ["label", "infoMessage", "copyContent", "isHovered", "clearContent", "value"], outputs: ["infoClick", "copyClick", "clearClick", "valueChange"] }] });
85
+ MoneyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MoneyComponent, selector: "spa-money", inputs: { readonly: "readonly", hint: "hint", display: "display", placeholder: "placeholder", value: "value", width: "width", currency: "currency", required: "required", min: "min", max: "max", infoMessage: "infoMessage" }, outputs: { valueChange: "valueChange", leave: "leave", enterPress: "enterPress", infoClick: "infoClick" }, usesOnChanges: true, ngImport: i0, template: "\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n", styles: ["input.example-right-align{-moz-appearance:textfield}.example-right-align{text-align:right}input.example-right-align::-webkit-outer-spin-button,input.example-right-align::-webkit-inner-spin-button{display:none}.curr{background-color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.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: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix]" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i8.CurrencyInputMaskDirective, selector: "[appCurrencyInputMask]" }] });
97
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MoneyComponent, decorators: [{
98
87
  type: Component,
99
- args: [{ selector: 'spa-money', template: "\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width ?? '100%'}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <spa-suffix [label]=\"suffix\" [infoMessage]=\"infoMessage\" [copyContent]=\"copyContent\" [clearContent]=\"clearContent\" (clearClick)=\"clear()\" [isHovered]=\"isHovered\" [(value)]=\"value\"></spa-suffix>\r\n </div>\r\n\r\n</mat-form-field>\r\n\r\n", styles: ["input.example-right-align{-moz-appearance:textfield}.example-right-align{text-align:right}input.example-right-align::-webkit-outer-spin-button,input.example-right-align::-webkit-inner-spin-button{display:none}.curr{background-color:red}\n"] }]
88
+ args: [{ selector: 'spa-money', template: "\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n", styles: ["input.example-right-align{-moz-appearance:textfield}.example-right-align{text-align:right}input.example-right-align::-webkit-outer-spin-button,input.example-right-align::-webkit-inner-spin-button{display:none}.curr{background-color:red}\n"] }]
100
89
  }], ctorParameters: function () { return []; }, propDecorators: { readonly: [{
101
90
  type: Input
102
91
  }], hint: [{
@@ -127,11 +116,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
127
116
  type: Input
128
117
  }], infoClick: [{
129
118
  type: Output
130
- }], copyContent: [{
131
- type: Input
132
- }], clearContent: [{
133
- type: Input
134
- }], suffix: [{
135
- type: Input
136
119
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbW9uZXkvbW9uZXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbW9uZXkvbW9uZXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQU96RCxNQUFNLE9BQU8sY0FBYztJQUV6QjtRQTRCUyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBRyxNQUFNLENBQUE7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTFDLGtCQUFrQjtRQUNULGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFFBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLDJCQUEyQjtRQUlsRCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUU5QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBK0JsQixZQUFZO1FBQ1osWUFBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQXJGakcsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELFdBQVc7SUFFWCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBb0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFFcEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBNEJELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBS0QsUUFBUSxDQUFDLE9BQW9CO1FBRTNCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2pELE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBRUQsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUM7WUFDcEMsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDckMsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQ3ZDO1FBRUQsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE9BQU8sb0JBQW9CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN2QztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQixPQUFPLG9CQUFvQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDdkM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7OzJHQWhIVSxjQUFjOytGQUFkLGNBQWMsNmRDUjNCLDIvQkFlQTsyRkRQYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7MEVBa0NaLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUtFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1tb25leScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vbmV5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tb25leS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1vbmV5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBcIkVudGVyIFwiICsgdGhpcy5kaXNwbGF5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0Q29udHJvbCh0aGlzLmNvbnRyb2wpXHJcbiAgfVxyXG5cclxuICBpbml0Q29udHJvbChjb250cm9sOiBGb3JtQ29udHJvbCkge1xyXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcclxuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKG51bGwpO1xyXG4gICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5yZXF1aXJlZCAmJiAhdGhpcy5yZWFkb25seSkge1xyXG5cclxuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbih0aGlzLm1pbiksIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4KV0pO1xyXG4gICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaW50ID0gXCJcIjtcclxuICBASW5wdXQoKSBkaXNwbGF5ID0gXCJcIjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgQElucHV0KCkgdmFsdWUgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHdpZHRoID0gXCIxMDAlXCJcclxuICBASW5wdXQoKSBjdXJyZW5jeSA9IFwiXCI7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGVudGVyUHJlc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuXHJcbiAgLy92YWxpZGF0aW9uIGlucHV0XHJcbiAgQElucHV0KCkgcmVxdWlyZWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG1pbiA9IDA7XHJcbiAgQElucHV0KCkgbWF4ID0gOTAwMDAwMDAwMDAwMDAwMDsgLy9NYXRoLm1heCA5MDAwMDAwMDAwMDAwMDAwXHJcblxyXG5cclxuICBASW5wdXQoKSBpbmZvTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBpbmZvQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQElucHV0KCkgY29weUNvbnRlbnQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGVhckNvbnRlbnQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdWZmaXg6IHN0cmluZztcclxuICBpc0hvdmVyZWQgPSBmYWxzZTtcclxuICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSG92ZXJlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb25JbmZvQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5pbmZvQ2xpY2suZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gXCJcIjtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZWQoeCl7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoeCk7XHJcbiAgfVxyXG5cclxuICBsZWF2ZWQoKSB7XHJcbiAgICB0aGlzLmxlYXZlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGVudGVyUHJlc3NlZCgpIHtcclxuICAgIHRoaXMuZW50ZXJQcmVzcy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICAvL3ZhbGlkYXRpb25cclxuICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMudmFsdWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbih0aGlzLm1pbiksIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4KV0pO1xyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBGb3JtQ29udHJvbCk6IHN0cmluZyB7XHJcblxyXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xyXG4gICAgICByZXR1cm4gYFJlcXVpcmVkYDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyc2VGbG9hdCh0aGlzLnZhbHVlKSA8IHRoaXMubWluKXtcclxuICAgICAgcmV0dXJuIGBNaW5pbXVuIHZhbHVlIGlzICR7dGhpcy5taW59YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyc2VGbG9hdCh0aGlzLnZhbHVlKSA+IHRoaXMubWF4KSB7XHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke3RoaXMubWF4fWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21pbicpKSB7XHJcbiAgICAgIHJldHVybiBgTWluaW11biB2YWx1ZSBpcyAke3RoaXMubWlufWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21heCcpKSB7XHJcbiAgICAgIHJldHVybiBgTWF4aW11bSB2YWx1ZSBpcyAke3RoaXMubWF4fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiXHJcblxyXG48bWF0LWZvcm0tZmllbGQgaGlkZVJlcXVpcmVkTWFya2VyPVwidHJ1ZVwiIFtoaW50TGFiZWxdPVwiaGludFwiIFtoaWRlUmVxdWlyZWRNYXJrZXJdPVwiIXJlcXVpcmVkXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6d2lkdGggPz8gJzEwMCUnfVwiIGhpZGVSZXF1aXJlZE1hcmtlcj1cInRydWVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPlxyXG4gIDxtYXQtbGFiZWw+e3tkaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICA8aW5wdXQgbWF0SW5wdXQgYXBwQ3VycmVuY3lJbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIlxyXG4gIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIlxyXG4gIFtuZ01vZGVsXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImVudGVyUHJlc3NlZCgpXCIgKGJsdXIpPVwibGVhdmVkKClcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIC8+XHJcbiAgPHNwYW4gKm5nSWY9XCJjdXJyZW5jeSE9JydcIiBtYXRQcmVmaXg+e3tjdXJyZW5jeX19Jm5ic3A7PC9zcGFuPlxyXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9sLmludmFsaWRcIj57e3ZhbGlkYXRlKGNvbnRyb2wpfX08L21hdC1lcnJvcj5cclxuICA8ZGl2IG1hdFN1ZmZpeCBjbGFzcz1cInN1ZmZpeC1pY29uc1wiPlxyXG4gICAgPHNwYS1zdWZmaXggW2xhYmVsXT1cInN1ZmZpeFwiIFtpbmZvTWVzc2FnZV09XCJpbmZvTWVzc2FnZVwiIFtjb3B5Q29udGVudF09XCJjb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiY2xlYXJDb250ZW50XCIgKGNsZWFyQ2xpY2spPVwiY2xlYXIoKVwiIFtpc0hvdmVyZWRdPVwiaXNIb3ZlcmVkXCIgWyh2YWx1ZSldPVwidmFsdWVcIj48L3NwYS1zdWZmaXg+XHJcbiAgPC9kaXY+XHJcblxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbW9uZXkvbW9uZXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvbW9uZXkvbW9uZXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBT3pELE1BQU0sT0FBTyxjQUFjO0lBRXpCO1FBNEJTLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsVUFBSyxHQUFHLE1BQU0sQ0FBQTtRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFYixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0IsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUMsa0JBQWtCO1FBQ1QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsUUFBRyxHQUFHLGdCQUFnQixDQUFDLENBQUMsMkJBQTJCO1FBSWxELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBbUIvQyxZQUFZO1FBQ1osWUFBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLEVB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O3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUtFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtbW9uZXknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb25leS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW9uZXkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb25leUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gXCJFbnRlciBcIiArIHRoaXMuZGlzcGxheTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG5cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdENvbnRyb2wodGhpcy5jb250cm9sKVxyXG4gIH1cclxuXHJcbiAgaW5pdENvbnRyb2woY29udHJvbDogRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhudWxsKTtcclxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcclxuXHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW4odGhpcy5taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCldKTtcclxuICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGludCA9IFwiXCI7XHJcbiAgQElucHV0KCkgZGlzcGxheSA9IFwiXCI7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gXCJcIjtcclxuICBASW5wdXQoKSB3aWR0aCA9IFwiMTAwJVwiXHJcbiAgQElucHV0KCkgY3VycmVuY3kgPSBcIlwiO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlbnRlclByZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcblxyXG4gIC8vdmFsaWRhdGlvbiBpbnB1dFxyXG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtaW4gPSAwO1xyXG4gIEBJbnB1dCgpIG1heCA9IDkwMDAwMDAwMDAwMDAwMDA7IC8vTWF0aC5tYXggOTAwMDAwMDAwMDAwMDAwMFxyXG5cclxuXHJcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcclxuICBAT3V0cHV0KCkgaW5mb0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBvbkluZm9DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmluZm9DbGljay5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkKHgpe1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHgpO1xyXG4gIH1cclxuXHJcbiAgbGVhdmVkKCkge1xyXG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBlbnRlclByZXNzZWQoKSB7XHJcbiAgICB0aGlzLmVudGVyUHJlc3MuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy92YWxpZGF0aW9uXHJcbiAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLnZhbHVlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4odGhpcy5taW4pLCBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCldKTtcclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogRm9ybUNvbnRyb2wpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkICYmIGNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgcmV0dXJuIGBSZXF1aXJlZGA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgPCB0aGlzLm1pbil7XHJcbiAgICAgIHJldHVybiBgTWluaW11biB2YWx1ZSBpcyAke3RoaXMubWlufWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgPiB0aGlzLm1heCkge1xyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHt0aGlzLm1heH1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdtaW4nKSkge1xyXG4gICAgICByZXR1cm4gYE1pbmltdW4gdmFsdWUgaXMgJHt0aGlzLm1pbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXgnKSkge1xyXG4gICAgICByZXR1cm4gYE1heGltdW0gdmFsdWUgaXMgJHt0aGlzLm1heH1gO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkIGhpZGVSZXF1aXJlZE1hcmtlcj1cInRydWVcIiBbaGludExhYmVsXT1cImhpbnRcIiBbaGlkZVJlcXVpcmVkTWFya2VyXT1cIiFyZXF1aXJlZFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOndpZHRofVwiIGhpZGVSZXF1aXJlZE1hcmtlcj1cInRydWVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPlxyXG4gIDxtYXQtbGFiZWw+e3tkaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICA8aW5wdXQgbWF0SW5wdXQgYXBwQ3VycmVuY3lJbnB1dE1hc2sgYXV0b2NvbXBsZXRlPVwib2ZmXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIlxyXG4gIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIlxyXG4gIFtuZ01vZGVsXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlZCgkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImVudGVyUHJlc3NlZCgpXCIgKGJsdXIpPVwibGVhdmVkKClcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIC8+XHJcbiAgPHNwYW4gKm5nSWY9XCJjdXJyZW5jeSE9JydcIiBtYXRQcmVmaXg+e3tjdXJyZW5jeX19Jm5ic3A7PC9zcGFuPlxyXG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJjb250cm9sLmludmFsaWRcIj57e3ZhbGlkYXRlKGNvbnRyb2wpfX08L21hdC1lcnJvcj5cclxuICAgICAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJzdWZmaXgtaWNvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImluZm9NZXNzYWdlXCIgKGNsaWNrKT1cIm9uSW5mb0NsaWNrKCRldmVudClcIiBtYXRUb29sdGlwPVwiSW5mb1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJjb2xvcjogc3RlZWxibHVlO1wiPmluZm88L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiJdfQ==