@snabcentr/client-ui 4.4.3 → 5.0.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.
- package/fesm2022/snabcentr-client-ui.mjs +3730 -3948
 - package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
 - package/index.d.ts +4466 -3
 - package/package.json +1 -3
 - package/release_notes.tmp +1 -10
 - package/styles/tailwind/tailwind.scss +5 -177
 - package/accordion/index.d.ts +0 -3
 - package/accordion/sc-accordion-content.directive.d.ts +0 -9
 - package/accordion/sc-accordion.component.d.ts +0 -56
 - package/accordion/sc-accordion.module.d.ts +0 -15
 - package/auth/enums/auth-method.d.ts +0 -13
 - package/auth/index.d.ts +0 -8
 - package/auth/interfaces/api-error-response.d.ts +0 -13
 - package/auth/interfaces/index.d.ts +0 -3
 - package/auth/interfaces/sc-bank-account-form-group.d.ts +0 -11
 - package/auth/interfaces/sc-contact-form-group.d.ts +0 -10
 - package/auth/sc-auth.module.d.ts +0 -26
 - package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +0 -39
 - package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +0 -41
 - package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +0 -53
 - package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +0 -106
 - package/auth/sign-up-form/sc-sign-up-form.component.d.ts +0 -161
 - package/banner/index.d.ts +0 -2
 - package/banner/sc-banner.component.d.ts +0 -88
 - package/banner/sc-banner.module.d.ts +0 -18
 - package/brands-list/index.d.ts +0 -2
 - package/brands-list/sc-brands-list.component.d.ts +0 -15
 - package/brands-list/sc-brands-list.module.d.ts +0 -12
 - package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +0 -102
 - package/cart/add-or-editing-cart-item-dialog/index.d.ts +0 -2
 - package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +0 -48
 - package/cart/cart-item/sc-cart-item.component.d.ts +0 -25
 - package/cart/index.d.ts +0 -3
 - package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +0 -62
 - package/catalog/category-card/sc-category-card.component.d.ts +0 -76
 - package/catalog/cost-with-discount/cost-with-discount.component.d.ts +0 -23
 - package/catalog/download-price-list/sc-download-price-list.component.d.ts +0 -38
 - package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +0 -48
 - package/catalog/index.d.ts +0 -12
 - package/catalog/input-quantity/sc-input-quantity.component.d.ts +0 -82
 - package/catalog/notify-when-in-stock-dialog/index.d.ts +0 -2
 - package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +0 -90
 - package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +0 -22
 - package/catalog/price-card/sc-price-card.component.d.ts +0 -18
 - package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +0 -10
 - package/catalog/price-history/sc-price-history.component.d.ts +0 -88
 - package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +0 -40
 - package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +0 -47
 - package/catalog/sc-catalog.module.d.ts +0 -29
 - package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +0 -25
 - package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +0 -49
 - package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +0 -23
 - package/contacts/index.d.ts +0 -7
 - package/contacts/manager-card/sc-manager-card.component.d.ts +0 -22
 - package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +0 -18
 - package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +0 -28
 - package/contacts/sc-contacts.module.d.ts +0 -28
 - package/contacts/tokens/index.d.ts +0 -2
 - package/contacts/tokens/sc-manager-qr-handler.token.d.ts +0 -6
 - package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +0 -5
 - package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +0 -49
 - package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +0 -161
 - package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +0 -62
 - package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +0 -49
 - package/contragents/index.d.ts +0 -7
 - package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +0 -64
 - package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +0 -125
 - package/contragents/sc-contragents.module.d.ts +0 -27
 - package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -141
 - package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +0 -50
 - package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +0 -49
 - package/delivery-address/index.d.ts +0 -4
 - package/delivery-address/sc-delivery-address.module.d.ts +0 -26
 - package/dialogs/index.d.ts +0 -1
 - package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +0 -42
 - package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +0 -136
 - package/directives/index.d.ts +0 -7
 - package/directives/links/index.d.ts +0 -4
 - package/directives/links/sc-email-link.directive.d.ts +0 -25
 - package/directives/links/sc-link-location.d.ts +0 -5
 - package/directives/links/sc-links.d.ts +0 -7
 - package/directives/links/sc-tel-link.directive.d.ts +0 -40
 - package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +0 -18
 - package/directives/next-input-focus/sc-next-input-focus.module.d.ts +0 -10
 - package/directives/sc-date-value-transformer.directive.d.ts +0 -8
 - package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +0 -14
 - package/directives/terminal-link/sc-terminal-link.directive.d.ts +0 -34
 - package/error-handler/consts/error-change-handler.providers.d.ts +0 -5
 - package/error-handler/error-block-status/error-block-status.component.d.ts +0 -37
 - package/error-handler/index.d.ts +0 -4
 - package/error-handler/interfaces/i-block-error.d.ts +0 -17
 - package/error-handler/sc-error-handler.component.d.ts +0 -40
 - package/esm2022/accordion/index.mjs +0 -4
 - package/esm2022/accordion/sc-accordion-content.directive.mjs +0 -17
 - package/esm2022/accordion/sc-accordion.component.mjs +0 -92
 - package/esm2022/accordion/sc-accordion.module.mjs +0 -26
 - package/esm2022/auth/enums/auth-method.mjs +0 -15
 - package/esm2022/auth/index.mjs +0 -9
 - package/esm2022/auth/interfaces/api-error-response.mjs +0 -2
 - package/esm2022/auth/interfaces/index.mjs +0 -4
 - package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +0 -2
 - package/esm2022/auth/interfaces/sc-contact-form-group.mjs +0 -2
 - package/esm2022/auth/sc-auth.module.mjs +0 -99
 - package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -87
 - package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -86
 - package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -89
 - package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +0 -187
 - package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +0 -333
 - package/esm2022/banner/index.mjs +0 -3
 - package/esm2022/banner/sc-banner.component.mjs +0 -143
 - package/esm2022/banner/sc-banner.module.mjs +0 -30
 - package/esm2022/brands-list/index.mjs +0 -3
 - package/esm2022/brands-list/sc-brands-list.component.mjs +0 -24
 - package/esm2022/brands-list/sc-brands-list.module.mjs +0 -22
 - package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +0 -233
 - package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +0 -3
 - package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +0 -74
 - package/esm2022/cart/cart-item/sc-cart-item.component.mjs +0 -74
 - package/esm2022/cart/index.mjs +0 -4
 - package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +0 -110
 - package/esm2022/catalog/category-card/sc-category-card.component.mjs +0 -102
 - package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +0 -38
 - package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +0 -56
 - package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +0 -76
 - package/esm2022/catalog/index.mjs +0 -13
 - package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +0 -177
 - package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +0 -3
 - package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +0 -173
 - package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +0 -35
 - package/esm2022/catalog/price-card/sc-price-card.component.mjs +0 -52
 - package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +0 -56
 - package/esm2022/catalog/price-history/sc-price-history.component.mjs +0 -140
 - package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -65
 - package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +0 -54
 - package/esm2022/catalog/sc-catalog.module.mjs +0 -125
 - package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +0 -42
 - package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -91
 - package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -38
 - package/esm2022/contacts/index.mjs +0 -8
 - package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +0 -58
 - package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +0 -28
 - package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -37
 - package/esm2022/contacts/sc-contacts.module.mjs +0 -92
 - package/esm2022/contacts/tokens/index.mjs +0 -3
 - package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +0 -24
 - package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +0 -7
 - package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -81
 - package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -278
 - package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -75
 - package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +0 -69
 - package/esm2022/contragents/index.mjs +0 -8
 - package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -72
 - package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -242
 - package/esm2022/contragents/sc-contragents.module.mjs +0 -118
 - package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -250
 - package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +0 -60
 - package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +0 -69
 - package/esm2022/delivery-address/index.mjs +0 -5
 - package/esm2022/delivery-address/sc-delivery-address.module.mjs +0 -99
 - package/esm2022/dialogs/index.mjs +0 -2
 - package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +0 -68
 - package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +0 -170
 - package/esm2022/directives/index.mjs +0 -8
 - package/esm2022/directives/links/index.mjs +0 -5
 - package/esm2022/directives/links/sc-email-link.directive.mjs +0 -49
 - package/esm2022/directives/links/sc-link-location.mjs +0 -2
 - package/esm2022/directives/links/sc-links.mjs +0 -8
 - package/esm2022/directives/links/sc-tel-link.directive.mjs +0 -79
 - package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +0 -43
 - package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +0 -19
 - package/esm2022/directives/sc-date-value-transformer.directive.mjs +0 -30
 - package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +0 -31
 - package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +0 -69
 - package/esm2022/error-handler/consts/error-change-handler.providers.mjs +0 -8
 - package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +0 -76
 - package/esm2022/error-handler/index.mjs +0 -5
 - package/esm2022/error-handler/interfaces/i-block-error.mjs +0 -2
 - package/esm2022/error-handler/sc-error-handler.component.mjs +0 -58
 - package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +0 -344
 - package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +0 -32
 - package/esm2022/feedback/index.mjs +0 -4
 - package/esm2022/feedback/interfaces/index.mjs +0 -2
 - package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +0 -2
 - package/esm2022/files/directives/index.mjs +0 -3
 - package/esm2022/files/directives/tree-top.directive.mjs +0 -63
 - package/esm2022/files/directives/tree.directive.mjs +0 -47
 - package/esm2022/files/file-tree-item/file-tree-item.component.mjs +0 -18
 - package/esm2022/files/files-and-documents/files-and-documents.component.mjs +0 -61
 - package/esm2022/files/files-and-documents.module.mjs +0 -28
 - package/esm2022/files/index.mjs +0 -6
 - package/esm2022/files/interfaces/tree-node.mjs +0 -2
 - package/esm2022/files/services/index.mjs +0 -3
 - package/esm2022/files/services/tree-icon.service.mjs +0 -49
 - package/esm2022/files/services/tree-loader.service.mjs +0 -62
 - package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -155
 - package/esm2022/form-fields/form-fields.module.mjs +0 -69
 - package/esm2022/form-fields/index.mjs +0 -4
 - package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -175
 - package/esm2022/helpers/index.mjs +0 -2
 - package/esm2022/helpers/sc-px-converter.mjs +0 -27
 - package/esm2022/icons/index.mjs +0 -2
 - package/esm2022/icons/sc-client-ui-icons-name.mjs +0 -99
 - package/esm2022/loader/index.mjs +0 -2
 - package/esm2022/loader/sc-i-loader.mjs +0 -2
 - package/esm2022/masks/index.mjs +0 -8
 - package/esm2022/masks/sc-account-number-mask.mjs +0 -7
 - package/esm2022/masks/sc-bic-mask.mjs +0 -7
 - package/esm2022/masks/sc-correspondent-account-mask.mjs +0 -7
 - package/esm2022/masks/sc-inn-mask.mjs +0 -13
 - package/esm2022/masks/sc-kpp-mask.mjs +0 -7
 - package/esm2022/masks/sc-okpo-mask.mjs +0 -13
 - package/esm2022/masks/sc-phone-verification-code-mask.mjs +0 -7
 - package/esm2022/models/i-sc-image.mjs +0 -2
 - package/esm2022/models/index.mjs +0 -2
 - package/esm2022/news/index.mjs +0 -4
 - package/esm2022/news/news-card/sc-news-card.component.mjs +0 -34
 - package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +0 -31
 - package/esm2022/news/sc-news.module.mjs +0 -26
 - package/esm2022/order/index.mjs +0 -4
 - package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +0 -60
 - package/esm2022/order/sc-order.module.mjs +0 -53
 - package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
 - package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +0 -28
 - package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +0 -6
 - package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +0 -59
 - package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +0 -106
 - package/esm2022/pages/index.mjs +0 -7
 - package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +0 -46
 - package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +0 -30
 - package/esm2022/pages/public-offer/sc-public-offer.component.mjs +0 -50
 - package/esm2022/pipes/index.mjs +0 -3
 - package/esm2022/pipes/sc-format-date.mjs +0 -33
 - package/esm2022/pipes/sc-phone-format.mjs +0 -44
 - package/esm2022/profile/index.mjs +0 -3
 - package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -175
 - package/esm2022/profile/sc-profile.module.mjs +0 -76
 - package/esm2022/providers/date-value-transformer/index.mjs +0 -4
 - package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +0 -2
 - package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +0 -26
 - package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +0 -37
 - package/esm2022/providers/index.mjs +0 -12
 - package/esm2022/providers/sc-allow-select-terminated.mjs +0 -6
 - package/esm2022/providers/sc-country-ids.mjs +0 -6
 - package/esm2022/providers/sc-date-formatter.mjs +0 -12
 - package/esm2022/providers/sc-date-value-transformer.mjs +0 -12
 - package/esm2022/providers/sc-help-notification-close.mjs +0 -7
 - package/esm2022/providers/sc-help-notification-limit.mjs +0 -6
 - package/esm2022/providers/sc-max-files-in-form-input.mjs +0 -6
 - package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +0 -6
 - package/esm2022/providers/sc-page-size-options.mjs +0 -6
 - package/esm2022/providers/sc-user-providers.mjs +0 -33
 - package/esm2022/providers/sc-verification-code-timeout.mjs +0 -6
 - package/esm2022/public-api.mjs +0 -35
 - package/esm2022/qrcode/index.mjs +0 -3
 - package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +0 -58
 - package/esm2022/qrcode/sc-qrcode.module.mjs +0 -25
 - package/esm2022/samples/index.mjs +0 -5
 - package/esm2022/samples/interfaces/index.mjs +0 -3
 - package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +0 -2
 - package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +0 -2
 - package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +0 -42
 - package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +0 -63
 - package/esm2022/samples/sc-sample.module.mjs +0 -68
 - package/esm2022/services/index.mjs +0 -2
 - package/esm2022/services/sc-help-notification.service.mjs +0 -90
 - package/esm2022/share-button/index.mjs +0 -3
 - package/esm2022/share-button/sc-share-button.component.mjs +0 -35
 - package/esm2022/share-button/sc-share-button.module.mjs +0 -22
 - package/esm2022/snabcentr-client-ui.mjs +0 -5
 - package/esm2022/user/index.mjs +0 -6
 - package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +0 -75
 - package/esm2022/user/sc-user.module.mjs +0 -89
 - package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -122
 - package/esm2022/user/user-managers/sc-user-managers.component.mjs +0 -42
 - package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -106
 - package/esm2022/validators/index.mjs +0 -7
 - package/esm2022/validators/sc-at-least-one-required-validator.mjs +0 -25
 - package/esm2022/validators/sc-bic-validator.mjs +0 -10
 - package/esm2022/validators/sc-correspondent-account-validator.mjs +0 -10
 - package/esm2022/validators/sc-password-confirm-matching-validator.mjs +0 -17
 - package/esm2022/validators/sc-phone-validator.mjs +0 -14
 - package/esm2022/validators/step-validator.mjs +0 -18
 - package/esm2022/verification/index.mjs +0 -4
 - package/esm2022/verification/providers/index.mjs +0 -3
 - package/esm2022/verification/providers/sc-phone-approve-code-sender.provider.mjs +0 -12
 - package/esm2022/verification/providers/sc-phone-approve-code-sender.token.mjs +0 -7
 - package/esm2022/verification/sc-verification.module.mjs +0 -88
 - package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -277
 - package/feedback/feedback-form/sc-feedback-form.component.d.ts +0 -163
 - package/feedback/gratitude/sc-gratitude.component.d.ts +0 -20
 - package/feedback/index.d.ts +0 -3
 - package/feedback/interfaces/index.d.ts +0 -1
 - package/feedback/interfaces/sc-feedback-form-config.d.ts +0 -23
 - package/files/directives/index.d.ts +0 -2
 - package/files/directives/tree-top.directive.d.ts +0 -33
 - package/files/directives/tree.directive.d.ts +0 -35
 - package/files/file-tree-item/file-tree-item.component.d.ts +0 -9
 - package/files/files-and-documents/files-and-documents.component.d.ts +0 -27
 - package/files/files-and-documents.module.d.ts +0 -17
 - package/files/index.d.ts +0 -5
 - package/files/interfaces/tree-node.d.ts +0 -29
 - package/files/services/index.d.ts +0 -2
 - package/files/services/tree-icon.service.d.ts +0 -23
 - package/files/services/tree-loader.service.d.ts +0 -43
 - package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -78
 - package/form-fields/form-fields.module.d.ts +0 -19
 - package/form-fields/index.d.ts +0 -3
 - package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +0 -73
 - package/helpers/index.d.ts +0 -1
 - package/helpers/sc-px-converter.d.ts +0 -15
 - package/icons/index.d.ts +0 -1
 - package/icons/sc-client-ui-icons-name.d.ts +0 -4
 - package/loader/index.d.ts +0 -1
 - package/loader/sc-i-loader.d.ts +0 -9
 - package/masks/index.d.ts +0 -7
 - package/masks/sc-account-number-mask.d.ts +0 -5
 - package/masks/sc-bic-mask.d.ts +0 -5
 - package/masks/sc-correspondent-account-mask.d.ts +0 -5
 - package/masks/sc-inn-mask.d.ts +0 -9
 - package/masks/sc-kpp-mask.d.ts +0 -5
 - package/masks/sc-okpo-mask.d.ts +0 -9
 - package/masks/sc-phone-verification-code-mask.d.ts +0 -5
 - package/models/i-sc-image.d.ts +0 -17
 - package/models/index.d.ts +0 -1
 - package/news/index.d.ts +0 -3
 - package/news/news-card/sc-news-card.component.d.ts +0 -22
 - package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +0 -16
 - package/news/sc-news.module.d.ts +0 -16
 - package/order/index.d.ts +0 -3
 - package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +0 -39
 - package/order/sc-order.module.d.ts +0 -19
 - package/order/sc-payment-status/sc-payment-status.component.d.ts +0 -25
 - package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +0 -18
 - package/pages/frequently-asked-questions/sc-page-size-options.d.ts +0 -5
 - package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +0 -28
 - package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +0 -79
 - package/pages/index.d.ts +0 -6
 - package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +0 -17
 - package/pages/privacy-policy/sc-privacy-policy.component.d.ts +0 -17
 - package/pages/public-offer/sc-public-offer.component.d.ts +0 -22
 - package/pipes/index.d.ts +0 -2
 - package/pipes/sc-format-date.d.ts +0 -20
 - package/pipes/sc-phone-format.d.ts +0 -21
 - package/profile/index.d.ts +0 -2
 - package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +0 -126
 - package/profile/sc-profile.module.d.ts +0 -24
 - package/providers/date-value-transformer/index.d.ts +0 -3
 - package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +0 -9
 - package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +0 -16
 - package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +0 -22
 - package/providers/index.d.ts +0 -11
 - package/providers/sc-allow-select-terminated.d.ts +0 -5
 - package/providers/sc-country-ids.d.ts +0 -5
 - package/providers/sc-date-formatter.d.ts +0 -6
 - package/providers/sc-date-value-transformer.d.ts +0 -5
 - package/providers/sc-help-notification-close.d.ts +0 -6
 - package/providers/sc-help-notification-limit.d.ts +0 -5
 - package/providers/sc-max-files-in-form-input.d.ts +0 -5
 - package/providers/sc-notify-when-in-stock-required-fields.d.ts +0 -5
 - package/providers/sc-page-size-options.d.ts +0 -5
 - package/providers/sc-user-providers.d.ts +0 -21
 - package/providers/sc-verification-code-timeout.d.ts +0 -5
 - package/public-api.d.ts +0 -31
 - package/qrcode/index.d.ts +0 -2
 - package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +0 -37
 - package/qrcode/sc-qrcode.module.d.ts +0 -14
 - package/samples/index.d.ts +0 -4
 - package/samples/interfaces/index.d.ts +0 -2
 - package/samples/interfaces/sc-i-preview-sample.d.ts +0 -56
 - package/samples/interfaces/sc-preview-mosquito-config.d.ts +0 -62
 - package/samples/preview-sample/sc-preview-sample.component.d.ts +0 -30
 - package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +0 -50
 - package/samples/sc-sample.module.d.ts +0 -19
 - package/services/index.d.ts +0 -1
 - package/services/sc-help-notification.service.d.ts +0 -64
 - package/share-button/index.d.ts +0 -2
 - package/share-button/sc-share-button.component.d.ts +0 -22
 - package/share-button/sc-share-button.module.d.ts +0 -12
 - package/user/index.d.ts +0 -5
 - package/user/reset-user-password/sc-reset-user-password.component.d.ts +0 -46
 - package/user/sc-user.module.d.ts +0 -25
 - package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +0 -63
 - package/user/user-managers/sc-user-managers.component.d.ts +0 -26
 - package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +0 -53
 - package/validators/index.d.ts +0 -6
 - package/validators/sc-at-least-one-required-validator.d.ts +0 -10
 - package/validators/sc-bic-validator.d.ts +0 -8
 - package/validators/sc-correspondent-account-validator.d.ts +0 -8
 - package/validators/sc-password-confirm-matching-validator.d.ts +0 -8
 - package/validators/sc-phone-validator.d.ts +0 -5
 - package/validators/step-validator.d.ts +0 -8
 - package/verification/index.d.ts +0 -3
 - package/verification/providers/index.d.ts +0 -2
 - package/verification/providers/sc-phone-approve-code-sender.provider.d.ts +0 -6
 - package/verification/providers/sc-phone-approve-code-sender.token.d.ts +0 -7
 - package/verification/sc-verification.module.d.ts +0 -21
 - package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +0 -149
 
    
        package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs
    DELETED
    
    | 
         @@ -1,87 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
         
     | 
| 
       2 
     | 
    
         
            -
            import { HttpErrorResponse } from '@angular/common/http';
         
     | 
| 
       3 
     | 
    
         
            -
            import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
         
     | 
| 
       4 
     | 
    
         
            -
            import { FormControl, FormGroup, Validators } from '@angular/forms';
         
     | 
| 
       5 
     | 
    
         
            -
            import { tuiIsFalsy } from '@taiga-ui/cdk';
         
     | 
| 
       6 
     | 
    
         
            -
            import { catchError, filter, map, of, share, startWith, Subject, switchMap } from 'rxjs';
         
     | 
| 
       7 
     | 
    
         
            -
            import * as i0 from "@angular/core";
         
     | 
| 
       8 
     | 
    
         
            -
            import * as i1 from "@snabcentr/client-core";
         
     | 
| 
       9 
     | 
    
         
            -
            import * as i2 from "@angular/forms";
         
     | 
| 
       10 
     | 
    
         
            -
            import * as i3 from "@taiga-ui/legacy";
         
     | 
| 
       11 
     | 
    
         
            -
            import * as i4 from "@taiga-ui/legacy/components/primitive-textfield";
         
     | 
| 
       12 
     | 
    
         
            -
            import * as i5 from "@taiga-ui/core";
         
     | 
| 
       13 
     | 
    
         
            -
            import * as i6 from "@taiga-ui/kit";
         
     | 
| 
       14 
     | 
    
         
            -
            import * as i7 from "@angular/common";
         
     | 
| 
       15 
     | 
    
         
            -
            /**
         
     | 
| 
       16 
     | 
    
         
            -
             * Компонент аутентификации по адресу электронной почты и паролю.
         
     | 
| 
       17 
     | 
    
         
            -
             */
         
     | 
| 
       18 
     | 
    
         
            -
            export class ScSignInFormByEmailComponent {
         
     | 
| 
       19 
     | 
    
         
            -
                /**
         
     | 
| 
       20 
     | 
    
         
            -
                 * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.
         
     | 
| 
       21 
     | 
    
         
            -
                 *
         
     | 
| 
       22 
     | 
    
         
            -
                 * @param authService Сервис аутентификации.
         
     | 
| 
       23 
     | 
    
         
            -
                 */
         
     | 
| 
       24 
     | 
    
         
            -
                constructor(authService) {
         
     | 
| 
       25 
     | 
    
         
            -
                    this.authService = authService;
         
     | 
| 
       26 
     | 
    
         
            -
                    /**
         
     | 
| 
       27 
     | 
    
         
            -
                     * Группа полей ввода для формы «Вход на сайт».
         
     | 
| 
       28 
     | 
    
         
            -
                     */
         
     | 
| 
       29 
     | 
    
         
            -
                    this.formByEmail = new FormGroup({
         
     | 
| 
       30 
     | 
    
         
            -
                        username: new FormControl(null, [Validators.required, Validators.email]),
         
     | 
| 
       31 
     | 
    
         
            -
                        password: new FormControl(null, Validators.required),
         
     | 
| 
       32 
     | 
    
         
            -
                    });
         
     | 
| 
       33 
     | 
    
         
            -
                    /**
         
     | 
| 
       34 
     | 
    
         
            -
                     * {@link Subject} события отправки формы.
         
     | 
| 
       35 
     | 
    
         
            -
                     */
         
     | 
| 
       36 
     | 
    
         
            -
                    this.onSubmit = new Subject();
         
     | 
| 
       37 
     | 
    
         
            -
                    /**
         
     | 
| 
       38 
     | 
    
         
            -
                     * {@link Observable} запроса данных аутентификации.
         
     | 
| 
       39 
     | 
    
         
            -
                     */
         
     | 
| 
       40 
     | 
    
         
            -
                    this.emailRequest$ = this.onSubmit.pipe(filter(() => this.formByEmail.valid), map(() => this.formByEmail.value), switchMap((value) => this.authService.getSignIn$(value).pipe(
         
     | 
| 
       41 
     | 
    
         
            -
                    // eslint-disable-next-line sonarjs/cognitive-complexity
         
     | 
| 
       42 
     | 
    
         
            -
                    catchError((error) => {
         
     | 
| 
       43 
     | 
    
         
            -
                        if (error instanceof HttpErrorResponse) {
         
     | 
| 
       44 
     | 
    
         
            -
                            if ('error' in error.error) {
         
     | 
| 
       45 
     | 
    
         
            -
                                const errorResponse = error.error;
         
     | 
| 
       46 
     | 
    
         
            -
                                if (errorResponse.error.includes('invalid_grant')) {
         
     | 
| 
       47 
     | 
    
         
            -
                                    this.formByEmail.setErrors({ serverResponse: ['Пользователь с указанными учетными данными не найден. Проверьте правильность ввода.'] });
         
     | 
| 
       48 
     | 
    
         
            -
                                }
         
     | 
| 
       49 
     | 
    
         
            -
                                else {
         
     | 
| 
       50 
     | 
    
         
            -
                                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
         
     | 
| 
       51 
     | 
    
         
            -
                                    this.formByEmail.setErrors({ serverResponse: [errorResponse.errorDescription ?? errorResponse.error] });
         
     | 
| 
       52 
     | 
    
         
            -
                                }
         
     | 
| 
       53 
     | 
    
         
            -
                            }
         
     | 
| 
       54 
     | 
    
         
            -
                            else {
         
     | 
| 
       55 
     | 
    
         
            -
                                const { errors, message } = error.error;
         
     | 
| 
       56 
     | 
    
         
            -
                                for (const key in errors) {
         
     | 
| 
       57 
     | 
    
         
            -
                                    if (Object.hasOwn(errors, key)) {
         
     | 
| 
       58 
     | 
    
         
            -
                                        // eslint-disable-next-line security/detect-object-injection
         
     | 
| 
       59 
     | 
    
         
            -
                                        this.formByEmail.get(key)?.setErrors({ serverResponse: errors[key] });
         
     | 
| 
       60 
     | 
    
         
            -
                                    }
         
     | 
| 
       61 
     | 
    
         
            -
                                }
         
     | 
| 
       62 
     | 
    
         
            -
                                if (!errors && message) {
         
     | 
| 
       63 
     | 
    
         
            -
                                    this.formByEmail.setErrors({ serverResponse: [message] });
         
     | 
| 
       64 
     | 
    
         
            -
                                }
         
     | 
| 
       65 
     | 
    
         
            -
                            }
         
     | 
| 
       66 
     | 
    
         
            -
                        }
         
     | 
| 
       67 
     | 
    
         
            -
                        return of({});
         
     | 
| 
       68 
     | 
    
         
            -
                    }), startWith(null))), share());
         
     | 
| 
       69 
     | 
    
         
            -
                    /**
         
     | 
| 
       70 
     | 
    
         
            -
                     * {@link Observable} изменения состояния загрузки данных аутентификации по email.
         
     | 
| 
       71 
     | 
    
         
            -
                     */
         
     | 
| 
       72 
     | 
    
         
            -
                    this.loadingEmailAuth$ = this.emailRequest$.pipe(map(tuiIsFalsy));
         
     | 
| 
       73 
     | 
    
         
            -
                    /**
         
     | 
| 
       74 
     | 
    
         
            -
                     * Сигнал нажатия на кнопку "Забыли пароль".
         
     | 
| 
       75 
     | 
    
         
            -
                     */
         
     | 
| 
       76 
     | 
    
         
            -
                    this.forgotPassword = new EventEmitter();
         
     | 
| 
       77 
     | 
    
         
            -
                }
         
     | 
| 
       78 
     | 
    
         
            -
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByEmailComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component }); }
         
     | 
| 
       79 
     | 
    
         
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: { forgotPassword: "forgotPassword" }, ngImport: i0, template: "<form\n    [formGroup]=\"formByEmail\"\n    (ngSubmit)=\"onSubmit.next()\"\n>\n    <div class=\"mb-8 flex flex-col gap-4\">\n        <label tuiLabel\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=\"username\">\n                \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n                <input\n                    tuiTextfieldLegacy\n                    autocomplete=\"email\"\n                />\n            </tui-input>\n            <tui-error\n                formControlName=\"username\"\n                [error]=\"[] | tuiFieldError | async\"\n            ></tui-error>\n        </label>\n        <label tuiLabel\n            >\u041F\u0430\u0440\u043E\u043B\u044C\n            <tui-input-password formControlName=\"password\">\n                \u041F\u0430\u0440\u043E\u043B\u044C\n                <input\n                    tuiTextfieldLegacy\n                    autocomplete=\"current-password\"\n                />\n            </tui-input-password>\n            <tui-error\n                formControlName=\"password\"\n                [error]=\"[] | tuiFieldError | async\"\n            ></tui-error>\n        </label>\n        <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n    </div>\n    <div class=\"mb-4 flex flex-col items-center gap-4\">\n        <a\n            tuiLink\n            [pseudo]=\"true\"\n            (click)=\"forgotPassword.emit()\"\n            class=\"text-base\"\n            >\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?</a\n        >\n        <button\n            tuiButton\n            type=\"submit\"\n            [loading]=\"!!(loadingEmailAuth$ | async)\"\n            [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\"\n            iconStart=\"@tui.sc.circle-arrow-in-right\"\n        >\n            \u0412\u043E\u0439\u0442\u0438\n        </button>\n    </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i3.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i3.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i3.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i5.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i5.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i5.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i6.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         
     | 
| 
       80 
     | 
    
         
            -
            }
         
     | 
| 
       81 
     | 
    
         
            -
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByEmailComponent, decorators: [{
         
     | 
| 
       82 
     | 
    
         
            -
                        type: Component,
         
     | 
| 
       83 
     | 
    
         
            -
                        args: [{ selector: 'sc-sign-in-form-by-email', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n    [formGroup]=\"formByEmail\"\n    (ngSubmit)=\"onSubmit.next()\"\n>\n    <div class=\"mb-8 flex flex-col gap-4\">\n        <label tuiLabel\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=\"username\">\n                \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n                <input\n                    tuiTextfieldLegacy\n                    autocomplete=\"email\"\n                />\n            </tui-input>\n            <tui-error\n                formControlName=\"username\"\n                [error]=\"[] | tuiFieldError | async\"\n            ></tui-error>\n        </label>\n        <label tuiLabel\n            >\u041F\u0430\u0440\u043E\u043B\u044C\n            <tui-input-password formControlName=\"password\">\n                \u041F\u0430\u0440\u043E\u043B\u044C\n                <input\n                    tuiTextfieldLegacy\n                    autocomplete=\"current-password\"\n                />\n            </tui-input-password>\n            <tui-error\n                formControlName=\"password\"\n                [error]=\"[] | tuiFieldError | async\"\n            ></tui-error>\n        </label>\n        <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n    </div>\n    <div class=\"mb-4 flex flex-col items-center gap-4\">\n        <a\n            tuiLink\n            [pseudo]=\"true\"\n            (click)=\"forgotPassword.emit()\"\n            class=\"text-base\"\n            >\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?</a\n        >\n        <button\n            tuiButton\n            type=\"submit\"\n            [loading]=\"!!(loadingEmailAuth$ | async)\"\n            [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\"\n            iconStart=\"@tui.sc.circle-arrow-in-right\"\n        >\n            \u0412\u043E\u0439\u0442\u0438\n        </button>\n    </div>\n</form>\n" }]
         
     | 
| 
       84 
     | 
    
         
            -
                    }], ctorParameters: () => [{ type: i1.ScAuthService }], propDecorators: { forgotPassword: [{
         
     | 
| 
       85 
     | 
    
         
            -
                            type: Output
         
     | 
| 
       86 
     | 
    
         
            -
                        }] } });
         
     | 
| 
       87 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktZW1haWwvc2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktZW1haWwvc2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBSXJHOztHQUVHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQW9FckM7Ozs7T0FJRztJQUNILFlBQW9DLFdBQTBCO1FBQTFCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBeEU5RDs7V0FFRztRQUNhLGdCQUFXLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDbkQsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2RixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQWdCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3RFLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ2EsYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRTlEOztXQUVHO1FBQ2Msa0JBQWEsR0FBa0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzlFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUNwQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFlLENBQUMsRUFDM0MsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtRQUNuQyx3REFBd0Q7UUFDeEQsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN6QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBaUMsQ0FBQztvQkFFOUQsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO3dCQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLHFGQUFxRixDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM1SSxDQUFDO3lCQUFNLENBQUM7d0JBQ0osdUVBQXVFO3dCQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM1RyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUF5QixDQUFDO29CQUU1RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUN2QixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQzdCLDREQUE0RDs0QkFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQzFFLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO3dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDOUQsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sRUFBRSxDQUFDLEVBQWdCLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLENBQ2xCLENBQ0osRUFDRCxLQUFLLEVBQUUsQ0FDVixDQUFDO1FBRUY7O1dBRUc7UUFDYSxzQkFBaUIsR0FBd0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFbEc7O1dBRUc7UUFDdUIsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQU92QixDQUFDOytHQXpFekQsNEJBQTRCO21HQUE1Qiw0QkFBNEIsK0dDbkJ6QywyakVBc0RBOzs0RkRuQ2EsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNJLDBCQUEwQixtQkFFbkIsdUJBQXVCLENBQUMsTUFBTTtrRkFvRXJCLGNBQWM7c0JBQXZDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElBdXRoVG9rZW4sIElMb2dpbiwgU2NBdXRoU2VydmljZSwgU2NJS2V5Y2xvYWtFcnJvclJlc3BvbnNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcGlFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L4g0LDQtNGA0LXRgdGDINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyDQuCDQv9Cw0YDQvtC70Y4uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NTaWduSW5Gb3JtQnlFbWFpbENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9CS0YXQvtC0INC90LAg0YHQsNC50YLCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybUJ5RW1haWw6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICB1c2VybmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSksXG4gICAgICAgIHBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbWFpbFJlcXVlc3QkOiBPYnNlcnZhYmxlPElBdXRoVG9rZW4gfCBudWxsPiA9IHRoaXMub25TdWJtaXQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybUJ5RW1haWwudmFsaWQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtQnlFbWFpbC52YWx1ZSBhcyBJTG9naW4pLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRTaWduSW4kKHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnZXJyb3InIGluIGVycm9yLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIFNjSUtleWNsb2FrRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclJlc3BvbnNlLmVycm9yLmluY2x1ZGVzKCdpbnZhbGlkX2dyYW50JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQnlFbWFpbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogWyfQn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YEg0YPQutCw0LfQsNC90L3Ri9C80Lgg0YPRh9C10YLQvdGL0LzQuCDQtNCw0L3QvdGL0LzQuCDQvdC1INC90LDQudC00LXQvS4g0J/RgNC+0LLQtdGA0YzRgtC1INC/0YDQsNCy0LjQu9GM0L3QvtGB0YLRjCDQstCy0L7QtNCwLiddIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ5RW1haWwuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFtlcnJvclJlc3BvbnNlLmVycm9yRGVzY3JpcHRpb24gPz8gZXJyb3JSZXNwb25zZS5lcnJvcl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgbWVzc2FnZSB9ID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihlcnJvcnMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQnlFbWFpbC5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJvcnMgJiYgbWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1CeUVtYWlsLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9IGFzIElBdXRoVG9rZW4pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QviBlbWFpbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0VtYWlsQXV0aCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmVtYWlsUmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0JfQsNCx0YvQu9C4INC/0LDRgNC+0LvRjFwiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NTaWduSW5Gb3JtQnlFbWFpbENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXV0aFNlcnZpY2Ug0KHQtdGA0LLQuNGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2UpIHt9XG59XG4iLCI8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybUJ5RW1haWxcIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdC5uZXh0KClcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJtYi04IGZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsXG4gICAgICAgICAgICA+0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YtcbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidXNlcm5hbWVcIj5cbiAgICAgICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgID48L3R1aS1lcnJvcj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsXG4gICAgICAgICAgICA+0J/QsNGA0L7Qu9GMXG4gICAgICAgICAgICA8dHVpLWlucHV0LXBhc3N3b3JkIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCI+XG4gICAgICAgICAgICAgICAg0J/QsNGA0L7Qu9GMXG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJjdXJyZW50LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQtcGFzc3dvcmQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICA+PC90dWktZXJyb3I+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDx0dWktZXJyb3IgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTQgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZm9yZ290UGFzc3dvcmQuZW1pdCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1iYXNlXCJcbiAgICAgICAgICAgID7Ql9Cw0LHRi9C70Lgg0L/QsNGA0L7Qu9GMPzwvYVxuICAgICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCIhIShsb2FkaW5nRW1haWxBdXRoJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybUJ5RW1haWwuaW52YWxpZCB8fCAhIShsb2FkaW5nRW1haWxBdXRoJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLmNpcmNsZS1hcnJvdy1pbi1yaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCS0L7QudGC0LhcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
         
     | 
    
        package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs
    DELETED
    
    | 
         @@ -1,86 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
         
     | 
| 
       2 
     | 
    
         
            -
            import { HttpErrorResponse } from '@angular/common/http';
         
     | 
| 
       3 
     | 
    
         
            -
            import { ChangeDetectionStrategy, Component } from '@angular/core';
         
     | 
| 
       4 
     | 
    
         
            -
            import { FormControl, FormGroup, Validators } from '@angular/forms';
         
     | 
| 
       5 
     | 
    
         
            -
            import { tuiIsFalsy } from '@taiga-ui/cdk';
         
     | 
| 
       6 
     | 
    
         
            -
            import { catchError, filter, map, of, share, startWith, Subject, switchMap } from 'rxjs';
         
     | 
| 
       7 
     | 
    
         
            -
            import { phoneValidator } from '../../../validators/sc-phone-validator';
         
     | 
| 
       8 
     | 
    
         
            -
            import * as i0 from "@angular/core";
         
     | 
| 
       9 
     | 
    
         
            -
            import * as i1 from "@snabcentr/client-core";
         
     | 
| 
       10 
     | 
    
         
            -
            import * as i2 from "@angular/common";
         
     | 
| 
       11 
     | 
    
         
            -
            import * as i3 from "@angular/forms";
         
     | 
| 
       12 
     | 
    
         
            -
            import * as i4 from "@taiga-ui/core";
         
     | 
| 
       13 
     | 
    
         
            -
            import * as i5 from "@taiga-ui/cdk";
         
     | 
| 
       14 
     | 
    
         
            -
            import * as i6 from "../../../verification/verification-phone-check-form/sc-verification-phone-check-form.component";
         
     | 
| 
       15 
     | 
    
         
            -
            import * as i7 from "@taiga-ui/kit";
         
     | 
| 
       16 
     | 
    
         
            -
            /**
         
     | 
| 
       17 
     | 
    
         
            -
             * Компонент аутентификации по номеру телефона и коду подтверждения.
         
     | 
| 
       18 
     | 
    
         
            -
             */
         
     | 
| 
       19 
     | 
    
         
            -
            export class ScSignInFormByPhoneComponent {
         
     | 
| 
       20 
     | 
    
         
            -
                /**
         
     | 
| 
       21 
     | 
    
         
            -
                 * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.
         
     | 
| 
       22 
     | 
    
         
            -
                 *
         
     | 
| 
       23 
     | 
    
         
            -
                 * @param authService Сервис аутентификации.
         
     | 
| 
       24 
     | 
    
         
            -
                 */
         
     | 
| 
       25 
     | 
    
         
            -
                constructor(authService) {
         
     | 
| 
       26 
     | 
    
         
            -
                    this.authService = authService;
         
     | 
| 
       27 
     | 
    
         
            -
                    /**
         
     | 
| 
       28 
     | 
    
         
            -
                     * Наличие кода подтверждения у пользователя.
         
     | 
| 
       29 
     | 
    
         
            -
                     */
         
     | 
| 
       30 
     | 
    
         
            -
                    this.haveCode = false;
         
     | 
| 
       31 
     | 
    
         
            -
                    /**
         
     | 
| 
       32 
     | 
    
         
            -
                     * Группа полей ввода для формы «Вход на сайт».
         
     | 
| 
       33 
     | 
    
         
            -
                     */
         
     | 
| 
       34 
     | 
    
         
            -
                    this.form = new FormGroup({
         
     | 
| 
       35 
     | 
    
         
            -
                        phone: new FormControl(null, [Validators.required, phoneValidator()]),
         
     | 
| 
       36 
     | 
    
         
            -
                        verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)]),
         
     | 
| 
       37 
     | 
    
         
            -
                    });
         
     | 
| 
       38 
     | 
    
         
            -
                    /**
         
     | 
| 
       39 
     | 
    
         
            -
                     * {@link Subject} события отправки формы.
         
     | 
| 
       40 
     | 
    
         
            -
                     */
         
     | 
| 
       41 
     | 
    
         
            -
                    this.onSubmit = new Subject();
         
     | 
| 
       42 
     | 
    
         
            -
                    /**
         
     | 
| 
       43 
     | 
    
         
            -
                     * {@link Observable} запроса данных аутентификации.
         
     | 
| 
       44 
     | 
    
         
            -
                     */
         
     | 
| 
       45 
     | 
    
         
            -
                    this.request$ = this.onSubmit.pipe(map(() => this.form.value), filter((value) => this.form.valid), switchMap((value) => this.authService.getSignIn$(value).pipe(
         
     | 
| 
       46 
     | 
    
         
            -
                    // eslint-disable-next-line sonarjs/cognitive-complexity
         
     | 
| 
       47 
     | 
    
         
            -
                    catchError((error) => {
         
     | 
| 
       48 
     | 
    
         
            -
                        if (error instanceof HttpErrorResponse) {
         
     | 
| 
       49 
     | 
    
         
            -
                            if ('error' in error.error) {
         
     | 
| 
       50 
     | 
    
         
            -
                                const errorResponse = error.error;
         
     | 
| 
       51 
     | 
    
         
            -
                                if (errorResponse.error.includes('invalid_credentials')) {
         
     | 
| 
       52 
     | 
    
         
            -
                                    this.form.setErrors({ serverResponse: ['Неверный код подтверждения.'] });
         
     | 
| 
       53 
     | 
    
         
            -
                                }
         
     | 
| 
       54 
     | 
    
         
            -
                                else {
         
     | 
| 
       55 
     | 
    
         
            -
                                    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
         
     | 
| 
       56 
     | 
    
         
            -
                                    this.form.setErrors({ serverResponse: [errorResponse.errorDescription ?? errorResponse.error] });
         
     | 
| 
       57 
     | 
    
         
            -
                                }
         
     | 
| 
       58 
     | 
    
         
            -
                            }
         
     | 
| 
       59 
     | 
    
         
            -
                            else {
         
     | 
| 
       60 
     | 
    
         
            -
                                const { errors, message } = error.error;
         
     | 
| 
       61 
     | 
    
         
            -
                                for (const key in errors) {
         
     | 
| 
       62 
     | 
    
         
            -
                                    if (Object.hasOwn(errors, key)) {
         
     | 
| 
       63 
     | 
    
         
            -
                                        // eslint-disable-next-line security/detect-object-injection
         
     | 
| 
       64 
     | 
    
         
            -
                                        this.form.get(key)?.setErrors({ serverResponse: errors[key] });
         
     | 
| 
       65 
     | 
    
         
            -
                                    }
         
     | 
| 
       66 
     | 
    
         
            -
                                }
         
     | 
| 
       67 
     | 
    
         
            -
                                if (!errors && message) {
         
     | 
| 
       68 
     | 
    
         
            -
                                    this.form.setErrors({ serverResponse: [message] });
         
     | 
| 
       69 
     | 
    
         
            -
                                }
         
     | 
| 
       70 
     | 
    
         
            -
                            }
         
     | 
| 
       71 
     | 
    
         
            -
                        }
         
     | 
| 
       72 
     | 
    
         
            -
                        return of({});
         
     | 
| 
       73 
     | 
    
         
            -
                    }), startWith(null))), share());
         
     | 
| 
       74 
     | 
    
         
            -
                    /**
         
     | 
| 
       75 
     | 
    
         
            -
                     * {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.
         
     | 
| 
       76 
     | 
    
         
            -
                     */
         
     | 
| 
       77 
     | 
    
         
            -
                    this.loading$ = this.request$.pipe(map(tuiIsFalsy));
         
     | 
| 
       78 
     | 
    
         
            -
                }
         
     | 
| 
       79 
     | 
    
         
            -
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByPhoneComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component }); }
         
     | 
| 
       80 
     | 
    
         
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone", ngImport: i0, template: "<form\n    [formGroup]=\"form\"\n    *tuiLet=\"!!(loading$ | async) as loading\"\n    (ngSubmit)=\"onSubmit.next()\"\n    class=\"mb-4 flex flex-col items-center gap-4\"\n>\n    <sc-verification-phone-check-form\n        [(haveCode)]=\"haveCode\"\n        [shouldBeBusy]=\"true\"\n        [shouldBeConfirmed]=\"true\"\n        class=\"w-full\"\n    />\n    <tui-error\n        [error]=\"[] | tuiFieldError | async\"\n        class=\"self-center\"\n    />\n    <button\n        *ngIf=\"haveCode\"\n        tuiButton\n        type=\"submit\"\n        [loading]=\"loading\"\n        [disabled]=\"form.invalid || loading\"\n        iconStart=\"@tui.sc.circle-arrow-in-right\"\n    >\n        \u0412\u043E\u0439\u0442\u0438\n    </button>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i6.ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "pseudoInvalid", "required", "subtitle", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange", "isBusyChange", "isConfirmedChange"] }, { kind: "component", type: i7.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         
     | 
| 
       81 
     | 
    
         
            -
            }
         
     | 
| 
       82 
     | 
    
         
            -
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByPhoneComponent, decorators: [{
         
     | 
| 
       83 
     | 
    
         
            -
                        type: Component,
         
     | 
| 
       84 
     | 
    
         
            -
                        args: [{ selector: 'sc-sign-in-form-by-phone', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n    [formGroup]=\"form\"\n    *tuiLet=\"!!(loading$ | async) as loading\"\n    (ngSubmit)=\"onSubmit.next()\"\n    class=\"mb-4 flex flex-col items-center gap-4\"\n>\n    <sc-verification-phone-check-form\n        [(haveCode)]=\"haveCode\"\n        [shouldBeBusy]=\"true\"\n        [shouldBeConfirmed]=\"true\"\n        class=\"w-full\"\n    />\n    <tui-error\n        [error]=\"[] | tuiFieldError | async\"\n        class=\"self-center\"\n    />\n    <button\n        *ngIf=\"haveCode\"\n        tuiButton\n        type=\"submit\"\n        [loading]=\"loading\"\n        [disabled]=\"form.invalid || loading\"\n        iconStart=\"@tui.sc.circle-arrow-in-right\"\n    >\n        \u0412\u043E\u0439\u0442\u0438\n    </button>\n</form>\n" }]
         
     | 
| 
       85 
     | 
    
         
            -
                    }], ctorParameters: () => [{ type: i1.ScAuthService }] });
         
     | 
| 
       86 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktcGhvbmUvc2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktcGhvbmUvc2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7QUFHeEU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sNEJBQTRCO0lBb0VyQzs7OztPQUlHO0lBQ0gsWUFBb0MsV0FBMEI7UUFBMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUF4RTlEOztXQUVHO1FBQ0ksYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVqQzs7V0FFRztRQUNhLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNqQyxLQUFLLEVBQUUsSUFBSSxXQUFXLENBQWdCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUNwRixnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekcsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFOUQ7O1dBRUc7UUFDYyxhQUFRLEdBQWtDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6RSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDMUIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFDeEQsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtRQUNuQyx3REFBd0Q7UUFDeEQsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxLQUFLLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN6QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBaUMsQ0FBQztvQkFFOUQsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7d0JBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdFLENBQUM7eUJBQU0sQ0FBQzt3QkFDSix1RUFBdUU7d0JBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JHLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQXlCLENBQUM7b0JBRTVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDN0IsNERBQTREOzRCQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDbkUsQ0FBQztvQkFDTCxDQUFDO29CQUVELElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2RCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBRUQsT0FBTyxFQUFFLENBQUMsRUFBZ0IsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FDSixFQUNELEtBQUssRUFBRSxDQUNWLENBQUM7UUFFRjs7V0FFRztRQUNhLGFBQVEsR0FBd0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFPbkIsQ0FBQzsrR0F6RXpELDRCQUE0QjttR0FBNUIsNEJBQTRCLGdFQ3BCekMsMHVCQTJCQTs7NEZEUGEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNJLDBCQUEwQixtQkFFbkIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJQXV0aFRva2VuLCBJUGhvbmVMb2dpbiwgU2NBdXRoU2VydmljZSwgU2NJS2V5Y2xvYWtFcnJvclJlc3BvbnNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBwaG9uZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRvcnMvc2MtcGhvbmUtdmFsaWRhdG9yJztcbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FwaS1lcnJvci1yZXNwb25zZSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QviDQvdC+0LzQtdGA0YMg0YLQtdC70LXRhNC+0L3QsCDQuCDQutC+0LTRgyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1zaWduLWluLWZvcm0tYnktcGhvbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1zaWduLWluLWZvcm0tYnktcGhvbmUuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1NpZ25JbkZvcm1CeVBob25lQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQndCw0LvQuNGH0LjQtSDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICovXG4gICAgcHVibGljIGhhdmVDb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQstCy0L7QtNCwINC00LvRjyDRhNC+0YDQvNGLIMKr0JLRhdC+0LQg0L3QsCDRgdCw0LnRgsK7LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIHBob25lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBob25lVmFsaWRhdG9yKCldKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uQ29kZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV0pLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25TdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC00LDQvdC90YvRhSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8SUF1dGhUb2tlbiB8IG51bGw+ID0gdGhpcy5vblN1Ym1pdC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIElQaG9uZUxvZ2luID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFNpZ25JbiQodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHlcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdlcnJvcicgaW4gZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgU2NJS2V5Y2xvYWtFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yUmVzcG9uc2UuZXJyb3IuaW5jbHVkZXMoJ2ludmFsaWRfY3JlZGVudGlhbHMnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFsn0J3QtdCy0LXRgNC90YvQuSDQutC+0LQg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uJ10gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbZXJyb3JSZXNwb25zZS5lcnJvckRlc2NyaXB0aW9uID8/IGVycm9yUmVzcG9uc2UuZXJyb3JdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZXJyb3JzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJvcnMgJiYgbWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30gYXMgSUF1dGhUb2tlbik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+INC90L7QvNC10YDRgyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1NpZ25JbkZvcm1CeVBob25lQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhdXRoU2VydmljZSDQodC10YDQstC40YEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZSkge31cbn1cbiIsIjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAqdHVpTGV0PVwiISEobG9hZGluZyQgfCBhc3luYykgYXMgbG9hZGluZ1wiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiXG4gICAgY2xhc3M9XCJtYi00IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCJcbj5cbiAgICA8c2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm1cbiAgICAgICAgWyhoYXZlQ29kZSldPVwiaGF2ZUNvZGVcIlxuICAgICAgICBbc2hvdWxkQmVCdXN5XT1cInRydWVcIlxuICAgICAgICBbc2hvdWxkQmVDb25maXJtZWRdPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAvPlxuICAgIDx0dWktZXJyb3JcbiAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgLz5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiaGF2ZUNvZGVcIlxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGxvYWRpbmdcIlxuICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLmNpcmNsZS1hcnJvdy1pbi1yaWdodFwiXG4gICAgPlxuICAgICAgICDQktC+0LnRgtC4XG4gICAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
         
     | 
| 
         @@ -1,89 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
         
     | 
| 
       2 
     | 
    
         
            -
            import { ScUserMetrikaGoalsEnum } from '@snabcentr/client-core';
         
     | 
| 
       3 
     | 
    
         
            -
            import { filter } from 'rxjs';
         
     | 
| 
       4 
     | 
    
         
            -
            import { AuthMethod } from '../enums/auth-method';
         
     | 
| 
       5 
     | 
    
         
            -
            import * as i0 from "@angular/core";
         
     | 
| 
       6 
     | 
    
         
            -
            import * as i1 from "@snabcentr/client-core";
         
     | 
| 
       7 
     | 
    
         
            -
            import * as i2 from "@angular/common";
         
     | 
| 
       8 
     | 
    
         
            -
            import * as i3 from "@taiga-ui/core";
         
     | 
| 
       9 
     | 
    
         
            -
            import * as i4 from "./sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component";
         
     | 
| 
       10 
     | 
    
         
            -
            import * as i5 from "./sc-sign-in-form-by-email/sc-sign-in-form-by-email.component";
         
     | 
| 
       11 
     | 
    
         
            -
            /**
         
     | 
| 
       12 
     | 
    
         
            -
             * Компонент аутентификации пользователя.
         
     | 
| 
       13 
     | 
    
         
            -
             */
         
     | 
| 
       14 
     | 
    
         
            -
            export class ScSignInFormComponent {
         
     | 
| 
       15 
     | 
    
         
            -
                /**
         
     | 
| 
       16 
     | 
    
         
            -
                 * Инициализирует экземпляр класса {@link ScSignInFormComponent}.
         
     | 
| 
       17 
     | 
    
         
            -
                 *
         
     | 
| 
       18 
     | 
    
         
            -
                 * @param authService Сервис аутентификации.
         
     | 
| 
       19 
     | 
    
         
            -
                 * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
         
     | 
| 
       20 
     | 
    
         
            -
                 */
         
     | 
| 
       21 
     | 
    
         
            -
                constructor(authService, userMetrikaService) {
         
     | 
| 
       22 
     | 
    
         
            -
                    this.authService = authService;
         
     | 
| 
       23 
     | 
    
         
            -
                    this.userMetrikaService = userMetrikaService;
         
     | 
| 
       24 
     | 
    
         
            -
                    /**
         
     | 
| 
       25 
     | 
    
         
            -
                     * Выбранный способ аутентификации.
         
     | 
| 
       26 
     | 
    
         
            -
                     */
         
     | 
| 
       27 
     | 
    
         
            -
                    this.authMethod = AuthMethod.byEmail;
         
     | 
| 
       28 
     | 
    
         
            -
                    /**
         
     | 
| 
       29 
     | 
    
         
            -
                     * Перечисление способов аутентификации.
         
     | 
| 
       30 
     | 
    
         
            -
                     */
         
     | 
| 
       31 
     | 
    
         
            -
                    this.method = AuthMethod;
         
     | 
| 
       32 
     | 
    
         
            -
                    /**
         
     | 
| 
       33 
     | 
    
         
            -
                     * Сигнал нажатия на кнопку "Забыли пароль".
         
     | 
| 
       34 
     | 
    
         
            -
                     */
         
     | 
| 
       35 
     | 
    
         
            -
                    this.forgotPassword = new EventEmitter();
         
     | 
| 
       36 
     | 
    
         
            -
                    /**
         
     | 
| 
       37 
     | 
    
         
            -
                     * Сигнал нажатия на кнопку "Зарегистрироваться".
         
     | 
| 
       38 
     | 
    
         
            -
                     */
         
     | 
| 
       39 
     | 
    
         
            -
                    this.signUp = new EventEmitter();
         
     | 
| 
       40 
     | 
    
         
            -
                    /**
         
     | 
| 
       41 
     | 
    
         
            -
                     * Сигнал события аутентификации.
         
     | 
| 
       42 
     | 
    
         
            -
                     */
         
     | 
| 
       43 
     | 
    
         
            -
                    this.successAuth = this.authService.getAuthChange().pipe(filter((state) => state));
         
     | 
| 
       44 
     | 
    
         
            -
                }
         
     | 
| 
       45 
     | 
    
         
            -
                /** @inheritDoc */
         
     | 
| 
       46 
     | 
    
         
            -
                ngOnInit() {
         
     | 
| 
       47 
     | 
    
         
            -
                    this.userMetrikaService.emitUserMetrikaEvent({
         
     | 
| 
       48 
     | 
    
         
            -
                        target: ScUserMetrikaGoalsEnum.signInShow,
         
     | 
| 
       49 
     | 
    
         
            -
                        params: {
         
     | 
| 
       50 
     | 
    
         
            -
                            type: this.authMethod,
         
     | 
| 
       51 
     | 
    
         
            -
                        },
         
     | 
| 
       52 
     | 
    
         
            -
                    });
         
     | 
| 
       53 
     | 
    
         
            -
                }
         
     | 
| 
       54 
     | 
    
         
            -
                /**
         
     | 
| 
       55 
     | 
    
         
            -
                 * Осуществляет переключение способов аутентификации.
         
     | 
| 
       56 
     | 
    
         
            -
                 *
         
     | 
| 
       57 
     | 
    
         
            -
                 * @param authMethod Выбранный способ аутентификации.
         
     | 
| 
       58 
     | 
    
         
            -
                 */
         
     | 
| 
       59 
     | 
    
         
            -
                switchAuth(authMethod) {
         
     | 
| 
       60 
     | 
    
         
            -
                    this.authMethod = authMethod;
         
     | 
| 
       61 
     | 
    
         
            -
                    this.userMetrikaService.emitUserMetrikaEvent({
         
     | 
| 
       62 
     | 
    
         
            -
                        target: ScUserMetrikaGoalsEnum.signInShow,
         
     | 
| 
       63 
     | 
    
         
            -
                        params: {
         
     | 
| 
       64 
     | 
    
         
            -
                            type: authMethod,
         
     | 
| 
       65 
     | 
    
         
            -
                        },
         
     | 
| 
       66 
     | 
    
         
            -
                    });
         
     | 
| 
       67 
     | 
    
         
            -
                }
         
     | 
| 
       68 
     | 
    
         
            -
                /**
         
     | 
| 
       69 
     | 
    
         
            -
                 * Обрабатывает нажатие на кнопку "Забыли пароль" и выдает сигнал об этом.
         
     | 
| 
       70 
     | 
    
         
            -
                 */
         
     | 
| 
       71 
     | 
    
         
            -
                onForgotPassword() {
         
     | 
| 
       72 
     | 
    
         
            -
                    this.forgotPassword.emit();
         
     | 
| 
       73 
     | 
    
         
            -
                }
         
     | 
| 
       74 
     | 
    
         
            -
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormComponent, deps: [{ token: i1.ScAuthService }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component }); }
         
     | 
| 
       75 
     | 
    
         
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScSignInFormComponent, selector: "sc-sign-in-form", inputs: { authMethod: "authMethod" }, outputs: { forgotPassword: "forgotPassword", signUp: "signUp", successAuth: "successAuth" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "<div class=\"mb-4 flex justify-center\">\n    <button\n        tuiButton\n        [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n        (click)=\"switchAuth(method.byPhone)\"\n        class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n    >\n        \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n    </button>\n\n    <button\n        tuiButton\n        [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n        (click)=\"switchAuth(method.byEmail)\"\n        class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n    >\n        \u041F\u043E e-mail\n    </button>\n</div>\n\n<sc-sign-in-form-by-email\n    *ngIf=\"authMethod === 'by_email'\"\n    (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n    <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n    <button\n        tuiButton\n        (click)=\"signUp.emit()\"\n        type=\"button\"\n        iconStart=\"@tui.user-plus\"\n        appearance=\"secondary\"\n    >\n        \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F\n    </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone" }, { kind: "component", type: i5.ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: ["forgotPassword"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         
     | 
| 
       76 
     | 
    
         
            -
            }
         
     | 
| 
       77 
     | 
    
         
            -
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormComponent, decorators: [{
         
     | 
| 
       78 
     | 
    
         
            -
                        type: Component,
         
     | 
| 
       79 
     | 
    
         
            -
                        args: [{ selector: 'sc-sign-in-form', host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-4 flex justify-center\">\n    <button\n        tuiButton\n        [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n        (click)=\"switchAuth(method.byPhone)\"\n        class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n    >\n        \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n    </button>\n\n    <button\n        tuiButton\n        [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n        (click)=\"switchAuth(method.byEmail)\"\n        class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n    >\n        \u041F\u043E e-mail\n    </button>\n</div>\n\n<sc-sign-in-form-by-email\n    *ngIf=\"authMethod === 'by_email'\"\n    (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n    <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n    <button\n        tuiButton\n        (click)=\"signUp.emit()\"\n        type=\"button\"\n        iconStart=\"@tui.user-plus\"\n        appearance=\"secondary\"\n    >\n        \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F\n    </button>\n</div>\n" }]
         
     | 
| 
       80 
     | 
    
         
            -
                    }], ctorParameters: () => [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }], propDecorators: { authMethod: [{
         
     | 
| 
       81 
     | 
    
         
            -
                            type: Input
         
     | 
| 
       82 
     | 
    
         
            -
                        }], forgotPassword: [{
         
     | 
| 
       83 
     | 
    
         
            -
                            type: Output
         
     | 
| 
       84 
     | 
    
         
            -
                        }], signUp: [{
         
     | 
| 
       85 
     | 
    
         
            -
                            type: Output
         
     | 
| 
       86 
     | 
    
         
            -
                        }], successAuth: [{
         
     | 
| 
       87 
     | 
    
         
            -
                            type: Output
         
     | 
| 
       88 
     | 
    
         
            -
                        }] } });
         
     | 
| 
       89 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2lnbi1pbi1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2F1dGgvc2Mtc2lnbi1pbi1mb3JtL3NjLXNpZ24taW4tZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBaUIsc0JBQXNCLEVBQXdCLE1BQU0sd0JBQXdCLENBQUM7QUFDckcsT0FBTyxFQUFFLE1BQU0sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFFbEQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBMEI5Qjs7Ozs7T0FLRztJQUNILFlBQ3FCLFdBQTBCLEVBQzFCLGtCQUF3QztRQUR4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBakM3RDs7V0FFRztRQUNhLGVBQVUsR0FBZSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBRTVEOztXQUVHO1FBQ0ksV0FBTSxHQUFzQixVQUFVLENBQUM7UUFFOUM7O1dBRUc7UUFDdUIsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4Rjs7V0FFRztRQUN1QixXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEY7O1dBRUc7UUFDdUIsZ0JBQVcsR0FBd0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBVzFILENBQUM7SUFFSixrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxVQUFVO1lBQ3pDLE1BQU0sRUFBRTtnQkFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDeEI7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxVQUFzQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7WUFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFVBQVU7WUFDekMsTUFBTSxFQUFFO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0FwRVEscUJBQXFCO21HQUFyQixxQkFBcUIsK09DZmxDLHE2Q0F1Q0E7OzRGRHhCYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksaUJBQWlCLFFBRXJCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxtQkFDaEIsdUJBQXVCLENBQUMsTUFBTTtxSEFNL0IsVUFBVTtzQkFBekIsS0FBSztnQkFVb0IsY0FBYztzQkFBdkMsTUFBTTtnQkFLbUIsTUFBTTtzQkFBL0IsTUFBTTtnQkFLbUIsV0FBVztzQkFBcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF1dGhNZXRob2QgfSBmcm9tICcuLi9lbnVtcy9hdXRoLW1ldGhvZCc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXNpZ24taW4tZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXNpZ24taW4tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1NpZ25JbkZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90YvQuSDRgdC/0L7RgdC+0LEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0aE1ldGhvZDogQXV0aE1ldGhvZCA9IEF1dGhNZXRob2QuYnlFbWFpbDtcblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSDRgdC/0L7RgdC+0LHQvtCyINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIG1ldGhvZDogdHlwZW9mIEF1dGhNZXRob2QgPSBBdXRoTWV0aG9kO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0JfQsNCx0YvQu9C4INC/0LDRgNC+0LvRjFwiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDRgtGM0YHRj1wiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2lnblVwOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0YHQvtCx0YvRgtC40Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHN1Y2Nlc3NBdXRoOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoQ2hhbmdlKCkucGlwZShmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1NpZ25JbkZvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGF1dGhTZXJ2aWNlINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaWduSW5TaG93LFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogdGhpcy5hdXRoTWV0aG9kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgdGD0YnQtdGB0YLQstC70Y/QtdGCINC/0LXRgNC10LrQu9GO0YfQtdC90LjQtSDRgdC/0L7RgdC+0LHQvtCyINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXV0aE1ldGhvZCDQktGL0LHRgNCw0L3QvdGL0Lkg0YHQv9C+0YHQvtCxINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHN3aXRjaEF1dGgoYXV0aE1ldGhvZDogQXV0aE1ldGhvZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF1dGhNZXRob2QgPSBhdXRoTWV0aG9kO1xuXG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaWduSW5TaG93LFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogYXV0aE1ldGhvZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDQvdCw0LbQsNGC0LjQtSDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70YxcIiDQuCDQstGL0LTQsNC10YIg0YHQuNCz0L3QsNC7INC+0LEg0Y3RgtC+0LwuXG4gICAgICovXG4gICAgcHVibGljIG9uRm9yZ290UGFzc3dvcmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9yZ290UGFzc3dvcmQuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi00IGZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR1aUJ1dHRvblxuICAgICAgICBbYXBwZWFyYW5jZV09XCJhdXRoTWV0aG9kID09PSAnYnlfcGhvbmUnID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAoY2xpY2spPVwic3dpdGNoQXV0aChtZXRob2QuYnlQaG9uZSlcIlxuICAgICAgICBjbGFzcz1cInR1aS1zcGFjZV9yaWdodC0zIHR1aS1zcGFjZV9ib3R0b20tMyAhZm9udC1ib2xkXCJcbiAgICA+XG4gICAgICAgINCf0L4g0YLQtdC70LXRhNC+0L3Rg1xuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXV0aE1ldGhvZCA9PT0gJ2J5X2VtYWlsJyA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgKGNsaWNrKT1cInN3aXRjaEF1dGgobWV0aG9kLmJ5RW1haWwpXCJcbiAgICAgICAgY2xhc3M9XCJ0dWktc3BhY2VfbGVmdC0zIHR1aS1zcGFjZV9ib3R0b20tMyAhZm9udC1ib2xkXCJcbiAgICA+XG4gICAgICAgINCf0L4gZS1tYWlsXG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuPHNjLXNpZ24taW4tZm9ybS1ieS1lbWFpbFxuICAgICpuZ0lmPVwiYXV0aE1ldGhvZCA9PT0gJ2J5X2VtYWlsJ1wiXG4gICAgKGZvcmdvdFBhc3N3b3JkKT1cIm9uRm9yZ290UGFzc3dvcmQoKVwiXG4+PC9zYy1zaWduLWluLWZvcm0tYnktZW1haWw+XG5cbjxzYy1zaWduLWluLWZvcm0tYnktcGhvbmUgW2NsYXNzLmhpZGRlbl09XCJhdXRoTWV0aG9kICE9PSAnYnlfcGhvbmUnXCI+PC9zYy1zaWduLWluLWZvcm0tYnktcGhvbmU+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC10dWktdGV4dC0wMlwiPtCV0YnQtSDQvdC1INC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdGLPzwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2lnblVwLmVtaXQoKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnVzZXItcGx1c1wiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgID5cbiAgICAgICAg0JfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNGC0YzRgdGPXG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
         
     | 
| 
         @@ -1,187 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /* eslint-disable @typescript-eslint/no-explicit-any,no-param-reassign,@typescript-eslint/unbound-method */
         
     | 
| 
       2 
     | 
    
         
            -
            import { HttpErrorResponse } from '@angular/common/http';
         
     | 
| 
       3 
     | 
    
         
            -
            import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';
         
     | 
| 
       4 
     | 
    
         
            -
            import { outputFromObservable, toSignal } from '@angular/core/rxjs-interop';
         
     | 
| 
       5 
     | 
    
         
            -
            import { FormControl, FormGroup, Validators } from '@angular/forms';
         
     | 
| 
       6 
     | 
    
         
            -
            import { ScAuthService, ScConvertersService, ScISuggestionType, ScUserMetrikaGoalsEnum, ScUserMetrikaService, ScUserService, } from '@snabcentr/client-core';
         
     | 
| 
       7 
     | 
    
         
            -
            import { tuiIsFalsy } from '@taiga-ui/cdk';
         
     | 
| 
       8 
     | 
    
         
            -
            import { tuiDropdownOptionsProvider } from '@taiga-ui/core';
         
     | 
| 
       9 
     | 
    
         
            -
            import { catchError, filter, map, of, share, startWith, Subject, switchMap } from 'rxjs';
         
     | 
| 
       10 
     | 
    
         
            -
            import { ScHelpNotificationService } from '../../services';
         
     | 
| 
       11 
     | 
    
         
            -
            import { phoneValidator } from '../../validators/sc-phone-validator';
         
     | 
| 
       12 
     | 
    
         
            -
            import * as i0 from "@angular/core";
         
     | 
| 
       13 
     | 
    
         
            -
            import * as i1 from "@angular/forms";
         
     | 
| 
       14 
     | 
    
         
            -
            import * as i2 from "@taiga-ui/legacy/components/primitive-textfield";
         
     | 
| 
       15 
     | 
    
         
            -
            import * as i3 from "@taiga-ui/legacy";
         
     | 
| 
       16 
     | 
    
         
            -
            import * as i4 from "@taiga-ui/core";
         
     | 
| 
       17 
     | 
    
         
            -
            import * as i5 from "../../verification/verification-phone-check-form/sc-verification-phone-check-form.component";
         
     | 
| 
       18 
     | 
    
         
            -
            import * as i6 from "../../form-fields/suggestion-field/sc-suggestion-field.component";
         
     | 
| 
       19 
     | 
    
         
            -
            import * as i7 from "@taiga-ui/core/components/data-list";
         
     | 
| 
       20 
     | 
    
         
            -
            import * as i8 from "@taiga-ui/kit";
         
     | 
| 
       21 
     | 
    
         
            -
            import * as i9 from "@angular/common";
         
     | 
| 
       22 
     | 
    
         
            -
            /**
         
     | 
| 
       23 
     | 
    
         
            -
             * Компонент упрощенной регистрации.
         
     | 
| 
       24 
     | 
    
         
            -
             */
         
     | 
| 
       25 
     | 
    
         
            -
            export class ScSimpleSignUpFormComponent {
         
     | 
| 
       26 
     | 
    
         
            -
                constructor() {
         
     | 
| 
       27 
     | 
    
         
            -
                    /**
         
     | 
| 
       28 
     | 
    
         
            -
                     * Сервис данных о пользователе.
         
     | 
| 
       29 
     | 
    
         
            -
                     */
         
     | 
| 
       30 
     | 
    
         
            -
                    this.userService = inject(ScUserService);
         
     | 
| 
       31 
     | 
    
         
            -
                    /**
         
     | 
| 
       32 
     | 
    
         
            -
                     * Сервис аутентификации.
         
     | 
| 
       33 
     | 
    
         
            -
                     */
         
     | 
| 
       34 
     | 
    
         
            -
                    this.authService = inject(ScAuthService);
         
     | 
| 
       35 
     | 
    
         
            -
                    /**
         
     | 
| 
       36 
     | 
    
         
            -
                     * Сервис конвертации данных.
         
     | 
| 
       37 
     | 
    
         
            -
                     */
         
     | 
| 
       38 
     | 
    
         
            -
                    this.convertersService = inject(ScConvertersService);
         
     | 
| 
       39 
     | 
    
         
            -
                    /**
         
     | 
| 
       40 
     | 
    
         
            -
                     * Сервис для сбора метрик о действиях пользователей.
         
     | 
| 
       41 
     | 
    
         
            -
                     */
         
     | 
| 
       42 
     | 
    
         
            -
                    this.userMetrikaService = inject(ScUserMetrikaService);
         
     | 
| 
       43 
     | 
    
         
            -
                    /**
         
     | 
| 
       44 
     | 
    
         
            -
                     * Группа полей ввода для формы регистрации.
         
     | 
| 
       45 
     | 
    
         
            -
                     */
         
     | 
| 
       46 
     | 
    
         
            -
                    this.form = new FormGroup({
         
     | 
| 
       47 
     | 
    
         
            -
                        name: new FormControl(null, [Validators.required, Validators.minLength(3)]),
         
     | 
| 
       48 
     | 
    
         
            -
                        email: new FormControl(null, [Validators.required, Validators.email]),
         
     | 
| 
       49 
     | 
    
         
            -
                        phone: new FormControl(null, [Validators.required, phoneValidator()]),
         
     | 
| 
       50 
     | 
    
         
            -
                        verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)]),
         
     | 
| 
       51 
     | 
    
         
            -
                        getNews: new FormControl(false),
         
     | 
| 
       52 
     | 
    
         
            -
                        acceptRules: new FormControl(false, Validators.requiredTrue),
         
     | 
| 
       53 
     | 
    
         
            -
                        contragent: new FormGroup({}),
         
     | 
| 
       54 
     | 
    
         
            -
                    });
         
     | 
| 
       55 
     | 
    
         
            -
                    /**
         
     | 
| 
       56 
     | 
    
         
            -
                     * Признак, следует ли отображать функционал кода подтверждения.
         
     | 
| 
       57 
     | 
    
         
            -
                     */
         
     | 
| 
       58 
     | 
    
         
            -
                    this.showCodeFields = signal(false);
         
     | 
| 
       59 
     | 
    
         
            -
                    /**
         
     | 
| 
       60 
     | 
    
         
            -
                     * Признак, занят ли телефон (существует ли пользователь с таким телефоном).
         
     | 
| 
       61 
     | 
    
         
            -
                     */
         
     | 
| 
       62 
     | 
    
         
            -
                    this.isPhoneBusy = signal(null);
         
     | 
| 
       63 
     | 
    
         
            -
                    /**
         
     | 
| 
       64 
     | 
    
         
            -
                     * Признак, нужно ли отображать дополнительные поля для регистрации.
         
     | 
| 
       65 
     | 
    
         
            -
                     */
         
     | 
| 
       66 
     | 
    
         
            -
                    this.showAdditionalFields = signal(false);
         
     | 
| 
       67 
     | 
    
         
            -
                    /**
         
     | 
| 
       68 
     | 
    
         
            -
                     * Список контактов для отправки push-уведомлений.
         
     | 
| 
       69 
     | 
    
         
            -
                     */
         
     | 
| 
       70 
     | 
    
         
            -
                    this.pushContacts = toSignal(inject(ScHelpNotificationService).getContactsShow$());
         
     | 
| 
       71 
     | 
    
         
            -
                    /**
         
     | 
| 
       72 
     | 
    
         
            -
                     * Перечисление типов подсказок.
         
     | 
| 
       73 
     | 
    
         
            -
                     */
         
     | 
| 
       74 
     | 
    
         
            -
                    this.suggestionType = ScISuggestionType;
         
     | 
| 
       75 
     | 
    
         
            -
                    /**
         
     | 
| 
       76 
     | 
    
         
            -
                     * {@link Subject} события отправки формы.
         
     | 
| 
       77 
     | 
    
         
            -
                     */
         
     | 
| 
       78 
     | 
    
         
            -
                    this.onSubmit$ = new Subject();
         
     | 
| 
       79 
     | 
    
         
            -
                    /**
         
     | 
| 
       80 
     | 
    
         
            -
                     * {@link Observable} запроса данных регистрации или входа.
         
     | 
| 
       81 
     | 
    
         
            -
                     */
         
     | 
| 
       82 
     | 
    
         
            -
                    this.request$ = this.onSubmit$.pipe(map(() => this.form.value), filter((value) => (this.isPhoneBusy() ? this.form.controls.verificationCode.valid : this.form.valid)), switchMap((value) => {
         
     | 
| 
       83 
     | 
    
         
            -
                        if (this.isPhoneBusy()) {
         
     | 
| 
       84 
     | 
    
         
            -
                            return this.authService.getSignIn$({ phone: value.phone, verificationCode: value.verificationCode }).pipe(catchError((error) => {
         
     | 
| 
       85 
     | 
    
         
            -
                                this.handleError(error);
         
     | 
| 
       86 
     | 
    
         
            -
                                return of({});
         
     | 
| 
       87 
     | 
    
         
            -
                            }), startWith(null));
         
     | 
| 
       88 
     | 
    
         
            -
                        }
         
     | 
| 
       89 
     | 
    
         
            -
                        this.createBaseContragent(value);
         
     | 
| 
       90 
     | 
    
         
            -
                        value.isGeneratePassword = true;
         
     | 
| 
       91 
     | 
    
         
            -
                        value.isUnknownCity = true;
         
     | 
| 
       92 
     | 
    
         
            -
                        return this.userService.signUp$(this.convertersService.removeNullRecursive(value)).pipe(catchError((error) => {
         
     | 
| 
       93 
     | 
    
         
            -
                            this.handleError(error);
         
     | 
| 
       94 
     | 
    
         
            -
                            return of({});
         
     | 
| 
       95 
     | 
    
         
            -
                        }), startWith(null));
         
     | 
| 
       96 
     | 
    
         
            -
                    }), share());
         
     | 
| 
       97 
     | 
    
         
            -
                    /**
         
     | 
| 
       98 
     | 
    
         
            -
                     * Сигнал изменения состояния загрузки данных.
         
     | 
| 
       99 
     | 
    
         
            -
                     */
         
     | 
| 
       100 
     | 
    
         
            -
                    this.loading = toSignal(this.request$.pipe(map(tuiIsFalsy)), { initialValue: false });
         
     | 
| 
       101 
     | 
    
         
            -
                    /**
         
     | 
| 
       102 
     | 
    
         
            -
                     * Сигнал события аутентификации после успешной регистрации.
         
     | 
| 
       103 
     | 
    
         
            -
                     */
         
     | 
| 
       104 
     | 
    
         
            -
                    this.successAuth = outputFromObservable(this.userService.getUserChange$().pipe(filter((user) => !user.isGuest)));
         
     | 
| 
       105 
     | 
    
         
            -
                    /**
         
     | 
| 
       106 
     | 
    
         
            -
                     * Сигнал нажатия на "Договор оферты".
         
     | 
| 
       107 
     | 
    
         
            -
                     */
         
     | 
| 
       108 
     | 
    
         
            -
                    this.clickOffer = output();
         
     | 
| 
       109 
     | 
    
         
            -
                }
         
     | 
| 
       110 
     | 
    
         
            -
                /** @inheritDoc */
         
     | 
| 
       111 
     | 
    
         
            -
                ngOnInit() {
         
     | 
| 
       112 
     | 
    
         
            -
                    this.userMetrikaService.emitUserMetrikaEvent({
         
     | 
| 
       113 
     | 
    
         
            -
                        target: ScUserMetrikaGoalsEnum.simpleSsignUpShow,
         
     | 
| 
       114 
     | 
    
         
            -
                    });
         
     | 
| 
       115 
     | 
    
         
            -
                }
         
     | 
| 
       116 
     | 
    
         
            -
                /**
         
     | 
| 
       117 
     | 
    
         
            -
                 * Обрабатывает событие изменения занятости телефона.
         
     | 
| 
       118 
     | 
    
         
            -
                 *
         
     | 
| 
       119 
     | 
    
         
            -
                 * @param isBusy Признак занятости телефона.
         
     | 
| 
       120 
     | 
    
         
            -
                 */
         
     | 
| 
       121 
     | 
    
         
            -
                onIsBusyChange(isBusy) {
         
     | 
| 
       122 
     | 
    
         
            -
                    this.isPhoneBusy.set(isBusy);
         
     | 
| 
       123 
     | 
    
         
            -
                    this.showCodeFields.set(isBusy !== null);
         
     | 
| 
       124 
     | 
    
         
            -
                    this.showAdditionalFields.set(!isBusy);
         
     | 
| 
       125 
     | 
    
         
            -
                }
         
     | 
| 
       126 
     | 
    
         
            -
                /**
         
     | 
| 
       127 
     | 
    
         
            -
                 * Обрабатывает событие изменения подтверждения телефона.
         
     | 
| 
       128 
     | 
    
         
            -
                 *
         
     | 
| 
       129 
     | 
    
         
            -
                 * @param isConfirmed Признак подтверждения телефона.
         
     | 
| 
       130 
     | 
    
         
            -
                 */
         
     | 
| 
       131 
     | 
    
         
            -
                onIsConfirmedChange(isConfirmed) {
         
     | 
| 
       132 
     | 
    
         
            -
                    if (isConfirmed === false) {
         
     | 
| 
       133 
     | 
    
         
            -
                        this.form.controls.phone.setErrors({
         
     | 
| 
       134 
     | 
    
         
            -
                            serverResponse: ['Номер телефона не подтверждён. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'],
         
     | 
| 
       135 
     | 
    
         
            -
                        });
         
     | 
| 
       136 
     | 
    
         
            -
                        this.form.controls.phone.markAsTouched();
         
     | 
| 
       137 
     | 
    
         
            -
                    }
         
     | 
| 
       138 
     | 
    
         
            -
                }
         
     | 
| 
       139 
     | 
    
         
            -
                /**
         
     | 
| 
       140 
     | 
    
         
            -
                 * Обрабатывает ошибки запросов.
         
     | 
| 
       141 
     | 
    
         
            -
                 *
         
     | 
| 
       142 
     | 
    
         
            -
                 * @param error Объект ошибки
         
     | 
| 
       143 
     | 
    
         
            -
                 */
         
     | 
| 
       144 
     | 
    
         
            -
                handleError(error) {
         
     | 
| 
       145 
     | 
    
         
            -
                    if (error instanceof HttpErrorResponse) {
         
     | 
| 
       146 
     | 
    
         
            -
                        const { errors, message } = error.error;
         
     | 
| 
       147 
     | 
    
         
            -
                        // eslint-disable-next-line guard-for-in,no-restricted-syntax
         
     | 
| 
       148 
     | 
    
         
            -
                        for (const key in errors) {
         
     | 
| 
       149 
     | 
    
         
            -
                            if (Object.hasOwn(errors, key)) {
         
     | 
| 
       150 
     | 
    
         
            -
                                this.form.get(key)?.setErrors({ serverResponse: errors[key] });
         
     | 
| 
       151 
     | 
    
         
            -
                            }
         
     | 
| 
       152 
     | 
    
         
            -
                        }
         
     | 
| 
       153 
     | 
    
         
            -
                        if (!errors && message) {
         
     | 
| 
       154 
     | 
    
         
            -
                            this.form.setErrors({ serverResponse: [message] });
         
     | 
| 
       155 
     | 
    
         
            -
                        }
         
     | 
| 
       156 
     | 
    
         
            -
                    }
         
     | 
| 
       157 
     | 
    
         
            -
                }
         
     | 
| 
       158 
     | 
    
         
            -
                /**
         
     | 
| 
       159 
     | 
    
         
            -
                 * Создаёт базового контрагента для клиента физического лица.
         
     | 
| 
       160 
     | 
    
         
            -
                 *
         
     | 
| 
       161 
     | 
    
         
            -
                 * @param formValue Значение формы при регистрации
         
     | 
| 
       162 
     | 
    
         
            -
                 */
         
     | 
| 
       163 
     | 
    
         
            -
                createBaseContragent(formValue) {
         
     | 
| 
       164 
     | 
    
         
            -
                    if (this.form.invalid) {
         
     | 
| 
       165 
     | 
    
         
            -
                        return;
         
     | 
| 
       166 
     | 
    
         
            -
                    }
         
     | 
| 
       167 
     | 
    
         
            -
                    formValue.contragent = {
         
     | 
| 
       168 
     | 
    
         
            -
                        name: this.form.controls.name.value,
         
     | 
| 
       169 
     | 
    
         
            -
                        opf: 'individual',
         
     | 
| 
       170 
     | 
    
         
            -
                        salesDirectionId: 1,
         
     | 
| 
       171 
     | 
    
         
            -
                        contacts: [
         
     | 
| 
       172 
     | 
    
         
            -
                            {
         
     | 
| 
       173 
     | 
    
         
            -
                                name: this.form.controls.name.value,
         
     | 
| 
       174 
     | 
    
         
            -
                                phone: this.form.controls.phone.value,
         
     | 
| 
       175 
     | 
    
         
            -
                                email: this.form.controls.email.value,
         
     | 
| 
       176 
     | 
    
         
            -
                            },
         
     | 
| 
       177 
     | 
    
         
            -
                        ],
         
     | 
| 
       178 
     | 
    
         
            -
                    };
         
     | 
| 
       179 
     | 
    
         
            -
                }
         
     | 
| 
       180 
     | 
    
         
            -
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSimpleSignUpFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
         
     | 
| 
       181 
     | 
    
         
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScSimpleSignUpFormComponent, selector: "sc-simple-sign-up-form", outputs: { successAuth: "successAuth", clickOffer: "clickOffer" }, providers: [tuiDropdownOptionsProvider({ limitWidth: 'fixed' })], ngImport: i0, template: "<form\n    [formGroup]=\"form\"\n    (ngSubmit)=\"onSubmit$.next()\"\n    class=\"flex flex-col gap-6\"\n>\n    <div class=\"flex flex-col gap-3\">\n        <sc-verification-phone-check-form\n            (isBusyChange)=\"onIsBusyChange($event)\"\n            (isConfirmedChange)=\"onIsConfirmedChange($event)\"\n            [showCodeFields]=\"form.controls.phone.valid && form.controls.phone.valid\"\n            [shouldBeConfirmed]=\"true\"\n        />\n        @if (isPhoneBusy() !== null && form.controls.phone.valid) {\n            @if (!isPhoneBusy()) {\n                <label tuiLabel>\n                    \u0424.\u0418.\u041E.\n                    <tui-input formControlName=\"name\">\n                        \u0424.\u0418.\u041E.\n                        <input\n                            tuiTextfieldLegacy\n                            autocomplete=\"name\"\n                        />\n                    </tui-input>\n                    <tui-error\n                        formControlName=\"name\"\n                        [error]=\"[] | tuiFieldError | async\"\n                    />\n                </label>\n\n                <label tuiLabel>\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                <tui-error\n                    [error]=\"[] | tuiFieldError | async\"\n                    class=\"self-center\"\n                />\n\n                <label tuiLabel>\n                    <input\n                        tuiCheckbox\n                        type=\"checkbox\"\n                        formControlName=\"getNews\"\n                    />\n                    \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n                </label>\n\n                <label tuiLabel>\n                    <input\n                        tuiCheckbox\n                        type=\"checkbox\"\n                        required=\"true\"\n                        formControlName=\"acceptRules\"\n                    />\n                    <div>\n                        <span>\n                            \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044F\u0441\u044C \u043D\u0430 \u0441\u0430\u0439\u0442\u0435, \u044F \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u044E\u0441\u044C \u0441\n                            <a\n                                tuiLink\n                                [pseudo]=\"true\"\n                                (click)=\"$event.preventDefault(); clickOffer.emit()\"\n                            >\n                                \u0414\u043E\u0433\u043E\u0432\u043E\u0440\u043E\u043C \u043E\u0444\u0435\u0440\u0442\u044B\n                            </a>\n                            .\n                        </span>\n                        <span class=\"text-tui-negative\">*</span>\n                        <tui-error\n                            formControlName=\"acceptRules\"\n                            [error]=\"[] | tuiFieldError | async\"\n                        />\n                    </div>\n                </label>\n            }\n        }\n    </div>\n    <button\n        tuiButton\n        [disabled]=\"isPhoneBusy() ? form.controls.verificationCode.invalid || form.controls.phone.invalid : form.invalid\"\n        [loading]=\"loading()\"\n        type=\"submit\"\n        class=\"self-center\"\n    >\n        {{ isPhoneBusy() ? '\u0412\u043E\u0439\u0442\u0438' : '\u041A\u0443\u043F\u0438\u0442\u044C' }}\n    </button>\n</form>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i3.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i3.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i4.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i4.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i5.ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "pseudoInvalid", "required", "subtitle", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange", "isBusyChange", "isConfirmedChange"] }, { kind: "component", type: i6.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "directive", type: i7.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i8.TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "component", type: i8.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         
     | 
| 
       182 
     | 
    
         
            -
            }
         
     | 
| 
       183 
     | 
    
         
            -
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSimpleSignUpFormComponent, decorators: [{
         
     | 
| 
       184 
     | 
    
         
            -
                        type: Component,
         
     | 
| 
       185 
     | 
    
         
            -
                        args: [{ selector: 'sc-simple-sign-up-form', providers: [tuiDropdownOptionsProvider({ limitWidth: 'fixed' })], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n    [formGroup]=\"form\"\n    (ngSubmit)=\"onSubmit$.next()\"\n    class=\"flex flex-col gap-6\"\n>\n    <div class=\"flex flex-col gap-3\">\n        <sc-verification-phone-check-form\n            (isBusyChange)=\"onIsBusyChange($event)\"\n            (isConfirmedChange)=\"onIsConfirmedChange($event)\"\n            [showCodeFields]=\"form.controls.phone.valid && form.controls.phone.valid\"\n            [shouldBeConfirmed]=\"true\"\n        />\n        @if (isPhoneBusy() !== null && form.controls.phone.valid) {\n            @if (!isPhoneBusy()) {\n                <label tuiLabel>\n                    \u0424.\u0418.\u041E.\n                    <tui-input formControlName=\"name\">\n                        \u0424.\u0418.\u041E.\n                        <input\n                            tuiTextfieldLegacy\n                            autocomplete=\"name\"\n                        />\n                    </tui-input>\n                    <tui-error\n                        formControlName=\"name\"\n                        [error]=\"[] | tuiFieldError | async\"\n                    />\n                </label>\n\n                <label tuiLabel>\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                <tui-error\n                    [error]=\"[] | tuiFieldError | async\"\n                    class=\"self-center\"\n                />\n\n                <label tuiLabel>\n                    <input\n                        tuiCheckbox\n                        type=\"checkbox\"\n                        formControlName=\"getNews\"\n                    />\n                    \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n                </label>\n\n                <label tuiLabel>\n                    <input\n                        tuiCheckbox\n                        type=\"checkbox\"\n                        required=\"true\"\n                        formControlName=\"acceptRules\"\n                    />\n                    <div>\n                        <span>\n                            \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044F\u0441\u044C \u043D\u0430 \u0441\u0430\u0439\u0442\u0435, \u044F \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u044E\u0441\u044C \u0441\n                            <a\n                                tuiLink\n                                [pseudo]=\"true\"\n                                (click)=\"$event.preventDefault(); clickOffer.emit()\"\n                            >\n                                \u0414\u043E\u0433\u043E\u0432\u043E\u0440\u043E\u043C \u043E\u0444\u0435\u0440\u0442\u044B\n                            </a>\n                            .\n                        </span>\n                        <span class=\"text-tui-negative\">*</span>\n                        <tui-error\n                            formControlName=\"acceptRules\"\n                            [error]=\"[] | tuiFieldError | async\"\n                        />\n                    </div>\n                </label>\n            }\n        }\n    </div>\n    <button\n        tuiButton\n        [disabled]=\"isPhoneBusy() ? form.controls.verificationCode.invalid || form.controls.phone.invalid : form.invalid\"\n        [loading]=\"loading()\"\n        type=\"submit\"\n        class=\"self-center\"\n    >\n        {{ isPhoneBusy() ? '\u0412\u043E\u0439\u0442\u0438' : '\u041A\u0443\u043F\u0438\u0442\u044C' }}\n    </button>\n</form>\n" }]
         
     | 
| 
       186 
     | 
    
         
            -
                    }] });
         
     | 
| 
       187 
     | 
    
         
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2ltcGxlLXNpZ24tdXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvYXV0aC9zYy1zaW1wbGUtc2lnbi11cC1mb3JtL3NjLXNpbXBsZS1zaWduLXVwLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2F1dGgvc2Mtc2ltcGxlLXNpZ24tdXAtZm9ybS9zYy1zaW1wbGUtc2lnbi11cC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJHQUEyRztBQUUzRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQXVDLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUVILGFBQWEsRUFDYixtQkFBbUIsRUFHbkIsaUJBQWlCLEVBRWpCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekYsT0FBTyxFQUFFLHlCQUF5QixFQUFF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LEVBQUUsQ0FBQyxDQUFDLG1CQUMvQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSxuby1wYXJhbS1yZWFzc2lnbixAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmLCBPdXRwdXRSZWYsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvdXRwdXRGcm9tT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBJQXV0aFRva2VuLFxuICAgIFNjQXV0aFNlcnZpY2UsXG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0lPcmdDb250YWN0LFxuICAgIFNjSVNpbXBsZVVzZXJPbkRhdGFDcmVhdGUsXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NVc2VyLFxuICAgIFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sXG4gICAgU2NVc2VyTWV0cmlrYVNlcnZpY2UsXG4gICAgU2NVc2VyU2VydmljZSxcbn0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyB0dWlEcm9wZG93bk9wdGlvbnNQcm92aWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBwaG9uZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvc2MtcGhvbmUtdmFsaWRhdG9yJztcbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2FwaS1lcnJvci1yZXNwb25zZSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGD0L/RgNC+0YnQtdC90L3QvtC5INGA0LXQs9C40YHRgtGA0LDRhtC40LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2Mtc2ltcGxlLXNpZ24tdXAtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXNpbXBsZS1zaWduLXVwLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3R1aURyb3Bkb3duT3B0aW9uc1Byb3ZpZGVyKHsgbGltaXRXaWR0aDogJ2ZpeGVkJyB9KV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU2ltcGxlU2lnblVwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LDQvdC90YvRhSDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZSA9IGluamVjdChTY1VzZXJTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoU2NBdXRoU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80Ysg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpXSksXG4gICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKSxcbiAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgcGhvbmVWYWxpZGF0b3IoKV0pLFxuICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpXSksXG4gICAgICAgIGdldE5ld3M6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPihmYWxzZSksXG4gICAgICAgIGFjY2VwdFJ1bGVzOiBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4oZmFsc2UsIFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKSxcbiAgICAgICAgY29udHJhZ2VudDogbmV3IEZvcm1Hcm91cDxhbnk+KHt9KSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaG93Q29kZUZpZWxkcyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0LfQsNC90Y/RgiDQu9C4INGC0LXQu9C10YTQvtC9ICjRgdGD0YnQtdGB0YLQstGD0LXRgiDQu9C4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSDRgtCw0LrQuNC8INGC0LXQu9C10YTQvtC90L7QvCkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzUGhvbmVCdXN5ID0gc2lnbmFsPGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDQvdGD0LbQvdC+INC70Lgg0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDQv9C+0LvRjyDQtNC70Y8g0YDQtdCz0LjRgdGC0YDQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0FkZGl0aW9uYWxGaWVsZHMgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC60L7QvdGC0LDQutGC0L7QsiDQtNC70Y8g0L7RgtC/0YDQsNCy0LrQuCBwdXNoLdGD0LLQtdC00L7QvNC70LXQvdC40LkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHB1c2hDb250YWN0czogU2lnbmFsPFNjSU9yZ0NvbnRhY3RbXSB8IHVuZGVmaW5lZD4gPSB0b1NpZ25hbChpbmplY3QoU2NIZWxwTm90aWZpY2F0aW9uU2VydmljZSkuZ2V0Q29udGFjdHNTaG93JCgpKTtcblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSDRgtC40L/QvtCyINC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VnZ2VzdGlvblR5cGU6IHR5cGVvZiBTY0lTdWdnZXN0aW9uVHlwZSA9IFNjSVN1Z2dlc3Rpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25TdWJtaXQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDQuNC70Lgg0LLRhdC+0LTQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdCQucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS52YWx1ZSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBTY0lTaW1wbGVVc2VyT25EYXRhQ3JlYXRlID0+ICh0aGlzLmlzUGhvbmVCdXN5KCkgPyB0aGlzLmZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZS52YWxpZCA6IHRoaXMuZm9ybS52YWxpZCkpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Bob25lQnVzeSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuZ2V0U2lnbkluJCh7IHBob25lOiB2YWx1ZS5waG9uZSwgdmVyaWZpY2F0aW9uQ29kZTogdmFsdWUudmVyaWZpY2F0aW9uQ29kZSB9KS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7fSBhcyBJQXV0aFRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQmFzZUNvbnRyYWdlbnQodmFsdWUpO1xuICAgICAgICAgICAgdmFsdWUuaXNHZW5lcmF0ZVBhc3N3b3JkID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhbHVlLmlzVW5rbm93bkNpdHkgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5zaWduVXAkKHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZSh2YWx1ZSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHt9IGFzIElBdXRoVG9rZW4pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmc6IFNpZ25hbDxib29sZWFuPiA9IHRvU2lnbmFsKHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpLCB7IGluaXRpYWxWYWx1ZTogZmFsc2UgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0YHQvtCx0YvRgtC40Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+0YHQu9C1INGD0YHQv9C10YjQvdC+0Lkg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VjY2Vzc0F1dGg6IE91dHB1dFJlZjxTY1VzZXI+ID0gb3V0cHV0RnJvbU9ic2VydmFibGUodGhpcy51c2VyU2VydmljZS5nZXRVc2VyQ2hhbmdlJCgpLnBpcGUoZmlsdGVyKCh1c2VyKSA9PiAhdXNlci5pc0d1ZXN0KSkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC90LDQttCw0YLQuNGPINC90LAgXCLQlNC+0LPQvtCy0L7RgCDQvtGE0LXRgNGC0YtcIi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tPZmZlcjogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJNZXRyaWthU2VydmljZS5lbWl0VXNlck1ldHJpa2FFdmVudCh7XG4gICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0uc2ltcGxlU3NpZ25VcFNob3csXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQuNC30LzQtdC90LXQvdC40Y8g0LfQsNC90Y/RgtC+0YHRgtC4INGC0LXQu9C10YTQvtC90LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXNCdXN5INCf0YDQuNC30L3QsNC6INC30LDQvdGP0YLQvtGB0YLQuCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvbklzQnVzeUNoYW5nZShpc0J1c3k6IGJvb2xlYW4gfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNQaG9uZUJ1c3kuc2V0KGlzQnVzeSk7XG4gICAgICAgIHRoaXMuc2hvd0NvZGVGaWVsZHMuc2V0KGlzQnVzeSAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMuc2hvd0FkZGl0aW9uYWxGaWVsZHMuc2V0KCFpc0J1c3kpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDRgdC+0LHRi9GC0LjQtSDQuNC30LzQtdC90LXQvdC40Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc0NvbmZpcm1lZCDQn9GA0LjQt9C90LDQuiDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvbklzQ29uZmlybWVkQ2hhbmdlKGlzQ29uZmlybWVkOiBib29sZWFuIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNDb25maXJtZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucGhvbmUuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogWyfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L3QtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9LiDQntCx0YDQsNGC0LjRgtC10YHRjCDQuiDQstCw0YjQtdC80YMg0L/QtdGA0YHQvtC90LDQu9GM0L3QvtC80YMg0LzQtdC90LXQtNC20LXRgNGDINC40LvQuCDQstC+0LnQtNC40YLQtSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IGUtbWFpbCDQuCDQv9Cw0YDQvtC70Y8uJ10sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDQvtGI0LjQsdC60Lgg0LfQsNC/0YDQvtGB0L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlcnJvciDQntCx0YrQtdC60YIg0L7RiNC40LHQutC4XG4gICAgICovXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW4sbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9ycykge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGVycm9ycywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvcnNba2V5XSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZXJyb3JzICYmIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0L7Qt9C00LDRkdGCINCx0LDQt9C+0LLQvtCz0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsCDQtNC70Y8g0LrQu9C40LXQvdGC0LAg0YTQuNC30LjRh9C10YHQutC+0LPQviDQu9C40YbQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtVmFsdWUg0JfQvdCw0YfQtdC90LjQtSDRhNC+0YDQvNGLINC/0YDQuCDRgNC10LPQuNGB0YLRgNCw0YbQuNC4XG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVCYXNlQ29udHJhZ2VudChmb3JtVmFsdWU6IFNjU2ltcGxlU2lnblVwRm9ybUNvbXBvbmVudFsnZm9ybSddWyd2YWx1ZSddKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybVZhbHVlLmNvbnRyYWdlbnQgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLmZvcm0uY29udHJvbHMubmFtZS52YWx1ZSxcbiAgICAgICAgICAgIG9wZjogJ2luZGl2aWR1YWwnLFxuICAgICAgICAgICAgc2FsZXNEaXJlY3Rpb25JZDogMSxcbiAgICAgICAgICAgIGNvbnRhY3RzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmZvcm0uY29udHJvbHMubmFtZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IHRoaXMuZm9ybS5jb250cm9scy5waG9uZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IHRoaXMuZm9ybS5jb250cm9scy5lbWFpbC52YWx1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0JC5uZXh0KClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNlwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgPHNjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtXG4gICAgICAgICAgICAoaXNCdXN5Q2hhbmdlKT1cIm9uSXNCdXN5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgKGlzQ29uZmlybWVkQ2hhbmdlKT1cIm9uSXNDb25maXJtZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbc2hvd0NvZGVGaWVsZHNdPVwiZm9ybS5jb250cm9scy5waG9uZS52YWxpZCAmJiBmb3JtLmNvbnRyb2xzLnBob25lLnZhbGlkXCJcbiAgICAgICAgICAgIFtzaG91bGRCZUNvbmZpcm1lZF09XCJ0cnVlXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChpc1Bob25lQnVzeSgpICE9PSBudWxsICYmIGZvcm0uY29udHJvbHMucGhvbmUudmFsaWQpIHtcbiAgICAgICAgICAgIEBpZiAoIWlzUGhvbmVCdXN5KCkpIHtcbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgINCkLtCYLtCeLlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCkLtCYLtCeLlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnZXROZXdzXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAg0K8g0YXQvtGH0YMg0L/QvtC70YPRh9Cw0YLRjCDRgNCw0YHRgdGL0LvQutGDINCh0L3QsNCx0YbQtdC90YLRgCDQviDRgdC60LjQtNC60LDRhSDQuCDQvdC+0LLQvtGB0YLRj9GFINC/0L4g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtC1LlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWNjZXB0UnVsZXNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg0KDQtdCz0LjRgdGC0YDQuNGA0YPRj9GB0Ywg0L3QsCDRgdCw0LnRgtC1LCDRjyDRgdC+0LPQu9Cw0YjQsNGO0YHRjCDRgVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBjbGlja09mZmVyLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQlNC+0LPQvtCy0L7RgNC+0Lwg0L7RhNC10YDRgtGLXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10dWktbmVnYXRpdmVcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjY2VwdFJ1bGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc1Bob25lQnVzeSgpID8gZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlLmludmFsaWQgfHwgZm9ybS5jb250cm9scy5waG9uZS5pbnZhbGlkIDogZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgID5cbiAgICAgICAge3sgaXNQaG9uZUJ1c3koKSA/ICfQktC+0LnRgtC4JyA6ICfQmtGD0L/QuNGC0YwnIH19XG4gICAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
         
     |