@senior-gestao-pessoas/payroll-core 9.4.0-f9d3c09b-0079-4f7c-94cf-dd79338e7089 → 9.5.0-01923a3e-20f4-4cb3-9565-a0584abd00d1

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 (42) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +1214 -770
  2. package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
  3. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +16 -1
  4. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
  5. package/components/historical-pix-account/historical-pix-account-base.d.ts +27 -0
  6. package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +8 -40
  7. package/components/historical-pix-account/historical-pix-account.component.d.ts +36 -8
  8. package/components/historical-pix-account/historical-pix-account.service.d.ts +1 -0
  9. package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +10 -1
  10. package/components/shared/index.d.ts +1 -0
  11. package/components/shared/shared-state.service.d.ts +17 -0
  12. package/components/utils/format-utils/format-utils.service.d.ts +30 -3
  13. package/esm2015/components/historical-pix-account/historical-pix-account-base.js +173 -0
  14. package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +29 -187
  15. package/esm2015/components/historical-pix-account/historical-pix-account.component.js +245 -20
  16. package/esm2015/components/historical-pix-account/historical-pix-account.module.js +5 -1
  17. package/esm2015/components/historical-pix-account/historical-pix-account.service.js +8 -1
  18. package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +45 -4
  19. package/esm2015/components/shared/index.js +2 -0
  20. package/esm2015/components/shared/shared-state.service.js +41 -0
  21. package/esm2015/components/utils/format-utils/format-utils.service.js +88 -5
  22. package/esm2015/public_api.js +2 -1
  23. package/esm2015/senior-gestao-pessoas-payroll-core.js +3 -2
  24. package/esm5/components/historical-pix-account/historical-pix-account-base.js +186 -0
  25. package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +53 -201
  26. package/esm5/components/historical-pix-account/historical-pix-account.component.js +287 -49
  27. package/esm5/components/historical-pix-account/historical-pix-account.module.js +5 -1
  28. package/esm5/components/historical-pix-account/historical-pix-account.service.js +8 -1
  29. package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +50 -4
  30. package/esm5/components/shared/index.js +2 -0
  31. package/esm5/components/shared/shared-state.service.js +42 -0
  32. package/esm5/components/utils/format-utils/format-utils.service.js +88 -5
  33. package/esm5/public_api.js +2 -1
  34. package/esm5/senior-gestao-pessoas-payroll-core.js +3 -2
  35. package/fesm2015/senior-gestao-pessoas-payroll-core.js +880 -477
  36. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  37. package/fesm5/senior-gestao-pessoas-payroll-core.js +1210 -767
  38. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  39. package/package.json +2 -32
  40. package/public_api.d.ts +1 -0
  41. package/senior-gestao-pessoas-payroll-core.d.ts +2 -1
  42. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -0,0 +1,27 @@
1
+ import { FormBuilder, FormGroup, ValidatorFn } from "@angular/forms";
2
+ export declare abstract class HistoricakPixAccountBase {
3
+ protected formBuilder: FormBuilder;
4
+ protected _paramsForm: FormGroup;
5
+ protected _defaultCpfNumber: string;
6
+ initialValidatorOfPercentage: ValidatorFn[];
7
+ pixAccountList: object[];
8
+ maxValuePercentage: number;
9
+ pixKeyType: string;
10
+ pixAccountFormGroup: FormGroup;
11
+ isShowPixKeyFieldValidatorMessage: boolean;
12
+ constructor(formBuilder: FormBuilder);
13
+ phoneMask(event: any): void;
14
+ cpfMask(event: any): void;
15
+ cnpjMask(event: any): void;
16
+ onChangePixKeyType(item: any, form?: FormGroup): void;
17
+ onClearPixKeyType(form?: FormGroup): void;
18
+ setDefaultCpfPixKey(form?: FormGroup): void;
19
+ protected createFormGroupBase(): void;
20
+ protected setValidatorsAccordingList(pixAccountList: object[], index?: number | null, isEditMode?: boolean, form?: FormGroup): void;
21
+ protected beforeSetPixKeyTypeValidator(form: FormGroup): void;
22
+ protected setPixKeyValidators(isEditMode: boolean, form: FormGroup): void;
23
+ protected validatePercentageValid(listValue: number[], form: FormGroup): void;
24
+ private validateDuplicatePixKeyTypeBankAccount;
25
+ paramsForm: FormGroup;
26
+ defaultCpfNumber: string;
27
+ }
@@ -1,39 +1,32 @@
1
1
  import { OnInit, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit } from "@angular/core";
2
2
  import { FormGroup, FormBuilder } from "@angular/forms";
3
3
  import { NumberLocaleOptions, CustomFieldsComponent } from "@seniorsistemas/angular-components";
4
- export declare class HistoricalPixAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {
5
- private formBuilder;
4
+ import { SharedStateService } from "../../shared/shared-state.service";
5
+ import { HistoricakPixAccountBase } from "../historical-pix-account-base";
6
+ export declare class HistoricalPixAccountFormComponent extends HistoricakPixAccountBase implements OnInit, OnDestroy, AfterViewInit {
6
7
  private cd;
8
+ private sharedStateService;
7
9
  customFields: CustomFieldsComponent;
8
10
  currency: NumberLocaleOptions;
9
11
  customEntity: string;
10
12
  customService: string;
11
13
  withSideBar: boolean;
12
14
  isEditMode: boolean;
13
- paramsForm: FormGroup;
14
- defaultCpfNumber: string;
15
15
  visibleChange: EventEmitter<boolean>;
16
16
  pixAccountItemToList: EventEmitter<any>;
17
17
  private _visible;
18
18
  private ngUnsubscribe;
19
19
  private employeeId;
20
- private pixAccountList;
21
- private initialValidatorOfPercentage;
22
20
  labelBtnAdd: string;
23
- pixAccountFormGroup: FormGroup;
24
- maxValuePercentage: number;
25
21
  visibleBtnSave: boolean;
26
22
  isView: boolean;
27
- pixKeyType: string;
28
23
  isShowPixKeyFieldValidatorMessage: boolean;
29
- constructor(formBuilder: FormBuilder, cd: ChangeDetectorRef);
24
+ hideFields: import("rxjs").Observable<boolean>;
25
+ constructor(formBuilder: FormBuilder, cd: ChangeDetectorRef, sharedStateService: SharedStateService);
30
26
  ngOnInit(): void;
31
27
  ngAfterViewInit(): void;
32
28
  ngOnDestroy(): void;
33
29
  private registerSubjects;
34
- private createFormGroup;
35
- onChangePixKeyType(item: any): void;
36
- onClearPixKeyType(): void;
37
30
  visible: boolean;
38
31
  isEditAndViewValue: any;
39
32
  private formatPixKeyTelephoneNumber;
@@ -45,33 +38,8 @@ export declare class HistoricalPixAccountFormComponent implements OnInit, OnDest
45
38
  readonly percentagePlaceholder: string;
46
39
  readonly optionsPercentage: object;
47
40
  private getOptions;
48
- /**
49
- * O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.
50
- * @param pixAccountList
51
- */
52
41
  getListPixAccount: object[];
53
- /**
54
- * Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para
55
- * a validação dos campos "percentage" e "pixAccount".
56
- * Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados
57
- * no array de comparação dos validators.
58
- * @param pixAccountList
59
- * @param index
60
- */
61
- private setValidatorsAccordingList;
62
- /**
63
- * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.
64
- */
65
- setPixKeyValidators(isEditMode: boolean): void;
66
- /**
67
- * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em
68
- * 100% na validação do campo "percentage" como um novo maxValue;
69
- * @param listValue
70
- */
71
- private validatePercentageValid;
72
42
  isViewMode: boolean;
73
- phoneMask(event: any): void;
74
- setDefaultCpfPixKey(): void;
75
- beforeSetPixKeyTypeValidator(): void;
76
- private validateDuplicatePixKeyTypeBankAccount;
43
+ paramsForm: FormGroup;
44
+ defaultCpfNumber: string;
77
45
  }
@@ -2,13 +2,16 @@ import { OnInit, ChangeDetectorRef, AfterViewInit, OnDestroy, EventEmitter, OnCh
2
2
  import { FormGroup, FormBuilder } from "@angular/forms";
3
3
  import { TranslateService } from "@ngx-translate/core";
4
4
  import { CustomFieldsComponent, NumberLocaleOptions } from "@seniorsistemas/angular-components";
5
- import { MessageService } from "primeng/api";
6
- export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {
5
+ import { SharedStateService } from "../shared/shared-state.service";
6
+ import { HistoricakPixAccountBase } from "./historical-pix-account-base";
7
+ import { HistoricalPixAccountService } from "./historical-pix-account.service";
8
+ export declare class HistoricalPixAccountComponent extends HistoricakPixAccountBase implements OnInit, OnDestroy, AfterViewInit, OnChanges {
7
9
  private translateService;
8
10
  private cd;
9
- private formBuilder;
10
- private messageService;
11
+ private sharedStateService;
12
+ private service;
11
13
  customFields: CustomFieldsComponent;
14
+ dataListPix: any;
12
15
  formGroup: FormGroup;
13
16
  fieldFormGroup: string;
14
17
  _dateChange: string;
@@ -22,13 +25,15 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
22
25
  customEntity: string;
23
26
  customService: string;
24
27
  withSideBar: boolean;
25
- paramsForm: FormGroup;
26
- defaultCpfNumber: string;
27
28
  permission: object;
28
29
  listDataReciever: any[];
30
+ addExistentHistoricData: any[];
31
+ getListPixAccount: object[];
32
+ isEditModeForSave: boolean;
29
33
  isViewModeActive: EventEmitter<any>;
30
34
  isEditModeActive: EventEmitter<any>;
31
35
  isDeleteModeActive: EventEmitter<any>;
36
+ isValidChangeForm: EventEmitter<boolean>;
32
37
  private listFromApp;
33
38
  private visibleChange;
34
39
  private ngUnsubscribe;
@@ -43,6 +48,14 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
43
48
  msgTotalLimitByPercentage: string;
44
49
  listData: object[];
45
50
  listDataNoPage: object[];
51
+ showButtonView: boolean;
52
+ showEditMode: boolean;
53
+ hasRecordsPix: boolean;
54
+ hideFields: import("rxjs").Observable<boolean>;
55
+ suggestions: any[];
56
+ formGroupByRow: {
57
+ [index: number]: FormGroup;
58
+ };
46
59
  cols: {
47
60
  label: any;
48
61
  field: string;
@@ -52,24 +65,37 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
52
65
  label: any;
53
66
  command: () => void;
54
67
  }[];
55
- constructor(translateService: TranslateService, cd: ChangeDetectorRef, formBuilder: FormBuilder, messageService: MessageService);
68
+ constructor(translateService: TranslateService, cd: ChangeDetectorRef, formBuilder: FormBuilder, sharedStateService: SharedStateService, service: HistoricalPixAccountService);
56
69
  ngOnInit(): void;
57
70
  ngOnChanges(changes: SimpleChanges): void;
58
71
  private createFormGroup;
59
72
  ngOnDestroy(): void;
60
73
  ngAfterViewInit(): void;
74
+ private emitFormValidity;
75
+ filterPixKeyType(event: any): void;
76
+ createPixRowFormGroup(): FormGroup;
77
+ onPixKeyInput(event: any, index: number): void;
78
+ onBlurPixCpfAndCnpj(index: number): void;
79
+ getFormattedPixKey(type: string, value: string): string;
80
+ syncPixDataToParentForm(): void;
81
+ syncResetPixFormToParent(): void;
61
82
  onLazyLoad(event?: any): void;
62
83
  /**
63
84
  * Um Bug de CSS que acontece nas linhas da tabela, que resolve só atualizando qualquer parte do CSS da pagina.
64
85
  */
65
86
  private refreshCssInIE11;
66
87
  add(): void;
67
- private isNotAllowMessage;
88
+ addPix(): void;
89
+ deletePix(index: number): void;
90
+ private rebuildFormGroupMap;
91
+ onPixKeyTypeChange(item: any, index: number): void;
92
+ onPixKeyTypeClear(index: number): void;
68
93
  private deleteAnnuityItem;
69
94
  getHistoricalPixAccountList(): object[];
70
95
  addItemInList($event: any): void;
71
96
  private getNumberPageByIndex;
72
97
  private verifyTotalPercentage;
98
+ onSyncValue(field: string, index: number): void;
73
99
  readonly scopedActions: any;
74
100
  readonly recordsMessage: string;
75
101
  readonly getTooltipAndDisableButtonAdd: string;
@@ -77,6 +103,8 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
77
103
  displayDateChange: string;
78
104
  addListData: object[];
79
105
  visible: boolean;
106
+ paramsForm: FormGroup;
107
+ defaultCpfNumber: string;
80
108
  close(): void;
81
109
  getFormattedTelephoneNumber(telephoneNumber: string): string;
82
110
  getFormattedCpf(cpf: string): string;
@@ -5,4 +5,5 @@ export declare class HistoricalPixAccountService {
5
5
  private http;
6
6
  constructor(http: HttpClientService);
7
7
  query(path: string, body: object, service?: ServiceType): Observable<any>;
8
+ enumQuery(): Observable<any>;
8
9
  }
@@ -3,7 +3,9 @@ import { ActivatedRoute, Router } from "@angular/router";
3
3
  import { TranslateService } from "@ngx-translate/core";
4
4
  import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
5
5
  import { ConfirmationService, MessageService } from "primeng/api";
6
+ import { Subject } from "rxjs";
6
7
  import { HistoricalPixAccountListService } from "./historical-pix-account-list.service";
8
+ import { SharedStateService } from "../shared/shared-state.service";
7
9
  export declare class HistoricalPixAccountListComponent implements OnInit, OnDestroy, AfterViewInit {
8
10
  private confirmationService;
9
11
  private translateService;
@@ -12,6 +14,7 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
12
14
  private router;
13
15
  private messageService;
14
16
  private historicalPixAccountListService;
17
+ private sharedStateService;
15
18
  customFields: CustomFieldsComponent;
16
19
  permission: object;
17
20
  employeeId: string;
@@ -20,10 +23,14 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
20
23
  endPoint: string;
21
24
  keyPayload: string;
22
25
  withSidebar: boolean;
26
+ hideField: boolean;
23
27
  isOnlyView: EventEmitter<any>;
28
+ isOnlyEdit: EventEmitter<any>;
24
29
  enableView: EventEmitter<any>;
30
+ isEditJudicialDependentPix: EventEmitter<any>;
25
31
  private lastRecord;
26
32
  private ngUnsubscribe;
33
+ private _subscription;
27
34
  initParameters: any;
28
35
  loading: boolean;
29
36
  parameters: any;
@@ -31,7 +38,7 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
31
38
  label: any;
32
39
  field: string;
33
40
  }[];
34
- constructor(confirmationService: ConfirmationService, translateService: TranslateService, activatedRoute: ActivatedRoute, cd: ChangeDetectorRef, router: Router, messageService: MessageService, historicalPixAccountListService: HistoricalPixAccountListService);
41
+ constructor(confirmationService: ConfirmationService, translateService: TranslateService, activatedRoute: ActivatedRoute, cd: ChangeDetectorRef, router: Router, messageService: MessageService, historicalPixAccountListService: HistoricalPixAccountListService, sharedStateService: SharedStateService);
35
42
  ngOnInit(): void;
36
43
  ngOnDestroy(): void;
37
44
  ngAfterViewInit(): void;
@@ -44,6 +51,8 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
44
51
  add(): void;
45
52
  private isNotAllowMessage;
46
53
  private onGridLoad;
54
+ private unsubscribe;
55
+ hideFieldsOnAdd$: Subject<boolean>;
47
56
  private readonly isAllowToAddHistorical;
48
57
  private readonly isAllowToDeleteHistorical;
49
58
  private readonly isAllowToViewHistorical;
@@ -0,0 +1 @@
1
+ export * from './shared-state.service';
@@ -0,0 +1,17 @@
1
+ export declare class SharedStateService {
2
+ private hideFieldSubject;
3
+ hideField$: import("rxjs").Observable<boolean>;
4
+ private showButtonSubject;
5
+ showButton$: import("rxjs").Observable<boolean>;
6
+ private saveButtonSubject;
7
+ saveButton$: import("rxjs").Observable<boolean>;
8
+ private showEditMode;
9
+ showEditMode$: import("rxjs").Observable<boolean>;
10
+ private activeValidatorsOnEditModalOpen;
11
+ activeValidatorsOnEditModalOpen$: import("rxjs").Observable<void>;
12
+ setHideField(value: boolean): void;
13
+ setShowButton(value: boolean): void;
14
+ setSaveButton(value: boolean): void;
15
+ setShowEditMode(value: boolean): void;
16
+ triggerActiveValidatorsOnEditModalOpen(): void;
17
+ }
@@ -4,30 +4,57 @@ export declare class FormatUtilsService {
4
4
  * @param cpf CPF
5
5
  */
6
6
  static getFormattedCpf(cpf: string): string;
7
+ /**
8
+ * Retorna o CPF formatado
9
+ * @param cpf CPF
10
+ */
11
+ static getFormattedCpfEdited(cpf: string): string;
7
12
  /**
8
13
  * Retorna o CNPJ formatado
9
14
  * @param cnpj CNPJ
10
15
  */
11
16
  static getFormattedCnpj(cnpj: string): string;
17
+ /**
18
+ * Retorna o CNPJ formatado
19
+ * @param cnpj CNPJ
20
+ */
21
+ static getFormattedCnpjEdited(cnpj: string): string;
12
22
  /**
13
23
  * Retorna a mascara do CPF/CNPJ
14
24
  * @param key Valores possíveis são CPF ou CNPJ
15
25
  */
16
26
  static getCpfCnpjMask(key: string): "" | "999.999.999-99" | "99.999.999/9999-99";
27
+ /**
28
+ * Método para formatar o número de inscrição do cliente.
29
+ * @param subscriptionNumber
30
+ * @param pixKeyType
31
+ * @returns
32
+ */
33
+ static getFormattedSubscriptionNumber(subscriptionNumber: string, pixKeyType: any): string;
17
34
  /**
18
35
  * Metódo para formatar o número de telefone.
19
36
  * @param telephoneNumber String contendo o número de telefone.
20
37
  * @returns String formatada com o número de telefone.
21
38
  */
22
39
  static getFormattedTelephoneNumber(telephoneNumber: string): string;
40
+ /**
41
+ * Metódo para formatar a porcentagem para 2 casas decimais.
42
+ * @param value Número a ser formatado.
43
+ */
44
+ static getFormattedPercentage(value: string): string;
23
45
  /**
24
46
  * Metódo para formatar o número de telefone de um campo Input.
25
47
  * @param event Evento do Input do campo de telefone.
26
48
  */
27
49
  static formatTelephoneInputEvent(event: any): void;
28
50
  /**
29
- * Metódo para formatar a porcentagem para 2 casas decimais.
30
- * @param value Número a ser formatado.
51
+ * Formata o campo de input de CPF em tempo real.
52
+ * @param event Evento do input
31
53
  */
32
- static getFormattedPercentage(value: string): string;
54
+ static formatCpfInputEvent(event: any): void;
55
+ /**
56
+ * Formata o campo de input de CNPJ em tempo real.
57
+ * @param event Evento do input
58
+ */
59
+ static formatCnpjInputEvent(event: any): void;
33
60
  }
@@ -0,0 +1,173 @@
1
+ import { FormGroup, Validators, } from "@angular/forms";
2
+ import { GenericValidator } from "../utils/generic-validators";
3
+ import { FormatUtilsService } from "../utils/format-utils/format-utils.service";
4
+ export class HistoricakPixAccountBase {
5
+ constructor(formBuilder) {
6
+ this._paramsForm = new FormGroup({});
7
+ this._defaultCpfNumber = null;
8
+ this.initialValidatorOfPercentage = [Validators.required, Validators.min(0.01)];
9
+ this.pixAccountList = [];
10
+ this.maxValuePercentage = 100.0;
11
+ this.isShowPixKeyFieldValidatorMessage = false;
12
+ this.formBuilder = formBuilder;
13
+ this.createFormGroupBase();
14
+ }
15
+ phoneMask(event) {
16
+ FormatUtilsService.formatTelephoneInputEvent(event);
17
+ }
18
+ cpfMask(event) {
19
+ FormatUtilsService.formatCpfInputEvent(event);
20
+ }
21
+ cnpjMask(event) {
22
+ FormatUtilsService.formatCnpjInputEvent(event);
23
+ }
24
+ onChangePixKeyType(item, form) {
25
+ if (!item || !item.key)
26
+ return;
27
+ this.pixKeyType = item.key;
28
+ const targetForm = (typeof form !== 'undefined' && form !== null)
29
+ ? form
30
+ : this.pixAccountFormGroup;
31
+ this.isShowPixKeyFieldValidatorMessage = true;
32
+ const pixKeyControl = targetForm.get("pixKey");
33
+ if (pixKeyControl) {
34
+ pixKeyControl.reset();
35
+ }
36
+ this.setPixKeyValidators(true, targetForm);
37
+ if (item.key === "CPF") {
38
+ this.setDefaultCpfPixKey(targetForm);
39
+ }
40
+ }
41
+ onClearPixKeyType(form) {
42
+ var targetForm = (typeof form !== 'undefined' && form !== null)
43
+ ? form
44
+ : this.pixAccountFormGroup;
45
+ this.isShowPixKeyFieldValidatorMessage = false;
46
+ if (targetForm.get("pixKey")) {
47
+ targetForm.get("pixKey").reset();
48
+ }
49
+ }
50
+ setDefaultCpfPixKey(form) {
51
+ var targetForm = (typeof form !== 'undefined' && form !== null)
52
+ ? form
53
+ : this.pixAccountFormGroup;
54
+ if (this._defaultCpfNumber) {
55
+ if (targetForm.get("pixKey")) {
56
+ targetForm.get("pixKey").setValue(this._defaultCpfNumber);
57
+ }
58
+ }
59
+ else {
60
+ var sheetDocument = this._paramsForm.get("sheetDocument");
61
+ if (sheetDocument && sheetDocument.get("cpfNumber")) {
62
+ var cpf = sheetDocument.get("cpfNumber").value;
63
+ if (cpf && targetForm.get("pixKey")) {
64
+ targetForm.get("pixKey").setValue(cpf);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ createFormGroupBase() {
70
+ this.pixAccountFormGroup = this.formBuilder.group({
71
+ id: this.formBuilder.control(null),
72
+ index: this.formBuilder.control(null),
73
+ employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),
74
+ dateChange: this.formBuilder.control(null),
75
+ pixKeyType: this.formBuilder.control(null, Validators.required),
76
+ pixKey: this.formBuilder.control(null),
77
+ percentage: this.formBuilder.control(null, Validators.compose([
78
+ ...this.initialValidatorOfPercentage,
79
+ Validators.max(this.maxValuePercentage),
80
+ ])),
81
+ externalId: this.formBuilder.control(null),
82
+ customFields: this.formBuilder.control(null),
83
+ });
84
+ }
85
+ setValidatorsAccordingList(pixAccountList, index = null, isEditMode = true, form) {
86
+ var targetForm = (typeof form !== 'undefined' && form !== null)
87
+ ? form
88
+ : this.pixAccountFormGroup;
89
+ this.pixAccountList = (pixAccountList && pixAccountList.length > 0)
90
+ ? [].concat(pixAccountList)
91
+ : [];
92
+ var percentageIncluded = [];
93
+ for (var i = 0; i < this.pixAccountList.length; i++) {
94
+ var field = this.pixAccountList[i];
95
+ if (field && field.percentage && i !== index) {
96
+ percentageIncluded.push(field.percentage);
97
+ }
98
+ }
99
+ this.beforeSetPixKeyTypeValidator(targetForm);
100
+ this.setPixKeyValidators(isEditMode, targetForm);
101
+ this.validatePercentageValid(percentageIncluded, targetForm);
102
+ }
103
+ beforeSetPixKeyTypeValidator(form) {
104
+ const control = form.get("pixKeyType");
105
+ if (this.pixAccountList && this.pixAccountList.length) {
106
+ control.setValidators(Validators.compose([
107
+ Validators.required,
108
+ this.validateDuplicatePixKeyTypeBankAccount(this.pixAccountList),
109
+ ]));
110
+ }
111
+ else {
112
+ control.setValidators(Validators.required);
113
+ }
114
+ control.updateValueAndValidity();
115
+ }
116
+ setPixKeyValidators(isEditMode, form) {
117
+ const pixKey = form.get("pixKey");
118
+ switch (this.pixKeyType) {
119
+ case "TELEPHONE":
120
+ pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidPhoneNumber]));
121
+ break;
122
+ case "EMAIL":
123
+ pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidEmail]));
124
+ break;
125
+ case "CPF":
126
+ pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidCpf]));
127
+ break;
128
+ case "CNPJ":
129
+ pixKey.setValidators(Validators.compose([Validators.required, GenericValidator.isValidCnpj]));
130
+ break;
131
+ case "RANDOM_KEY":
132
+ pixKey.setValidators(Validators.required);
133
+ break;
134
+ default:
135
+ pixKey.clearValidators();
136
+ }
137
+ if (isEditMode) {
138
+ pixKey.enable();
139
+ }
140
+ pixKey.updateValueAndValidity();
141
+ }
142
+ validatePercentageValid(listValue, form) {
143
+ const percentage = form.get("percentage");
144
+ this.maxValuePercentage = listValue.reduce((acc, val) => acc - val, 100.0);
145
+ percentage.setValidators(Validators.compose([
146
+ ...this.initialValidatorOfPercentage,
147
+ Validators.max(this.maxValuePercentage),
148
+ ]));
149
+ percentage.updateValueAndValidity();
150
+ }
151
+ validateDuplicatePixKeyTypeBankAccount(listCompare) {
152
+ return (control) => {
153
+ const value = control.value;
154
+ const isDuplicate = listCompare.some((field) => value &&
155
+ field.pixKeyType.key === "BANK_ACCOUNT" &&
156
+ value.key === "BANK_ACCOUNT");
157
+ return isDuplicate ? { pixKeyTypeBankAccountDuplicate: true } : null;
158
+ };
159
+ }
160
+ get paramsForm() {
161
+ return this._paramsForm;
162
+ }
163
+ set paramsForm(value) {
164
+ this._paramsForm = value;
165
+ }
166
+ get defaultCpfNumber() {
167
+ return this._defaultCpfNumber;
168
+ }
169
+ set defaultCpfNumber(value) {
170
+ this._defaultCpfNumber = value;
171
+ }
172
+ }
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1iYXNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2hpc3RvcmljYWwtcGl4LWFjY291bnQvaGlzdG9yaWNhbC1waXgtYWNjb3VudC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBRVQsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFaEYsTUFBTSxPQUFnQix3QkFBd0I7SUFZNUMsWUFBWSxXQUF3QjtRQVYxQixnQkFBVyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLHNCQUFpQixHQUFXLElBQUksQ0FBQztRQUVwQyxpQ0FBNEIsR0FBa0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRixtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUM5Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFHM0Isc0NBQWlDLEdBQUcsS0FBSyxDQUFDO1FBRy9DLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBVTtRQUN2QixrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVU7UUFDckIsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLFFBQVEsQ0FBQyxLQUFVO1FBQ3RCLGtCQUFr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QztJQUVELElBQVcsZ0JBQWdCLENBQUMsS0FBYTtRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Hcm91cCxcbiAgICBWYWxpZGF0b3JGbixcbiAgICBWYWxpZGF0b3JzLFxuICB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuICBpbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yIH0gZnJvbSBcIi4uL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9yc1wiO1xuICBpbXBvcnQgeyBGb3JtYXRVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0LXV0aWxzL2Zvcm1hdC11dGlscy5zZXJ2aWNlXCI7XG5cbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEhpc3RvcmljYWtQaXhBY2NvdW50QmFzZSB7XG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcjtcbiAgICBwcm90ZWN0ZWQgX3BhcmFtc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdENwZk51bWJlcjogc3RyaW5nID0gbnVsbDtcblxuICAgIHB1YmxpYyBpbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDAuMDEpXTtcbiAgICBwdWJsaWMgcGl4QWNjb3VudExpc3Q6IG9iamVjdFtdID0gW107XG4gICAgcHVibGljIG1heFZhbHVlUGVyY2VudGFnZSA9IDEwMC4wO1xuICAgIHB1YmxpYyBwaXhLZXlUeXBlOiBzdHJpbmc7XG4gICAgcHVibGljIHBpeEFjY291bnRGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBwdWJsaWMgaXNTaG93UGl4S2V5RmllbGRWYWxpZGF0b3JNZXNzYWdlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICAgIHRoaXMuZm9ybUJ1aWxkZXIgPSBmb3JtQnVpbGRlcjtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwQmFzZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwaG9uZU1hc2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBGb3JtYXRVdGlsc1NlcnZpY2UuZm9ybWF0VGVsZXBob25lSW5wdXRFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNwZk1hc2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBGb3JtYXRVdGlsc1NlcnZpY2UuZm9ybWF0Q3BmSW5wdXRFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNucGpNYXNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdENucGpJbnB1dEV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW06IGFueSwgZm9ybT86IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0ua2V5KSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5waXhLZXlUeXBlID0gaXRlbS5rZXk7XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0Rm9ybSA9ICh0eXBlb2YgZm9ybSAhPT0gJ3VuZGVmaW5lZCcgJiYgZm9ybSAhPT0gbnVsbClcbiAgICAgICAgICA/IGZvcm1cbiAgICAgICAgICA6IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cDtcblxuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcGl4S2V5Q29udHJvbCA9IHRhcmdldEZvcm0uZ2V0KFwicGl4S2V5XCIpO1xuICAgICAgICBpZiAocGl4S2V5Q29udHJvbCkge1xuICAgICAgICAgICAgcGl4S2V5Q29udHJvbC5yZXNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUsIHRhcmdldEZvcm0pO1xuXG4gICAgICAgIGlmIChpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSh0YXJnZXRGb3JtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyUGl4S2V5VHlwZShmb3JtPzogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICAgIHZhciB0YXJnZXRGb3JtID0gKHR5cGVvZiBmb3JtICE9PSAndW5kZWZpbmVkJyAmJiBmb3JtICE9PSBudWxsKVxuICAgICAgICAgID8gZm9ybVxuICAgICAgICAgIDogdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwO1xuXG4gICAgICAgIHRoaXMuaXNTaG93UGl4S2V5RmllbGRWYWxpZGF0b3JNZXNzYWdlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRhcmdldEZvcm0uZ2V0KFwicGl4S2V5XCIpKSB7XG4gICAgICAgICAgdGFyZ2V0Rm9ybS5nZXQoXCJwaXhLZXlcIikucmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwdWJsaWMgc2V0RGVmYXVsdENwZlBpeEtleShmb3JtPzogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICAgIHZhciB0YXJnZXRGb3JtID0gKHR5cGVvZiBmb3JtICE9PSAndW5kZWZpbmVkJyAmJiBmb3JtICE9PSBudWxsKVxuICAgICAgICAgID8gZm9ybVxuICAgICAgICAgIDogdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwO1xuXG4gICAgICAgIGlmICh0aGlzLl9kZWZhdWx0Q3BmTnVtYmVyKSB7XG4gICAgICAgICAgaWYgKHRhcmdldEZvcm0uZ2V0KFwicGl4S2V5XCIpKSB7XG4gICAgICAgICAgICB0YXJnZXRGb3JtLmdldChcInBpeEtleVwiKS5zZXRWYWx1ZSh0aGlzLl9kZWZhdWx0Q3BmTnVtYmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNoZWV0RG9jdW1lbnQgPSB0aGlzLl9wYXJhbXNGb3JtLmdldChcInNoZWV0RG9jdW1lbnRcIik7XG4gICAgICAgICAgaWYgKHNoZWV0RG9jdW1lbnQgJiYgc2hlZXREb2N1bWVudC5nZXQoXCJjcGZOdW1iZXJcIikpIHtcbiAgICAgICAgICAgIHZhciBjcGYgPSBzaGVldERvY3VtZW50LmdldChcImNwZk51bWJlclwiKS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChjcGYgJiYgdGFyZ2V0Rm9ybS5nZXQoXCJwaXhLZXlcIikpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0Rm9ybS5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUoY3BmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRm9ybUdyb3VwQmFzZSgpOiB2b2lkIHtcbiAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBpZDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICBpbmRleDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICBlbXBsb3llZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHsgdmFsdWU6IHsgdGFibGVJZDogbnVsbCB9LCBkaXNhYmxlZDogdHJ1ZSB9KSxcbiAgICAgICAgZGF0ZUNoYW5nZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICBwaXhLZXlUeXBlOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIHBpeEtleTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICBwZXJjZW50YWdlOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhWYWx1ZVBlcmNlbnRhZ2UpLFxuICAgICAgICAgIF0pXG4gICAgICAgICksXG4gICAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgY3VzdG9tRmllbGRzOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0VmFsaWRhdG9yc0FjY29yZGluZ0xpc3QoXG4gICAgICAgIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSxcbiAgICAgICAgaW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsLFxuICAgICAgICBpc0VkaXRNb2RlOiBib29sZWFuID0gdHJ1ZSxcbiAgICAgICAgZm9ybT86IEZvcm1Hcm91cFxuICAgICAgKTogdm9pZCB7XG4gICAgICAgIHZhciB0YXJnZXRGb3JtID0gKHR5cGVvZiBmb3JtICE9PSAndW5kZWZpbmVkJyAmJiBmb3JtICE9PSBudWxsKVxuICAgICAgICAgID8gZm9ybVxuICAgICAgICAgIDogdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwO1xuXG4gICAgICAgIHRoaXMucGl4QWNjb3VudExpc3QgPSAocGl4QWNjb3VudExpc3QgJiYgcGl4QWNjb3VudExpc3QubGVuZ3RoID4gMClcbiAgICAgICAgICA/IFtdLmNvbmNhdChwaXhBY2NvdW50TGlzdClcbiAgICAgICAgICA6IFtdO1xuXG4gICAgICAgIHZhciBwZXJjZW50YWdlSW5jbHVkZWQ6IG51bWJlcltdID0gW107XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGZpZWxkOiBhbnkgPSB0aGlzLnBpeEFjY291bnRMaXN0W2ldO1xuICAgICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC5wZXJjZW50YWdlICYmIGkgIT09IGluZGV4KSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlSW5jbHVkZWQucHVzaChmaWVsZC5wZXJjZW50YWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IodGFyZ2V0Rm9ybSk7XG4gICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlLCB0YXJnZXRGb3JtKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBlcmNlbnRhZ2VWYWxpZChwZXJjZW50YWdlSW5jbHVkZWQsIHRhcmdldEZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBiZWZvcmVTZXRQaXhLZXlUeXBlVmFsaWRhdG9yKGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KFwicGl4S2V5VHlwZVwiKTtcblxuICAgICAgaWYgKHRoaXMucGl4QWNjb3VudExpc3QgJiYgdGhpcy5waXhBY2NvdW50TGlzdC5sZW5ndGgpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFxuICAgICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudCh0aGlzLnBpeEFjY291bnRMaXN0KSxcbiAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFBpeEtleVZhbGlkYXRvcnMoaXNFZGl0TW9kZTogYm9vbGVhbiwgZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgICBjb25zdCBwaXhLZXkgPSBmb3JtLmdldChcInBpeEtleVwiKTtcbiAgICAgIHN3aXRjaCAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJURUxFUEhPTkVcIjpcbiAgICAgICAgICBwaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEdlbmVyaWNWYWxpZGF0b3IuaXNWYWxpZFBob25lTnVtYmVyXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRU1BSUxcIjpcbiAgICAgICAgICBwaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEdlbmVyaWNWYWxpZGF0b3IuaXNWYWxpZEVtYWlsXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgcGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRDcGZdKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgcGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRDbnBqXSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiUkFORE9NX0tFWVwiOlxuICAgICAgICAgIHBpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHBpeEtleS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgcGl4S2V5LmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICBwaXhLZXkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWxpZGF0ZVBlcmNlbnRhZ2VWYWxpZChsaXN0VmFsdWU6IG51bWJlcltdLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSBmb3JtLmdldChcInBlcmNlbnRhZ2VcIik7XG4gICAgICB0aGlzLm1heFZhbHVlUGVyY2VudGFnZSA9IGxpc3RWYWx1ZS5yZWR1Y2UoKGFjYywgdmFsKSA9PiBhY2MgLSB2YWwsIDEwMC4wKTtcblxuICAgICAgcGVyY2VudGFnZS5zZXRWYWxpZGF0b3JzKFxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgIC4uLnRoaXMuaW5pdGlhbFZhbGlkYXRvck9mUGVyY2VudGFnZSxcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heCh0aGlzLm1heFZhbHVlUGVyY2VudGFnZSksXG4gICAgICAgIF0pXG4gICAgICApO1xuXG4gICAgICBwZXJjZW50YWdlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRHVwbGljYXRlUGl4S2V5VHlwZUJhbmtBY2NvdW50KGxpc3RDb21wYXJlOiBvYmplY3RbXSkge1xuICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICAgICAgY29uc3QgaXNEdXBsaWNhdGUgPSBsaXN0Q29tcGFyZS5zb21lKFxuICAgICAgICAgIChmaWVsZDogYW55KSA9PlxuICAgICAgICAgICAgdmFsdWUgJiZcbiAgICAgICAgICAgIGZpZWxkLnBpeEtleVR5cGUua2V5ID09PSBcIkJBTktfQUNDT1VOVFwiICYmXG4gICAgICAgICAgICB2YWx1ZS5rZXkgPT09IFwiQkFOS19BQ0NPVU5UXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGlzRHVwbGljYXRlID8geyBwaXhLZXlUeXBlQmFua0FjY291bnREdXBsaWNhdGU6IHRydWUgfSA6IG51bGw7XG4gICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyYW1zRm9ybSgpOiBGb3JtR3JvdXAge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcmFtc0Zvcm07XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBwYXJhbXNGb3JtKHZhbHVlOiBGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuX3BhcmFtc0Zvcm0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRDcGZOdW1iZXIoKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0Q3BmTnVtYmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGVmYXVsdENwZk51bWJlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICB0aGlzLl9kZWZhdWx0Q3BmTnVtYmVyID0gdmFsdWU7XG4gICAgfVxuICB9XG4iXX0=