@hmcts/ccpay-web-component 5.0.1-beta63 → 5.0.1-beta70
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/bundles/hmcts-ccpay-web-component.umd.js +327 -331
- package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
- package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
- package/esm2015/hmcts-ccpay-web-component.js +2 -2
- package/esm2015/lib/components/add-remission/add-remission.component.js +24 -36
- package/esm2015/lib/components/case-transactions/case-transactions.component.js +32 -4
- package/esm2015/lib/components/payment-view/payment-view.component.js +3 -4
- package/esm2015/lib/components/pba-payment/pba-payment.component.js +199 -0
- package/esm2015/lib/components/process-refund/process-refund.component.js +8 -3
- package/esm2015/lib/components/refund-status/refund-status.component.js +3 -5
- package/esm2015/lib/components/service-request/service-request.component.js +28 -9
- package/esm2015/lib/interfaces/IserviceRequestCardPayment.js +23 -0
- package/esm2015/lib/interfaces/IserviceRequestPbaPayment.js +28 -0
- package/esm2015/lib/interfaces/PostRefundRetroRemission.js +2 -16
- package/esm2015/lib/payment-lib.component.js +6 -4
- package/esm2015/lib/payment-lib.module.js +3 -5
- package/esm2015/lib/services/payment-view/payment-view.service.js +29 -1
- package/esm5/hmcts-ccpay-web-component.js +2 -2
- package/esm5/lib/components/add-remission/add-remission.component.js +24 -40
- package/esm5/lib/components/case-transactions/case-transactions.component.js +38 -4
- package/esm5/lib/components/payment-view/payment-view.component.js +3 -4
- package/esm5/lib/components/pba-payment/pba-payment.component.js +216 -0
- package/esm5/lib/components/process-refund/process-refund.component.js +8 -3
- package/esm5/lib/components/refund-status/refund-status.component.js +3 -5
- package/esm5/lib/components/service-request/service-request.component.js +32 -9
- package/esm5/lib/interfaces/IserviceRequestCardPayment.js +22 -0
- package/esm5/lib/interfaces/IserviceRequestPbaPayment.js +25 -0
- package/esm5/lib/interfaces/PostRefundRetroRemission.js +2 -15
- package/esm5/lib/payment-lib.component.js +4 -3
- package/esm5/lib/payment-lib.module.js +3 -5
- package/esm5/lib/services/payment-view/payment-view.service.js +42 -1
- package/fesm2015/hmcts-ccpay-web-component.js +300 -309
- package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
- package/fesm5/hmcts-ccpay-web-component.js +331 -327
- package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
- package/hmcts-ccpay-web-component.d.ts +1 -1
- package/hmcts-ccpay-web-component.metadata.json +1 -1
- package/lib/components/add-remission/add-remission.component.d.ts +0 -2
- package/lib/components/case-transactions/case-transactions.component.d.ts +5 -0
- package/lib/components/pba-payment/pba-payment.component.d.ts +27 -0
- package/lib/components/process-refund/process-refund.component.d.ts +1 -0
- package/lib/components/refund-status/refund-status.component.d.ts +0 -1
- package/lib/components/service-request/service-request.component.d.ts +2 -0
- package/lib/interfaces/IserviceRequestCardPayment.d.ts +6 -0
- package/lib/interfaces/IserviceRequestPbaPayment.d.ts +7 -0
- package/lib/interfaces/PostRefundRetroRemission.d.ts +1 -11
- package/lib/payment-lib.component.d.ts +2 -0
- package/lib/services/payment-view/payment-view.service.d.ts +5 -0
- package/package.json +1 -1
- package/esm2015/lib/components/contact-details/contact-details.component.js +0 -299
- package/esm5/lib/components/contact-details/contact-details.component.js +0 -316
- package/lib/components/contact-details/contact-details.component.d.ts +0 -36
|
@@ -60,7 +60,6 @@ export declare class AddRemissionComponent implements OnInit {
|
|
|
60
60
|
other: string;
|
|
61
61
|
};
|
|
62
62
|
};
|
|
63
|
-
contactDetailsObj: any[];
|
|
64
63
|
remissionForm: FormGroup;
|
|
65
64
|
hasErrors: boolean;
|
|
66
65
|
viewStatus: string;
|
|
@@ -137,7 +136,6 @@ export declare class AddRemissionComponent implements OnInit {
|
|
|
137
136
|
confirmRetroRefund(): void;
|
|
138
137
|
selectRadioButton(key: any, value: any): void;
|
|
139
138
|
selectchange(args: any): void;
|
|
140
|
-
getContactDetails(obj: any): void;
|
|
141
139
|
gotoServiceRequestPage(event: any): void;
|
|
142
140
|
gotoCasetransationPage(): void;
|
|
143
141
|
gotoCasetransationPageCancelBtnClicked(event: Event): void;
|
|
@@ -67,6 +67,7 @@ export declare class CaseTransactionsComponent implements OnInit {
|
|
|
67
67
|
isAddRemissionEnable: boolean;
|
|
68
68
|
orderRemissionDetails: any[];
|
|
69
69
|
orderLevelFees: IOrderReferenceFee[];
|
|
70
|
+
ispaymentGroupApisuccess: boolean;
|
|
70
71
|
cpoDetails: any;
|
|
71
72
|
orderRef: string;
|
|
72
73
|
orderStatus: string;
|
|
@@ -86,6 +87,8 @@ export declare class CaseTransactionsComponent implements OnInit {
|
|
|
86
87
|
isAddRemissionBtnEnabled: boolean;
|
|
87
88
|
isRefundRemissionBtnEnable: boolean;
|
|
88
89
|
allowedRolesToAccessRefund: string[];
|
|
90
|
+
isEligible4PBAPayment: string[];
|
|
91
|
+
currentDate: Date;
|
|
89
92
|
isFromServiceRequestPage: boolean;
|
|
90
93
|
navigationpage: string;
|
|
91
94
|
remissionFeeAmt: number;
|
|
@@ -122,5 +125,7 @@ export declare class CaseTransactionsComponent implements OnInit {
|
|
|
122
125
|
chkIssueRefundBtnEnable(payment: IPayment): boolean;
|
|
123
126
|
chkIsRefundRemissionBtnEnable(): boolean;
|
|
124
127
|
check4AllowedRoles2AccessRefund: () => boolean;
|
|
128
|
+
check4AllowedRoles2AccessPBApayment: () => boolean;
|
|
125
129
|
allowFurtherAccessAfter4Days: (payment: IPayment) => boolean;
|
|
130
|
+
loadPBAAccountPage(orderRef: IPayment): void;
|
|
126
131
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { PaymentViewService } from '../../services/payment-view/payment-view.service';
|
|
3
|
+
import { PaymentLibComponent } from '../../payment-lib.component';
|
|
4
|
+
export declare class PbaPaymentComponent implements OnInit {
|
|
5
|
+
private paymentLibComponent;
|
|
6
|
+
private paymentViewService;
|
|
7
|
+
pbaPayOrderRef: any;
|
|
8
|
+
viewStatus: string;
|
|
9
|
+
pbaAccountList: string[];
|
|
10
|
+
errorMsg: any;
|
|
11
|
+
isCardPaymentSuccess: boolean;
|
|
12
|
+
isInSufficiantFund: boolean;
|
|
13
|
+
isPBAAccountNotExist: boolean;
|
|
14
|
+
isPBAServerError: boolean;
|
|
15
|
+
isGetPBAAccountSucceed: boolean;
|
|
16
|
+
selectedPbaAccount: string;
|
|
17
|
+
pbaAccountRef: string;
|
|
18
|
+
isContinueButtondisabled: boolean;
|
|
19
|
+
isPBAAccountPaymentSuccess: boolean;
|
|
20
|
+
pbaAccountrPaymentResult: any;
|
|
21
|
+
constructor(paymentLibComponent: PaymentLibComponent, paymentViewService: PaymentViewService);
|
|
22
|
+
ngOnInit(): void;
|
|
23
|
+
selectpbaaccount(args: any): void;
|
|
24
|
+
saveAndContinue(): void;
|
|
25
|
+
cardPayment(): void;
|
|
26
|
+
gotoCasetransationPage(): void;
|
|
27
|
+
}
|
|
@@ -41,6 +41,7 @@ export declare class ProcessRefundComponent implements OnInit {
|
|
|
41
41
|
successMsg: string;
|
|
42
42
|
navigationpage: string;
|
|
43
43
|
ccdCaseNumber: string;
|
|
44
|
+
isFromRefundListPage: boolean;
|
|
44
45
|
isConfirmButtondisabled: boolean;
|
|
45
46
|
constructor(RefundsService: RefundsService, formBuilder: FormBuilder, OrderslistService: OrderslistService, paymentLibComponent: PaymentLibComponent, router: Router, activeRoute: ActivatedRoute);
|
|
46
47
|
ngOnInit(): void;
|
|
@@ -38,7 +38,6 @@ export declare class RefundStatusComponent implements OnInit {
|
|
|
38
38
|
refundHasError: boolean;
|
|
39
39
|
refundReasons: any[];
|
|
40
40
|
refundStatusHistories: IRefundStatus[];
|
|
41
|
-
refundNotifications: IRefundStatus[];
|
|
42
41
|
refundReference: string;
|
|
43
42
|
refundAmount: string;
|
|
44
43
|
refundCode: string;
|
|
@@ -27,6 +27,7 @@ export declare class ServiceRequestComponent implements OnInit {
|
|
|
27
27
|
orderRemissionTotal: number;
|
|
28
28
|
takePayment: boolean;
|
|
29
29
|
ccdCaseNumber: boolean;
|
|
30
|
+
isServiceRequest: string;
|
|
30
31
|
servicerequest: string;
|
|
31
32
|
excReference: string;
|
|
32
33
|
paymentGroups: any[];
|
|
@@ -97,6 +98,7 @@ export declare class ServiceRequestComponent implements OnInit {
|
|
|
97
98
|
check4AllowedRoles2AccessRefund: () => boolean;
|
|
98
99
|
allowFurtherAccessAfter4Days: (payment: IPayment) => boolean;
|
|
99
100
|
issueRefund(payment: IPayment): void;
|
|
101
|
+
goToServiceRequestPage(event: any): void;
|
|
100
102
|
goToPayementView(paymentGroupReference: string, paymentReference: string, paymentMethod: string): void;
|
|
101
103
|
goToPaymentViewComponent(paymentGroup: any): void;
|
|
102
104
|
resetOrderData(): void;
|
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
export declare class PostRefundRetroRemission {
|
|
2
2
|
payment_reference: string;
|
|
3
3
|
refund_reason: string;
|
|
4
|
-
|
|
5
|
-
address_line?: string;
|
|
6
|
-
city?: string;
|
|
7
|
-
country?: string;
|
|
8
|
-
county?: string;
|
|
9
|
-
email?: string;
|
|
10
|
-
notification_type: string;
|
|
11
|
-
postal_code?: string;
|
|
12
|
-
template_id: string;
|
|
13
|
-
};
|
|
14
|
-
constructor(payment_reference: string, refund_reason: string, contactDeatils: any);
|
|
4
|
+
constructor(payment_reference: string, refund_reason: string);
|
|
15
5
|
}
|
|
@@ -2,6 +2,7 @@ import { ChangeDetectorRef, OnInit } from '@angular/core';
|
|
|
2
2
|
import { PaymentLibService } from './payment-lib.service';
|
|
3
3
|
import { IBSPayments } from './interfaces/IBSPayments';
|
|
4
4
|
import { OrderslistService } from './services/orderslist.service';
|
|
5
|
+
import { IPayment } from './interfaces/IPayment';
|
|
5
6
|
export declare class PaymentLibComponent implements OnInit {
|
|
6
7
|
private paymentLibService;
|
|
7
8
|
private cd;
|
|
@@ -50,6 +51,7 @@ export declare class PaymentLibComponent implements OnInit {
|
|
|
50
51
|
isFromRefundStatusPage: boolean;
|
|
51
52
|
iscancelClicked: boolean;
|
|
52
53
|
isFromPaymentDetailPage: boolean;
|
|
54
|
+
pbaPayOrderRef: IPayment;
|
|
53
55
|
isTakePayment: boolean;
|
|
54
56
|
orderDetail: any[];
|
|
55
57
|
orderRef: string;
|
|
@@ -15,6 +15,8 @@ import { AllocatePaymentRequest } from '../../interfaces/AllocatePaymentRequest'
|
|
|
15
15
|
import { IAllocationPaymentsRequest } from '../../interfaces/IAllocationPaymentsRequest';
|
|
16
16
|
import { IOrderReferenceFee } from '../../interfaces/IOrderReferenceFee';
|
|
17
17
|
import { BehaviorSubject } from 'rxjs';
|
|
18
|
+
import { IserviceRequestPbaPayment } from '../../interfaces/IserviceRequestPbaPayment';
|
|
19
|
+
import { IserviceRequestCardPayment } from '../../interfaces/IserviceRequestCardPayment';
|
|
18
20
|
import { AddRetroRemissionRequest } from '../../interfaces/AddRetroRemissionRequest';
|
|
19
21
|
import { PostRefundRetroRemission } from '../../interfaces/PostRefundRetroRemission';
|
|
20
22
|
import { PostIssueRefundRetroRemission } from '../../interfaces/PostIssueRefundRetroRemission';
|
|
@@ -30,6 +32,9 @@ export declare class PaymentViewService {
|
|
|
30
32
|
getPaymentDetails(paymentReference: string, paymentMethod: string): Observable<IPayment>;
|
|
31
33
|
getPaymentGroupDetails(paymentGroupReference: string): Observable<IPaymentGroup>;
|
|
32
34
|
getApportionPaymentDetails(paymentReference: string): Observable<IPaymentGroup>;
|
|
35
|
+
getPBAaccountDetails(): Observable<any>;
|
|
36
|
+
postWays2PayCardPayment(serviceRef: string, body: IserviceRequestCardPayment): Observable<any>;
|
|
37
|
+
postPBAaccountPayment(serviceRef: string, body: IserviceRequestPbaPayment): Observable<any>;
|
|
33
38
|
postBSPayments(body: AllocatePaymentRequest): Observable<any>;
|
|
34
39
|
postBSUnidentifiedPayments(body: UnidentifiedPaymentsRequest): Observable<any>;
|
|
35
40
|
postBSUnsolicitedPayments(body: UnsolicitedPaymentsRequest): Observable<any>;
|
package/package.json
CHANGED
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { Component, Output, EventEmitter } from '@angular/core';
|
|
6
|
-
import { FormBuilder, Validators, FormControl } from '@angular/forms';
|
|
7
|
-
import { PaymentLibComponent } from '../../payment-lib.component';
|
|
8
|
-
export class ContactDetailsComponent {
|
|
9
|
-
/**
|
|
10
|
-
* @param {?} formBuilder
|
|
11
|
-
* @param {?} paymentLibComponent
|
|
12
|
-
*/
|
|
13
|
-
constructor(formBuilder, paymentLibComponent) {
|
|
14
|
-
this.formBuilder = formBuilder;
|
|
15
|
-
this.paymentLibComponent = paymentLibComponent;
|
|
16
|
-
this.assignContactDetails = new EventEmitter();
|
|
17
|
-
this.pageTitle = 'Payment status history';
|
|
18
|
-
this.isEmailSAddressClicked = true;
|
|
19
|
-
this.isPostcodeClicked = false;
|
|
20
|
-
this.isManualAddressClicked = false;
|
|
21
|
-
this.isEmailEmpty = false;
|
|
22
|
-
this.emailHasError = false;
|
|
23
|
-
this.isPostcodeEmpty = false;
|
|
24
|
-
this.postcodeHasError = false;
|
|
25
|
-
this.isaddressLine1Empty = false;
|
|
26
|
-
this.addressLine1HasError = false;
|
|
27
|
-
this.addressLine2HasError = false;
|
|
28
|
-
this.isTownOrCityEmpty = false;
|
|
29
|
-
this.townOrCityHasError = false;
|
|
30
|
-
this.isCountyEmpty = false;
|
|
31
|
-
this.countyHasError = false;
|
|
32
|
-
this.isMPostcodeEmpty = false;
|
|
33
|
-
this.mpostcodeHasError = false;
|
|
34
|
-
this.isCountryEmpty = false;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* @return {?}
|
|
38
|
-
*/
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, false, false, false, false], 'all');
|
|
41
|
-
this.emailAddressForm = this.formBuilder.group({
|
|
42
|
-
email: new FormControl('', Validators.compose([
|
|
43
|
-
Validators.required,
|
|
44
|
-
Validators.pattern('^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$')
|
|
45
|
-
]))
|
|
46
|
-
});
|
|
47
|
-
this.postCodeForm = this.formBuilder.group({
|
|
48
|
-
postcode: new FormControl('', Validators.compose([
|
|
49
|
-
Validators.required,
|
|
50
|
-
Validators.pattern('^([A-Z]{1,2}[0-9]{1,2}[A-Z]{0,1} ?[0-9][A-Z]{2})')
|
|
51
|
-
]))
|
|
52
|
-
});
|
|
53
|
-
this.manualAddressForm = this.formBuilder.group({
|
|
54
|
-
addressl1: new FormControl('', Validators.compose([
|
|
55
|
-
Validators.required,
|
|
56
|
-
Validators.pattern('^[a-zA-Z0-9\s,\'-]*$')
|
|
57
|
-
])),
|
|
58
|
-
addressl2: new FormControl('', Validators.compose([
|
|
59
|
-
Validators.pattern('^[a-zA-Z0-9\s,\'-]*$')
|
|
60
|
-
])),
|
|
61
|
-
townorcity: new FormControl('', Validators.compose([
|
|
62
|
-
Validators.required,
|
|
63
|
-
Validators.pattern('^[a-zA-Z0-9\s,\'-]*$')
|
|
64
|
-
])),
|
|
65
|
-
county: new FormControl('', Validators.compose([
|
|
66
|
-
Validators.required,
|
|
67
|
-
Validators.pattern('^[a-zA-Z0-9\s,\'-]*$')
|
|
68
|
-
])),
|
|
69
|
-
mpostcode: new FormControl('', Validators.compose([
|
|
70
|
-
Validators.required,
|
|
71
|
-
Validators.pattern('^([A-Z]{1,2}[0-9]{1,2}[A-Z]{0,1} ?[0-9][A-Z]{2})')
|
|
72
|
-
])),
|
|
73
|
-
country: new FormControl('', Validators.compose([
|
|
74
|
-
Validators.required
|
|
75
|
-
]))
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* @param {?} type
|
|
80
|
-
* @param {?} isLinkedClied
|
|
81
|
-
* @return {?}
|
|
82
|
-
*/
|
|
83
|
-
selectContactOption(type, isLinkedClied) {
|
|
84
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], 'all');
|
|
85
|
-
if (type === 'Email' && isLinkedClied === 'false') {
|
|
86
|
-
this.isEmailSAddressClicked = true;
|
|
87
|
-
this.isPostcodeClicked = false;
|
|
88
|
-
this.isManualAddressClicked = false;
|
|
89
|
-
}
|
|
90
|
-
else if (type === 'Postcode' && isLinkedClied === 'false') {
|
|
91
|
-
this.isEmailSAddressClicked = false;
|
|
92
|
-
this.isPostcodeClicked = true;
|
|
93
|
-
this.isManualAddressClicked = false;
|
|
94
|
-
}
|
|
95
|
-
else if (type === 'Postcode' && isLinkedClied === 'true') {
|
|
96
|
-
this.isEmailSAddressClicked = false;
|
|
97
|
-
this.isPostcodeClicked = true;
|
|
98
|
-
this.isManualAddressClicked = true;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* @return {?}
|
|
103
|
-
*/
|
|
104
|
-
finalFormSubmit() {
|
|
105
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], 'all');
|
|
106
|
-
if (this.isEmailSAddressClicked) {
|
|
107
|
-
/** @type {?} */
|
|
108
|
-
const emailField = this.emailAddressForm.controls.email;
|
|
109
|
-
if (this.emailAddressForm.dirty && this.emailAddressForm.valid) {
|
|
110
|
-
this.assignContactDetails.emit({ email: emailField.value, notificationType: 'EMAIL' });
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
if (emailField.value == '') {
|
|
114
|
-
this.resetForm([true, false, false, false, false, false, false, false, false, false, false, false, false, false], 'email');
|
|
115
|
-
}
|
|
116
|
-
if (emailField.value != '' && emailField.invalid) {
|
|
117
|
-
this.resetForm([false, true, false, false, false, false, false, false, false, false, false, false, false, false], 'email');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else if (this.isPostcodeClicked && !this.isManualAddressClicked) {
|
|
122
|
-
this.postcodeValidation();
|
|
123
|
-
}
|
|
124
|
-
else if (this.isPostcodeClicked && this.isManualAddressClicked) {
|
|
125
|
-
/** @type {?} */
|
|
126
|
-
const fieldCtrls = this.manualAddressForm.controls;
|
|
127
|
-
if (this.manualAddressForm.dirty && this.manualAddressForm.valid) {
|
|
128
|
-
this.assignContactDetails.emit({ address: {
|
|
129
|
-
address1: fieldCtrls.addressl1.value + '' + fieldCtrls.addressl2.value,
|
|
130
|
-
town: fieldCtrls.townorcity.value,
|
|
131
|
-
county: fieldCtrls.county.value,
|
|
132
|
-
mpostcode: fieldCtrls.mpostcode.value,
|
|
133
|
-
country: fieldCtrls.country.value,
|
|
134
|
-
}, notificationType: 'LETTER' });
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
if (fieldCtrls.addressl1.value == '') {
|
|
138
|
-
this.resetForm([false, false, false, false, true, false, false, false, false, false, false, false, false, false], 'address1');
|
|
139
|
-
}
|
|
140
|
-
if (fieldCtrls.addressl1.value != '' && fieldCtrls.addressl1.invalid) {
|
|
141
|
-
this.resetForm([false, false, false, false, false, true, false, false, false, false, false, false, false, false], 'address1');
|
|
142
|
-
}
|
|
143
|
-
if (fieldCtrls.addressl2.value != '' && fieldCtrls.addressl2.invalid) {
|
|
144
|
-
this.resetForm([false, false, false, false, false, false, true, false, false, false, false, false, false, false], 'address2');
|
|
145
|
-
}
|
|
146
|
-
if (fieldCtrls.townorcity.value == '') {
|
|
147
|
-
this.resetForm([false, false, false, false, false, false, false, true, false, false, false, false, false, false], 'town');
|
|
148
|
-
}
|
|
149
|
-
if (fieldCtrls.townorcity.value != '' && fieldCtrls.townorcity.invalid) {
|
|
150
|
-
this.resetForm([false, false, false, false, false, false, false, false, true, false, false, false, false, false], 'town');
|
|
151
|
-
}
|
|
152
|
-
if (fieldCtrls.county.value == '') {
|
|
153
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, true, false, false, false, false], 'county');
|
|
154
|
-
}
|
|
155
|
-
if (fieldCtrls.county.value != '' && fieldCtrls.county.invalid) {
|
|
156
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, true, false, false, false], 'county');
|
|
157
|
-
}
|
|
158
|
-
if (fieldCtrls.mpostcode.value == '') {
|
|
159
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, false, true, false, false], 'mpostcode');
|
|
160
|
-
}
|
|
161
|
-
if (fieldCtrls.mpostcode.value != '' && fieldCtrls.mpostcode.invalid) {
|
|
162
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, false, false, true, false], 'mpostcode');
|
|
163
|
-
}
|
|
164
|
-
if (fieldCtrls.country.value == '') {
|
|
165
|
-
this.resetForm([false, false, false, false, false, false, false, false, false, false, false, false, false, true], 'country');
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* @return {?}
|
|
172
|
-
*/
|
|
173
|
-
postcodeValidation() {
|
|
174
|
-
/** @type {?} */
|
|
175
|
-
const postcodeField = this.postCodeForm.controls.postcode;
|
|
176
|
-
if (this.postCodeForm.dirty && this.postCodeForm.valid) {
|
|
177
|
-
this.assignContactDetails.emit({});
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
if (postcodeField.value == '') {
|
|
181
|
-
this.resetForm([false, false, true, false, false, false, false, false, false, false, false, false, false], 'postcode');
|
|
182
|
-
}
|
|
183
|
-
if (postcodeField.value != '' && postcodeField.invalid) {
|
|
184
|
-
this.resetForm([false, false, false, true, false, false, false, false, false, false, false, false, false], 'postcode');
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* @param {?} val
|
|
190
|
-
* @param {?} field
|
|
191
|
-
* @return {?}
|
|
192
|
-
*/
|
|
193
|
-
resetForm(val, field) {
|
|
194
|
-
if (field === 'email' || field === 'all') {
|
|
195
|
-
this.isEmailEmpty = val[0];
|
|
196
|
-
this.emailHasError = val[1];
|
|
197
|
-
}
|
|
198
|
-
if (field === 'postcode' || field === 'all') {
|
|
199
|
-
this.isPostcodeEmpty = val[2];
|
|
200
|
-
this.postcodeHasError = val[3];
|
|
201
|
-
}
|
|
202
|
-
if (field === 'address1' || field === 'all') {
|
|
203
|
-
this.isaddressLine1Empty = val[4];
|
|
204
|
-
this.addressLine1HasError = val[5];
|
|
205
|
-
}
|
|
206
|
-
if (field === 'address2' || field === 'all') {
|
|
207
|
-
this.addressLine2HasError = val[6];
|
|
208
|
-
}
|
|
209
|
-
if (field === 'town' || field === 'all') {
|
|
210
|
-
this.isTownOrCityEmpty = val[7];
|
|
211
|
-
this.townOrCityHasError = val[8];
|
|
212
|
-
}
|
|
213
|
-
if (field === 'county' || field === 'all') {
|
|
214
|
-
this.isCountyEmpty = val[9];
|
|
215
|
-
this.countyHasError = val[10];
|
|
216
|
-
}
|
|
217
|
-
if (field === 'mpostcode' || field === 'all') {
|
|
218
|
-
this.isMPostcodeEmpty = val[11];
|
|
219
|
-
this.mpostcodeHasError = val[12];
|
|
220
|
-
}
|
|
221
|
-
if (field === 'country' || field === 'all') {
|
|
222
|
-
this.isCountryEmpty = val[13];
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
ContactDetailsComponent.decorators = [
|
|
227
|
-
{ type: Component, args: [{
|
|
228
|
-
selector: 'ccpay-contact-details',
|
|
229
|
-
template: "<fieldset class=\"govuk-fieldset contact-details--size\">\n <hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\">\n <div class=\"govuk-form-group\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s govuk-font19px\">\n Contact information\n </legend>\n <div id=\"contact-hint\" class=\"govuk-hint govuk-font19px\">\n Notifications will be sent via email or post when this refund is issued or rejected. You can only choose one option.\n </div>\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\">\n <div class=\"govuk-radios govuk-radios--conditional\" data-module=\"govuk-radios\">\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"contact\" name=\"contact\" (click)=\"selectContactOption('Email', 'false')\" type=\"radio\" value=\"email\" checked=\"\" aria-controls=\"conditional-contact\" aria-expanded=\"true\">\n <label class=\"govuk-label govuk-radios__label govuk-font19px\" for=\"contact\">\n Email\n </label>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"conditional-contact-email\" *ngIf=\"isEmailSAddressClicked\">\n <form [formGroup]=\"emailAddressForm\" novalidate>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label \" for=\"email\">\n <span class=\"govuk-hint govuk-font19px\">Information about this refund will be sent to this email address.</span>\n </label>\n\n <div id=\"email-hint\" class=\"govuk-hint\">\n </div>\n <input class=\"govuk-input\" id=\"email\" name=\"\" type=\"email\" [ngClass]=\"{ 'inline-error-class': isEmailEmpty || emailHasError }\" formControlName=\"email\" aria-describedby=\"email-hint\">\n <p class=\"inline-error-message\" *ngIf=\"isEmailEmpty || emailHasError\">\n <span *ngIf=\"isEmailEmpty\">Enter a email address.</span>\n <span *ngIf=\"emailHasError\">Enter a valid email address.</span>\n </p>\n </div>\n </form>\n </div>\n <div class=\"govuk-radios__item\">\n <input class=\"govuk-radios__input\" id=\"contact-2\" name=\"contact\" (click)=\"selectContactOption('Postcode', 'false')\" type=\"radio\" value=\"post\" aria-controls=\"conditional-contact-2\" aria-expanded=\"false\">\n <label class=\"govuk-label govuk-radios__label govuk-font19px\" for=\"contact-2\">\n Post\n </label>\n </div>\n <div class=\"govuk-radios__conditional govuk-radios__conditional--hidden\" id=\"conditional-contact-postcode\" *ngIf=\"isPostcodeClicked && !isManualAddressClicked\">\n <form [formGroup]=\"postCodeForm\" novalidate>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-font19px\" for=\"address-postcode\">\n <span class=\"govuk-hint govuk-font19px\">Information about this refund will be sent to this address.</span>Postcode\n </label>\n <input class=\"govuk-input govuk-input--width-10\" id=\"address-postcode\" name=\"address-postcode\" [ngClass]=\"{ 'inline-error-class': isPostcodeEmpty || postcodeHasError }\" formControlName=\"postcode\" type=\"text\" autocomplete=\"postal-code\">\n <p class=\"inline-error-message\" *ngIf=\"isPostcodeEmpty || postcodeHasError\">\n <span *ngIf=\"isPostcodeEmpty\">Enter a postcode.</span>\n <span *ngIf=\"postcodeHasError\">Enter a valid postcode.</span>\n </p> </div>\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-button--secondary govuk-font19px\" (click)=\"postcodeValidation()\" data-module=\"govuk-button\">\n Find address\n </button>\n </div>\n </form>\n <details class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span class=\"govuk-details__summary-text govuk-font19px\">\n <a href=\"Javascript:void(0);\" (click)=\"selectContactOption('Postcode', 'true')\"> Enter address manually</a>\n </span>\n </summary>\n </details>\n </div>\n <div class=\"govuk-radios__conditional\" id=\"conditional-contact-manual\" *ngIf=\"isPostcodeClicked && isManualAddressClicked\">\n <form [formGroup]=\"manualAddressForm\" novalidate>\n\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-font19px\" for=\"address-line-1\">\n <span class=\"govuk-hint govuk-font19px\">Information about this refund will be sent to this address.</span>Building and street <span class=\"govuk-visually-hidden\">line 1 of 2</span>\n </label>\n <input class=\"govuk-input govuk-font19px\" id=\"address-line-1\" name=\"address-line-1\" [ngClass]=\"{ 'inline-error-class': isaddressLine1Empty || addressLine1HasError }\" formControlName=\"addressl1\" type=\"text\" autocomplete=\"address-line1\">\n <p class=\"inline-error-message\" *ngIf=\"isaddressLine1Empty || addressLine1HasError\">\n <span *ngIf=\"isaddressLine1Empty\">Enter a Building and street.</span>\n <span *ngIf=\"addressLine1HasError\">Enter a valid Building and street.</span>\n </p> \n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label\" for=\"address-line-2\">\n <span class=\"govuk-visually-hidden govuk-font19px\">Building and street line 2 of 2</span>\n </label>\n <input class=\"govuk-input govuk-font19px\" id=\"address-line-2\" name=\"address-line-2\" [ngClass]=\"{ 'inline-error-class': addressLine2HasError}\" formControlName=\"addressl2\" type=\"text\" autocomplete=\"address-line2\">\n <p class=\"inline-error-message\" *ngIf=\"addressLine2HasError\">\n <span *ngIf=\"addressLine2HasError\">Enter a valid Building and street line 2 of 2.</span>\n </p> \n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-font19px\" for=\"address-town\">\n Town or city\n </label>\n <input class=\"govuk-input govuk-!-width-two-thirds govuk-font19px\" id=\"address-town\" name=\"address-town\" [ngClass]=\"{ 'inline-error-class': isTownOrCityEmpty || townOrCityHasError}\" formControlName=\"townorcity\" type=\"text\" autocomplete=\"address-level2\">\n <p class=\"inline-error-message\" *ngIf=\"isTownOrCityEmpty || townOrCityHasError\">\n <span *ngIf=\"isTownOrCityEmpty\">Enter a town or city.</span>\n <span *ngIf=\"townOrCityHasError\">Enter a town or city.</span>\n </p> \n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-font19px\" for=\"address-county\">\n County\n </label>\n <input class=\"govuk-input govuk-!-width-two-thirds govuk-font19px\" id=\"address-county\" [ngClass]=\"{ 'inline-error-class': isCountyEmpty || countyHasError}\" formControlName=\"county\" name=\"address-county\" type=\"text\">\n <p class=\"inline-error-message\" *ngIf=\"isCountyEmpty || countyHasError\">\n <span *ngIf=\"isCountyEmpty\">Enter a County.</span>\n <span *ngIf=\"countyHasError\">Enter a valid County.</span>\n </p> \n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-font19px\" for=\"address-postcode\">\n Postcode\n </label>\n <input class=\"govuk-input govuk-input--width-10 govuk-font19px\" id=\"address-postcode\" formControlName=\"mpostcode\" name=\"address-postcode\" [ngClass]=\"{ 'inline-error-class': isMPostcodeEmpty || mpostcodeHasError}\" type=\"text\" autocomplete=\"postal-code\">\n <p class=\"inline-error-message\" *ngIf=\"isMPostcodeEmpty || mpostcodeHasError\">\n <span *ngIf=\"isMPostcodeEmpty\">Enter a postcode.</span>\n <span *ngIf=\"mpostcodeHasError\">Enter a valid postcode.</span>\n </p> \n </div>\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-font19px\" for=\"country\">\n Country\n </label>\n <select class=\"govuk-select govuk-font19px\" id=\"country\" name=\"country\" [ngClass]=\"{ 'inline-error-class': isCountryEmpty}\" formControlName=\"country\">\n <option value=\"\" selected=\"selected\">Please select</option>\n <option value=\"United Kingdom\" selected=\"\">United Kingdom</option>\n </select>\n <p class=\"inline-error-message\" *ngIf=\"isCountryEmpty\">\n <span *ngIf=\"isCountryEmpty\">Select a Country.</span>\n </p> \n </div>\n </form>\n </div>\n </div>\n </fieldset>\n </div>\n <!---FORM--->\n </div>\n\n<hr class=\"govuk-section-break govuk-section-break--m govuk-section-break--visible\">\n</fieldset>\n<div class=\"govuk-button-group\">\n<button type=\"submit\" class=\"button govuk-button--secondary govuk-font19px\"> Previous </button>\n \n<button type=\"submit\" class=\"button govuk-button govuk-font19px\" (click)=\"finalFormSubmit()\">\n Submit refund\n</button>\n</div>",
|
|
230
|
-
styles: [".govuk-font19px{font-size:19px}.inline-error-class{outline:#a71414 solid 3px;outline-offset:0}.inline-error-message{color:#a71414;font-weight:700;margin-top:10px}.contact-details--size{width:50%}"]
|
|
231
|
-
}] }
|
|
232
|
-
];
|
|
233
|
-
/** @nocollapse */
|
|
234
|
-
ContactDetailsComponent.ctorParameters = () => [
|
|
235
|
-
{ type: FormBuilder },
|
|
236
|
-
{ type: PaymentLibComponent }
|
|
237
|
-
];
|
|
238
|
-
ContactDetailsComponent.propDecorators = {
|
|
239
|
-
assignContactDetails: [{ type: Output }]
|
|
240
|
-
};
|
|
241
|
-
if (false) {
|
|
242
|
-
/** @type {?} */
|
|
243
|
-
ContactDetailsComponent.prototype.assignContactDetails;
|
|
244
|
-
/** @type {?} */
|
|
245
|
-
ContactDetailsComponent.prototype.pageTitle;
|
|
246
|
-
/** @type {?} */
|
|
247
|
-
ContactDetailsComponent.prototype.errorMessage;
|
|
248
|
-
/** @type {?} */
|
|
249
|
-
ContactDetailsComponent.prototype.isEmailSAddressClicked;
|
|
250
|
-
/** @type {?} */
|
|
251
|
-
ContactDetailsComponent.prototype.isPostcodeClicked;
|
|
252
|
-
/** @type {?} */
|
|
253
|
-
ContactDetailsComponent.prototype.isManualAddressClicked;
|
|
254
|
-
/** @type {?} */
|
|
255
|
-
ContactDetailsComponent.prototype.emailAddressForm;
|
|
256
|
-
/** @type {?} */
|
|
257
|
-
ContactDetailsComponent.prototype.postCodeForm;
|
|
258
|
-
/** @type {?} */
|
|
259
|
-
ContactDetailsComponent.prototype.manualAddressForm;
|
|
260
|
-
/** @type {?} */
|
|
261
|
-
ContactDetailsComponent.prototype.isEmailEmpty;
|
|
262
|
-
/** @type {?} */
|
|
263
|
-
ContactDetailsComponent.prototype.emailHasError;
|
|
264
|
-
/** @type {?} */
|
|
265
|
-
ContactDetailsComponent.prototype.isPostcodeEmpty;
|
|
266
|
-
/** @type {?} */
|
|
267
|
-
ContactDetailsComponent.prototype.postcodeHasError;
|
|
268
|
-
/** @type {?} */
|
|
269
|
-
ContactDetailsComponent.prototype.isaddressLine1Empty;
|
|
270
|
-
/** @type {?} */
|
|
271
|
-
ContactDetailsComponent.prototype.addressLine1HasError;
|
|
272
|
-
/** @type {?} */
|
|
273
|
-
ContactDetailsComponent.prototype.addressLine2HasError;
|
|
274
|
-
/** @type {?} */
|
|
275
|
-
ContactDetailsComponent.prototype.isTownOrCityEmpty;
|
|
276
|
-
/** @type {?} */
|
|
277
|
-
ContactDetailsComponent.prototype.townOrCityHasError;
|
|
278
|
-
/** @type {?} */
|
|
279
|
-
ContactDetailsComponent.prototype.isCountyEmpty;
|
|
280
|
-
/** @type {?} */
|
|
281
|
-
ContactDetailsComponent.prototype.countyHasError;
|
|
282
|
-
/** @type {?} */
|
|
283
|
-
ContactDetailsComponent.prototype.isMPostcodeEmpty;
|
|
284
|
-
/** @type {?} */
|
|
285
|
-
ContactDetailsComponent.prototype.mpostcodeHasError;
|
|
286
|
-
/** @type {?} */
|
|
287
|
-
ContactDetailsComponent.prototype.isCountryEmpty;
|
|
288
|
-
/**
|
|
289
|
-
* @type {?}
|
|
290
|
-
* @private
|
|
291
|
-
*/
|
|
292
|
-
ContactDetailsComponent.prototype.formBuilder;
|
|
293
|
-
/**
|
|
294
|
-
* @type {?}
|
|
295
|
-
* @private
|
|
296
|
-
*/
|
|
297
|
-
ContactDetailsComponent.prototype.paymentLibComponent;
|
|
298
|
-
}
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9jY3BheS13ZWItY29tcG9uZW50LyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY29udGFjdC1kZXRhaWxzL2NvbnRhY3QtZGV0YWlscy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU9sRSxNQUFNLE9BQU8sdUJBQXVCOzs7OztJQTBCbEMsWUFBb0IsV0FBd0IsRUFDeEIsbUJBQXdDO1FBRHhDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUExQmxELHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZFLGNBQVMsR0FBVyx3QkFBd0IsQ0FBQztRQUU3QywyQkFBc0IsR0FBWSxJQUFJLENBQUM7UUFDdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUt4QyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBQ3JDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUN0Qyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUNwQyxrQkFBYSxH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LGlEQUFnQzs7Ozs7SUFFcEIsOENBQWdDOzs7OztJQUNoQyxzREFBZ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGF5bWVudExpYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjcGF5LWNvbnRhY3QtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250YWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb250YWN0LWRldGFpbHMuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3REZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIGFzc2lnbkNvbnRhY3REZXRhaWxzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcGFnZVRpdGxlOiBzdHJpbmcgPSAnUGF5bWVudCBzdGF0dXMgaGlzdG9yeSc7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBpc0VtYWlsU0FkZHJlc3NDbGlja2VkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNQb3N0Y29kZUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNNYW51YWxBZGRyZXNzQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBlbWFpbEFkZHJlc3NGb3JtOiBGb3JtR3JvdXA7XG4gIHBvc3RDb2RlRm9ybTogRm9ybUdyb3VwO1xuICBtYW51YWxBZGRyZXNzRm9ybTogRm9ybUdyb3VwO1xuXG4gIGlzRW1haWxFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBlbWFpbEhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUG9zdGNvZGVFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBwb3N0Y29kZUhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzYWRkcmVzc0xpbmUxRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkcmVzc0xpbmUxSGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkcmVzc0xpbmUySGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNUb3duT3JDaXR5RW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG93bk9yQ2l0eUhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQ291bnR5RW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY291bnR5SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNNUG9zdGNvZGVFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBtcG9zdGNvZGVIYXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvdW50cnlFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdhbGwnKTtcblxuICAgIHRoaXMuZW1haWxBZGRyZXNzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeW2EtejAtOV1bYS16MC05LV9cXC5dK0AoW2Etel18W2EtejAtOV0/W2EtejAtOS1dK1thLXowLTldKVxcLlthLXowLTldezIsMTB9KD86XFwuW2Etel17MiwxMH0pPyQnKVxuICAgICAgXSkpXG4gICAgfSk7XG4gICAgdGhpcy5wb3N0Q29kZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHBvc3Rjb2RlOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXihbQS1aXXsxLDJ9WzAtOV17MSwyfVtBLVpdezAsMX0gP1swLTldW0EtWl17Mn0pJylcbiAgICAgIF0pKVxuICAgIH0pO1xuICAgIHRoaXMubWFudWFsQWRkcmVzc0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGFkZHJlc3NsMTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ15bYS16QS1aMC05XFxzLFxcJy1dKiQnKVxuICAgICAgXSkpLFxuICAgICAgYWRkcmVzc2wyOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXlthLXpBLVowLTlcXHMsXFwnLV0qJCcpXG4gICAgICBdKSksXG4gICAgICB0b3dub3JjaXR5OiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybignXlthLXpBLVowLTlcXHMsXFwnLV0qJCcpXG4gICAgICBdKSksXG4gICAgICBjb3VudHk6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeW2EtekEtWjAtOVxccyxcXCctXSokJylcbiAgICAgIF0pKSxcbiAgICAgIG1wb3N0Y29kZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oJ14oW0EtWl17MSwyfVswLTldezEsMn1bQS1aXXswLDF9ID9bMC05XVtBLVpdezJ9KScpXG4gICAgICBdKSksXG4gICAgICBjb3VudHJ5OiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIF0pKVxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0Q29udGFjdE9wdGlvbih0eXBlLCBpc0xpbmtlZENsaWVkKSB7XG4gICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ2FsbCcpO1xuICAgIGlmKCB0eXBlID09PSAnRW1haWwnICYmIGlzTGlua2VkQ2xpZWQgPT09ICdmYWxzZScpe1xuICAgICAgdGhpcy5pc0VtYWlsU0FkZHJlc3NDbGlja2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNQb3N0Y29kZUNsaWNrZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNYW51YWxBZGRyZXNzQ2xpY2tlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZih0eXBlID09PSAnUG9zdGNvZGUnICYmIGlzTGlua2VkQ2xpZWQgPT09ICdmYWxzZScpIHtcbiAgICAgIHRoaXMuaXNFbWFpbFNBZGRyZXNzQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1Bvc3Rjb2RlQ2xpY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLmlzTWFudWFsQWRkcmVzc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYodHlwZSA9PT0gJ1Bvc3Rjb2RlJyAmJiBpc0xpbmtlZENsaWVkID09PSAndHJ1ZScpIHtcbiAgICAgIHRoaXMuaXNFbWFpbFNBZGRyZXNzQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc1Bvc3Rjb2RlQ2xpY2tlZCA9IHRydWU7XG4gICAgICB0aGlzLmlzTWFudWFsQWRkcmVzc0NsaWNrZWQgPSB0cnVlO1xuXG4gICAgfVxuICB9XG5cbiAgZmluYWxGb3JtU3VibWl0KCkge1xuICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdhbGwnKTtcbiAgICBpZiggdGhpcy5pc0VtYWlsU0FkZHJlc3NDbGlja2VkICl7XG4gICAgICBjb25zdCBlbWFpbEZpZWxkID0gdGhpcy5lbWFpbEFkZHJlc3NGb3JtLmNvbnRyb2xzLmVtYWlsO1xuICAgICAgaWYgKHRoaXMuZW1haWxBZGRyZXNzRm9ybS5kaXJ0eSAmJiB0aGlzLmVtYWlsQWRkcmVzc0Zvcm0udmFsaWQpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25Db250YWN0RGV0YWlscy5lbWl0KCB7ZW1haWw6IGVtYWlsRmllbGQudmFsdWUsIG5vdGlmaWNhdGlvblR5cGU6ICdFTUFJTCd9ICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiggZW1haWxGaWVsZC52YWx1ZSA9PSAnJyApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdlbWFpbCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGVtYWlsRmllbGQudmFsdWUgIT0gJycgJiYgZW1haWxGaWVsZC5pbnZhbGlkICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ2VtYWlsJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoIHRoaXMuaXNQb3N0Y29kZUNsaWNrZWQgJiYgIXRoaXMuaXNNYW51YWxBZGRyZXNzQ2xpY2tlZCApIHtcbiAgICAgIHRoaXMucG9zdGNvZGVWYWxpZGF0aW9uKCk7XG4gICAgfSBlbHNlIGlmKHRoaXMuaXNQb3N0Y29kZUNsaWNrZWQgJiYgdGhpcy5pc01hbnVhbEFkZHJlc3NDbGlja2VkKSB7XG4gICAgICBjb25zdCBmaWVsZEN0cmxzID0gdGhpcy5tYW51YWxBZGRyZXNzRm9ybS5jb250cm9scztcbiAgICAgIGlmICh0aGlzLm1hbnVhbEFkZHJlc3NGb3JtLmRpcnR5ICYmIHRoaXMubWFudWFsQWRkcmVzc0Zvcm0udmFsaWQpIHtcbiAgICAgICAgdGhpcy5hc3NpZ25Db250YWN0RGV0YWlscy5lbWl0KHthZGRyZXNzOiB7XG4gICAgICAgICAgYWRkcmVzczE6IGZpZWxkQ3RybHMuYWRkcmVzc2wxLnZhbHVlKycnK2ZpZWxkQ3RybHMuYWRkcmVzc2wyLnZhbHVlLFxuICAgICAgICAgIHRvd246IGZpZWxkQ3RybHMudG93bm9yY2l0eS52YWx1ZSxcbiAgICAgICAgICBjb3VudHk6IGZpZWxkQ3RybHMuY291bnR5LnZhbHVlLFxuICAgICAgICAgIG1wb3N0Y29kZTogZmllbGRDdHJscy5tcG9zdGNvZGUudmFsdWUsXG4gICAgICAgICAgY291bnRyeTogZmllbGRDdHJscy5jb3VudHJ5LnZhbHVlLFxuICAgICAgICB9LCBub3RpZmljYXRpb25UeXBlOiAnTEVUVEVSJ30pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoIGZpZWxkQ3RybHMuYWRkcmVzc2wxLnZhbHVlID09ICcnICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ2FkZHJlc3MxJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYoZmllbGRDdHJscy5hZGRyZXNzbDEudmFsdWUgIT0gJycgJiYgZmllbGRDdHJscy5hZGRyZXNzbDEuaW52YWxpZCApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdhZGRyZXNzMScpO1xuICAgICAgICB9XG4gICAgICAgIGlmKGZpZWxkQ3RybHMuYWRkcmVzc2wyLnZhbHVlICE9ICcnICYmIGZpZWxkQ3RybHMuYWRkcmVzc2wyLmludmFsaWQgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdLCAnYWRkcmVzczInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiggZmllbGRDdHJscy50b3dub3JjaXR5LnZhbHVlID09ICcnICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ3Rvd24nKTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEN0cmxzLnRvd25vcmNpdHkudmFsdWUgIT0gJycgJiYgZmllbGRDdHJscy50b3dub3JjaXR5LmludmFsaWQgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdLCAndG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGlmKCBmaWVsZEN0cmxzLmNvdW50eS52YWx1ZSA9PSAnJyApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZV0sICdjb3VudHknKTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEN0cmxzLmNvdW50eS52YWx1ZSAhPSAnJyAmJiBmaWVsZEN0cmxzLmNvdW50eS5pbnZhbGlkICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ2NvdW50eScpO1xuICAgICAgICB9XG4gICAgICAgIGlmKCBmaWVsZEN0cmxzLm1wb3N0Y29kZS52YWx1ZSA9PSAnJyApIHtcbiAgICAgICAgICB0aGlzLnJlc2V0Rm9ybShbZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZV0sICdtcG9zdGNvZGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZihmaWVsZEN0cmxzLm1wb3N0Y29kZS52YWx1ZSAhPSAnJyAmJiBmaWVsZEN0cmxzLm1wb3N0Y29kZS5pbnZhbGlkICkge1xuICAgICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlXSwgJ21wb3N0Y29kZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmKCBmaWVsZEN0cmxzLmNvdW50cnkudmFsdWUgPT0gJycgKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLHRydWVdLCAnY291bnRyeScpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgfVxuICBwb3N0Y29kZVZhbGlkYXRpb24oKSB7XG4gICAgY29uc3QgcG9zdGNvZGVGaWVsZCA9IHRoaXMucG9zdENvZGVGb3JtLmNvbnRyb2xzLnBvc3Rjb2RlO1xuICAgIGlmICh0aGlzLnBvc3RDb2RlRm9ybS5kaXJ0eSAmJiB0aGlzLnBvc3RDb2RlRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5hc3NpZ25Db250YWN0RGV0YWlscy5lbWl0KHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYoIHBvc3Rjb2RlRmllbGQudmFsdWUgPT0gJycgKSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKFtmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlXSwgJ3Bvc3Rjb2RlJyk7XG4gICAgICB9XG4gICAgICBpZihwb3N0Y29kZUZpZWxkLnZhbHVlICE9ICcnICYmIHBvc3Rjb2RlRmllbGQuaW52YWxpZCApIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oW2ZhbHNlLGZhbHNlLGZhbHNlLHRydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2VdLCAncG9zdGNvZGUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmVzZXRGb3JtKHZhbCwgZmllbGQpIHtcbiAgICBpZihmaWVsZD09PSdlbWFpbCcgfHwgZmllbGQ9PT0nYWxsJykge1xuICAgICAgdGhpcy5pc0VtYWlsRW1wdHkgPSB2YWxbMF07XG4gICAgICB0aGlzLmVtYWlsSGFzRXJyb3IgPSB2YWxbMV07XG4gICAgfVxuICAgIGlmKGZpZWxkPT09J3Bvc3Rjb2RlJyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLmlzUG9zdGNvZGVFbXB0eSA9IHZhbFsyXTtcbiAgICAgIHRoaXMucG9zdGNvZGVIYXNFcnJvciA9IHZhbFszXTtcbiAgICB9XG4gICAgaWYoZmllbGQ9PT0nYWRkcmVzczEnIHx8IGZpZWxkPT09J2FsbCcpIHtcbiAgICAgIHRoaXMuaXNhZGRyZXNzTGluZTFFbXB0eSA9IHZhbFs0XTtcbiAgICAgIHRoaXMuYWRkcmVzc0xpbmUxSGFzRXJyb3IgPSB2YWxbNV07XG4gICAgfVxuICAgIGlmKGZpZWxkPT09J2FkZHJlc3MyJyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLmFkZHJlc3NMaW5lMkhhc0Vycm9yID0gdmFsWzZdO1xuICAgIH1cbiAgICBpZihmaWVsZD09PSd0b3duJyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLmlzVG93bk9yQ2l0eUVtcHR5ID0gdmFsWzddO1xuICAgICAgdGhpcy50b3duT3JDaXR5SGFzRXJyb3IgPSB2YWxbOF07XG4gICAgfVxuICAgIGlmKGZpZWxkPT09J2NvdW50eScgfHwgZmllbGQ9PT0nYWxsJykge1xuICAgICAgdGhpcy5pc0NvdW50eUVtcHR5ID0gdmFsWzldO1xuICAgICAgdGhpcy5jb3VudHlIYXNFcnJvciA9IHZhbFsxMF07XG4gICAgfVxuICAgIGlmKGZpZWxkPT09J21wb3N0Y29kZScgfHwgZmllbGQ9PT0nYWxsJykge1xuICAgICAgdGhpcy5pc01Qb3N0Y29kZUVtcHR5ID0gdmFsWzExXTtcbiAgICAgIHRoaXMubXBvc3Rjb2RlSGFzRXJyb3IgPSB2YWxbMTJdO1xuICAgIH1cbiAgICBpZihmaWVsZD09PSdjb3VudHJ5JyB8fCBmaWVsZD09PSdhbGwnKSB7XG4gICAgICB0aGlzLmlzQ291bnRyeUVtcHR5ID0gdmFsWzEzXTtcbiAgICB9XG4gIFxuICB9XG59XG4iXX0=
|