@hmcts/ccpay-web-component 5.0.7-beta45 → 5.0.7-beta46

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.
@@ -545,11 +545,14 @@ export class RefundStatusComponent {
545
545
  * @return {?}
546
546
  */
547
547
  (error) => { }));
548
- if (this.paymentObj != undefined && this.paymentObj != null && this.paymentObj.reference == paymentReference) {
549
- return this.notificationService.getNotificationInstructionType(this.paymentObj.channel, this.paymentObj.method);
548
+ console.log('Retrieved Payment Object: ' + JSON.stringify(this.paymentObj));
549
+ if (this.paymentObj == undefined || this.paymentObj == null || this.paymentObj.reference != paymentReference) {
550
+ console.log('if condition');
551
+ return 'Template';
550
552
  }
551
553
  else {
552
- return 'Template';
554
+ console.log('else condition');
555
+ return this.notificationService.getNotificationInstructionType(this.paymentObj.channel, this.paymentObj.method);
553
556
  }
554
557
  }
555
558
  else {
@@ -587,7 +590,7 @@ export class RefundStatusComponent {
587
590
  RefundStatusComponent.decorators = [
588
591
  { type: Component, args: [{
589
592
  selector: 'ccpay-refund-status',
590
- template: "\n<div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"viewName==='refundstatuslist' && rejectedRefundList && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- payments -->\n\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-16\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-11\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header col-18\" scope=\"col\">Date</td>\n <td class=\"govuk-table__header col-25\" scope=\"col\">Refund reference</td>\n <td class=\"govuk-table__header col-24 \" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let refundList of rejectedRefundList\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_status['name'] }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">\u00A3{{ refundList?.amount | number:'.2' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.date_updated | date:'dd MMM yyyy'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{refundList?.reason}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToRefundView(refundList,'casetransactions')\">Review</a>\n </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No refunds recorded</td>\n </tbody>\n </table>\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='refundview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div>\n <h2 class=\"govuk-heading-l\">Refund details</h2>\n <table>\n \n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Refund reference</td>\n <td>{{ refundlist?.refund_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td>{{refundlist?.payment_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td>{{ refundlist?.reason }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount refunded</td>\n <td>\u00A3{{refundlist?.amount | number:'.2' }}</td>\n </tr>\n\n </tbody>\n </table>\n\n\n <!-- Notification sent details -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Notifications sent</h2>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Sent to</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Sent via</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Actions</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"notificationList\">\n <ng-container *ngFor=\"let notification of notificationList; let i = index;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{notification.date_created | date:'dd MMMM yyyy hh:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{orderParty}}</td>\n <td class=\"govuk-table__cell whitespace-inherit col-40\">\n <div *ngIf=\"notification?.notification_type === 'EMAIL'\">\n <strong>Email</strong><br>\n {{notification?.contact_details?.email}}\n </div>\n <div *ngIf=\"notification?.notification_type === 'LETTER'\">\n <strong>Post</strong><br>\n {{notification?.contact_details?.address_line}} {{notification?.contact_details?.city}} {{notification?.contact_details?.county}} {{notification?.contact_details?.country}} {{notification?.contact_details?.postal_code}}\n </div>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i === 0\"><a href=\"Javascript:void(0);\" (click)=\"putResend(notification)\">Resend</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"Javascript:void(0);\" (click)=\"gotoEditAddressDetails(notification)\">Edit details</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a *ngIf=\"!notificationSentView\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i > 0\"><a *ngIf=\"!notificationSentView\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n </tr>\n <tr *ngIf=\"i === notificationSentViewIndex && notificationSentView\">\n <td class=\"govuk-table__cell\" colspan=\"4\">\n <app-notification-preview\n [previewJourney]=\"'Notifications sent'\" [notificationSent]=\"notification?.sent_notification\">\n </app-notification-preview>\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"!notificationList\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\" colspan=\"4\">No record found ... </td>\n </tr>\n </tbody>\n </table> \n </div>\n <!-- Status history -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Refund status history</h2>\n <div *ngIf=\"refundStatusHistories\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Users</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Notes</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let refundStatusHistory of refundStatusHistories;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.status}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.date_created | date:'d MMMM yyyy\n hh:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.created_by}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.notes}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n\n <ng-container *ngIf=\"viewName==='refundview' && !isFromPayBubble && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div *ngIf=\"refundButtonState==='Update required'\" >\n <!-- <div *ngIf=\"refundButtonState==='sent back'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary btnmargin\"\n (click)=\"gotoReviewAndReSubmitPage()\">Change refund details</button>\n </div>\n <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='Sent for approval'\" >\n <!-- <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='sent for approval'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary\"\n (click)=\"goToRefundProcessComponent(refundlist.refund_reference,refundlist)\">Process refund</button>\n </div>\n </ng-container>\n\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='reviewandsubmitview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div> -->\n <div class=\"govuk-warning-text\">\n <h1 class=\"heading-large\">Check your answers</h1>\n </div>\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for return</td>\n <td class=\"govuk-table__cell\">{{refundreason}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.refund_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for refund</td>\n <td class=\"govuk-table__cell\"> {{ refundlist?.reason}}\n <a (click)=\"gotoRefundReasonPage(refundlist?.reason)\" *ngIf=\"refundlist?.reason !== 'Retrospective remission' && refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n <!-- <td class=\"govuk-table__cell\">{{ refundlist?.reason }}</td>\n <a (click)=\"gotoRefundReasonPage()\" class=\"govuk-link right\">Change</a> -->\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.payment_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td *ngIf=\"refundlist?.reason === 'Retrospective remission'\" class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td *ngIf=\"refundlist?.reason !== 'Retrospective remission'\" class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment amount</td>\n <td class=\"govuk-table__cell\"> \u00A3{{ changedAmount ? changedAmount : refundlist?.amount | number:'.2' }}\n <a (click)=\"gotoAmountPage()\" *ngIf=\"refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlist?.contact_details?.email}}\n </div>\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlist?.contact_details?.address_line}} {{refundlist?.contact_details?.city}} {{refundlist?.contact_details?.county}} {{refundlist?.contact_details?.country}} {{refundlist?.contact_details?.postal_code}}\n </div> \n <a class=\"govuk-link\" href=\"Javascript:void(0)\" *ngIf=\"refundlist?.contact_details !=null\" class=\"govuk-link right\" (click)=\"gotoEditDetailsPage(refundlist?.contact_details)\">\n Change\n </a>\n </td>\n </tr> \n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">{{templateInstructionType}} \n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n <app-notification-preview *ngIf=\"notificationPreview\" \n [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\" \n [contactDetails]=\"refundlist?.contact_details\"\n [refundReason]=\"refundlist?.reason\"\n [refundAmount]=\"changedAmount ? changedAmount : refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\"></app-notification-preview>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n</div>\n<p><a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">Cancel</a></p>\n <!-- <div class=\"govuk-button-group\">\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n </div> -->\n <!-- <p>\n <a (click)=\"loadRefundListPage()\" href=\"\" class=\"cancelbtn\">Cancel</a>\n </p> -->\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefundpage1' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromRefundStatusPage] = \"true\"\n [changeRefundReason]= \"changeRefundReason\" [ccdCaseNumber]=\"ccdCaseNumber\" (refundListReason)=\"getRefundListReason($event)\" [refundPaymentReference]= \"refundlist?.payment_reference\" ></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'processretroremissonpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" (refundListAmount)=\"getRefundAmount($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefund' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromServiceRequestPage] = \"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" [isFromRefundStatusPage]=\"true\" (refundListAmount)=\"getRefundAmount($event)\" (refundFees)=\"getRefundFees($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewrefundconfirmationpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-grid-row\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Refund submitted\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference:{{refundReference}} </strong></p>\n </div>\n\n </div>\n\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount| currency:'GBP':'symbol-narrow':'1.2-2'}} has been created and will be passed to a team leader to approve.\n </p>\n\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isResendOperationSuccess\">\n <div class=\"govuk-grid-row\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Notification sent\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference: {{ refundlist?.refund_reference}} </strong></p>\n </div>\n\n </div>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewName === 'refundEditView' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoCasetransationPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n<ng-container *ngIf=\"viewName === 'revieweditdetailsconfirmationpage' && !isResendOperationSuccess && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSCHECKANDANSWERPAGE'> \n <h1 class=\"govuk-heading-l\">Check your answers</h1>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Refund reference\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ refundlist?.refund_reference}}\n </dd>\n <span class=\"govuk-summary-list__actions\"></span> \n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Send via\n <br/>\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <div *ngIf=\"addressDetails?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{addressDetails?.email}}\n </div>\n <div *ngIf=\"addressDetails?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{addressDetails?.address_line}} {{addressDetails?.city}} {{addressDetails?.county}} {{addressDetails?.country}} {{addressDetails?.postal_code}}\n </div> \n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a class=\"govuk-link\" href=\"Javascript:void(0)\" (click)=\"gotoEditDetailsPage(addressDetails)\">\n Change\n </a>\n </dd>\n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Notification\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{templateInstructionType}} \n </dd>\n <span class=\"govuk-summary-list__actions\">\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </span> \n </div>\n </dl>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"addressDetails\"\n [refundReference]=\"refundlist?.refund_reference\">\n </app-notification-preview>\n\n\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoEditDetailsPage(addressDetails)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button (click)=\"submitEditDetail()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Send notification\n </button>\n </div>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n",
593
+ template: "\n<div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n</div>\n\n<ng-container *ngIf=\"viewName==='refundstatuslist' && rejectedRefundList && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- payments -->\n\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-16\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-11\" scope=\"col\">Amount</td>\n <td class=\"govuk-table__header col-18\" scope=\"col\">Date</td>\n <td class=\"govuk-table__header col-25\" scope=\"col\">Refund reference</td>\n <td class=\"govuk-table__header col-24 \" scope=\"col\">Reason</td>\n <td class=\"govuk-table__header\" scope=\"col\"></td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length > 0\">\n <tr class=\"govuk-table__row\" *ngFor=\"let refundList of rejectedRefundList\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_status['name'] }}</td>\n <td class=\"channel govuk-table__cell whitespace-inherit\">\u00A3{{ refundList?.amount | number:'.2' }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.date_updated | date:'dd MMM yyyy'}}\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{ refundList?.refund_reference }}</td>\n <td class=\"govuk-table__cell whitespace-inherit\"> {{refundList?.reason}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">\n <a href=\"javascript:void(0)\" (click)=\"goToRefundView(refundList,'casetransactions')\">Review</a>\n </td>\n </tr>\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"rejectedRefundList?.length === 0\">\n <td class=\"govuk-table__cell\" colspan=\"6\">No refunds recorded</td>\n </tbody>\n </table>\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='refundview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div>\n <h2 class=\"govuk-heading-l\">Refund details</h2>\n <table>\n \n <tbody>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Refund reference</td>\n <td>{{ refundlist?.refund_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Payment to be refunded</td>\n <td>{{refundlist?.payment_reference }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Reason for refund</td>\n <td>{{ refundlist?.reason }}</td>\n </tr>\n <tr class=\"section\">\n <td class=\"bold tb-col-w\">Amount refunded</td>\n <td>\u00A3{{refundlist?.amount | number:'.2' }}</td>\n </tr>\n\n </tbody>\n </table>\n\n\n <!-- Notification sent details -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Notifications sent</h2>\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Sent to</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Sent via</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Actions</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"notificationList\">\n <ng-container *ngFor=\"let notification of notificationList; let i = index;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{notification.date_created | date:'dd MMMM yyyy hh:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{orderParty}}</td>\n <td class=\"govuk-table__cell whitespace-inherit col-40\">\n <div *ngIf=\"notification?.notification_type === 'EMAIL'\">\n <strong>Email</strong><br>\n {{notification?.contact_details?.email}}\n </div>\n <div *ngIf=\"notification?.notification_type === 'LETTER'\">\n <strong>Post</strong><br>\n {{notification?.contact_details?.address_line}} {{notification?.contact_details?.city}} {{notification?.contact_details?.county}} {{notification?.contact_details?.country}} {{notification?.contact_details?.postal_code}}\n </div>\n </td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i === 0\"><a href=\"Javascript:void(0);\" (click)=\"putResend(notification)\">Resend</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href=\"Javascript:void(0);\" (click)=\"gotoEditAddressDetails(notification)\">Edit details</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a *ngIf=\"!notificationSentView\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n <td class=\"govuk-table__cell whitespace-inherit\" *ngIf=\"i > 0\"><a *ngIf=\"!notificationSentView\" href=\"Javascript:void(0);\" (click)=\"showNotificationSentView(i)\">View</a><a *ngIf=\"i === notificationSentViewIndex && notificationSentView\" href=\"Javascript:void(0);\" (click)=\"hideNotificationSentView()\">Hide</a></td>\n </tr>\n <tr *ngIf=\"i === notificationSentViewIndex && notificationSentView\">\n <td class=\"govuk-table__cell\" colspan=\"4\">\n <app-notification-preview\n [previewJourney]=\"'Notifications sent'\" [notificationSent]=\"notification?.sent_notification\">\n </app-notification-preview>\n </td>\n </tr>\n </ng-container>\n\n </tbody>\n <tbody class=\"govuk-table__body\" *ngIf=\"!notificationList\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\" colspan=\"4\">No record found ... </td>\n </tr>\n </tbody>\n </table> \n </div>\n <!-- Status history -->\n <div>\n <br />\n <h2 class=\"govuk-heading-m\">Refund status history</h2>\n <div *ngIf=\"refundStatusHistories\">\n <table class=\"govuk-table\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__header col-24 whitespace-inherit\" scope=\"col\">Status</td>\n <td class=\"govuk-table__header col-27 whitespace-inherit\" scope=\"col\">Date and time</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Users</td>\n <td class=\"govuk-table__header whitespace-inherit\" scope=\"col\">Notes</td>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngFor=\"let refundStatusHistory of refundStatusHistories;\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.status}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.date_created | date:'d MMMM yyyy\n hh:mm:ss'}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.created_by}}</td>\n <td class=\"govuk-table__cell whitespace-inherit\">{{refundStatusHistory.notes}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n\n <ng-container *ngIf=\"viewName==='refundview' && !isFromPayBubble && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div *ngIf=\"refundButtonState==='Update required'\" >\n <!-- <div *ngIf=\"refundButtonState==='sent back'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary btnmargin\"\n (click)=\"gotoReviewAndReSubmitPage()\">Change refund details</button>\n </div>\n <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='Sent for approval'\" >\n <!-- <div *ngIf=\"isProcessRefund && !isLastUpdatedByCurrentUser && refundButtonState==='sent for approval'\"> -->\n <br />\n <button type=\"submit\" class=\"button govuk-button--secondary\"\n (click)=\"goToRefundProcessComponent(refundlist.refund_reference,refundlist)\">Process refund</button>\n </div>\n </ng-container>\n\n\n</ng-container>\n\n<ng-container *ngIf=\"viewName==='reviewandsubmitview' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <!-- <div class=\"govuk-breadcrumbs\">\n <ol class=\"govuk-breadcrumbs__list\">\n <li class=\"govuk-breadcrumbs__list-item\">\n <a (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-back-link govuk-label\">Back</a>\n </li>\n </ol>\n </div> -->\n <div class=\"govuk-warning-text\">\n <h1 class=\"heading-large\">Check your answers</h1>\n </div>\n <table class=\"govuk-table\">\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for return</td>\n <td class=\"govuk-table__cell\">{{refundreason}}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.refund_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Reason for refund</td>\n <td class=\"govuk-table__cell\"> {{ refundlist?.reason}}\n <a (click)=\"gotoRefundReasonPage(refundlist?.reason)\" *ngIf=\"refundlist?.reason !== 'Retrospective remission' && refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n <!-- <td class=\"govuk-table__cell\">{{ refundlist?.reason }}</td>\n <a (click)=\"gotoRefundReasonPage()\" class=\"govuk-link right\">Change</a> -->\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment reference</td>\n <td class=\"govuk-table__cell\">{{ refundlist?.payment_reference}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td *ngIf=\"refundlist?.reason === 'Retrospective remission'\" class=\"govuk-table__cell govuk-!-font-weight-bold\">Refund amount</td>\n <td *ngIf=\"refundlist?.reason !== 'Retrospective remission'\" class=\"govuk-table__cell govuk-!-font-weight-bold\">Payment amount</td>\n <td class=\"govuk-table__cell\"> \u00A3{{ changedAmount ? changedAmount : refundlist?.amount | number:'.2' }}\n <a (click)=\"gotoAmountPage()\" *ngIf=\"refundlist?.reason !== 'Overpayment'\"\n class=\"govuk-link right\">Change</a>\n </td>\n\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send to</td>\n <td class=\"govuk-table__cell\">{{orderParty}} </td>\n </tr>\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Send via</td>\n <td class=\"govuk-table__cell\">\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{refundlist?.contact_details?.email}}\n </div>\n <div *ngIf=\"refundlist?.contact_details?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{refundlist?.contact_details?.address_line}} {{refundlist?.contact_details?.city}} {{refundlist?.contact_details?.county}} {{refundlist?.contact_details?.country}} {{refundlist?.contact_details?.postal_code}}\n </div> \n <a class=\"govuk-link\" href=\"Javascript:void(0)\" *ngIf=\"refundlist?.contact_details !=null\" class=\"govuk-link right\" (click)=\"gotoEditDetailsPage(refundlist?.contact_details)\">\n Change\n </a>\n </td>\n </tr> \n\n <tr class=\"govuk-table__row\">\n <td class=\"govuk-table__cell govuk-!-font-weight-bold\">Notification</td>\n <td class=\"govuk-table__cell\">{{templateInstructionType}} \n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </td>\n </tr>\n </table>\n <app-notification-preview *ngIf=\"notificationPreview\" \n [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\" \n [contactDetails]=\"refundlist?.contact_details\"\n [refundReason]=\"refundlist?.reason\"\n [refundAmount]=\"changedAmount ? changedAmount : refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\"></app-notification-preview>\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoReviewDetailsPage($event)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n</div>\n<p><a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">Cancel</a></p>\n <!-- <div class=\"govuk-button-group\">\n <button [disabled]=\"isRefundBtnDisabled\" (click)=\"gotoReviewRefundConfirmationPage()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Submit refund\n </button>\n </div> -->\n <!-- <p>\n <a (click)=\"loadRefundListPage()\" href=\"\" class=\"cancelbtn\">Cancel</a>\n </p> -->\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefundpage1' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromRefundStatusPage] = \"true\"\n [changeRefundReason]= \"changeRefundReason\" [ccdCaseNumber]=\"ccdCaseNumber\" (refundListReason)=\"getRefundListReason($event)\" [refundPaymentReference]= \"refundlist?.payment_reference\" ></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'processretroremissonpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" (refundListAmount)=\"getRefundAmount($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'issuerefund' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <ccpay-add-remission [isFromRefundListPage]=\"true\" [viewCompStatus]=\"viewName\" [isRefundRemission]=\"true\" [isFromServiceRequestPage] = \"true\"\n [ccdCaseNumber]=\"ccdCaseNumber\" [refundPaymentReference]= \"refundlist?.payment_reference\" [isFromRefundStatusPage]=\"true\" (refundListAmount)=\"getRefundAmount($event)\" (refundFees)=\"getRefundFees($event)\"></ccpay-add-remission>\n</ng-container>\n\n<ng-container *ngIf=\"viewName === 'reviewrefundconfirmationpage' && !isResendOperationSuccess && !isEditDetailsClicked\">\n <div class=\"govuk-grid-row\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Refund submitted\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference:{{refundReference}} </strong></p>\n </div>\n\n </div>\n\n <h2 class=\"govuk-heading-l\">What happens next</h2>\n <p class=\"govuk-body\">\n A refund request for {{refundAmount| currency:'GBP':'symbol-narrow':'1.2-2'}} has been created and will be passed to a team leader to approve.\n </p>\n\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"isResendOperationSuccess\">\n <div class=\"govuk-grid-row\">\n <div>\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n Notification sent\n </h1>\n\n <div class=\"govuk-panel__body\">\n <p class=\"govuk-body white\"><strong>Refund reference: {{ refundlist?.refund_reference}} </strong></p>\n </div>\n\n </div>\n <p class=\"govuk-body\">\n <a href=\"javascript:void(0)\" (click)=\"loadRefundListPage()\" class=\"govuk-link\">Return to case</a>\n </p>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"viewName === 'refundEditView' && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSPAGE'> \n <h1 class=\"govuk-heading-l\">Edit contact details</h1>\n <h2 class=\"govuk-heading-m govuk-font19px\">Case reference: {{ccdCaseNumber | ccdHyphens }}</h2>\n <span class=\"govuk-hint font-size-19px\">\n Refund reference: {{ refundlist?.refund_reference}}\n </span>\n <ccpay-contact-details\n [isEditOperationInRefundList] = isEditDetailsClicked\n [addressObj] = notification\n (assignContactDetailsInFefundsList)=\"getContactDetails($event)\"\n (redirectToIssueRefund)=\"gotoCasetransationPageCancelBtnClicked($event)\" ></ccpay-contact-details>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n<ng-container *ngIf=\"viewName === 'revieweditdetailsconfirmationpage' && !isResendOperationSuccess && isEditDetailsClicked\">\n <input #myInput type='hidden' id='iFrameDrivenImageValue' value='EDITDETAILSCHECKANDANSWERPAGE'> \n <h1 class=\"govuk-heading-l\">Check your answers</h1>\n <dl class=\"govuk-summary-list\">\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Refund reference\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{ refundlist?.refund_reference}}\n </dd>\n <span class=\"govuk-summary-list__actions\"></span> \n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Send via\n <br/>\n </dt>\n <dd class=\"govuk-summary-list__value\">\n <div *ngIf=\"addressDetails?.notification_type === 'EMAIL'\" class=\"contactDetails-width font-size-19px\">\n <strong>Email</strong>\n <br/>\n {{addressDetails?.email}}\n </div>\n <div *ngIf=\"addressDetails?.notification_type === 'LETTER'\" class=\"contactDetails-width font-size-19px\">\n <strong>Post</strong>\n <br/>\n {{addressDetails?.address_line}} {{addressDetails?.city}} {{addressDetails?.county}} {{addressDetails?.country}} {{addressDetails?.postal_code}}\n </div> \n </dd>\n <dd class=\"govuk-summary-list__actions\">\n <a class=\"govuk-link\" href=\"Javascript:void(0)\" (click)=\"gotoEditDetailsPage(addressDetails)\">\n Change\n </a>\n </dd>\n </div>\n <div class=\"govuk-summary-list__row font-size-19px\">\n <dt class=\"govuk-summary-list__key\">\n Notification\n </dt>\n <dd class=\"govuk-summary-list__value\">\n {{templateInstructionType}} \n </dd>\n <span class=\"govuk-summary-list__actions\">\n <a *ngIf=\"!notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"showNotificationPreview()\">\n Preview\n </a>\n <a *ngIf=\"notificationPreview\" href=\"Javascript:void(0)\" class=\"govuk-link right\" (click)=\"hideNotificationPreview()\">\n Hide Preview\n </a>\n </span> \n </div>\n </dl>\n\n <app-notification-preview *ngIf=\"notificationPreview\" [paymentReference]=\"refundlist?.payment_reference\"\n [payment]=\"paymentObj\"\n [contactDetails]=\"addressDetails\"\n [refundReason]=\"refundlist?.reason\"\n [refundAmount]=\"refundlist?.amount\"\n [refundReference]=\"refundlist?.refund_reference\">\n </app-notification-preview>\n\n\n\n <div class=\"govuk-button-group\">\n <button (click)=\"gotoEditDetailsPage(addressDetails)\" class=\"govuk-button govuk-button--secondary\"> Previous</button>\n <button (click)=\"submitEditDetail()\" class=\"govuk-button button\"\n data-module=\"govuk-button\">\n Send notification\n </button>\n </div>\n <p>\n <a (click)=\"loadRefundListPage()\" class=\"govuk-link\" data-module=\"govuk-button\">\n Cancel\n </a>\n </p>\n\n</ng-container>\n",
591
594
  styles: [".right{float:right!important}.button{margin-bottom:3em;font-size:19px}.cancelbtn{font-size:19px;font-weight:400}.btnmargin{margin-bottom:2em}.govuk-button--secondary{background-color:#dee0e2;box-shadow:0 2px 0 #858688;color:#0b0c0c;margin-right:.5em}.govuk-label--s,.govuk-warning-text__text,.hmcts-currency-input__symbol{font-size:19px;font-weight:400}.inline-error-class{outline:#a71414 solid 3px;outline-offset:0}.inline-error-message{color:#a71414;font-weight:700;margin-top:10px;font-size:20px}.govuk-button,.govuk-link{margin-right:1em;font-size:19px;font-weight:200}.govuk-button-group{padding-top:2em}.heading-medium{margin-top:.875em}.heading-large{margin-top:.25em}.govuk-panel--confirmation{color:#fff;background:#00703c}.govuk-heading-l{font-size:36px}.govuk-heading-m{font-size:24px}.govuk-panel__title{font-size:5rem}.govuk-body,.govuk-body-m{font-size:2.1875rem}.govuk-input--width-10{max-width:36ex}.col-14{width:14%!important}.col-10{width:10%!important}.col-11{width:11%!important}.col-18{width:18%!important}.col-21{width:21%!important}.col-9{width:9%!important}.col-40{width:40%!important}.col-15{width:15%!important}.col-16{width:16%!important}.col-25{width:25%!important}.col-24{width:24%!important}.govuk-error-summary__title{font-size:24px!important}.govuk-error-summary__body{font-size:19px!important}.font-size-19px{font-size:19px}.white{color:#fff}.pagesize{margin:2em;width:97%}.govuk-link{cursor:pointer}.contactDetails-width{width:70%}"]
592
595
  }] }
593
596
  ];
@@ -748,4 +751,4 @@ if (false) {
748
751
  */
749
752
  RefundStatusComponent.prototype.paymentViewService;
750
753
  }
751
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3JlZnVuZC1zdGF0dXMvcmVmdW5kLXN0YXR1cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUduRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7TUFJaEYsY0FBYyxHQUFHLHVCQUF1QjtBQU85QyxNQUFNLE9BQU8scUJBQXFCOzs7Ozs7Ozs7SUF1RGhDLFlBQW9CLFdBQXdCLEVBQ2xDLGFBQTZCLEVBQzdCLG1CQUF3QyxFQUN4QyxtQkFBd0MsRUFDeEMsaUJBQW9DLEVBQ3BDLGtCQUFzQztRQUw1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFB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bnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZnVuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmdW5kcy9yZWZ1bmRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZWZ1bmRMaXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kTGlzdCc7XG5pbXBvcnQgeyBJUmVmdW5kc05vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRzTm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBPcmRlcnNsaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyc2xpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QnO1xuaW1wb3J0IHsgSVJlZnVuZENvbnRhY3REZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kQ29udGFjdERldGFpbHMnO1xuaW1wb3J0IHsgSVJlZnVuZFN0YXR1cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZFN0YXR1cyc7XG5pbXBvcnQgeyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0JztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IElQYXltZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQgeyBJRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7IElSZWZ1bmRGZWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRGZWUnO1xuY29uc3QgQlNfRU5BQkxFX0ZMQUcgPSAnYnVsay1zY2FuLWVuYWJsaW5nLWZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVmdW5kLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVmdW5kLXN0YXR1cy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVmdW5kU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdMT0dHRURJTlVTRVJST0xFUycpIExPR0dFRElOVVNFUlJPTEVTOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoJ0FQSV9ST09UJykgQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCkgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgQElucHV0KCkgaXNFbGlnaW5ibGVUb0FjY2VzczogYm9vbGVhbjtcbiAgcmVmdW5kU3RhdHVzRm9ybTogRm9ybUdyb3VwO1xuICBzZWxlY3RlZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWplY3RlZFJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0W10gPSBbXTtcbiAgbm90aWZpY2F0aW9uTGlzdDogYW55O1xuICBub3RpZmljYXRpb246YW55O1xuICBhcHByb3ZhbFN0YXR1cyA9ICdTZW50IGZvciBhcHByb3ZhbCc7XG4gIHJlamVjdFN0YXR1cyA9ICdVcGRhdGUgcmVxdWlyZWQnO1xuICBlcnJvck1lc3NhZ2UgPSBudWxsO1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICByZWZ1bmRSZWFzb246IHN0cmluZztcbiAgcmVmdW5kbGlzdDogSVJlZnVuZExpc3Q7XG4gIGJzUGF5bWVudERjbk51bWJlcjogc3RyaW5nO1xuICBpc0NhbGxGcm9tUmVmdW5kTGlzdDogYm9vbGVhbjtcbiAgcmVmdW5kQnV0dG9uU3RhdGU6IHN0cmluZyA9ICcnO1xuICBpc0Ftb3VudEVtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVhc29uRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYW1vdW50SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZEhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZFJlYXNvbnM6IGFueVtdID0gW107XG4gIHJlZnVuZFN0YXR1c0hpc3RvcmllczogSVJlZnVuZFN0YXR1c1tdO1xuICByZWZ1bmROb3RpZmljYXRpb25zOiBJUmVmdW5kU3RhdHVzW107XG4gIGlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0VkaXREZXRhaWxzQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0VkaXRBZGRyZXNzRGVhdGlsc0NsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkcmVzc0RldGFpbHM6IElSZWZ1bmRDb250YWN0RGV0YWlscztcbiAgcmVmdW5kUmVmZXJlbmNlOiBzdHJpbmc7XG4gIHJlZnVuZEFtb3VudDogc3RyaW5nO1xuICByZWZ1bmRDb2RlOiBzdHJpbmc7XG4gIGlzUmVmdW5kQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBvbGRSZWZ1bmRSZWFzb246IHN0cmluZztcbiAgcmVmdW5kcmVhc29uOiBzdHJpbmc7XG4gIG5hdmlnYXRpb25wYWdlOiBzdHJpbmc7XG4gIGlzTGFzdFVwZGF0ZWRCeUN1cnJlbnRVc2VyOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNQcm9jZXNzUmVmdW5kOiBib29sZWFuID0gZmFsc2U7XG4gIGNoYW5nZWRBbW91bnQ6IG51bWJlcjtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIHBheW1lbnQ6IElQYXltZW50O1xuICBjaGFuZ2VSZWZ1bmRSZWFzb246IHN0cmluZztcbiAgZmVlczogSUZlZSBbXTtcbiAgcmVmdW5kRmVlczogSVJlZnVuZEZlZVtdO1xuICBwYXltZW50T2JqOiBJUGF5bWVudDtcbiAgdGVtcGxhdGVJbnN0cnVjdGlvblR5cGU6IHN0cmluZztcbiAgbm90aWZpY2F0aW9uU2VudFZpZXdJbmRleDogbnVtYmVyID0gLTE7XG4gIG5vdGlmaWNhdGlvblByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbm90aWZpY2F0aW9uU2VudFZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsb3dlZFJvbGVzVG9BY2Nlc3NSZWZ1bmQgPSBbJ3BheW1lbnRzLXJlZnVuZC1hcHByb3ZlcicsICdwYXltZW50cy1yZWZ1bmQnXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlZnVuZFNlcnZpY2U6IFJlZnVuZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXltZW50Vmlld1NlcnZpY2U6IFBheW1lbnRWaWV3U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLnJlc2V0UmVtaXNzaW9uRm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCAnQWxsJyk7XG4gICAgdGhpcy5ic1BheW1lbnREY25OdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuO1xuICAgIHRoaXMuaXNDYWxsRnJvbVJlZnVuZExpc3QgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNDYWxsRnJvbVJlZnVuZExpc3Q7XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kdmlldyc7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldFJlZnVuZFZpZXcoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMucmVmdW5kbGlzdCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRDQ0RDYXNlTnVtYmVyZm9yUmVmdW5kLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5jY2RDYXNlTnVtYmVyID0gZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgICBpZih0aGlzLmlzRWxpZ2luYmxlVG9BY2Nlc3MpIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFN0YXR1c0xpc3QodGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVmdW5kTGlzdCA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdGVkUmVmdW5kTGlzdCA9IHJlZnVuZExpc3RbJ3JlZnVuZF9saXN0J107XG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWRSZWZ1bmRMaXN0ID0gW107XG4gICAgICB9XG5cbiAgICB9XG5cblxuICAgICAgdGhpcy5yZWZ1bmRTdGF0dXNGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIGFtb3VudDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLlswLTldezEsMn0pPyQnKVxuICAgICAgICBdKSksXG4gICAgICAgIHJlZnVuZFJlYXNvbjogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSksXG4gICAgICAgIHJlYXNvbjogbmV3IEZvcm1Db250cm9sKClcbiAgICAgIH0pO1xuXG4gICAgICBpZih0aGlzLnJlZnVuZGxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmdldFJlZnVuZHNOb3RpZmljYXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRSZWZ1bmRzU3RhdHVzSGlzdG9yeUxpc3QoKTtcblxuICAgICAgICBpZiAodGhpcy5MT0dHRURJTlVTRVJST0xFUy5zb21lKGkgPT4gaS5pbmNsdWRlcygncGF5bWVudHMtcmVmdW5kLWFwcHJvdmVyJykpKSB7XG4gICAgICAgICAgdGhpcy5pc1Byb2Nlc3NSZWZ1bmQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucmVmdW5kQnV0dG9uU3RhdGUgPSB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3N0YXR1cy5uYW1lO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkxPR0dFRElOVVNFUlJPTEVTLnNvbWUoaSA9PiBpLmluY2x1ZGVzKCdwYXltZW50cy1yZWZ1bmQnKSkpIHtcbiAgICAgICAgICB0aGlzLmlzUHJvY2Vzc1JlZnVuZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucmVmdW5kQnV0dG9uU3RhdGUgPSB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3N0YXR1cy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgfVxuXG4gIGlzRnJvbVBheUJ1YmJsZSA9ICgpOiBib29sZWFuID0+IHsgXG4gICAgcmV0dXJuIHRoaXMuQVBJX1JPT1QgPT09ICdhcGkvcGF5bWVudC1oaXN0b3J5JztcbiAgfVxuXG4gIGdldFJlZnVuZHNTdGF0dXNIaXN0b3J5TGlzdCgpIHtcbiAgICBpZih0aGlzLnJlZnVuZGxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucmVmdW5kU2VydmljZS5nZXRSZWZ1bmRTdGF0dXNIaXN0b3J5KHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBzdGF0dXNIaXN0b3J5TGlzdCA9PiB7XG4gICAgICAgIHRoaXMucmVmdW5kU3RhdHVzSGlzdG9yaWVzID0gc3RhdHVzSGlzdG9yeUxpc3Quc3RhdHVzX2hpc3RvcnlfZHRvX2xpc3Q7XG4gICAgICAgIHRoaXMuaXNMYXN0VXBkYXRlZEJ5Q3VycmVudFVzZXIgPSBzdGF0dXNIaXN0b3J5TGlzdC5sYXN0X3VwZGF0ZWRfYnlfY3VycmVudF91c2VyO1xuICAgICAgfVxuICAgICksXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csXCJcIik7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZnVuZHNOb3RpZmljYXRpb24oKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldFJlZnVuZE5vdGlmaWNhdGlvbih0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3JlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgcmVmdW5kc05vdGlmaWNhdGlvbiA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCA9IHJlZnVuZHNOb3RpZmljYXRpb25bJ25vdGlmaWNhdGlvbnMnXTtcbiAgICAgIH1cbiAgICApLFxuICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csXCJcIik7XG4gICAgfTsgXG4gIH1cblxuICBnb1RvUmVmdW5kVmlldyhyZWZ1bmRsaXN0OiBJUmVmdW5kTGlzdCwgbmF2aWdhdGlvbnBhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0UmVmdW5kVmlldyhyZWZ1bmRsaXN0KTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldENDRENhc2VOdW1iZXIodGhpcy5jY2RDYXNlTnVtYmVyKTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgdGhpcy5yZWZ1bmRsaXN0ID0gcmVmdW5kbGlzdDtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKG5hdmlnYXRpb25wYWdlKTtcbiAgfVxuXG4gIGxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCkge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UoJ2Nhc2V0cmFuc2FjdGlvbnMnKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZShmYWxzZSk7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IGZhbHNlO1xuICB9XG5cbiAgbG9hZFJlZnVuZExpc3RQYWdlKCkge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0bmF2aWdhdGlvblBhZ2VWYWx1ZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5uYXZpZ2F0aW9ucGFnZSA9IGRhdGEpO1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25wYWdlID09PSAnY2FzZXRyYW5zYWN0aW9ucycpIHtcbiAgICAgIHRoaXMubG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZC1saXN0JztcbiAgICB9XG4gIH1cblxuICBnb3RvUmV2aWV3RGV0YWlsc1BhZ2UoZXZlbnQ6YW55KSB7XG4gICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgdGhpcy5uZ09uSW5pdCgpO1xuICB9XG5cbiAgZ290b1Jldmlld0FuZFJlU3VibWl0UGFnZSgpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSB0aGlzLmdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHRoaXMucGF5bWVudE9iaiwgdGhpcy5yZWZ1bmRsaXN0LnBheW1lbnRfcmVmZXJlbmNlKTtcbiAgICB0aGlzLm9sZFJlZnVuZFJlYXNvbiA9IHRoaXMucmVmdW5kbGlzdC5yZWFzb247XG4gICAgdGhpcy5jaGFuZ2VkQW1vdW50ID0gdGhpcy5yZWZ1bmRsaXN0LmFtb3VudDtcbiAgICB0aGlzLnJlZnVuZHJlYXNvbiA9IHRoaXMucmVmdW5kU3RhdHVzSGlzdG9yaWVzLmZpbHRlcihkYXRhID0+IGRhdGEuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICd1cGRhdGUgcmVxdWlyZWQnKVswXS5ub3RlcztcbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UuZ2V0UmVmdW5kUmVhc29ucygpLnN1YnNjcmliZShcbiAgICAgIHJlZnVuZFJlYXNvbnMgPT4ge1xuICAgICAgICB0aGlzLnJlZnVuZFJlYXNvbnMgPSByZWZ1bmRSZWFzb25zO1xuICAgICAgfSk7XG4gIH1cbiAgZ290b1JlZnVuZFJlYXNvblBhZ2UocmVmdW5kUmVhc29uOnN0cmluZykge1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5SRUZVTkRMSVNUID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZVJlZnVuZFJlYXNvbiA9IHJlZnVuZFJlYXNvbjtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ2lzc3VlcmVmdW5kcGFnZTEnO1xuICB9XG5cbiAgZ290b0Ftb3VudFBhZ2UoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuUkVGVU5ETElTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIGlmKHRoaXMucmVmdW5kbGlzdC5yZWFzb24gPT0gJ1JldHJvc3BlY3RpdmUgcmVtaXNzaW9uJykge1xuICAgIHRoaXMudmlld05hbWUgPSAncHJvY2Vzc3JldHJvcmVtaXNzb25wYWdlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TmFtZSA9ICdpc3N1ZXJlZnVuZCc7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1Jldmlld0FuZFN1Ym1pdFZpZXcoKSB7XG4gICAgY29uc3QgcmVtaXNzaW9uY3RybHMgPSB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0uY29udHJvbHNcbiAgICBpZiAodGhpcy5yZWZ1bmRTdGF0dXNGb3JtLmRpcnR5KSB7XG4gICAgICBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlICE9ICcnICYmIHJlbWlzc2lvbmN0cmxzWydhbW91bnQnXS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ3JlYXNvbiddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlXSwgJ3JlYXNvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlbWlzc2lvbmN0cmxzWydyZWFzb24nXS52YWx1ZTtcbiAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdhbmRzdWJtaXR2aWV3JztcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIHJlc2V0UmVtaXNzaW9uRm9ybSh2YWwsIGZpZWxkKSB7XG4gICAgaWYgKGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdhbW91bnQnIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdyZWFzb24nIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhZGlvQnV0dG9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICBpZiAoa2V5ID09PSAnT3RoZXInKSB7XG4gICAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLnJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZ1bmRMaXN0UmVhc29uKHJlZnVuZExpc3RSZWFzb246IGFueSkge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlZnVuZExpc3RSZWFzb24ucmVhc29uO1xuICAgICAgdGhpcy5yZWZ1bmRsaXN0LmNvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgICB0aGlzLnJlZnVuZENvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHRoaXMuY2NkQ2FzZU51bWJlcjtcbiAgfVxuXG4gIGdldFJlZnVuZEFtb3VudChhbW91bnQ6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgaWYgKGFtb3VudCA+IDApIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkQW1vdW50ID0gYW1vdW50O1xuICAgICAgICAvLyB0aGlzLnJlZnVuZGxpc3QuYW1vdW50ID0gYW1vdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVIgPSB0aGlzLmNjZENhc2VOdW1iZXI7XG4gIH1cblxuICBnZXRSZWZ1bmRGZWVzKGZlZXM6IElGZWVbXSlcbiAge1xuICAgIHRoaXMuZmVlcyA9IGZlZXM7XG4gICAgdGhpcy5yZWZ1bmRGZWVzICA9IHRoaXMuZmVlcy5tYXAob2JqID0+ICh7IGZlZV9pZDogb2JqLmlkLCBjb2RlOiBvYmouY29kZSwgdmVyc2lvbjpvYmoudmVyc2lvbiwgdm9sdW1lOiBvYmoudm9sdW1lLHJlZnVuZF9hbW91bnQ6b2JqLnJlZnVuZF9hbW91bnQgfSkpO1xuICB9XG5cbiAgZ290b1Jldmlld1JlZnVuZENvbmZpcm1hdGlvblBhZ2UoKSB7XG4gICAgLy8gaWYgKHRoaXMub2xkUmVmdW5kUmVhc29uID09PSB0aGlzLnJlZnVuZGxpc3QucmVhc29uKSB7XG4gICAgLy8gICB0aGlzLnJlZnVuZENvZGUgPSAnJztcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMucmVmdW5kRmVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlZnVuZEZlZXMgPSB0aGlzLnJlZnVuZGxpc3RbJ3JlZnVuZF9mZWVzJ107XG4gICAgfVxuICAgIHRoaXMucmVmdW5kQ29kZSA9IHRoaXMucmVmdW5kbGlzdC5jb2RlO1xuICAgIGNvbnN0IHJlc3VibWl0UmVxdWVzdCA9IG5ldyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0KHRoaXMucmVmdW5kQ29kZSwgIHRoaXMuY2hhbmdlZEFtb3VudCwgdGhpcy5yZWZ1bmRsaXN0LmNvbnRhY3RfZGV0YWlscywgdGhpcy5yZWZ1bmRGZWVzKTtcbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucGF0Y2hSZXN1Ym1pdFJlZnVuZChyZXN1Ym1pdFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChKU09OLnBhcnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMucmVmdW5kUmVmZXJlbmNlID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX3JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnJlZnVuZEFtb3VudCA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9hbW91bnQ7XG4gICAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdyZWZ1bmRjb25maXJtYXRpb25wYWdlJztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ290b0VkaXRBZGRyZXNzRGV0YWlscyhub3RlOiBJUmVmdW5kc05vdGlmaWNhdGlvbnMpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IG5vdGU7XG4gICAgdGhpcy5pc0VkaXREZXRhaWxzQ2xpY2tlZCA9IHRydWU7XG4gICAgdGhpcy52aWV3TmFtZSA9ICdyZWZ1bmRFZGl0VmlldydcbiAgfVxuICBnZXRDb250YWN0RGV0YWlscyhvYmo6SVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgdGhpcy5hZGRyZXNzRGV0YWlscyA9IG9iajtcbiAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5nZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmosdGhpcy5yZWZ1bmRsaXN0LnBheW1lbnRfcmVmZXJlbmNlKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2VkaXRkZXRhaWxzY29uZmlybWF0aW9ucGFnZSc7XG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHNGb3JSZWZ1bmRMaXN0KG9iajpJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLnJlZnVuZGxpc3QuY29udGFjdF9kZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG4gIGdvdG9FZGl0RGV0YWlsc1BhZ2Uobm90ZT86IGFueSkge1xuICAgIGlmKG5vdGUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uID0geyBjb250YWN0X2RldGFpbHM6IG5vdGUsIG5vdGlmaWNhdGlvbl90eXBlOiBub3RlLm5vdGlmaWNhdGlvbl90eXBlIH07XG4gICAgfVxuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kRWRpdFZpZXcnXG4gIH1cbiAgc3VibWl0RWRpdERldGFpbCgpIHtcbiAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIGNvbnN0IGNvbnRhY3REZXRhaWxzID0gdGhpcy5hZGRyZXNzRGV0YWlscy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJyA/IHRoaXMuYWRkcmVzc0RldGFpbHMuZW1haWwgOlxuICAgICAge1xuICAgICAgICBhZGRyZXNzX2xpbmU6IHRoaXMuYWRkcmVzc0RldGFpbHMuYWRkcmVzc19saW5lLFxuICAgICAgICBjaXR5OiB0aGlzLmFkZHJlc3NEZXRhaWxzLmNpdHksXG4gICAgICAgIGNvdW50eTogdGhpcy5hZGRyZXNzRGV0YWlscy5jb3VudHksXG4gICAgICAgIGNvdW50cnk6IHRoaXMuYWRkcmVzc0RldGFpbHMuY291bnRyeSxcbiAgICAgICAgcG9zdGFsX2NvZGU6IHRoaXMuYWRkcmVzc0RldGFpbHMucG9zdGFsX2NvZGUsXG4gICAgICB9O1xuICAgIGNvbnN0IHJlc2VuZFJlcXVlc3QgPSBuZXcgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QoY29udGFjdERldGFpbHMsIHRoaXMuYWRkcmVzc0RldGFpbHMubm90aWZpY2F0aW9uX3R5cGUpO1xuXG4gICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLnB1dFJlc2VuZE9yRWRpdChyZXNlbmRSZXF1ZXN0LCB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3JlZmVyZW5jZSwgdGhpcy5hZGRyZXNzRGV0YWlscy5ub3RpZmljYXRpb25fdHlwZSkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gcmVzcG9uc2U7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLFwiXCIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcHV0UmVzZW5kKG5vdGlmaWNhdGlvbjogSVJlZnVuZHNOb3RpZmljYXRpb25zKSB7XG4gICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICBjb25zdCBjb250YWN0RGV0YWlscyA9IG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJyA/IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuZW1haWwgOlxuICAgICAge1xuICAgICAgICBhZGRyZXNzX2xpbmUgOm5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuYWRkcmVzc19saW5lLFxuICAgICAgICBjaXR5OiBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmNpdHksXG4gICAgICAgIGNvdW50eTogbm90aWZpY2F0aW9uLmNvbnRhY3RfZGV0YWlscy5jb3VudHksXG4gICAgICAgIGNvdW50cnk6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuY291bnRyeSxcbiAgICAgICAgcG9zdGFsX2NvZGU6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMucG9zdGFsX2NvZGUsXG4gICAgICB9O1xuICAgIGNvbnN0IHJlc2VuZFJlcXVlc3QgPSBuZXcgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QoY29udGFjdERldGFpbHMsIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSk7XG5cbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucHV0UmVzZW5kT3JFZGl0KHJlc2VuZFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLCBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3R5cGUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgIH1cbiAgICApO1xuXG4gIH1cbiAgZ290b0Nhc2V0cmFuc2F0aW9uUGFnZUNhbmNlbEJ0bkNsaWNrZWQoRXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnZpZXdOYW1lICA9ICdyZWZ1bmRzdGF0dXNsaXN0JztcbiAgfVxuXG4gIGdvVG9SZWZ1bmRQcm9jZXNzQ29tcG9uZW50KHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nLCByZWZ1bmRMaXN0OiBJUmVmdW5kTGlzdCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRsaXN0c291cmNlID0gcmVmdW5kTGlzdDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kUmVmZXJlbmNlID0gcmVmdW5kUmVmZXJlbmNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXlCdWJibGUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdwcm9jZXNzLXJlZnVuZCc7XG4gIH1cblxuICBnZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZShwYXltZW50OiBJUGF5bWVudCwgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nKSB7XG5cbiAgICBpZiAocGF5bWVudCA9PSB1bmRlZmluZWQgfHwgcGF5bWVudCA9PSBudWxsIHx8IHBheW1lbnQucmVmZXJlbmNlICE9IHBheW1lbnRSZWZlcmVuY2UpIHtcblxuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0UGF5bWVudERldGFpbHMocGF5bWVudFJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50ID0+IHtcbiAgICAgICAgICB0aGlzLnBheW1lbnRPYmogPSBwYXltZW50O1xuICAgICAgICAgIHRoaXMucGF5bWVudE9iai5yZWZlcmVuY2UgPSBwYXltZW50UmVmZXJlbmNlO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge30pXG5cbiAgICAgICAgaWYgKHRoaXMucGF5bWVudE9iaiAhPSB1bmRlZmluZWQgJiYgdGhpcy5wYXltZW50T2JqICE9IG51bGwgJiYgdGhpcy5wYXltZW50T2JqLnJlZmVyZW5jZSA9PSBwYXltZW50UmVmZXJlbmNlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLmNoYW5uZWwsIHRoaXMucGF5bWVudE9iai5tZXRob2QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAnVGVtcGxhdGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQuY2hhbm5lbCwgcGF5bWVudC5tZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25TZW50VmlldyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50Vmlld0luZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50VmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uU2VudFZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50Vmlld0luZGV4ID0gLTE7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50VmlldyA9IGZhbHNlO1xuICB9XG5cbn1cbiJdfQ==
754
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3JlZnVuZC1zdGF0dXMvcmVmdW5kLXN0YXR1cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUduRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7TUFJaEYsY0FBYyxHQUFHLHVCQUF1QjtBQU85QyxNQUFNLE9BQU8scUJBQXFCOzs7Ozs7Ozs7SUF1RGhDLFlBQW9CLFdBQXdCLEVBQ2xDLGFBQTZCLEVBQzdCLG1CQUF3QyxFQUN4QyxtQkFBd0MsRUFDeEMsaUJBQW9DLEVBQ3BDLGtCQUFzQztRQUw1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFB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LHFEQUFzQzs7SUFDdEMsMkRBQTZFOztJQStEN0UsZ0RBRUM7Ozs7O0lBL0RXLDRDQUFnQzs7Ozs7SUFDMUMsOENBQXFDOzs7OztJQUNyQyxvREFBZ0Q7Ozs7O0lBQ2hELG9EQUFnRDs7Ozs7SUFDaEQsa0RBQTRDOzs7OztJQUM1QyxtREFBOEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZnVuZHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVmdW5kcy9yZWZ1bmRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElSZWZ1bmRMaXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kTGlzdCc7XG5pbXBvcnQgeyBJUmVmdW5kc05vdGlmaWNhdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRzTm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBPcmRlcnNsaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyc2xpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QnO1xuaW1wb3J0IHsgSVJlZnVuZENvbnRhY3REZXRhaWxzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kQ29udGFjdERldGFpbHMnO1xuaW1wb3J0IHsgSVJlZnVuZFN0YXR1cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZFN0YXR1cyc7XG5pbXBvcnQgeyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0JztcbmltcG9ydCB7IFBheW1lbnRMaWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGF5bWVudFZpZXdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGF5bWVudC12aWV3L3BheW1lbnQtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IElQYXltZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF5bWVudCc7XG5pbXBvcnQgeyBJRmVlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JRmVlJztcbmltcG9ydCB7IElSZWZ1bmRGZWUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRGZWUnO1xuY29uc3QgQlNfRU5BQkxFX0ZMQUcgPSAnYnVsay1zY2FuLWVuYWJsaW5nLWZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktcmVmdW5kLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWZ1bmQtc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVmdW5kLXN0YXR1cy5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVmdW5kU3RhdHVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdMT0dHRURJTlVTRVJST0xFUycpIExPR0dFRElOVVNFUlJPTEVTOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoJ0FQSV9ST09UJykgQVBJX1JPT1Q6IHN0cmluZztcbiAgQElucHV0KCkgY2NkQ2FzZU51bWJlcjogc3RyaW5nO1xuICBASW5wdXQoKSBpc1R1cm5PZmY6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG9yZGVyUGFydHk6IHN0cmluZztcbiAgQElucHV0KCkgaXNFbGlnaW5ibGVUb0FjY2VzczogYm9vbGVhbjtcbiAgcmVmdW5kU3RhdHVzRm9ybTogRm9ybUdyb3VwO1xuICBzZWxlY3RlZFJlZnVuZFJlYXNvbjogc3RyaW5nO1xuICByZWplY3RlZFJlZnVuZExpc3Q6IElSZWZ1bmRMaXN0W10gPSBbXTtcbiAgbm90aWZpY2F0aW9uTGlzdDogYW55O1xuICBub3RpZmljYXRpb246YW55O1xuICBhcHByb3ZhbFN0YXR1cyA9ICdTZW50IGZvciBhcHByb3ZhbCc7XG4gIHJlamVjdFN0YXR1cyA9ICdVcGRhdGUgcmVxdWlyZWQnO1xuICBlcnJvck1lc3NhZ2UgPSBudWxsO1xuICB2aWV3TmFtZTogc3RyaW5nO1xuICByZWZ1bmRSZWFzb246IHN0cmluZztcbiAgcmVmdW5kbGlzdDogSVJlZnVuZExpc3Q7XG4gIGJzUGF5bWVudERjbk51bWJlcjogc3RyaW5nO1xuICBpc0NhbGxGcm9tUmVmdW5kTGlzdDogYm9vbGVhbjtcbiAgcmVmdW5kQnV0dG9uU3RhdGU6IHN0cmluZyA9ICcnO1xuICBpc0Ftb3VudEVtcHR5OiBib29sZWFuID0gZmFsc2U7XG4gIGlzUmVhc29uRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYW1vdW50SGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZEhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHJlZnVuZFJlYXNvbnM6IGFueVtdID0gW107XG4gIHJlZnVuZFN0YXR1c0hpc3RvcmllczogSVJlZnVuZFN0YXR1c1tdO1xuICByZWZ1bmROb3RpZmljYXRpb25zOiBJUmVmdW5kU3RhdHVzW107XG4gIGlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0VkaXREZXRhaWxzQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0VkaXRBZGRyZXNzRGVhdGlsc0NsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRkcmVzc0RldGFpbHM6IElSZWZ1bmRDb250YWN0RGV0YWlscztcbiAgcmVmdW5kUmVmZXJlbmNlOiBzdHJpbmc7XG4gIHJlZnVuZEFtb3VudDogc3RyaW5nO1xuICByZWZ1bmRDb2RlOiBzdHJpbmc7XG4gIGlzUmVmdW5kQnRuRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBvbGRSZWZ1bmRSZWFzb246IHN0cmluZztcbiAgcmVmdW5kcmVhc29uOiBzdHJpbmc7XG4gIG5hdmlnYXRpb25wYWdlOiBzdHJpbmc7XG4gIGlzTGFzdFVwZGF0ZWRCeUN1cnJlbnRVc2VyOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNQcm9jZXNzUmVmdW5kOiBib29sZWFuID0gZmFsc2U7XG4gIGNoYW5nZWRBbW91bnQ6IG51bWJlcjtcbiAgaXNSZW1pc3Npb25zTWF0Y2g6IGJvb2xlYW47XG4gIHBheW1lbnQ6IElQYXltZW50O1xuICBjaGFuZ2VSZWZ1bmRSZWFzb246IHN0cmluZztcbiAgZmVlczogSUZlZSBbXTtcbiAgcmVmdW5kRmVlczogSVJlZnVuZEZlZVtdO1xuICBwYXltZW50T2JqOiBJUGF5bWVudDtcbiAgdGVtcGxhdGVJbnN0cnVjdGlvblR5cGU6IHN0cmluZztcbiAgbm90aWZpY2F0aW9uU2VudFZpZXdJbmRleDogbnVtYmVyID0gLTE7XG4gIG5vdGlmaWNhdGlvblByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbm90aWZpY2F0aW9uU2VudFZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsb3dlZFJvbGVzVG9BY2Nlc3NSZWZ1bmQgPSBbJ3BheW1lbnRzLXJlZnVuZC1hcHByb3ZlcicsICdwYXltZW50cy1yZWZ1bmQnXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlZnVuZFNlcnZpY2U6IFJlZnVuZHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHBheW1lbnRMaWJDb21wb25lbnQ6IFBheW1lbnRMaWJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBPcmRlcnNsaXN0U2VydmljZTogT3JkZXJzbGlzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXltZW50Vmlld1NlcnZpY2U6IFBheW1lbnRWaWV3U2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLnJlc2V0UmVtaXNzaW9uRm9ybShbZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2VdLCAnQWxsJyk7XG4gICAgdGhpcy5ic1BheW1lbnREY25OdW1iZXIgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuYnNwYXltZW50ZGNuO1xuICAgIHRoaXMuaXNDYWxsRnJvbVJlZnVuZExpc3QgPSB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNDYWxsRnJvbVJlZnVuZExpc3Q7XG4gICAgaWYgKHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcpIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kdmlldyc7XG4gICAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLmdldFJlZnVuZFZpZXcoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHRoaXMucmVmdW5kbGlzdCA9IGRhdGEpO1xuICAgICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5nZXRDQ0RDYXNlTnVtYmVyZm9yUmVmdW5kLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5jY2RDYXNlTnVtYmVyID0gZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgICBpZih0aGlzLmlzRWxpZ2luYmxlVG9BY2Nlc3MpIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLmdldFJlZnVuZFN0YXR1c0xpc3QodGhpcy5jY2RDYXNlTnVtYmVyKS5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVmdW5kTGlzdCA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdGVkUmVmdW5kTGlzdCA9IHJlZnVuZExpc3RbJ3JlZnVuZF9saXN0J107XG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWRSZWZ1bmRMaXN0ID0gW107XG4gICAgICB9XG5cbiAgICB9XG5cblxuICAgICAgdGhpcy5yZWZ1bmRTdGF0dXNGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIGFtb3VudDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLlswLTldezEsMn0pPyQnKVxuICAgICAgICBdKSksXG4gICAgICAgIHJlZnVuZFJlYXNvbjogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSksXG4gICAgICAgIHJlYXNvbjogbmV3IEZvcm1Db250cm9sKClcbiAgICAgIH0pO1xuXG4gICAgICBpZih0aGlzLnJlZnVuZGxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmdldFJlZnVuZHNOb3RpZmljYXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRSZWZ1bmRzU3RhdHVzSGlzdG9yeUxpc3QoKTtcblxuICAgICAgICBpZiAodGhpcy5MT0dHRURJTlVTRVJST0xFUy5zb21lKGkgPT4gaS5pbmNsdWRlcygncGF5bWVudHMtcmVmdW5kLWFwcHJvdmVyJykpKSB7XG4gICAgICAgICAgdGhpcy5pc1Byb2Nlc3NSZWZ1bmQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucmVmdW5kQnV0dG9uU3RhdGUgPSB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3N0YXR1cy5uYW1lO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkxPR0dFRElOVVNFUlJPTEVTLnNvbWUoaSA9PiBpLmluY2x1ZGVzKCdwYXltZW50cy1yZWZ1bmQnKSkpIHtcbiAgICAgICAgICB0aGlzLmlzUHJvY2Vzc1JlZnVuZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucmVmdW5kQnV0dG9uU3RhdGUgPSB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3N0YXR1cy5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgfVxuXG4gIGlzRnJvbVBheUJ1YmJsZSA9ICgpOiBib29sZWFuID0+IHsgXG4gICAgcmV0dXJuIHRoaXMuQVBJX1JPT1QgPT09ICdhcGkvcGF5bWVudC1oaXN0b3J5JztcbiAgfVxuXG4gIGdldFJlZnVuZHNTdGF0dXNIaXN0b3J5TGlzdCgpIHtcbiAgICBpZih0aGlzLnJlZnVuZGxpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucmVmdW5kU2VydmljZS5nZXRSZWZ1bmRTdGF0dXNIaXN0b3J5KHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICBzdGF0dXNIaXN0b3J5TGlzdCA9PiB7XG4gICAgICAgIHRoaXMucmVmdW5kU3RhdHVzSGlzdG9yaWVzID0gc3RhdHVzSGlzdG9yeUxpc3Quc3RhdHVzX2hpc3RvcnlfZHRvX2xpc3Q7XG4gICAgICAgIHRoaXMuaXNMYXN0VXBkYXRlZEJ5Q3VycmVudFVzZXIgPSBzdGF0dXNIaXN0b3J5TGlzdC5sYXN0X3VwZGF0ZWRfYnlfY3VycmVudF91c2VyO1xuICAgICAgfVxuICAgICksXG4gICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csXCJcIik7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZnVuZHNOb3RpZmljYXRpb24oKSB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmdldFJlZnVuZE5vdGlmaWNhdGlvbih0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3JlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgcmVmdW5kc05vdGlmaWNhdGlvbiA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uTGlzdCA9IHJlZnVuZHNOb3RpZmljYXRpb25bJ25vdGlmaWNhdGlvbnMnXTtcbiAgICAgIH1cbiAgICApLFxuICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IGVycm9yLnJlcGxhY2UoL1wiL2csXCJcIik7XG4gICAgfTsgXG4gIH1cblxuICBnb1RvUmVmdW5kVmlldyhyZWZ1bmRsaXN0OiBJUmVmdW5kTGlzdCwgbmF2aWdhdGlvbnBhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0UmVmdW5kVmlldyhyZWZ1bmRsaXN0KTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldENDRENhc2VOdW1iZXIodGhpcy5jY2RDYXNlTnVtYmVyKTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQudmlld05hbWUgPSAncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgdGhpcy5yZWZ1bmRsaXN0ID0gcmVmdW5kbGlzdDtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldG5hdmlnYXRpb25QYWdlKG5hdmlnYXRpb25wYWdlKTtcbiAgfVxuXG4gIGxvYWRDYXNlVHJhbnNhY3Rpb25QYWdlKCkge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2Uuc2V0bmF2aWdhdGlvblBhZ2UoJ2Nhc2V0cmFuc2FjdGlvbnMnKTtcbiAgICB0aGlzLk9yZGVyc2xpc3RTZXJ2aWNlLnNldGlzRnJvbVNlcnZpY2VSZXF1ZXN0UGFnZShmYWxzZSk7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ2Nhc2UtdHJhbnNhY3Rpb25zJztcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuSVNCU0VOQUJMRSA9IHRydWU7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IGZhbHNlO1xuICB9XG5cbiAgbG9hZFJlZnVuZExpc3RQYWdlKCkge1xuICAgIHRoaXMuT3JkZXJzbGlzdFNlcnZpY2UuZ2V0bmF2aWdhdGlvblBhZ2VWYWx1ZSgpLnN1YnNjcmliZSgoZGF0YSkgPT4gdGhpcy5uYXZpZ2F0aW9ucGFnZSA9IGRhdGEpO1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25wYWdlID09PSAnY2FzZXRyYW5zYWN0aW9ucycpIHtcbiAgICAgIHRoaXMubG9hZENhc2VUcmFuc2FjdGlvblBhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3JlZnVuZC1saXN0JztcbiAgICB9XG4gIH1cblxuICBnb3RvUmV2aWV3RGV0YWlsc1BhZ2UoZXZlbnQ6YW55KSB7XG4gICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzUmVmdW5kU3RhdHVzVmlldyA9IHRydWU7XG4gICAgdGhpcy5uZ09uSW5pdCgpO1xuICB9XG5cbiAgZ290b1Jldmlld0FuZFJlU3VibWl0UGFnZSgpIHtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMudGVtcGxhdGVJbnN0cnVjdGlvblR5cGUgPSB0aGlzLmdldFRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlKHRoaXMucGF5bWVudE9iaiwgdGhpcy5yZWZ1bmRsaXN0LnBheW1lbnRfcmVmZXJlbmNlKTtcbiAgICB0aGlzLm9sZFJlZnVuZFJlYXNvbiA9IHRoaXMucmVmdW5kbGlzdC5yZWFzb247XG4gICAgdGhpcy5jaGFuZ2VkQW1vdW50ID0gdGhpcy5yZWZ1bmRsaXN0LmFtb3VudDtcbiAgICB0aGlzLnJlZnVuZHJlYXNvbiA9IHRoaXMucmVmdW5kU3RhdHVzSGlzdG9yaWVzLmZpbHRlcihkYXRhID0+IGRhdGEuc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICd1cGRhdGUgcmVxdWlyZWQnKVswXS5ub3RlcztcbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UuZ2V0UmVmdW5kUmVhc29ucygpLnN1YnNjcmliZShcbiAgICAgIHJlZnVuZFJlYXNvbnMgPT4ge1xuICAgICAgICB0aGlzLnJlZnVuZFJlYXNvbnMgPSByZWZ1bmRSZWFzb25zO1xuICAgICAgfSk7XG4gIH1cbiAgZ290b1JlZnVuZFJlYXNvblBhZ2UocmVmdW5kUmVhc29uOnN0cmluZykge1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5SRUZVTkRMSVNUID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZVJlZnVuZFJlYXNvbiA9IHJlZnVuZFJlYXNvbjtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ2lzc3VlcmVmdW5kcGFnZTEnO1xuICB9XG5cbiAgZ290b0Ftb3VudFBhZ2UoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuUkVGVU5ETElTVCA9IFwidHJ1ZVwiO1xuICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2NkQ2FzZU51bWJlciA9IHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVI7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzRnJvbVJlZnVuZFN0YXR1c1BhZ2UgPSB0cnVlO1xuICAgIGlmKHRoaXMucmVmdW5kbGlzdC5yZWFzb24gPT0gJ1JldHJvc3BlY3RpdmUgcmVtaXNzaW9uJykge1xuICAgIHRoaXMudmlld05hbWUgPSAncHJvY2Vzc3JldHJvcmVtaXNzb25wYWdlJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aWV3TmFtZSA9ICdpc3N1ZXJlZnVuZCc7XG4gICAgfVxuICB9XG5cbiAgZ29Ub1Jldmlld0FuZFN1Ym1pdFZpZXcoKSB7XG4gICAgY29uc3QgcmVtaXNzaW9uY3RybHMgPSB0aGlzLnJlZnVuZFN0YXR1c0Zvcm0uY29udHJvbHNcbiAgICBpZiAodGhpcy5yZWZ1bmRTdGF0dXNGb3JtLmRpcnR5KSB7XG4gICAgICBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFt0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ2Ftb3VudCddLnZhbHVlICE9ICcnICYmIHJlbWlzc2lvbmN0cmxzWydhbW91bnQnXS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXSwgJ2Ftb3VudCcpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAocmVtaXNzaW9uY3RybHNbJ3JlYXNvbiddLnZhbHVlID09ICcnKSB7XG4gICAgICAgIHRoaXMucmVzZXRSZW1pc3Npb25Gb3JtKFtmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlXSwgJ3JlYXNvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlbWlzc2lvbmN0cmxzWydyZWFzb24nXS52YWx1ZTtcbiAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdhbmRzdWJtaXR2aWV3JztcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIHJlc2V0UmVtaXNzaW9uRm9ybSh2YWwsIGZpZWxkKSB7XG4gICAgaWYgKGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdhbW91bnQnIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc0Ftb3VudEVtcHR5ID0gdmFsWzBdO1xuICAgICAgdGhpcy5hbW91bnRIYXNFcnJvciA9IHZhbFsxXTtcbiAgICAgIHRoaXMuaXNSZW1pc3Npb25MZXNzVGhhbkZlZUVycm9yID0gdmFsWzJdO1xuICAgIH0gZWxzZSBpZiAoZmllbGQgPT09ICdyZWFzb24nIHx8IGZpZWxkID09PSAnQWxsJykge1xuICAgICAgdGhpcy5pc1JlYXNvbkVtcHR5ID0gdmFsWzNdO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhZGlvQnV0dG9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICBpZiAoa2V5ID09PSAnT3RoZXInKSB7XG4gICAgICB0aGlzLnJlZnVuZEhhc0Vycm9yID0gZmFsc2U7XG4gICAgICB0aGlzLnJlZnVuZFJlYXNvbiA9IGtleTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZ1bmRMaXN0UmVhc29uKHJlZnVuZExpc3RSZWFzb246IGFueSkge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgdGhpcy5yZWZ1bmRsaXN0LnJlYXNvbiA9IHJlZnVuZExpc3RSZWFzb24ucmVhc29uO1xuICAgICAgdGhpcy5yZWZ1bmRsaXN0LmNvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgICB0aGlzLnJlZnVuZENvZGUgPSByZWZ1bmRMaXN0UmVhc29uLmNvZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNSZWZ1bmRCdG5EaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmV2aWV3YW5kc3VibWl0dmlldyc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHRoaXMuY2NkQ2FzZU51bWJlcjtcbiAgfVxuXG4gIGdldFJlZnVuZEFtb3VudChhbW91bnQ6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnBheW1lbnRMaWJDb21wb25lbnQuaXNGcm9tUmVmdW5kU3RhdHVzUGFnZSAmJiAhdGhpcy5wYXltZW50TGliQ29tcG9uZW50LmlzY2FuY2VsQ2xpY2tlZCkge1xuICAgICAgaWYgKGFtb3VudCA+IDApIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VkQW1vdW50ID0gYW1vdW50O1xuICAgICAgICAvLyB0aGlzLnJlZnVuZGxpc3QuYW1vdW50ID0gYW1vdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5DQ0RfQ0FTRV9OVU1CRVIgPSB0aGlzLmNjZENhc2VOdW1iZXI7XG4gIH1cblxuICBnZXRSZWZ1bmRGZWVzKGZlZXM6IElGZWVbXSlcbiAge1xuICAgIHRoaXMuZmVlcyA9IGZlZXM7XG4gICAgdGhpcy5yZWZ1bmRGZWVzICA9IHRoaXMuZmVlcy5tYXAob2JqID0+ICh7IGZlZV9pZDogb2JqLmlkLCBjb2RlOiBvYmouY29kZSwgdmVyc2lvbjpvYmoudmVyc2lvbiwgdm9sdW1lOiBvYmoudm9sdW1lLHJlZnVuZF9hbW91bnQ6b2JqLnJlZnVuZF9hbW91bnQgfSkpO1xuICB9XG5cbiAgZ290b1Jldmlld1JlZnVuZENvbmZpcm1hdGlvblBhZ2UoKSB7XG4gICAgLy8gaWYgKHRoaXMub2xkUmVmdW5kUmVhc29uID09PSB0aGlzLnJlZnVuZGxpc3QucmVhc29uKSB7XG4gICAgLy8gICB0aGlzLnJlZnVuZENvZGUgPSAnJztcbiAgICAvLyB9XG4gICAgaWYgKHRoaXMucmVmdW5kRmVlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlZnVuZEZlZXMgPSB0aGlzLnJlZnVuZGxpc3RbJ3JlZnVuZF9mZWVzJ107XG4gICAgfVxuICAgIHRoaXMucmVmdW5kQ29kZSA9IHRoaXMucmVmdW5kbGlzdC5jb2RlO1xuICAgIGNvbnN0IHJlc3VibWl0UmVxdWVzdCA9IG5ldyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0KHRoaXMucmVmdW5kQ29kZSwgIHRoaXMuY2hhbmdlZEFtb3VudCwgdGhpcy5yZWZ1bmRsaXN0LmNvbnRhY3RfZGV0YWlscywgdGhpcy5yZWZ1bmRGZWVzKTtcbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucGF0Y2hSZXN1Ym1pdFJlZnVuZChyZXN1Ym1pdFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlKS5zdWJzY3JpYmUoXG4gICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgIGlmIChKU09OLnBhcnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMucmVmdW5kUmVmZXJlbmNlID0gSlNPTi5wYXJzZShyZXNwb25zZSkucmVmdW5kX3JlZmVyZW5jZTtcbiAgICAgICAgICB0aGlzLnJlZnVuZEFtb3VudCA9IEpTT04ucGFyc2UocmVzcG9uc2UpLnJlZnVuZF9hbW91bnQ7XG4gICAgICAgICAgdGhpcy52aWV3TmFtZSA9ICdyZXZpZXdyZWZ1bmRjb25maXJtYXRpb25wYWdlJztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ290b0VkaXRBZGRyZXNzRGV0YWlscyhub3RlOiBJUmVmdW5kc05vdGlmaWNhdGlvbnMpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IG5vdGU7XG4gICAgdGhpcy5pc0VkaXREZXRhaWxzQ2xpY2tlZCA9IHRydWU7XG4gICAgdGhpcy52aWV3TmFtZSA9ICdyZWZ1bmRFZGl0VmlldydcbiAgfVxuICBnZXRDb250YWN0RGV0YWlscyhvYmo6SVJlZnVuZENvbnRhY3REZXRhaWxzKSB7XG4gICAgdGhpcy5hZGRyZXNzRGV0YWlscyA9IG9iajtcbiAgICB0aGlzLnRlbXBsYXRlSW5zdHJ1Y3Rpb25UeXBlID0gdGhpcy5nZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZSh0aGlzLnBheW1lbnRPYmosdGhpcy5yZWZ1bmRsaXN0LnBheW1lbnRfcmVmZXJlbmNlKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2VkaXRkZXRhaWxzY29uZmlybWF0aW9ucGFnZSc7XG4gIH1cbiAgZ2V0Q29udGFjdERldGFpbHNGb3JSZWZ1bmRMaXN0KG9iajpJUmVmdW5kQ29udGFjdERldGFpbHMpIHtcbiAgICB0aGlzLnJlZnVuZGxpc3QuY29udGFjdF9kZXRhaWxzID0gb2JqO1xuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmVmdW5kQnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnZpZXdOYW1lID0gJ3Jldmlld2FuZHN1Ym1pdHZpZXcnO1xuICB9XG4gIGdvdG9FZGl0RGV0YWlsc1BhZ2Uobm90ZT86IGFueSkge1xuICAgIGlmKG5vdGUpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uID0geyBjb250YWN0X2RldGFpbHM6IG5vdGUsIG5vdGlmaWNhdGlvbl90eXBlOiBub3RlLm5vdGlmaWNhdGlvbl90eXBlIH07XG4gICAgfVxuICAgIHRoaXMuaXNFZGl0RGV0YWlsc0NsaWNrZWQgPSB0cnVlO1xuICAgIHRoaXMudmlld05hbWUgPSAncmVmdW5kRWRpdFZpZXcnXG4gIH1cbiAgc3VibWl0RWRpdERldGFpbCgpIHtcbiAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIGNvbnN0IGNvbnRhY3REZXRhaWxzID0gdGhpcy5hZGRyZXNzRGV0YWlscy5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJyA/IHRoaXMuYWRkcmVzc0RldGFpbHMuZW1haWwgOlxuICAgICAge1xuICAgICAgICBhZGRyZXNzX2xpbmU6IHRoaXMuYWRkcmVzc0RldGFpbHMuYWRkcmVzc19saW5lLFxuICAgICAgICBjaXR5OiB0aGlzLmFkZHJlc3NEZXRhaWxzLmNpdHksXG4gICAgICAgIGNvdW50eTogdGhpcy5hZGRyZXNzRGV0YWlscy5jb3VudHksXG4gICAgICAgIGNvdW50cnk6IHRoaXMuYWRkcmVzc0RldGFpbHMuY291bnRyeSxcbiAgICAgICAgcG9zdGFsX2NvZGU6IHRoaXMuYWRkcmVzc0RldGFpbHMucG9zdGFsX2NvZGUsXG4gICAgICB9O1xuICAgIGNvbnN0IHJlc2VuZFJlcXVlc3QgPSBuZXcgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QoY29udGFjdERldGFpbHMsIHRoaXMuYWRkcmVzc0RldGFpbHMubm90aWZpY2F0aW9uX3R5cGUpO1xuXG4gICAgdGhpcy5yZWZ1bmRTZXJ2aWNlLnB1dFJlc2VuZE9yRWRpdChyZXNlbmRSZXF1ZXN0LCB0aGlzLnJlZnVuZGxpc3QucmVmdW5kX3JlZmVyZW5jZSwgdGhpcy5hZGRyZXNzRGV0YWlscy5ub3RpZmljYXRpb25fdHlwZSkuc3Vic2NyaWJlKFxuICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gcmVzcG9uc2U7XG4gICAgICB9LFxuICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5yZXBsYWNlKC9cIi9nLFwiXCIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgcHV0UmVzZW5kKG5vdGlmaWNhdGlvbjogSVJlZnVuZHNOb3RpZmljYXRpb25zKSB7XG4gICAgdGhpcy5pc1Jlc2VuZE9wZXJhdGlvblN1Y2Nlc3MgPSBmYWxzZTtcbiAgICBjb25zdCBjb250YWN0RGV0YWlscyA9IG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSA9PT0gJ0VNQUlMJyA/IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuZW1haWwgOlxuICAgICAge1xuICAgICAgICBhZGRyZXNzX2xpbmUgOm5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuYWRkcmVzc19saW5lLFxuICAgICAgICBjaXR5OiBub3RpZmljYXRpb24uY29udGFjdF9kZXRhaWxzLmNpdHksXG4gICAgICAgIGNvdW50eTogbm90aWZpY2F0aW9uLmNvbnRhY3RfZGV0YWlscy5jb3VudHksXG4gICAgICAgIGNvdW50cnk6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMuY291bnRyeSxcbiAgICAgICAgcG9zdGFsX2NvZGU6IG5vdGlmaWNhdGlvbi5jb250YWN0X2RldGFpbHMucG9zdGFsX2NvZGUsXG4gICAgICB9O1xuICAgIGNvbnN0IHJlc2VuZFJlcXVlc3QgPSBuZXcgSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QoY29udGFjdERldGFpbHMsIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb25fdHlwZSk7XG5cbiAgICB0aGlzLnJlZnVuZFNlcnZpY2UucHV0UmVzZW5kT3JFZGl0KHJlc2VuZFJlcXVlc3QsIHRoaXMucmVmdW5kbGlzdC5yZWZ1bmRfcmVmZXJlbmNlLCBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uX3R5cGUpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmVzZW5kT3BlcmF0aW9uU3VjY2VzcyA9IHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZXNlbmRPcGVyYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IucmVwbGFjZSgvXCIvZyxcIlwiKTtcbiAgICAgIH1cbiAgICApO1xuXG4gIH1cbiAgZ290b0Nhc2V0cmFuc2F0aW9uUGFnZUNhbmNlbEJ0bkNsaWNrZWQoRXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnZpZXdOYW1lICA9ICdyZWZ1bmRzdGF0dXNsaXN0JztcbiAgfVxuXG4gIGdvVG9SZWZ1bmRQcm9jZXNzQ29tcG9uZW50KHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nLCByZWZ1bmRMaXN0OiBJUmVmdW5kTGlzdCkge1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRsaXN0c291cmNlID0gcmVmdW5kTGlzdDtcbiAgICB0aGlzLnBheW1lbnRMaWJDb21wb25lbnQucmVmdW5kUmVmZXJlbmNlID0gcmVmdW5kUmVmZXJlbmNlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0Zyb21QYXlCdWJibGUgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZSA9ICdwcm9jZXNzLXJlZnVuZCc7XG4gIH1cblxuICBnZXRUZW1wbGF0ZUluc3RydWN0aW9uVHlwZShwYXltZW50OiBJUGF5bWVudCwgcGF5bWVudFJlZmVyZW5jZTogc3RyaW5nKSB7XG5cbiAgICBpZiAocGF5bWVudCA9PSB1bmRlZmluZWQgfHwgcGF5bWVudCA9PSBudWxsIHx8IHBheW1lbnQucmVmZXJlbmNlICE9IHBheW1lbnRSZWZlcmVuY2UpIHtcblxuICAgICAgdGhpcy5wYXltZW50Vmlld1NlcnZpY2UuZ2V0UGF5bWVudERldGFpbHMocGF5bWVudFJlZmVyZW5jZSkuc3Vic2NyaWJlKFxuICAgICAgICBwYXltZW50ID0+IHtcbiAgICAgICAgICB0aGlzLnBheW1lbnRPYmogPSBwYXltZW50O1xuICAgICAgICAgIHRoaXMucGF5bWVudE9iai5yZWZlcmVuY2UgPSBwYXltZW50UmVmZXJlbmNlO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge30pXG5cbiAgICAgICAgY29uc29sZS5sb2coJ1JldHJpZXZlZCBQYXltZW50IE9iamVjdDogJyArIEpTT04uc3RyaW5naWZ5KHRoaXMucGF5bWVudE9iaikpO1xuICAgICAgICBpZiAodGhpcy5wYXltZW50T2JqID09IHVuZGVmaW5lZCB8fCB0aGlzLnBheW1lbnRPYmogPT0gbnVsbCB8fCB0aGlzLnBheW1lbnRPYmoucmVmZXJlbmNlICE9IHBheW1lbnRSZWZlcmVuY2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnaWYgY29uZGl0aW9uJyk7XG4gICAgICAgICAgcmV0dXJuICdUZW1wbGF0ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vsc2UgY29uZGl0aW9uJyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5nZXROb3RpZmljYXRpb25JbnN0cnVjdGlvblR5cGUodGhpcy5wYXltZW50T2JqLmNoYW5uZWwsIHRoaXMucGF5bWVudE9iai5tZXRob2QpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSW5zdHJ1Y3Rpb25UeXBlKHBheW1lbnQuY2hhbm5lbCwgcGF5bWVudC5tZXRob2QpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25QcmV2aWV3KCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uUHJldmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uUHJldmlldygpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblByZXZpZXcgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dOb3RpZmljYXRpb25TZW50VmlldyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50Vmlld0luZGV4ID0gaW5kZXg7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50VmlldyA9IHRydWU7XG4gIH1cblxuICBoaWRlTm90aWZpY2F0aW9uU2VudFZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50Vmlld0luZGV4ID0gLTE7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZW50VmlldyA9IGZhbHNlO1xuICB9XG5cbn1cbiJdfQ==
@@ -136,7 +136,7 @@ export class TableComponent {
136
136
  TableComponent.decorators = [
137
137
  { type: Component, args: [{
138
138
  selector: 'ccpay-table',
139
- template: "<div class=\"add-remission\">\n <div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n\n \n\n<div *ngIf=\"dataSource.data.length > 0\" class=\"govuk-form-group float-right\">\n <label class=\"govuk-label dropdpwn\" for=\"sort\" >\n Filter by caseworker:\n </label>\n <select class=\"govuk-select\" id=\"sort\" name=\"sort\" (change)=\"selectchange($event)\">\n <option value=\"\" selected='selected'>All caseworkers</option>\n <option *ngFor=\"let name of userLst;\" value=\"{{name}}\">{{name}}</option>\n </select>\n</div>\n\n <div *ngIf=\"dataSource.data.length > 0\" class=\"govuk-form-group float-right-padding\">\n <label class=\"govuk-label dropdpwn\" for=\"sort\" >\n Filter by service:\n </label>\n <select class=\"govuk-select\" id=\"sort\" name=\"sort\" (change)=\"selectchange($event)\">\n <option value=\"\" selected='selected'>All services</option>\n <option *ngFor=\"let name of serviceLst;\" value=\"{{name}}\">{{name}}</option>\n </select>\n </div>\n\n <div *ngIf=\"dataSource.data.length > 0\" class=\"govuk-form-group float-left-padding\">\n <label class=\"govuk-label dropdpwn\" for=\"sort\" >\n Filter by service:\n </label>\n <select class=\"govuk-select\" id=\"sort\" name=\"sort\" (change)=\"selectchange($event)\">\n <option value=\"\" selected='selected'>All services</option>\n <option *ngFor=\"let name of serviceLst;\" value=\"{{name}}\">{{name}}</option>\n </select>\n </div>\n \n<div *ngIf=\"dataSource.data.length > 0\" class=\"example-container\">\n\n <mat-table [dataSource]=\"dataSource\" matSort>\n\n <ng-container matColumnDef=\"ccd_case_number\">\n <mat-header-cell *matHeaderCellDef >Case reference </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"whitespace-inherit\"> {{row.ccd_case_number | ccdHyphens }} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"refund_reference\">\n <mat-header-cell *matHeaderCellDef > Refund reference </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"whitespace-inherit\"> {{row.refund_reference}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"user_full_name\">\n <mat-header-cell *matHeaderCellDef > Submitted by </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\" class=\"whitespace-inherit\"> {{row.user_full_name }} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"date_created\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> Date created </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"whitespace-inherit\"> {{row.date_created | date:'d MMMM yyyy'}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"date_updated\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> Last updated</mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\" class=\"whitespace-inherit\"> {{row.date_updated | date:'d MMMM yyyy'}} </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"isApprovalFlow\" matColumnDef=\"Action\">\n <mat-header-cell *matHeaderCellDef> Action </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\" > <a href=\"javascript:void(0)\" (click)=\"goToCaseReview(row.ccd_case_number, row)\">Review case</a>&nbsp;<a href=\"javascript:void(0)\" (click)=\"goToRefundProcessComponent(row.refund_reference, row)\">Process refund</a></mat-cell>\n </ng-container>\n \n <ng-container *ngIf=\"!isApprovalFlow\" matColumnDef=\"Action\">\n <mat-header-cell *matHeaderCellDef > Action </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\"> <a href=\"javascript:void(0)\" (click)=\"goToRefundViewComponent(row.refund_reference, row)\">Review refund</a></mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\">\n </mat-row>\n </mat-table>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 25, 100]\"></mat-paginator>\n</div>\n\n<div class=\"govuk-label dropdpwn\" *ngIf=\"dataSource.data.length === 0\">No records to display</div>\n",
139
+ template: "<div class=\"add-remission\">\n <div *ngIf=\"errorMessage\">\n <div class=\"error-summary\" role=\"group\" aria-labelledby=\"failure-error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-medium error-summary-heading\" id=\"failure-error-summary-heading\">\n Error in processing the request\n </h2>\n <div class=\"govuk-error-summary__body\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n\n \n\n<div *ngIf=\"dataSource.data.length > 0\" class=\"govuk-form-group float-right\">\n <label class=\"govuk-label dropdpwn\" for=\"sort\" >\n Filter by caseworker:\n </label>\n <select class=\"govuk-select\" id=\"sort\" name=\"sort\" (change)=\"selectchange($event)\">\n <option value=\"\" selected='selected'>All caseworkers</option>\n <option *ngFor=\"let name of userLst;\" value=\"{{name}}\">{{name}}</option>\n </select>\n</div>\n\n <div *ngIf=\"dataSource.data.length > 0\" class=\"govuk-form-group float-right-padding\">\n <label class=\"govuk-label dropdpwn\" for=\"sort\" >\n Filter by service:\n </label>\n <select class=\"govuk-select\" id=\"sort\" name=\"sort\" (change)=\"selectchange($event)\">\n <option value=\"\" selected='selected'>All services</option>\n <option *ngFor=\"let name of serviceLst;\" value=\"{{name}}\">{{name}}</option>\n </select>\n </div>\n \n<div *ngIf=\"dataSource.data.length > 0\" class=\"example-container\">\n\n <mat-table [dataSource]=\"dataSource\" matSort>\n\n <ng-container matColumnDef=\"ccd_case_number\">\n <mat-header-cell *matHeaderCellDef >Case reference </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"whitespace-inherit\"> {{row.ccd_case_number | ccdHyphens }} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"refund_reference\">\n <mat-header-cell *matHeaderCellDef > Refund reference </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"whitespace-inherit\"> {{row.refund_reference}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"user_full_name\">\n <mat-header-cell *matHeaderCellDef > Submitted by </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\" class=\"whitespace-inherit\"> {{row.user_full_name }} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"date_created\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> Date created </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" class=\"whitespace-inherit\"> {{row.date_created | date:'d MMMM yyyy'}} </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"date_updated\">\n <mat-header-cell *matHeaderCellDef mat-sort-header> Last updated</mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\" class=\"whitespace-inherit\"> {{row.date_updated | date:'d MMMM yyyy'}} </mat-cell>\n </ng-container>\n\n <ng-container *ngIf=\"isApprovalFlow\" matColumnDef=\"Action\">\n <mat-header-cell *matHeaderCellDef> Action </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\" > <a href=\"javascript:void(0)\" (click)=\"goToCaseReview(row.ccd_case_number, row)\">Review case</a>&nbsp;<a href=\"javascript:void(0)\" (click)=\"goToRefundProcessComponent(row.refund_reference, row)\">Process refund</a></mat-cell>\n </ng-container>\n \n <ng-container *ngIf=\"!isApprovalFlow\" matColumnDef=\"Action\">\n <mat-header-cell *matHeaderCellDef > Action </mat-header-cell>\n <mat-cell *matCellDef=\"let row\" [style.color]=\"row.color\"> <a href=\"javascript:void(0)\" (click)=\"goToRefundViewComponent(row.refund_reference, row)\">Review refund</a></mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\">\n </mat-row>\n </mat-table>\n <mat-paginator [pageSizeOptions]=\"[5, 10, 25, 100]\"></mat-paginator>\n</div>\n\n<div class=\"govuk-label dropdpwn\" *ngIf=\"dataSource.data.length === 0\">No records to display</div>\n",
140
140
  styles: [".mat-header-row{min-height:27px}.mat-cell{padding:0 10px 0 0;text-align:left;word-wrap:break-word;white-space:inherit!important;font-size:19px;line-height:25px;font-family:nta,Arial,sans-serif;font-weight:400}.mat-table{color:#0b0c0c;display:table;font-family:nta,Arial,sans-serif;-webkit-font-smoothing:antialiased;margin-bottom:1px;box-sizing:border-box;text-indent:initial;border-spacing:0;border-collapse:collapse;font-size:1.1875rem;line-height:1.31578947;table-layout:fixed;width:102%}.mat-header-cell{text-align:left;font-weight:700;padding:10px 10px 10px 0;word-wrap:break-word;font-size:19px;line-height:25px;color:#0b0c0c;cursor:pointer;font-family:inherit}.dropdpwn{display:inline-block;margin-right:10px;font-size:19px}.mat-column-ccdCaseNumber{flex:3em}.mat-column-refundReference{flex:6em}.mat-column-reason{flex:2em}.govuk-select{font-size:19px;font-weight:400}.govuk-error-summary__title{font-size:24px!important}.float-right{float:right}.float-right-padding{float:right;padding-right:2em}.float-left-padding{padding-left:12em}"]
141
141
  }] }
142
142
  ];
@@ -208,4 +208,4 @@ if (false) {
208
208
  */
209
209
  TableComponent.prototype.activeRoute;
210
210
  }
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNeEQsTUFBTSxPQUFPLGNBQWM7Ozs7Ozs7O0lBZ0J6QixZQUNVLG1CQUF3QyxFQUN4QyxLQUF3QixFQUN4QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLFdBQTJCO1FBSjNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWdCOztRQWZyQyxxQkFBZ0IsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFnQm5ILENBQUM7Ozs7SUFDSixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJ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QUMsY0FBYzt3QkFXcEIsU0FBUyxTQUFDLFlBQVk7bUJBQ3RCLFNBQVMsU0FBQyxPQUFPOzs7O0lBZGxCLG9DQUF1Qzs7SUFDdkMsZ0NBQWdDOztJQUNoQyxzQ0FBNEM7O0lBQzVDLHdDQUF3Qjs7SUFFeEIsMENBQXNIOztJQUV0SCxvQ0FBb0M7O0lBQ3BDLGlDQUFROztJQUNSLG9DQUFXOztJQUNYLHFDQUFvQjs7SUFDcEIsK0JBQWM7O0lBQ2Qsb0NBQTBCOztJQUMxQixtQ0FBaUQ7O0lBQ2pELDhCQUFrQzs7Ozs7SUFFaEMsNkNBQWdEOzs7OztJQUNoRCwrQkFBZ0M7Ozs7O0lBQ2hDLDJDQUE0Qzs7Ozs7SUFDNUMsZ0NBQXNCOzs7OztJQUN0QixxQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYXltZW50TGliQ29tcG9uZW50fSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge01hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgSVJlZnVuZExpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0JztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXJzbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRISVNfRVhQUiB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSxSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoJ0RBVEFTT1VSQ0UnKSBEQVRBU09VUkNFOiBhbnlbXTtcbiAgQElucHV0KCdTVEFUVVMnKSBTVEFUVVM6IHN0cmluZztcbiAgQElucHV0KCdlcnJvck1lc3NhZ2UnKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgaXNBcHByb3ZhbEZsb3c6IGJvb2xlYW47XG4gIC8vIGRpc3BsYXllZENvbHVtbnMgPSBbJ2NjZENhc2VOdW1iZXInLCAncmVmdW5kUmVmZXJlbmNlJywgJ3JlYXNvbicsICdjcmVhdGVCeScsICd1cGRhdGVEYXRlJywgJ0FjdGlvbiddO1xuICBkaXNwbGF5ZWRDb2x1bW5zID0gWydjY2RfY2FzZV9udW1iZXInLCAncmVmdW5kX3JlZmVyZW5jZScsICd1c2VyX2Z1bGxfbmFtZScsJ2RhdGVfY3JlYXRlZCcsICdkYXRlX3VwZGF0ZWQnLCAnQWN0aW9uJ107XG4gIFxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgdXNlckxzdDtcbiAgc2VydmljZUxzdDtcbiAgYWN0dWFsY291bnQ6IG51bWJlcjtcbiAgY291bnQ6IG51bWJlcjtcbiAgcmVmdW5kTGlzdDogSVJlZnVuZExpc3RbXTtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZlUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZTtcbiAgICBpZih0aGlzLlNUQVRVUy50b0xvd2VyQ2FzZSgpID09PSAnc2VudCBmb3IgYXBwcm92YWwnKSB7XG4gICAgICB0aGlzLmlzQXBwcm92YWxGbG93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgIHRoaXMuaXNBcHByb3ZhbEZsb3cgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5yZWZ1bmRMaXN0ID0gdGhpcy5EQVRBU09VUkNFO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5yZWZ1bmRMaXN0KTtcbiAgICB0aGlzLmFjdHVhbGNvdW50ID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgIGlmKCB0aGlzLnJlZnVuZExpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICB0aGlzLnVzZXJMc3QgPSB0aGlzLnJlZnVuZExpc3QucmVkdWNlKChyLHt1c2VyX2Z1bGxfbmFtZX0pID0+IChyW3VzZXJfZnVsbF9uYW1lXT0nJywgcikgLCB7fSk7XG4gICAgIHRoaXMudXNlckxzdCA9IE9iamVjdC5rZXlzKHRoaXMudXNlckxzdCk7XG4gICAgIHRoaXMudXNlckxzdC5zb3J0KChhLCBiKSA9PiBhLnRvU3RyaW5nKCkubG9jYWxlQ29tcGFyZShiKSk7XG4gICAgIHRoaXMuc2VydmljZUxzdCA9IHRoaXMucmVmdW5kTGlzdC5yZWR1Y2UoKHIse3NlcnZpY2VfdHlwZX0pID0+IChyW3NlcnZpY2VfdHlwZV09JycsIHIpICwge30pO1xuICAgICB0aGlzLnNlcnZpY2VMc3QgPSBPYmplY3Qua2V5cyh0aGlzLnNlcnZpY2VMc3QpO1xuICAgICB0aGlzLnNlcnZpY2VMc3Quc29ydCgoYSwgYikgPT4gYS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYikpO1xuICAgIH1cbiAgICBcbiAgfVxuICAgXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBhZ2luYXRvciBhbmQgc29ydCBhZnRlciB0aGUgdmlldyBpbml0IHNpbmNlIHRoaXMgY29tcG9uZW50IHdpbGxcbiAgICogYmUgYWJsZSB0byBxdWVyeSBpdHMgdmlldyBmb3IgdGhlIGluaXRpYWxpemVkIHBhZ2luYXRvciBhbmQgc29ydC5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcblxuICAgIC8vY29uc3Qgc29ydFN0YXRlOiBTb3J0ID0ge2FjdGl2ZTogJ2RhdGVfdXBkYXRlZCcsIGRpcmVjdGlvbjogJ2Rlc2MnfTtcbiAgICAvLyB0aGlzLnNvcnQuYWN0aXZlID0gc29ydFN0YXRlLmFjdGl2ZTtcbiAgICAvLyB0aGlzLnNvcnQuZGlyZWN0aW9uID0gc29ydFN0YXRlLmRpcmVjdGlvbjtcbiAgICAvLyB0aGlzLnNvcnQuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcbiAgICBmaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlLnRyaW0oKTsgLy8gUmVtb3ZlIHdoaXRlc3BhY2VcbiAgICBmaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCk7IC8vIERhdGFzb3VyY2UgZGVmYXVsdHMgdG8gbG93ZXJjYXNlIG1hdGNoZXNcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWU7XG4gIH1cbiAgc2VsZWN0Y2hhbmdlKGFyZ3Mpe1xuICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBhcmdzLnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmFjdHVhbGNvdW50ID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgfVxuICBnb1RvUmVmdW5kUHJvY2Vzc0NvbXBvbmVudChyZWZ1bmRSZWZlcmVuY2U6IHN0cmluZywgcmVmdW5kRGF0YTogSVJlZnVuZExpc3QgKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZGxpc3Rzb3VyY2UgPSByZWZ1bmREYXRhO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRSZWZlcmVuY2UgPSByZWZ1bmRSZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3Byb2Nlc3MtcmVmdW5kJztcbiAgfVxuICBnb1RvUmVmdW5kVmlld0NvbXBvbmVudChyZWZ1bmRSZWZlcmVuY2U6IHN0cmluZywgcmVmdW5kRGF0YTogSVJlZnVuZExpc3QgKSB7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRSZWZ1bmRWaWV3KHJlZnVuZERhdGEpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZT0ncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHJlZnVuZERhdGEuY2NkX2Nhc2VfbnVtYmVyO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0NhbGxGcm9tUmVmdW5kTGlzdCA9IHRydWU7XG4gIH1cbiAgZ29Ub0Nhc2VSZXZpZXcoY2NkQ2FzZU51bWJlcjogc3RyaW5nLCByZWZ1bmREYXRhOiBJUmVmdW5kTGlzdCApIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjY2RDYXNlTnVtYmVyfWBdLCB7cmVsYXRpdmVUbzogdGhpcy5hY3RpdmVSb3V0ZX0pO1xuICB9XG59Il19
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFaEQsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxjQUFjLEVBQUMsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNeEQsTUFBTSxPQUFPLGNBQWM7Ozs7Ozs7O0lBZ0J6QixZQUNVLG1CQUF3QyxFQUN4QyxLQUF3QixFQUN4QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLFdBQTJCO1FBSjNCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWdCOztRQWZyQyxxQkFBZ0IsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFnQm5ILENBQUM7Ozs7SUFDSixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJ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QUMsY0FBYzt3QkFXcEIsU0FBUyxTQUFDLFlBQVk7bUJBQ3RCLFNBQVMsU0FBQyxPQUFPOzs7O0lBZGxCLG9DQUF1Qzs7SUFDdkMsZ0NBQWdDOztJQUNoQyxzQ0FBNEM7O0lBQzVDLHdDQUF3Qjs7SUFFeEIsMENBQXNIOztJQUV0SCxvQ0FBb0M7O0lBQ3BDLGlDQUFROztJQUNSLG9DQUFXOztJQUNYLHFDQUFvQjs7SUFDcEIsK0JBQWM7O0lBQ2Qsb0NBQTBCOztJQUMxQixtQ0FBaUQ7O0lBQ2pELDhCQUFrQzs7Ozs7SUFFaEMsNkNBQWdEOzs7OztJQUNoRCwrQkFBZ0M7Ozs7O0lBQ2hDLDJDQUE0Qzs7Ozs7SUFDNUMsZ0NBQXNCOzs7OztJQUN0QixxQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYXltZW50TGliQ29tcG9uZW50fSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge01hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgSVJlZnVuZExpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0JztcbmltcG9ydCB7IE9yZGVyc2xpc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXJzbGlzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFRISVNfRVhQUiB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSxSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NwYXktdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQge1xuICBASW5wdXQoJ0RBVEFTT1VSQ0UnKSBEQVRBU09VUkNFOiBhbnlbXTtcbiAgQElucHV0KCdTVEFUVVMnKSBTVEFUVVM6IHN0cmluZztcbiAgQElucHV0KCdlcnJvck1lc3NhZ2UnKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgaXNBcHByb3ZhbEZsb3c6IGJvb2xlYW47XG4gIC8vIGRpc3BsYXllZENvbHVtbnMgPSBbJ2NjZENhc2VOdW1iZXInLCAncmVmdW5kUmVmZXJlbmNlJywgJ3JlYXNvbicsICdjcmVhdGVCeScsICd1cGRhdGVEYXRlJywgJ0FjdGlvbiddO1xuICBkaXNwbGF5ZWRDb2x1bW5zID0gWydjY2RfY2FzZV9udW1iZXInLCAncmVmdW5kX3JlZmVyZW5jZScsICd1c2VyX2Z1bGxfbmFtZScsJ2RhdGVfY3JlYXRlZCcsICdkYXRlX3VwZGF0ZWQnLCAnQWN0aW9uJ107XG4gIFxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8YW55PjtcbiAgdXNlckxzdDtcbiAgc2VydmljZUxzdDtcbiAgYWN0dWFsY291bnQ6IG51bWJlcjtcbiAgY291bnQ6IG51bWJlcjtcbiAgcmVmdW5kTGlzdDogSVJlZnVuZExpc3RbXTtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQ6IE1hdFNvcnQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGF5bWVudExpYkNvbXBvbmVudDogUGF5bWVudExpYkNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIE9yZGVyc2xpc3RTZXJ2aWNlOiBPcmRlcnNsaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWN0aXZlUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZTtcbiAgICBpZih0aGlzLlNUQVRVUy50b0xvd2VyQ2FzZSgpID09PSAnc2VudCBmb3IgYXBwcm92YWwnKSB7XG4gICAgICB0aGlzLmlzQXBwcm92YWxGbG93ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgIHRoaXMuaXNBcHByb3ZhbEZsb3cgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5yZWZ1bmRMaXN0ID0gdGhpcy5EQVRBU09VUkNFO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UodGhpcy5yZWZ1bmRMaXN0KTtcbiAgICB0aGlzLmFjdHVhbGNvdW50ID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgIGlmKCB0aGlzLnJlZnVuZExpc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICB0aGlzLnVzZXJMc3QgPSB0aGlzLnJlZnVuZExpc3QucmVkdWNlKChyLHt1c2VyX2Z1bGxfbmFtZX0pID0+IChyW3VzZXJfZnVsbF9uYW1lXT0nJywgcikgLCB7fSk7XG4gICAgIHRoaXMudXNlckxzdCA9IE9iamVjdC5rZXlzKHRoaXMudXNlckxzdCk7XG4gICAgIHRoaXMudXNlckxzdC5zb3J0KChhLCBiKSA9PiBhLnRvU3RyaW5nKCkubG9jYWxlQ29tcGFyZShiKSk7XG4gICAgIHRoaXMuc2VydmljZUxzdCA9IHRoaXMucmVmdW5kTGlzdC5yZWR1Y2UoKHIse3NlcnZpY2VfdHlwZX0pID0+IChyW3NlcnZpY2VfdHlwZV09JycsIHIpICwge30pO1xuICAgICB0aGlzLnNlcnZpY2VMc3QgPSBPYmplY3Qua2V5cyh0aGlzLnNlcnZpY2VMc3QpO1xuICAgICB0aGlzLnNlcnZpY2VMc3Quc29ydCgoYSwgYikgPT4gYS50b1N0cmluZygpLmxvY2FsZUNvbXBhcmUoYikpO1xuICAgIH1cbiAgICBcbiAgfVxuICAgXG4gIC8qKlxuICAgKiBTZXQgdGhlIHBhZ2luYXRvciBhbmQgc29ydCBhZnRlciB0aGUgdmlldyBpbml0IHNpbmNlIHRoaXMgY29tcG9uZW50IHdpbGxcbiAgICogYmUgYWJsZSB0byBxdWVyeSBpdHMgdmlldyBmb3IgdGhlIGluaXRpYWxpemVkIHBhZ2luYXRvciBhbmQgc29ydC5cbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcblxuICAgIC8vY29uc3Qgc29ydFN0YXRlOiBTb3J0ID0ge2FjdGl2ZTogJ2RhdGVfdXBkYXRlZCcsIGRpcmVjdGlvbjogJ2Rlc2MnfTtcbiAgICAvLyB0aGlzLnNvcnQuYWN0aXZlID0gc29ydFN0YXRlLmFjdGl2ZTtcbiAgICAvLyB0aGlzLnNvcnQuZGlyZWN0aW9uID0gc29ydFN0YXRlLmRpcmVjdGlvbjtcbiAgICAvLyB0aGlzLnNvcnQuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIGFwcGx5RmlsdGVyKGZpbHRlclZhbHVlOiBzdHJpbmcpIHtcbiAgICBmaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlLnRyaW0oKTsgLy8gUmVtb3ZlIHdoaXRlc3BhY2VcbiAgICBmaWx0ZXJWYWx1ZSA9IGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCk7IC8vIERhdGFzb3VyY2UgZGVmYXVsdHMgdG8gbG93ZXJjYXNlIG1hdGNoZXNcbiAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWU7XG4gIH1cbiAgc2VsZWN0Y2hhbmdlKGFyZ3Mpe1xuICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBhcmdzLnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmFjdHVhbGNvdW50ID0gdGhpcy5kYXRhU291cmNlLmRhdGEubGVuZ3RoO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgfVxuICBnb1RvUmVmdW5kUHJvY2Vzc0NvbXBvbmVudChyZWZ1bmRSZWZlcmVuY2U6IHN0cmluZywgcmVmdW5kRGF0YTogSVJlZnVuZExpc3QgKSB7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnJlZnVuZGxpc3Rzb3VyY2UgPSByZWZ1bmREYXRhO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5yZWZ1bmRSZWZlcmVuY2UgPSByZWZ1bmRSZWZlcmVuY2U7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LnZpZXdOYW1lID0gJ3Byb2Nlc3MtcmVmdW5kJztcbiAgfVxuICBnb1RvUmVmdW5kVmlld0NvbXBvbmVudChyZWZ1bmRSZWZlcmVuY2U6IHN0cmluZywgcmVmdW5kRGF0YTogSVJlZnVuZExpc3QgKSB7XG4gICAgdGhpcy5PcmRlcnNsaXN0U2VydmljZS5zZXRSZWZ1bmRWaWV3KHJlZnVuZERhdGEpO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC52aWV3TmFtZT0ncmVmdW5kc3RhdHVzbGlzdCc7XG4gICAgdGhpcy5wYXltZW50TGliQ29tcG9uZW50LkNDRF9DQVNFX05VTUJFUiA9IHJlZnVuZERhdGEuY2NkX2Nhc2VfbnVtYmVyO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc1JlZnVuZFN0YXR1c1ZpZXcgPSB0cnVlO1xuICAgIHRoaXMucGF5bWVudExpYkNvbXBvbmVudC5pc0NhbGxGcm9tUmVmdW5kTGlzdCA9IHRydWU7XG4gIH1cbiAgZ29Ub0Nhc2VSZXZpZXcoY2NkQ2FzZU51bWJlcjogc3RyaW5nLCByZWZ1bmREYXRhOiBJUmVmdW5kTGlzdCApIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9jYXNlLWRldGFpbHMvJHtjY2RDYXNlTnVtYmVyfWBdLCB7cmVsYXRpdmVUbzogdGhpcy5hY3RpdmVSb3V0ZX0pO1xuICB9XG59Il19