@snabcentr/client-ui 0.23.0 → 0.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. package/auth/index.d.ts +2 -1
  2. package/auth/interfaces/{ApiErrorResponse.d.ts → api-error-response.d.ts} +1 -3
  3. package/auth/interfaces/index.d.ts +3 -0
  4. package/auth/interfaces/sc-bank-account-form-group.d.ts +11 -0
  5. package/auth/interfaces/sc-contact-form-group.d.ts +10 -0
  6. package/auth/sc-auth.module.d.ts +13 -8
  7. package/auth/sign-up-form/sc-sign-up-form.component.d.ts +141 -0
  8. package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +3 -3
  9. package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +2 -2
  10. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +22 -15
  11. package/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.d.ts +4 -4
  12. package/directives/index.d.ts +2 -0
  13. package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +20 -0
  14. package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
  15. package/esm2020/auth/index.mjs +3 -2
  16. package/esm2020/auth/interfaces/api-error-response.mjs +2 -0
  17. package/esm2020/auth/interfaces/index.mjs +4 -0
  18. package/esm2020/auth/interfaces/sc-bank-account-form-group.mjs +2 -0
  19. package/esm2020/auth/interfaces/sc-contact-form-group.mjs +2 -0
  20. package/esm2020/auth/sc-auth.module.mjs +51 -13
  21. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +13 -7
  22. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +13 -7
  23. package/esm2020/auth/sign-up-form/sc-sign-up-form.component.mjs +264 -0
  24. package/esm2020/catalog/price-card/sc-price-card.component.mjs +1 -1
  25. package/esm2020/catalog/price-history/sc-price-history.component.mjs +1 -1
  26. package/esm2020/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +20 -12
  27. package/esm2020/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +21 -13
  28. package/esm2020/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +19 -17
  29. package/esm2020/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +29 -20
  30. package/esm2020/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +1 -1
  31. package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.mjs +2 -2
  32. package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.module.mjs +2 -2
  33. package/esm2020/directives/index.mjs +3 -1
  34. package/esm2020/directives/next-input-focus/sc-next-input-focus.directive.mjs +40 -0
  35. package/esm2020/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
  36. package/esm2020/files/directives/tree-top.directive.mjs +10 -10
  37. package/esm2020/form-fields/suggestion-field/sc-suggestion-field.component.mjs +1 -1
  38. package/esm2020/user/index.mjs +2 -1
  39. package/esm2020/user/sc-user.module.mjs +19 -12
  40. package/esm2020/user/user-managers/sc-user-managers.component.mjs +38 -0
  41. package/esm2020/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +18 -12
  42. package/esm2020/validators/index.mjs +2 -2
  43. package/esm2020/validators/sc-password-confirm-matching-validator.mjs +17 -0
  44. package/esm2020/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +39 -27
  45. package/fesm2015/snabcentr-client-ui.mjs +2820 -2401
  46. package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
  47. package/fesm2020/snabcentr-client-ui.mjs +2819 -2402
  48. package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
  49. package/package.json +1 -1
  50. package/styles/tailwind/tailwind.scss +17 -0
  51. package/user/index.d.ts +1 -0
  52. package/user/sc-user.module.d.ts +9 -8
  53. package/user/user-managers/sc-user-managers.component.d.ts +26 -0
  54. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +2 -2
  55. package/validators/index.d.ts +1 -1
  56. package/validators/{scPasswordConfirmMatchingValidator.d.ts → sc-password-confirm-matching-validator.d.ts} +1 -1
  57. package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +17 -17
  58. package/esm2020/auth/interfaces/ApiErrorResponse.mjs +0 -2
  59. package/esm2020/validators/scPasswordConfirmMatchingValidator.mjs +0 -17
@@ -1,11 +1,13 @@
1
1
  import { __decorate } from "tslib";
2
+ /* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
3
+ import { HttpErrorResponse } from '@angular/common/http';
2
4
  import { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';
3
- import { FormGroup, FormControl, Validators } from '@angular/forms';
4
- import { Subject, filter, map, switchMap, catchError, of, startWith, share, tap } from 'rxjs';
5
+ import { FormControl, FormGroup, Validators } from '@angular/forms';
6
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
5
7
  import { tuiIsFalsy } from '@taiga-ui/cdk';
6
8
  import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus';
9
+ import { catchError, filter, map, of, share, startWith, Subject, switchMap, tap } from 'rxjs';
7
10
  import { SC_USER_INFO, SC_USER_PROVIDERS } from '../../providers/scUserProviders';
8
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
9
11
  import * as i0 from "@angular/core";
10
12
  import * as i1 from "@snabcentr/client-core";
11
13
  import * as i2 from "@angular/common";
@@ -40,7 +42,7 @@ let ScUserPhoneApproveDialogComponent = class ScUserPhoneApproveDialogComponent
40
42
  */
41
43
  this.form = new FormGroup({
42
44
  phone: new FormControl(null, [Validators.required, Validators.minLength(12)]),
43
- verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)])
45
+ verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)]),
44
46
  });
45
47
  /**
46
48
  * {@link Subject} события отправки формы.
@@ -50,12 +52,16 @@ let ScUserPhoneApproveDialogComponent = class ScUserPhoneApproveDialogComponent
50
52
  * {@link Observable} запроса подтверждения номера телефона.
51
53
  */
52
54
  this.request$ = this.onSubmit.pipe(filter(() => this.form.valid), map(() => this.form.value), switchMap((value) => this.verificationService.approvePhone(value).pipe(switchMap(() => this.userService.updateUserChange$()), tap((user) => this.context?.completeWith(user.contacts.phone)), catchError((error) => {
53
- const errorResponse = error.error;
54
- for (const key in errorResponse.errors) {
55
- this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });
56
- }
57
- if (!errorResponse.errors && errorResponse.message) {
58
- this.form.setErrors({ serverResponse: [errorResponse.message] });
55
+ if (error instanceof HttpErrorResponse) {
56
+ const { errors, message } = error.error;
57
+ for (const key in errors) {
58
+ if (Object.hasOwn(errors, key)) {
59
+ this.form.get(key)?.setErrors({ serverResponse: errors[key] });
60
+ }
61
+ }
62
+ if (!errors && message) {
63
+ this.form.setErrors({ serverResponse: [message] });
64
+ }
59
65
  }
60
66
  return of({});
61
67
  }), startWith(null))), share());
@@ -65,7 +71,7 @@ let ScUserPhoneApproveDialogComponent = class ScUserPhoneApproveDialogComponent
65
71
  this.loading$ = this.request$.pipe(map(tuiIsFalsy));
66
72
  this.user$.pipe(untilDestroyed(this)).subscribe((user) => {
67
73
  this.form.patchValue({
68
- phone: user.contacts.phone.value
74
+ phone: user.contacts.phone.value,
69
75
  });
70
76
  });
71
77
  }
@@ -88,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
88
94
  type: Inject,
89
95
  args: [POLYMORPHEUS_CONTEXT]
90
96
  }] }]; } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXNlci1waG9uZS1hcHByb3ZlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci91c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nL3NjLXVzZXItcGhvbmUtYXBwcm92ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvdXNlci1waG9uZS1hcHByb3ZlLWRpYWxvZy9zYy11c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7OztBQUVyRTs7R0FFRztBQVFJLElBQU0saUNBQWlDLEdBQXZDLE1BQU0saUNBQWlDO0lBb0QxQzs7Ozs7OztPQU9HO0lBQ0gsWUFDcUIsbUJBQTBDLEVBQ3JCLEtBQXlCLEVBQzlDLFdBQTBC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WSwwQ0FHWixvQkFBb0I7a0hBakV2QixpQ0FBaUMsdURBSi9CLENBQUMsaUJBQWlCLENBQUMsMEJDbEJsQywybkNBaUJBO0FES2EsaUNBQWlDO0lBRDdDLFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztHQUMzQixpQ0FBaUMsQ0EwRTdDO1NBMUVZLGlDQUFpQzsyRkFBakMsaUNBQWlDO2tCQVA3QyxTQUFTOytCQUNJLDhCQUE4QixhQUU3QixDQUFDLGlCQUFpQixDQUFDLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OzBCQWlFMUMsTUFBTTsyQkFBQyxZQUFZOzswQkFFbkIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcGlFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vYXV0aC9pbnRlcmZhY2VzL0FwaUVycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgY2F0Y2hFcnJvciwgb2YsIHN0YXJ0V2l0aCwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2NBcHByb3ZlZERhdGEsIFNjSVBob25lT25EYXRhQXBwcm92ZSwgU2NVc2VyLCBTY1VzZXJTZXJ2aWNlLCBTY1ZlcmlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUlzRmFsc3kgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBTQ19VU0VSX0lORk8sIFNDX1VTRVJfUFJPVklERVJTIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NjVXNlclByb3ZpZGVycyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcblxuLyoqXG4gKiDQlNC40LDQu9C+0LPQvtCy0L7QtSDQvtC60L3QviDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy11c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtdXNlci1waG9uZS1hcHByb3ZlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbU0NfVVNFUl9QUk9WSURFUlNdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuQFVudGlsRGVzdHJveSh7IGNoZWNrUHJvcGVydGllczogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFNjVXNlclBob25lQXBwcm92ZURpYWxvZ0NvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0J3QsNC70LjRh9C40LUg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXZlQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0L3QvtC80LXRgNCwINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTIpXSksXG4gICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNildKVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25TdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQgPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvcm0udmFsaWQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlIGFzIFNjSVBob25lT25EYXRhQXBwcm92ZSksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnZlcmlmaWNhdGlvblNlcnZpY2UuYXBwcm92ZVBob25lKHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnVzZXJTZXJ2aWNlLnVwZGF0ZVVzZXJDaGFuZ2UkKCkpLFxuICAgICAgICAgICAgICAgIHRhcCgodXNlcikgPT4gdGhpcy5jb250ZXh0Py5jb21wbGV0ZVdpdGgodXNlci5jb250YWN0cy5waG9uZSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvclJlc3BvbnNlLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JSZXNwb25zZS5lcnJvcnNbYCR7a2V5fWBdIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJvclJlc3BvbnNlLmVycm9ycyAmJiBlcnJvclJlc3BvbnNlLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogW2Vycm9yUmVzcG9uc2UubWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9IGFzIFNjVXNlcik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNC/0YDQvtGB0LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0L3QvtC80LXRgNCwINGC0LXQu9C10YTQvtC90LAuLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1VzZXJQaG9uZUFwcHJvdmVEaWFsb2dDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZlcmlmaWNhdGlvblNlcnZpY2Ug0KHQtdGA0LLQuNGBINCy0LXRgNC40YTQuNC60LDRhtC40LguXG4gICAgICogQHBhcmFtIHVzZXIkINCf0L7RgtC+0Log0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqIEBwYXJhbSB1c2VyU2VydmljZSDQodC10YDQstC40YEg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqIEBwYXJhbSBjb250ZXh0INCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZTogU2NWZXJpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX1VTRVJfSU5GTykgcHVibGljIHJlYWRvbmx5IHVzZXIkOiBPYnNlcnZhYmxlPFNjVXNlcj4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclNlcnZpY2U6IFNjVXNlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoUE9MWU1PUlBIRVVTX0NPTlRFWFQpXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBjb250ZXh0PzogVHVpRGlhbG9nQ29udGV4dDxTY0FwcHJvdmVkRGF0YSwgU2NVc2VyUGhvbmVBcHByb3ZlRGlhbG9nQ29tcG9uZW50PlxuICAgICkge1xuICAgICAgICB0aGlzLnVzZXIkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgIHBob25lOiB1c2VyLmNvbnRhY3RzLnBob25lLnZhbHVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXIkIHwgYXN5bmMgYXMgdXNlclwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICp0dWlMZXQ9XCIhIShsb2FkaW5nJCB8IGFzeW5jKSBhcyBsb2FkaW5nQXBwcm92ZUNvZGVcIiAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCI+XG4gICAgICAgIDxzYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybVxuICAgICAgICAgICAgWyhoYXZlQ29kZSldPVwiaGF2ZUNvZGVcIlxuICAgICAgICAgICAgW3Nob3VsZEJlQ29uZmlybWVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtzaG93Q29kZUZpZWxkc109XCIhdXNlci5jb250YWN0cy5waG9uZS5pc0FwcHJvdmVkXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgPjwvc2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyLmNvbnRhY3RzLnBob25lLmlzQXBwcm92ZWQgfHwgaGF2ZUNvZGVcIiBjbGFzcz1cImZsZXggZ2FwLTQganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ1c2VyLmNvbnRhY3RzLnBob25lLmlzQXBwcm92ZWQgJiYgY29udGV4dFwiIHR1aUJ1dHRvbiAoY2xpY2spPVwiY29udGV4dC4kaW1wbGljaXQuY29tcGxldGUoKVwiIHR5cGU9XCJidXR0b25cIiBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCI+0JfQsNC60YDRi9GC0Yw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJoYXZlQ29kZVwiIHR1aUJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW3Nob3dMb2FkZXJdPVwibG9hZGluZ0FwcHJvdmVDb2RlXCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCBsb2FkaW5nQXBwcm92ZUNvZGVcIiBpY29uPVwic2NJY29uTG9nSW5cIj5cbiAgICAgICAgICAgICAgICDQn9C+0LTRgtCy0LXRgNC00LjRgtGMXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXNlci1waG9uZS1hcHByb3ZlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci91c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nL3NjLXVzZXItcGhvbmUtYXBwcm92ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvdXNlci1waG9uZS1hcHByb3ZlLWRpYWxvZy9zYy11c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwyRUFBMkU7QUFFM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFFbEY7O0dBRUc7QUFRSSxJQUFNLGlDQUFpQyxHQUF2QyxNQUFNLGlDQUFpQztJQXlEMUM7Ozs7Ozs7T0FPRztJQUNILFlBQ3FCLG1CQUEwQyxFQUNyQixLQUF5QixFQUM5QyxXQUEwQixFQUczQixPQUE2RTtRQUw1RSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBQ3JCLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQzlDLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBRzNCLFlBQU8sR0FBUCxPQUFPLENBQXNFO1FBdEVqRzs7V0FFRztRQUNJLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFakM7O1dBRUc7UUFDYSxTQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDakMsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RixnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekcsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFOUQ7O1dBRUc7UUFDYyxhQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUM3QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUE4QixDQUFDLEVBQ25ELFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUM3QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEVBQ3JELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUM5RCxVQUFVLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUMxQixJQUFJLEtBQUssWUFBWSxpQkFBaUIsRUFBRTtnQkFDcEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBeUIsQ0FBQztnQkFFNUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7b0JBQ3RCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUU7d0JBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNsRTtpQkFDSjtnQkFFRCxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3REO2FBQ0o7WUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLENBQ2xCLENBQ0osRUFDRCxLQUFLLEVBQUUsQ0FDVixDQUFDO1FBRUY7O1dBRUc7UUFDYSxhQUFRLEdBQXdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBa0JoRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUs7YUFDbkMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs4SEE5RVEsaUNBQWlDLHVEQW1FOUIsWUFBWSwwQ0FHWixvQkFBb0I7a0hBdEV2QixpQ0FBaUMsdURBSi9CLENBQUMsaUJBQWlCLENBQUMsMEJDckJsQywybkNBaUJBO0FEUWEsaUNBQWlDO0lBRDdDLFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztHQUMzQixpQ0FBaUMsQ0ErRTdDO1NBL0VZLGlDQUFpQzsyRkFBakMsaUNBQWlDO2tCQVA3QyxTQUFTOytCQUNJLDhCQUE4QixhQUU3QixDQUFDLGlCQUFpQixDQUFDLG1CQUNiLHVCQUF1QixDQUFDLE1BQU07OzBCQXNFMUMsTUFBTTsyQkFBQyxZQUFZOzswQkFFbkIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBTY0FwcHJvdmVkRGF0YSwgU2NJUGhvbmVPbkRhdGFBcHByb3ZlLCBTY1VzZXIsIFNjVXNlclNlcnZpY2UsIFNjVmVyaWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpSXNGYWxzeSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgU0NfVVNFUl9JTkZPLCBTQ19VU0VSX1BST1ZJREVSUyB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zY1VzZXJQcm92aWRlcnMnO1xuXG4vKipcbiAqINCU0LjQsNC70L7Qs9C+0LLQvtC1INC+0LrQvdC+INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXVzZXItcGhvbmUtYXBwcm92ZS1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy11c2VyLXBob25lLWFwcHJvdmUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtTQ19VU0VSX1BST1ZJREVSU10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuQFVudGlsRGVzdHJveSh7IGNoZWNrUHJvcGVydGllczogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFNjVXNlclBob25lQXBwcm92ZURpYWxvZ0NvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0J3QsNC70LjRh9C40LUg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXZlQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0L3QvtC80LXRgNCwINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTIpXSksXG4gICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNildKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5mb3JtLnZhbGlkKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS52YWx1ZSBhcyBTY0lQaG9uZU9uRGF0YUFwcHJvdmUpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25TZXJ2aWNlLmFwcHJvdmVQaG9uZSh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VyQ2hhbmdlJCgpKSxcbiAgICAgICAgICAgICAgICB0YXAoKHVzZXIpID0+IHRoaXMuY29udGV4dD8uY29tcGxldGVXaXRoKHVzZXIuY29udGFjdHMucGhvbmUpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGVycm9ycywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvcnNba2V5XSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3JzICYmIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSBhcyBTY1VzZXIpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQv9GA0L7RgdCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwLi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKHR1aUlzRmFsc3kpKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NVc2VyUGhvbmVBcHByb3ZlRGlhbG9nQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2ZXJpZmljYXRpb25TZXJ2aWNlINCh0LXRgNCy0LjRgSDQstC10YDQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqIEBwYXJhbSB1c2VyJCDQn9C+0YLQvtC6INC40L3RhNC+0YDQvNCw0YbQuNC4INC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKiBAcGFyYW0gdXNlclNlcnZpY2Ug0KHQtdGA0LLQuNGBINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKiBAcGFyYW0gY29udGV4dCDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHZlcmlmaWNhdGlvblNlcnZpY2U6IFNjVmVyaWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChTQ19VU0VSX0lORk8pIHB1YmxpYyByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJTZXJ2aWNlOiBTY1VzZXJTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFBPTFlNT1JQSEVVU19DT05URVhUKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29udGV4dD86IFR1aURpYWxvZ0NvbnRleHQ8U2NBcHByb3ZlZERhdGEsIFNjVXNlclBob25lQXBwcm92ZURpYWxvZ0NvbXBvbmVudD5cbiAgICApIHtcbiAgICAgICAgdGhpcy51c2VyJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICBwaG9uZTogdXNlci5jb250YWN0cy5waG9uZS52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidXNlciQgfCBhc3luYyBhcyB1c2VyXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKnR1aUxldD1cIiEhKGxvYWRpbmckIHwgYXN5bmMpIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5uZXh0KClcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgPHNjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtXG4gICAgICAgICAgICBbKGhhdmVDb2RlKV09XCJoYXZlQ29kZVwiXG4gICAgICAgICAgICBbc2hvdWxkQmVDb25maXJtZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3Nob3dDb2RlRmllbGRzXT1cIiF1c2VyLmNvbnRhY3RzLnBob25lLmlzQXBwcm92ZWRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICA+PC9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInVzZXIuY29udGFjdHMucGhvbmUuaXNBcHByb3ZlZCB8fCBoYXZlQ29kZVwiIGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInVzZXIuY29udGFjdHMucGhvbmUuaXNBcHByb3ZlZCAmJiBjb250ZXh0XCIgdHVpQnV0dG9uIChjbGljayk9XCJjb250ZXh0LiRpbXBsaWNpdC5jb21wbGV0ZSgpXCIgdHlwZT1cImJ1dHRvblwiIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIj7Ql9Cw0LrRgNGL0YLRjDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhdmVDb2RlXCIgdHVpQnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbc2hvd0xvYWRlcl09XCJsb2FkaW5nQXBwcm92ZUNvZGVcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGxvYWRpbmdBcHByb3ZlQ29kZVwiIGljb249XCJzY0ljb25Mb2dJblwiPlxuICAgICAgICAgICAgICAgINCf0L7QtNGC0LLQtdGA0LTQuNGC0YxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  export * from './scBicValidator';
2
2
  export * from './scCorrespondentAccountValidator';
3
- export * from './scPasswordConfirmMatchingValidator';
3
+ export * from './sc-password-confirm-matching-validator';
4
4
  export * from './stepValidator';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY0JpY1ZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3NjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zY1Bhc3N3b3JkQ29uZmlybU1hdGNoaW5nVmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vc3RlcFZhbGlkYXRvcic7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY0JpY1ZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3NjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1wYXNzd29yZC1jb25maXJtLW1hdGNoaW5nLXZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3N0ZXBWYWxpZGF0b3InO1xuIl19
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Проверяет повторный ввод пароля на эквивалентность паролю.
3
+ *
4
+ * @param passwordKey Ключ поля ввода пароля.
5
+ * @param passwordConfirmKey Ключ поля повторного ввода пароля.
6
+ */
7
+ export function scPasswordConfirmMatchingValidator(passwordKey, passwordConfirmKey) {
8
+ return (control) => {
9
+ const passwordInput = control.get(passwordKey);
10
+ const passwordConfirmInput = control.get(passwordConfirmKey);
11
+ if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {
12
+ return null;
13
+ }
14
+ return passwordInput.value === passwordConfirmInput.value ? null : { passwordNotEquivalent: true };
15
+ };
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcGFzc3dvcmQtY29uZmlybS1tYXRjaGluZy12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmFsaWRhdG9ycy9zYy1wYXNzd29yZC1jb25maXJtLW1hdGNoaW5nLXZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQ0FBa0MsQ0FBQyxXQUFtQixFQUFFLGtCQUEwQjtJQUM5RixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUN6RCxNQUFNLGFBQWEsR0FBMEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RixNQUFNLG9CQUFvQixHQUEwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFcEcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLG9CQUFvQixJQUFJLGFBQWEsQ0FBQyxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRTtZQUN6SixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxhQUFhLENBQUMsS0FBSyxLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3ZHLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9C+0LLRgtC+0YDQvdGL0Lkg0LLQstC+0LQg0L/QsNGA0L7Qu9GPINC90LAg0Y3QutCy0LjQstCw0LvQtdC90YLQvdC+0YHRgtGMINC/0LDRgNC+0LvRji5cbiAqXG4gKiBAcGFyYW0gcGFzc3dvcmRLZXkg0JrQu9GO0Ycg0L/QvtC70Y8g0LLQstC+0LTQsCDQv9Cw0YDQvtC70Y8uXG4gKiBAcGFyYW0gcGFzc3dvcmRDb25maXJtS2V5INCa0LvRjtGHINC/0L7Qu9GPINC/0L7QstGC0L7RgNC90L7Qs9C+INCy0LLQvtC00LAg0L/QsNGA0L7Qu9GPLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NQYXNzd29yZENvbmZpcm1NYXRjaGluZ1ZhbGlkYXRvcihwYXNzd29yZEtleTogc3RyaW5nLCBwYXNzd29yZENvbmZpcm1LZXk6IHN0cmluZyk6IFZhbGlkYXRvckZuIHwgbnVsbCB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkSW5wdXQ6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcgfCBudWxsPiB8IG51bGwgPSBjb250cm9sLmdldChwYXNzd29yZEtleSk7XG4gICAgICAgIGNvbnN0IHBhc3N3b3JkQ29uZmlybUlucHV0OiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgbnVsbD4gfCBudWxsID0gY29udHJvbC5nZXQocGFzc3dvcmRDb25maXJtS2V5KTtcblxuICAgICAgICBpZiAoIXBhc3N3b3JkSW5wdXQgfHwgIXBhc3N3b3JkQ29uZmlybUlucHV0IHx8IHBhc3N3b3JkSW5wdXQuaW52YWxpZCB8fCBwYXNzd29yZENvbmZpcm1JbnB1dC5pbnZhbGlkIHx8ICFwYXNzd29yZElucHV0LnZhbHVlIHx8ICFwYXNzd29yZENvbmZpcm1JbnB1dC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFzc3dvcmRJbnB1dC52YWx1ZSA9PT0gcGFzc3dvcmRDb25maXJtSW5wdXQudmFsdWUgPyBudWxsIDogeyBwYXNzd29yZE5vdEVxdWl2YWxlbnQ6IHRydWUgfTtcbiAgICB9O1xufVxuIl19
@@ -1,7 +1,9 @@
1
+ /* eslint-disable no-underscore-dangle,lodash/prefer-constant */
2
+ import { HttpErrorResponse } from '@angular/common/http';
1
3
  import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output } from '@angular/core';
2
4
  import { FormGroupDirective } from '@angular/forms';
3
- import { Subject, filter, map, switchMap, catchError, of, startWith, share, tap, finalize, timer, scan, takeWhile, endWith, distinctUntilChanged } from 'rxjs';
4
5
  import { tuiControlValue } from '@taiga-ui/cdk';
6
+ import { catchError, distinctUntilChanged, endWith, filter, finalize, map, of, scan, share, startWith, Subject, switchMap, takeWhile, tap, timer } from 'rxjs';
5
7
  import { scPhoneVerificationCodeMask } from '../../masks';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "@snabcentr/client-core";
@@ -24,10 +26,6 @@ export class ScVerificationPhoneCheckFormComponent {
24
26
  constructor(verificationService, formGroupDirective) {
25
27
  this.verificationService = verificationService;
26
28
  this.formGroupDirective = formGroupDirective;
27
- /**
28
- * Признак, следует ли отображать функционал кода подтверждения.
29
- */
30
- this._showCodeFields = true;
31
29
  /**
32
30
  * Признак, что поле ввода телефона только для чтения.
33
31
  */
@@ -55,20 +53,26 @@ export class ScVerificationPhoneCheckFormComponent {
55
53
  /**
56
54
  * {@link Observable} запроса данных получения кода подтверждения.
57
55
  */
58
- this.loadingApproveCode$ = this.onSendCode.pipe(filter(() => this.phoneControl.valid), map(() => this.phoneControl.value), switchMap((value) => this.verificationService.sendPhoneApproveCode(value).pipe(tap(() => this.reloadTimer$.next(60)), map(() => false), catchError((error) => {
59
- const errorResponse = error.error;
60
- const regex = /(\d{2}):\d{2}/;
61
- const match = errorResponse.message.match(regex);
62
- if (match && match.length > 1) {
63
- const timeParts = match[0].split(':');
64
- const seconds = parseInt(timeParts[1], 10);
65
- this.reloadTimer$.next(seconds);
66
- }
67
- else {
68
- this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });
56
+ this.loadingApproveCode$ = this.onSendCode.pipe(map(() => this.phoneControl.value), filter((value) => this.phoneControl.valid), switchMap((value) => this.verificationService.sendPhoneApproveCode(value).pipe(tap(() => {
57
+ this.reloadTimer$.next(60);
58
+ }), map(() => false), catchError((error) => {
59
+ if (error instanceof HttpErrorResponse) {
60
+ const errorResponse = error.error;
61
+ const regex = /(\d{2}):\d{2}/;
62
+ const match = errorResponse.message.match(regex);
63
+ if (match && match.length > 1) {
64
+ const timeParts = match[0].split(':');
65
+ const seconds = Number.parseInt(timeParts[1], 10);
66
+ this.reloadTimer$.next(seconds);
67
+ }
68
+ else {
69
+ this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });
70
+ }
69
71
  }
70
72
  return of(false);
71
- }), finalize(() => this.setHaveCode(true)), startWith(true))), startWith(false), share());
73
+ }), finalize(() => {
74
+ this.setHaveCode(true);
75
+ }), startWith(true))), startWith(false), share());
72
76
  /**
73
77
  * Маска поля ввода кода для подтверждения.
74
78
  */
@@ -82,11 +86,15 @@ export class ScVerificationPhoneCheckFormComponent {
82
86
  *
83
87
  * TODO: Вынести таймер в отдельную директиву TASK:[#9260].
84
88
  */
85
- this.timer$ = this.reloadTimer$.pipe(switchMap((sec) => timer(0, 1000).pipe(scan((total) => --total, sec), takeWhile((total) => total >= 0), map((total) => {
89
+ this.timer$ = this.reloadTimer$.pipe(switchMap((sec) => timer(0, 1000).pipe(scan((total) => -1 + total, sec), takeWhile((total) => total >= 0), map((total) => {
86
90
  const minutes = Math.floor(total / 60);
87
91
  const seconds = total % 60;
88
92
  return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;
89
93
  }), endWith(null), startWith(null), distinctUntilChanged())));
94
+ /**
95
+ * Признак, следует ли отображать функционал кода подтверждения.
96
+ */
97
+ this._showCodeFields = true;
90
98
  }
91
99
  /**
92
100
  * Признак, следует ли отображать функционал кода подтверждения.
@@ -111,18 +119,20 @@ export class ScVerificationPhoneCheckFormComponent {
111
119
  * Поле ввода 'Номер телефона'.
112
120
  */
113
121
  get phoneControl() {
114
- return this.form?.controls.phone;
122
+ return this.form.controls.phone;
115
123
  }
116
124
  /** @inheritDoc */
117
125
  ngOnInit() {
118
- this.phoneCheck$ = tuiControlValue(this.phoneControl).pipe(tap(() => this.reloadTimer$.next(0)), switchMap((value) => {
126
+ this.phoneCheck$ = tuiControlValue(this.phoneControl).pipe(tap(() => {
127
+ this.reloadTimer$.next(0);
128
+ }), switchMap((value) => {
119
129
  if (this.phoneControl.valid && !!value) {
120
130
  return this.verificationService.getPhoneCheck$(value).pipe(map((result) => {
121
131
  if (this.shouldBeBusy !== result.isBusy) {
122
132
  this.phoneControl.setErrors({
123
133
  serverResponse: [
124
- result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует'
125
- ]
134
+ result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует',
135
+ ],
126
136
  });
127
137
  this.phoneControl.markAsTouched();
128
138
  return false;
@@ -132,16 +142,18 @@ export class ScVerificationPhoneCheckFormComponent {
132
142
  serverResponse: [
133
143
  result.isConfirmed
134
144
  ? 'Телефон уже подтверждён'
135
- : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'
136
- ]
145
+ : 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.',
146
+ ],
137
147
  });
138
148
  this.phoneControl.markAsTouched();
139
149
  return false;
140
150
  }
141
151
  return true;
142
152
  }), catchError((error) => {
143
- const errorResponse = error.error;
144
- this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.['phone'] ?? [errorResponse.message] });
153
+ if (error instanceof HttpErrorResponse) {
154
+ const errorResponse = error.error;
155
+ this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });
156
+ }
145
157
  return of(false);
146
158
  }), startWith(null));
147
159
  }
@@ -181,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
181
193
  }], haveCodeChange: [{
182
194
  type: Output
183
195
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3ZlcmlmaWNhdGlvbi92ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3ZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk1RSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzSyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7O0FBRTFEOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFDQUFxQztJQXNKOUM7Ozs7O09BS0c7SUFDSCxZQUNxQixtQkFBMEMsRUFFMUMsa0JBQXVDO1FBRnZDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFF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SztnQkFPQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hc2tpdG9PcHRpb25zIH0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQgeyBTY1ZlcmlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoL2ludGVyZmFjZXMvQXBpRXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCBjYXRjaEVycm9yLCBvZiwgc3RhcnRXaXRoLCBzaGFyZSwgdGFwLCBmaW5hbGl6ZSwgdGltZXIsIHNjYW4sIHRha2VXaGlsZSwgZW5kV2l0aCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgc2NQaG9uZVZlcmlmaWNhdGlvbkNvZGVNYXNrIH0gZnJvbSAnLi4vLi4vbWFza3MnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC/0YDQvtCy0LXRgNC60Lgg0YLQtdC70LXRhNC+0L3QsCDQuCDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2NWZXJpZmljYXRpb25QaG9uZUNoZWNrRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0YTRg9C90LrRhtC40L7QvdCw0Lsg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2hvd0NvZGVGaWVsZHM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0YTRg9C90LrRhtC40L7QvdCw0Lsg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHNob3dDb2RlRmllbGRzKHNob3dDb2RlRmllbGRzOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dDb2RlRmllbGRzID0gc2hvd0NvZGVGaWVsZHM7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlW3Nob3dDb2RlRmllbGRzID8gJ2VuYWJsZScgOiAnZGlzYWJsZSddKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0YTRg9C90LrRhtC40L7QvdCw0Lsg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIGdldCBzaG93Q29kZUZpZWxkcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dDb2RlRmllbGRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/QvtC70LUg0LLQstC+0LTQsCDRgtC10LvQtdGE0L7QvdCwINGC0L7Qu9GM0LrQviDQtNC70Y8g0YfRgtC10L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDRgtC10LvQtdGE0L7QvdGDINCx0YvRgtGMINCyINGB0LjRgdGC0LXQvNC1LiDQntGCINGN0YLQvtCz0L4g0L/RgNC40LfQvdCw0LrQsCDQt9Cw0LLQuNGB0LjRgiDQsiDQutCw0LrQuNGFINGB0LvRg9GH0LDRj9GFINCy0YvQtNCw0LLQsNGC0Ywg0L7RiNC40LHQutGDINC/0YDQuCDQv9GA0L7QstC10YDQutC4INC30LDQvdGP0YLQvtGB0YLQuCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3VsZEJlQnVzeTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQv9GA0L7QstC10YDRj9GC0Ywg0L/QvtC00YLQstC10YDQttC00ZHQvSDQu9C4INGC0LXQu9C10YTQvtC90LAg0LIg0YHQuNGB0YLQtdC80LUuINCf0YDQuCBgdHJ1ZWAg0LHRg9C00LXRgiDQstGL0LfRi9Cy0LDRgtGMINC+0YjQuNCx0LrRgyDQv9GA0Lgg0L3QsNC70LjRh9C40LUg0YLQtdC70LXRhNC+0L3QsCDQsiDRgdC40YHRgtC10LzQtSDQsdC10Lcg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvdWxkQmVDb25maXJtZWQ/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNC70LjRh9C40LUg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhhdmVDb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQtNC70Y8g0L7QsdGA0LDRgtC90L7QuSDQv9GA0LjQstGP0LfQutC4INC90LDQu9C40YfQuNGPINC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGhhdmVDb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9CS0YXQvtC0INC90LAg0YHQsNC50YLCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZvcm0oKTogRm9ybUdyb3VwPHtcbiAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZT8uZm9ybSBhcyBGb3JtR3JvdXA8e1xuICAgICAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICAgICAgdmVyaWZpY2F0aW9uQ29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIH0+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INCy0LLQvtC00LAgJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwaG9uZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtPy5jb250cm9scy5waG9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L/RgNC+0LLQtdGA0LrQuCDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcGhvbmVDaGVjayQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblNlbmRDb2RlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0L/QvtC70YPRh9C10L3QuNGPINC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nQXBwcm92ZUNvZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5vblNlbmRDb2RlLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnBob25lQ29udHJvbC52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLnBob25lQ29udHJvbC52YWx1ZSBhcyBzdHJpbmcpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25TZXJ2aWNlLnNlbmRQaG9uZUFwcHJvdmVDb2RlKHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KDYwKSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSAvKFxcZHsyfSk6XFxkezJ9LztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBlcnJvclJlc3BvbnNlLm1lc3NhZ2UubWF0Y2gocmVnZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lUGFydHMgPSBtYXRjaFswXS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IHBhcnNlSW50KHRpbWVQYXJ0c1sxXSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KHNlY29uZHMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2U/LmVycm9ycz8uWydwaG9uZSddID8/IFtlcnJvclJlc3BvbnNlLm1lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnNldEhhdmVDb2RlKHRydWUpKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0YHQutCwINC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC00LAg0LTQu9GPINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2ZXJpZmljYXRpb25Db2RlTWFzazogTWFza2l0b09wdGlvbnMgPSBzY1Bob25lVmVyaWZpY2F0aW9uQ29kZU1hc2s7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0LfQsNC/0YPRgdC60LAv0L7RgdGC0LDQvdC+0LLQutC4INGC0LDQudC80LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWxvYWRUaW1lciQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQotCw0LnQvNC10YDQsC5cbiAgICAgKlxuICAgICAqIFRPRE86INCS0YvQvdC10YHRgtC4INGC0LDQudC80LXRgCDQsiDQvtGC0LTQtdC70YzQvdGD0Y4g0LTQuNGA0LXQutGC0LjQstGDIFRBU0s6WyM5MjYwXS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZXIkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+ID0gdGhpcy5yZWxvYWRUaW1lciQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzZWMpID0+XG4gICAgICAgICAgICB0aW1lcigwLCAxMDAwKS5waXBlKFxuICAgICAgICAgICAgICAgIHNjYW4oKHRvdGFsKSA9PiAtLXRvdGFsLCBzZWMpLFxuICAgICAgICAgICAgICAgIHRha2VXaGlsZSgodG90YWwpID0+IHRvdGFsID49IDApLFxuICAgICAgICAgICAgICAgIG1hcCgodG90YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IodG90YWwgLyA2MCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSB0b3RhbCAlIDYwO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKG1pbnV0ZXMpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtNYXRoLnJvdW5kKHNlY29uZHMpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGVuZFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjVmVyaWZpY2F0aW9uUGhvbmVDaGVja0Zvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZlcmlmaWNhdGlvblNlcnZpY2Ug0KHQtdGA0LLQuNGBINCy0LXRgNC40YTQuNC60LDRhtC40LguXG4gICAgICogQHBhcmFtIGZvcm1Hcm91cERpcmVjdGl2ZSDQlNC40YDQtdC60YLQuNCy0LAgYyBgRm9ybUdyb3VwYCDQuNC3IERPTS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZTogU2NWZXJpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmU/OiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGhvbmVDaGVjayQgPSB0dWlDb250cm9sVmFsdWU8c3RyaW5nIHwgbnVsbD4odGhpcy5waG9uZUNvbnRyb2wpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRUaW1lciQubmV4dCgwKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGhvbmVDb250cm9sLnZhbGlkICYmICEhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uU2VydmljZS5nZXRQaG9uZUNoZWNrJCh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVCdXN5ICE9PSByZXN1bHQuaXNCdXN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pc0J1c3kgPyAn0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBINGC0LDQutC40Lwg0L3QvtC80LXRgNC+0Lwg0YLQtdC70LXRhNC+0L3QsCDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInIDogJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVDb25maXJtZWQgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3VsZEJlQ29uZmlybWVkICE9PSByZXN1bHQuaXNDb25maXJtZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlzQ29uZmlybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ9Ci0LXQu9C10YTQvtC9INGD0LbQtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L3QtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9INC40LvQuCDQstGF0L7QtCDQv9C+INC90LXQvNGDINC90LXQstC+0LfQvNC+0LbQtdC9LiDQntCx0YDQsNGC0LjRgtC10YHRjCDQuiDQstCw0YjQtdC80YMg0L/QtdGA0YHQvtC90LDQu9GM0L3QvtC80YMg0LzQtdC90LXQtNC20LXRgNGDINC40LvQuCDQstC+0LnQtNC40YLQtSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IGUtbWFpbCDQuCDQv9Cw0YDQvtC70Y8uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2U/LmVycm9ycz8uWydwaG9uZSddID8/IFtlcnJvclJlc3BvbnNlLm1lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGF2ZUNvZGUg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4g0LXRgdGC0Ywg0LvQuCDQutC+0LQg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SGF2ZUNvZGUoaGF2ZUNvZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXZlQ29kZSA9IGhhdmVDb2RlO1xuICAgICAgICB0aGlzLmhhdmVDb2RlQ2hhbmdlLmVtaXQoaGF2ZUNvZGUpO1xuICAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICp0dWlMZXQ9XCIobG9hZGluZ0FwcHJvdmVDb2RlJCB8IGFzeW5jKSBhcyBsb2FkaW5nQXBwcm92ZUNvZGVcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICA8bGFiZWwgdHVpTGFiZWw9XCLQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LBcIj5cbiAgICAgICAgPHR1aS1pbnB1dC1waG9uZSBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIFtyZWFkT25seV09XCJyZWFkT25seVwiIFt0dWlUZXh0ZmllbGRDdXN0b21Db250ZW50XT1cImNoZWNraW5nUGhvbmVcIj5cbiAgICAgICAgICAgINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsFxuICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBhdXRvY29tcGxldGU9XCJwaG9uZVwiIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgICAgICA8dHVpLWVycm9yIGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgPC9sYWJlbD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvZGVGaWVsZHMgJiYgZm9ybS5lbmFibGVkXCI+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cImxvYWRpbmdBcHByb3ZlQ29kZSA9PT0gZmFsc2UgJiYgaGF2ZUNvZGVcIiB0dWlMYWJlbD1cItCa0L7QtCDQuNC3INCh0JzQoVwiPlxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJpZmljYXRpb25Db2RlXCI+XG4gICAgICAgICAgICAgICAg0JrQvtC0INC40Lcg0KHQnNChXG4gICAgICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBbbWFza2l0b109XCJ2ZXJpZmljYXRpb25Db2RlTWFza1wiIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3IgZm9ybUNvbnRyb2xOYW1lPVwidmVyaWZpY2F0aW9uQ29kZVwiIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiPjwvdHVpLWVycm9yPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgKnR1aUxldD1cIiEhbG9hZGluZ0FwcHJvdmVDb2RlIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiIGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhhdmVDb2RlXCJcbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZW5kQ29kZS5uZXh0KClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgISEhKHBob25lQ2hlY2skIHwgYXN5bmMpIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgICAgIGljb249XCJzY0ljb25Mb2dJblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70YPRh9C40YLRjCDQutC+0LRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFsb2FkaW5nQXBwcm92ZUNvZGUgJiYgIWhhdmVDb2RlXCIgdHVpTGluayBbcHNldWRvXT1cInRydWVcIiBbZGlzYWJsZWRdPVwiISEhKHBob25lQ2hlY2skIHwgYXN5bmMpIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCIgKGNsaWNrKT1cInNldEhhdmVDb2RlKHRydWUpXCI+XG4gICAgICAgICAgICAgICAg0KMg0LzQtdC90Y8g0LXRgdGC0Ywg0LrQvtC0XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdHVpTGV0PVwidGltZXIkIHwgYXN5bmMgYXMgdGltZXJcIj5cbiAgICAgICAgICAgICAgICA8dHVpLWxvYWRlciAqbmdJZj1cImhhdmVDb2RlXCIgW3Nob3dMb2FkZXJdPVwibG9hZGluZ0FwcHJvdmVDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHVpTGluayBbcHNldWRvXT1cInRydWVcIiBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8IHRpbWVyXCIgKGNsaWNrKT1cIm9uU2VuZENvZGUubmV4dCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDQn9C+0LLRgtC+0YDQvdC+INC+0YLQv9GA0LDQstC40YLRjCDQutC+0LRcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lclwiIGNsYXNzPVwiIXRleHQtdHVpLWJhc2UtMDhcIj4o0YfQtdGA0LXQtyB7eyB0aW1lciB9fSk8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90dWktbG9hZGVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG48bmctdGVtcGxhdGUgI2NoZWNraW5nUGhvbmU+XG4gICAgPHR1aS1sb2FkZXIgKm5nSWY9XCIhISEocGhvbmVDaGVjayQgfCBhc3luYykgJiYgcGhvbmVDb250cm9sLnZhbGlkXCIgY2xhc3M9XCJ3LTQgaC00XCI+IDwvdHVpLWxvYWRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3ZlcmlmaWNhdGlvbi92ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3ZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSCxPQUFPLEVBQTBCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUczSyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7OztBQUUxRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQ0FBcUM7SUF3STlDOzs7OztPQUtHO0lBQ0gsWUFD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LHFDQUFxQyx1REFnSmxDLGtCQUFrQjtzSEFoSnJCLHFDQUFxQyx1UkNyQmxELHc0RkErQ0E7MkZEMUJhLHFDQUFxQztrQkFMakQsU0FBUzsrQkFDSSxrQ0FBa0MsbUJBRTNCLHVCQUF1QixDQUFDLE1BQU07OzBCQWtKMUMsTUFBTTsyQkFBQyxrQkFBa0I7NENBM0luQixjQUFjO3NCQUR4QixLQUFLO2dCQWlCQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSxsb2Rhc2gvcHJlZmVyLWNvbnN0YW50ICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IFNjVmVyaWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpQ29udHJvbFZhbHVlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZW5kV2l0aCwgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc2Nhbiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlV2hpbGUsIHRhcCwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgc2NQaG9uZVZlcmlmaWNhdGlvbkNvZGVNYXNrIH0gZnJvbSAnLi4vLi4vbWFza3MnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC/0YDQvtCy0LXRgNC60Lgg0YLQtdC70LXRhNC+0L3QsCDQuCDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjVmVyaWZpY2F0aW9uUGhvbmVDaGVja0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzaG93Q29kZUZpZWxkcyhzaG93Q29kZUZpZWxkczogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93Q29kZUZpZWxkcyA9IHNob3dDb2RlRmllbGRzO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZVtzaG93Q29kZUZpZWxkcyA/ICdlbmFibGUnIDogJ2Rpc2FibGUnXSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0NvZGVGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29kZUZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC/0L7Qu9C1INCy0LLQvtC00LAg0YLQtdC70LXRhNC+0L3QsCDRgtC+0LvRjNC60L4g0LTQu9GPINGH0YLQtdC90LjRjy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0YLQtdC70LXRhNC+0L3RgyDQsdGL0YLRjCDQsiDRgdC40YHRgtC10LzQtS4g0J7RgiDRjdGC0L7Qs9C+INC/0YDQuNC30L3QsNC60LAg0LfQsNCy0LjRgdC40YIg0LIg0LrQsNC60LjRhSDRgdC70YPRh9Cw0Y/RhSDQstGL0LTQsNCy0LDRgtGMINC+0YjQuNCx0LrRgyDQv9GA0Lgg0L/RgNC+0LLQtdGA0LrQuCDQt9Cw0L3Rj9GC0L7RgdGC0Lgg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG91bGRCZUJ1c3k6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L/RgNC+0LLQtdGA0Y/RgtGMINC/0L7QtNGC0LLQtdGA0LbQtNGR0L0g0LvQuCDRgtC10LvQtdGE0L7QvdCwINCyINGB0LjRgdGC0LXQvNC1LiDQn9GA0LggYHRydWVgINCx0YPQtNC10YIg0LLRi9C30YvQstCw0YLRjCDQvtGI0LjQsdC60YMg0L/RgNC4INC90LDQu9C40YfQuNC1INGC0LXQu9C10YTQvtC90LAg0LIg0YHQuNGB0YLQtdC80LUg0LHQtdC3INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3VsZEJlQ29uZmlybWVkPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqINCd0LDQu9C40YfQuNC1INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINGDINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoYXZlQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LTQu9GPINC+0LHRgNCw0YLQvdC+0Lkg0L/RgNC40LLRj9C30LrQuCDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRj1xuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBoYXZlQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQv9GA0L7QstC10YDQutC4INC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBwaG9uZUNoZWNrJD86IE9ic2VydmFibGU8Ym9vbGVhbiB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU2VuZENvZGU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC00LDQvdC90YvRhSDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmdBcHByb3ZlQ29kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLm9uU2VuZENvZGUucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMucGhvbmVDb250cm9sLnZhbHVlKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiB0aGlzLnBob25lQ29udHJvbC52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnZlcmlmaWNhdGlvblNlcnZpY2Uuc2VuZFBob25lQXBwcm92ZUNvZGUodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dCg2MCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGR7Mn0pOlxcZHsyfS87XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGVycm9yUmVzcG9uc2UubWVzc2FnZS5tYXRjaChyZWdleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVBhcnRzID0gbWF0Y2hbMF0uc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gTnVtYmVyLnBhcnNlSW50KHRpbWVQYXJ0c1sxXSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dChzZWNvbmRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2UuZXJyb3JzPy5bJ3Bob25lJ10gPz8gW2Vycm9yUmVzcG9uc2UubWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIYXZlQ29kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc3RhcnRXaXRoKGZhbHNlKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0YHQutCwINC/0L7Qu9GPINCy0LLQvtC00LAg0LrQvtC00LAg0LTQu9GPINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2ZXJpZmljYXRpb25Db2RlTWFzazogTWFza2l0b09wdGlvbnMgPSBzY1Bob25lVmVyaWZpY2F0aW9uQ29kZU1hc2s7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0LfQsNC/0YPRgdC60LAv0L7RgdGC0LDQvdC+0LLQutC4INGC0LDQudC80LXRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWxvYWRUaW1lciQ6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQotCw0LnQvNC10YDQsC5cbiAgICAgKlxuICAgICAqIFRPRE86INCS0YvQvdC10YHRgtC4INGC0LDQudC80LXRgCDQsiDQvtGC0LTQtdC70YzQvdGD0Y4g0LTQuNGA0LXQutGC0LjQstGDIFRBU0s6WyM5MjYwXS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZXIkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+ID0gdGhpcy5yZWxvYWRUaW1lciQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChzZWMpID0+XG4gICAgICAgICAgICB0aW1lcigwLCAxMDAwKS5waXBlKFxuICAgICAgICAgICAgICAgIHNjYW4oKHRvdGFsKSA9PiAtMSArIHRvdGFsLCBzZWMpLFxuICAgICAgICAgICAgICAgIHRha2VXaGlsZSgodG90YWwpID0+IHRvdGFsID49IDApLFxuICAgICAgICAgICAgICAgIG1hcCgodG90YWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IodG90YWwgLyA2MCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSB0b3RhbCAlIDYwO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKG1pbnV0ZXMpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtNYXRoLnJvdW5kKHNlY29uZHMpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGVuZFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNGD0L3QutGG0LjQvtC90LDQuyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaG93Q29kZUZpZWxkczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjVmVyaWZpY2F0aW9uUGhvbmVDaGVja0Zvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZlcmlmaWNhdGlvblNlcnZpY2Ug0KHQtdGA0LLQuNGBINCy0LXRgNC40YTQuNC60LDRhtC40LguXG4gICAgICogQHBhcmFtIGZvcm1Hcm91cERpcmVjdGl2ZSDQlNC40YDQtdC60YLQuNCy0LAgYyBgRm9ybUdyb3VwYCDQuNC3IERPTS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZTogU2NWZXJpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmU/OiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQstCy0L7QtNCwINC00LvRjyDRhNC+0YDQvNGLIMKr0JLRhdC+0LQg0L3QsCDRgdCw0LnRgsK7LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtR3JvdXA8e1xuICAgICAgICBwaG9uZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlPy5mb3JtIGFzIEZvcm1Hcm91cDx7XG4gICAgICAgICAgICBwaG9uZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgfT47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/QvtC70LUg0LLQstC+0LTQsCAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwJy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBob25lQ29udHJvbCgpOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHMucGhvbmU7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBob25lQ2hlY2skID0gdHVpQ29udHJvbFZhbHVlPHN0cmluZyB8IG51bGw+KHRoaXMucGhvbmVDb250cm9sKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KDApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGhvbmVDb250cm9sLnZhbGlkICYmICEhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uU2VydmljZS5nZXRQaG9uZUNoZWNrJCh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVCdXN5ICE9PSByZXN1bHQuaXNCdXN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pc0J1c3kgPyAn0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBINGC0LDQutC40Lwg0L3QvtC80LXRgNC+0Lwg0YLQtdC70LXRhNC+0L3QsCDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInIDogJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRCZUNvbmZpcm1lZCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2hvdWxkQmVDb25maXJtZWQgIT09IHJlc3VsdC5pc0NvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXNDb25maXJtZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAn0KLQtdC70LXRhNC+0L0g0YPQttC1INC/0L7QtNGC0LLQtdGA0LbQtNGR0L0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQvdC1INC/0L7QtNGC0LLQtdGA0LbQtNGR0L0g0LjQu9C4INCy0YXQvtC0INC/0L4g0L3QtdC80YMg0L3QtdCy0L7Qt9C80L7QttC10L0uINCe0LHRgNCw0YLQuNGC0LXRgdGMINC6INCy0LDRiNC10LzRgyDQv9C10YDRgdC+0L3QsNC70YzQvdC+0LzRgyDQvNC10L3QtdC00LbQtdGA0YMg0LjQu9C4INCy0L7QudC00LjRgtC1INGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgZS1tYWlsINC4INC/0LDRgNC+0LvRjy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvclJlc3BvbnNlLmVycm9ycz8uWydwaG9uZSddID8/IFtlcnJvclJlc3BvbnNlLm1lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGF2ZUNvZGUg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4g0LXRgdGC0Ywg0LvQuCDQutC+0LQg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SGF2ZUNvZGUoaGF2ZUNvZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXZlQ29kZSA9IGhhdmVDb2RlO1xuICAgICAgICB0aGlzLmhhdmVDb2RlQ2hhbmdlLmVtaXQoaGF2ZUNvZGUpO1xuICAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICp0dWlMZXQ9XCIobG9hZGluZ0FwcHJvdmVDb2RlJCB8IGFzeW5jKSBhcyBsb2FkaW5nQXBwcm92ZUNvZGVcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICA8bGFiZWwgdHVpTGFiZWw9XCLQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LBcIj5cbiAgICAgICAgPHR1aS1pbnB1dC1waG9uZSBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIFtyZWFkT25seV09XCJyZWFkT25seVwiIFt0dWlUZXh0ZmllbGRDdXN0b21Db250ZW50XT1cImNoZWNraW5nUGhvbmVcIj5cbiAgICAgICAgICAgINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsFxuICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBhdXRvY29tcGxldGU9XCJwaG9uZVwiIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgICAgICA8dHVpLWVycm9yIGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgPC9sYWJlbD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvZGVGaWVsZHMgJiYgZm9ybS5lbmFibGVkXCI+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cImxvYWRpbmdBcHByb3ZlQ29kZSA9PT0gZmFsc2UgJiYgaGF2ZUNvZGVcIiB0dWlMYWJlbD1cItCa0L7QtCDQuNC3INCh0JzQoVwiPlxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJpZmljYXRpb25Db2RlXCI+XG4gICAgICAgICAgICAgICAg0JrQvtC0INC40Lcg0KHQnNChXG4gICAgICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBbbWFza2l0b109XCJ2ZXJpZmljYXRpb25Db2RlTWFza1wiIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3IgZm9ybUNvbnRyb2xOYW1lPVwidmVyaWZpY2F0aW9uQ29kZVwiIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiPjwvdHVpLWVycm9yPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxkaXYgKnR1aUxldD1cIiEhbG9hZGluZ0FwcHJvdmVDb2RlIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiIGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhhdmVDb2RlXCJcbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZW5kQ29kZS5uZXh0KClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgISEhKHBob25lQ2hlY2skIHwgYXN5bmMpIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgICAgIGljb249XCJzY0ljb25Mb2dJblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70YPRh9C40YLRjCDQutC+0LRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFsb2FkaW5nQXBwcm92ZUNvZGUgJiYgIWhhdmVDb2RlXCIgdHVpTGluayBbcHNldWRvXT1cInRydWVcIiBbZGlzYWJsZWRdPVwiISEhKHBob25lQ2hlY2skIHwgYXN5bmMpIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCIgKGNsaWNrKT1cInNldEhhdmVDb2RlKHRydWUpXCI+XG4gICAgICAgICAgICAgICAg0KMg0LzQtdC90Y8g0LXRgdGC0Ywg0LrQvtC0XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdHVpTGV0PVwidGltZXIkIHwgYXN5bmMgYXMgdGltZXJcIj5cbiAgICAgICAgICAgICAgICA8dHVpLWxvYWRlciAqbmdJZj1cImhhdmVDb2RlXCIgW3Nob3dMb2FkZXJdPVwibG9hZGluZ0FwcHJvdmVDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHVpTGluayBbcHNldWRvXT1cInRydWVcIiBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8IHRpbWVyXCIgKGNsaWNrKT1cIm9uU2VuZENvZGUubmV4dCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICDQn9C+0LLRgtC+0YDQvdC+INC+0YLQv9GA0LDQstC40YLRjCDQutC+0LRcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lclwiIGNsYXNzPVwiIXRleHQtdHVpLWJhc2UtMDhcIj4o0YfQtdGA0LXQtyB7eyB0aW1lciB9fSk8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90dWktbG9hZGVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG48bmctdGVtcGxhdGUgI2NoZWNraW5nUGhvbmU+XG4gICAgPHR1aS1sb2FkZXIgKm5nSWY9XCIhISEocGhvbmVDaGVjayQgfCBhc3luYykgJiYgcGhvbmVDb250cm9sLnZhbGlkXCIgY2xhc3M9XCJ3LTQgaC00XCI+IDwvdHVpLWxvYWRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=