@ohioepa/oepa-ui-lib 1.2.0 → 1.2.1

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 (57) hide show
  1. package/esm2022/lib/account-search-input/account-search-input.component.mjs +9 -17
  2. package/esm2022/lib/account-search-input/account-search.service.mjs +31 -0
  3. package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +8 -16
  4. package/esm2022/lib/address/oepa-address.service.mjs +11 -5
  5. package/esm2022/lib/common-forms.module.mjs +36 -1
  6. package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +9 -8
  7. package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +11 -5
  8. package/esm2022/lib/entity/entity.service.mjs +11 -5
  9. package/esm2022/lib/file-upload/file-upload.component.mjs +8 -7
  10. package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +7 -6
  11. package/esm2022/lib/lynx-image-upload/lynx.service.mjs +11 -5
  12. package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +8 -7
  13. package/esm2022/lib/oepa-account/account-service.mjs +62 -0
  14. package/esm2022/lib/oepa-file-utils/oepa-file-util.service.mjs +227 -0
  15. package/esm2022/lib/oepa-reference/oepa-reference.service.mjs +47 -0
  16. package/esm2022/lib/oepa-user-account/oepa-user-account.service.mjs +304 -0
  17. package/esm2022/lib/parameter/parameter.service.mjs +11 -5
  18. package/esm2022/lib/params-help-button/params-help-button.component.mjs +8 -8
  19. package/esm2022/lib/params-help-button/params-help.service.mjs +26 -0
  20. package/esm2022/lib/pin-modal/oepa-pin.service.mjs +11 -5
  21. package/esm2022/lib/pin-modal/pin-modal.component.mjs +2 -2
  22. package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +2 -2
  23. package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +11 -5
  24. package/esm2022/lib/table/p-table/p-table.component.mjs +9 -8
  25. package/esm2022/lib/table/table-export.service.mjs +14 -5
  26. package/esm2022/lib/table/table.component.mjs +13 -12
  27. package/fesm2022/ohioepa-oepa-ui-lib.mjs +886 -155
  28. package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -1
  29. package/lib/account-search-input/account-search-input.component.d.ts +3 -4
  30. package/lib/account-search-input/account-search.service.d.ts +12 -0
  31. package/lib/account-search-modal/account-search-modal.component.d.ts +3 -5
  32. package/lib/address/oepa-address.service.d.ts +2 -1
  33. package/lib/common-forms.module.d.ts +2 -0
  34. package/lib/edoc-attachment/edoc-attachment.component.d.ts +2 -1
  35. package/lib/edoc-attachment/edoc-attachment.service.d.ts +2 -1
  36. package/lib/entity/entity.service.d.ts +2 -1
  37. package/lib/file-upload/file-upload.component.d.ts +2 -1
  38. package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +2 -1
  39. package/lib/lynx-image-upload/lynx.service.d.ts +2 -1
  40. package/lib/multi-file-upload/multi-file-upload.component.d.ts +2 -1
  41. package/lib/oepa-account/account-service.d.ts +23 -0
  42. package/lib/oepa-file-utils/oepa-file-util.service.d.ts +53 -0
  43. package/lib/oepa-reference/oepa-reference.service.d.ts +26 -0
  44. package/lib/oepa-user-account/oepa-user-account.service.d.ts +122 -0
  45. package/lib/parameter/parameter.service.d.ts +2 -1
  46. package/lib/params-help-button/params-help-button.component.d.ts +3 -3
  47. package/lib/params-help-button/params-help.service.d.ts +11 -0
  48. package/lib/pin-modal/oepa-pin.service.d.ts +2 -1
  49. package/lib/pin-modal/pin-modal.component.d.ts +2 -1
  50. package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +1 -1
  51. package/lib/shopping-cart/shopping-cart.service.d.ts +2 -1
  52. package/lib/table/p-table/p-table.component.d.ts +2 -1
  53. package/lib/table/table-export.service.d.ts +2 -1
  54. package/lib/table/table.component.d.ts +1 -1
  55. package/ohioepa-oepa-ui-lib-1.2.1.tgz +0 -0
  56. package/package.json +1 -1
  57. package/ohioepa-oepa-ui-lib-1.2.0.tgz +0 -0
@@ -0,0 +1,304 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import { of } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ /**
8
+ * OepaUserAccountService - A collection of methods for accessing and manipulating user accounts.
9
+ */
10
+ export class OepaUserAccountService {
11
+ http;
12
+ ebizRootURL;
13
+ hostUrl = '/ebiz';
14
+ accountsUrl = '/api/v1/userAccounts';
15
+ ebizAccountsUrl = '/api/v1/accounts';
16
+ ebizSessionUrl = '/api/v1/session';
17
+ account;
18
+ personID = '';
19
+ sessionID = '';
20
+ webappsRootURL = '';
21
+ logoutPath = '';
22
+ idleTimerRunning = false;
23
+ idleTime = 0;
24
+ idleThreshold = (29 * 60); // 29 minute timeout threshold by default
25
+ idleSubject = new Subject();
26
+ timeoutID;
27
+ constructor(http, ebizRootURL) {
28
+ this.http = http;
29
+ this.ebizRootURL = ebizRootURL;
30
+ this.hostUrl = ebizRootURL + this.hostUrl;
31
+ this.logoutPath = '/jsp/logout.jsp';
32
+ }
33
+ /**
34
+ * Retrieve the User Account for the user userid.
35
+ * @param userid
36
+ */
37
+ retrieveAccountForUser(userid) {
38
+ return this.http.get(this.hostUrl + this.accountsUrl + '/' + userid);
39
+ }
40
+ /**
41
+ * Retrieve the user account for the currently logged in user.
42
+ * @returns Observable<OepaUserAccount>
43
+ */
44
+ retrieveAccountForCurrentUser() {
45
+ return this.http.get(this.hostUrl + this.accountsUrl + '/login').pipe(map((account) => {
46
+ if (!account) {
47
+ if (this.personID && this.sessionID) {
48
+ this.retrieveAccountForInternalSession(this.personID, this.sessionID).subscribe({
49
+ next: internalAccount => {
50
+ if (internalAccount) {
51
+ this.account = internalAccount;
52
+ }
53
+ else {
54
+ this.logMessageOnServer('retrieveAccountForCurrentUser - no account, redirecting to logout');
55
+ this.redirectToLogout();
56
+ }
57
+ }, error: err => {
58
+ this.logMessageOnServer('Failed retrieving internal account: ' + err);
59
+ this.redirectToLogout();
60
+ }
61
+ });
62
+ }
63
+ else {
64
+ this.logMessageOnServer('retrieveAccountForCurrentUser - no account, redirecting to logout');
65
+ this.redirectToLogout();
66
+ }
67
+ }
68
+ else {
69
+ this.account = account;
70
+ console.log('retrieveAccountForCurrentUser: ' + this.account?.loginName || '<unknown>');
71
+ }
72
+ return this.account;
73
+ }));
74
+ }
75
+ /**
76
+ * Redirect to logout screen if user is not found
77
+ */
78
+ redirectToLogout(msg) {
79
+ let logoutUrl = this.logoutPath;
80
+ if (this.webappsRootURL) {
81
+ logoutUrl = this.webappsRootURL + (this.logoutPath || '');
82
+ }
83
+ alert(msg || 'Connection lost. You will be redirected to the login page.');
84
+ console.log('redirecting to logoutUrl:' + logoutUrl);
85
+ window.location.href = logoutUrl;
86
+ }
87
+ /**
88
+ * Retrieve the user account for the currently logged in user.
89
+ * @param sessionID person ID for internal user
90
+ * @returns Observable<OepaUserAccount>
91
+ */
92
+ retrieveAccountForInternalSession(personID, sessionID) {
93
+ this.account = {};
94
+ const url = this.hostUrl + this.accountsUrl + '/internal/personID/' + personID + '/sessionID/' + sessionID;
95
+ console.log('retrieveAccountForInternalSession: ' + url);
96
+ return this.http.get(url).pipe(map((account) => {
97
+ this.account = account;
98
+ this.personID = personID;
99
+ this.sessionID = sessionID;
100
+ console.log('retrieveAccountForInternalSession: ' + this.account?.loginName || '<unknown>');
101
+ return account;
102
+ }));
103
+ }
104
+ /**
105
+ * Determine whether account has the role roleName.
106
+ * @param account
107
+ * @param roleName
108
+ */
109
+ accountHasRole(account, roleName) {
110
+ let hasRole = false;
111
+ const roleList = this.getRoleList(account);
112
+ if (roleList && roleList.length) {
113
+ hasRole = (roleList.indexOf(roleName) > -1);
114
+ }
115
+ return hasRole;
116
+ }
117
+ getRoleList(account) {
118
+ const roleList = [];
119
+ if (account.roleList && account.roleList.length > 0) {
120
+ account.roleList.forEach((role) => {
121
+ roleList.push(role.name || '');
122
+ });
123
+ }
124
+ return roleList;
125
+ }
126
+ /**
127
+ * Determine whether account has the privilege privilegeType.
128
+ * @param account
129
+ * @param privilegeType
130
+ */
131
+ accountHasPrivilege(account, privilegeType) {
132
+ let hasPrivilege = false;
133
+ const privilegeList = this.getPrivilegeList(account);
134
+ if (privilegeList && privilegeList.length) {
135
+ hasPrivilege = (privilegeList.indexOf(privilegeType) > -1);
136
+ }
137
+ return hasPrivilege;
138
+ }
139
+ getPrivilegeList(account) {
140
+ const privilegeList = [];
141
+ if (account.roleList && account.roleList.length > 0) {
142
+ account.roleList.forEach((role) => {
143
+ if (role.privilegeList && role.privilegeList.length > 0) {
144
+ role.privilegeList.forEach((privilege) => {
145
+ privilegeList.push(privilege.type || '');
146
+ });
147
+ }
148
+ });
149
+ }
150
+ return privilegeList;
151
+ }
152
+ /**
153
+ * Retrieve the userAccount of the current user. The retrieveAccountForCurrentUser method
154
+ * must be invoked prior to invoking this method.
155
+ */
156
+ getCurrentUserAccount() {
157
+ console.log('getCurrentUserAccount: ' + this.account?.loginName || '<unknown>');
158
+ return this.account;
159
+ }
160
+ /**
161
+ * ===========================================================================================================================
162
+ * EBIZ METHODS:
163
+ * The methods below currently apply only to eBiz.
164
+ * ===========================================================================================================================
165
+ */
166
+ getWebappsRootURL() {
167
+ if (this.webappsRootURL) {
168
+ return of(this.webappsRootURL);
169
+ }
170
+ else {
171
+ const url = this.hostUrl + '/api/v1/gateway/gatewayConfig';
172
+ return this.http.get(url).pipe(map((gatewayConfig) => {
173
+ if (gatewayConfig) {
174
+ this.webappsRootURL = gatewayConfig.webappsRootURL;
175
+ }
176
+ return this.webappsRootURL;
177
+ }));
178
+ }
179
+ }
180
+ /**
181
+ * Return array of ProgramPrivileges matching programPrivilegeRequest.
182
+ * @param programPrivilegeRequest
183
+ * @returns Observable<Array<ProgramPrivilege>>
184
+ */
185
+ searchPrivileges(programPrivilegeRequest, altUserID) {
186
+ const url = this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/search' + (altUserID ? '?userid=' + altUserID : '');
187
+ return this.http.post(url, programPrivilegeRequest);
188
+ }
189
+ /**
190
+ * Create a new ProgramPrivilege based on contents of ProgramPrivilegeRequest.
191
+ * @param programPrivilegeRequest
192
+ * @returns Observable<ProgramPrivilege?
193
+ */
194
+ createProgramPrivilege(programPrivilegeRequest, altUserID) {
195
+ return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges' + (altUserID ? '?userid=' + altUserID : ''), programPrivilegeRequest);
196
+ }
197
+ /**
198
+ * Delete the ProgramPrivilege identified by programPrivilegeID.
199
+ * @param programPrivilegeID
200
+ * @returns Observable<void>
201
+ */
202
+ deleteProgramPrivilege(programPrivilegeID, altUserID) {
203
+ return this.http.delete(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/' + programPrivilegeID + (altUserID ? '?userid=' + altUserID : ''), { responseType: 'text' });
204
+ }
205
+ /**
206
+ * Delegate a program privilege based on information in delegation.
207
+ * @param delegation
208
+ * @returns Observable<void>
209
+ */
210
+ delegateProgramPrivilege(delegation, altUserID) {
211
+ return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/programPrivileges/delegation' + (altUserID ? '?userid=' + altUserID : ''), delegation, { responseType: 'text' });
212
+ }
213
+ /**
214
+ * ===========================================================================================================================
215
+ * Helper METHODS:
216
+ * ===========================================================================================================================
217
+ */
218
+ /**
219
+ * Set the user account to be used for "live reload mode"
220
+ * @param userAccount
221
+ */
222
+ setLiveReloadUser(userAccount) {
223
+ this.account = userAccount;
224
+ console.log('setLiveReloadUser: ' + this.account?.loginName || '<unknown>');
225
+ return this.http.post(this.hostUrl + this.ebizAccountsUrl + '/liveReload', userAccount);
226
+ }
227
+ /**
228
+ * Stores the given user in the eBiz session.
229
+ * @param accountUserID
230
+ */
231
+ storeUserInSession(accountUserID) {
232
+ let acct = {};
233
+ acct.accountID = accountUserID;
234
+ return this.http.post(this.hostUrl + this.ebizSessionUrl + '/storeUser/' + accountUserID, null);
235
+ }
236
+ /**
237
+ * See if the current user should be allowed to see "demo" capabilities
238
+ */
239
+ demoCapabilitiesAllowed() {
240
+ let demoAllowed = false;
241
+ if (this.account && this.account.roleList) {
242
+ this.account.roleList.forEach(role => {
243
+ if (role.name === 'AllowDemo') {
244
+ demoAllowed = true;
245
+ }
246
+ });
247
+ }
248
+ return demoAllowed;
249
+ }
250
+ startIdleTimer(threshold) {
251
+ if (this.timeoutID) {
252
+ clearTimeout(this.timeoutID);
253
+ }
254
+ this.idleThreshold = threshold || this.idleThreshold;
255
+ if (!this.idleTimerRunning) {
256
+ console.log('The idle timeout started with threshold: ' + this.idleThreshold);
257
+ this.idleTimerRunning = true;
258
+ this.checkTimeout();
259
+ }
260
+ }
261
+ resetIdleTime() {
262
+ console.log('idle timer reset');
263
+ this.idleTime = 0;
264
+ }
265
+ checkTimeout() {
266
+ this.timeoutID = setTimeout(() => {
267
+ this.idleTime += 60;
268
+ console.log('idle time = ' + this.idleTime + ", threshold = " + this.idleThreshold);
269
+ if (this.idleTime >= this.idleThreshold) {
270
+ console.log('firing next idleSubject...');
271
+ this.idleTimerRunning = false;
272
+ this.idleSubject.next(this.idleTime);
273
+ }
274
+ else {
275
+ if (this.timeoutID) {
276
+ clearTimeout(this.timeoutID);
277
+ }
278
+ this.checkTimeout();
279
+ }
280
+ }, 60000);
281
+ }
282
+ getIdleTimeout() {
283
+ return this.idleSubject.asObservable();
284
+ }
285
+ logMessageOnServer(message) {
286
+ const messageResponse = {
287
+ response: message
288
+ };
289
+ const url = this.hostUrl + this.accountsUrl + '/logs/message';
290
+ return this.http.post(url, messageResponse);
291
+ }
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
293
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, providedIn: 'root' });
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaUserAccountService, decorators: [{
296
+ type: Injectable,
297
+ args: [{
298
+ providedIn: 'root'
299
+ }]
300
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
301
+ type: Inject,
302
+ args: ['ebizRootURL']
303
+ }] }] });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS11c2VyLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvb2VwYS11c2VyLWFjY291bnQvb2VwYS11c2VyLWFjY291bnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLMUI7O0dBRUc7QUFJSCxNQUFNLE9BQU8sc0JBQXNCO0lBZ0JiO0lBQWlEO0lBZjdELE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDbEIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztJQUNyQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsT0FBTyxDQUFtQjtJQUMxQixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBQ3RCLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixRQUFRLEdBQVUsQ0FBQyxDQUFDO0lBQ3BCLGFBQWEsR0FBRyxDQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztJQUNsRSxXQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUNwQyxTQUFTLENBQU07SUFFdkIsWUFBb0IsSUFBZ0IsRUFBaUMsV0FBbUI7UUFBcEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFpQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUN0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QWtCLENBQUMsT0FBZ0I7UUFDeEMsTUFBTSxlQUFlLEdBQVE7WUFDM0IsUUFBUSxFQUFFLE9BQU87U0FDbEIsQ0FBQTtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQzt3R0EzU1Esc0JBQXNCLDRDQWdCYSxhQUFhOzRHQWhCaEQsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWlCd0MsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgT2VwYVVzZXJBY2NvdW50LCBQcm9ncmFtUHJpdmlsZWdlLCBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgRGVsZWdhdGlvbiwgT0VQQVJvbGUsIE9lcGFQcml2aWxlZ2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG4vKipcbiAqIE9lcGFVc2VyQWNjb3VudFNlcnZpY2UgLSBBIGNvbGxlY3Rpb24gb2YgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGFuZCBtYW5pcHVsYXRpbmcgdXNlciBhY2NvdW50cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgT2VwYVVzZXJBY2NvdW50U2VydmljZSB7XG4gIHByaXZhdGUgaG9zdFVybCA9ICcvZWJpeic7XG4gIHByaXZhdGUgYWNjb3VudHNVcmwgPSAnL2FwaS92MS91c2VyQWNjb3VudHMnO1xuICBwcml2YXRlIGViaXpBY2NvdW50c1VybCA9ICcvYXBpL3YxL2FjY291bnRzJztcbiAgcHJpdmF0ZSBlYml6U2Vzc2lvblVybCA9ICcvYXBpL3YxL3Nlc3Npb24nO1xuICBwcml2YXRlIGFjY291bnQhOiBPZXBhVXNlckFjY291bnQ7XG4gIHByaXZhdGUgcGVyc29uSUQ6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHNlc3Npb25JRDogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgd2ViYXBwc1Jvb3RVUkw6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGxvZ291dFBhdGg6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIGlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpZGxlVGltZTpudW1iZXIgPSAwO1xuICBwcml2YXRlIGlkbGVUaHJlc2hvbGQgPSAoMjkqNjApOyAvLyAyOSBtaW51dGUgdGltZW91dCB0aHJlc2hvbGQgYnkgZGVmYXVsdFxuICBwcml2YXRlIGlkbGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIHRpbWVvdXRJRDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnZWJpelJvb3RVUkwnKSBwcml2YXRlIGViaXpSb290VVJMOiBzdHJpbmcpIHtcbiAgICB0aGlzLmhvc3RVcmwgPSBlYml6Um9vdFVSTCArIHRoaXMuaG9zdFVybDtcbiAgICB0aGlzLmxvZ291dFBhdGggPSAnL2pzcC9sb2dvdXQuanNwJztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgVXNlciBBY2NvdW50IGZvciB0aGUgdXNlciB1c2VyaWQuXG4gICAqIEBwYXJhbSB1c2VyaWRcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUFjY291bnRGb3JVc2VyKHVzZXJpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhVXNlckFjY291bnQ+KHRoaXMuaG9zdFVybCArIHRoaXMuYWNjb3VudHNVcmwgKyAnLycgKyB1c2VyaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyIGFjY291bnQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PlxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyKCk6IE9ic2VydmFibGU8T2VwYVVzZXJBY2NvdW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9sb2dpbicpLnBpcGUobWFwKChhY2NvdW50OiBPZXBhVXNlckFjY291bnQpID0+IHtcbiAgICAgIGlmICghYWNjb3VudCkge1xuICAgICAgICBpZiAodGhpcy5wZXJzb25JRCAmJiB0aGlzLnNlc3Npb25JRCkge1xuICAgICAgICAgIHRoaXMucmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHRoaXMucGVyc29uSUQsIHRoaXMuc2Vzc2lvbklEKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogaW50ZXJuYWxBY2NvdW50ID0+IHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbEFjY291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvdW50ID0gaW50ZXJuYWxBY2NvdW50XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvZ01lc3NhZ2VPblNlcnZlcigncmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgLSBubyBhY2NvdW50LCByZWRpcmVjdGluZyB0byBsb2dvdXQnKTtcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ01lc3NhZ2VPblNlcnZlcignRmFpbGVkIHJldHJpZXZpbmcgaW50ZXJuYWwgYWNjb3VudDogJyArIGVycik7XG4gICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Mb2dvdXQoKTtcbiAgICAgICAgICB9fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dNZXNzYWdlT25TZXJ2ZXIoJ3JldHJpZXZlQWNjb3VudEZvckN1cnJlbnRVc2VyIC0gbm8gYWNjb3VudCwgcmVkaXJlY3RpbmcgdG8gbG9nb3V0Jyk7XG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFRvTG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JDdXJyZW50VXNlcjogJyArIHRoaXMuYWNjb3VudD8ubG9naW5OYW1lIHx8ICc8dW5rbm93bj4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZGlyZWN0IHRvIGxvZ291dCBzY3JlZW4gaWYgdXNlciBpcyBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyByZWRpcmVjdFRvTG9nb3V0KG1zZyA/OiBzdHJpbmcpIHtcbiAgICBsZXQgbG9nb3V0VXJsID0gdGhpcy5sb2dvdXRQYXRoO1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICBsb2dvdXRVcmwgPSB0aGlzLndlYmFwcHNSb290VVJMICsgKHRoaXMubG9nb3V0UGF0aCB8fCAnJyk7XG4gICAgfVxuICAgIGFsZXJ0KG1zZyB8fCAnQ29ubmVjdGlvbiBsb3N0LiBZb3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBsb2dpbiBwYWdlLicpO1xuICAgIGNvbnNvbGUubG9nKCdyZWRpcmVjdGluZyB0byBsb2dvdXRVcmw6JyArIGxvZ291dFVybCk7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBsb2dvdXRVcmw7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHVzZXIgYWNjb3VudCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci5cbiAgICogQHBhcmFtIHNlc3Npb25JRCBwZXJzb24gSUQgZm9yIGludGVybmFsIHVzZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uKHBlcnNvbklEOiBzdHJpbmcsIHNlc3Npb25JRDogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhVXNlckFjY291bnQ+IHtcbiAgICB0aGlzLmFjY291bnQgPSB7fTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3RVcmwgKyB0aGlzLmFjY291bnRzVXJsICsgJy9pbnRlcm5hbC9wZXJzb25JRC8nICsgcGVyc29uSUQgKyAnL3Nlc3Npb25JRC8nICsgc2Vzc2lvbklEO1xuICAgIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUFjY291bnRGb3JJbnRlcm5hbFNlc3Npb246ICcgKyB1cmwpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFVc2VyQWNjb3VudD4odXJsKS5waXBlKG1hcCgoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KSA9PiB7XG4gICAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuICAgICAgdGhpcy5wZXJzb25JRCA9IHBlcnNvbklEO1xuICAgICAgdGhpcy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7XG4gICAgICBjb25zb2xlLmxvZygncmV0cmlldmVBY2NvdW50Rm9ySW50ZXJuYWxTZXNzaW9uOiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgICAgcmV0dXJuIGFjY291bnQ7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGFjY291bnQgaGFzIHRoZSByb2xlIHJvbGVOYW1lLlxuICAgKiBAcGFyYW0gYWNjb3VudFxuICAgKiBAcGFyYW0gcm9sZU5hbWVcbiAgICovXG4gIHB1YmxpYyBhY2NvdW50SGFzUm9sZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHJvbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgaGFzUm9sZSA9IGZhbHNlO1xuICAgIGNvbnN0IHJvbGVMaXN0ID0gdGhpcy5nZXRSb2xlTGlzdChhY2NvdW50KTtcbiAgICBpZiAocm9sZUxpc3QgJiYgcm9sZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNSb2xlID0gKHJvbGVMaXN0LmluZGV4T2Yocm9sZU5hbWUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUm9sZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um9sZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3Qgcm9sZUxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBpZiAoYWNjb3VudC5yb2xlTGlzdCAmJiBhY2NvdW50LnJvbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGFjY291bnQucm9sZUxpc3QuZm9yRWFjaCgocm9sZTogT0VQQVJvbGUpID0+IHtcbiAgICAgICAgcm9sZUxpc3QucHVzaChyb2xlLm5hbWUgfHwgJycpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByb2xlTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBhY2NvdW50IGhhcyB0aGUgcHJpdmlsZWdlIHByaXZpbGVnZVR5cGUuXG4gICAqIEBwYXJhbSBhY2NvdW50XG4gICAqIEBwYXJhbSBwcml2aWxlZ2VUeXBlXG4gICAqL1xuICBwdWJsaWMgYWNjb3VudEhhc1ByaXZpbGVnZShhY2NvdW50OiBPZXBhVXNlckFjY291bnQsIHByaXZpbGVnZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNQcml2aWxlZ2UgPSBmYWxzZTtcbiAgICBjb25zdCBwcml2aWxlZ2VMaXN0ID0gdGhpcy5nZXRQcml2aWxlZ2VMaXN0KGFjY291bnQpO1xuICAgIGlmIChwcml2aWxlZ2VMaXN0ICYmIHByaXZpbGVnZUxpc3QubGVuZ3RoKSB7XG4gICAgICBoYXNQcml2aWxlZ2UgPSAocHJpdmlsZWdlTGlzdC5pbmRleE9mKHByaXZpbGVnZVR5cGUpID4gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gaGFzUHJpdmlsZWdlO1xuICB9XG5cbiAgcHVibGljIGdldFByaXZpbGVnZUxpc3QoYWNjb3VudDogT2VwYVVzZXJBY2NvdW50KTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJpdmlsZWdlTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGlmIChhY2NvdW50LnJvbGVMaXN0ICYmIGFjY291bnQucm9sZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgYWNjb3VudC5yb2xlTGlzdC5mb3JFYWNoKChyb2xlOiBPRVBBUm9sZSkgPT4ge1xuICAgICAgICBpZiAocm9sZS5wcml2aWxlZ2VMaXN0ICYmIHJvbGUucHJpdmlsZWdlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcm9sZS5wcml2aWxlZ2VMaXN0LmZvckVhY2goKHByaXZpbGVnZTogT2VwYVByaXZpbGVnZSkgPT4ge1xuICAgICAgICAgICAgcHJpdmlsZWdlTGlzdC5wdXNoKHByaXZpbGVnZS50eXBlIHx8ICcnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwcml2aWxlZ2VMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSB1c2VyQWNjb3VudCBvZiB0aGUgY3VycmVudCB1c2VyLiBUaGUgcmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIgbWV0aG9kXG4gICAqIG11c3QgYmUgaW52b2tlZCBwcmlvciB0byBpbnZva2luZyB0aGlzIG1ldGhvZC5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlckFjY291bnQoKTogT2VwYVVzZXJBY2NvdW50IHtcbiAgICBjb25zb2xlLmxvZygnZ2V0Q3VycmVudFVzZXJBY2NvdW50OiAnICsgdGhpcy5hY2NvdW50Py5sb2dpbk5hbWUgfHwgJzx1bmtub3duPicpO1xuICAgIHJldHVybiB0aGlzLmFjY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqIEVCSVogTUVUSE9EUzpcbiAgICogVGhlIG1ldGhvZHMgYmVsb3cgY3VycmVudGx5IGFwcGx5IG9ubHkgdG8gZUJpei5cbiAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gIHB1YmxpYyBnZXRXZWJhcHBzUm9vdFVSTCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLndlYmFwcHNSb290VVJMKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy53ZWJhcHBzUm9vdFVSTCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArICcvYXBpL3YxL2dhdGV3YXkvZ2F0ZXdheUNvbmZpZyc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCkucGlwZShtYXAoKGdhdGV3YXlDb25maWc6YW55KSA9PiB7XG4gICAgICAgIGlmIChnYXRld2F5Q29uZmlnKSB7XG4gICAgICAgICAgdGhpcy53ZWJhcHBzUm9vdFVSTCA9IGdhdGV3YXlDb25maWcud2ViYXBwc1Jvb3RVUkw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2ViYXBwc1Jvb3RVUkw7XG4gICAgICB9KSk7XG4gICAgfVxuICAgIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFycmF5IG9mIFByb2dyYW1Qcml2aWxlZ2VzIG1hdGNoaW5nIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0LlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZVJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj5cbiAgICovXG4gIHB1YmxpYyBzZWFyY2hQcml2aWxlZ2VzKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9ncmFtUHJpdmlsZWdlPj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9zZWFyY2gnICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEFycmF5PFByb2dyYW1Qcml2aWxlZ2U+Pih1cmwsIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgUHJvZ3JhbVByaXZpbGVnZSBiYXNlZCBvbiBjb250ZW50cyBvZiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdC5cbiAgICogQHBhcmFtIHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJvZ3JhbVByaXZpbGVnZT9cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VSZXF1ZXN0OiBQcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCwgYWx0VXNlcklEPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9ncmFtUHJpdmlsZWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFByb2dyYW1Qcml2aWxlZ2U+KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcycrIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLCBcbiAgICBwcm9ncmFtUHJpdmlsZWdlUmVxdWVzdCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHRoZSBQcm9ncmFtUHJpdmlsZWdlIGlkZW50aWZpZWQgYnkgcHJvZ3JhbVByaXZpbGVnZUlELlxuICAgKiBAcGFyYW0gcHJvZ3JhbVByaXZpbGVnZUlEXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8dm9pZD5cbiAgICovXG4gIHB1YmxpYyBkZWxldGVQcm9ncmFtUHJpdmlsZWdlKHByb2dyYW1Qcml2aWxlZ2VJRDogc3RyaW5nLCBhbHRVc2VySUQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy8nICsgcHJvZ3JhbVByaXZpbGVnZUlEICsgKGFsdFVzZXJJRCA/ICc/dXNlcmlkPScgKyBhbHRVc2VySUQgOiAnJyksIFxuICAgIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZWdhdGUgYSBwcm9ncmFtIHByaXZpbGVnZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBpbiBkZWxlZ2F0aW9uLlxuICAgKiBAcGFyYW0gZGVsZWdhdGlvblxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHZvaWQ+XG4gICAqL1xuICBwdWJsaWMgZGVsZWdhdGVQcm9ncmFtUHJpdmlsZWdlKGRlbGVnYXRpb246IERlbGVnYXRpb24sIGFsdFVzZXJJRD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuaG9zdFVybCArIHRoaXMuZWJpekFjY291bnRzVXJsICsgJy9wcm9ncmFtUHJpdmlsZWdlcy9kZWxlZ2F0aW9uJyArIChhbHRVc2VySUQgPyAnP3VzZXJpZD0nICsgYWx0VXNlcklEIDogJycpLFxuICAgIGRlbGVnYXRpb24sIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XG4gIH1cblxuIC8qKlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICogSGVscGVyIE1FVEhPRFM6XG4gICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgKi9cblxuICAgLyoqXG4gICAgKiBTZXQgdGhlIHVzZXIgYWNjb3VudCB0byBiZSB1c2VkIGZvciBcImxpdmUgcmVsb2FkIG1vZGVcIlxuICAgICogQHBhcmFtIHVzZXJBY2NvdW50IFxuICAgICovXG4gICAgcHVibGljIHNldExpdmVSZWxvYWRVc2VyKHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICAgdGhpcy5hY2NvdW50ID0gdXNlckFjY291bnQ7XG4gICAgICBjb25zb2xlLmxvZygnc2V0TGl2ZVJlbG9hZFVzZXI6ICcgKyB0aGlzLmFjY291bnQ/LmxvZ2luTmFtZSB8fCAnPHVua25vd24+Jyk7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpBY2NvdW50c1VybCArICcvbGl2ZVJlbG9hZCcsIHVzZXJBY2NvdW50KTtcbiAgICB9XG5cbiAgIC8qKlxuICAgICogU3RvcmVzIHRoZSBnaXZlbiB1c2VyIGluIHRoZSBlQml6IHNlc3Npb24uXG4gICAgKiBAcGFyYW0gYWNjb3VudFVzZXJJRCBcbiAgICAqL1xuICAgcHVibGljIHN0b3JlVXNlckluU2Vzc2lvbihhY2NvdW50VXNlcklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFVc2VyQWNjb3VudD4ge1xuICAgICBsZXQgYWNjdCA9IHt9IGFzIE9lcGFVc2VyQWNjb3VudDtcbiAgICAgYWNjdC5hY2NvdW50SUQgPSBhY2NvdW50VXNlcklEO1xuICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2VwYVVzZXJBY2NvdW50Pih0aGlzLmhvc3RVcmwgKyB0aGlzLmViaXpTZXNzaW9uVXJsICsgJy9zdG9yZVVzZXIvJyArIGFjY291bnRVc2VySUQsIG51bGwpO1xuICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VlIGlmIHRoZSBjdXJyZW50IHVzZXIgc2hvdWxkIGJlIGFsbG93ZWQgdG8gc2VlIFwiZGVtb1wiIGNhcGFiaWxpdGllc1xuICAgICAqL1xuICAgIHB1YmxpYyBkZW1vQ2FwYWJpbGl0aWVzQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgIGxldCBkZW1vQWxsb3dlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYWNjb3VudCAmJiB0aGlzLmFjY291bnQucm9sZUxpc3QpIHtcbiAgICAgICAgdGhpcy5hY2NvdW50LnJvbGVMaXN0LmZvckVhY2gocm9sZSA9PiB7XG4gICAgICAgICAgaWYgKHJvbGUubmFtZSA9PT0gJ0FsbG93RGVtbycpIHtcbiAgICAgICAgICAgIGRlbW9BbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlbW9BbGxvd2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGFydElkbGVUaW1lcih0aHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICAgIGlmICh0aGlzLnRpbWVvdXRJRCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgfVxuICAgICAgdGhpcy5pZGxlVGhyZXNob2xkID0gdGhyZXNob2xkIHx8IHRoaXMuaWRsZVRocmVzaG9sZDtcbiAgICAgIGlmICghdGhpcy5pZGxlVGltZXJSdW5uaW5nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdUaGUgaWRsZSB0aW1lb3V0IHN0YXJ0ZWQgd2l0aCB0aHJlc2hvbGQ6ICcgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZXNldElkbGVUaW1lKCkge1xuICAgICAgY29uc29sZS5sb2coJ2lkbGUgdGltZXIgcmVzZXQnKTtcbiAgICAgIHRoaXMuaWRsZVRpbWUgPSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUaW1lb3V0KCkge1xuICAgICAgdGhpcy50aW1lb3V0SUQgPSBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICB0aGlzLmlkbGVUaW1lICs9IDYwO1xuICAgICAgICBjb25zb2xlLmxvZygnaWRsZSB0aW1lID0gJyArIHRoaXMuaWRsZVRpbWUgKyBcIiwgdGhyZXNob2xkID0gXCIgKyB0aGlzLmlkbGVUaHJlc2hvbGQpO1xuICAgICAgICBpZiAodGhpcy5pZGxlVGltZSA+PSB0aGlzLmlkbGVUaHJlc2hvbGQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZmlyaW5nIG5leHQgaWRsZVN1YmplY3QuLi4nKTtcbiAgICAgICAgICB0aGlzLmlkbGVUaW1lclJ1bm5pbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlkbGVTdWJqZWN0Lm5leHQodGhpcy5pZGxlVGltZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZW91dElEKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNoZWNrVGltZW91dCgpO1xuICAgICAgICB9XG4gICAgICB9LCA2MDAwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldElkbGVUaW1lb3V0KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICByZXR1cm4gdGhpcy5pZGxlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgXG4gICAgcHVibGljIGxvZ01lc3NhZ2VPblNlcnZlcihtZXNzYWdlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VSZXNwb25zZTogYW55ID0ge1xuICAgICAgICByZXNwb25zZTogbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0VXJsICsgdGhpcy5hY2NvdW50c1VybCArICcvbG9ncy9tZXNzYWdlJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgbWVzc2FnZVJlc3BvbnNlKTtcbiAgICB9XG59XG4iXX0=
@@ -1,11 +1,14 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Inject, Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common/http";
4
4
  export class ParameterService {
5
5
  http;
6
+ ebizRootURL;
6
7
  baseUrl = '/ebiz/api/v1/parameters';
7
- constructor(http) {
8
+ constructor(http, ebizRootURL) {
8
9
  this.http = http;
10
+ this.ebizRootURL = ebizRootURL;
11
+ this.baseUrl = ebizRootURL + this.baseUrl;
9
12
  }
10
13
  retrieveParameterByName(parameterName) {
11
14
  let url = this.baseUrl + '/names/' + parameterName;
@@ -35,7 +38,7 @@ export class ParameterService {
35
38
  let url = this.baseUrl + '/' + parameter.id;
36
39
  return this.http.put(url, parameter);
37
40
  }
38
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
39
42
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, providedIn: 'root' });
40
43
  }
41
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParameterService, decorators: [{
@@ -43,5 +46,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
43
46
  args: [{
44
47
  providedIn: 'root'
45
48
  }]
46
- }], ctorParameters: () => [{ type: i1.HttpClient }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3BhcmFtZXRlci9wYXJhbWV0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFTM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUdIO0lBRlosT0FBTyxHQUFXLHlCQUF5QixDQUFDO0lBRXRELFlBQXNCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSyxDQUFDO0lBRXJDLHVCQUF1QixDQUFDLGFBQXFCO1FBQ2hELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxXQUFtQjtRQUM1QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBWSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sZUFBZSxDQUFDLFNBQW9CO1FBQ3ZDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBUyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxXQUFtQjtRQUN0QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0scUJBQXFCLENBQUMsYUFBcUI7UUFDOUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLEdBQUcsYUFBYSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLHlCQUF5QixDQUFDLE1BQWM7UUFDM0MsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFvQjtRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7d0dBdENRLGdCQUFnQjs0R0FBaEIsZ0JBQWdCLGNBRmIsTUFBTTs7NEZBRVQsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4vcGFyYW1ldGVyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclNlcnZpY2Uge1xuICAgIHByb3RlY3RlZCBiYXNlVXJsOiBzdHJpbmcgPSAnL2ViaXovYXBpL3YxL3BhcmFtZXRlcnMnO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQpIHsgIH1cblxuICAgIHB1YmxpYyByZXRyaWV2ZVBhcmFtZXRlckJ5TmFtZShwYXJhbWV0ZXJOYW1lOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxQYXJhbWV0ZXI+IHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvbmFtZXMvJyArIHBhcmFtZXRlck5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFBhcmFtZXRlcj4odXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmV0cmlldmVQYXJhbWV0ZXJCeUlEKHBhcmFtZXRlcklEOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxQYXJhbWV0ZXI+IHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvJyArIHBhcmFtZXRlcklEO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQYXJhbWV0ZXI+KHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVBhcmFtZXRlcihwYXJhbWV0ZXI6IFBhcmFtZXRlcikgOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8c3RyaW5nPih1cmwsIHBhcmFtZXRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZVBhcmFtZXRlcihwYXJhbWV0ZXJJRDogc3RyaW5nKSA6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnLycgKyBwYXJhbWV0ZXJJRDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlUGFyYW1ldGVyQnlOYW1lKHBhcmFtZXRlck5hbWU6IHN0cmluZykgOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9uYW1lcy8nICsgcGFyYW1ldGVyTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmV0cmlldmVQYXJhbWV0ZXJCeVByZWZpeChwcmVmaXg6IHN0cmluZykgOiBPYnNlcnZhYmxlPFBhcmFtZXRlcltdPiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL25hbWVQcmVmaXgvJyArIHByZWZpeDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UGFyYW1ldGVyW10+KHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVBhcmFtZXRlcihwYXJhbWV0ZXI6IFBhcmFtZXRlcikgOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsICsgJy8nICsgcGFyYW1ldGVyLmlkO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh1cmwsIHBhcmFtZXRlcik7XG4gICAgfVxufSJdfQ==
49
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
50
+ type: Inject,
51
+ args: ['ebizRootURL']
52
+ }] }] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3BhcmFtZXRlci9wYXJhbWV0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBU25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFHSDtJQUFpRDtJQUY3RCxPQUFPLEdBQVcseUJBQXlCLENBQUM7SUFFdEQsWUFBc0IsSUFBZ0IsRUFBaUMsV0FBbUI7UUFBcEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFpQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUN0RixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzlDLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxhQUFxQjtRQUNoRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBWSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0scUJBQXFCLENBQUMsV0FBbUI7UUFDNUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVksR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFvQjtRQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxlQUFlLENBQUMsV0FBbUI7UUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLGFBQXFCO1FBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxNQUFjO1FBQzNDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxlQUFlLENBQUMsU0FBb0I7UUFDdkMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6QyxDQUFDO3dHQXhDUSxnQkFBZ0IsNENBR3VCLGFBQWE7NEdBSHBELGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUk0QyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gJy4vcGFyYW1ldGVyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlclNlcnZpY2Uge1xuICAgIHByb3RlY3RlZCBiYXNlVXJsOiBzdHJpbmcgPSAnL2ViaXovYXBpL3YxL3BhcmFtZXRlcnMnO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoJ2ViaXpSb290VVJMJykgcHJpdmF0ZSBlYml6Um9vdFVSTDogc3RyaW5nKSB7ICBcbiAgICAgICAgdGhpcy5iYXNlVXJsID0gZWJpelJvb3RVUkwgKyB0aGlzLmJhc2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIHJldHJpZXZlUGFyYW1ldGVyQnlOYW1lKHBhcmFtZXRlck5hbWU6IHN0cmluZykgOiBPYnNlcnZhYmxlPFBhcmFtZXRlcj4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9uYW1lcy8nICsgcGFyYW1ldGVyTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UGFyYW1ldGVyPih1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXRyaWV2ZVBhcmFtZXRlckJ5SUQocGFyYW1ldGVySUQ6IHN0cmluZykgOiBPYnNlcnZhYmxlPFBhcmFtZXRlcj4ge1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJsICsgJy8nICsgcGFyYW1ldGVySUQ7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFBhcmFtZXRlcj4odXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlUGFyYW1ldGVyKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmw7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxzdHJpbmc+KHVybCwgcGFyYW1ldGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlUGFyYW1ldGVyKHBhcmFtZXRlcklEOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvJyArIHBhcmFtZXRlcklEO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVQYXJhbWV0ZXJCeU5hbWUocGFyYW1ldGVyTmFtZTogc3RyaW5nKSA6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL25hbWVzLycgKyBwYXJhbWV0ZXJOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXRyaWV2ZVBhcmFtZXRlckJ5UHJlZml4KHByZWZpeDogc3RyaW5nKSA6IE9ic2VydmFibGU8UGFyYW1ldGVyW10+IHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvbmFtZVByZWZpeC8nICsgcHJlZml4O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQYXJhbWV0ZXJbXT4odXJsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUGFyYW1ldGVyKHBhcmFtZXRlcjogUGFyYW1ldGVyKSA6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnLycgKyBwYXJhbWV0ZXIuaWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHVybCwgcGFyYW1ldGVyKTtcbiAgICB9XG59Il19
@@ -1,21 +1,21 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/router";
4
- import * as i2 from "@angular/common/http";
4
+ import * as i2 from "./params-help.service";
5
5
  import * as i3 from "@angular/common";
6
6
  export class ParamsHelpButtonComponent {
7
7
  router;
8
- http;
8
+ helpService;
9
9
  helpURL = '';
10
10
  title = 'Click here for instructions or call (614) 466-0061';
11
11
  anchorClass = '';
12
- constructor(router, http) {
12
+ constructor(router, helpService) {
13
13
  this.router = router;
14
- this.http = http;
14
+ this.helpService = helpService;
15
15
  }
16
16
  ngOnInit() {
17
17
  const helpURLParamName = this.router.url.replace(new RegExp('/', 'g'), '.');
18
- this.http.get('/ebiz/api/v1/gateway/helpURLs/' + helpURLParamName, { responseType: 'text' }).subscribe({
18
+ this.helpService.retrieveHelpURL(helpURLParamName).subscribe({
19
19
  next: url => {
20
20
  if (url && url.length > 0) {
21
21
  this.helpURL = url;
@@ -28,15 +28,15 @@ export class ParamsHelpButtonComponent {
28
28
  }
29
29
  });
30
30
  }
31
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpButtonComponent, deps: [{ token: i1.Router }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
31
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpButtonComponent, deps: [{ token: i1.Router }, { token: i2.ParamsHelpService }], target: i0.ɵɵFactoryTarget.Component });
32
32
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ParamsHelpButtonComponent, selector: "oepa-params-help-button", inputs: { title: "title", anchorClass: "anchorClass" }, ngImport: i0, template: "<a *ngIf=\"helpURL\" [href]=\"helpURL\" [class]=\"anchorClass\" target=\"_blank\" [title]=\"title\">\n <i class=\"bi bi-question-circle\"></i>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpButtonComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{ selector: 'oepa-params-help-button', template: "<a *ngIf=\"helpURL\" [href]=\"helpURL\" [class]=\"anchorClass\" target=\"_blank\" [title]=\"title\">\n <i class=\"bi bi-question-circle\"></i>\n</a>\n" }]
37
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.HttpClient }], propDecorators: { title: [{
37
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.ParamsHelpService }], propDecorators: { title: [{
38
38
  type: Input
39
39
  }], anchorClass: [{
40
40
  type: Input
41
41
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWhlbHAtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGFyYW1zLWhlbHAtYnV0dG9uL3BhcmFtcy1oZWxwLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3BhcmFtcy1oZWxwLWJ1dHRvbi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3pELE1BQU0sT0FBTyx5QkFBeUI7SUFNaEI7SUFBd0I7SUFMckMsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUVuQixLQUFLLEdBQUcsb0RBQW9ELENBQUM7SUFDN0QsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUUxQixZQUFvQixNQUFjLEVBQVUsSUFBZ0I7UUFBeEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSSxDQUFDO0lBRWpFLFFBQVE7UUFDTixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDckcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNyQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO1lBQ0gsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxHQUFHLGdCQUFnQixHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNuRixDQUFDO1NBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzt3R0FwQlUseUJBQXlCOzRGQUF6Qix5QkFBeUIsdUhDVHRDLHlKQUdBOzs0RkRNYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UseUJBQXlCO29HQU8xQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtcGFyYW1zLWhlbHAtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhcmFtcy1oZWxwLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhcmFtcy1oZWxwLWJ1dHRvbi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGFyYW1zSGVscEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBoZWxwVVJMOiBzdHJpbmcgPSAnJztcblxuICBASW5wdXQoKSB0aXRsZSA9ICdDbGljayBoZXJlIGZvciBpbnN0cnVjdGlvbnMgb3IgY2FsbCAoNjE0KSA0NjYtMDA2MSc7XG4gIEBJbnB1dCgpIGFuY2hvckNsYXNzID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBoZWxwVVJMUGFyYW1OYW1lID0gdGhpcy5yb3V0ZXIudXJsLnJlcGxhY2UobmV3IFJlZ0V4cCgnLycsICdnJyksICcuJyk7XG4gICAgdGhpcy5odHRwLmdldCgnL2ViaXovYXBpL3YxL2dhdGV3YXkvaGVscFVSTHMvJyArIGhlbHBVUkxQYXJhbU5hbWUsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHVybCA9PiB7XG4gICAgICBpZiAodXJsICYmIHVybC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuaGVscFVSTCA9IHVybDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdIZWxwIFVSTCB3YXMgZW1wdHkgZm9yOiAnICsgaGVscFVSTFBhcmFtTmFtZSk7XG4gICAgICB9XG4gICAgfSwgZXJyb3I6IGVyciA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHJldHJpZXZpbmcgSGVscCBVUkwgZm9yOiAnICsgaGVscFVSTFBhcmFtTmFtZSArICcgLSAnICsgZXJyKTtcbiAgICB9fSk7XG4gIH1cblxufVxuIiwiPGEgKm5nSWY9XCJoZWxwVVJMXCIgW2hyZWZdPVwiaGVscFVSTFwiIFtjbGFzc109XCJhbmNob3JDbGFzc1wiIHRhcmdldD1cIl9ibGFua1wiIFt0aXRsZV09XCJ0aXRsZVwiPlxuICA8aSBjbGFzcz1cImJpIGJpLXF1ZXN0aW9uLWNpcmNsZVwiPjwvaT5cbjwvYT5cbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWhlbHAtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGFyYW1zLWhlbHAtYnV0dG9uL3BhcmFtcy1oZWxwLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3BhcmFtcy1oZWxwLWJ1dHRvbi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3pELE1BQU0sT0FBTyx5QkFBeUI7SUFNaEI7SUFBd0I7SUFMckMsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUVuQixLQUFLLEdBQUcsb0RBQW9ELENBQUM7SUFDN0QsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUUxQixZQUFvQixNQUFjLEVBQVUsV0FBOEI7UUFBdEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtJQUMxRSxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzRCxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixHQUFHLGdCQUFnQixDQUFDLENBQUM7Z0JBQzdELENBQUM7WUFDSCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEdBQUcsZ0JBQWdCLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ25GLENBQUM7U0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO3dHQXJCVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qix1SENUdEMseUpBR0E7OzRGRE1hLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7MkdBTzFCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGFyYW1zSGVscFNlcnZpY2UgfSBmcm9tICcuL3BhcmFtcy1oZWxwLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLXBhcmFtcy1oZWxwLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXJhbXMtaGVscC1idXR0b24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhcmFtc0hlbHBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgaGVscFVSTDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgdGl0bGUgPSAnQ2xpY2sgaGVyZSBmb3IgaW5zdHJ1Y3Rpb25zIG9yIGNhbGwgKDYxNCkgNDY2LTAwNjEnO1xuICBASW5wdXQoKSBhbmNob3JDbGFzcyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgaGVscFNlcnZpY2U6IFBhcmFtc0hlbHBTZXJ2aWNlKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgaGVscFVSTFBhcmFtTmFtZSA9IHRoaXMucm91dGVyLnVybC5yZXBsYWNlKG5ldyBSZWdFeHAoJy8nLCAnZycpLCAnLicpO1xuICAgIHRoaXMuaGVscFNlcnZpY2UucmV0cmlldmVIZWxwVVJMKGhlbHBVUkxQYXJhbU5hbWUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiB1cmwgPT4ge1xuICAgICAgaWYgKHVybCAmJiB1cmwubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmhlbHBVUkwgPSB1cmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZygnSGVscCBVUkwgd2FzIGVtcHR5IGZvcjogJyArIGhlbHBVUkxQYXJhbU5hbWUpO1xuICAgICAgfVxuICAgIH0sIGVycm9yOiBlcnIgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ0ZhaWxlZCByZXRyaWV2aW5nIEhlbHAgVVJMIGZvcjogJyArIGhlbHBVUkxQYXJhbU5hbWUgKyAnIC0gJyArIGVycik7XG4gICAgfX0pO1xuICB9XG5cbn1cbiIsIjxhICpuZ0lmPVwiaGVscFVSTFwiIFtocmVmXT1cImhlbHBVUkxcIiBbY2xhc3NdPVwiYW5jaG9yQ2xhc3NcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbdGl0bGVdPVwidGl0bGVcIj5cbiAgPGkgY2xhc3M9XCJiaSBiaS1xdWVzdGlvbi1jaXJjbGVcIj48L2k+XG48L2E+XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common/http";
4
+ export class ParamsHelpService {
5
+ http;
6
+ baseURL = '/ebiz/api/v1/gateway/helpURLs/';
7
+ constructor(http, ebizRootURL) {
8
+ this.http = http;
9
+ this.baseURL = ebizRootURL + this.baseURL;
10
+ }
11
+ retrieveHelpURL(helpURLParamName) {
12
+ return this.http.get(this.baseURL + helpURLParamName, { responseType: 'text' });
13
+ }
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
15
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpService, providedIn: 'root' });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParamsHelpService, decorators: [{
18
+ type: Injectable,
19
+ args: [{
20
+ providedIn: 'root'
21
+ }]
22
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
23
+ type: Inject,
24
+ args: ['ebizRootURL']
25
+ }] }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1zLWhlbHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGFyYW1zLWhlbHAtYnV0dG9uL3BhcmFtcy1oZWxwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU1uRCxNQUFNLE9BQU8saUJBQWlCO0lBR1I7SUFGWixPQUFPLEdBQUcsZ0NBQWdDLENBQUM7SUFFbkQsWUFBb0IsSUFBZ0IsRUFBeUIsV0FBbUI7UUFBNUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzVDLENBQUM7SUFFTSxlQUFlLENBQUMsZ0JBQXdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7d0dBVFUsaUJBQWlCLDRDQUdrQixhQUFhOzRHQUhoRCxpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSXdDLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXJhbXNIZWxwU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBiYXNlVVJMID0gJy9lYml6L2FwaS92MS9nYXRld2F5L2hlbHBVUkxzLyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnZWJpelJvb3RVUkwnKSBlYml6Um9vdFVSTDogc3RyaW5nKSB7ICAgICBcclxuICAgIHRoaXMuYmFzZVVSTCA9IGViaXpSb290VVJMICsgdGhpcy5iYXNlVVJMO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJldHJpZXZlSGVscFVSTChoZWxwVVJMUGFyYW1OYW1lOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuYmFzZVVSTCArIGhlbHBVUkxQYXJhbU5hbWUsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,11 +1,14 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Inject, Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common/http";
4
4
  export class OepaPinService {
5
5
  http;
6
+ ebizRootURL;
6
7
  pinsUrl = '/ebiz/api/v1/pins';
7
- constructor(http) {
8
+ constructor(http, ebizRootURL) {
8
9
  this.http = http;
10
+ this.ebizRootURL = ebizRootURL;
11
+ this.pinsUrl = ebizRootURL + this.pinsUrl;
9
12
  }
10
13
  /**
11
14
  * Retrieve an attestation by id.
@@ -42,7 +45,7 @@ export class OepaPinService {
42
45
  retrievePin(userID) {
43
46
  return this.http.get(this.pinsUrl + '/' + userID);
44
47
  }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
48
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, deps: [{ token: i1.HttpClient }, { token: 'ebizRootURL' }], target: i0.ɵɵFactoryTarget.Injectable });
46
49
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, providedIn: 'root' });
47
50
  }
48
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OepaPinService, decorators: [{
@@ -50,5 +53,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
50
53
  args: [{
51
54
  providedIn: 'root'
52
55
  }]
53
- }], ctorParameters: () => [{ type: i1.HttpClient }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1waW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGluLW1vZGFsL29lcGEtcGluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBWTNDLE1BQU0sT0FBTyxjQUFjO0lBR0w7SUFGWixPQUFPLEdBQUcsbUJBQW1CLENBQUM7SUFFdEMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCLENBQUMsYUFBcUI7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBa0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsR0FBRyxhQUFhLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksbUJBQW1CLENBQUMsZUFBdUI7UUFDaEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBa0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksd0JBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXVCLElBQUksQ0FBQyxPQUFPLEdBQUcsbUJBQW1CLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLEdBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBVSxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxNQUFjO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQzt3R0E1Q1UsY0FBYzs0R0FBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBPZXBhQXR0ZXN0YXRpb24gfSBmcm9tICcuL29lcGEtYXR0ZXN0YXRpb24nO1xuaW1wb3J0IHsgT2VwYVNlY3VyaXR5UXVlc3Rpb24gfSBmcm9tICcuL29lcGEtc2VjdXJpdHktcXVlc3Rpb24nO1xuaW1wb3J0IHsgT2VwYVBpbiB9IGZyb20gJy4vb2VwYS1waW4nO1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9lcGFQaW5TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwaW5zVXJsID0gJy9lYml6L2FwaS92MS9waW5zJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbiBhdHRlc3RhdGlvbiBieSBpZC5cbiAgICogQHBhcmFtIGF0dGVzdGF0aW9uSURcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUF0dGVzdGF0aW9uQnlJRChhdHRlc3RhdGlvbklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFBdHRlc3RhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFBdHRlc3RhdGlvbj4odGhpcy5waW5zVXJsICsgJy9hdHRlc3RhdGlvbklkLycgKyBhdHRlc3RhdGlvbklEKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbiBhdHRlc3RhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuXG4gICAqIEBwYXJhbSBhdHRlc3RhdGlvblR5cGVcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZUF0dGVzdGF0aW9uKGF0dGVzdGF0aW9uVHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxPZXBhQXR0ZXN0YXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhQXR0ZXN0YXRpb24+KHRoaXMucGluc1VybCArICcvYXR0ZXN0YXRpb24vJyArIGF0dGVzdGF0aW9uVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSByYW5kb20gc2VjdXJpdHkgcXVlc3Rpb24gZm9yIHRoZSBjdXJyZW50IHVzZXIuXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVTZWN1cml0eVF1ZXN0aW9uKCk6IE9ic2VydmFibGU8T2VwYVNlY3VyaXR5UXVlc3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhU2VjdXJpdHlRdWVzdGlvbj4odGhpcy5waW5zVXJsICsgJy9zZWN1cml0eVF1ZXN0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIHBpbiBlbnRlcmVkIGJ5IGEgdXNlci5cbiAgICogQHBhcmFtIHBpblxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKHBpbjogT2VwYVBpbik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxib29sZWFuPih0aGlzLnBpbnNVcmwgKyAnL3ZhbGlkYXRlJywgcGluKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcbiAgICogQHBhcmFtIHVzZXJJRCBSZXRyaWV2ZSB0aGUgUGluIGZvciB0aGUgc3BlY2lmaWVkIHVzZXJJRFxuICAgKiBAcmV0dXJucyBPZXBhUGluXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVQaW4odXNlcklEOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFQaW4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPZXBhUGluPih0aGlzLnBpbnNVcmwgKyAnLycgKyB1c2VySUQpO1xuICB9XG5cbn1cbiJdfQ==
56
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
57
+ type: Inject,
58
+ args: ['ebizRootURL']
59
+ }] }] });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1waW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGluLW1vZGFsL29lcGEtcGluLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVluRCxNQUFNLE9BQU8sY0FBYztJQUdMO0lBQWlEO0lBRjdELE9BQU8sR0FBRyxtQkFBbUIsQ0FBQztJQUV0QyxZQUFvQixJQUFnQixFQUFpQyxXQUFtQjtRQUFwRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQWlDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ3RGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLHVCQUF1QixDQUFDLGFBQXFCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtCLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG1CQUFtQixDQUFDLGVBQXVCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWtCLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7T0FFRztJQUNJLHdCQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUF1QixJQUFJLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxHQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsTUFBYztRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7d0dBN0NVLGNBQWMsNENBR3FCLGFBQWE7NEdBSGhELGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSXdDLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgT2VwYUF0dGVzdGF0aW9uIH0gZnJvbSAnLi9vZXBhLWF0dGVzdGF0aW9uJztcbmltcG9ydCB7IE9lcGFTZWN1cml0eVF1ZXN0aW9uIH0gZnJvbSAnLi9vZXBhLXNlY3VyaXR5LXF1ZXN0aW9uJztcbmltcG9ydCB7IE9lcGFQaW4gfSBmcm9tICcuL29lcGEtcGluJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPZXBhUGluU2VydmljZSB7XG4gIHByaXZhdGUgcGluc1VybCA9ICcvZWJpei9hcGkvdjEvcGlucyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KCdlYml6Um9vdFVSTCcpIHByaXZhdGUgZWJpelJvb3RVUkw6IHN0cmluZykge1xuICAgIHRoaXMucGluc1VybCA9IGViaXpSb290VVJMICsgdGhpcy5waW5zVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGF0dGVzdGF0aW9uIGJ5IGlkLlxuICAgKiBAcGFyYW0gYXR0ZXN0YXRpb25JRFxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQXR0ZXN0YXRpb25CeUlEKGF0dGVzdGF0aW9uSUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYUF0dGVzdGF0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T2VwYUF0dGVzdGF0aW9uPih0aGlzLnBpbnNVcmwgKyAnL2F0dGVzdGF0aW9uSWQvJyArIGF0dGVzdGF0aW9uSUQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGFuIGF0dGVzdGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgdHlwZS5cbiAgICogQHBhcmFtIGF0dGVzdGF0aW9uVHlwZVxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlQXR0ZXN0YXRpb24oYXR0ZXN0YXRpb25UeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9lcGFBdHRlc3RhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFBdHRlc3RhdGlvbj4odGhpcy5waW5zVXJsICsgJy9hdHRlc3RhdGlvbi8nICsgYXR0ZXN0YXRpb25UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhIHJhbmRvbSBzZWN1cml0eSBxdWVzdGlvbiBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZVNlY3VyaXR5UXVlc3Rpb24oKTogT2JzZXJ2YWJsZTxPZXBhU2VjdXJpdHlRdWVzdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFTZWN1cml0eVF1ZXN0aW9uPih0aGlzLnBpbnNVcmwgKyAnL3NlY3VyaXR5UXVlc3Rpb24nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgcGluIGVudGVyZWQgYnkgYSB1c2VyLlxuICAgKiBAcGFyYW0gcGluXG4gICAqL1xuICBwdWJsaWMgdmFsaWRhdGUocGluOiBPZXBhUGluKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KHRoaXMucGluc1VybCArICcvdmFsaWRhdGUnLCBwaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIFxuICAgKiBAcGFyYW0gdXNlcklEIFJldHJpZXZlIHRoZSBQaW4gZm9yIHRoZSBzcGVjaWZpZWQgdXNlcklEXG4gICAqIEByZXR1cm5zIE9lcGFQaW5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZVBpbih1c2VySUQ6IHN0cmluZyk6IE9ic2VydmFibGU8T2VwYVBpbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9lcGFQaW4+KHRoaXMucGluc1VybCArICcvJyArIHVzZXJJRCk7XG4gIH1cblxufVxuIl19