@snabcentr/client-ui 3.49.3 → 3.50.0

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 (69) hide show
  1. package/auth/interfaces/index.d.ts +0 -1
  2. package/banner/sc-banner.component.d.ts +23 -29
  3. package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +5 -5
  4. package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +5 -5
  5. package/cart/index.d.ts +0 -1
  6. package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +1 -1
  7. package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +2 -2
  8. package/configurators/sandwich/sc-sandwich.component.d.ts +2 -2
  9. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +6 -6
  10. package/esm2022/auth/interfaces/index.mjs +1 -2
  11. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +1 -1
  12. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +1 -1
  13. package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +1 -1
  14. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +3 -3
  15. package/esm2022/banner/sc-banner.component.mjs +53 -59
  16. package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +11 -11
  17. package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +6 -6
  18. package/esm2022/cart/index.mjs +1 -2
  19. package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +1 -1
  20. package/esm2022/catalog/price-card/sc-price-card.component.mjs +3 -3
  21. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +3 -3
  22. package/esm2022/catalog/price-history/sc-price-history.component.mjs +3 -3
  23. package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +1 -1
  24. package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +6 -13
  25. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +1 -1
  26. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +1 -1
  27. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +1 -1
  28. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +1 -1
  29. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +8 -8
  30. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +1 -1
  31. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +3 -3
  32. package/esm2022/order/draft/sc-draft.component.mjs +117 -0
  33. package/esm2022/order/index.mjs +7 -2
  34. package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +22 -0
  35. package/esm2022/order/order-item/sc-order-item.component.mjs +85 -0
  36. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +203 -0
  37. package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +72 -0
  38. package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +75 -0
  39. package/esm2022/order/sc-order.module.mjs +5 -6
  40. package/esm2022/providers/index.mjs +2 -1
  41. package/esm2022/providers/sc-dialog-service.providers.mjs +6 -0
  42. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +1 -1
  43. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +2 -2
  44. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +2 -2
  45. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +1 -1
  46. package/fesm2022/snabcentr-client-ui.mjs +1971 -1580
  47. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  48. package/order/draft/sc-draft.component.d.ts +63 -0
  49. package/order/index.d.ts +6 -1
  50. package/order/models/sc-i-cart-items-by-direction.d.ts +25 -0
  51. package/{cart/cart-item/sc-cart-item.component.d.ts → order/order-item/sc-order-item.component.d.ts} +7 -3
  52. package/order/order-items-list/sc-order-items-list.component.d.ts +102 -0
  53. package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +55 -0
  54. package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +55 -0
  55. package/order/sc-order.module.d.ts +10 -11
  56. package/package.json +3 -2
  57. package/providers/index.d.ts +1 -0
  58. package/providers/sc-dialog-service.providers.d.ts +41 -0
  59. package/styles/taiga/snabcentr-tailwind-preset.js +2 -3
  60. package/styles/tailwind/tailwind.scss +96 -100
  61. package/auth/interfaces/api-error-response.d.ts +0 -13
  62. package/esm2022/auth/interfaces/api-error-response.mjs +0 -2
  63. package/esm2022/cart/cart-item/sc-cart-item.component.mjs +0 -71
  64. package/esm2022/helpers/index.mjs +0 -2
  65. package/esm2022/helpers/sc-px-converter.mjs +0 -27
  66. package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +0 -60
  67. package/helpers/index.d.ts +0 -1
  68. package/helpers/sc-px-converter.d.ts +0 -15
  69. package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +0 -39
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
341
341
  TuiSortCountriesPipe,
342
342
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let fieldsList = fields();\n<form\n *ngIf=\"fieldsList.length > 0\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <!-- \u0424\u0418\u041E -->\n <label\n *ngIf=\"fieldsList.includes('name')\"\n tuiLabel\n >\n \u0424\u0418\u041E\n <tui-input formControlName=\"name\"> \u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0412\u0430\u0448\u0438 \u0424.\u0418.\u041E. </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u0422\u0435\u043B\u0435\u0444\u043E\u043D -->\n @if (fieldsList.includes('phone')) {\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label\n *ngIf=\"fieldsList.includes('isShouldUseMessenger') && form.controls.phone.value && isValidPhoneNumberForMessenger(form.controls.phone.value)\"\n tuiLabel\n >\n <input\n formControlName=\"isShouldUseMessenger\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span tuiTitle> \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 \u043C\u0435\u0441\u0441\u0435\u043D\u0434\u0436\u0435\u0440\u0430\u0445, \u0430 \u043D\u0435 \u0437\u0432\u043E\u043D\u0438\u0442\u044C </span>\n </label>\n }\n <!-- \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B -->\n <label\n *ngIf=\"fieldsList.includes('email')\"\n tuiLabel\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 -->\n <label\n *ngIf=\"fieldsList.includes('message')\"\n tuiLabel\n >\n \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439\n <tui-textarea formControlName=\"message\"> \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 </tui-textarea>\n <tui-error\n formControlName=\"message\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u0424\u0430\u0439\u043B\u044B -->\n <div\n *ngIf=\"fieldsList.includes('files')\"\n class=\"flex flex-col gap-1\"\n >\n <label tuiInputFiles>\n <input\n #validator=\"tuiInputFilesValidator\"\n accept=\".doc,.docx,.pdf,image/*\"\n tuiInputFiles\n [formControl]=\"loadedFile\"\n [multiple]=\"true\"\n (reject)=\"onReject($event)\"\n />\n </label>\n\n <tui-error\n *ngIf=\"loadedFile.invalid\"\n [error]=\"['maxLength'] | tuiFieldError | async\"\n [formControl]=\"loadedFile\"\n />\n\n @let accepted = accepted$ | async;\n <tui-files\n *ngIf=\"accepted?.length || rejected.length\"\n class=\"tui-space_top-1\"\n >\n <tui-file\n *ngFor=\"let file of accepted\"\n [file]=\"file\"\n (remove)=\"onRemove(file)\"\n />\n <tui-file\n *ngFor=\"let file of rejected\"\n state=\"error\"\n [file]=\"(file | tuiFileRejected: validator | async) || file\"\n (remove)=\"onRemove(file)\"\n />\n </tui-files>\n </div>\n\n <!-- recaptcha -->\n @if (form.get('recaptcha')) {\n <div\n class=\"mb-3 max-h-20 overflow-hidden duration-500\"\n [ngClass]=\"{ '!max-h-0 !-m-2': form.get('recaptcha')?.valid }\"\n >\n <re-captcha formControlName=\"recaptcha\" />\n </div>\n }\n\n <!-- \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F -->\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context?.data?.onClickOfferHandler(); clickOffer.emit()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n</form>\n" }]
343
343
  }], ctorParameters: () => [], propDecorators: { isValidPhoneNumberForMessenger: [] } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mZWVkYmFjay9mZWVkYmFjay1mb3JtL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUNILG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBRWQsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFP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cy11c2UtdGhpcyxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0ZlZWRiYWNrRm9ybXMsXG4gICAgU2NGZWVkYmFja1NlcnZpY2UsXG4gICAgU2NJRmVlZGJhY2tNZXNzYWdlLFxuICAgIFNjSVN1Z2dlc3Rpb25UeXBlLFxuICAgIFNjUGhvbmVTZXJ2aWNlLFxuICAgIFNjVXBsb2FkZWRGaWxlLFxuICAgIFNjVXNlcixcbiAgICBTY1VzZXJTZXJ2aWNlLFxufSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUxvb3NlVW5pb24sIHR1aVB1cmUsIFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aVRleHRmaWVsZCwgVHVpVGl0bGUgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCB9IGZyb20gJ0B0YWlnYS11aS9leHBlcmltZW50YWwnO1xuaW1wb3J0IHsgVHVpQ291bnRyeUlzb0NvZGUgfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQgeyBUdWlCdXR0b25Mb2FkaW5nLCBUdWlDaGVja2JveCwgVHVpRmllbGRFcnJvclBpcGUsIFR1aUZpbGVMaWtlLCBUdWlGaWxlcywgdHVpRmlsZXNBY2NlcHRlZCwgVHVpU29ydENvdW50cmllc1BpcGUgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUlucHV0TW9kdWxlLCBUdWlJbnB1dFBob25lTW9kdWxlLCBUdWlUZXh0YXJlYU1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGdldENvdW50cmllcyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IFJlY2FwdGNoYUNvbXBvbmVudCwgUmVjYXB0Y2hhRm9ybXNNb2R1bGUsIFJlY2FwdGNoYU1vZHVsZSB9IGZyb20gJ25nLXJlY2FwdGNoYS0yJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGRzJztcbmltcG9ydCB7IE1BWF9GSUxFU19JTl9GT1JNX0lOUFVUIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NjLW1heC1maWxlcy1pbi1mb3JtLWlucHV0JztcbmltcG9ydCB7IHBob25lVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9zYy1waG9uZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgU2NGZWVkYmFja0Zvcm1Db25maWcsIFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZmVlZGJhY2stZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBob25lTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBSZWNhcHRjaGFGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVjYXB0Y2hhTW9kdWxlLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBUdWlUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgVHVpQ2hlY2tib3gsXG4gICAgICAgIFR1aVRpdGxlLFxuICAgICAgICBUdWlGaWxlcyxcbiAgICAgICAgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwsXG4gICAgICAgIC4uLlR1aVRleHRmaWVsZCxcbiAgICAgICAgVHVpU29ydENvdW50cmllc1BpcGUsXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NGZWVkYmFja0Zvcm1Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dDogVHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQgfSAmIFNjRmVlZGJhY2tGb3JtQ29uZmlnPiB8IG51bGwgPSBpbmplY3Q8XG4gICAgICAgIFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBvbkNsaWNrT2ZmZXJIYW5kbGVyOiAoKSA9PiB2b2lkIH0gJiBTY0ZlZWRiYWNrRm9ybUNvbmZpZz5cbiAgICA+KFBPTFlNT1JQSEVVU19DT05URVhULCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1Zykg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIHB1YmxpYyByZWFkb25seSBzbHVnSW5wdXQ6IElucHV0U2lnbmFsPFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPj4gPSBpbnB1dDxUdWlMb29zZVVuaW9uPFNjRmVlZGJhY2tGb3Jtcz4+KCdjb21tb24nLCB7IGFsaWFzOiAnc2x1ZycgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QvtC70LXQuSwg0LTQvtGB0YLRg9C/0L3Ri9GFINCyINC00LDQvdC90L7QuSDRhNC+0YDQvNC1LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgcHVibGljIHJlYWRvbmx5IGZpZWxkc0lucHV0OiBJbnB1dFNpZ25hbDxTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdPiA9IGlucHV0PFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+KFsnbmFtZScsICdlbWFpbCcsICdwaG9uZScsICdtZXNzYWdlJywgJ2ZpbGVzJ10sIHsgYWxpYXM6ICdmaWVsZHMnIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1Zykg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2x1ZzogU2lnbmFsPFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbnRleHQ/LmRhdGEuc2x1ZyA/PyB0aGlzLnNsdWdJbnB1dCgpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQv9C+0LvQtdC5LCDQtNC+0YHRgtGD0L/QvdGL0YUg0LIg0LTQsNC90L3QvtC5INGE0L7RgNC80LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpZWxkczogU2lnbmFsPFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb250ZXh0Py5kYXRhLmZpZWxkcyA/PyB0aGlzLmZpZWxkc0lucHV0KCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LTQvtCz0L7QstC+0YDQsCDQvtGE0LXRgNGC0YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrT2ZmZXI6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INGD0YHQv9C10YjQvdC+0Lkg0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZW5kU3VjY2VzczogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlZWRiYWNrU2VydmljZTogU2NGZWVkYmFja1NlcnZpY2UgPSBpbmplY3QoU2NGZWVkYmFja1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyLCDQvtGC0L/RgNCw0LLQu9GP0LXQvNGL0YUg0LIg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1heEZpbGVzSW5Gb3JtOiBudW1iZXIgPSBpbmplY3QoTUFYX0ZJTEVTX0lOX0ZPUk1fSU5QVVQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LDQvdC90YvRhSDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNjVXNlclNlcnZpY2UpXG4gICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKCh1c2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXIuaXNHdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgncmVjYXB0Y2hhJywgdGhpcy5yZWNhcHRjaGFDb250cm9sKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgncmVjYXB0Y2hhJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZmllbGRzLmluY2x1ZGVzKCduYW1lJykgPyB1c2VyLm5hbWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGZpZWxkcy5pbmNsdWRlcygncGhvbmUnKSA/IHVzZXIuY29udGFjdHMucGhvbmUudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGZpZWxkcy5pbmNsdWRlcygnZW1haWwnKSA/IHVzZXIuY29udGFjdHMuZW1haWwudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J/QvtC70LUg0LLQstC+0LTQsCDQtNC70Y8gcmVjYXB0Y2hhLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZWNhcHRjaGFDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80YsgwqvQn9C+0LbQtdC70LDQvdC40Y8g0Lgg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQv9C+INGD0LvRg9GH0YjQtdC90LjRjiDRgdCw0LnRgtCwwrsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBtZXNzYWdlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIGZpbGVzOiBuZXcgRm9ybUNvbnRyb2w8U2NVcGxvYWRlZEZpbGVbXSB8IG51bGw+KFtdKSxcbiAgICAgICAgaXNTaG91bGRVc2VNZXNzZW5nZXI6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuIHwgbnVsbD4oZmFsc2UpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INGC0LjQv9C+0LIg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWdnZXN0aW9uVHlwZTogdHlwZW9mIFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L3QsCDQvtGC0L/RgNCw0LLQutGDINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5kZWZpbmVkIHwgbnVsbD4gPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvcm0udmFsaWQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlIGFzIFNjSUZlZWRiYWNrTWVzc2FnZSksXG4gICAgICAgIHRhcCgodmFsdWU6IFNjSUZlZWRiYWNrTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLnBob25lICYmICFTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUucGhvbmUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgZGVsZXRlIHZhbHVlLmlzU2hvdWxkVXNlTWVzc2VuZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuZmVlZGJhY2tTZXJ2aWNlLnNlbmRGZWVkYmFjayh0aGlzLnNsdWcoKSBhcyBTY0ZlZWRiYWNrRm9ybXMsIHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZSh2YWx1ZSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmVBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFN1Y2Nlc3MuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8taW1wbGljaXQtYW55LWNhdGNoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogW21lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXVzZWxlc3MtdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHVuZGVmaW5lZCkpO1xuXG4gICAgLyoqXG4gICAgICog0KPQv9GA0LDQstC70Y/QtdGCINGB0L7RgdGC0L7Rj9C90LjQtdC8INC30LDQs9GA0YPQttC10L3QvdGL0YUg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkZWRGaWxlOiBGb3JtQ29udHJvbDxUdWlGaWxlTGlrZVtdIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8VHVpRmlsZUxpa2VbXSB8IG51bGw+KFtdLCBbdGhpcy5tYXhGaWxlc0xlbmd0aCgpXSk7XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlLCDQutC+0YLQvtGA0YvQuSDQvtGC0YHQu9C10LbQuNCy0LDQtdGCLCDQv9GA0LjQvdGP0YLRiyDQu9C4INGE0LDQudC70Ysg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINGC0YDQtdCx0L7QstCw0L3QuNGP0LzQuCDQv9C+INGC0LjQv9GDINGA0LDQt9C80LXRgNGDINC4INGCLtC0LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhY2NlcHRlZCQ6IE9ic2VydmFibGU8RmlsZVtdPiA9IHRoaXMubG9hZGVkRmlsZS52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gdHVpRmlsZXNBY2NlcHRlZCh0aGlzLmxvYWRlZEZpbGUpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YTQsNC50LvQvtCyLCDQutC+0YLQvtGA0YvQtSDQsdGL0LvQuCDQvtGC0LrQu9C+0L3QtdC90Ysg0L/RgNC4INC30LDQs9GA0YPQt9C60LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlamVjdGVkOiByZWFkb25seSBGaWxlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJpZXM6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10gPSBnZXRDb3VudHJpZXMoKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NGZWVkYmFja0Zvcm1Db21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCt0YLQviDRgNC10YjQtdC90LjQtSDQvtGI0LjQsdC60LggIzQ5NDAsINCx0YvQu9C+IEBzZWUgW9C/0YDQtdC00LvQvtC20LXQvdC+XShodHRwczovL2dpdGh1Yi5jb20vRGV0aEFyaWVsL25nLXJlY2FwdGNoYS9pc3N1ZXMvMTIzI2lzc3VlY29tbWVudC00MjYxMTIxMDEpINCw0LLRgtC+0YDQvtC8IHtAbGluayBSZWNhcHRjaGFDb21wb25lbnR9LlxuICAgICAgICAgKi9cbiAgICAgICAgUmVjYXB0Y2hhQ29tcG9uZW50LnByb3RvdHlwZS5uZ09uRGVzdHJveSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXG4gICAgICAgICAgICBpZiAodGhpc1snc3Vic2NyaXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwsIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgICAgICB0aGlzWydzdWJzY3JpcHRpb24nXS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZCQsXG4gICAgICAgICAgICB0aGlzLnVzZXIkLFxuICAgICAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGVzLnJlc2V0KFtdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblVwbG9hZEZpbGUoZmlsZXMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIC8vINCS0LDQu9C40LTQsNGG0LjRjyDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGE0L7RgNC80YsuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbGxWYWxpZGF0b3JzKHRoaXMuZmllbGRzKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQstCw0LvQuNC00LDRhtC40Y4g0YHQviDQstGB0LXRhSDQv9C+0LvQtdC5INCy0LLQvtC00LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjbGVhckFsbFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbCAmJiBjb250cm9sICE9PSB0aGlzLnJlY2FwdGNoYUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstCw0LvQuNC00LDRhtC40Y4g0YHQviDQtNC70Y8g0YPQutCw0LfQsNC90L3Ri9GFINC/0L7Qu9C10Lkg0LLQstC+0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZHMg0J/QvtC70Y8sINC00LvRjyDQutC+0YLQvtGA0YvRhSDQvdGD0LbQvdC+INGD0YHRgtCw0L3QvtCy0LjRgtGMINCy0LDQu9C40LTQsNGG0LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbFZhbGlkYXRvcnMoZmllbGRzOiBTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdKTogdm9pZCB7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWxlZDogU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGUpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2VcbiAgICAgICAgICAgIHN3aXRjaCAoZmlsZWQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbmFtZScpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBob25lVmFsaWRhdG9yKCldKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdlbWFpbCcpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZXNzYWdlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsZXMnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlcycpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm1heEZpbGVzTGVuZ3RoKDUpXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0LDRgtGL0LLQsNC10YIg0L7RgtC60LvQvtC90LXQvdC90YvQtSDRhNCw0LnQu9GLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INCx0YvQu9C4INC+0YLQutC70L7QvdC10L3Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZWplY3QoZmlsZXM6IHJlYWRvbmx5IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMucmVqZWN0ZWQsIC4uLmZpbGVzXSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGE0LDQudC7INC40Lcg0YHQv9C40YHQutCwINC30LDQs9GA0YPQttC10L3QvdGL0YUg0Lgg0L7RgtC60LvQvtC90LXQvdC90YvRhSDRhNCw0LnQu9C+0LIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSDQpNCw0LnQuywg0LrQvtGC0L7RgNGL0Lkg0L3Rg9C20L3QviDRg9C00LDQu9C40YLRjC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZW1vdmUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gdGhpcy5yZWplY3RlZC5maWx0ZXIoKHJlamVjdGVkKSA9PiByZWplY3RlZCAhPT0gZmlsZSk7XG4gICAgICAgIHRoaXMubG9hZGVkRmlsZS5zZXRWYWx1ZSh0aGlzLmxvYWRlZEZpbGUudmFsdWU/LmZpbHRlcigoY3VycmVudCkgPT4gY3VycmVudCAhPT0gZmlsZSkgPz8gW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YfQuNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uUmVtb3ZlQWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gW107XG4gICAgICAgIHRoaXMubG9hZGVkRmlsZS5zZXRWYWx1ZShbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNCz0YDRg9C20LDQtdGCINGE0LDQudC7INCyINGE0L7RgNC80YMg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCd0LDQsdC+0YAg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25VcGxvYWRGaWxlKGZpbGVzOiBUdWlGaWxlTGlrZVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBmaWxlcz8uZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1iYXNlLXRvLXN0cmluZ1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZmlsZXMuc2V0VmFsdWUoWy4uLih0aGlzLmZvcm0uY29udHJvbHMuZmlsZXMudmFsdWUgPz8gW10pLCBuZXcgU2NVcGxvYWRlZEZpbGUoZmlsZS5uYW1lLCByZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUgYXMgdW5rbm93biBhcyBCbG9iKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsiDQt9Cw0LPRgNGD0LbQtdC90L3Ri9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC8LlxuICAgICAqXG4gICAgICogQHBhcmFtIG1heExlbmd0aCDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LTQvtC/0YPRgdGC0LjQvNC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyINC00LvRjyDQvtGC0L/RgNCw0LLQutC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgbWF4RmlsZXNMZW5ndGgobWF4TGVuZ3RoOiBudW1iZXIgPSB0aGlzLm1heEZpbGVzSW5Gb3JtKTogVmFsaWRhdG9yRm4ge1xuICAgICAgICByZXR1cm4gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sPFR1aUZpbGVMaWtlW10+KSA9PlxuICAgICAgICAgICAgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoID8geyBtYXhMZW5ndGg6IG5ldyBUdWlWYWxpZGF0aW9uRXJyb3IoYNCc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIgLSAke21heExlbmd0aH1gKSB9IDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0L/QvtC70L3Rj9C10YIg0L7Rh9C40YHRgtC60YMg0L/QvtC70LXQuSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoe1xuICAgICAgICAgICAgZW1haWw6IG51bGwsXG4gICAgICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgICAgICAgcGhvbmU6IG51bGwsXG4gICAgICAgICAgICBtZXNzYWdlOiBudWxsLFxuICAgICAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgICAgICAgaXNTaG91bGRVc2VNZXNzZW5nZXI6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIsINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCwg0LrQvtGC0L7RgNGL0Lkg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/RgNC+0LLQtdGA0LjRgtGMLlxuICAgICAqIEByZXR1cm5zINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDRh9GC0L4g0L3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC/0L7QtNGF0L7QtNC40YIg0LTQu9GPINC80LXRgdGB0LXQvdC00LbQtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBAdHVpUHVyZVxuICAgIHByb3RlY3RlZCBpc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gU2NQaG9uZVNlcnZpY2UuaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKHZhbHVlKTtcbiAgICB9XG59XG4iLCJAbGV0IGZpZWxkc0xpc3QgPSBmaWVsZHMoKTtcbjxmb3JtXG4gICAgKm5nSWY9XCJmaWVsZHNMaXN0Lmxlbmd0aCA+IDBcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiXG4+XG4gICAgPCEtLSDQpNCY0J4gLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnbmFtZScpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCk0JjQnlxuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj4g0KPQutCw0LbQuNGC0LUg0JLQsNGI0Lgg0KQu0Jgu0J4uIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0KLQtdC70LXRhNC+0L0gLS0+XG4gICAgQGlmIChmaWVsZHNMaXN0LmluY2x1ZGVzKCdwaG9uZScpKSB7XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCi0LXQu9C10YTQvtC9XG4gICAgICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICB0dWlJbnB1dFBob25lSW50ZXJuYXRpb25hbFxuICAgICAgICAgICAgICAgICAgICBbY291bnRyeVNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvdW50cmllc109XCIoY291bnRyaWVzIHwgdHVpU29ydENvdW50cmllcyB8IGFzeW5jKSB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnaXNTaG91bGRVc2VNZXNzZW5nZXInKSAmJiBmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlICYmIGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcihmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlKVwiXG4gICAgICAgICAgICB0dWlMYWJlbFxuICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc1Nob3VsZFVzZU1lc3NlbmdlclwiXG4gICAgICAgICAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIHR1aVRpdGxlPiDQndCw0L/QuNGB0LDRgtGMINCyINC80LXRgdGB0LXQvdC00LbQtdGA0LDRhSwg0LAg0L3QtSDQt9Cy0L7QvdC40YLRjCA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgfVxuICAgIDwhLS0g0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YsgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnZW1haWwnKVwiXG4gICAgICAgIHR1aUxhYmVsXG4gICAgPlxuICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCI+XG4gICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5lbWFpbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQmtC+0LzQvNC10L3RgtCw0YDQuNC5IC0tPlxuICAgIDxsYWJlbFxuICAgICAgICAqbmdJZj1cImZpZWxkc0xpc3QuaW5jbHVkZXMoJ21lc3NhZ2UnKVwiXG4gICAgICAgIHR1aUxhYmVsXG4gICAgPlxuICAgICAgICDQmtC+0LzQvNC10L3RgtCw0YDQuNC5XG4gICAgICAgIDx0dWktdGV4dGFyZWEgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiPiDQmtC+0LzQvNC10L3RgtCw0YDQuNC5IDwvdHVpLXRleHRhcmVhPlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDwhLS0g0KTQsNC50LvRiyAtLT5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnZmlsZXMnKVwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiXG4gICAgPlxuICAgICAgICA8bGFiZWwgdHVpSW5wdXRGaWxlcz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICN2YWxpZGF0b3I9XCJ0dWlJbnB1dEZpbGVzVmFsaWRhdG9yXCJcbiAgICAgICAgICAgICAgICBhY2NlcHQ9XCIuZG9jLC5kb2N4LC5wZGYsaW1hZ2UvKlwiXG4gICAgICAgICAgICAgICAgdHVpSW5wdXRGaWxlc1xuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJsb2FkZWRGaWxlXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKHJlamVjdCk9XCJvblJlamVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkZWRGaWxlLmludmFsaWRcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIlsnbWF4TGVuZ3RoJ10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxvYWRlZEZpbGVcIlxuICAgICAgICAvPlxuXG4gICAgICAgIEBsZXQgYWNjZXB0ZWQgPSBhY2NlcHRlZCQgfCBhc3luYztcbiAgICAgICAgPHR1aS1maWxlc1xuICAgICAgICAgICAgKm5nSWY9XCJhY2NlcHRlZD8ubGVuZ3RoIHx8IHJlamVjdGVkLmxlbmd0aFwiXG4gICAgICAgICAgICBjbGFzcz1cInR1aS1zcGFjZV90b3AtMVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGFjY2VwdGVkXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKGZpbGUpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8dHVpLWZpbGVcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiByZWplY3RlZFwiXG4gICAgICAgICAgICAgICAgc3RhdGU9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgW2ZpbGVdPVwiKGZpbGUgfCB0dWlGaWxlUmVqZWN0ZWQ6IHZhbGlkYXRvciB8IGFzeW5jKSB8fCBmaWxlXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKGZpbGUpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWZpbGVzPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSByZWNhcHRjaGEgLS0+XG4gICAgQGlmIChmb3JtLmdldCgncmVjYXB0Y2hhJykpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtYi0zIG1heC1oLTIwIG92ZXJmbG93LWhpZGRlbiBkdXJhdGlvbi01MDBcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnIW1heC1oLTAgIS1tLTInOiBmb3JtLmdldCgncmVjYXB0Y2hhJyk/LnZhbGlkIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8cmUtY2FwdGNoYSBmb3JtQ29udHJvbE5hbWU9XCJyZWNhcHRjaGFcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tINCt0LvQtdC80LXQvdGC0Ysg0YPQv9GA0LDQstC70LXQvdC40Y8gIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0L/RgNCw0LLQuNGC0YxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm93IGJhc2lzLTYwIHRleHQtYm9keS1zXCI+XG4gICAgICAgICAgICDQndCw0LbQuNC80LDRjyDQvdCwINC60L3QvtC/0LrRgywg0LLRiyDRgdC+0LPQu9Cw0YjQsNC10YLQtdGB0Ywg0YFcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dD8uZGF0YT8ub25DbGlja09mZmVySGFuZGxlcigpOyBjbGlja09mZmVyLmVtaXQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70LjRgtC40LrQvtC5INC60L7QvdGE0LjQtNC10L3RhtC40LDQu9GM0L3QvtGB0YLQuFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mZWVkYmFjay9mZWVkYmFjay1mb3JtL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUNILG1CQUFtQixFQUVuQixpQkFBaUIsRUFHakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBRWQsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFP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cy11c2UtdGhpcyxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0ZlZWRiYWNrRm9ybXMsXG4gICAgU2NGZWVkYmFja1NlcnZpY2UsXG4gICAgU2NJQXBpRXJyb3JSZXNwb25zZSxcbiAgICBTY0lGZWVkYmFja01lc3NhZ2UsXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NQaG9uZVNlcnZpY2UsXG4gICAgU2NVcGxvYWRlZEZpbGUsXG4gICAgU2NVc2VyLFxuICAgIFNjVXNlclNlcnZpY2UsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpTG9vc2VVbmlvbiwgdHVpUHVyZSwgVHVpVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aURpYWxvZ0NvbnRleHQsIFR1aUVycm9yLCBUdWlMYWJlbCwgVHVpTGluaywgVHVpVGV4dGZpZWxkLCBUdWlUaXRsZSB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsIH0gZnJvbSAnQHRhaWdhLXVpL2V4cGVyaW1lbnRhbCc7XG5pbXBvcnQgeyBUdWlDb3VudHJ5SXNvQ29kZSB9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUNoZWNrYm94LCBUdWlGaWVsZEVycm9yUGlwZSwgVHVpRmlsZUxpa2UsIFR1aUZpbGVzLCB0dWlGaWxlc0FjY2VwdGVkLCBUdWlTb3J0Q291bnRyaWVzUGlwZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpSW5wdXRNb2R1bGUsIFR1aUlucHV0UGhvbmVNb2R1bGUsIFR1aVRleHRhcmVhTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgZ2V0Q291bnRyaWVzIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IHsgUmVjYXB0Y2hhQ29tcG9uZW50LCBSZWNhcHRjaGFGb3Jtc01vZHVsZSwgUmVjYXB0Y2hhTW9kdWxlIH0gZnJvbSAnbmctcmVjYXB0Y2hhLTInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZHMnO1xuaW1wb3J0IHsgTUFYX0ZJTEVTX0lOX0ZPUk1fSU5QVVQgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtbWF4LWZpbGVzLWluLWZvcm0taW5wdXQnO1xuaW1wb3J0IHsgcGhvbmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3NjLXBob25lLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBTY0ZlZWRiYWNrRm9ybUNvbmZpZywgU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YTQvtGA0LzRiyDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1mZWVkYmFjay1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBUdWlFcnJvcixcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFNjRm9ybUZpZWxkc01vZHVsZSxcbiAgICAgICAgVHVpSW5wdXRNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFJlY2FwdGNoYUZvcm1zTW9kdWxlLFxuICAgICAgICBSZWNhcHRjaGFNb2R1bGUsXG4gICAgICAgIFR1aUxpbmssXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFR1aVRleHRhcmVhTW9kdWxlLFxuICAgICAgICBUdWlDaGVja2JveCxcbiAgICAgICAgVHVpVGl0bGUsXG4gICAgICAgIFR1aUZpbGVzLFxuICAgICAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCxcbiAgICAgICAgLi4uVHVpVGV4dGZpZWxkLFxuICAgICAgICBUdWlTb3J0Q291bnRyaWVzUGlwZSxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0ZlZWRiYWNrRm9ybUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PHZvaWQsIHsgb25DbGlja09mZmVySGFuZGxlcjogKCkgPT4gdm9pZCB9ICYgU2NGZWVkYmFja0Zvcm1Db25maWc+IHwgbnVsbCA9IGluamVjdDxcbiAgICAgICAgVHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQgfSAmIFNjRmVlZGJhY2tGb3JtQ29uZmlnPlxuICAgID4oUE9MWU1PUlBIRVVTX0NPTlRFWFQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgcHVibGljIHJlYWRvbmx5IHNsdWdJbnB1dDogSW5wdXRTaWduYWw8VHVpTG9vc2VVbmlvbjxTY0ZlZWRiYWNrRm9ybXM+PiA9IGlucHV0PFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPj4oJ2NvbW1vbicsIHsgYWxpYXM6ICdzbHVnJyB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQv9C+0LvQtdC5LCDQtNC+0YHRgtGD0L/QvdGL0YUg0LIg0LTQsNC90L3QvtC5INGE0L7RgNC80LUuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzSW5wdXQ6IElucHV0U2lnbmFsPFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+ID0gaW5wdXQ8U2NGZWVkYmFja0Zvcm1GaWVsZFR5cGVbXT4oWyduYW1lJywgJ2VtYWlsJywgJ3Bob25lJywgJ21lc3NhZ2UnLCAnZmlsZXMnXSwgeyBhbGlhczogJ2ZpZWxkcycgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzbHVnOiBTaWduYWw8VHVpTG9vc2VVbmlvbjxTY0ZlZWRiYWNrRm9ybXM+PiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29udGV4dD8uZGF0YS5zbHVnID8/IHRoaXMuc2x1Z0lucHV0KCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC/0L7Qu9C10LksINC00L7RgdGC0YPQv9C90YvRhSDQsiDQtNCw0L3QvdC+0Lkg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmllbGRzOiBTaWduYWw8U2NGZWVkYmFja0Zvcm1GaWVsZFR5cGVbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbnRleHQ/LmRhdGEuZmllbGRzID8/IHRoaXMuZmllbGRzSW5wdXQoKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQtNC+0LPQvtCy0L7RgNCwINC+0YTQtdGA0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tPZmZlcjogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0YPRgdC/0LXRiNC90L7QuSDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNlbmRTdWNjZXNzOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVlZGJhY2tTZXJ2aWNlOiBTY0ZlZWRiYWNrU2VydmljZSA9IGluamVjdChTY0ZlZWRiYWNrU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIsINC+0YLQv9GA0LDQstC70Y/QtdC80YvRhSDQsiDRhNC+0YDQvNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4RmlsZXNJbkZvcm06IG51bWJlciA9IGluamVjdChNQVhfRklMRVNfSU5fRk9STV9JTlBVVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQsNC90L3Ri9GFINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXIkOiBPYnNlcnZhYmxlPFNjVXNlcj4gPSBpbmplY3QoU2NVc2VyU2VydmljZSlcbiAgICAgICAgLmdldFVzZXJDaGFuZ2UkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodXNlci5pc0d1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5hZGRDb250cm9sKCdyZWNhcHRjaGEnLCB0aGlzLnJlY2FwdGNoYUNvbnRyb2wpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5yZW1vdmVDb250cm9sKCdyZWNhcHRjaGEnKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZHMuaW5jbHVkZXMoJ25hbWUnKSA/IHVzZXIubmFtZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogZmllbGRzLmluY2x1ZGVzKCdwaG9uZScpID8gdXNlci5jb250YWN0cy5waG9uZS52YWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogZmllbGRzLmluY2x1ZGVzKCdlbWFpbCcpID8gdXNlci5jb250YWN0cy5lbWFpbC52YWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQtSDQstCy0L7QtNCwINC00LvRjyByZWNhcHRjaGEuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlY2FwdGNoYUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9Cf0L7QttC10LvQsNC90LjRjyDQuCDQv9GA0LXQtNC70L7QttC10L3QuNGPINC/0L4g0YPQu9GD0YfRiNC10L3QuNGOINGB0LDQudGC0LDCuy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIHBob25lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIG1lc3NhZ2U6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgICAgZmlsZXM6IG5ldyBGb3JtQ29udHJvbDxTY1VwbG9hZGVkRmlsZVtdIHwgbnVsbD4oW10pLFxuICAgICAgICBpc1Nob3VsZFVzZU1lc3NlbmdlcjogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4gfCBudWxsPihmYWxzZSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQvdCwINC+0YLQv9GA0LDQstC60YMg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1ZXN0JDogT2JzZXJ2YWJsZTx1bmRlZmluZWQgfCBudWxsPiA9IHRoaXMub25TdWJtaXQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUgYXMgU2NJRmVlZGJhY2tNZXNzYWdlKSxcbiAgICAgICAgdGFwKCh2YWx1ZTogU2NJRmVlZGJhY2tNZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUucGhvbmUgJiYgIVNjUGhvbmVTZXJ2aWNlLmlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcih2YWx1ZS5waG9uZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgICAgICBkZWxldGUgdmFsdWUuaXNTaG91bGRVc2VNZXNzZW5nZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5mZWVkYmFja1NlcnZpY2Uuc2VuZEZlZWRiYWNrKHRoaXMuc2x1ZygpIGFzIFNjRmVlZGJhY2tGb3JtcywgdGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsUmVjdXJzaXZlKHZhbHVlKSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZUFsbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kU3VjY2Vzcy5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1pbXBsaWNpdC1hbnktY2F0Y2hcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgbWVzc2FnZSB9ID0gZXJyb3IuZXJyb3IgYXMgU2NJQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWRcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSk7XG5cbiAgICAvKipcbiAgICAgKiDQo9C/0YDQsNCy0LvRj9C10YIg0YHQvtGB0YLQvtGP0L3QuNC10Lwg0LfQsNCz0YDRg9C20LXQvdC90YvRhSDRhNCw0LnQu9C+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRlZEZpbGU6IEZvcm1Db250cm9sPFR1aUZpbGVMaWtlW10gfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxUdWlGaWxlTGlrZVtdIHwgbnVsbD4oW10sIFt0aGlzLm1heEZpbGVzTGVuZ3RoKCldKTtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUsINC60L7RgtC+0YDRi9C5INC+0YLRgdC70LXQttC40LLQsNC10YIsINC/0YDQuNC90Y/RgtGLINC70Lgg0YTQsNC50LvRiyDQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Lgg0YEg0YLRgNC10LHQvtCy0LDQvdC40Y/QvNC4INC/0L4g0YLQuNC/0YMg0YDQsNC30LzQtdGA0YMg0Lgg0YIu0LQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjY2VwdGVkJDogT2JzZXJ2YWJsZTxGaWxlW10+ID0gdGhpcy5sb2FkZWRGaWxlLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgoKSA9PiB0dWlGaWxlc0FjY2VwdGVkKHRoaXMubG9hZGVkRmlsZSkpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INCx0YvQu9C4INC+0YLQutC70L7QvdC10L3RiyDQv9GA0Lgg0LfQsNCz0YDRg9C30LrQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVqZWN0ZWQ6IHJlYWRvbmx5IEZpbGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YLRgNCw0L0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvdW50cmllczogcmVhZG9ubHkgVHVpQ291bnRyeUlzb0NvZGVbXSA9IGdldENvdW50cmllcygpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0ZlZWRiYWNrRm9ybUNvbXBvbmVudH0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKipcbiAgICAgICAgICog0K3RgtC+INGA0LXRiNC10L3QuNC1INC+0YjQuNCx0LrQuCAjNDk0MCwg0LHRi9C70L4gQHNlZSBb0L/RgNC10LTQu9C+0LbQtdC90L5dKGh0dHBzOi8vZ2l0aHViLmNvbS9EZXRoQXJpZWwvbmctcmVjYXB0Y2hhL2lzc3Vlcy8xMjMjaXNzdWVjb21tZW50LTQyNjExMjEwMSkg0LDQstGC0L7RgNC+0Lwge0BsaW5rIFJlY2FwdGNoYUNvbXBvbmVudH0uXG4gICAgICAgICAqL1xuICAgICAgICBSZWNhcHRjaGFDb21wb25lbnQucHJvdG90eXBlLm5nT25EZXN0cm95ID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgIGlmICh0aGlzWydzdWJzY3JpcHRpb24nXSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCwgQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvblxuICAgICAgICAgICAgICAgIHRoaXNbJ3N1YnNjcmlwdGlvbiddLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLmFjY2VwdGVkJCxcbiAgICAgICAgICAgIHRoaXMudXNlciQsXG4gICAgICAgICAgICB0aGlzLmxvYWRlZEZpbGUudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChmaWxlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZmlsZXMucmVzZXQoW10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkRmlsZShmaWxlcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgLy8g0JLQsNC70LjQtNCw0YbQuNGPINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YTQvtGA0LzRiy5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICB0aGlzLnNldEFsbFZhbGlkYXRvcnModGhpcy5maWVsZHMoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINCy0LDQu9C40LTQsNGG0LjRjiDRgdC+INCy0YHQtdGFINC/0L7Qu9C10Lkg0LLQstC+0LTQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNsZWFyQWxsVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XG5cbiAgICAgICAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wgIT09IHRoaXMucmVjYXB0Y2hhQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0LDQu9C40LTQsNGG0LjRjiDRgdC+INC00LvRjyDRg9C60LDQt9Cw0L3QvdGL0YUg0L/QvtC70LXQuSDQstCy0L7QtNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkcyDQn9C+0LvRjywg0LTQu9GPINC60L7RgtC+0YDRi9GFINC90YPQttC90L4g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LLQsNC70LjQtNCw0YbQuNGOLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0QWxsVmFsaWRhdG9ycyhmaWVsZHM6IFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10pOiB2b2lkIHtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpbGVkOiBTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZSkgPT4ge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlZmF1bHQtY2FzZVxuICAgICAgICAgICAgc3dpdGNoIChmaWxlZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCduYW1lJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgcGhvbmVWYWxpZGF0b3IoKV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2VtYWlsJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ21lc3NhZ2UnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdmaWxlcyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVzJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubWF4RmlsZXNMZW5ndGgoNSldKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDQvtGC0LrQu9C+0L3QtdC90L3Ri9C1INGE0LDQudC70YsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMg0KHQv9C40YHQvtC6INGE0LDQudC70L7Qsiwg0LrQvtGC0L7RgNGL0LUg0LHRi9C70Lgg0L7RgtC60LvQvtC90LXQvdGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblJlamVjdChmaWxlczogcmVhZG9ubHkgRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSBbLi4ubmV3IFNldChbLi4udGhpcy5yZWplY3RlZCwgLi4uZmlsZXNdKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0YTQsNC50Lsg0LjQtyDRgdC/0LjRgdC60LAg0LfQsNCz0YDRg9C20LXQvdC90YvRhSDQuCDQvtGC0LrQu9C+0L3QtdC90L3Ri9GFINGE0LDQudC70L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlINCk0LDQudC7LCDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INGD0LTQsNC70LjRgtGMLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblJlbW92ZShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSB0aGlzLnJlamVjdGVkLmZpbHRlcigocmVqZWN0ZWQpID0+IHJlamVjdGVkICE9PSBmaWxlKTtcbiAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnNldFZhbHVlKHRoaXMubG9hZGVkRmlsZS52YWx1ZT8uZmlsdGVyKChjdXJyZW50KSA9PiBjdXJyZW50ICE9PSBmaWxlKSA/PyBbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7Rh9C40YnQsNC10YIg0YHQv9C40YHQvtC6INGE0LDQudC70L7Qsi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZW1vdmVBbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSBbXTtcbiAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnNldFZhbHVlKFtdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LPRgNGD0LbQsNC10YIg0YTQsNC50Lsg0LIg0YTQvtGA0LzRgyDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMg0J3QsNCx0L7RgCDRhNCw0LnQu9C+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBvblVwbG9hZEZpbGUoZmlsZXM6IFR1aUZpbGVMaWtlW10gfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGZpbGVzPy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVhZGVyLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWJhc2UtdG8tc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maWxlcy5zZXRWYWx1ZShbLi4uKHRoaXMuZm9ybS5jb250cm9scy5maWxlcy52YWx1ZSA/PyBbXSksIG5ldyBTY1VwbG9hZGVkRmlsZShmaWxlLm5hbWUsIHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSBhcyB1bmtub3duIGFzIEJsb2IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyINC30LDQs9GA0YPQttC10L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWF4TGVuZ3RoINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQtNC+0L/Rg9GB0YLQuNC80L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIg0LTQu9GPINC+0YLQv9GA0LDQstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhGaWxlc0xlbmd0aChtYXhMZW5ndGg6IG51bWJlciA9IHRoaXMubWF4RmlsZXNJbkZvcm0pOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2w8VHVpRmlsZUxpa2VbXT4pID0+XG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGggPyB7IG1heExlbmd0aDogbmV3IFR1aVZhbGlkYXRpb25FcnJvcihg0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsiAtICR7bWF4TGVuZ3RofWApIH0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDQvtGH0LjRgdGC0LrRgyDQv9C+0LvQtdC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh7XG4gICAgICAgICAgICBlbWFpbDogbnVsbCxcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBwaG9uZTogbnVsbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICBmaWxlczogW10sXG4gICAgICAgICAgICBpc1Nob3VsZFVzZU1lc3NlbmdlcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YfRgtC+INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQv9C+0LTRhdC+0LTQuNGCINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQsiDQvNC10YHRgdC10L3QtNC20LXRgNCw0YUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwLCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQv9GA0L7QstC10YDQuNGC0YwuXG4gICAgICogQHJldHVybnMg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LzQtdGB0YHQtdC90LTQttC10YDQvtCyLlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHJvdGVjdGVkIGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUpO1xuICAgIH1cbn1cbiIsIkBsZXQgZmllbGRzTGlzdCA9IGZpZWxkcygpO1xuPGZvcm1cbiAgICAqbmdJZj1cImZpZWxkc0xpc3QubGVuZ3RoID4gMFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGdhcC00XCJcbj5cbiAgICA8IS0tINCk0JjQniAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCduYW1lJylcIlxuICAgICAgICB0dWlMYWJlbFxuICAgID5cbiAgICAgICAg0KTQmNCeXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPiDQo9C60LDQttC40YLQtSDQktCw0YjQuCDQpC7QmC7Qni4gPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQotC10LvQtdGE0L7QvSAtLT5cbiAgICBAaWYgKGZpZWxkc0xpc3QuaW5jbHVkZXMoJ3Bob25lJykpIHtcbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KLQtdC70LXRhNC+0L1cbiAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5U2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdpc1Nob3VsZFVzZU1lc3NlbmdlcicpICYmIGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgJiYgaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUpXCJcbiAgICAgICAgICAgIHR1aUxhYmVsXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzU2hvdWxkVXNlTWVzc2VuZ2VyXCJcbiAgICAgICAgICAgICAgICB0dWlDaGVja2JveFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gdHVpVGl0bGU+INCd0LDQv9C40YHQsNGC0Ywg0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLCDQsCDQvdC1INC30LLQvtC90LjRgtGMIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICB9XG4gICAgPCEtLSDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdlbWFpbCcpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIj5cbiAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8IS0tINCa0L7QvNC80LXQvdGC0LDRgNC40LkgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnbWVzc2FnZScpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCa0L7QvNC80LXQvdGC0LDRgNC40LlcbiAgICAgICAgPHR1aS10ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCI+INCa0L7QvNC80LXQvdGC0LDRgNC40LkgPC90dWktdGV4dGFyZWE+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQpNCw0LnQu9GLIC0tPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdmaWxlcycpXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCB0dWlJbnB1dEZpbGVzPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRvcj1cInR1aUlucHV0RmlsZXNWYWxpZGF0b3JcIlxuICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5kb2MsLmRvY3gsLnBkZixpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dEZpbGVzXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxvYWRlZEZpbGVcIlxuICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAocmVqZWN0KT1cIm9uUmVqZWN0KCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAqbmdJZj1cImxvYWRlZEZpbGUuaW52YWxpZFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiWydtYXhMZW5ndGgnXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibG9hZGVkRmlsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGxldCBhY2NlcHRlZCA9IGFjY2VwdGVkJCB8IGFzeW5jO1xuICAgICAgICA8dHVpLWZpbGVzXG4gICAgICAgICAgICAqbmdJZj1cImFjY2VwdGVkPy5sZW5ndGggfHwgcmVqZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHVpLXNwYWNlX3RvcC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHR1aS1maWxlXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgYWNjZXB0ZWRcIlxuICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIHJlamVjdGVkXCJcbiAgICAgICAgICAgICAgICBzdGF0ZT1cImVycm9yXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCIoZmlsZSB8IHR1aUZpbGVSZWplY3RlZDogdmFsaWRhdG9yIHwgYXN5bmMpIHx8IGZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktZmlsZXM+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIHJlY2FwdGNoYSAtLT5cbiAgICBAaWYgKGZvcm0uZ2V0KCdyZWNhcHRjaGEnKSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1iLTMgbWF4LWgtMjAgb3ZlcmZsb3ctaGlkZGVuIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICchbWF4LWgtMCAhLW0tMic6IGZvcm0uZ2V0KCdyZWNhcHRjaGEnKT8udmFsaWQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxyZS1jYXB0Y2hhIGZvcm1Db250cm9sTmFtZT1cInJlY2FwdGNoYVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0g0K3Qu9C10LzQtdC90YLRiyDRg9C/0YDQsNCy0LvQtdC90LjRjyAgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLnNlbmRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQv9GA0LDQstC40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3cgYmFzaXMtNjAgdGV4dC1ib2R5LXNcIj5cbiAgICAgICAgICAgINCd0LDQttC40LzQsNGPINC90LAg0LrQvdC+0L/QutGDLCDQstGLINGB0L7Qs9C70LDRiNCw0LXRgtC10YHRjCDRgVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0Py5kYXRhPy5vbkNsaWNrT2ZmZXJIYW5kbGVyKCk7IGNsaWNrT2ZmZXIuZW1pdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -156,11 +156,11 @@ export class ScSuggestionFieldComponent {
156
156
  return suggestion.rawData?.['state']?.status === 'LIQUIDATED';
157
157
  }
158
158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSuggestionFieldComponent, deps: [{ token: NgControl, skipSelf: true }, { token: i1.ScSuggestionService }], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: { type: "type" }, outputs: { selectedClick: "selectedClick" }, ngImport: i0, template: "<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n @let options = suggestions$ | async;\n <tui-data-list>\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n [disabled]=\"isDisabledSuggestion(option)\"\n class=\"flex-col !items-start\"\n >\n @let optionValue = $any(option);\n <ng-container>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ optionValue.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ optionValue.name }}\n <span class=\"ml-1 text-tui-text-02\">\u0438\u043D\u043D: {{ optionValue.inn }}</span>\n <span\n *ngIf=\"isOrgTerminated(optionValue)\"\n class=\"text-tui-negative\"\n >\n \u041B\u0438\u043A\u0432\u0438\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043E\n </span>\n </span>\n <span class=\"text-tui-text-02\">{{ optionValue?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ optionValue.name }}</span>\n <span class=\"text-tui-text-02\">{{ optionValue.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ optionValue.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ optionValue.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i3.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "component", type: i3.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: { type: "type" }, outputs: { selectedClick: "selectedClick" }, ngImport: i0, template: "<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n @let options = suggestions$ | async;\n <tui-data-list>\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n [disabled]=\"isDisabledSuggestion(option)\"\n class=\"flex-col !items-start\"\n >\n @let optionValue = $any(option);\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ optionValue.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ optionValue.name }}\n <span class=\"ml-1 text-tui-text-02\">\u0438\u043D\u043D: {{ optionValue.inn }}</span>\n <span\n *ngIf=\"isOrgTerminated(optionValue)\"\n class=\"text-tui-negative\"\n >\n \u041B\u0438\u043A\u0432\u0438\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043E\n </span>\n </span>\n <span class=\"text-tui-text-02\">{{ optionValue?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ optionValue.name }}</span>\n <span class=\"text-tui-text-02\">{{ optionValue.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ optionValue.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ optionValue.addressString }}</span>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i3.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "component", type: i3.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
160
160
  }
161
161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScSuggestionFieldComponent, decorators: [{
162
162
  type: Component,
163
- args: [{ selector: 'sc-suggestion-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n @let options = suggestions$ | async;\n <tui-data-list>\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n [disabled]=\"isDisabledSuggestion(option)\"\n class=\"flex-col !items-start\"\n >\n @let optionValue = $any(option);\n <ng-container>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ optionValue.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ optionValue.name }}\n <span class=\"ml-1 text-tui-text-02\">\u0438\u043D\u043D: {{ optionValue.inn }}</span>\n <span\n *ngIf=\"isOrgTerminated(optionValue)\"\n class=\"text-tui-negative\"\n >\n \u041B\u0438\u043A\u0432\u0438\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043E\n </span>\n </span>\n <span class=\"text-tui-text-02\">{{ optionValue?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ optionValue.name }}</span>\n <span class=\"text-tui-text-02\">{{ optionValue.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ optionValue.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ optionValue.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n" }]
163
+ args: [{ selector: 'sc-suggestion-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader\n size=\"m\"\n [overlay]=\"true\"\n [showLoader]=\"!!(loading$ | async)\"\n>\n @let options = suggestions$ | async;\n <tui-data-list>\n <button\n *ngFor=\"let option of options\"\n tuiOption\n (click)=\"onSelected(option)\"\n [disabled]=\"isDisabledSuggestion(option)\"\n class=\"flex-col !items-start\"\n >\n @let optionValue = $any(option);\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ optionValue.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ optionValue.name }}\n <span class=\"ml-1 text-tui-text-02\">\u0438\u043D\u043D: {{ optionValue.inn }}</span>\n <span\n *ngIf=\"isOrgTerminated(optionValue)\"\n class=\"text-tui-negative\"\n >\n \u041B\u0438\u043A\u0432\u0438\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u043E\n </span>\n </span>\n <span class=\"text-tui-text-02\">{{ optionValue?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ optionValue.name }}</span>\n <span class=\"text-tui-text-02\">{{ optionValue.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ optionValue.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ optionValue.addressString }}</span>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n" }]
164
164
  }], ctorParameters: () => [{ type: i4.NgControl, decorators: [{
165
165
  type: SkipSelf
166
166
  }, {
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
171
171
  }], selectedClick: [{
172
172
  type: Output
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3VnZ2VzdGlvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZm9ybS1maWVsZHMvc3VnZ2VzdGlvbi1maWVsZC9zYy1zdWdnZXN0aW9uLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mb3JtLWZpZWxkcy9zdWdnZXN0aW9uLWZpZWxkL3NjLXN1Z2dlc3Rpb24tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx5QkFBeUIsRUFBNkIsaUJBQWlCLEVBQXFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEosT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQUV4Rjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7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QyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO2dCQUNELE1BQU07WUFDVjtnQkFDSSxPQUFPLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsVUFBcUM7UUFDeEQsc0VBQXNFO1FBQ3RFLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sS0FBSyxZQUFZLENBQUM7SUFDbEUsQ0FBQzsrR0F2TFEsMEJBQTBCLGtCQXFEdkIsU0FBUzttR0FyRFosMEJBQTBCLGtJQ3JCdkMsbXpFQWdEQTs7NEZEM0JhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTTs7MEJBc0QxQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLFNBQVM7MkVBaERkLElBQUk7c0JBRFYsS0FBSztnQkFPQyxhQUFhO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU0NfTUlOX0xFTkdUSF9TRUFSQ0hfVEVSTSwgU2NJU3VnZ2VzdGlvbk9yZ2FuaXphdGlvbiwgU2NJU3VnZ2VzdGlvblR5cGUsIFNjU3VnZ2VzdGlvbiwgU2NTdWdnZXN0aW9uU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpQ29udHJvbFZhbHVlLCB0dWlJc0ZhbHN5LCB0dWlJc1ByZXNlbnQsIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFRVSV9EQVRBX0xJU1RfSE9TVCwgVHVpRGF0YUxpc3RIb3N0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcGlFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vYXV0aC9pbnRlcmZhY2VzL2FwaS1lcnJvci1yZXNwb25zZSc7XG5pbXBvcnQgeyBTQ19BTExPV19TRUxFQ1RfVEVSTUlOQVRFRCB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zYy1hbGxvdy1zZWxlY3QtdGVybWluYXRlZCc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC/0L7QtNGB0LrQsNC30L7QuiDQtNC70Y8g0L/QvtC70Y8g0LLQstC+0LTQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1zdWdnZXN0aW9uLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc3VnZ2VzdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU3VnZ2VzdGlvbkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQotC40L8g0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGU6IFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGUuZmlvO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LLRi9Cx0L7RgNCwINGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRDbGljazogRXZlbnRFbWl0dGVyPFNjU3VnZ2VzdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjU3VnZ2VzdGlvbj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHN1Z2dlc3Rpb25zJD86IE9ic2VydmFibGU8U2NTdWdnZXN0aW9uW10gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0YHRgtC+0Y/QvdC40LUg0LfQsNC/0YDQvtGB0LAg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkaW5nJD86IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvNC/0L7QvdC10L3RgiDQvtCx0ZHRgNGC0LrQsCDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IFR1aURhdGFMaXN0SG9zdDx1bmtub3duPiB8IG51bGwgPSBpbmplY3Q8VHVpRGF0YUxpc3RIb3N0PHVua25vd24+PihUVUlfREFUQV9MSVNUX0hPU1QsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNC40L3QuNC80LDQu9GM0L3QsNGPINC00LvQuNC90LAg0L/QvtC40YHQutC+0LLQvtCz0L4g0LfQsNC/0YDQvtGB0LAg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtaW5MZW5ndGhTZWFyY2hUZXJtOiBudW1iZXIgPSBpbmplY3QoU0NfTUlOX0xFTkdUSF9TRUFSQ0hfVEVSTSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGA0LDQt9GA0LXRiNC10L3QviDQstGL0LHQuNGA0LDRgtGMINC30LDQv9C40YHQuCDQu9C40LrQstC40LTQuNGA0L7QstCw0L3QvdGL0YUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbG93U2VsZWN0VGVybWluYXRlZDogYm9vbGVhbiA9IGluamVjdChTQ19BTExPV19TRUxFQ1RfVEVSTUlOQVRFRCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjU3VnZ2VzdGlvbkZpZWxkQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INC/0L7Qu9GPINCy0LLQvtC00LAuXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb25TZXJ2aWNlINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEgQVBJINC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBTa2lwU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3Rpb25TZXJ2aWNlOiBTY1N1Z2dlc3Rpb25TZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXF1ZXN0JCA9IHR1aUNvbnRyb2xWYWx1ZTxzdHJpbmcgfCBudWxsPih0aGlzLmNvbnRyb2wpLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgbWFwKCh0ZXJtKSA9PiB0ZXJtLnRyaW0oKSksXG4gICAgICAgICAgICBmaWx0ZXIoKHRlcm0pID0+IHRlcm0ubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoU2VhcmNoVGVybSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRlcm06IHN0cmluZykgPT4gdGhpcy5zdWdnZXN0aW9uU2VydmljZS5nZXREYXRhPFNjU3VnZ2VzdGlvbj4odGVybSwgdGhpcy50eXBlKS5waXBlKHN0YXJ0V2l0aChudWxsKSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUodGhpcy5jb250cm9sLmNvbnRyb2wpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlOiBbZXJyb3JSZXNwb25zZS5tZXNzYWdlIHx8ICfQntGI0LjQsdC60LAg0YHQtdGA0LLQtdGA0LA6INC/0L7QttCw0LvRg9C50YHRgtCwLCDQv9C10YDQtdC30LDQs9GA0YPQt9C40YLQtSDRgdGC0YDQsNC90LjRhtGDINC4L9C40LvQuCDQstGL0L/QvtC70L3QuNGC0LUg0LfQsNC/0YDQvtGBINC/0L7Qt9C20LUuJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG9mKFtdKSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zJCA9IHJlcXVlc3QkLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCksIHN0YXJ0V2l0aChudWxsKSk7XG4gICAgICAgIHRoaXMubG9hZGluZyQgPSByZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNC/0L7Qu9C90LXQvdC40LUg0L/QvtC70LXQuSDQvtGB0L3QvtCy0LUg0LLRi9Cx0YDQsNC90L3QvtC5INC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICovXG4gICAgcHVibGljIG9uU2VsZWN0ZWQoc3VnZ2VzdGlvbjogU2NTdWdnZXN0aW9uKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmZpbzpcbiAgICAgICAgICAgICAgICBpZiAoJ2ZpbycgaW4gc3VnZ2VzdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShzdWdnZXN0aW9uLmZpbywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUuYWRkcmVzczpcbiAgICAgICAgICAgICAgICBpZiAoJ2FkZHJlc3NTdHJpbmcnIGluIHN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoc3VnZ2VzdGlvbi5hZGRyZXNzU3RyaW5nLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTY0lTdWdnZXN0aW9uVHlwZS5iYW5rOlxuICAgICAgICAgICAgICAgIGlmICgnaW5uJyBpbiBzdWdnZXN0aW9uICYmICdiaWMnIGluIHN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udHJvbC5jb250cm9sPy5wYXJlbnQgYXMgRm9ybUdyb3VwKS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmtOYW1lOiBzdWdnZXN0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmljOiBzdWdnZXN0aW9uLmJpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogc3VnZ2VzdGlvbi5jb3JyZXNwb25kZW50QWNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uOlxuICAgICAgICAgICAgICAgIGlmICgnaW5uJyBpbiBzdWdnZXN0aW9uICYmICEoJ2JpYycgaW4gc3VnZ2VzdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udHJvbC5jb250cm9sPy5wYXJlbnQgYXMgRm9ybUdyb3VwKS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN1Z2dlc3Rpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm46IHN1Z2dlc3Rpb24uaW5uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtwcDogc3VnZ2VzdGlvbi5rcHAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2twbzogc3VnZ2VzdGlvbi5va3BvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yTmFtZTogc3VnZ2VzdGlvbi5kaXJlY3Rvck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JQb3NpdGlvbjogc3VnZ2VzdGlvbi5kaXJlY3RvclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FsQWRkcmVzczogc3VnZ2VzdGlvbi5sZWdhbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGFsQWRkcmVzczogc3VnZ2VzdGlvbi5wb3N0YWxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbEFkZHJlc3M6IHN1Z2dlc3Rpb24uYWN0dWFsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUuZW1haWw6XG4gICAgICAgICAgICAgICAgaWYgKCdlbWFpbCcgaW4gc3VnZ2VzdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShzdWdnZXN0aW9uLmVtYWlsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhvc3Q/LmhhbmRsZU9wdGlvbikge1xuICAgICAgICAgICAgLy8g0JTRkdGA0LPQsNC10Lwg0LLQvdGD0YLRgNC10L3QvdC40Lkg0L7QsdGA0LDQsdC+0YLRh9C40Log0LLRi9Cx0L7RgNCwINGN0LvQtdC80LXQvdGC0LAg0LLRi9C/0LDQtNCw0Y7RidC10LPQviDRgdC/0LjRgdC60LAg0LTQu9GPINGA0LXRiNC10L3QuNGPINC/0YDQvtCx0LvQtdC80Ysg0LfQsNC60YDRi9GC0LjRjyDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsCDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICAgICAgICB0aGlzLmhvc3QuaGFuZGxlT3B0aW9uKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZENsaWNrLmVtaXQoc3VnZ2VzdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDRjdC70LXQvNC10L3RgiDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsCDQv9C+0LTRgdC60LDQt9C+0Log0L7RgtC60LvRjtGH0ZHQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICovXG4gICAgcHVibGljIGlzRGlzYWJsZWRTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFNjU3VnZ2VzdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTY0lTdWdnZXN0aW9uVHlwZS5maW86XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmFkZHJlc3M6XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmJhbms6XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmVtYWlsOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uOlxuICAgICAgICAgICAgICAgIGlmICgnaW5uJyBpbiBzdWdnZXN0aW9uICYmICEoJ2JpYycgaW4gc3VnZ2VzdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmFsbG93U2VsZWN0VGVybWluYXRlZCAmJiB0aGlzLmlzT3JnVGVybWluYXRlZChzdWdnZXN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0L/RgNC10LrRgNCw0YnQtdC90LAg0LvQuCDQtNC10Y/RgtC10LvRjNC90L7RgdGC0Ywg0YPQutCw0LfQsNC90L3QvtC5INC+0YDQs9Cw0L3QuNC30LDRhtC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3VnZ2VzdGlvbiDQntCx0YrQtdC60YIg0L/QvtC00YHQutCw0LfQutC4INC/0L4g0L7RgNCz0LDQvdC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNPcmdUZXJtaW5hdGVkKHN1Z2dlc3Rpb246IFNjSVN1Z2dlc3Rpb25Pcmdhbml6YXRpb24pOiBib29sZWFuIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICByZXR1cm4gc3VnZ2VzdGlvbi5yYXdEYXRhPy5bJ3N0YXRlJ10/LnN0YXR1cyA9PT0gJ0xJUVVJREFURUQnO1xuICAgIH1cbn1cbiIsIjx0dWktbG9hZGVyXG4gICAgc2l6ZT1cIm1cIlxuICAgIFtvdmVybGF5XT1cInRydWVcIlxuICAgIFtzaG93TG9hZGVyXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbj5cbiAgICBAbGV0IG9wdGlvbnMgPSBzdWdnZXN0aW9ucyQgfCBhc3luYztcbiAgICA8dHVpLWRhdGEtbGlzdD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFN1Z2dlc3Rpb24ob3B0aW9uKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtY29sICFpdGVtcy1zdGFydFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBsZXQgb3B0aW9uVmFsdWUgPSAkYW55KG9wdGlvbik7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic3VnZ2VzdGlvblR5cGUuZmlvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHVpLWxpbmtcIj57eyBvcHRpb25WYWx1ZS5maW8gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzdWdnZXN0aW9uVHlwZS5vcmdhbml6YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktbGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvblZhbHVlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTEgdGV4dC10dWktdGV4dC0wMlwiPtC40L3QvToge3sgb3B0aW9uVmFsdWUuaW5uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNPcmdUZXJtaW5hdGVkKG9wdGlvblZhbHVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10dWktbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0JvQuNC60LLQuNC00LjRgNC+0LLQsNC90L5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHVpLXRleHQtMDJcIj57eyBvcHRpb25WYWx1ZT8ubGVnYWxBZGRyZXNzIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic3VnZ2VzdGlvblR5cGUuYmFua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXR1aS1saW5rXCI+e3sgb3B0aW9uVmFsdWUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktdGV4dC0wMlwiPnt7IG9wdGlvblZhbHVlLmJpYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHVpLWxpbmtcIj57eyBvcHRpb25WYWx1ZS5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInN1Z2dlc3Rpb25UeXBlLmFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktbGlua1wiPnt7IG9wdGlvblZhbHVlLmFkZHJlc3NTdHJpbmcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWRhdGEtbGlzdD5cbjwvdHVpLWxvYWRlcj5cbiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc3VnZ2VzdGlvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZm9ybS1maWVsZHMvc3VnZ2VzdGlvbi1maWVsZC9zYy1zdWdnZXN0aW9uLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mb3JtLWZpZWxkcy9zdWdnZXN0aW9uLWZpZWxkL3NjLXN1Z2dlc3Rpb24tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx5QkFBeUIsRUFBa0QsaUJBQWlCLEVBQXFDLE1BQU0sd0JBQXdCLENBQUM7QUFDekssT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEgsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQUV4Rjs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7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QyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO2dCQUNELE1BQU07WUFDVjtnQkFDSSxPQUFPLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsVUFBcUM7UUFDeEQsc0VBQXNFO1FBQ3RFLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sS0FBSyxZQUFZLENBQUM7SUFDbEUsQ0FBQzsrR0F2TFEsMEJBQTBCLGtCQXFEdkIsU0FBUzttR0FyRFosMEJBQTBCLGtJQ3BCdkMsMG9FQThDQTs7NEZEMUJhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDSSxxQkFBcUIsbUJBRWQsdUJBQXVCLENBQUMsTUFBTTs7MEJBc0QxQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLFNBQVM7MkVBaERkLElBQUk7c0JBRFYsS0FBSztnQkFPQyxhQUFhO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU0NfTUlOX0xFTkdUSF9TRUFSQ0hfVEVSTSwgU2NJQXBpRXJyb3JSZXNwb25zZSwgU2NJU3VnZ2VzdGlvbk9yZ2FuaXphdGlvbiwgU2NJU3VnZ2VzdGlvblR5cGUsIFNjU3VnZ2VzdGlvbiwgU2NTdWdnZXN0aW9uU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpQ29udHJvbFZhbHVlLCB0dWlJc0ZhbHN5LCB0dWlJc1ByZXNlbnQsIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFRVSV9EQVRBX0xJU1RfSE9TVCwgVHVpRGF0YUxpc3RIb3N0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTQ19BTExPV19TRUxFQ1RfVEVSTUlOQVRFRCB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zYy1hbGxvdy1zZWxlY3QtdGVybWluYXRlZCc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC/0L7QtNGB0LrQsNC30L7QuiDQtNC70Y8g0L/QvtC70Y8g0LLQstC+0LTQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1zdWdnZXN0aW9uLWZpZWxkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc3VnZ2VzdGlvbi1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU3VnZ2VzdGlvbkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQotC40L8g0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR5cGU6IFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGUuZmlvO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LLRi9Cx0L7RgNCwINGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRDbGljazogRXZlbnRFbWl0dGVyPFNjU3VnZ2VzdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjU3VnZ2VzdGlvbj4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHN1Z2dlc3Rpb25zJD86IE9ic2VydmFibGU8U2NTdWdnZXN0aW9uW10gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0YHRgtC+0Y/QvdC40LUg0LfQsNC/0YDQvtGB0LAg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkaW5nJD86IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqINCa0L7QvNC/0L7QvdC10L3RgiDQvtCx0ZHRgNGC0LrQsCDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhvc3Q6IFR1aURhdGFMaXN0SG9zdDx1bmtub3duPiB8IG51bGwgPSBpbmplY3Q8VHVpRGF0YUxpc3RIb3N0PHVua25vd24+PihUVUlfREFUQV9MSVNUX0hPU1QsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNC40L3QuNC80LDQu9GM0L3QsNGPINC00LvQuNC90LAg0L/QvtC40YHQutC+0LLQvtCz0L4g0LfQsNC/0YDQvtGB0LAg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtaW5MZW5ndGhTZWFyY2hUZXJtOiBudW1iZXIgPSBpbmplY3QoU0NfTUlOX0xFTkdUSF9TRUFSQ0hfVEVSTSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INGA0LDQt9GA0LXRiNC10L3QviDQstGL0LHQuNGA0LDRgtGMINC30LDQv9C40YHQuCDQu9C40LrQstC40LTQuNGA0L7QstCw0L3QvdGL0YUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbG93U2VsZWN0VGVybWluYXRlZDogYm9vbGVhbiA9IGluamVjdChTQ19BTExPV19TRUxFQ1RfVEVSTUlOQVRFRCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjU3VnZ2VzdGlvbkZpZWxkQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb250cm9sINCa0L7QvdGC0YDQvtC7INC/0L7Qu9GPINCy0LLQvtC00LAuXG4gICAgICogQHBhcmFtIHN1Z2dlc3Rpb25TZXJ2aWNlINCh0LXRgNCy0LjRgSDRgNCw0LHQvtGC0Ysg0YEgQVBJINC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBTa2lwU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3Rpb25TZXJ2aWNlOiBTY1N1Z2dlc3Rpb25TZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXF1ZXN0JCA9IHR1aUNvbnRyb2xWYWx1ZTxzdHJpbmcgfCBudWxsPih0aGlzLmNvbnRyb2wpLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgbWFwKCh0ZXJtKSA9PiB0ZXJtLnRyaW0oKSksXG4gICAgICAgICAgICBmaWx0ZXIoKHRlcm0pID0+IHRlcm0ubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoU2VhcmNoVGVybSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRlcm06IHN0cmluZykgPT4gdGhpcy5zdWdnZXN0aW9uU2VydmljZS5nZXREYXRhPFNjU3VnZ2VzdGlvbj4odGVybSwgdGhpcy50eXBlKS5waXBlKHN0YXJ0V2l0aChudWxsKSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgU2NJQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aU1hcmtDb250cm9sQXNUb3VjaGVkQW5kVmFsaWRhdGUodGhpcy5jb250cm9sLmNvbnRyb2wpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlOiBbZXJyb3JSZXNwb25zZS5tZXNzYWdlIHx8ICfQntGI0LjQsdC60LAg0YHQtdGA0LLQtdGA0LA6INC/0L7QttCw0LvRg9C50YHRgtCwLCDQv9C10YDQtdC30LDQs9GA0YPQt9C40YLQtSDRgdGC0YDQsNC90LjRhtGDINC4L9C40LvQuCDQstGL0L/QvtC70L3QuNGC0LUg0LfQsNC/0YDQvtGBINC/0L7Qt9C20LUuJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG9mKFtdKSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zJCA9IHJlcXVlc3QkLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCksIHN0YXJ0V2l0aChudWxsKSk7XG4gICAgICAgIHRoaXMubG9hZGluZyQgPSByZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNC/0L7Qu9C90LXQvdC40LUg0L/QvtC70LXQuSDQvtGB0L3QvtCy0LUg0LLRi9Cx0YDQsNC90L3QvtC5INC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICovXG4gICAgcHVibGljIG9uU2VsZWN0ZWQoc3VnZ2VzdGlvbjogU2NTdWdnZXN0aW9uKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmZpbzpcbiAgICAgICAgICAgICAgICBpZiAoJ2ZpbycgaW4gc3VnZ2VzdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShzdWdnZXN0aW9uLmZpbywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUuYWRkcmVzczpcbiAgICAgICAgICAgICAgICBpZiAoJ2FkZHJlc3NTdHJpbmcnIGluIHN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoc3VnZ2VzdGlvbi5hZGRyZXNzU3RyaW5nLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTY0lTdWdnZXN0aW9uVHlwZS5iYW5rOlxuICAgICAgICAgICAgICAgIGlmICgnaW5uJyBpbiBzdWdnZXN0aW9uICYmICdiaWMnIGluIHN1Z2dlc3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udHJvbC5jb250cm9sPy5wYXJlbnQgYXMgRm9ybUdyb3VwKS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmtOYW1lOiBzdWdnZXN0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmljOiBzdWdnZXN0aW9uLmJpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogc3VnZ2VzdGlvbi5jb3JyZXNwb25kZW50QWNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uOlxuICAgICAgICAgICAgICAgIGlmICgnaW5uJyBpbiBzdWdnZXN0aW9uICYmICEoJ2JpYycgaW4gc3VnZ2VzdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY29udHJvbC5jb250cm9sPy5wYXJlbnQgYXMgRm9ybUdyb3VwKS5wYXRjaFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHN1Z2dlc3Rpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm46IHN1Z2dlc3Rpb24uaW5uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtwcDogc3VnZ2VzdGlvbi5rcHAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2twbzogc3VnZ2VzdGlvbi5va3BvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yTmFtZTogc3VnZ2VzdGlvbi5kaXJlY3Rvck5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JQb3NpdGlvbjogc3VnZ2VzdGlvbi5kaXJlY3RvclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FsQWRkcmVzczogc3VnZ2VzdGlvbi5sZWdhbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGFsQWRkcmVzczogc3VnZ2VzdGlvbi5wb3N0YWxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbEFkZHJlc3M6IHN1Z2dlc3Rpb24uYWN0dWFsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUuZW1haWw6XG4gICAgICAgICAgICAgICAgaWYgKCdlbWFpbCcgaW4gc3VnZ2VzdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShzdWdnZXN0aW9uLmVtYWlsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhvc3Q/LmhhbmRsZU9wdGlvbikge1xuICAgICAgICAgICAgLy8g0JTRkdGA0LPQsNC10Lwg0LLQvdGD0YLRgNC10L3QvdC40Lkg0L7QsdGA0LDQsdC+0YLRh9C40Log0LLRi9Cx0L7RgNCwINGN0LvQtdC80LXQvdGC0LAg0LLRi9C/0LDQtNCw0Y7RidC10LPQviDRgdC/0LjRgdC60LAg0LTQu9GPINGA0LXRiNC10L3QuNGPINC/0YDQvtCx0LvQtdC80Ysg0LfQsNC60YDRi9GC0LjRjyDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsCDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICAgICAgICB0aGlzLmhvc3QuaGFuZGxlT3B0aW9uKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZENsaWNrLmVtaXQoc3VnZ2VzdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/RgNC40LfQvdCw0LosINGH0YLQviDRjdC70LXQvNC10L3RgiDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsCDQv9C+0LTRgdC60LDQt9C+0Log0L7RgtC60LvRjtGH0ZHQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdWdnZXN0aW9uINCe0LHRitC10LrRgiDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICovXG4gICAgcHVibGljIGlzRGlzYWJsZWRTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFNjU3VnZ2VzdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTY0lTdWdnZXN0aW9uVHlwZS5maW86XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmFkZHJlc3M6XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmJhbms6XG4gICAgICAgICAgICBjYXNlIFNjSVN1Z2dlc3Rpb25UeXBlLmVtYWlsOlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGNhc2UgU2NJU3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uOlxuICAgICAgICAgICAgICAgIGlmICgnaW5uJyBpbiBzdWdnZXN0aW9uICYmICEoJ2JpYycgaW4gc3VnZ2VzdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmFsbG93U2VsZWN0VGVybWluYXRlZCAmJiB0aGlzLmlzT3JnVGVybWluYXRlZChzdWdnZXN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0L/RgNC10LrRgNCw0YnQtdC90LAg0LvQuCDQtNC10Y/RgtC10LvRjNC90L7RgdGC0Ywg0YPQutCw0LfQsNC90L3QvtC5INC+0YDQs9Cw0L3QuNC30LDRhtC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3VnZ2VzdGlvbiDQntCx0YrQtdC60YIg0L/QvtC00YHQutCw0LfQutC4INC/0L4g0L7RgNCz0LDQvdC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNPcmdUZXJtaW5hdGVkKHN1Z2dlc3Rpb246IFNjSVN1Z2dlc3Rpb25Pcmdhbml6YXRpb24pOiBib29sZWFuIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICByZXR1cm4gc3VnZ2VzdGlvbi5yYXdEYXRhPy5bJ3N0YXRlJ10/LnN0YXR1cyA9PT0gJ0xJUVVJREFURUQnO1xuICAgIH1cbn1cbiIsIjx0dWktbG9hZGVyXG4gICAgc2l6ZT1cIm1cIlxuICAgIFtvdmVybGF5XT1cInRydWVcIlxuICAgIFtzaG93TG9hZGVyXT1cIiEhKGxvYWRpbmckIHwgYXN5bmMpXCJcbj5cbiAgICBAbGV0IG9wdGlvbnMgPSBzdWdnZXN0aW9ucyQgfCBhc3luYztcbiAgICA8dHVpLWRhdGEtbGlzdD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWQob3B0aW9uKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFN1Z2dlc3Rpb24ob3B0aW9uKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXgtY29sICFpdGVtcy1zdGFydFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBsZXQgb3B0aW9uVmFsdWUgPSAkYW55KG9wdGlvbik7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwic3VnZ2VzdGlvblR5cGUuZmlvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktbGlua1wiPnt7IG9wdGlvblZhbHVlLmZpbyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzdWdnZXN0aW9uVHlwZS5vcmdhbml6YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXR1aS1saW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25WYWx1ZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTEgdGV4dC10dWktdGV4dC0wMlwiPtC40L3QvToge3sgb3B0aW9uVmFsdWUuaW5uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3JnVGVybWluYXRlZChvcHRpb25WYWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10dWktbmVnYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgINCb0LjQutCy0LjQtNC40YDQvtCy0LDQvdC+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXR1aS10ZXh0LTAyXCI+e3sgb3B0aW9uVmFsdWU/LmxlZ2FsQWRkcmVzcyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzdWdnZXN0aW9uVHlwZS5iYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktbGlua1wiPnt7IG9wdGlvblZhbHVlLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktdGV4dC0wMlwiPnt7IG9wdGlvblZhbHVlLmJpYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzdWdnZXN0aW9uVHlwZS5lbWFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHVpLWxpbmtcIj57eyBvcHRpb25WYWx1ZS5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJzdWdnZXN0aW9uVHlwZS5hZGRyZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktbGlua1wiPnt7IG9wdGlvblZhbHVlLmFkZHJlc3NTdHJpbmcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC90dWktZGF0YS1saXN0PlxuPC90dWktbG9hZGVyPlxuIl19
@@ -0,0 +1,117 @@
1
+ import { ChangeDetectionStrategy, Component, DestroyRef, inject, model, output } from '@angular/core';
2
+ import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
3
+ import { ActivatedRoute, Router, RouterLink } from '@angular/router';
4
+ import { SC_ORDER_LOADER, ScOrderDraftsService, scOrderIsLoaded, ScRouteKeys, ScSeoService } from '@snabcentr/client-core';
5
+ import { TuiButton, TuiDialogService, TuiIcons } from '@taiga-ui/core';
6
+ import { TUI_CONFIRM } from '@taiga-ui/kit';
7
+ import { distinctUntilChanged, filter, map, noop, switchMap } from 'rxjs';
8
+ import { ScOrderItemsListByDirectionsComponent } from '../order-items-list-by-directions/sc-order-items-list-by-directions.component';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Компонент страницы черновика заказа (аналог корзины для одного черновика).
12
+ */
13
+ export class ScDraftComponent {
14
+ constructor() {
15
+ /**
16
+ * Сервис маршрутизации.
17
+ */
18
+ this.router = inject(Router);
19
+ /**
20
+ * Сервис предоставляющий доступ к данным о маршруте.
21
+ */
22
+ this.route = inject(ActivatedRoute);
23
+ /**
24
+ * Сервис для работы с черновиками заказов.
25
+ */
26
+ this.draftsService = inject(ScOrderDraftsService);
27
+ /**
28
+ * Сигнал с данными текущего черновика заказа (из параметра offerId в URL).
29
+ */
30
+ this.draft = model(null);
31
+ /**
32
+ * Идентификаторы выбранных позиций.
33
+ */
34
+ this.selectedItemsIds = model([]);
35
+ /**
36
+ * Источник события удаления или отмены заказа.
37
+ */
38
+ this.deleteEvent = output();
39
+ /**
40
+ * Сервис для работы с диалоговыми окнами.
41
+ */
42
+ this.dialogService = inject(TuiDialogService);
43
+ /**
44
+ * Текущий ключ маршрута.
45
+ */
46
+ this.isDraftPage = toSignal(this.route.data.pipe(map((data) => data['routes_key'] === ScRouteKeys.draft), distinctUntilChanged()), { initialValue: false });
47
+ /**
48
+ * Ссылка для автоматического управления уничтожением зависимостей.
49
+ */
50
+ this.destroyRef = inject(DestroyRef);
51
+ /**
52
+ * Сервис установки SEO-данных приложения.
53
+ */
54
+ this.seoService = inject(ScSeoService);
55
+ }
56
+ /** @inheritDoc */
57
+ ngOnInit() {
58
+ if (!this.draft()) {
59
+ this.draftsService
60
+ .get$(Number.parseInt(this.route.snapshot.paramMap.get('offerId') ?? '', 10))
61
+ .pipe(filter(scOrderIsLoaded), takeUntilDestroyed(this.destroyRef))
62
+ .subscribe((draft) => {
63
+ this.draft.set(draft);
64
+ this.seoService.setByDefaultAsNoIndexed('Черновики заказов');
65
+ });
66
+ }
67
+ }
68
+ /**
69
+ * Переход к оформлению заказа по выбранному направлению продаж.
70
+ *
71
+ * @param direction Группа позиций по направлению продаж.
72
+ */
73
+ goToNewOrder(direction) {
74
+ const ids = this.selectedItemsIds().filter((id) => direction.items.some((item) => item.id === id));
75
+ this.router.navigate(['orders', 'new', this.draft()?.id, direction.direction.id, 'draft'], { queryParams: { itemsIds: ids } }).catch(noop);
76
+ }
77
+ /**
78
+ * Удаляет черновик и перенаправляет к списку черновиков.
79
+ */
80
+ clearDraft() {
81
+ const { id } = this.draft() ?? {};
82
+ if (!id) {
83
+ return;
84
+ }
85
+ this.dialogService
86
+ .open(TUI_CONFIRM, {
87
+ label: `Удалить черновик №${id}?`,
88
+ data: {
89
+ content: `Это действие удалит черновик №${id}.`,
90
+ yes: 'Да, удалить',
91
+ no: 'Нет, оставить',
92
+ },
93
+ })
94
+ .pipe(filter(Boolean), switchMap(() => this.draftsService.delete$(id)), takeUntilDestroyed(this.destroyRef))
95
+ .subscribe(() => {
96
+ this.deleteEvent.emit();
97
+ this.router.navigate(['/drafts']).catch(noop);
98
+ });
99
+ }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScDraftComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScDraftComponent, isStandalone: true, selector: "sc-draft", inputs: { draft: { classPropertyName: "draft", publicName: "draft", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsIds: { classPropertyName: "selectedItemsIds", publicName: "selectedItemsIds", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { draft: "draftChange", selectedItemsIds: "selectedItemsIdsChange", deleteEvent: "deleteEvent" }, providers: [
102
+ {
103
+ provide: SC_ORDER_LOADER,
104
+ useExisting: ScOrderDraftsService,
105
+ },
106
+ ], ngImport: i0, template: "@let items = draft()?.products;\n\n@if (items) {\n <div class=\"flex flex-col gap-12\">\n <div class=\"flex flex-col gap-5\">\n @if (items.length) {\n <sc-order-items-list-by-directions\n [items]=\"items\"\n [editable]=\"isDraftPage()\"\n [selectable]=\"true\"\n [continueButtonText]=\"'\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u0437\u0430\u043A\u0430\u0437'\"\n (selectedItemsIdsChange)=\"selectedItemsIds.set($event)\"\n (continueClick)=\"goToNewOrder($event)\"\n >\n <div\n footerActions\n class=\"flex gap-2\"\n >\n <a\n tuiButton\n appearance=\"secondary\"\n iconStart=\"@tui.shopping-cart\"\n routerLink=\"/catalog\"\n class=\"self-center\"\n >\n \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\n </a>\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"clearDraft()\"\n iconStart=\"@tui.trash-2\"\n >\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\n </button>\n </div>\n </sc-order-items-list-by-directions>\n } @else {\n <p class=\"text-base font-bold\">\u0427\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u043F\u0443\u0441\u0442.</p>\n <div\n footerActions\n class=\"flex gap-2\"\n >\n <a\n tuiButton\n appearance=\"secondary\"\n iconStart=\"@tui.shopping-cart\"\n routerLink=\"/catalog\"\n class=\"self-center\"\n >\n \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\n </a>\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"clearDraft()\"\n iconStart=\"@tui.trash-2\"\n >\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\n </button>\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"flex flex-col gap-12\">\n <div class=\"flex flex-col gap-5\">\n @for (item of [1, 2, 3, 4]; track item) {\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n }\n <div class=\"flex gap-2\">\n <div class=\"tui-skeleton h-10 w-40 rounded-md\"></div>\n <div class=\"tui-skeleton h-10 w-36 rounded-md\"></div>\n </div>\n </div>\n </div>\n}\n", dependencies: [{ kind: "component", type: ScOrderItemsListByDirectionsComponent, selector: "sc-order-items-list-by-directions", inputs: ["items", "selectable", "editable", "showContinueButton", "continueButtonText", "selectedItemsIds"], outputs: ["continueClick", "selectedItemsIdsChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
107
+ }
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScDraftComponent, decorators: [{
109
+ type: Component,
110
+ args: [{ standalone: true, selector: 'sc-draft', imports: [ScOrderItemsListByDirectionsComponent, RouterLink, TuiButton, TuiIcons], providers: [
111
+ {
112
+ provide: SC_ORDER_LOADER,
113
+ useExisting: ScOrderDraftsService,
114
+ },
115
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let items = draft()?.products;\n\n@if (items) {\n <div class=\"flex flex-col gap-12\">\n <div class=\"flex flex-col gap-5\">\n @if (items.length) {\n <sc-order-items-list-by-directions\n [items]=\"items\"\n [editable]=\"isDraftPage()\"\n [selectable]=\"true\"\n [continueButtonText]=\"'\u041E\u0444\u043E\u0440\u043C\u0438\u0442\u044C \u0437\u0430\u043A\u0430\u0437'\"\n (selectedItemsIdsChange)=\"selectedItemsIds.set($event)\"\n (continueClick)=\"goToNewOrder($event)\"\n >\n <div\n footerActions\n class=\"flex gap-2\"\n >\n <a\n tuiButton\n appearance=\"secondary\"\n iconStart=\"@tui.shopping-cart\"\n routerLink=\"/catalog\"\n class=\"self-center\"\n >\n \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\n </a>\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"clearDraft()\"\n iconStart=\"@tui.trash-2\"\n >\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\n </button>\n </div>\n </sc-order-items-list-by-directions>\n } @else {\n <p class=\"text-base font-bold\">\u0427\u0435\u0440\u043D\u043E\u0432\u0438\u043A \u043F\u0443\u0441\u0442.</p>\n <div\n footerActions\n class=\"flex gap-2\"\n >\n <a\n tuiButton\n appearance=\"secondary\"\n iconStart=\"@tui.shopping-cart\"\n routerLink=\"/catalog\"\n class=\"self-center\"\n >\n \u041F\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043A\u0430\u0442\u0430\u043B\u043E\u0433\n </a>\n <button\n tuiButton\n appearance=\"secondary\"\n (click)=\"clearDraft()\"\n iconStart=\"@tui.trash-2\"\n >\n \u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0447\u0435\u0440\u043D\u043E\u0432\u0438\u043A\n </button>\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"flex flex-col gap-12\">\n <div class=\"flex flex-col gap-5\">\n @for (item of [1, 2, 3, 4]; track item) {\n <div class=\"tui-skeleton flex h-[8.25rem] w-full overflow-hidden rounded-xl\"></div>\n }\n <div class=\"flex gap-2\">\n <div class=\"tui-skeleton h-10 w-40 rounded-md\"></div>\n <div class=\"tui-skeleton h-10 w-36 rounded-md\"></div>\n </div>\n </div>\n </div>\n}\n" }]
116
+ }] });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZHJhZnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL2RyYWZ0L3NjLWRyYWZ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9kcmFmdC9zYy1kcmFmdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBZ0Isb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQzs7QUFFdEk7O0dBRUc7QUFjSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYjdCO1FBY0k7O1dBRUc7UUFDYyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpDOztXQUVHO1FBQ2MsVUFBSyxHQUFtQixNQUFNLENBQUMsY0FB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Z0JBQy9DLEdBQUcsRUFBRSxhQUFhO2dCQUNsQixFQUFFLEVBQUUsZUFBZTthQUN0QjtTQUNKLENBQUM7YUFDRCxJQUFJLENBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUMvQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3RDO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBN0dRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLCtiQVJkO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFdBQVcsRUFBRSxvQkFBb0I7YUFDcEM7U0FDSiwwQkN4QkwsZzFHQTZFQSw0Q0QzRGMscUNBQXFDLGlQQUFFLFVBQVUsb09BQUUsU0FBUzs7NEZBUzdELGdCQUFnQjtrQkFiNUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sVUFBVSxXQUVYLENBQUMscUNBQXFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsYUFDdEU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFdBQVcsRUFBRSxvQkFBb0I7eUJBQ3BDO3FCQUNKLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBtb2RlbCwgT25Jbml0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNDX09SREVSX0xPQURFUiwgU2NPcmRlckRyYWZ0LCBTY09yZGVyRHJhZnRzU2VydmljZSwgc2NPcmRlcklzTG9hZGVkLCBTY1JvdXRlS2V5cywgU2NTZW9TZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aURpYWxvZ1NlcnZpY2UsIFR1aUljb25zIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVFVJX0NPTkZJUk0gfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgbm9vcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjT3JkZXJJdGVtc0J5RGlyZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3NjLWktY2FydC1pdGVtcy1ieS1kaXJlY3Rpb24nO1xuaW1wb3J0IHsgU2NPcmRlckl0ZW1zTGlzdEJ5RGlyZWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL29yZGVyLWl0ZW1zLWxpc3QtYnktZGlyZWN0aW9ucy9zYy1vcmRlci1pdGVtcy1saXN0LWJ5LWRpcmVjdGlvbnMuY29tcG9uZW50JztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YHRgtGA0LDQvdC40YbRiyDRh9C10YDQvdC+0LLQuNC60LAg0LfQsNC60LDQt9CwICjQsNC90LDQu9C+0LMg0LrQvtGA0LfQuNC90Ysg0LTQu9GPINC+0LTQvdC+0LPQviDRh9C10YDQvdC+0LLQuNC60LApLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZHJhZnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1kcmFmdC5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1NjT3JkZXJJdGVtc0xpc3RCeURpcmVjdGlvbnNDb21wb25lbnQsIFJvdXRlckxpbmssIFR1aUJ1dHRvbiwgVHVpSWNvbnNdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBTQ19PUkRFUl9MT0FERVIsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2NPcmRlckRyYWZ0c1NlcnZpY2UsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NEcmFmdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC80LDRgNGI0YDRg9GC0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YnQuNC5INC00L7RgdGC0YPQvyDQuiDQtNCw0L3QvdGL0Lwg0L4g0LzQsNGA0YjRgNGD0YLQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDRh9C10YDQvdC+0LLQuNC60LDQvNC4INC30LDQutCw0LfQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRzU2VydmljZSA9IGluamVjdChTY09yZGVyRHJhZnRzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0YEg0LTQsNC90L3Ri9C80Lgg0YLQtdC60YPRidC10LPQviDRh9C10YDQvdC+0LLQuNC60LAg0LfQsNC60LDQt9CwICjQuNC3INC/0LDRgNCw0LzQtdGC0YDQsCBvZmZlcklkINCyIFVSTCkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRyYWZ0ID0gbW9kZWw8U2NPcmRlckRyYWZ0IHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGLINCy0YvQsdGA0LDQvdC90YvRhSDQv9C+0LfQuNGG0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRJdGVtc0lkcyA9IG1vZGVsPHN0cmluZ1tdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNGB0YLQvtGH0L3QuNC6INGB0L7QsdGL0YLQuNGPINGD0LTQsNC70LXQvdC40Y8g0LjQu9C4INC+0YLQvNC10L3RiyDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZUV2ZW50ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQtNC40LDQu9C+0LPQvtCy0YvQvNC4INC+0LrQvdCw0LzQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3Q8VHVpRGlhbG9nU2VydmljZT4oVHVpRGlhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQotC10LrRg9GJ0LjQuSDQutC70Y7RhyDQvNCw0YDRiNGA0YPRgtCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0RyYWZ0UGFnZSA9IHRvU2lnbmFsKFxuICAgICAgICB0aGlzLnJvdXRlLmRhdGEucGlwZShcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4gKGRhdGFbJ3JvdXRlc19rZXknXSBhcyBTY1JvdXRlS2V5cykgPT09IFNjUm91dGVLZXlzLmRyYWZ0KSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICAgICAgKSxcbiAgICAgICAgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH1cbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC00LvRjyDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQvtCz0L4g0YPQv9GA0LDQstC70LXQvdC40Y8g0YPQvdC40YfRgtC+0LbQtdC90LjQtdC8INC30LDQstC40YHQuNC80L7RgdGC0LXQuS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YPRgdGC0LDQvdC+0LLQutC4IFNFTy3QtNCw0L3QvdGL0YUg0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZW9TZXJ2aWNlOiBTY1Nlb1NlcnZpY2UgPSBpbmplY3QoU2NTZW9TZXJ2aWNlKTtcblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyYWZ0KCkpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZnRzU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXQkKE51bWJlci5wYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnb2ZmZXJJZCcpID8/ICcnLCAxMCkpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHNjT3JkZXJJc0xvYWRlZCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRyYWZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhZnQuc2V0KGRyYWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW9TZXJ2aWNlLnNldEJ5RGVmYXVsdEFzTm9JbmRleGVkKCfQp9C10YDQvdC+0LLQuNC60Lgg0LfQsNC60LDQt9C+0LInKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YXQvtC0INC6INC+0YTQvtGA0LzQu9C10L3QuNGOINC30LDQutCw0LfQsCDQv9C+INCy0YvQsdGA0LDQvdC90L7QvNGDINC90LDQv9GA0LDQstC70LXQvdC40Y4g0L/RgNC+0LTQsNC2LlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbiDQk9GA0YPQv9C/0LAg0L/QvtC30LjRhtC40Lkg0L/QviDQvdCw0L/RgNCw0LLQu9C10L3QuNGOINC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ29Ub05ld09yZGVyKGRpcmVjdGlvbjogU2NPcmRlckl0ZW1zQnlEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5zZWxlY3RlZEl0ZW1zSWRzKCkuZmlsdGVyKChpZCkgPT4gZGlyZWN0aW9uLml0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKSk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydvcmRlcnMnLCAnbmV3JywgdGhpcy5kcmFmdCgpPy5pZCwgZGlyZWN0aW9uLmRpcmVjdGlvbi5pZCwgJ2RyYWZ0J10sIHsgcXVlcnlQYXJhbXM6IHsgaXRlbXNJZHM6IGlkcyB9IH0pLmNhdGNoKG5vb3ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGH0LXRgNC90L7QstC40Log0Lgg0L/QtdGA0LXQvdCw0L/RgNCw0LLQu9GP0LXRgiDQuiDRgdC/0LjRgdC60YMg0YfQtdGA0L3QvtCy0LjQutC+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsZWFyRHJhZnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMuZHJhZnQoKSA/PyB7fTtcblxuICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2VcbiAgICAgICAgICAgIC5vcGVuPGJvb2xlYW4+KFRVSV9DT05GSVJNLCB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGDQo9C00LDQu9C40YLRjCDRh9C10YDQvdC+0LLQuNC6IOKEliR7aWR9P2AsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBg0K3RgtC+INC00LXQudGB0YLQstC40LUg0YPQtNCw0LvQuNGCINGH0LXRgNC90L7QstC40Log4oSWJHtpZH0uYCxcbiAgICAgICAgICAgICAgICAgICAgeWVzOiAn0JTQsCwg0YPQtNCw0LvQuNGC0YwnLFxuICAgICAgICAgICAgICAgICAgICBubzogJ9Cd0LXRgiwg0L7RgdGC0LDQstC40YLRjCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZHJhZnRzU2VydmljZS5kZWxldGUkKGlkKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlRXZlbnQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2RyYWZ0cyddKS5jYXRjaChub29wKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIkBsZXQgaXRlbXMgPSBkcmFmdCgpPy5wcm9kdWN0cztcblxuQGlmIChpdGVtcykge1xuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNVwiPlxuICAgICAgICAgICAgQGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8c2Mtb3JkZXItaXRlbXMtbGlzdC1ieS1kaXJlY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJpc0RyYWZ0UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250aW51ZUJ1dHRvblRleHRdPVwiJ9Ce0YTQvtGA0LzQuNGC0Ywg0LfQsNC60LDQtydcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtc0lkc0NoYW5nZSk9XCJzZWxlY3RlZEl0ZW1zSWRzLnNldCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNvbnRpbnVlQ2xpY2spPVwiZ29Ub05ld09yZGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGdhcC0yXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNob3BwaW5nLWNhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvY2F0YWxvZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg0J/QtdGA0LXQudGC0Lgg0LIg0LrQsNGC0LDQu9C+0LNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEcmFmdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnRyYXNoLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgINCj0LTQsNC70LjRgtGMINGH0LXRgNC90L7QstC40LpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3NjLW9yZGVyLWl0ZW1zLWxpc3QtYnktZGlyZWN0aW9ucz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZFwiPtCn0LXRgNC90L7QstC40Log0L/Rg9GB0YIuPC9wPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgZm9vdGVyQWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZ2FwLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNob3BwaW5nLWNhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluaz1cIi9jYXRhbG9nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICDQn9C10YDQtdC50YLQuCDQsiDQutCw0YLQsNC70L7Qs1xuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJEcmFmdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkudHJhc2gtMlwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgINCj0LTQsNC70LjRgtGMINGH0LXRgNC90L7QstC40LpcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01XCI+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIFsxLCAyLCAzLCA0XTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gZmxleCBoLVs4LjI1cmVtXSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGxcIj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR1aS1za2VsZXRvbiBoLTEwIHctNDAgcm91bmRlZC1tZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gaC0xMCB3LTM2IHJvdW5kZWQtbWRcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
@@ -1,4 +1,9 @@
1
- export * from './order-item-mobile/sc-order-item-mobile.component';
1
+ export * from './models/sc-i-cart-items-by-direction';
2
+ export * from './order-item/sc-order-item.component';
3
+ export * from './order-items-list/sc-order-items-list.component';
4
+ export * from './order-items-list-by-directions/sc-order-items-list-by-directions.component';
5
+ export * from './order-items-list-by-stock/sc-order-items-list-by-stock.component';
6
+ export * from './draft/sc-draft.component';
2
7
  export * from './sc-payment-status/sc-payment-status.component';
3
8
  export * from './sc-order.module';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29yZGVyLWl0ZW0tbW9iaWxlL3NjLW9yZGVyLWl0ZW0tbW9iaWxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLXBheW1lbnQtc3RhdHVzL3NjLXBheW1lbnQtc3RhdHVzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLW9yZGVyLm1vZHVsZSc7XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvb3JkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw4RUFBOEUsQ0FBQztBQUM3RixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvc2MtaS1jYXJ0LWl0ZW1zLWJ5LWRpcmVjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL29yZGVyLWl0ZW0vc2Mtb3JkZXItaXRlbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9vcmRlci1pdGVtcy1saXN0L3NjLW9yZGVyLWl0ZW1zLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXItaXRlbXMtbGlzdC1ieS1kaXJlY3Rpb25zL3NjLW9yZGVyLWl0ZW1zLWxpc3QtYnktZGlyZWN0aW9ucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9vcmRlci1pdGVtcy1saXN0LWJ5LXN0b2NrL3NjLW9yZGVyLWl0ZW1zLWxpc3QtYnktc3RvY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZnQvc2MtZHJhZnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2MtcGF5bWVudC1zdGF0dXMvc2MtcGF5bWVudC1zdGF0dXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2Mtb3JkZXIubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Группа позиций заказа по направлению продаж.
3
+ */
4
+ export class ScOrderItemsByDirection {
5
+ /**
6
+ * @param direction Направление продаж.
7
+ * @param allItems Все элементы заказа.
8
+ */
9
+ constructor(direction, allItems) {
10
+ this.direction = direction;
11
+ this.items = allItems.filter((item) => item.salesDirection === direction.id);
12
+ }
13
+ /**
14
+ * Получает список позиций заказа по идентификаторам.
15
+ *
16
+ * @param itemsIds Идентификаторы позиций.
17
+ */
18
+ getItemsByIds(itemsIds) {
19
+ return this.items.filter((item) => itemsIds.includes(item.id));
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtaS1jYXJ0LWl0ZW1zLWJ5LWRpcmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9tb2RlbHMvc2MtaS1jYXJ0LWl0ZW1zLWJ5LWRpcmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFXaEM7OztPQUdHO0lBQ0gsWUFBWSxTQUE0QixFQUFFLFFBQWdDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxhQUFhLENBQUMsUUFBa0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY0lTYWxlc0RpcmVjdGlvbiwgU2NPcmRlckl0ZW0gfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcblxuLyoqXG4gKiDQk9GA0YPQv9C/0LAg0L/QvtC30LjRhtC40Lkg0LfQsNC60LDQt9CwINC/0L4g0L3QsNC/0YDQsNCy0LvQtdC90LjRjiDQv9GA0L7QtNCw0LYuXG4gKi9cbmV4cG9ydCBjbGFzcyBTY09yZGVySXRlbXNCeURpcmVjdGlvbiB7XG4gICAgLyoqXG4gICAgICog0J3QsNC/0YDQsNCy0LvQtdC90LjQtSDQv9GA0L7QtNCw0LYg0LjQu9C4IHVuZGVmaW5lZCDQtNC70Y8g0L/QvtC30LjRhtC40Lkg0LHQtdC3INC90LDQv9GA0LDQstC70LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGRpcmVjdGlvbjogU2NJU2FsZXNEaXJlY3Rpb247XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QvtC30LjRhtC40Lkg0LfQsNC60LDQt9CwINCyINC00LDQvdC90L7QuSDQs9GA0YPQv9C/0LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGl0ZW1zOiBTY09yZGVySXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRpcmVjdGlvbiDQndCw0L/RgNCw0LLQu9C10L3QuNC1INC/0YDQvtC00LDQti5cbiAgICAgKiBAcGFyYW0gYWxsSXRlbXMg0JLRgdC1INGN0LvQtdC80LXQvdGC0Ysg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRpcmVjdGlvbjogU2NJU2FsZXNEaXJlY3Rpb24sIGFsbEl0ZW1zOiByZWFkb25seSBTY09yZGVySXRlbVtdKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLml0ZW1zID0gYWxsSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNhbGVzRGlyZWN0aW9uID09PSBkaXJlY3Rpb24uaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9GD0YfQsNC10YIg0YHQv9C40YHQvtC6INC/0L7Qt9C40YbQuNC5INC30LDQutCw0LfQsCDQv9C+INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0LDQvC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtc0lkcyDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGLINC/0L7Qt9C40YbQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJdGVtc0J5SWRzKGl0ZW1zSWRzOiBzdHJpbmdbXSk6IFNjT3JkZXJJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW1zSWRzLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgICB9XG59XG4iXX0=