@hmcts/ccpay-web-component 5.0.2-beta4 → 5.0.2-beta40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/bundles/hmcts-ccpay-web-component.umd.js +1711 -586
  2. package/bundles/hmcts-ccpay-web-component.umd.js.map +1 -1
  3. package/bundles/hmcts-ccpay-web-component.umd.min.js +1 -1
  4. package/bundles/hmcts-ccpay-web-component.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-ccpay-web-component.js +33 -31
  6. package/esm2015/lib/components/add-remission/add-remission.component.js +621 -104
  7. package/esm2015/lib/components/case-transactions/case-transactions.component.js +10 -5
  8. package/esm2015/lib/components/contact-details/contact-details.component.js +436 -0
  9. package/esm2015/lib/components/payment-view/payment-view.component.js +39 -87
  10. package/esm2015/lib/components/process-refund/process-refund.component.js +31 -3
  11. package/esm2015/lib/components/refund-list/refund-list.component.js +3 -3
  12. package/esm2015/lib/components/refund-status/refund-status.component.js +207 -31
  13. package/esm2015/lib/components/service-request/service-request.component.js +61 -136
  14. package/esm2015/lib/components/table/table.component.js +24 -9
  15. package/esm2015/lib/interfaces/IFee.js +9 -1
  16. package/esm2015/lib/interfaces/IPayment.js +5 -1
  17. package/esm2015/lib/interfaces/IPutNotificationRequest.js +25 -0
  18. package/esm2015/lib/interfaces/IRefundContactDetails.js +25 -0
  19. package/esm2015/lib/interfaces/IRefundFee.js +21 -0
  20. package/esm2015/lib/interfaces/IRefundList.js +7 -1
  21. package/esm2015/lib/interfaces/IRefundsNotifications.js +21 -0
  22. package/esm2015/lib/interfaces/IRemission.js +5 -1
  23. package/esm2015/lib/interfaces/IResubmitRefundRequest.js +10 -2
  24. package/esm2015/lib/interfaces/PostIssueRefundRetroRemission.js +6 -2
  25. package/esm2015/lib/interfaces/PostRefundRetroRemission.js +20 -4
  26. package/esm2015/lib/payment-lib.component.js +5 -1
  27. package/esm2015/lib/payment-lib.module.js +3 -1
  28. package/esm2015/lib/payment-lib.service.js +16 -1
  29. package/esm2015/lib/services/notification/notification.service.js +85 -0
  30. package/esm2015/lib/services/refunds/refunds.service.js +10 -1
  31. package/esm5/hmcts-ccpay-web-component.js +33 -31
  32. package/esm5/lib/components/add-remission/add-remission.component.js +738 -109
  33. package/esm5/lib/components/case-transactions/case-transactions.component.js +10 -5
  34. package/esm5/lib/components/contact-details/contact-details.component.js +461 -0
  35. package/esm5/lib/components/payment-view/payment-view.component.js +43 -108
  36. package/esm5/lib/components/process-refund/process-refund.component.js +30 -3
  37. package/esm5/lib/components/refund-list/refund-list.component.js +3 -3
  38. package/esm5/lib/components/refund-status/refund-status.component.js +243 -29
  39. package/esm5/lib/components/service-request/service-request.component.js +73 -167
  40. package/esm5/lib/components/table/table.component.js +27 -9
  41. package/esm5/lib/interfaces/IFee.js +9 -1
  42. package/esm5/lib/interfaces/IPayment.js +5 -1
  43. package/esm5/lib/interfaces/IPutNotificationRequest.js +23 -0
  44. package/esm5/lib/interfaces/IRefundContactDetails.js +25 -0
  45. package/esm5/lib/interfaces/IRefundFee.js +21 -0
  46. package/esm5/lib/interfaces/IRefundList.js +7 -1
  47. package/esm5/lib/interfaces/IRefundsNotifications.js +21 -0
  48. package/esm5/lib/interfaces/IRemission.js +5 -1
  49. package/esm5/lib/interfaces/IResubmitRefundRequest.js +8 -2
  50. package/esm5/lib/interfaces/PostIssueRefundRetroRemission.js +5 -2
  51. package/esm5/lib/interfaces/PostRefundRetroRemission.js +15 -3
  52. package/esm5/lib/payment-lib.component.js +5 -1
  53. package/esm5/lib/payment-lib.module.js +3 -1
  54. package/esm5/lib/payment-lib.service.js +23 -1
  55. package/esm5/lib/services/notification/notification.service.js +89 -0
  56. package/esm5/lib/services/refunds/refunds.service.js +16 -1
  57. package/fesm2015/hmcts-ccpay-web-component.js +1471 -464
  58. package/fesm2015/hmcts-ccpay-web-component.js.map +1 -1
  59. package/fesm5/hmcts-ccpay-web-component.js +1685 -531
  60. package/fesm5/hmcts-ccpay-web-component.js.map +1 -1
  61. package/hmcts-ccpay-web-component.d.ts +32 -30
  62. package/hmcts-ccpay-web-component.metadata.json +1 -1
  63. package/lib/components/add-remission/add-remission.component.d.ts +41 -2
  64. package/lib/components/contact-details/contact-details.component.d.ts +49 -0
  65. package/lib/components/payment-view/payment-view.component.d.ts +4 -6
  66. package/lib/components/process-refund/process-refund.component.d.ts +5 -1
  67. package/lib/components/refund-status/refund-status.component.d.ts +33 -6
  68. package/lib/components/service-request/service-request.component.d.ts +3 -6
  69. package/lib/components/table/table.component.d.ts +1 -0
  70. package/lib/interfaces/IFee.d.ts +4 -0
  71. package/lib/interfaces/IPayment.d.ts +2 -0
  72. package/lib/interfaces/IPutNotificationRequest.d.ts +6 -0
  73. package/lib/interfaces/IRefundContactDetails.d.ts +9 -0
  74. package/lib/interfaces/IRefundFee.d.ts +7 -0
  75. package/lib/interfaces/IRefundList.d.ts +4 -0
  76. package/lib/interfaces/IRefundsNotifications.d.ts +16 -0
  77. package/lib/interfaces/IRemission.d.ts +2 -0
  78. package/lib/interfaces/IResubmitRefundRequest.d.ts +5 -1
  79. package/lib/interfaces/PostIssueRefundRetroRemission.d.ts +3 -1
  80. package/lib/interfaces/PostRefundRetroRemission.d.ts +6 -1
  81. package/lib/payment-lib.component.d.ts +1 -0
  82. package/lib/payment-lib.service.d.ts +3 -0
  83. package/lib/services/notification/notification.service.d.ts +15 -0
  84. package/lib/services/refunds/refunds.service.d.ts +2 -0
  85. package/package.json +1 -1
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { Injectable } from '@angular/core';
6
+ import { HttpClient } from '@angular/common/http';
7
+ import { ErrorHandlerService } from '../shared/error-handler.service';
8
+ import { WebComponentHttpClient } from '../shared/httpclient/webcomponent.http.client';
9
+ import { PaymentLibService } from '../../payment-lib.service';
10
+ import { catchError } from 'rxjs/operators';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common/http";
13
+ import * as i2 from "../shared/httpclient/webcomponent.http.client";
14
+ import * as i3 from "../shared/error-handler.service";
15
+ import * as i4 from "../../payment-lib.service";
16
+ var NotificationService = /** @class */ (function () {
17
+ function NotificationService(http, https, errorHandlerService, paymentLibService) {
18
+ this.http = http;
19
+ this.https = https;
20
+ this.errorHandlerService = errorHandlerService;
21
+ this.paymentLibService = paymentLibService;
22
+ }
23
+ /**
24
+ * @param {?} reference
25
+ * @return {?}
26
+ */
27
+ NotificationService.prototype.getRefundNotification = /**
28
+ * @param {?} reference
29
+ * @return {?}
30
+ */
31
+ function (reference) {
32
+ return this.http.get(this.paymentLibService.NOTIFICATION_API_ROOT + "/notifications/" + reference, {
33
+ withCredentials: true
34
+ })
35
+ .pipe(catchError(this.errorHandlerService.handleError));
36
+ };
37
+ /**
38
+ * @param {?} postcode
39
+ * @return {?}
40
+ */
41
+ NotificationService.prototype.getAddressByPostcode = /**
42
+ * @param {?} postcode
43
+ * @return {?}
44
+ */
45
+ function (postcode) {
46
+ return this.http.get(this.paymentLibService.NOTIFICATION_API_ROOT + "/search/places/v1/postcode?postcode=" + postcode, {
47
+ withCredentials: true
48
+ })
49
+ .pipe(catchError(this.errorHandlerService.handleError));
50
+ };
51
+ NotificationService.decorators = [
52
+ { type: Injectable, args: [{
53
+ providedIn: 'root'
54
+ },] }
55
+ ];
56
+ /** @nocollapse */
57
+ NotificationService.ctorParameters = function () { return [
58
+ { type: HttpClient },
59
+ { type: WebComponentHttpClient },
60
+ { type: ErrorHandlerService },
61
+ { type: PaymentLibService }
62
+ ]; };
63
+ /** @nocollapse */ NotificationService.ngInjectableDef = i0.defineInjectable({ factory: function NotificationService_Factory() { return new NotificationService(i0.inject(i1.HttpClient), i0.inject(i2.WebComponentHttpClient), i0.inject(i3.ErrorHandlerService), i0.inject(i4.PaymentLibService)); }, token: NotificationService, providedIn: "root" });
64
+ return NotificationService;
65
+ }());
66
+ export { NotificationService };
67
+ if (false) {
68
+ /**
69
+ * @type {?}
70
+ * @private
71
+ */
72
+ NotificationService.prototype.http;
73
+ /**
74
+ * @type {?}
75
+ * @private
76
+ */
77
+ NotificationService.prototype.https;
78
+ /**
79
+ * @type {?}
80
+ * @private
81
+ */
82
+ NotificationService.prototype.errorHandlerService;
83
+ /**
84
+ * @type {?}
85
+ * @private
86
+ */
87
+ NotificationService.prototype.paymentLibService;
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRzFDO0lBS0UsNkJBQW9CLElBQWdCLEVBQzFCLEtBQTZCLEVBQ25CLG1CQUF3QyxFQUN4QyxpQkFBb0M7UUFIcEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUNuQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDeEMsQ0FBQzs7Ozs7SUFFakIsbURBQXFCOzs7O0lBQXJCLFVBQXNCLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTJCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsdUJBQWtCLFNBQVcsRUFBRTtZQUN4SCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0MsSUFBSSxDQUNILFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQ2pELENBQUM7SUFDTixDQUFDOzs7OztJQUVELGtEQUFvQjs7OztJQUFwQixVQUFxQixRQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsNENBQXVDLFFBQVUsRUFBRTtZQUMxSCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0MsSUFBSSxDQUNILFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQ2pELENBQUM7SUFDTixDQUFDOztnQkEzQkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFWTyxVQUFVO2dCQUVULHNCQUFzQjtnQkFEdkIsbUJBQW1CO2dCQUVuQixpQkFBaUI7Ozs4QkFKekI7Q0FxQ0MsQUE1QkQsSUE0QkM7U0F6QlksbUJBQW1COzs7Ozs7SUFFbEIsbUNBQXdCOzs7OztJQUNsQyxvQ0FBcUM7Ozs7O0lBQzNCLGtEQUFnRDs7Ozs7SUFDaEQsZ0RBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0Vycm9ySGFuZGxlclNlcnZpY2V9IGZyb20gJy4uL3NoYXJlZC9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQ29tcG9uZW50SHR0cENsaWVudCB9IGZyb20gJy4uL3NoYXJlZC9odHRwY2xpZW50L3dlYmNvbXBvbmVudC5odHRwLmNsaWVudCc7XG5pbXBvcnQge1BheW1lbnRMaWJTZXJ2aWNlfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVJlZnVuZHNOb3RpZmljYXRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kc05vdGlmaWNhdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBodHRwczogV2ViQ29tcG9uZW50SHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBheW1lbnRMaWJTZXJ2aWNlOiBQYXltZW50TGliU2VydmljZVxuICAgICAgICAgICAgICApIHsgfVxuXG4gIGdldFJlZnVuZE5vdGlmaWNhdGlvbihyZWZlcmVuY2U6IHN0cmluZyk6IE9ic2VydmFibGU8SVJlZnVuZHNOb3RpZmljYXRpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVJlZnVuZHNOb3RpZmljYXRpb25zPihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLk5PVElGSUNBVElPTl9BUElfUk9PVH0vbm90aWZpY2F0aW9ucy8ke3JlZmVyZW5jZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldEFkZHJlc3NCeVBvc3Rjb2RlKHBvc3Rjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5OT1RJRklDQVRJT05fQVBJX1JPT1R9L3NlYXJjaC9wbGFjZXMvdjEvcG9zdGNvZGU/cG9zdGNvZGU9JHtwb3N0Y29kZX1gLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxufVxuIl19
@@ -145,6 +145,21 @@ var RefundsService = /** @class */ (function () {
145
145
  function (body) {
146
146
  return this.https.post(this.paymentLibService.REFUNDS_API_ROOT + "/refund", body).pipe(catchError(this.errorHandlerService.handleError));
147
147
  };
148
+ /**
149
+ * @param {?} body
150
+ * @param {?} refundRef
151
+ * @param {?} notificationType
152
+ * @return {?}
153
+ */
154
+ RefundsService.prototype.putResendOrEdit = /**
155
+ * @param {?} body
156
+ * @param {?} refundRef
157
+ * @param {?} notificationType
158
+ * @return {?}
159
+ */
160
+ function (body, refundRef, notificationType) {
161
+ return this.https.put(this.paymentLibService.REFUNDS_API_ROOT + "/resend/notification/" + refundRef + "?notificationType=" + notificationType, body).pipe(catchError(this.errorHandlerService.handleError));
162
+ };
148
163
  /**
149
164
  * @param {?} body
150
165
  * @param {?} refund_reference
@@ -253,4 +268,4 @@ if (false) {
253
268
  */
254
269
  RefundsService.prototype.meta;
255
270
  }
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvcmVmdW5kcy9yZWZ1bmRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBTzFDO0lBS0Usd0JBQW9CLElBQWdCLEVBQzFCLEtBQTZCLEVBQ25CLG1CQUF3QyxFQUN4QyxpQkFBb0MsRUFDcEMsSUFBVTtRQUpWLFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQU07SUFDZCxDQUFDOzs7O0lBRWpCLHlDQUFnQjs7O0lBQWhCO1FBQ0ksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBc0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixhQUFVLEVBQUU7WUFDN0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQzthQUNHLElBQUksQ0FDSCxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdB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QUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSTs7OztnQkFBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQTVCLENBQTRCLEVBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUc7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUk7Ozs7Z0JBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUE3QixDQUE2QixFQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdHO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztnQkF2SEEsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnQkFmTyxVQUFVO2dCQUdULHNCQUFzQjtnQkFEdkIsbUJBQW1CO2dCQUVuQixpQkFBaUI7Z0JBSGhCLElBQUk7Ozt5QkFGYjtDQXNJQyxBQXhIRCxJQXdIQztTQXJIWSxjQUFjOzs7Ozs7SUFFYiw4QkFBd0I7Ozs7O0lBQ2xDLCtCQUFxQzs7Ozs7SUFDM0IsNkNBQWdEOzs7OztJQUNoRCwyQ0FBNEM7Ozs7O0lBQzVDLDhCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7RXJyb3JIYW5kbGVyU2VydmljZX0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBXZWJDb21wb25lbnRIdHRwQ2xpZW50IH0gZnJvbSAnLi4vc2hhcmVkL2h0dHBjbGllbnQvd2ViY29tcG9uZW50Lmh0dHAuY2xpZW50JztcbmltcG9ydCB7UGF5bWVudExpYlNlcnZpY2V9IGZyb20gJy4uLy4uL3BheW1lbnQtbGliLnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHtjYXRjaEVycm9yfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJUmVmdW5kUmVhc29ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVJlZnVuZFJlYXNvbnMnO1xuaW1wb3J0IHsgSVBhdGNoUmVmdW5kQWN0aW9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUGF0Y2hSZWZ1bmRBY3Rpb24nO1xuaW1wb3J0IHsgSVJlZnVuZExpc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRMaXN0JztcbmltcG9ydCB7IElzc3VlUmVmdW5kUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSXNzdWVSZWZ1bmRSZXF1ZXN0JztcbmltcG9ydCB7IElSZXN1Ym1pdFJlZnVuZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZXN1Ym1pdFJlZnVuZFJlcXVlc3QnO1xuaW1wb3J0IHsgSVJlZnVuZFN0YXR1c0hpc3RvcnkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRTdGF0dXNIaXN0b3J5JztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlZnVuZHNTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBodHRwczogV2ViQ29tcG9uZW50SHR0cENsaWVudCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXJTZXJ2aWNlOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHBheW1lbnRMaWJTZXJ2aWNlOiBQYXltZW50TGliU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBtZXRhOiBNZXRhXG4gICAgICAgICAgICAgICkgeyB9XG5cbiAgZ2V0UmVmdW5kUmVhc29ucygpOiBPYnNlcnZhYmxlPElSZWZ1bmRSZWFzb25zW10+IHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PElSZWZ1bmRSZWFzb25zW10+KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vcmVhc29uc2AsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFJlZnVuZFJlamVjdFJlYXNvbnMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vcmVqZWN0aW9uLXJlYXNvbnNgLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICB9KVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIGdldFJlZnVuZEFjdGlvbnMocmVmdW5kUmVmZXJlbmNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5SRUZVTkRTX0FQSV9ST09UfS8ke3JlZnVuZFJlZmVyZW5jZX0vYWN0aW9uc2AsIHtcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxucGF0Y2hSZWZ1bmRBY3Rpb25zKGJvZHk6SVBhdGNoUmVmdW5kQWN0aW9uLCByZWZ1bmRSZWZlcmVuY2U6IHN0cmluZywgcmV2aWV3ZXJBY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gIC8vIGNvbnN0IG9wdHMgPSB0aGlzLmFkZEhlYWRlcnMoe30pO1xuICByZXR1cm4gdGhpcy5odHRwcy5wYXRjaChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9LyR7cmVmdW5kUmVmZXJlbmNlfS9hY3Rpb24vJHtyZXZpZXdlckFjdGlvbn1gLCBib2R5KVxuICAucGlwZShcbiAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgKTtcbn1cblxuZ2V0UmVmdW5kTGlzdChyZWZ1bmRzdGF0dXM/OiBzdHJpbmcsIHNlbGZleGNsdXNpdmU/OmJvb2xlYW4pOiBPYnNlcnZhYmxlPElSZWZ1bmRMaXN0W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJUmVmdW5kTGlzdFtdPihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9P3N0YXR1cz0ke3JlZnVuZHN0YXR1c30mZXhjbHVkZUN1cnJlbnRVc2VyPSR7c2VsZmV4Y2x1c2l2ZX1gLCBcbiAgICB7XG4gICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG59KVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgKTtcbn1cblxuZ2V0UmVmdW5kU3RhdHVzSGlzdG9yeShyZWZlcmVuY2U/OiBzdHJpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVJlZnVuZFN0YXR1c0hpc3Rvcnk+KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vJHtyZWZlcmVuY2V9L3N0YXR1cy1oaXN0b3J5YCwgXG4gIHtcbiAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG59KVxuICAucGlwZShcbiAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgKTtcbn1cblxuZ2V0UmVmdW5kU3RhdHVzTGlzdChjY2RDYXNlTnVtYmVyOnN0cmluZyk6IE9ic2VydmFibGU8SVJlZnVuZExpc3RbXT4ge1xuICByZXR1cm4gdGhpcy5odHRwLmdldDxJUmVmdW5kTGlzdFtdPihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9P2NjZENhc2VOdW1iZXI9JHtjY2RDYXNlTnVtYmVyfWAsIHtcbiAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG59KVxuICAucGlwZShcbiAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgKTtcbn1cblxuZ2V0VXNlckRldGFpbHMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vZ2V0LXVzZXItZGV0YWlsc2AsIHtcbiAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgfSlcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG59XG4gXG5wb3N0SXNzdWVSZWZ1bmQoYm9keTogSXNzdWVSZWZ1bmRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgcmV0dXJuIHRoaXMuaHR0cHMucG9zdChgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9L3JlZnVuZGAsIGJvZHkpLnBpcGUoXG4gICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICk7XG59XG5cbnBhdGNoUmVzdWJtaXRSZWZ1bmQoYm9keTogSVJlc3VibWl0UmVmdW5kUmVxdWVzdCwgcmVmdW5kX3JlZmVyZW5jZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgLy8gY29uc3Qgb3B0cyA9IHRoaXMuYWRkSGVhZGVycyh7fSk7XG4gIHJldHVybiB0aGlzLmh0dHBzLnBhdGNoKGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vcmVzdWJtaXQvJHtyZWZ1bmRfcmVmZXJlbmNlfWAsIGJvZHkpLnBpcGUoXG4gICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICk7XG59XG5cbmFkZEhlYWRlcnMob3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgY3NyZlRva2VuID0gdGhpcy5tZXRhLmdldFRhZygnbmFtZT1jc3JmLXRva2VuJyk7XG4gIGNvbnN0IGhlYWRlcnMgPSB7fTtcbiAgaWYgKG9wdGlvbnMuaGVhZGVycykge1xuICAgIG9wdGlvbnMuaGVhZGVycy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaGVhZGVyc1tlbGVtZW50XSA9IG9wdGlvbnMuaGVhZGVycy5nZXQoZWxlbWVudCk7XG4gICAgfSk7XG4gIH1cbiAgaGVhZGVyc1snWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcbiAgaWYgKGNzcmZUb2tlbi5jb250ZW50ID09PSBudWxsKSB7XG4gICAgaWYoIGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbmQocm93ID0+IHJvdy5zdGFydHNXaXRoKCdYU1JGLVRPS0VOJykpICE9PSB1bmRlZmluZWQgKSB7XG4gICAgICBoZWFkZXJzWydDU1JGLVRva2VuJ10gPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKS5maW5kKHJvdyA9PiByb3cuc3RhcnRzV2l0aCgnWFNSRi1UT0tFTicpKS5zcGxpdCgnPScpWzFdOyAgICAgXG4gICAgfSBlbHNlIHtcbiAgICAgIGhlYWRlcnNbJ0NTUkYtVG9rZW4nXSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbmQocm93ID0+IHJvdy5zdGFydHNXaXRoKCcgWFNSRi1UT0tFTicpKS5zcGxpdCgnPScpWzFdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBoZWFkZXJzWydDU1JGLVRva2VuJ10gPSBjc3JmVG9rZW4uY29udGVudDtcbiAgfVxuICBvcHRpb25zLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycyk7XG4gIG9wdGlvbnMucmVzcG9uc2VUeXBlID0gJ3RleHQnO1xuICByZXR1cm4gb3B0aW9ucztcbn1cbn1cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmdW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL2NjcGF5LXdlYi1jb21wb25lbnQvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvcmVmdW5kcy9yZWZ1bmRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBUzFDO0lBS0Usd0JBQW9CLElBQWdCLEVBQzFCLEtBQTZCLEVBQ25CLG1CQUF3QyxFQUN4QyxpQkFBb0MsRUFDcEMsSUFBVTtRQUpWLFNBQUksR0FBSixJQUFJLENBQVk7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFNBQUksR0FBSixJQUFJLENBQU07SUFDZCxDQUFDOzs7O0lBRWpCLHlDQUFnQjs7O0lBQWhCO1FBQ0ksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBc0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixhQUFVLEVBQUU7WUFDN0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQzthQUNHLElBQUksQ0FDSCxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdB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Z0JBRHZCLG1CQUFtQjtnQkFFbkIsaUJBQWlCO2dCQUhoQixJQUFJOzs7eUJBRmI7Q0E4SUMsQUE5SEQsSUE4SEM7U0EzSFksY0FBYzs7Ozs7O0lBRWIsOEJBQXdCOzs7OztJQUNsQywrQkFBcUM7Ozs7O0lBQzNCLDZDQUFnRDs7Ozs7SUFDaEQsMkNBQTRDOzs7OztJQUM1Qyw4QkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNZXRhIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0Vycm9ySGFuZGxlclNlcnZpY2V9IGZyb20gJy4uL3NoYXJlZC9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2ViQ29tcG9uZW50SHR0cENsaWVudCB9IGZyb20gJy4uL3NoYXJlZC9odHRwY2xpZW50L3dlYmNvbXBvbmVudC5odHRwLmNsaWVudCc7XG5pbXBvcnQge1BheW1lbnRMaWJTZXJ2aWNlfSBmcm9tICcuLi8uLi9wYXltZW50LWxpYi5zZXJ2aWNlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7Y2F0Y2hFcnJvcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVJlZnVuZFJlYXNvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lSZWZ1bmRSZWFzb25zJztcbmltcG9ydCB7IElQYXRjaFJlZnVuZEFjdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVBhdGNoUmVmdW5kQWN0aW9uJztcbmltcG9ydCB7IElSZWZ1bmRMaXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kTGlzdCc7XG5pbXBvcnQgeyBJc3N1ZVJlZnVuZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lzc3VlUmVmdW5kUmVxdWVzdCc7XG5pbXBvcnQgeyBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0JztcbmltcG9ydCB7IElSZWZ1bmRTdGF0dXNIaXN0b3J5IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JUmVmdW5kU3RhdHVzSGlzdG9yeSc7XG5pbXBvcnQgeyBJUHV0Tm90aWZpY2F0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZWZ1bmRzU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaHR0cHM6IFdlYkNvbXBvbmVudEh0dHBDbGllbnQsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyU2VydmljZTogRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwYXltZW50TGliU2VydmljZTogUGF5bWVudExpYlNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbWV0YTogTWV0YVxuICAgICAgICAgICAgICApIHsgfVxuXG4gIGdldFJlZnVuZFJlYXNvbnMoKTogT2JzZXJ2YWJsZTxJUmVmdW5kUmVhc29uc1tdPiB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxJUmVmdW5kUmVhc29uc1tdPihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9L3JlYXNvbnNgLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICAgICk7XG4gIH1cblxuICBnZXRSZWZ1bmRSZWplY3RSZWFzb25zKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9L3JlamVjdGlvbi1yZWFzb25zYCwge1xuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgfSlcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG4gIH1cblxuICBnZXRSZWZ1bmRBY3Rpb25zKHJlZnVuZFJlZmVyZW5jZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vJHtyZWZ1bmRSZWZlcmVuY2V9L2FjdGlvbnNgLCB7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICAgICApO1xuICB9XG5cbnBhdGNoUmVmdW5kQWN0aW9ucyhib2R5OklQYXRjaFJlZnVuZEFjdGlvbiwgcmVmdW5kUmVmZXJlbmNlOiBzdHJpbmcsIHJldmlld2VyQWN0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAvLyBjb25zdCBvcHRzID0gdGhpcy5hZGRIZWFkZXJzKHt9KTtcbiAgcmV0dXJuIHRoaXMuaHR0cHMucGF0Y2goYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5SRUZVTkRTX0FQSV9ST09UfS8ke3JlZnVuZFJlZmVyZW5jZX0vYWN0aW9uLyR7cmV2aWV3ZXJBY3Rpb259YCwgYm9keSlcbiAgLnBpcGUoXG4gICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICk7XG59XG5cbmdldFJlZnVuZExpc3QocmVmdW5kc3RhdHVzPzogc3RyaW5nLCBzZWxmZXhjbHVzaXZlPzpib29sZWFuKTogT2JzZXJ2YWJsZTxJUmVmdW5kTGlzdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVJlZnVuZExpc3RbXT4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5SRUZVTkRTX0FQSV9ST09UfT9zdGF0dXM9JHtyZWZ1bmRzdGF0dXN9JmV4Y2x1ZGVDdXJyZW50VXNlcj0ke3NlbGZleGNsdXNpdmV9YCwgXG4gICAge1xuICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxufSlcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICAgICk7XG59XG5cbmdldFJlZnVuZFN0YXR1c0hpc3RvcnkocmVmZXJlbmNlPzogc3RyaW5nKSB7XG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0PElSZWZ1bmRTdGF0dXNIaXN0b3J5PihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9LyR7cmVmZXJlbmNlfS9zdGF0dXMtaGlzdG9yeWAsIFxuICB7XG4gIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxufSlcbiAgLnBpcGUoXG4gICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICk7XG59XG5cbmdldFJlZnVuZFN0YXR1c0xpc3QoY2NkQ2FzZU51bWJlcjpzdHJpbmcpOiBPYnNlcnZhYmxlPElSZWZ1bmRMaXN0W10+IHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SVJlZnVuZExpc3RbXT4oYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5SRUZVTkRTX0FQSV9ST09UfT9jY2RDYXNlTnVtYmVyPSR7Y2NkQ2FzZU51bWJlcn1gLCB7XG4gIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxufSlcbiAgLnBpcGUoXG4gICAgY2F0Y2hFcnJvcih0aGlzLmVycm9ySGFuZGxlclNlcnZpY2UuaGFuZGxlRXJyb3IpXG4gICk7XG59XG5cbmdldFVzZXJEZXRhaWxzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnBheW1lbnRMaWJTZXJ2aWNlLlJFRlVORFNfQVBJX1JPT1R9L2dldC11c2VyLWRldGFpbHNgLCB7XG4gICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gIH0pXG4gICAgLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgICApO1xufVxuIFxucG9zdElzc3VlUmVmdW5kKGJvZHk6IElzc3VlUmVmdW5kUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gIHJldHVybiB0aGlzLmh0dHBzLnBvc3QoYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5SRUZVTkRTX0FQSV9ST09UfS9yZWZ1bmRgLCBib2R5KS5waXBlKFxuICAgIGNhdGNoRXJyb3IodGhpcy5lcnJvckhhbmRsZXJTZXJ2aWNlLmhhbmRsZUVycm9yKVxuICApO1xufVxuXG5wdXRSZXNlbmRPckVkaXQoYm9keTogSVB1dE5vdGlmaWNhdGlvblJlcXVlc3QsIHJlZnVuZFJlZjpzdHJpbmcsIG5vdGlmaWNhdGlvblR5cGU6c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgcmV0dXJuIHRoaXMuaHR0cHMucHV0KGAke3RoaXMucGF5bWVudExpYlNlcnZpY2UuUkVGVU5EU19BUElfUk9PVH0vcmVzZW5kL25vdGlmaWNhdGlvbi8ke3JlZnVuZFJlZn0/bm90aWZpY2F0aW9uVHlwZT0ke25vdGlmaWNhdGlvblR5cGV9YCwgYm9keSkucGlwZShcbiAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgKTtcbn1cblxucGF0Y2hSZXN1Ym1pdFJlZnVuZChib2R5OiBJUmVzdWJtaXRSZWZ1bmRSZXF1ZXN0LCByZWZ1bmRfcmVmZXJlbmNlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAvLyBjb25zdCBvcHRzID0gdGhpcy5hZGRIZWFkZXJzKHt9KTtcbiAgcmV0dXJuIHRoaXMuaHR0cHMucGF0Y2goYCR7dGhpcy5wYXltZW50TGliU2VydmljZS5SRUZVTkRTX0FQSV9ST09UfS9yZXN1Ym1pdC8ke3JlZnVuZF9yZWZlcmVuY2V9YCwgYm9keSkucGlwZShcbiAgICBjYXRjaEVycm9yKHRoaXMuZXJyb3JIYW5kbGVyU2VydmljZS5oYW5kbGVFcnJvcilcbiAgKTtcbn1cblxuYWRkSGVhZGVycyhvcHRpb25zOiBhbnkpOiBhbnkge1xuICBjb25zdCBjc3JmVG9rZW4gPSB0aGlzLm1ldGEuZ2V0VGFnKCduYW1lPWNzcmYtdG9rZW4nKTtcbiAgY29uc3QgaGVhZGVycyA9IHt9O1xuICBpZiAob3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgb3B0aW9ucy5oZWFkZXJzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBoZWFkZXJzW2VsZW1lbnRdID0gb3B0aW9ucy5oZWFkZXJzLmdldChlbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuICBoZWFkZXJzWydYLVJlcXVlc3RlZC1XaXRoJ10gPSAnWE1MSHR0cFJlcXVlc3QnO1xuICBpZiAoY3NyZlRva2VuLmNvbnRlbnQgPT09IG51bGwpIHtcbiAgICBpZiggZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmluZChyb3cgPT4gcm93LnN0YXJ0c1dpdGgoJ1hTUkYtVE9LRU4nKSkgIT09IHVuZGVmaW5lZCApIHtcbiAgICAgIGhlYWRlcnNbJ0NTUkYtVG9rZW4nXSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZpbmQocm93ID0+IHJvdy5zdGFydHNXaXRoKCdYU1JGLVRPS0VOJykpLnNwbGl0KCc9JylbMV07ICAgICBcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyc1snQ1NSRi1Ub2tlbiddID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZmluZChyb3cgPT4gcm93LnN0YXJ0c1dpdGgoJyBYU1JGLVRPS0VOJykpLnNwbGl0KCc9JylbMV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWRlcnNbJ0NTUkYtVG9rZW4nXSA9IGNzcmZUb2tlbi5jb250ZW50O1xuICB9XG4gIG9wdGlvbnMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyhoZWFkZXJzKTtcbiAgb3B0aW9ucy5yZXNwb25zZVR5cGUgPSAndGV4dCc7XG4gIHJldHVybiBvcHRpb25zO1xufVxufVxuIl19