taxtank-core 0.33.116 → 0.33.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/lib/db/Models/setup-item.mjs +1 -1
- package/esm2022/src/lib/services/account-setup/account-setup.service.mjs +40 -32
- package/fesm2022/taxtank-core.mjs +44 -37
- package/fesm2022/taxtank-core.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/db/Models/setup-item.d.ts +2 -0
- package/src/lib/services/account-setup/account-setup.service.d.ts +4 -2
@@ -1,4 +1,4 @@
|
|
1
1
|
import { AbstractModel } from './abstract-model';
|
2
2
|
export class SetupItem extends AbstractModel {
|
3
3
|
}
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9kYi9Nb2RlbHMvc2V0dXAtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxPQUFPLFNBQVUsU0FBUSxhQUFhO0NBTzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2V0dXBJdGVtVHlwZUVudW0gfSBmcm9tICcuLi9FbnVtcy9zZXR1cC1pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBVc2VyUm9sZXNFbnVtIH0gZnJvbSAndGF4dGFuay1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnLi9hYnN0cmFjdC1tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBTZXR1cEl0ZW0gZXh0ZW5kcyBBYnN0cmFjdE1vZGVsIHtcblx0dHlwZT86IFNldHVwSXRlbVR5cGVFbnVtO1xuXHR0aXRsZT86IHN0cmluZztcblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdHVybD86IHN0cmluZztcblx0dXJsRnJhZ21lbnQ/OiBzdHJpbmc7XG5cdHJvbGVzPzogVXNlclJvbGVzRW51bTtcbn1cbiJdfQ==
|
@@ -4,6 +4,7 @@ import { combineLatest, of } from 'rxjs';
|
|
4
4
|
import { map, mergeMap } from 'rxjs/operators';
|
5
5
|
import intersection from 'lodash/intersection';
|
6
6
|
import { UserRolesEnum } from 'taxtank-core/common';
|
7
|
+
import { SetupItemTypeEnum } from '../../db/Enums/setup-item-type.enum';
|
7
8
|
import * as i0 from "@angular/core";
|
8
9
|
import * as i1 from "../http/setup-item/setup-item.service";
|
9
10
|
import * as i2 from "../http";
|
@@ -32,7 +33,7 @@ export class AccountSetupService {
|
|
32
33
|
/**
|
33
34
|
* Get list of account setup items for current user/firm
|
34
35
|
*/
|
35
|
-
get() {
|
36
|
+
get(type) {
|
36
37
|
return combineLatest([
|
37
38
|
this.setupItemService.get(),
|
38
39
|
this.userService.getFirst()
|
@@ -40,10 +41,10 @@ export class AccountSetupService {
|
|
40
41
|
.pipe(mergeMap(([items, user]) => {
|
41
42
|
this.items = items;
|
42
43
|
this.user = user;
|
43
|
-
return this.
|
44
|
+
return type === SetupItemTypeEnum.CLIENT ? this.getClientItems$() : this.getFirmItems$();
|
44
45
|
}));
|
45
46
|
}
|
46
|
-
|
47
|
+
getClientItems$() {
|
47
48
|
const batch = [];
|
48
49
|
if (this.user.hasRoles(UserRolesEnum.WORK_TANK)) {
|
49
50
|
batch.push(
|
@@ -72,42 +73,49 @@ export class AccountSetupService {
|
|
72
73
|
// Allocation item is completed when user added at least one transaction allocation
|
73
74
|
batch.push(this.setItemStatus(this.items.findBy('isTransactionAllocate', true), this.transactionAllocationService.get()));
|
74
75
|
}
|
75
|
-
if (this.user.hasRoles([UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR])) {
|
76
|
-
batch.push(
|
77
|
-
// Firm Details item is completed when user filled some general information
|
78
|
-
this.firmService.get().pipe(map((firm) => {
|
79
|
-
const item = this.items.findBy('isFirmDetails', true);
|
80
|
-
if (firm.address || firm.phone || firm.file || firm.shortName) {
|
81
|
-
item.isCompleted = true;
|
82
|
-
}
|
83
|
-
return item;
|
84
|
-
})));
|
85
|
-
batch.push(
|
86
|
-
// Invite team item is completed when firm has employees except firm owner or firm has invited employees.
|
87
|
-
this.setItemStatus(this.items.findBy('isInviteTeam', true), combineLatest([
|
88
|
-
this.employeeService.getArray(),
|
89
|
-
this.employeeInviteService.getArray()
|
90
|
-
]).pipe(map(([employees, invites]) => {
|
91
|
-
// we always have at least 1 employee (firm owner), so we should check other employees except firm owner
|
92
|
-
if (employees.length) {
|
93
|
-
employees.splice(0, 1);
|
94
|
-
}
|
95
|
-
return [...employees, ...invites];
|
96
|
-
}))));
|
97
|
-
batch.push(
|
98
|
-
// Invite clients item is completed when firm has clients or firm has invited clients.
|
99
|
-
this.setItemStatus(this.items.findBy('isInviteClients', true), combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()])
|
100
|
-
.pipe(map(([movements, invites]) => [...movements.toArray(), ...invites.toArray()]))));
|
101
|
-
}
|
102
76
|
return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items)));
|
103
77
|
}
|
78
|
+
getFirmItems$() {
|
79
|
+
const batch = [];
|
80
|
+
batch.push(
|
81
|
+
// Firm Details item is completed when user filled some general information
|
82
|
+
this.firmService.get().pipe(map((firm) => {
|
83
|
+
const item = this.items.findBy('isFirmDetails', true);
|
84
|
+
if (firm.address || firm.phone || firm.file || firm.shortName) {
|
85
|
+
item.isCompleted = true;
|
86
|
+
}
|
87
|
+
return item;
|
88
|
+
})));
|
89
|
+
batch.push(
|
90
|
+
// Invite team item is completed when firm has employees except firm owner or firm has invited employees.
|
91
|
+
this.setItemStatus(this.items.findBy('isInviteTeam', true), combineLatest([
|
92
|
+
this.employeeService.getArray(),
|
93
|
+
this.employeeInviteService.getArray()
|
94
|
+
]).pipe(map(([employees, invites]) => {
|
95
|
+
// we always have at least 1 employee (firm owner), so we should check other employees except firm owner
|
96
|
+
if (employees.length) {
|
97
|
+
employees.splice(0, 1);
|
98
|
+
}
|
99
|
+
return [...employees, ...invites];
|
100
|
+
}))));
|
101
|
+
batch.push(
|
102
|
+
// Invite clients item is completed when firm has clients or firm has invited clients.
|
103
|
+
this.setItemStatus(this.items.findBy('isInviteClients', true), combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()])
|
104
|
+
.pipe(map(([movements, invites]) => [...movements.toArray(), ...invites.toArray()]))));
|
105
|
+
return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items).sortBy('id', 'asc')));
|
106
|
+
}
|
104
107
|
/**
|
105
108
|
* Check and update isCompleted flag for passed item
|
106
109
|
*/
|
107
110
|
setItemStatus(item, request) {
|
108
111
|
return request.pipe(map((result) => {
|
109
112
|
const isSkipped = !!this.user.blacklistSetupItems.find((skippedItem) => skippedItem.id === item.id);
|
110
|
-
|
113
|
+
if (result.length || isSkipped) {
|
114
|
+
item.isCompleted = true;
|
115
|
+
}
|
116
|
+
else {
|
117
|
+
item.isCompleted = false;
|
118
|
+
}
|
111
119
|
return item;
|
112
120
|
}));
|
113
121
|
}
|
@@ -157,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
157
165
|
providedIn: 'root'
|
158
166
|
}]
|
159
167
|
}], ctorParameters: () => [{ type: i1.SetupItemService }, { type: i2.PropertyService }, { type: i2.IncomeSourceService }, { type: i2.BankAccountService }, { type: i2.TransactionAllocationService }, { type: i2.VehicleClaimService }, { type: i2.TransactionService }, { type: i2.SoleBusinessService }, { type: i2.HoldingTradeService }, { type: i2.UserService }, { type: i2.ClientMovementService }, { type: i2.ClientInviteService }, { type: i2.EmployeeService }, { type: i2.EmployeeInviteService }, { type: i2.FirmService }] });
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZXR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFtQjNDLE9BQU8sRUFDTCwwQkFBMEIsRUFFMUIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBYyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxZQUFZLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBS3BEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFDVSxnQkFBa0MsRUFDbEMsZUFBZ0MsRUFDaEMsbUJBQXdDLEVBQ3hDLG1CQUF1QyxFQUN2Qyw0QkFBMEQsRUFDMUQsbUJBQXdDLEVBQ3hDLGtCQUFzQyxFQUN0QyxtQkFBd0MsRUFDeEMsY0FBbUMsRUFDbkMsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLG1CQUF3QyxFQUN4QyxlQUFnQyxFQUNoQyxxQkFBNEMsRUFDNUMsV0FBd0I7UUFkeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsd0JBQW1CLEdBQW5CLG1CQUFt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QyxJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQzdFLFFBQVEsQ0FBQyxDQUFDLFlBQW1DLEVBQUUsRUFBRTtZQUMvQyxJQUFJLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLE1BQU0sRUFBRTtnQkFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEVBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FDcEMsQ0FBQzthQUNIO1lBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLGNBQWMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdkcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDekQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakI7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUNwQyxDQUFDO0lBQ0osQ0FBQzsrR0ExTlUsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY291bnRTZXR1cEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudC1zZXR1cC9hY2NvdW50LXNldHVwLWl0ZW0nO1xuaW1wb3J0IHtcbiAgQmFua0FjY291bnRTZXJ2aWNlLFxuICBDbGllbnRJbnZpdGVTZXJ2aWNlLFxuICBDbGllbnRNb3ZlbWVudFNlcnZpY2UsXG4gIEVtcGxveWVlSW52aXRlU2VydmljZSxcbiAgRW1wbG95ZWVTZXJ2aWNlLFxuICBGaXJtU2VydmljZSxcbiAgSG9sZGluZ1RyYWRlU2VydmljZSxcbiAgSW5jb21lU291cmNlU2VydmljZSxcbiAgUHJvcGVydHlTZXJ2aWNlLFxuICBTb2xlQnVzaW5lc3NTZXJ2aWNlLFxuICBUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlLFxuICBUcmFuc2FjdGlvblNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBWZWhpY2xlQ2xhaW1TZXJ2aWNlXG59IGZyb20gJy4uL2h0dHAnO1xuaW1wb3J0IHsgRmlybSwgSW5jb21lU291cmNlLCBUcmFuc2FjdGlvbiwgVXNlciB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbiwgQ2xpZW50SW52aXRlQ29sbGVjdGlvbixcbiAgQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uLFxuICBJbmNvbWVTb3VyY2VDb2xsZWN0aW9uLFxuICBUcmFuc2FjdGlvbkNvbGxlY3Rpb25cbn0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgaW50ZXJzZWN0aW9uIGZyb20gJ2xvZGFzaC9pbnRlcnNlY3Rpb24nO1xuaW1wb3J0IHsgVXNlclJvbGVzRW51bSB9IGZyb20gJ3RheHRhbmstY29yZS9jb21tb24nO1xuaW1wb3J0IHsgU2V0dXBJdGVtVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy9zZXR1cC1pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTZXR1cEl0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vaHR0cC9zZXR1cC1pdGVtL3NldHVwLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBFbXBsb3llZUludml0ZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscyc7XG5cbi8qKlxuICogU2VydmljZSBoYW5kbGluZyB1c2VyJ3MgYWNjb3VudCBzZXR1cCBwcm9jZXNzLlxuICogQ2hlY2tzIHJlcXVpcmVkIHN0ZXBzIGFuZCB0aGVpciBjb21wbGV0aW9uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFjY291bnRTZXR1cFNlcnZpY2Uge1xuICBpdGVtczogQWNjb3VudFNldHVwSXRlbUNvbGxlY3Rpb247XG4gIHVzZXI6IFVzZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR1cEl0ZW1TZXJ2aWNlOiBTZXR1cEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvcGVydHlTZXJ2aWNlOiBQcm9wZXJ0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmNvbWVTb3VyY2VTZXJ2aWNlOiBJbmNvbWVTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFua0FjY291bnRzU2VydmljZTogQmFua0FjY291bnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZTogVHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHZlaGljbGVDbGFpbVNlcnZpY2U6IFZlaGljbGVDbGFpbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHNvbGVCdXNpbmVzc1NlcnZpY2U6IFNvbGVCdXNpbmVzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBob2xkaW5nU2VydmljZTogSG9sZGluZ1RyYWRlU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGNsaWVudE1vdmVtZW50U2VydmljZTogQ2xpZW50TW92ZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpZW50SW52aXRlU2VydmljZTogQ2xpZW50SW52aXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVtcGxveWVlU2VydmljZTogRW1wbG95ZWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wbG95ZWVJbnZpdGVTZXJ2aWNlOiBFbXBsb3llZUludml0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaXJtU2VydmljZTogRmlybVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgYWNjb3VudCBzZXR1cCBpdGVtcyBmb3IgY3VycmVudCB1c2VyL2Zpcm1cbiAgICovXG4gIGdldCgpOiBPYnNlcnZhYmxlPEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zZXR1cEl0ZW1TZXJ2aWNlLmdldCgpLFxuICAgICAgdGhpcy51c2VyU2VydmljZS5nZXRGaXJzdCgpXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoW2l0ZW1zLCB1c2VyXTogW0FjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uLCBVc2VyXSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbXMkKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0SXRlbXMkKCk6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbUNvbGxlY3Rpb24+IHtcbiAgICBjb25zdCBiYXRjaDogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPltdID0gW107XG5cbiAgICBpZiAodGhpcy51c2VyLmhhc1JvbGVzKFVzZXJSb2xlc0VudW0uV09SS19UQU5LKSkge1xuICAgICAgYmF0Y2gucHVzaChcbiAgICAgICAgLy8gU2FsYXJ5IGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBzYWxhcnkgaW5jb21lIHNvdXJjZVxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzU2FsYXJ5JywgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5nZXRJbmNvbWVTb3VyY2VzKHRydWUpXG4gICAgICAgICksXG4gICAgICAgIC8vIE90aGVyIGluY29tZSBpcyBhIHBhcnQgb2Ygd29yayB0YW5rLCBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSBvdGhlciBpbmNvbWUgc291cmNlXG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNPdGhlckluY29tZScsIHRydWUpLFxuICAgICAgICAgIHRoaXMuZ2V0SW5jb21lU291cmNlcygpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVudGFsIGluY29tZSBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIHByb3BlcnR5XG4gICAgaWYgKHRoaXMudXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLlBST1BFUlRZX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzUHJvcGVydHknLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLnByb3BlcnR5U2VydmljZS5nZXRBcnJheSgpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gU29sZSBidXNpbmVzcyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIGJ1c2luZXNzXG4gICAgaWYgKHRoaXMudXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLlNPTEVfVEFOSykpIHtcbiAgICAgIGJhdGNoLnB1c2goXG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNTb2xlQnVzaW5lc3MnLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLnNvbGVCdXNpbmVzc1NlcnZpY2UuZ2V0QXJyYXkoKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGhvbGRpbmdzIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgaG9sZGluZ1xuICAgIGlmICh0aGlzLnVzZXIuaGFzUm9sZXMoVXNlclJvbGVzRW51bS5IT0xESU5HX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzSG9sZGluZ3MnLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLmhvbGRpbmdTZXJ2aWNlLmdldEFycmF5KClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VyLmhhc1JvbGVzKFtVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5QUk9QRVJUWV9UQU5LLCBVc2VyUm9sZXNFbnVtLlNPTEVfVEFOS10pKSB7XG4gICAgICAvLyBCYW5rIGZlZWRzIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgYmFuayBhY2NvdW50IChiYXNpcSBvciBtYW51YWwpXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuZ2V0QmFua0ZlZWRzSXRlbSgpKTtcblxuICAgICAgLy8gTG9nYm9vayBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgaGFzIGF0IGxlYXN0IG9uZSB2ZWhpY2xlIGNsYWltIHdpdGggYW55IG1ldGhvZCAoa21zIG9yIGxvZ2Jvb2spXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuZ2V0TG9nYm9va0l0ZW0oKSk7XG5cbiAgICAgIC8vIEFsbG9jYXRpb24gaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiBhbGxvY2F0aW9uXG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzVHJhbnNhY3Rpb25BbGxvY2F0ZScsIHRydWUpLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZS5nZXQoKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnVzZXIuaGFzUm9sZXMoW1VzZXJSb2xlc0VudW0uQUNDT1VOVEFOVCwgVXNlclJvbGVzRW51bS5BRFZJU09SXSkpIHtcbiAgICAgIGJhdGNoLnB1c2goXG4gICAgICAgIC8vIEZpcm0gRGV0YWlscyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgZmlsbGVkIHNvbWUgZ2VuZXJhbCBpbmZvcm1hdGlvblxuICAgICAgICB0aGlzLmZpcm1TZXJ2aWNlLmdldCgpLnBpcGUobWFwKChmaXJtOiBGaXJtKSA9PiB7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXMuZmluZEJ5KCdpc0Zpcm1EZXRhaWxzJywgdHJ1ZSk7XG4gICAgICAgICAgaWYgKGZpcm0uYWRkcmVzcyB8fCBmaXJtLnBob25lIHx8IGZpcm0uZmlsZSB8fCBmaXJtLnNob3J0TmFtZSkge1xuICAgICAgICAgICAgaXRlbS5pc0NvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pKVxuICAgICAgKTtcblxuICAgICAgYmF0Y2gucHVzaChcbiAgICAgICAgLy8gSW52aXRlIHRlYW0gaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiBmaXJtIGhhcyBlbXBsb3llZXMgZXhjZXB0IGZpcm0gb3duZXIgb3IgZmlybSBoYXMgaW52aXRlZCBlbXBsb3llZXMuXG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNJbnZpdGVUZWFtJywgdHJ1ZSksXG4gICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLmVtcGxveWVlU2VydmljZS5nZXRBcnJheSgpLFxuICAgICAgICAgICAgdGhpcy5lbXBsb3llZUludml0ZVNlcnZpY2UuZ2V0QXJyYXkoKVxuICAgICAgICAgIF0pLnBpcGUobWFwKChbZW1wbG95ZWVzLCBpbnZpdGVzXTogW1VzZXJbXSwgRW1wbG95ZWVJbnZpdGVbXV0pID0+IHtcbiAgICAgICAgICAgIC8vIHdlIGFsd2F5cyBoYXZlIGF0IGxlYXN0IDEgZW1wbG95ZWUgKGZpcm0gb3duZXIpLCBzbyB3ZSBzaG91bGQgY2hlY2sgb3RoZXIgZW1wbG95ZWVzIGV4Y2VwdCBmaXJtIG93bmVyXG4gICAgICAgICAgICBpZiAoZW1wbG95ZWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBlbXBsb3llZXMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gWy4uLmVtcGxveWVlcywgLi4uaW52aXRlc107XG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgIClcblxuICAgICAgYmF0Y2gucHVzaChcbiAgICAgICAgLy8gSW52aXRlIGNsaWVudHMgaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiBmaXJtIGhhcyBjbGllbnRzIG9yIGZpcm0gaGFzIGludml0ZWQgY2xpZW50cy5cbiAgICAgICAgdGhpcy5zZXRJdGVtU3RhdHVzKFxuICAgICAgICAgIHRoaXMuaXRlbXMuZmluZEJ5KCdpc0ludml0ZUNsaWVudHMnLCB0cnVlKSxcbiAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmNsaWVudE1vdmVtZW50U2VydmljZS5nZXRBY3RpdmUoKSwgdGhpcy5jbGllbnRJbnZpdGVTZXJ2aWNlLmdldCgpXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBtYXAoKFttb3ZlbWVudHMsIGludml0ZXNdOiBbQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uLCBDbGllbnRJbnZpdGVDb2xsZWN0aW9uXSkgPT4gWy4uLm1vdmVtZW50cy50b0FycmF5KCksIC4uLmludml0ZXMudG9BcnJheSgpXSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGJhdGNoKS5waXBlKG1hcCgoaXRlbXM6IEFjY291bnRTZXR1cEl0ZW1bXSkgPT4gbmV3IEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uKGl0ZW1zKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGFuZCB1cGRhdGUgaXNDb21wbGV0ZWQgZmxhZyBmb3IgcGFzc2VkIGl0ZW1cbiAgICovXG4gIHByaXZhdGUgc2V0SXRlbVN0YXR1cyhpdGVtOiBBY2NvdW50U2V0dXBJdGVtLCByZXF1ZXN0OiBPYnNlcnZhYmxlPG9iamVjdFtdPik6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT4ge1xuICAgIHJldHVybiByZXF1ZXN0LnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDogb2JqZWN0W10pOiBBY2NvdW50U2V0dXBJdGVtID0+IHtcbiAgICAgICAgY29uc3QgaXNTa2lwcGVkID0gISF0aGlzLnVzZXIuYmxhY2tsaXN0U2V0dXBJdGVtcy5maW5kKChza2lwcGVkSXRlbTogQWNjb3VudFNldHVwSXRlbSkgPT4gc2tpcHBlZEl0ZW0uaWQgPT09IGl0ZW0uaWQpO1xuXG4gICAgICAgIGl0ZW0uaXNDb21wbGV0ZWQgPSAhIShyZXN1bHQubGVuZ3RoIHx8IGlzU2tpcHBlZCk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gQWxleDogd29yayB3aXRoIGNvbGxlY3Rpb24gd2hlbiBzZXJ2aWNlcyByZWZhY3RvcmVkXG4gICAqIEBUT0RPIFZpazogd2FpdGluZyBmb3IgaW5jb21lIHNvdXJjZXMgcmVmYWN0b3JpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0SW5jb21lU291cmNlcyhpc1NhbGFyeSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJbmNvbWVTb3VyY2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmluY29tZVNvdXJjZVNlcnZpY2UuZ2V0KCkucGlwZShcbiAgICAgIG1hcCgoaW5jb21lU291cmNlczogSW5jb21lU291cmNlW10pOiBJbmNvbWVTb3VyY2VbXSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb246IEluY29tZVNvdXJjZUNvbGxlY3Rpb24gPSBuZXcgSW5jb21lU291cmNlQ29sbGVjdGlvbihpbmNvbWVTb3VyY2VzKTtcbiAgICAgICAgaWYgKGlzU2FsYXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0U2FsYXJ5KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5pdGVtcy5maWx0ZXIoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKSA9PiBpbmNvbWVTb3VyY2UuaXNPdGhlckluY29tZSgpKTtcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgbG9nYm9vayBpdGVtIHdoZW4gdXNlciBoYXMgYXQgbGVhc3QgMSB2ZWhpY2xlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldExvZ2Jvb2tJdGVtKCk6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIEBUT0RPIEFsZXg6IHJlbW92ZSBtYXAgd2hlbiBzZXJ2aWNlcyBzdGFydCB3b3JrIHdpdGggY29sbGVjdGlvbnNcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pID0+IG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24odHJhbnNhY3Rpb25zKSksXG4gICAgICAgIG1lcmdlTWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2FjdGlvbnMuZ2V0VmVoaWNsZVRyYW5zYWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzV29ya0xvZ2Jvb2snLCB0cnVlKSxcbiAgICAgICAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1TZXJ2aWNlLmdldEFycmF5KClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGJhbmsgZmVlZHMgaXRlbSB3aGVuIHVzZXIgaGFzIG9ubHkgaG9sZGluZyB0YW5rXG4gICAqL1xuICBwcml2YXRlIGdldEJhbmtGZWVkc0l0ZW0oKTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPiB7XG4gICAgY29uc3QgYmFua0ZlZWRzUm9sZXMgPSBbVXNlclJvbGVzRW51bS5QUk9QRVJUWV9UQU5LLCBVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5TT0xFX1RBTktdO1xuXG4gICAgaWYgKCFpbnRlcnNlY3Rpb24oYmFua0ZlZWRzUm9sZXMsIHRoaXMudXNlci5yb2xlcykubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgIHRoaXMuaXRlbXMuZmluZEJ5KCdpc0JhbmtGZWVkcycsIHRydWUpLFxuICAgICAgdGhpcy5iYW5rQWNjb3VudHNTZXJ2aWNlLmdldEFycmF5KClcbiAgICApO1xuICB9XG59XG4iXX0=
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1zZXR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2FjY291bnQtc2V0dXAvYWNjb3VudC1zZXR1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFtQjNDLE9BQU8sRUFDTCwwQkFBMEIsRUFHMUIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBYyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxZQUFZLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7O0FBS3hFOzs7R0FHRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFDVSxnQkFBa0MsRUFDbEMsZUFBZ0MsRUFDaEMsbUJBQXdDLEVBQ3hDLG1CQUF1QyxFQUN2Qyw0QkFBMEQsRUFDMUQsbUJBQXdDLEVBQ3hDLGtCQUFzQyxFQUN0QyxtQkFBd0MsRUFDeEMsY0FBbUMsRUFDbkMsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLG1CQUF3QyxFQUN4QyxlQUFnQyxFQUNoQyxxQkFBNEMsRUFDNUMsV0FBd0I7UUFkeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGlDQUE0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QUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUNwQyxDQUFDO0lBQ0osQ0FBQzsrR0FsT1UsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY291bnRTZXR1cEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudC1zZXR1cC9hY2NvdW50LXNldHVwLWl0ZW0nO1xuaW1wb3J0IHtcbiAgQmFua0FjY291bnRTZXJ2aWNlLFxuICBDbGllbnRJbnZpdGVTZXJ2aWNlLFxuICBDbGllbnRNb3ZlbWVudFNlcnZpY2UsXG4gIEVtcGxveWVlSW52aXRlU2VydmljZSxcbiAgRW1wbG95ZWVTZXJ2aWNlLFxuICBGaXJtU2VydmljZSxcbiAgSG9sZGluZ1RyYWRlU2VydmljZSxcbiAgSW5jb21lU291cmNlU2VydmljZSxcbiAgUHJvcGVydHlTZXJ2aWNlLFxuICBTb2xlQnVzaW5lc3NTZXJ2aWNlLFxuICBUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlLFxuICBUcmFuc2FjdGlvblNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBWZWhpY2xlQ2xhaW1TZXJ2aWNlXG59IGZyb20gJy4uL2h0dHAnO1xuaW1wb3J0IHsgSW5jb21lU291cmNlLCBUcmFuc2FjdGlvbiwgVXNlciB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbixcbiAgQ2xpZW50SW52aXRlQ29sbGVjdGlvbixcbiAgQ2xpZW50TW92ZW1lbnRDb2xsZWN0aW9uLFxuICBJbmNvbWVTb3VyY2VDb2xsZWN0aW9uLFxuICBUcmFuc2FjdGlvbkNvbGxlY3Rpb25cbn0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgaW50ZXJzZWN0aW9uIGZyb20gJ2xvZGFzaC9pbnRlcnNlY3Rpb24nO1xuaW1wb3J0IHsgVXNlclJvbGVzRW51bSB9IGZyb20gJ3RheHRhbmstY29yZS9jb21tb24nO1xuaW1wb3J0IHsgU2V0dXBJdGVtVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy9zZXR1cC1pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBFbXBsb3llZUludml0ZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscyc7XG5pbXBvcnQgeyBGaXJtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNldHVwSXRlbVNlcnZpY2UgfSBmcm9tICcuLi9odHRwL3NldHVwLWl0ZW0vc2V0dXAtaXRlbS5zZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGhhbmRsaW5nIHVzZXIncyBhY2NvdW50IHNldHVwIHByb2Nlc3MuXG4gKiBDaGVja3MgcmVxdWlyZWQgc3RlcHMgYW5kIHRoZWlyIGNvbXBsZXRpb25cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFNldHVwU2VydmljZSB7XG4gIGl0ZW1zOiBBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbjtcbiAgdXNlcjogVXNlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNldHVwSXRlbVNlcnZpY2U6IFNldHVwSXRlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9wZXJ0eVNlcnZpY2U6IFByb3BlcnR5U2VydmljZSxcbiAgICBwcml2YXRlIGluY29tZVNvdXJjZVNlcnZpY2U6IEluY29tZVNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYW5rQWNjb3VudHNTZXJ2aWNlOiBCYW5rQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlOiBUcmFuc2FjdGlvbkFsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgdmVoaWNsZUNsYWltU2VydmljZTogVmVoaWNsZUNsYWltU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc29sZUJ1c2luZXNzU2VydmljZTogU29sZUJ1c2luZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGhvbGRpbmdTZXJ2aWNlOiBIb2xkaW5nVHJhZGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpZW50TW92ZW1lbnRTZXJ2aWNlOiBDbGllbnRNb3ZlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGllbnRJbnZpdGVTZXJ2aWNlOiBDbGllbnRJbnZpdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1wbG95ZWVTZXJ2aWNlOiBFbXBsb3llZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbXBsb3llZUludml0ZVNlcnZpY2U6IEVtcGxveWVlSW52aXRlU2VydmljZSxcbiAgICBwcml2YXRlIGZpcm1TZXJ2aWNlOiBGaXJtU2VydmljZVxuICApIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBhY2NvdW50IHNldHVwIGl0ZW1zIGZvciBjdXJyZW50IHVzZXIvZmlybVxuICAgKi9cbiAgZ2V0KHR5cGU6IFNldHVwSXRlbVR5cGVFbnVtKTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2V0dXBJdGVtU2VydmljZS5nZXQoKSxcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuZ2V0Rmlyc3QoKVxuICAgIF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKFtpdGVtcywgdXNlcl06IFtBY2NvdW50U2V0dXBJdGVtQ29sbGVjdGlvbiwgVXNlcl0pID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG4gICAgICAgICAgdGhpcy51c2VyID0gdXNlcjtcblxuICAgICAgICAgIHJldHVybiB0eXBlID09PSBTZXR1cEl0ZW1UeXBlRW51bS5DTElFTlQgPyB0aGlzLmdldENsaWVudEl0ZW1zJCgpIDogdGhpcy5nZXRGaXJtSXRlbXMkKCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0Q2xpZW50SXRlbXMkKCk6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbUNvbGxlY3Rpb24+IHtcbiAgICBjb25zdCBiYXRjaDogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPltdID0gW107XG5cbiAgICBpZiAodGhpcy51c2VyLmhhc1JvbGVzKFVzZXJSb2xlc0VudW0uV09SS19UQU5LKSkge1xuICAgICAgYmF0Y2gucHVzaChcbiAgICAgICAgLy8gU2FsYXJ5IGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBzYWxhcnkgaW5jb21lIHNvdXJjZVxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzU2FsYXJ5JywgdHJ1ZSksXG4gICAgICAgICAgdGhpcy5nZXRJbmNvbWVTb3VyY2VzKHRydWUpXG4gICAgICAgICksXG4gICAgICAgIC8vIE90aGVyIGluY29tZSBpcyBhIHBhcnQgb2Ygd29yayB0YW5rLCBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSBvdGhlciBpbmNvbWUgc291cmNlXG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNPdGhlckluY29tZScsIHRydWUpLFxuICAgICAgICAgIHRoaXMuZ2V0SW5jb21lU291cmNlcygpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmVudGFsIGluY29tZSBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIHByb3BlcnR5XG4gICAgaWYgKHRoaXMudXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLlBST1BFUlRZX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzUHJvcGVydHknLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLnByb3BlcnR5U2VydmljZS5nZXRBcnJheSgpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gU29sZSBidXNpbmVzcyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgYWRkZWQgYXQgbGVhc3Qgb25lIGJ1c2luZXNzXG4gICAgaWYgKHRoaXMudXNlci5oYXNSb2xlcyhVc2VyUm9sZXNFbnVtLlNPTEVfVEFOSykpIHtcbiAgICAgIGJhdGNoLnB1c2goXG4gICAgICAgIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNTb2xlQnVzaW5lc3MnLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLnNvbGVCdXNpbmVzc1NlcnZpY2UuZ2V0QXJyYXkoKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGhvbGRpbmdzIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgaG9sZGluZ1xuICAgIGlmICh0aGlzLnVzZXIuaGFzUm9sZXMoVXNlclJvbGVzRW51bS5IT0xESU5HX1RBTkspKSB7XG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzSG9sZGluZ3MnLCB0cnVlKSxcbiAgICAgICAgICB0aGlzLmhvbGRpbmdTZXJ2aWNlLmdldEFycmF5KClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy51c2VyLmhhc1JvbGVzKFtVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5QUk9QRVJUWV9UQU5LLCBVc2VyUm9sZXNFbnVtLlNPTEVfVEFOS10pKSB7XG4gICAgICAvLyBCYW5rIGZlZWRzIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gdXNlciBhZGRlZCBhdCBsZWFzdCBvbmUgYmFuayBhY2NvdW50IChiYXNpcSBvciBtYW51YWwpXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuZ2V0QmFua0ZlZWRzSXRlbSgpKTtcblxuICAgICAgLy8gTG9nYm9vayBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgaGFzIGF0IGxlYXN0IG9uZSB2ZWhpY2xlIGNsYWltIHdpdGggYW55IG1ldGhvZCAoa21zIG9yIGxvZ2Jvb2spXG4gICAgICBiYXRjaC5wdXNoKHRoaXMuZ2V0TG9nYm9va0l0ZW0oKSk7XG5cbiAgICAgIC8vIEFsbG9jYXRpb24gaXRlbSBpcyBjb21wbGV0ZWQgd2hlbiB1c2VyIGFkZGVkIGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiBhbGxvY2F0aW9uXG4gICAgICBiYXRjaC5wdXNoKFxuICAgICAgICB0aGlzLnNldEl0ZW1TdGF0dXMoXG4gICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzVHJhbnNhY3Rpb25BbGxvY2F0ZScsIHRydWUpLFxuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25BbGxvY2F0aW9uU2VydmljZS5nZXQoKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGJhdGNoKS5waXBlKG1hcCgoaXRlbXM6IEFjY291bnRTZXR1cEl0ZW1bXSkgPT4gbmV3IEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uKGl0ZW1zKSkpO1xuICB9XG5cbiAgZ2V0RmlybUl0ZW1zJCgpOiBPYnNlcnZhYmxlPEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uPiB7XG4gICAgY29uc3QgYmF0Y2g6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT5bXSA9IFtdO1xuXG4gICAgYmF0Y2gucHVzaChcbiAgICAgIC8vIEZpcm0gRGV0YWlscyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIHVzZXIgZmlsbGVkIHNvbWUgZ2VuZXJhbCBpbmZvcm1hdGlvblxuICAgICAgdGhpcy5maXJtU2VydmljZS5nZXQoKS5waXBlKG1hcCgoZmlybTogRmlybSkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5maW5kQnkoJ2lzRmlybURldGFpbHMnLCB0cnVlKTtcbiAgICAgICAgaWYgKGZpcm0uYWRkcmVzcyB8fCBmaXJtLnBob25lIHx8IGZpcm0uZmlsZSB8fCBmaXJtLnNob3J0TmFtZSkge1xuICAgICAgICAgIGl0ZW0uaXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KSlcbiAgICApO1xuXG4gICAgYmF0Y2gucHVzaChcbiAgICAgIC8vIEludml0ZSB0ZWFtIGl0ZW0gaXMgY29tcGxldGVkIHdoZW4gZmlybSBoYXMgZW1wbG95ZWVzIGV4Y2VwdCBmaXJtIG93bmVyIG9yIGZpcm0gaGFzIGludml0ZWQgZW1wbG95ZWVzLlxuICAgICAgdGhpcy5zZXRJdGVtU3RhdHVzKFxuICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNJbnZpdGVUZWFtJywgdHJ1ZSksXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHRoaXMuZW1wbG95ZWVTZXJ2aWNlLmdldEFycmF5KCksXG4gICAgICAgICAgdGhpcy5lbXBsb3llZUludml0ZVNlcnZpY2UuZ2V0QXJyYXkoKVxuICAgICAgICBdKS5waXBlKG1hcCgoW2VtcGxveWVlcywgaW52aXRlc106IFtVc2VyW10sIEVtcGxveWVlSW52aXRlW11dKSA9PiB7XG4gICAgICAgICAgLy8gd2UgYWx3YXlzIGhhdmUgYXQgbGVhc3QgMSBlbXBsb3llZSAoZmlybSBvd25lciksIHNvIHdlIHNob3VsZCBjaGVjayBvdGhlciBlbXBsb3llZXMgZXhjZXB0IGZpcm0gb3duZXJcbiAgICAgICAgICBpZiAoZW1wbG95ZWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgZW1wbG95ZWVzLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gWy4uLmVtcGxveWVlcywgLi4uaW52aXRlc107XG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcblxuICAgIGJhdGNoLnB1c2goXG4gICAgICAvLyBJbnZpdGUgY2xpZW50cyBpdGVtIGlzIGNvbXBsZXRlZCB3aGVuIGZpcm0gaGFzIGNsaWVudHMgb3IgZmlybSBoYXMgaW52aXRlZCBjbGllbnRzLlxuICAgICAgdGhpcy5zZXRJdGVtU3RhdHVzKFxuICAgICAgICB0aGlzLml0ZW1zLmZpbmRCeSgnaXNJbnZpdGVDbGllbnRzJywgdHJ1ZSksXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY2xpZW50TW92ZW1lbnRTZXJ2aWNlLmdldEFjdGl2ZSgpLCB0aGlzLmNsaWVudEludml0ZVNlcnZpY2UuZ2V0KCldKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChbbW92ZW1lbnRzLCBpbnZpdGVzXTogW0NsaWVudE1vdmVtZW50Q29sbGVjdGlvbiwgQ2xpZW50SW52aXRlQ29sbGVjdGlvbl0pID0+IFsuLi5tb3ZlbWVudHMudG9BcnJheSgpLCAuLi5pbnZpdGVzLnRvQXJyYXkoKV0pXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGJhdGNoKS5waXBlKG1hcCgoaXRlbXM6IEFjY291bnRTZXR1cEl0ZW1bXSkgPT4gbmV3IEFjY291bnRTZXR1cEl0ZW1Db2xsZWN0aW9uKGl0ZW1zKS5zb3J0QnkoJ2lkJywgJ2FzYycpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgYW5kIHVwZGF0ZSBpc0NvbXBsZXRlZCBmbGFnIGZvciBwYXNzZWQgaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBzZXRJdGVtU3RhdHVzKGl0ZW06IEFjY291bnRTZXR1cEl0ZW0sIHJlcXVlc3Q6IE9ic2VydmFibGU8b2JqZWN0W10+KTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPiB7XG4gICAgcmV0dXJuIHJlcXVlc3QucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiBvYmplY3RbXSk6IEFjY291bnRTZXR1cEl0ZW0gPT4ge1xuICAgICAgICBjb25zdCBpc1NraXBwZWQgPSAhIXRoaXMudXNlci5ibGFja2xpc3RTZXR1cEl0ZW1zLmZpbmQoKHNraXBwZWRJdGVtOiBBY2NvdW50U2V0dXBJdGVtKSA9PiBza2lwcGVkSXRlbS5pZCA9PT0gaXRlbS5pZCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggfHwgaXNTa2lwcGVkKSB7XG4gICAgICAgICAgaXRlbS5pc0NvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS5pc0NvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQFRPRE8gQWxleDogd29yayB3aXRoIGNvbGxlY3Rpb24gd2hlbiBzZXJ2aWNlcyByZWZhY3RvcmVkXG4gICAqIEBUT0RPIFZpazogd2FpdGluZyBmb3IgaW5jb21lIHNvdXJjZXMgcmVmYWN0b3JpbmdcbiAgICovXG4gIHByaXZhdGUgZ2V0SW5jb21lU291cmNlcyhpc1NhbGFyeSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxJbmNvbWVTb3VyY2VbXT4ge1xuICAgIHJldHVybiB0aGlzLmluY29tZVNvdXJjZVNlcnZpY2UuZ2V0KCkucGlwZShcbiAgICAgIG1hcCgoaW5jb21lU291cmNlczogSW5jb21lU291cmNlW10pOiBJbmNvbWVTb3VyY2VbXSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb246IEluY29tZVNvdXJjZUNvbGxlY3Rpb24gPSBuZXcgSW5jb21lU291cmNlQ29sbGVjdGlvbihpbmNvbWVTb3VyY2VzKTtcbiAgICAgICAgaWYgKGlzU2FsYXJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZ2V0U2FsYXJ5KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5pdGVtcy5maWx0ZXIoKGluY29tZVNvdXJjZTogSW5jb21lU291cmNlKSA9PiBpbmNvbWVTb3VyY2UuaXNPdGhlckluY29tZSgpKTtcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgbG9nYm9vayBpdGVtIHdoZW4gdXNlciBoYXMgYXQgbGVhc3QgMSB2ZWhpY2xlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldExvZ2Jvb2tJdGVtKCk6IE9ic2VydmFibGU8QWNjb3VudFNldHVwSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIEBUT0RPIEFsZXg6IHJlbW92ZSBtYXAgd2hlbiBzZXJ2aWNlcyBzdGFydCB3b3JrIHdpdGggY29sbGVjdGlvbnNcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pID0+IG5ldyBUcmFuc2FjdGlvbkNvbGxlY3Rpb24odHJhbnNhY3Rpb25zKSksXG4gICAgICAgIG1lcmdlTWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgIGlmICh0cmFuc2FjdGlvbnMuZ2V0VmVoaWNsZVRyYW5zYWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgICAgICAgICAgdGhpcy5pdGVtcy5maW5kQnkoJ2lzV29ya0xvZ2Jvb2snLCB0cnVlKSxcbiAgICAgICAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1TZXJ2aWNlLmdldEFycmF5KClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGJhbmsgZmVlZHMgaXRlbSB3aGVuIHVzZXIgaGFzIG9ubHkgaG9sZGluZyB0YW5rXG4gICAqL1xuICBwcml2YXRlIGdldEJhbmtGZWVkc0l0ZW0oKTogT2JzZXJ2YWJsZTxBY2NvdW50U2V0dXBJdGVtPiB7XG4gICAgY29uc3QgYmFua0ZlZWRzUm9sZXMgPSBbVXNlclJvbGVzRW51bS5QUk9QRVJUWV9UQU5LLCBVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5TT0xFX1RBTktdO1xuXG4gICAgaWYgKCFpbnRlcnNlY3Rpb24oYmFua0ZlZWRzUm9sZXMsIHRoaXMudXNlci5yb2xlcykubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2V0SXRlbVN0YXR1cyhcbiAgICAgIHRoaXMuaXRlbXMuZmluZEJ5KCdpc0JhbmtGZWVkcycsIHRydWUpLFxuICAgICAgdGhpcy5iYW5rQWNjb3VudHNTZXJ2aWNlLmdldEFycmF5KClcbiAgICApO1xuICB9XG59XG4iXX0=
|
@@ -19128,6 +19128,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
19128
19128
|
}]
|
19129
19129
|
}], ctorParameters: () => [] });
|
19130
19130
|
|
19131
|
+
var SetupItemTypeEnum;
|
19132
|
+
(function (SetupItemTypeEnum) {
|
19133
|
+
SetupItemTypeEnum[SetupItemTypeEnum["CLIENT"] = 1] = "CLIENT";
|
19134
|
+
SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 2] = "EMPLOYEE";
|
19135
|
+
})(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
|
19136
|
+
|
19131
19137
|
class SetupItemService extends RestService$1 {
|
19132
19138
|
constructor() {
|
19133
19139
|
super(...arguments);
|
@@ -19171,7 +19177,7 @@ class AccountSetupService {
|
|
19171
19177
|
/**
|
19172
19178
|
* Get list of account setup items for current user/firm
|
19173
19179
|
*/
|
19174
|
-
get() {
|
19180
|
+
get(type) {
|
19175
19181
|
return combineLatest([
|
19176
19182
|
this.setupItemService.get(),
|
19177
19183
|
this.userService.getFirst()
|
@@ -19179,10 +19185,10 @@ class AccountSetupService {
|
|
19179
19185
|
.pipe(mergeMap(([items, user]) => {
|
19180
19186
|
this.items = items;
|
19181
19187
|
this.user = user;
|
19182
|
-
return this.
|
19188
|
+
return type === SetupItemTypeEnum.CLIENT ? this.getClientItems$() : this.getFirmItems$();
|
19183
19189
|
}));
|
19184
19190
|
}
|
19185
|
-
|
19191
|
+
getClientItems$() {
|
19186
19192
|
const batch = [];
|
19187
19193
|
if (this.user.hasRoles(UserRolesEnum.WORK_TANK)) {
|
19188
19194
|
batch.push(
|
@@ -19211,42 +19217,49 @@ class AccountSetupService {
|
|
19211
19217
|
// Allocation item is completed when user added at least one transaction allocation
|
19212
19218
|
batch.push(this.setItemStatus(this.items.findBy('isTransactionAllocate', true), this.transactionAllocationService.get()));
|
19213
19219
|
}
|
19214
|
-
if (this.user.hasRoles([UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR])) {
|
19215
|
-
batch.push(
|
19216
|
-
// Firm Details item is completed when user filled some general information
|
19217
|
-
this.firmService.get().pipe(map((firm) => {
|
19218
|
-
const item = this.items.findBy('isFirmDetails', true);
|
19219
|
-
if (firm.address || firm.phone || firm.file || firm.shortName) {
|
19220
|
-
item.isCompleted = true;
|
19221
|
-
}
|
19222
|
-
return item;
|
19223
|
-
})));
|
19224
|
-
batch.push(
|
19225
|
-
// Invite team item is completed when firm has employees except firm owner or firm has invited employees.
|
19226
|
-
this.setItemStatus(this.items.findBy('isInviteTeam', true), combineLatest([
|
19227
|
-
this.employeeService.getArray(),
|
19228
|
-
this.employeeInviteService.getArray()
|
19229
|
-
]).pipe(map(([employees, invites]) => {
|
19230
|
-
// we always have at least 1 employee (firm owner), so we should check other employees except firm owner
|
19231
|
-
if (employees.length) {
|
19232
|
-
employees.splice(0, 1);
|
19233
|
-
}
|
19234
|
-
return [...employees, ...invites];
|
19235
|
-
}))));
|
19236
|
-
batch.push(
|
19237
|
-
// Invite clients item is completed when firm has clients or firm has invited clients.
|
19238
|
-
this.setItemStatus(this.items.findBy('isInviteClients', true), combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()])
|
19239
|
-
.pipe(map(([movements, invites]) => [...movements.toArray(), ...invites.toArray()]))));
|
19240
|
-
}
|
19241
19220
|
return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items)));
|
19242
19221
|
}
|
19222
|
+
getFirmItems$() {
|
19223
|
+
const batch = [];
|
19224
|
+
batch.push(
|
19225
|
+
// Firm Details item is completed when user filled some general information
|
19226
|
+
this.firmService.get().pipe(map((firm) => {
|
19227
|
+
const item = this.items.findBy('isFirmDetails', true);
|
19228
|
+
if (firm.address || firm.phone || firm.file || firm.shortName) {
|
19229
|
+
item.isCompleted = true;
|
19230
|
+
}
|
19231
|
+
return item;
|
19232
|
+
})));
|
19233
|
+
batch.push(
|
19234
|
+
// Invite team item is completed when firm has employees except firm owner or firm has invited employees.
|
19235
|
+
this.setItemStatus(this.items.findBy('isInviteTeam', true), combineLatest([
|
19236
|
+
this.employeeService.getArray(),
|
19237
|
+
this.employeeInviteService.getArray()
|
19238
|
+
]).pipe(map(([employees, invites]) => {
|
19239
|
+
// we always have at least 1 employee (firm owner), so we should check other employees except firm owner
|
19240
|
+
if (employees.length) {
|
19241
|
+
employees.splice(0, 1);
|
19242
|
+
}
|
19243
|
+
return [...employees, ...invites];
|
19244
|
+
}))));
|
19245
|
+
batch.push(
|
19246
|
+
// Invite clients item is completed when firm has clients or firm has invited clients.
|
19247
|
+
this.setItemStatus(this.items.findBy('isInviteClients', true), combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()])
|
19248
|
+
.pipe(map(([movements, invites]) => [...movements.toArray(), ...invites.toArray()]))));
|
19249
|
+
return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items).sortBy('id', 'asc')));
|
19250
|
+
}
|
19243
19251
|
/**
|
19244
19252
|
* Check and update isCompleted flag for passed item
|
19245
19253
|
*/
|
19246
19254
|
setItemStatus(item, request) {
|
19247
19255
|
return request.pipe(map((result) => {
|
19248
19256
|
const isSkipped = !!this.user.blacklistSetupItems.find((skippedItem) => skippedItem.id === item.id);
|
19249
|
-
|
19257
|
+
if (result.length || isSkipped) {
|
19258
|
+
item.isCompleted = true;
|
19259
|
+
}
|
19260
|
+
else {
|
19261
|
+
item.isCompleted = false;
|
19262
|
+
}
|
19250
19263
|
return item;
|
19251
19264
|
}));
|
19252
19265
|
}
|
@@ -20912,12 +20925,6 @@ var ServiceNotificationTypeEnum;
|
|
20912
20925
|
ServiceNotificationTypeEnum[ServiceNotificationTypeEnum["SYSTEM"] = 2] = "SYSTEM";
|
20913
20926
|
})(ServiceNotificationTypeEnum || (ServiceNotificationTypeEnum = {}));
|
20914
20927
|
|
20915
|
-
var SetupItemTypeEnum;
|
20916
|
-
(function (SetupItemTypeEnum) {
|
20917
|
-
SetupItemTypeEnum[SetupItemTypeEnum["CLIENT"] = 1] = "CLIENT";
|
20918
|
-
SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 2] = "EMPLOYEE";
|
20919
|
-
})(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
|
20920
|
-
|
20921
20928
|
var ServicePaymentStatusEnum;
|
20922
20929
|
(function (ServicePaymentStatusEnum) {
|
20923
20930
|
ServicePaymentStatusEnum[ServicePaymentStatusEnum["FAIL"] = 0] = "FAIL";
|