@seniorsistemas/angular-components 17.27.1-fix-interactive-content-22e06381 → 17.27.1-fixlookupteste-sds-110-c424f879
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/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.d.ts +2 -1
- package/dynamic-form/lib/dynamic-form/dynamic-form.module.d.ts +23 -23
- package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +2 -0
- package/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.d.ts +3 -3
- package/esm2022/accordion/lib/accordion/accordion.component.mjs +84 -0
- package/esm2022/accordion/lib/accordion/accordion.module.mjs +36 -0
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +124 -0
- package/esm2022/accordion/lib/accordion/models/accordion-button-settings.mjs +2 -0
- package/esm2022/accordion/public-api.mjs +4 -0
- package/esm2022/accordion/seniorsistemas-angular-components-accordion.mjs +5 -0
- package/esm2022/alert/lib/alert/alert.component.mjs +44 -0
- package/esm2022/alert/lib/alert/alert.module.mjs +18 -0
- package/esm2022/alert/public-api.mjs +3 -0
- package/esm2022/alert/seniorsistemas-angular-components-alert.mjs +5 -0
- package/esm2022/badge/lib/badge/badge.component.mjs +46 -0
- package/esm2022/badge/lib/badge/badge.module.mjs +20 -0
- package/esm2022/badge/lib/badge/types/badge-colors.mjs +4 -0
- package/esm2022/badge/lib/badge/types/badge-types.mjs +2 -0
- package/esm2022/badge/public-api.mjs +3 -0
- package/esm2022/badge/seniorsistemas-angular-components-badge.mjs +5 -0
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +156 -0
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +21 -0
- package/esm2022/bignumber-input/public-api.mjs +3 -0
- package/esm2022/bignumber-input/seniorsistemas-angular-components-bignumber-input.mjs +5 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +105 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +20 -0
- package/esm2022/breadcrumb/public-api.mjs +3 -0
- package/esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs +5 -0
- package/esm2022/button/lib/button/button.component.mjs +106 -0
- package/esm2022/button/lib/button/button.module.mjs +18 -0
- package/esm2022/button/lib/button/models/button-animations.mjs +2 -0
- package/esm2022/button/lib/button/models/button-badge-config.mjs +2 -0
- package/esm2022/button/lib/button/models/button-priority.mjs +2 -0
- package/esm2022/button/lib/button/models/button-size.mjs +2 -0
- package/esm2022/button/lib/button/models/index.mjs +2 -0
- package/esm2022/button/public-api.mjs +4 -0
- package/esm2022/button/seniorsistemas-angular-components-button.mjs +5 -0
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +611 -0
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +18 -0
- package/esm2022/calendar-mask/public-api.mjs +3 -0
- package/esm2022/calendar-mask/seniorsistemas-angular-components-calendar-mask.mjs +5 -0
- package/esm2022/card/lib/card/card.component.mjs +85 -0
- package/esm2022/card/lib/card/card.module.mjs +19 -0
- package/esm2022/card/public-api.mjs +3 -0
- package/esm2022/card/seniorsistemas-angular-components-card.mjs +5 -0
- package/esm2022/chat/lib/chat/chat.component.mjs +29 -0
- package/esm2022/chat/lib/chat/chat.module.mjs +22 -0
- package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +29 -0
- package/esm2022/chat/lib/chat/types/chat-message.mjs +2 -0
- package/esm2022/chat/public-api.mjs +3 -0
- package/esm2022/chat/seniorsistemas-angular-components-chat.mjs +5 -0
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +67 -0
- package/esm2022/checkbox/public-api.mjs +2 -0
- package/esm2022/checkbox/seniorsistemas-angular-components-checkbox.mjs +5 -0
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +129 -0
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +19 -0
- package/esm2022/checkbox-list/lib/checkbox-list/models/checkbox-list-data.mjs +2 -0
- package/esm2022/checkbox-list/lib/checkbox-list/models/checkbox-list-state.mjs +2 -0
- package/esm2022/checkbox-list/public-api.mjs +3 -0
- package/esm2022/checkbox-list/seniorsistemas-angular-components-checkbox-list.mjs +5 -0
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +67 -0
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +241 -0
- package/esm2022/chips/lib/chips/chips.module.mjs +22 -0
- package/esm2022/chips/lib/chips/models/chip-models.mjs +2 -0
- package/esm2022/chips/public-api.mjs +3 -0
- package/esm2022/chips/seniorsistemas-angular-components-chips.mjs +5 -0
- package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +111 -0
- package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +32 -0
- package/esm2022/code-editor/lib/code-editor/core/facades/core-facade.mjs +85 -0
- package/esm2022/code-editor/lib/code-editor/core/facades/linter-facade.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/core/models/enums/marker-severity.mjs +7 -0
- package/esm2022/code-editor/lib/code-editor/core/models/index.mjs +5 -0
- package/esm2022/code-editor/lib/code-editor/core/models/interfaces/marker.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/core/use-cases/core-linters.mjs +11 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.mjs +97 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/editor-languages.mjs +17 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/json/json.language.mjs +67 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-empty-state.mjs +29 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-loading-state.mjs +29 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper-style.mjs +17 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper.mjs +77 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/index.mjs +4 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-style.mjs +35 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.mjs +334 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.service.mjs +25 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/base-configs.mjs +18 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/grammar.mjs +37 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/completion-types.mjs +10 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/enum-type-order.mjs +8 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/keywords.mjs +12 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/meta-type.mjs +36 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/request-types.mjs +9 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/index.mjs +22 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/completion-Item.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/facade-metadata-name.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/fields-order-by.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/get-facade-metadata-by-path.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-context-metadata-by-id.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-expression-metadata.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-facade-metadata-names.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-expression-metadata.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-context-metadata.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-facade-metadata.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-field-metadata.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-page-request.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/safe-http-communication.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/tax-calculation-configs.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation-language-configs.mjs +11 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation.language.mjs +9 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-language-configs.mjs +14 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-safe-response.mjs +18 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/index.mjs +3 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/index.mjs +4 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/types/diagnostic-severity.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/types/editor-theme.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/editor-themes.mjs +15 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/autocomplete-tooltip.mjs +61 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/font-style.mjs +39 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/line-counter.mjs +25 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/scrollbars.mjs +18 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-highlight-style.mjs +16 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.mjs +13 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-theme.mjs +22 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/convert-markers-to-diagnostics.mjs +15 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/index.mjs +3 -0
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/is-current-position-inside-string.mjs +5 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/custom-http-client.mjs +82 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-blob-response.mjs +10 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-json-response.mjs +9 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/index.mjs +3 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations-service.mjs +37 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +32 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/index.mjs +3 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/models/index.mjs +3 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/models/interfaces/translations.mjs +2 -0
- package/esm2022/code-editor/lib/code-editor/infra/utils/index.mjs +3 -0
- package/esm2022/code-editor/lib/code-editor/models/enums/languages.mjs +6 -0
- package/esm2022/code-editor/lib/code-editor/models/enums/themes.mjs +5 -0
- package/esm2022/code-editor/lib/code-editor/models/index.mjs +6 -0
- package/esm2022/code-editor/lib/code-editor/models/interfaces/editor-options.mjs +2 -0
- package/esm2022/code-editor/public-api.mjs +6 -0
- package/esm2022/code-editor/seniorsistemas-angular-components-code-editor.mjs +5 -0
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +81 -0
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +18 -0
- package/esm2022/collapse-link/public-api.mjs +3 -0
- package/esm2022/collapse-link/seniorsistemas-angular-components-collapse-link.mjs +5 -0
- package/esm2022/common/lib/angular-components.module.mjs +24 -0
- package/esm2022/common/lib/custom-http-client/custom-http-client.mjs +86 -0
- package/esm2022/common/lib/custom-http-client/json-response-formatters/format-blob-response.mjs +10 -0
- package/esm2022/common/lib/custom-http-client/json-response-formatters/format-json-response.mjs +9 -0
- package/esm2022/common/lib/debouce.mjs +35 -0
- package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +11 -0
- package/esm2022/common/lib/svg-factory/components/senior-icon/senior-icon.component.mjs +11 -0
- package/esm2022/common/lib/svg-factory/components/svg-factory-icons.mjs +2 -0
- package/esm2022/common/lib/svg-factory/index.mjs +3 -0
- package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +44 -0
- package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +26 -0
- package/esm2022/common/public-api.mjs +5 -0
- package/esm2022/common/seniorsistemas-angular-components-common.mjs +5 -0
- package/esm2022/confirm-dialog/lib/confirm-dialog.model.mjs +2 -0
- package/esm2022/confirm-dialog/lib/confirm-dialog.service.mjs +34 -0
- package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +17 -0
- package/esm2022/confirm-dialog/public-api.mjs +2 -0
- package/esm2022/confirm-dialog/seniorsistemas-angular-components-confirm-dialog.mjs +5 -0
- package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +52 -0
- package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +19 -0
- package/esm2022/control-errors/public-api.mjs +3 -0
- package/esm2022/control-errors/seniorsistemas-angular-components-control-errors.mjs +5 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +319 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +41 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +42 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/models/country-phone-data.mjs +2 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/models/ordination.mjs +7 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/models/phone-selection-data.mjs +2 -0
- package/esm2022/country-phone-picker/lib/country-phone-picker/resources/countries.mjs +228 -0
- package/esm2022/country-phone-picker/public-api.mjs +5 -0
- package/esm2022/country-phone-picker/seniorsistemas-angular-components-country-phone-picker.mjs +5 -0
- package/esm2022/currency/lib/currency.service.mjs +25 -0
- package/esm2022/currency/lib/models/currencies.mjs +161 -0
- package/esm2022/currency/lib/types/currency.mjs +2 -0
- package/esm2022/currency/public-api.mjs +3 -0
- package/esm2022/currency/seniorsistemas-angular-components-currency.mjs +5 -0
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +690 -0
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +45 -0
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +35 -0
- package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +17 -0
- package/esm2022/custom-fields/public-api.mjs +4 -0
- package/esm2022/custom-fields/seniorsistemas-angular-components-custom-fields.mjs +5 -0
- package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +82 -0
- package/esm2022/dialog/lib/src/dialog/models/active-dialog.mjs +18 -0
- package/esm2022/dialog/lib/src/dialog/models/dialog-models.mjs +2 -0
- package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +96 -0
- package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +29 -0
- package/esm2022/dialog/public-api.mjs +4 -0
- package/esm2022/dialog/seniorsistemas-angular-components-dialog.mjs +5 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/field-label/field-label.component.mjs +20 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/grid/row/row.component.mjs +41 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.mjs +632 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/default-filter.mjs +2 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/label-options.mjs +2 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/structure/base-structure-component.mjs +2 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/structure/fieldset/fieldset.component.mjs +27 -0
- package/esm2022/dynamic-form/lib/dynamic-form/components/structure/section/section.component.mjs +33 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-config.mjs +71 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-type.mjs +26 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/grid.mjs +14 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/row.mjs +10 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid-type.mjs +5 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/fieldset.mjs +10 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/section.mjs +31 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/structure.mjs +9 -0
- package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure-type.mjs +6 -0
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.component.mjs +41 -0
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.directive.mjs +107 -0
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.mjs +189 -0
- package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.module.mjs +289 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/addon-config.mjs +2 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-size.mjs +13 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-type.mjs +34 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +24 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +37 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/blob-field.mjs +31 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-field.mjs +30 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +15 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/button-field.mjs +47 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/calendar-field.mjs +56 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +9 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/chips-field.mjs +25 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +15 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/currency-field.mjs +14 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/decimal-field.mjs +16 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/editor-field.mjs +15 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/field.mjs +64 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.mjs +66 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/number-field.mjs +38 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/password-field.mjs +33 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/profile-picture.mjs +35 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +27 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/select-field.mjs +43 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/slider-field.mjs +30 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +17 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-field.mjs +30 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-ia-field.mjs +32 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-field.mjs +38 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +36 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/base-field-component.mjs +22 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +124 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +27 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +23 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/button-field/button-field.component.mjs +31 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +118 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +21 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/chips/chips-field.component.mjs +59 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +29 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/currency/currency-field.component.mjs +90 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/editor/editor-field.component.mjs +23 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/file-upload/file-upload-field.component.mjs +56 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +23 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/number/number-field.component.mjs +121 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/password/password-field.component.mjs +75 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.mjs +22 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +52 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/select/select-field.component.mjs +24 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/slider/slider-field.component.mjs +103 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.mjs +25 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text/text-field.component.mjs +88 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +29 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.mjs +22 -0
- package/esm2022/dynamic-form/lib/dynamic-form/form-field/form-field.mjs +243 -0
- package/esm2022/dynamic-form/lib/dynamic-form/services/dynamic-form-cache.mjs +150 -0
- package/esm2022/dynamic-form/public-api.mjs +44 -0
- package/esm2022/dynamic-form/seniorsistemas-angular-components-dynamic-form.mjs +5 -0
- package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +44 -0
- package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +18 -0
- package/esm2022/editable-overlay/public-api.mjs +3 -0
- package/esm2022/editable-overlay/seniorsistemas-angular-components-editable-overlay.mjs +5 -0
- package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +51 -0
- package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +22 -0
- package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +34 -0
- package/esm2022/empty-state/public-api.mjs +4 -0
- package/esm2022/empty-state/seniorsistemas-angular-components-empty-state.mjs +5 -0
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +78 -0
- package/esm2022/fieldset/lib/fieldset/fieldset.models.mjs +2 -0
- package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +19 -0
- package/esm2022/fieldset/public-api.mjs +3 -0
- package/esm2022/fieldset/seniorsistemas-angular-components-fieldset.mjs +5 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.component.mjs +276 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.module.mjs +38 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.service.mjs +18 -0
- package/esm2022/file-upload/lib/file-upload/models/file-dto.mjs +2 -0
- package/esm2022/file-upload/lib/file-upload/models/file-upload-permissions.mjs +2 -0
- package/esm2022/file-upload/lib/file-upload/models/list-blob-metadata.mjs +2 -0
- package/esm2022/file-upload/lib/file-upload/models/uploadError.mjs +2 -0
- package/esm2022/file-upload/lib/file-upload/models/validate-errors.mjs +2 -0
- package/esm2022/file-upload/public-api.mjs +3 -0
- package/esm2022/file-upload/seniorsistemas-angular-components-file-upload.mjs +5 -0
- package/esm2022/gantt/lib/gantt/components/gantt/arrow.mjs +87 -0
- package/esm2022/gantt/lib/gantt/components/gantt/bar.mjs +294 -0
- package/esm2022/gantt/lib/gantt/components/gantt/gantt-options.mjs +20 -0
- package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +812 -0
- package/esm2022/gantt/lib/gantt/components/gantt/popup.mjs +110 -0
- package/esm2022/gantt/lib/gantt/components/gantt/utils/date-utils.mjs +116 -0
- package/esm2022/gantt/lib/gantt/components/gantt/utils/svg-utils.mjs +111 -0
- package/esm2022/gantt/lib/gantt/components/side-table/side-table.component.mjs +32 -0
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +146 -0
- package/esm2022/gantt/lib/gantt/gantt.module.mjs +24 -0
- package/esm2022/gantt/lib/gantt/models/index.mjs +2 -0
- package/esm2022/gantt/lib/gantt/models/options.mjs +2 -0
- package/esm2022/gantt/lib/gantt/models/task.mjs +2 -0
- package/esm2022/gantt/lib/gantt/models/view-mode.mjs +12 -0
- package/esm2022/gantt/public-api.mjs +4 -0
- package/esm2022/gantt/seniorsistemas-angular-components-gantt.mjs +5 -0
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +73 -0
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +140 -0
- package/esm2022/global-search/lib/global-search/global-search.module.mjs +78 -0
- package/esm2022/global-search/lib/global-search/types/global-search-size.enum.mjs +2 -0
- package/esm2022/global-search/public-api.mjs +5 -0
- package/esm2022/global-search/seniorsistemas-angular-components-global-search.mjs +5 -0
- package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +34 -0
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +19 -0
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +19 -0
- package/esm2022/grid-menu/lib/grid-menu/types/grid-menu-item.mjs +2 -0
- package/esm2022/grid-menu/public-api.mjs +4 -0
- package/esm2022/grid-menu/seniorsistemas-angular-components-grid-menu.mjs +5 -0
- package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +84 -0
- package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +314 -0
- package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +25 -0
- package/esm2022/help-popover/lib/help-popover/models/help-popover.models.mjs +2 -0
- package/esm2022/help-popover/public-api.mjs +4 -0
- package/esm2022/help-popover/seniorsistemas-angular-components-help-popover.mjs +5 -0
- package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/components/ia-insight-card-loader/ia-insight-card-loader.component.mjs +13 -0
- package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/ia-insight-card.component.mjs +82 -0
- package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.mjs +49 -0
- package/esm2022/ia-insight/lib/ia-insight/ia-insight.component.mjs +66 -0
- package/esm2022/ia-insight/lib/ia-insight/ia-insight.module.mjs +47 -0
- package/esm2022/ia-insight/lib/ia-insight/models/ia-insight-item.mjs +2 -0
- package/esm2022/ia-insight/lib/ia-insight/models/ia-insight-template-types.mjs +2 -0
- package/esm2022/ia-insight/lib/ia-insight/models/index.mjs +2 -0
- package/esm2022/ia-insight/public-api.mjs +4 -0
- package/esm2022/ia-insight/seniorsistemas-angular-components-ia-insight.mjs +5 -0
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +179 -0
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +23 -0
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +73 -0
- package/esm2022/image-cropper/public-api.mjs +4 -0
- package/esm2022/image-cropper/seniorsistemas-angular-components-image-cropper.mjs +5 -0
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +28 -0
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +18 -0
- package/esm2022/infinite-scroll/public-api.mjs +3 -0
- package/esm2022/infinite-scroll/seniorsistemas-angular-components-infinite-scroll.mjs +5 -0
- package/esm2022/info-sign/lib/info-sign/components/info-sign/info-sign.component.mjs +17 -0
- package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +68 -0
- package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +20 -0
- package/esm2022/info-sign/public-api.mjs +3 -0
- package/esm2022/info-sign/seniorsistemas-angular-components-info-sign.mjs +5 -0
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +53 -0
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.mjs +32 -0
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +85 -0
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +32 -0
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area/inline-edit-text-area.component.mjs +33 -0
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area-ia/inline-edit-text-area-ia.component.mjs +32 -0
- package/esm2022/inline-edit/lib/inline-edit/components/index.mjs +8 -0
- package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +105 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/index.mjs +8 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-calendar-field.mjs +45 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-field.mjs +13 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-lookup-field.mjs +60 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-number-field.mjs +38 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-area-field.mjs +15 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-area-ia-field.mjs +7 -0
- package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-field.mjs +7 -0
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +66 -0
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +102 -0
- package/esm2022/inline-edit/lib/inline-edit/types/addon-config.mjs +2 -0
- package/esm2022/inline-edit/public-api.mjs +4 -0
- package/esm2022/inline-edit/seniorsistemas-angular-components-inline-edit.mjs +5 -0
- package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +63 -0
- package/esm2022/interactive-content/public-api.mjs +2 -0
- package/esm2022/interactive-content/seniorsistemas-angular-components-interactive-content.mjs +5 -0
- package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +100 -0
- package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +62 -0
- package/esm2022/kanban/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +17 -0
- package/esm2022/kanban/lib/kanban/kanban-event.service.mjs +26 -0
- package/esm2022/kanban/lib/kanban/kanban.component.mjs +219 -0
- package/esm2022/kanban/lib/kanban/kanban.module.mjs +56 -0
- package/esm2022/kanban/lib/kanban/types/index.mjs +2 -0
- package/esm2022/kanban/lib/kanban/types/kanban-data.mjs +2 -0
- package/esm2022/kanban/lib/kanban/types/kanban-template-types.mjs +2 -0
- package/esm2022/kanban/public-api.mjs +3 -0
- package/esm2022/kanban/seniorsistemas-angular-components-kanban.mjs +5 -0
- package/esm2022/label-value/lib/label-value/label-value.component.mjs +35 -0
- package/esm2022/label-value/lib/label-value/label-value.module.mjs +22 -0
- package/esm2022/label-value/lib/label-value/types/label-value-configuration.mjs +2 -0
- package/esm2022/label-value/public-api.mjs +3 -0
- package/esm2022/label-value/seniorsistemas-angular-components-label-value.mjs +5 -0
- package/esm2022/lib/locale/fallback.mjs +333 -0
- package/esm2022/loading-state/lib/loading-state/components/dots-indicator/dots-indicator.components.mjs +11 -0
- package/esm2022/loading-state/lib/loading-state/components/loading-state-indicators.mjs +6 -0
- package/esm2022/loading-state/lib/loading-state/components/logo-indicator/logo-indicator.component.mjs +12 -0
- package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +74 -0
- package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +62 -0
- package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +30 -0
- package/esm2022/loading-state/public-api.mjs +5 -0
- package/esm2022/loading-state/seniorsistemas-angular-components-loading-state.mjs +5 -0
- package/esm2022/locale/lib/locale/locale.module.mjs +85 -0
- package/esm2022/locale/lib/locale/locale.service.mjs +87 -0
- package/esm2022/locale/lib/locale/options/calendar.mjs +24 -0
- package/esm2022/locale/lib/locale/options/index.mjs +27 -0
- package/esm2022/locale/lib/locale/options/number.mjs +9 -0
- package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +18 -0
- package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +38 -0
- package/esm2022/locale/lib/locale/pipes/localized-currency-impure.pipe.mjs +21 -0
- package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +53 -0
- package/esm2022/locale/lib/locale/pipes/localized-date-impure.pipe.mjs +15 -0
- package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +23 -0
- package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +31 -0
- package/esm2022/locale/lib/locale/pipes/localized-time-impure.pipe.mjs +15 -0
- package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +23 -0
- package/esm2022/locale/public-api.mjs +13 -0
- package/esm2022/locale/seniorsistemas-angular-components-locale.mjs +5 -0
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +63 -0
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +18 -0
- package/esm2022/localized-number-input/public-api.mjs +3 -0
- package/esm2022/localized-number-input/seniorsistemas-angular-components-localized-number-input.mjs +5 -0
- package/esm2022/mask/lib/mask/mask-formatter.module.mjs +16 -0
- package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +65 -0
- package/esm2022/mask/public-api.mjs +3 -0
- package/esm2022/mask/seniorsistemas-angular-components-mask.mjs +5 -0
- package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +37 -0
- package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +51 -0
- package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +27 -0
- package/esm2022/mouse-events/public-api.mjs +4 -0
- package/esm2022/mouse-events/seniorsistemas-angular-components-mouse-events.mjs +5 -0
- package/esm2022/navigation-button/lib/navigation-button/models/index.mjs +2 -0
- package/esm2022/navigation-button/lib/navigation-button/models/navigation-button-item.mjs +2 -0
- package/esm2022/navigation-button/lib/navigation-button/models/navigation-button-step-changed-info.mjs +2 -0
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +134 -0
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +20 -0
- package/esm2022/navigation-button/public-api.mjs +4 -0
- package/esm2022/navigation-button/seniorsistemas-angular-components-navigation-button.mjs +5 -0
- package/esm2022/number-input/lib/number-input/number-input.directive.mjs +164 -0
- package/esm2022/number-input/lib/number-input/number-input.module.mjs +21 -0
- package/esm2022/number-input/public-api.mjs +3 -0
- package/esm2022/number-input/seniorsistemas-angular-components-number-input.mjs +5 -0
- package/esm2022/numeric/lib/numeric.module.mjs +18 -0
- package/esm2022/numeric/lib/numeric.pipe.mjs +29 -0
- package/esm2022/numeric/lib/numeric.service.mjs +92 -0
- package/esm2022/numeric/public-api.mjs +4 -0
- package/esm2022/numeric/seniorsistemas-angular-components-numeric.mjs +5 -0
- package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +51 -0
- package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +87 -0
- package/esm2022/object-card/lib/object-card/object-card.component.mjs +171 -0
- package/esm2022/object-card/lib/object-card/object-card.module.mjs +24 -0
- package/esm2022/object-card/public-api.mjs +5 -0
- package/esm2022/object-card/seniorsistemas-angular-components-object-card.mjs +5 -0
- package/esm2022/paginator/lib/models/paginator.models.mjs +2 -0
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +138 -0
- package/esm2022/paginator/public-api.mjs +2 -0
- package/esm2022/paginator/seniorsistemas-angular-components-paginator.mjs +5 -0
- package/esm2022/panel/lib/panel/panel.component.mjs +91 -0
- package/esm2022/panel/lib/panel/panel.module.mjs +20 -0
- package/esm2022/panel/public-api.mjs +3 -0
- package/esm2022/panel/seniorsistemas-angular-components-panel.mjs +5 -0
- package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +92 -0
- package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +210 -0
- package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +19 -0
- package/esm2022/password-strength/lib/password-strength/types/password-positions.mjs +2 -0
- package/esm2022/password-strength/lib/password-strength/types/password-strengths.mjs +2 -0
- package/esm2022/password-strength/public-api.mjs +4 -0
- package/esm2022/password-strength/seniorsistemas-angular-components-password-strength.mjs +5 -0
- package/esm2022/picklist/lib/picklist/picklist.component.mjs +299 -0
- package/esm2022/picklist/lib/picklist/picklist.module.mjs +36 -0
- package/esm2022/picklist/lib/picklist/types/index.mjs +2 -0
- package/esm2022/picklist/lib/picklist/types/picklist-item.mjs +2 -0
- package/esm2022/picklist/lib/picklist/types/picklist-template-types.mjs +2 -0
- package/esm2022/picklist/public-api.mjs +5 -0
- package/esm2022/picklist/seniorsistemas-angular-components-picklist.mjs +5 -0
- package/esm2022/product-header/lib/product-header/product-header.component.mjs +44 -0
- package/esm2022/product-header/lib/product-header/product-header.module.mjs +20 -0
- package/esm2022/product-header/public-api.mjs +3 -0
- package/esm2022/product-header/seniorsistemas-angular-components-product-header.mjs +5 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/confirmation-texts.mjs +2 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/cropper-labels-config.mjs +2 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/file-validation-errors.mjs +2 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/index.mjs +2 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/profile-picture-picker-data.mjs +2 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +277 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +25 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/validators/index.mjs +2 -0
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/validators/validators.mjs +28 -0
- package/esm2022/profile-picture-picker/public-api.mjs +4 -0
- package/esm2022/profile-picture-picker/seniorsistemas-angular-components-profile-picture-picker.mjs +5 -0
- package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +60 -0
- package/esm2022/progressbar/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.mjs +19 -0
- package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +57 -0
- package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +21 -0
- package/esm2022/progressbar/lib/progressbar/types/index.mjs +2 -0
- package/esm2022/progressbar/lib/progressbar/types/progressbar-colors.mjs +2 -0
- package/esm2022/progressbar/lib/progressbar/types/progressbar-mode.mjs +2 -0
- package/esm2022/progressbar/public-api.mjs +4 -0
- package/esm2022/progressbar/seniorsistemas-angular-components-progressbar.mjs +5 -0
- package/esm2022/public-api.mjs +2 -0
- package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +82 -0
- package/esm2022/radio-button/lib/radio-button-group/models/radio-button-group.models.mjs +2 -0
- package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +62 -0
- package/esm2022/radio-button/lib/services/radio-button-registry.service.mjs +38 -0
- package/esm2022/radio-button/public-api.mjs +3 -0
- package/esm2022/radio-button/seniorsistemas-angular-components-radio-button.mjs +5 -0
- package/esm2022/rating-scale/lib/rating-scale/models/index.mjs +2 -0
- package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +2 -0
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +54 -0
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +24 -0
- package/esm2022/rating-scale/public-api.mjs +3 -0
- package/esm2022/rating-scale/seniorsistemas-angular-components-rating-scale.mjs +5 -0
- package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +27 -0
- package/esm2022/select/lib/select/select.component.mjs +712 -0
- package/esm2022/select/public-api.mjs +2 -0
- package/esm2022/select/seniorsistemas-angular-components-select.mjs +5 -0
- package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +28 -0
- package/esm2022/select-button/lib/select-button/models/select-button-item.mjs +2 -0
- package/esm2022/select-button/lib/select-button/select-button.component.mjs +122 -0
- package/esm2022/select-button/lib/select-button/select-button.module.mjs +23 -0
- package/esm2022/select-button/public-api.mjs +3 -0
- package/esm2022/select-button/seniorsistemas-angular-components-select-button.mjs +5 -0
- package/esm2022/seniorsistemas-angular-components.mjs +5 -0
- package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +19 -0
- package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +19 -0
- package/esm2022/shared/lib/shared/helpers.mjs +31 -0
- package/esm2022/shared/lib/shared/models/border-button-options.mjs +2 -0
- package/esm2022/shared/lib/shared/models/severities.mjs +9 -0
- package/esm2022/shared/public-api.mjs +5 -0
- package/esm2022/shared/seniorsistemas-angular-components-shared.mjs +5 -0
- package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +114 -0
- package/esm2022/sidebar/lib/sidebar/sidebar.module.mjs +20 -0
- package/esm2022/sidebar/public-api.mjs +3 -0
- package/esm2022/sidebar/seniorsistemas-angular-components-sidebar.mjs +5 -0
- package/esm2022/slide-panel/lib/slide-panel/slide-panel.component.mjs +137 -0
- package/esm2022/slide-panel/lib/slide-panel/slide-panel.module.mjs +20 -0
- package/esm2022/slide-panel/lib/slide-panel/slide-panel.service.mjs +26 -0
- package/esm2022/slide-panel/public-api.mjs +4 -0
- package/esm2022/slide-panel/seniorsistemas-angular-components-slide-panel.mjs +5 -0
- package/esm2022/slider/lib/slider/slider.component.mjs +601 -0
- package/esm2022/slider/lib/slider/slider.module.mjs +19 -0
- package/esm2022/slider/public-api.mjs +3 -0
- package/esm2022/slider/seniorsistemas-angular-components-slider.mjs +5 -0
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +217 -0
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +24 -0
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +146 -0
- package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +81 -0
- package/esm2022/speech-recognition/public-api.mjs +5 -0
- package/esm2022/speech-recognition/seniorsistemas-angular-components-speech-recognition.mjs +5 -0
- package/esm2022/split-button/lib/split-button/models/index.mjs +2 -0
- package/esm2022/split-button/lib/split-button/models/split-button-option.mjs +2 -0
- package/esm2022/split-button/lib/split-button/models/split-button-type.mjs +2 -0
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +64 -0
- package/esm2022/split-button/lib/split-button/split-button.module.mjs +18 -0
- package/esm2022/split-button/public-api.mjs +4 -0
- package/esm2022/split-button/seniorsistemas-angular-components-split-button.mjs +5 -0
- package/esm2022/star-rating/public-api.mjs +2 -0
- package/esm2022/star-rating/seniorsistemas-angular-components-star-rating.mjs +5 -0
- package/esm2022/star-rating/star-rating/star-rating-models.mjs +2 -0
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +63 -0
- package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +119 -0
- package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +19 -0
- package/esm2022/stats-card/public-api.mjs +3 -0
- package/esm2022/stats-card/seniorsistemas-angular-components-stats-card.mjs +5 -0
- package/esm2022/steps/lib/steps/steps.component.mjs +122 -0
- package/esm2022/steps/lib/steps/steps.module.mjs +19 -0
- package/esm2022/steps/public-api.mjs +3 -0
- package/esm2022/steps/seniorsistemas-angular-components-steps.mjs +5 -0
- package/esm2022/structure/lib/structure/footer.component.mjs +14 -0
- package/esm2022/structure/lib/structure/header.component.mjs +14 -0
- package/esm2022/structure/lib/structure/structure.module.mjs +19 -0
- package/esm2022/structure/public-api.mjs +5 -0
- package/esm2022/structure/seniorsistemas-angular-components-structure.mjs +5 -0
- package/esm2022/switch/lib/switch/switch.component.mjs +93 -0
- package/esm2022/switch/lib/switch/switch.module.mjs +18 -0
- package/esm2022/switch/public-api.mjs +3 -0
- package/esm2022/switch/seniorsistemas-angular-components-switch.mjs +5 -0
- package/esm2022/table/lib/locale-utils.mjs +15 -0
- package/esm2022/table/lib/table/export-utils.mjs +112 -0
- package/esm2022/table/lib/table/navigation/navigation.directive.mjs +130 -0
- package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +38 -0
- package/esm2022/table/lib/table/table-column/index.mjs +3 -0
- package/esm2022/table/lib/table/table-column/models/badge-column.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/badge-configs.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/column-colors.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/column-values.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/column.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/dynamic-editable-grid.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/enum-badge-colors.mjs +10 -0
- package/esm2022/table/lib/table/table-column/models/enum-column-field-type.mjs +13 -0
- package/esm2022/table/lib/table/table-column/models/index.mjs +11 -0
- package/esm2022/table/lib/table/table-column/models/locale-options.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/models/number-locale-options.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +299 -0
- package/esm2022/table/lib/table/table-paging/index.mjs +3 -0
- package/esm2022/table/lib/table/table-paging/models/custom-action.interface.mjs +2 -0
- package/esm2022/table/lib/table/table-paging/models/index.mjs +2 -0
- package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +321 -0
- package/esm2022/table/lib/table/table.module.mjs +27 -0
- package/esm2022/table/public-api.mjs +6 -0
- package/esm2022/table/seniorsistemas-angular-components-table.mjs +5 -0
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +151 -0
- package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +20 -0
- package/esm2022/table-header/public-api.mjs +3 -0
- package/esm2022/table-header/seniorsistemas-angular-components-table-header.mjs +5 -0
- package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +36 -0
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +51 -0
- package/esm2022/tabs/public-api.mjs +3 -0
- package/esm2022/tabs/seniorsistemas-angular-components-tabs.mjs +5 -0
- package/esm2022/template/lib/template/template.directive.mjs +22 -0
- package/esm2022/template/lib/template/template.module.mjs +17 -0
- package/esm2022/template/public-api.mjs +3 -0
- package/esm2022/template/seniorsistemas-angular-components-template.mjs +5 -0
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +116 -0
- package/esm2022/text-area/lib/text-area.module.mjs +35 -0
- package/esm2022/text-area/public-api.mjs +3 -0
- package/esm2022/text-area/seniorsistemas-angular-components-text-area.mjs +5 -0
- package/esm2022/text-area-ia/lib/services/IAssist/iassist.service.mjs +77 -0
- package/esm2022/text-area-ia/lib/services/IAssist/models/iassist-input-data.mjs +3 -0
- package/esm2022/text-area-ia/lib/services/IAssist/models/iassist-response.mjs +3 -0
- package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.component.mjs +150 -0
- package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.module.mjs +50 -0
- package/esm2022/text-area-ia/public-api.mjs +3 -0
- package/esm2022/text-area-ia/seniorsistemas-angular-components-text-area-ia.mjs +5 -0
- package/esm2022/thumbnail/lib/thumbnail/thumbnail-size.mjs +2 -0
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +77 -0
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +20 -0
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.service.mjs +62 -0
- package/esm2022/thumbnail/public-api.mjs +4 -0
- package/esm2022/thumbnail/seniorsistemas-angular-components-thumbnail.mjs +5 -0
- package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-image/thumbnail-item-image.component.mjs +17 -0
- package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-video/thumbnail-item-video.component.mjs +42 -0
- package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +64 -0
- package/esm2022/thumbnails/lib/thumbnails/models/thumbnails-item.mjs +2 -0
- package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +48 -0
- package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +24 -0
- package/esm2022/thumbnails/public-api.mjs +3 -0
- package/esm2022/thumbnails/seniorsistemas-angular-components-thumbnails.mjs +5 -0
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +303 -0
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +73 -0
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +179 -0
- package/esm2022/tiered-menu/lib/tiered-menu/models/index.mjs +2 -0
- package/esm2022/tiered-menu/lib/tiered-menu/models/tiered-menu-item-data.mjs +2 -0
- package/esm2022/tiered-menu/lib/tiered-menu/models/tiered-menu-item-internal-data.mjs +2 -0
- package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.event.service.mjs +17 -0
- package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.global.service.mjs +11 -0
- package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.service.mjs +54 -0
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +234 -0
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +34 -0
- package/esm2022/tiered-menu/public-api.mjs +6 -0
- package/esm2022/tiered-menu/seniorsistemas-angular-components-tiered-menu.mjs +5 -0
- package/esm2022/tile/lib/tile/tile.component.mjs +65 -0
- package/esm2022/tile/lib/tile/tile.module.mjs +20 -0
- package/esm2022/tile/public-api.mjs +3 -0
- package/esm2022/tile/seniorsistemas-angular-components-tile.mjs +5 -0
- package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.component.mjs +24 -0
- package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.module.mjs +20 -0
- package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.component.mjs +26 -0
- package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.module.mjs +19 -0
- package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapse-option/collapse-option.component.mjs +21 -0
- package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapsed-items/collapsed-items.component.mjs +33 -0
- package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/range-line/range-line.component.mjs +11 -0
- package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/vertical-items/vertical-items.component.mjs +29 -0
- package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.component.mjs +60 -0
- package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.module.mjs +33 -0
- package/esm2022/timeline/lib/timeline/models/timeline-item-severity.mjs +7 -0
- package/esm2022/timeline/lib/timeline/models/timeline-item-size.mjs +6 -0
- package/esm2022/timeline/lib/timeline/models/timeline-item.mjs +44 -0
- package/esm2022/timeline/lib/timeline/timeline.component.mjs +66 -0
- package/esm2022/timeline/lib/timeline/timeline.module.mjs +32 -0
- package/esm2022/timeline/public-api.mjs +6 -0
- package/esm2022/timeline/seniorsistemas-angular-components-timeline.mjs +5 -0
- package/esm2022/toast/lib/toast/toast.component.mjs +46 -0
- package/esm2022/toast/lib/toast/toast.module.mjs +17 -0
- package/esm2022/toast/lib/toast/toast.service.mjs +68 -0
- package/esm2022/toast/lib/toast/types/toast.mjs +2 -0
- package/esm2022/toast/public-api.mjs +4 -0
- package/esm2022/toast/seniorsistemas-angular-components-toast.mjs +5 -0
- package/esm2022/token-list/lib/token-list/models/index.mjs +2 -0
- package/esm2022/token-list/lib/token-list/models/token.mjs +2 -0
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +42 -0
- package/esm2022/token-list/lib/token-list/token-list.module.mjs +18 -0
- package/esm2022/token-list/public-api.mjs +4 -0
- package/esm2022/token-list/seniorsistemas-angular-components-token-list.mjs +5 -0
- package/esm2022/tooltip/lib/tooltip/models/mobile-behavior.mjs +2 -0
- package/esm2022/tooltip/lib/tooltip/models/tooltip-event.mjs +2 -0
- package/esm2022/tooltip/lib/tooltip/models/tooltip-position.mjs +2 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.component.mjs +18 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +339 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +19 -0
- package/esm2022/tooltip/public-api.mjs +3 -0
- package/esm2022/tooltip/seniorsistemas-angular-components-tooltip.mjs +5 -0
- package/esm2022/utils/lib/utils/breakpoints.mjs +11 -0
- package/esm2022/utils/lib/utils/utils.mjs +51 -0
- package/esm2022/utils/public-api.mjs +3 -0
- package/esm2022/utils/seniorsistemas-angular-components-utils.mjs +5 -0
- package/esm2022/workspace-switch/lib/workspace-switch/models/index.mjs +2 -0
- package/esm2022/workspace-switch/lib/workspace-switch/models/workspace.mjs +2 -0
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +137 -0
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +18 -0
- package/esm2022/workspace-switch/public-api.mjs +3 -0
- package/esm2022/workspace-switch/seniorsistemas-angular-components-workspace-switch.mjs +5 -0
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-button.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-card.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-chat.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +11 -11
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-common.mjs +20 -20
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +6 -6
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-currency.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +9 -9
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +125 -119
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +9 -10
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-upload.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-ia-insight.mjs +16 -16
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +28 -28
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +7 -3
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +19 -19
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +16 -16
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +34 -34
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-mask.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +8 -8
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +13 -13
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-product-header.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +13 -13
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +182 -0
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-select.mjs +6 -6
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +42 -23
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slide-panel.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +8 -8
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +13 -13
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-steps.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-steps.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-structure.mjs +11 -11
- package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-table.mjs +16 -16
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +91 -0
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-template.mjs +12 -15
- package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +16 -16
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +54 -92
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs +40 -40
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +10 -10
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +24 -14
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-utils.mjs +13 -4
- package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +7 -7
- package/fesm2022/seniorsistemas-angular-components.mjs +1 -0
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/fieldset/lib/fieldset/fieldset.component.d.ts +1 -1
- package/fieldset/lib/fieldset/fieldset.module.d.ts +1 -2
- package/index.d.ts +5 -0
- package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +2 -1
- package/lib/locale/fallback.d.ts +1 -0
- package/package.json +13 -89
- package/public-api.d.ts +1 -0
- package/radio-button/index.d.ts +5 -0
- package/radio-button/lib/radio-button/radio-button.component.d.ts +31 -0
- package/radio-button/lib/radio-button-group/models/radio-button-group.models.d.ts +5 -0
- package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +25 -0
- package/radio-button/lib/services/radio-button-registry.service.d.ts +12 -0
- package/radio-button/public-api.d.ts +3 -0
- package/select/index.d.ts +5 -0
- package/select/lib/select/components/select-option/select-option.component.d.ts +14 -0
- package/select/lib/select/select.component.d.ts +275 -0
- package/select/public-api.d.ts +1 -0
- package/sidebar/lib/sidebar/sidebar.component.d.ts +7 -6
- package/src/lib/styles/tailwind.scss +4 -0
- package/tabs/index.d.ts +5 -0
- package/tabs/lib/tab-item/tab-item.component.d.ts +18 -0
- package/tabs/lib/tabs/tabs.component.d.ts +16 -0
- package/tabs/public-api.d.ts +2 -0
- package/tailwind.css +455 -414
- package/template/lib/template/template.directive.d.ts +2 -3
- package/template/lib/template/template.module.d.ts +3 -3
- package/tooltip/lib/tooltip/tooltip.directive.d.ts +4 -2
- package/tooltip/lib/tooltip/tooltip.module.d.ts +3 -3
- package/utils/lib/utils/utils.d.ts +2 -0
- package/accordion/package.json +0 -3
- package/alert/package.json +0 -3
- package/badge/package.json +0 -3
- package/bignumber-input/package.json +0 -3
- package/breadcrumb/package.json +0 -3
- package/button/package.json +0 -3
- package/calendar-mask/package.json +0 -3
- package/card/package.json +0 -3
- package/chat/package.json +0 -3
- package/checkbox/package.json +0 -3
- package/checkbox-list/package.json +0 -3
- package/chips/package.json +0 -3
- package/code-editor/package.json +0 -3
- package/collapse-link/package.json +0 -3
- package/common/package.json +0 -3
- package/confirm-dialog/package.json +0 -3
- package/control-errors/package.json +0 -3
- package/country-phone-picker/package.json +0 -3
- package/currency/package.json +0 -3
- package/custom-fields/package.json +0 -3
- package/dialog/package.json +0 -3
- package/dynamic-form/package.json +0 -3
- package/editable-overlay/package.json +0 -3
- package/empty-state/package.json +0 -3
- package/fieldset/package.json +0 -3
- package/file-upload/package.json +0 -3
- package/gantt/package.json +0 -3
- package/global-search/package.json +0 -3
- package/grid-menu/package.json +0 -3
- package/help-popover/package.json +0 -3
- package/ia-insight/package.json +0 -3
- package/image-cropper/package.json +0 -3
- package/infinite-scroll/package.json +0 -3
- package/info-sign/package.json +0 -3
- package/inline-edit/package.json +0 -3
- package/interactive-content/package.json +0 -3
- package/kanban/package.json +0 -3
- package/label-value/package.json +0 -3
- package/loading-state/package.json +0 -3
- package/locale/package.json +0 -3
- package/localized-number-input/package.json +0 -3
- package/mask/package.json +0 -3
- package/mouse-events/package.json +0 -3
- package/navigation-button/package.json +0 -3
- package/number-input/package.json +0 -3
- package/numeric/package.json +0 -3
- package/object-card/package.json +0 -3
- package/paginator/package.json +0 -3
- package/panel/package.json +0 -3
- package/password-strength/package.json +0 -3
- package/picklist/package.json +0 -3
- package/product-header/package.json +0 -3
- package/profile-picture-picker/package.json +0 -3
- package/progressbar/package.json +0 -3
- package/rating-scale/package.json +0 -3
- package/select-button/package.json +0 -3
- package/shared/package.json +0 -3
- package/sidebar/package.json +0 -3
- package/slide-panel/package.json +0 -3
- package/slider/package.json +0 -3
- package/speech-recognition/package.json +0 -3
- package/split-button/package.json +0 -3
- package/star-rating/package.json +0 -3
- package/stats-card/package.json +0 -3
- package/steps/package.json +0 -3
- package/structure/package.json +0 -3
- package/switch/package.json +0 -3
- package/table/package.json +0 -3
- package/table-header/package.json +0 -3
- package/template/package.json +0 -3
- package/text-area/package.json +0 -3
- package/text-area-ia/package.json +0 -3
- package/thumbnail/package.json +0 -3
- package/thumbnails/package.json +0 -3
- package/tiered-menu/lib/tiered-menu/utils.d.ts +0 -2
- package/tiered-menu/package.json +0 -3
- package/tile/package.json +0 -3
- package/timeline/package.json +0 -3
- package/toast/package.json +0 -3
- package/token-list/package.json +0 -3
- package/tooltip/package.json +0 -3
- package/utils/package.json +0 -3
- package/workspace-switch/package.json +0 -3
|
@@ -0,0 +1,690 @@
|
|
|
1
|
+
import { HttpEventType } from '@angular/common/http';
|
|
2
|
+
import { Component, Input, Optional, } from '@angular/core';
|
|
3
|
+
import { FormArray, FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
|
|
4
|
+
import BigNumber from 'bignumber.js';
|
|
5
|
+
import { Subject, forkJoin, of, throwError } from 'rxjs';
|
|
6
|
+
import { catchError, finalize, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { DynamicType, FieldType, FormField, NumberField, NumberFieldComponent } from '@seniorsistemas/angular-components/dynamic-form';
|
|
8
|
+
import moment from 'moment';
|
|
9
|
+
import { CustomFieldType } from './models/custom-field-type';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "./custom-fields.service";
|
|
12
|
+
import * as i2 from "@seniorsistemas/angular-components/locale";
|
|
13
|
+
import * as i3 from "@angular/platform-browser";
|
|
14
|
+
import * as i4 from "@ngx-translate/core";
|
|
15
|
+
import * as i5 from "@angular/forms";
|
|
16
|
+
import * as i6 from "@seniorsistemas/angular-components/dynamic-form";
|
|
17
|
+
export class CustomFieldsComponent {
|
|
18
|
+
customFieldsService;
|
|
19
|
+
localeService;
|
|
20
|
+
sanitizer;
|
|
21
|
+
translateService;
|
|
22
|
+
controlContainer;
|
|
23
|
+
domain;
|
|
24
|
+
service;
|
|
25
|
+
entity;
|
|
26
|
+
invalidErrorLabel = '';
|
|
27
|
+
entityObject;
|
|
28
|
+
customFieldsEndpoint = 'platform/field_customization/queries/getEntity';
|
|
29
|
+
fileLocationEndpoint = 'platform/field_customization/actions/requestUpload';
|
|
30
|
+
requestAccessEndpoint = 'platform/field_customization/actions/requestAccess';
|
|
31
|
+
requiredErrorMessage = '';
|
|
32
|
+
displayTimeInfoSign = 0;
|
|
33
|
+
showFileUploadDate = false;
|
|
34
|
+
ready$ = null;
|
|
35
|
+
disableFields;
|
|
36
|
+
rowType = DynamicType.Row;
|
|
37
|
+
fields = [];
|
|
38
|
+
formGroup = new FormGroup({});
|
|
39
|
+
ready = false;
|
|
40
|
+
onChange;
|
|
41
|
+
onTouched;
|
|
42
|
+
value;
|
|
43
|
+
ngUsubscribe = new Subject();
|
|
44
|
+
uploadCanceled;
|
|
45
|
+
hasBlob;
|
|
46
|
+
hasUploaded;
|
|
47
|
+
constructor(customFieldsService, localeService, sanitizer, translateService, controlContainer) {
|
|
48
|
+
this.customFieldsService = customFieldsService;
|
|
49
|
+
this.localeService = localeService;
|
|
50
|
+
this.sanitizer = sanitizer;
|
|
51
|
+
this.translateService = translateService;
|
|
52
|
+
this.controlContainer = controlContainer;
|
|
53
|
+
this.invalidErrorLabel = this.translateService.instant('platform.angular_components.invalid_value');
|
|
54
|
+
}
|
|
55
|
+
get hasCustomFields() {
|
|
56
|
+
return !!this.fields?.length;
|
|
57
|
+
}
|
|
58
|
+
get parentForm() {
|
|
59
|
+
return this.controlContainer.control;
|
|
60
|
+
}
|
|
61
|
+
get parentControl() {
|
|
62
|
+
return this.parentForm.get('custom');
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
this._validateInputs();
|
|
66
|
+
this._createForm();
|
|
67
|
+
this.addDisplayTimeInfoSignToFields();
|
|
68
|
+
}
|
|
69
|
+
ngAfterViewInit() {
|
|
70
|
+
this.enableOrDisableFields(!!this.disableFields);
|
|
71
|
+
this.formGroup.valueChanges.subscribe(() => this.onChange?.(this.parseFieldsValues()));
|
|
72
|
+
}
|
|
73
|
+
ngOnChanges(changes) {
|
|
74
|
+
const _disableFields = changes['disableFields'];
|
|
75
|
+
if (_disableFields) {
|
|
76
|
+
this.enableOrDisableFields(_disableFields.currentValue);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
ngOnDestroy() {
|
|
80
|
+
this.ngUsubscribe.next();
|
|
81
|
+
this.ngUsubscribe.complete();
|
|
82
|
+
}
|
|
83
|
+
registerOnChange(fn) {
|
|
84
|
+
this.onChange = fn;
|
|
85
|
+
}
|
|
86
|
+
registerOnTouched(fn) {
|
|
87
|
+
this.onTouched = fn;
|
|
88
|
+
}
|
|
89
|
+
writeValue(value) {
|
|
90
|
+
if (this.ready) {
|
|
91
|
+
const newValue = this.parseValuesForFields(value);
|
|
92
|
+
this.formGroup.patchValue(newValue);
|
|
93
|
+
this.value = newValue;
|
|
94
|
+
this.createFilesIfSetFormValuesAfterInit();
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.formGroup.patchValue(value || {});
|
|
98
|
+
this.value = value;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
setDisabledState(isDisabled) {
|
|
102
|
+
if (isDisabled) {
|
|
103
|
+
this.formGroup.disable({ emitEvent: false });
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this.formGroup.enable({ emitEvent: false });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
getCustomFields() {
|
|
110
|
+
if (this.entityObject?.entity_) {
|
|
111
|
+
return of(this.entityObject);
|
|
112
|
+
}
|
|
113
|
+
return this.customFieldsService.getCustomFields(this.domain, this.service, this.entity, this.customFieldsEndpoint);
|
|
114
|
+
}
|
|
115
|
+
validate() {
|
|
116
|
+
const errors = {};
|
|
117
|
+
Object.keys(this.formGroup.controls).forEach((field) => {
|
|
118
|
+
const { errors: controlErrors } = this.formGroup.get(field);
|
|
119
|
+
if (controlErrors) {
|
|
120
|
+
errors[field] = controlErrors;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
return errors;
|
|
124
|
+
}
|
|
125
|
+
cleanFields() {
|
|
126
|
+
this.formGroup.reset();
|
|
127
|
+
}
|
|
128
|
+
enableOrDisableFields(disabled) {
|
|
129
|
+
if (!this.formGroup) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
for (const controlName of Object.keys(this.formGroup.value)) {
|
|
133
|
+
disabled ? this.formGroup.get(controlName)?.disable() : this.formGroup.get(controlName)?.enable();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
_validateInputs() {
|
|
137
|
+
if (!this.domain) {
|
|
138
|
+
throw new Error('You need to specify the custom-fields domain!');
|
|
139
|
+
}
|
|
140
|
+
if (!this.service) {
|
|
141
|
+
throw new Error('You need to specify the custom-fields service!');
|
|
142
|
+
}
|
|
143
|
+
if (!this.entity) {
|
|
144
|
+
throw new Error('You need to specify the custom-fields entity!');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
_createForm() {
|
|
148
|
+
this.formGroup = new FormGroup({});
|
|
149
|
+
const observables = [this.getCustomFields(), this.localeService.get()];
|
|
150
|
+
forkJoin(observables)
|
|
151
|
+
.pipe(takeUntil(this.ngUsubscribe), finalize(() => {
|
|
152
|
+
this.formGroup.markAsPristine();
|
|
153
|
+
this.parentControl?.markAsPristine();
|
|
154
|
+
if (this.ready$) {
|
|
155
|
+
this.ready$.next(true);
|
|
156
|
+
}
|
|
157
|
+
}))
|
|
158
|
+
.subscribe((response) => {
|
|
159
|
+
const [customFieldsResponse, localeOptions] = response;
|
|
160
|
+
const defaults = {};
|
|
161
|
+
defaults[CustomFieldType.String] = {};
|
|
162
|
+
defaults[CustomFieldType.Boolean] = { defaultValue: false };
|
|
163
|
+
defaults[CustomFieldType.Integer] = {};
|
|
164
|
+
defaults[CustomFieldType.Double] = { defaultMask: '' };
|
|
165
|
+
defaults[CustomFieldType.Money] = {};
|
|
166
|
+
defaults[CustomFieldType.Date] = {};
|
|
167
|
+
defaults[CustomFieldType.DateTime] = {};
|
|
168
|
+
defaults[CustomFieldType.LocalDateTime] = {};
|
|
169
|
+
defaults[CustomFieldType.Time] = {};
|
|
170
|
+
defaults[CustomFieldType.Blob] = {};
|
|
171
|
+
defaults[CustomFieldType.Enum] = {};
|
|
172
|
+
defaults[CustomFieldType.Binary] = {};
|
|
173
|
+
defaults[CustomFieldType.Any] = {};
|
|
174
|
+
if (!customFieldsResponse || !customFieldsResponse.entity_) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const { active, fields } = customFieldsResponse.entity_;
|
|
178
|
+
if (!active) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
fields
|
|
182
|
+
.filter((field) => field.customizable && field.customization?.active)
|
|
183
|
+
.forEach((field) => {
|
|
184
|
+
const formField = this.getFormField(field, localeOptions);
|
|
185
|
+
const fieldType = field.type;
|
|
186
|
+
if (field.type === CustomFieldType.Blob && this.value[formField.name]) {
|
|
187
|
+
this.createBlobToFileUpload(formField);
|
|
188
|
+
}
|
|
189
|
+
const { validationRegex } = field.customization;
|
|
190
|
+
const asIsTypes = [
|
|
191
|
+
CustomFieldType.Boolean,
|
|
192
|
+
CustomFieldType.Money,
|
|
193
|
+
CustomFieldType.Date,
|
|
194
|
+
CustomFieldType.DateTime,
|
|
195
|
+
CustomFieldType.LocalDateTime,
|
|
196
|
+
CustomFieldType.Time,
|
|
197
|
+
];
|
|
198
|
+
const validators = [];
|
|
199
|
+
if (validationRegex && !asIsTypes.includes(fieldType)) {
|
|
200
|
+
validators.push(Validators.pattern(validationRegex));
|
|
201
|
+
}
|
|
202
|
+
if (fieldType === CustomFieldType.Integer && !formField.mask) {
|
|
203
|
+
validators.push(Validators.pattern(/^\-?\d*$/));
|
|
204
|
+
}
|
|
205
|
+
if (formField.required?.()) {
|
|
206
|
+
validators.push(Validators.required);
|
|
207
|
+
}
|
|
208
|
+
const control = new FormControl({ value: defaults[fieldType].defaultValue, disabled: this.formGroup.disabled }, validators);
|
|
209
|
+
this.formGroup.addControl(formField.name, control);
|
|
210
|
+
this.fields.push(formField);
|
|
211
|
+
});
|
|
212
|
+
this.createFieldCustomization(fields);
|
|
213
|
+
this.formGroup.patchValue(this.parseValuesForFields(this.value));
|
|
214
|
+
this.ready = true;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
parseValuesForFields(values) {
|
|
218
|
+
const parsedValues = { ...values };
|
|
219
|
+
this.fields.forEach((field) => {
|
|
220
|
+
const type = field.type;
|
|
221
|
+
const name = field.name;
|
|
222
|
+
const value = values?.[name];
|
|
223
|
+
/**
|
|
224
|
+
* Tratamento exclusivo para campos boolean que tem o status Empty
|
|
225
|
+
* Essa condicional necessita estar antes do if (!value) return;
|
|
226
|
+
* Pois ela tem um status que usa null no valor do campo radio boolean
|
|
227
|
+
*/
|
|
228
|
+
if (type === FieldType.Boolean) {
|
|
229
|
+
const isString = typeof value === 'string';
|
|
230
|
+
const notValid = !isString && typeof value !== 'boolean';
|
|
231
|
+
if (notValid) {
|
|
232
|
+
parsedValues[name] = null;
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
// Condicional para campos que retornam string de boolen do backand
|
|
236
|
+
if (isString) {
|
|
237
|
+
parsedValues[name] = value === 'true' ? true : false;
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
parsedValues[name] = value;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (!value) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
switch (type) {
|
|
248
|
+
case FieldType.Date:
|
|
249
|
+
parsedValues[name] = moment(value).toDate();
|
|
250
|
+
break;
|
|
251
|
+
case FieldType.DateTime:
|
|
252
|
+
parsedValues[name] = moment(value).toDate();
|
|
253
|
+
break;
|
|
254
|
+
case FieldType.LocalDateTime:
|
|
255
|
+
parsedValues[name] = moment(value, 'YYYY-MM-DD[T]HH:mm:ss.SSS').toDate();
|
|
256
|
+
break;
|
|
257
|
+
case FieldType.Time:
|
|
258
|
+
parsedValues[name] = moment(value, 'HH:mm:ss').toDate();
|
|
259
|
+
break;
|
|
260
|
+
default:
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
return parsedValues;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Algumas equipes só setam valor no formulário, após o carregamento da tela
|
|
268
|
+
* Como é bem padrão isso, foi necessário criar esse método para gerar o file
|
|
269
|
+
* após setar o valor no formulário
|
|
270
|
+
*/
|
|
271
|
+
createFilesIfSetFormValuesAfterInit() {
|
|
272
|
+
if (!this.hasUploaded) {
|
|
273
|
+
this.fields
|
|
274
|
+
.filter((field) => field.type === FieldType.Blob)
|
|
275
|
+
.forEach((field) => {
|
|
276
|
+
if (this.formGroup.get(field.name)?.value) {
|
|
277
|
+
this.createBlobToFileUpload(field);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
parseFieldsValues() {
|
|
283
|
+
const parsedValues = {};
|
|
284
|
+
this.fields.forEach((field) => {
|
|
285
|
+
const { type, mask, scale } = field;
|
|
286
|
+
const name = field.name;
|
|
287
|
+
let value = this.formGroup.get(name)?.value;
|
|
288
|
+
if (value) {
|
|
289
|
+
switch (type) {
|
|
290
|
+
case FieldType.Number:
|
|
291
|
+
if (mask)
|
|
292
|
+
value = new BigNumber(value).toFixed(scale).toString();
|
|
293
|
+
break;
|
|
294
|
+
case FieldType.Date:
|
|
295
|
+
value = moment(value).format('YYYY-MM-DD');
|
|
296
|
+
break;
|
|
297
|
+
case FieldType.DateTime:
|
|
298
|
+
value = moment(value).format();
|
|
299
|
+
break;
|
|
300
|
+
case FieldType.LocalDateTime:
|
|
301
|
+
value = moment(value).format('YYYY-MM-DD[T]HH:mm:ss.SSS');
|
|
302
|
+
break;
|
|
303
|
+
case FieldType.Time:
|
|
304
|
+
value = moment(value).format('HH:mm:ss');
|
|
305
|
+
break;
|
|
306
|
+
default:
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if ((value === null || value === undefined) && this.isTypeNumberOrEnum(type)) {
|
|
311
|
+
parsedValues[name] = field.multiple ? [] : null;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
parsedValues[name] = value;
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
if (this.hasBlob) {
|
|
318
|
+
parsedValues['fieldCustomization'] = this.formGroup.get('fieldCustomization')?.value;
|
|
319
|
+
}
|
|
320
|
+
return parsedValues;
|
|
321
|
+
}
|
|
322
|
+
isTypeNumberOrEnum(type) {
|
|
323
|
+
const numberOrEnum = [FieldType.Number, FieldType.Enum];
|
|
324
|
+
return numberOrEnum.includes(type);
|
|
325
|
+
}
|
|
326
|
+
getFormField(field, localeOptions) {
|
|
327
|
+
let parameters = {};
|
|
328
|
+
switch (field.type) {
|
|
329
|
+
case CustomFieldType.Blob:
|
|
330
|
+
parameters = this.getBlobParameters();
|
|
331
|
+
break;
|
|
332
|
+
case CustomFieldType.Boolean:
|
|
333
|
+
parameters = this.getBooleanParameters();
|
|
334
|
+
break;
|
|
335
|
+
case 'Enumeration':
|
|
336
|
+
case CustomFieldType.Enum:
|
|
337
|
+
field.type = FieldType.Enum;
|
|
338
|
+
parameters = this.getEnumParameters(field);
|
|
339
|
+
break;
|
|
340
|
+
case CustomFieldType.Money:
|
|
341
|
+
parameters = {
|
|
342
|
+
type: FieldType.Custom,
|
|
343
|
+
CustomFieldComponentClass: NumberFieldComponent,
|
|
344
|
+
CustomFieldClass: NumberField,
|
|
345
|
+
precision: 15,
|
|
346
|
+
scale: 2,
|
|
347
|
+
leftAddon: {
|
|
348
|
+
label: localeOptions?.number?.currencySymbol ?? 'R$',
|
|
349
|
+
},
|
|
350
|
+
ignoreLabel: true,
|
|
351
|
+
};
|
|
352
|
+
break;
|
|
353
|
+
case CustomFieldType.Double:
|
|
354
|
+
parameters = {
|
|
355
|
+
type: FieldType.Custom,
|
|
356
|
+
CustomFieldComponentClass: NumberFieldComponent,
|
|
357
|
+
CustomFieldClass: NumberField,
|
|
358
|
+
precision: 15,
|
|
359
|
+
scale: 2,
|
|
360
|
+
ignoreLabel: true,
|
|
361
|
+
};
|
|
362
|
+
break;
|
|
363
|
+
case CustomFieldType.Integer:
|
|
364
|
+
parameters = {
|
|
365
|
+
type: FieldType.Custom,
|
|
366
|
+
CustomFieldComponentClass: NumberFieldComponent,
|
|
367
|
+
CustomFieldClass: NumberField,
|
|
368
|
+
precision: 15,
|
|
369
|
+
scale: 0,
|
|
370
|
+
ignoreLabel: true,
|
|
371
|
+
};
|
|
372
|
+
break;
|
|
373
|
+
case CustomFieldType.Any:
|
|
374
|
+
field.type = FieldType.String;
|
|
375
|
+
break;
|
|
376
|
+
}
|
|
377
|
+
return new FormField({
|
|
378
|
+
name: field.id,
|
|
379
|
+
label: field.customization.label,
|
|
380
|
+
tooltip: field.customization.tooltip,
|
|
381
|
+
infoSign: field.customization.infoSign,
|
|
382
|
+
type: field.type,
|
|
383
|
+
mask: field.customization.mask,
|
|
384
|
+
required: () => field.customization.mandatory,
|
|
385
|
+
calendarOptions: localeOptions.calendar,
|
|
386
|
+
currencyOptions: localeOptions.number,
|
|
387
|
+
...parameters,
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
getEnumParameters(field) {
|
|
391
|
+
return {
|
|
392
|
+
showClear: true,
|
|
393
|
+
multiple: field.customization.customEnumeration.multiple,
|
|
394
|
+
options: field.customization.customEnumeration.values.map((e) => ({ label: e.value, value: e.key })),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
getBooleanParameters() {
|
|
398
|
+
return {
|
|
399
|
+
optionsLabel: {
|
|
400
|
+
true: this.getTranslateLabel(`true_label`),
|
|
401
|
+
false: this.getTranslateLabel(`false_label`),
|
|
402
|
+
empty: this.getTranslateLabel(`empty_label`),
|
|
403
|
+
},
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
getBlobParameters() {
|
|
407
|
+
return {
|
|
408
|
+
size: {
|
|
409
|
+
sm: 12,
|
|
410
|
+
md: 12,
|
|
411
|
+
lg: 12,
|
|
412
|
+
xl: 12,
|
|
413
|
+
},
|
|
414
|
+
accept: 'image/*, application/*, text/*',
|
|
415
|
+
chooseLabel: this.getTranslateLabel(`choose_label`),
|
|
416
|
+
removeLabel: this.getTranslateLabel(`remove_label`),
|
|
417
|
+
cancelLabel: this.getTranslateLabel(`cancel_label`),
|
|
418
|
+
successTooltip: this.getTranslateLabel(`success_tooltip`),
|
|
419
|
+
multiple: false,
|
|
420
|
+
onUploadFile: (event, formfield) => {
|
|
421
|
+
this.hasUploaded = true;
|
|
422
|
+
this.uploadFile(event, formfield);
|
|
423
|
+
},
|
|
424
|
+
onRemoveFile: (event, formfield) => {
|
|
425
|
+
this.removeFile(event, formfield);
|
|
426
|
+
},
|
|
427
|
+
onCancelUpload: (event, formfield) => {
|
|
428
|
+
this.cancelUpload(event, formfield);
|
|
429
|
+
},
|
|
430
|
+
onDownloadFile: (event, formfield) => {
|
|
431
|
+
this.downloadFile(event, formfield);
|
|
432
|
+
},
|
|
433
|
+
showFileUploadDate: this.showFileUploadDate,
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* É necessário criar o fieldCustomization quando há um Blob na entidade para gerar o
|
|
438
|
+
* com os fields inseridos e deletados.
|
|
439
|
+
*/
|
|
440
|
+
createFieldCustomization(fields) {
|
|
441
|
+
this.hasBlob = !!fields.filter((field) => field.type === CustomFieldType.Blob).length;
|
|
442
|
+
if (this.hasBlob) {
|
|
443
|
+
this.formGroup.addControl('fieldCustomization', new FormArray([
|
|
444
|
+
new FormGroup({
|
|
445
|
+
domain: new FormControl(this.domain),
|
|
446
|
+
service: new FormControl(this.service),
|
|
447
|
+
entity: new FormControl(this.entity),
|
|
448
|
+
toDelete: new FormControl({ value: {}, disabled: false }),
|
|
449
|
+
toInsert: new FormControl({ value: {}, disabled: false }),
|
|
450
|
+
}),
|
|
451
|
+
]));
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
createBlobToFileUpload(field) {
|
|
455
|
+
const _name = field.name;
|
|
456
|
+
const objectId = this.value[_name] ? this.value[_name] : this.formGroup.get(_name)?.value;
|
|
457
|
+
const fileName = objectId.substring(objectId.lastIndexOf('/') + 1);
|
|
458
|
+
const file = { objectId, name: fileName, savedFile: true };
|
|
459
|
+
field.files = [file];
|
|
460
|
+
}
|
|
461
|
+
downloadFile(event, field) {
|
|
462
|
+
const { index, anchor } = event;
|
|
463
|
+
const _files = field.files || [];
|
|
464
|
+
if (!_files.length) {
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
const currentFile = _files[index];
|
|
468
|
+
if (currentFile.objectURL) {
|
|
469
|
+
anchor.nativeElement.click();
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
const _objectId = currentFile.objectId;
|
|
473
|
+
this.customFieldsService
|
|
474
|
+
.requestAccess(_objectId, this.requestAccessEndpoint)
|
|
475
|
+
.pipe(takeUntil(this.ngUsubscribe))
|
|
476
|
+
.subscribe((data) => {
|
|
477
|
+
const { fileName, uri } = data;
|
|
478
|
+
this.customFieldsService
|
|
479
|
+
.getFile(uri)
|
|
480
|
+
.pipe(takeUntil(this.ngUsubscribe))
|
|
481
|
+
.subscribe((blob) => {
|
|
482
|
+
const newFile = new File([blob], fileName);
|
|
483
|
+
newFile.objectURL = this.sanitizer.bypassSecurityTrustUrl(uri);
|
|
484
|
+
anchor.nativeElement.setAttribute('href', uri);
|
|
485
|
+
newFile.objectId = currentFile.objectId;
|
|
486
|
+
newFile.savedFile = true;
|
|
487
|
+
_files[index] = newFile;
|
|
488
|
+
field.files = [..._files];
|
|
489
|
+
anchor.nativeElement.click();
|
|
490
|
+
});
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
uploadFile(event, formField) {
|
|
495
|
+
const { files } = event;
|
|
496
|
+
const field = this.fields.find((record) => record.name === formField.name);
|
|
497
|
+
if (!field) {
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
// Se ocorrer um upload, já existindo um arquivo com upload feito. É necessário excluir o mesmo.
|
|
501
|
+
if (field?.files?.length) {
|
|
502
|
+
this.removeFile({ file: field.files[0] }, field);
|
|
503
|
+
}
|
|
504
|
+
field.files = files;
|
|
505
|
+
const _name = field.name;
|
|
506
|
+
for (let i = 0; i < files.length; i++) {
|
|
507
|
+
const file = files[i];
|
|
508
|
+
if (!file.savedFile && !file.progress) {
|
|
509
|
+
file.isUploading = true;
|
|
510
|
+
this.formGroup.get(_name)?.setValidators(isUploading(file));
|
|
511
|
+
this.formGroup.get(_name)?.updateValueAndValidity();
|
|
512
|
+
this.customFieldsService
|
|
513
|
+
.getFileLocationUrl({
|
|
514
|
+
domain: this.domain,
|
|
515
|
+
service: this.service,
|
|
516
|
+
entityName: this.entity,
|
|
517
|
+
field: _name,
|
|
518
|
+
fileName: file.name,
|
|
519
|
+
}, this.fileLocationEndpoint)
|
|
520
|
+
.pipe(takeUntil(this.ngUsubscribe), catchError((err) => of(this.defaltCatchError(field, err, i))))
|
|
521
|
+
.subscribe((data) => {
|
|
522
|
+
const { location, version, objectId } = data;
|
|
523
|
+
file.version = version;
|
|
524
|
+
file.objectId = objectId;
|
|
525
|
+
file.uploadSubscribe = this.customFieldsService
|
|
526
|
+
.uploadTempFile(location, file)
|
|
527
|
+
.pipe(takeUntil(this.ngUsubscribe), catchError((err) => of(this.defaltCatchError(field, err, i))), finalize(() => {
|
|
528
|
+
file.isUploading = false;
|
|
529
|
+
}))
|
|
530
|
+
.subscribe((response) => {
|
|
531
|
+
const { type } = response;
|
|
532
|
+
if (!this.uploadCanceled) {
|
|
533
|
+
if (type === HttpEventType.UploadProgress) {
|
|
534
|
+
file.progress = Math.round(response.loaded / response.total) * 100;
|
|
535
|
+
}
|
|
536
|
+
else if (type === HttpEventType.Response) {
|
|
537
|
+
file.objectURL = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file));
|
|
538
|
+
const value = { objectId, name: file.name, version: file.version };
|
|
539
|
+
const toInsert = this.formGroup.get('fieldCustomization')?.value[0].toInsert;
|
|
540
|
+
const fieldCustomization = this.formGroup.get('fieldCustomization')?.value;
|
|
541
|
+
if (fieldCustomization) {
|
|
542
|
+
fieldCustomization.value[0].toInsert = {
|
|
543
|
+
...toInsert,
|
|
544
|
+
[_name]: value,
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
this.formGroup.get(_name)?.setValue(`${file.objectId}/${file.name}`);
|
|
548
|
+
this.formGroup.get(_name)?.clearValidators();
|
|
549
|
+
this.formGroup.get(_name)?.updateValueAndValidity();
|
|
550
|
+
field.files = [file];
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else if (this.uploadCanceled && type === HttpEventType.Response) {
|
|
554
|
+
this.uploadCanceled = false;
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
field.files = [file];
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
removeFile(event, formField) {
|
|
563
|
+
const { file } = event;
|
|
564
|
+
const field = this.fields.find((record) => record.name === formField.name);
|
|
565
|
+
if (!field) {
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
const _name = field.name;
|
|
569
|
+
field.files = [];
|
|
570
|
+
if (file.objectId) {
|
|
571
|
+
// Quando é um arquivo já salvo o objectId já é no formato "objectId/name"
|
|
572
|
+
const value = file.savedFile ? `${file.objectId}` : `${file.objectId}/${file.name}`;
|
|
573
|
+
const fieldCustomization = this.formGroup.get('fieldCustomization')?.value[0];
|
|
574
|
+
const toDelete = fieldCustomization.toDelete;
|
|
575
|
+
delete fieldCustomization.toInsert[_name];
|
|
576
|
+
fieldCustomization.value[0].toDelete = {
|
|
577
|
+
...toDelete,
|
|
578
|
+
[_name]: [...(toDelete[_name] || []), value],
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
this.formGroup.get(_name)?.clearValidators();
|
|
582
|
+
this.formGroup.get(_name)?.setValue('');
|
|
583
|
+
this.formGroup.get(_name)?.updateValueAndValidity();
|
|
584
|
+
}
|
|
585
|
+
cancelUpload(index, formField) {
|
|
586
|
+
this.uploadCanceled = true;
|
|
587
|
+
const field = this.fields.find((record) => record.name === formField.name);
|
|
588
|
+
if (!field) {
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
const _name = field.name;
|
|
592
|
+
const _files = field.files || [];
|
|
593
|
+
_files[index]?.uploadSubscribe?.unsubscribe();
|
|
594
|
+
field.files = [];
|
|
595
|
+
const fieldCustomization = this.formGroup.get('fieldCustomization')?.value[0];
|
|
596
|
+
delete fieldCustomization.toInsert[_name];
|
|
597
|
+
this.formGroup.get(_name)?.clearValidators();
|
|
598
|
+
this.formGroup.get(_name)?.setValue('');
|
|
599
|
+
this.formGroup.get(_name)?.updateValueAndValidity();
|
|
600
|
+
}
|
|
601
|
+
defaltCatchError(field, err, index) {
|
|
602
|
+
const { files } = field;
|
|
603
|
+
if (files) {
|
|
604
|
+
files[index].error = err;
|
|
605
|
+
files[index].isUploading = false;
|
|
606
|
+
field.files = [...files];
|
|
607
|
+
const _name = field.name;
|
|
608
|
+
this.formGroup.get(_name)?.setValidators([errorOnUpload(files[index])]);
|
|
609
|
+
this.formGroup.get(_name)?.updateValueAndValidity();
|
|
610
|
+
return throwError(() => new Error('error in upload file. Details: ' + err.message));
|
|
611
|
+
}
|
|
612
|
+
else {
|
|
613
|
+
return throwError(() => new Error('error in upload file. Details: ' + err.message));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
getTranslateLabel(label) {
|
|
617
|
+
return this.translateService.instant(`${this.domain}.${this.service}.${label}`);
|
|
618
|
+
}
|
|
619
|
+
addDisplayTimeInfoSignToFields() {
|
|
620
|
+
this.fields.forEach((field) => {
|
|
621
|
+
field.displayTimeInfoSign = this.displayTimeInfoSign;
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsComponent, deps: [{ token: i1.CustomFieldsService }, { token: i2.LocaleService }, { token: i3.DomSanitizer }, { token: i4.TranslateService }, { token: i5.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
625
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CustomFieldsComponent, selector: "s-custom-fields", inputs: { domain: "domain", service: "service", entity: "entity", invalidErrorLabel: "invalidErrorLabel", entityObject: "entityObject", customFieldsEndpoint: "customFieldsEndpoint", fileLocationEndpoint: "fileLocationEndpoint", requestAccessEndpoint: "requestAccessEndpoint", requiredErrorMessage: "requiredErrorMessage", displayTimeInfoSign: "displayTimeInfoSign", showFileUploadDate: "showFileUploadDate", ready$: "ready$", disableFields: "disableFields" }, providers: [
|
|
626
|
+
{
|
|
627
|
+
provide: NG_VALUE_ACCESSOR,
|
|
628
|
+
useExisting: CustomFieldsComponent,
|
|
629
|
+
multi: true,
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
provide: NG_VALIDATORS,
|
|
633
|
+
useExisting: CustomFieldsComponent,
|
|
634
|
+
multi: true,
|
|
635
|
+
},
|
|
636
|
+
], usesOnChanges: true, ngImport: i0, template: "@let errorMessages = {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage\n};\n\n@let configs = [\n {\n type: rowType,\n fields\n }\n];\n\n<s-dynamic-form\n [configs]=\"configs\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\">\n</s-dynamic-form>\n", dependencies: [{ kind: "component", type: i6.DynamicFormComponent, selector: "s-dynamic-form", inputs: ["id", "configs", "fields", "form", "errorMessages"] }] });
|
|
637
|
+
}
|
|
638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomFieldsComponent, decorators: [{
|
|
639
|
+
type: Component,
|
|
640
|
+
args: [{ selector: 's-custom-fields', providers: [
|
|
641
|
+
{
|
|
642
|
+
provide: NG_VALUE_ACCESSOR,
|
|
643
|
+
useExisting: CustomFieldsComponent,
|
|
644
|
+
multi: true,
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
provide: NG_VALIDATORS,
|
|
648
|
+
useExisting: CustomFieldsComponent,
|
|
649
|
+
multi: true,
|
|
650
|
+
},
|
|
651
|
+
], template: "@let errorMessages = {\n pattern: invalidErrorLabel,\n required: requiredErrorMessage\n};\n\n@let configs = [\n {\n type: rowType,\n fields\n }\n];\n\n<s-dynamic-form\n [configs]=\"configs\"\n [form]=\"formGroup\"\n [errorMessages]=\"errorMessages\">\n</s-dynamic-form>\n" }]
|
|
652
|
+
}], ctorParameters: () => [{ type: i1.CustomFieldsService }, { type: i2.LocaleService }, { type: i3.DomSanitizer }, { type: i4.TranslateService }, { type: i5.ControlContainer, decorators: [{
|
|
653
|
+
type: Optional
|
|
654
|
+
}] }], propDecorators: { domain: [{
|
|
655
|
+
type: Input,
|
|
656
|
+
args: [{ required: true }]
|
|
657
|
+
}], service: [{
|
|
658
|
+
type: Input,
|
|
659
|
+
args: [{ required: true }]
|
|
660
|
+
}], entity: [{
|
|
661
|
+
type: Input,
|
|
662
|
+
args: [{ required: true }]
|
|
663
|
+
}], invalidErrorLabel: [{
|
|
664
|
+
type: Input
|
|
665
|
+
}], entityObject: [{
|
|
666
|
+
type: Input
|
|
667
|
+
}], customFieldsEndpoint: [{
|
|
668
|
+
type: Input
|
|
669
|
+
}], fileLocationEndpoint: [{
|
|
670
|
+
type: Input
|
|
671
|
+
}], requestAccessEndpoint: [{
|
|
672
|
+
type: Input
|
|
673
|
+
}], requiredErrorMessage: [{
|
|
674
|
+
type: Input
|
|
675
|
+
}], displayTimeInfoSign: [{
|
|
676
|
+
type: Input
|
|
677
|
+
}], showFileUploadDate: [{
|
|
678
|
+
type: Input
|
|
679
|
+
}], ready$: [{
|
|
680
|
+
type: Input
|
|
681
|
+
}], disableFields: [{
|
|
682
|
+
type: Input
|
|
683
|
+
}] } });
|
|
684
|
+
function isUploading(file) {
|
|
685
|
+
return () => (file.isUploading ? { isUploading: true } : null);
|
|
686
|
+
}
|
|
687
|
+
function errorOnUpload(file) {
|
|
688
|
+
return () => (file.error ? { uploadError: true } : null);
|
|
689
|
+
}
|
|
690
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWZpZWxkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY3VzdG9tLWZpZWxkcy9zcmMvbGliL2N1c3RvbS1maWVsZHMvY3VzdG9tLWZpZWxkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY3VzdG9tLWZpZWxkcy9zcmMvbGliL2N1c3RvbS1maWVsZHMvY3VzdG9tLWZpZWxkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFFSCxTQUFTLEVBRVQsS0FBSyxFQUlMLFFBQVEsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0gsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGlCQUFpQixFQUdqQixVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDckMsT0FBTyxFQUErQixPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBR3ZJLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBa0I3RCxNQUFNLE9BQU8scUJBQXFCO0lBdURUO0lBQ0E7SUFDQTtJQUNBO0lBQ1k7SUF4RDFCLE1BQU0sQ0FBVTtJQUdoQixPQUFPLENBQVU7SUFHakIsTUFBTSxDQUFVO0lBR2hCLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUd2QixZQUFZLENBQU07SUFHbEIsb0JBQW9CLEdBQUcsZ0RBQWdELENBQUM7SUFHeEUsb0JBQW9CLEdBQUcsb0RBQW9ELENBQUM7SUFHNUUscUJBQXFCLEdBQUcsb0RBQW9ELENBQUM7SUFHN0Usb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBRzFCLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUd4QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFHM0IsTUFBTSxHQUFvQyxJQUFJLENBQUM7SUFHL0MsYUFBYSxDQUFzQjtJQUVoQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztJQUU3QixNQUFNLEdBQWdCLEVBQUUsQ0FBQztJQUN6QixTQUFTLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNkLFFBQVEsQ0FBTTtJQUNkLFNBQVMsQ0FBTTtJQUNmLEtBQUssQ0FBTTtJQUNGLFlBQVksR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNyRCxjQUFjLENBQXNCO0lBQ3BDLE9BQU8sQ0FBc0I7SUFDN0IsV0FBVyxDQUFzQjtJQUV6QyxZQUNxQixtQkFBd0MsRUFDeEMsYUFBNEIsRUFDNUIsU0FBdUIsRUFDdkIsZ0JBQWtDLEVBQ3RCLGdCQUFrQztRQUo5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRS9ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQW9CLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBZ0IsQ0FBQztJQUN4RCxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBWTtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBWTtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN2QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxDQUFDO2FBQ0ksQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDL0MsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FDM0MsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLG9CQUFvQixDQUM1QixDQUFDO0lBQ04sQ0FBQztJQUVNLFFBQVE7UUFDWCxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25ELE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFjLENBQUM7WUFDekUsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQWlCO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNYLENBQUM7UUFFRCxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3RHLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFBO1FBQ3BFLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN2RSxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ2hCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBRXJDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxDQUFDLFFBQWUsRUFBRSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDdkQsTUFBTSxRQUFRLEdBQVEsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDNUQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUN2RCxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNyQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN4QyxRQUFRLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0QyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDekQsT0FBTztZQUNYLENBQUM7WUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNYLENBQUM7WUFFRCxNQUFNO2lCQUNELE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztpQkFDekUsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3BCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUUxRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUU3QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNwRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBRUQsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBRWhELE1BQU0sU0FBUyxHQUFHO29CQUNkLGVBQWUsQ0FBQyxPQUFPO29CQUN2QixlQUFlLENBQUMsS0FBSztvQkFDckIsZUFBZSxDQUFDLElBQUk7b0JBQ3BCLGVBQWUsQ0FBQyxRQUFRO29CQUN4QixlQUFlLENBQUMsYUFBYTtvQkFDN0IsZUFBZSxDQUFDLElBQUk7aUJBQ3ZCLENBQUM7Z0JBRUYsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELENBQUM7Z0JBQ0QsSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0QsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBRUQsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FDM0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFDOUUsVUFBVSxDQUNiLENBQUM7Z0JBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFFbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFFUCxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE1BQVc7UUFDcEMsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQWMsQ0FBQztZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTdCOzs7O2VBSUc7WUFDSCxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztnQkFDM0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO2dCQUN6RCxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNYLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQzlCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixtRUFBbUU7b0JBQ25FLElBQUksUUFBUSxFQUFFLENBQUM7d0JBQ1gsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUN6RCxDQUFDO3lCQUFNLENBQUM7d0JBQ0osWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDL0IsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDVCxPQUFPO1lBQ1gsQ0FBQztZQUVELFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxTQUFTLENBQUMsSUFBSTtvQkFDZixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM1QyxNQUFNO2dCQUNWLEtBQUssU0FBUyxDQUFDLFFBQVE7b0JBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzVDLE1BQU07Z0JBQ1YsS0FBSyxTQUFTLENBQUMsYUFBYTtvQkFDeEIsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekUsTUFBTTtnQkFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJO29CQUNmLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN4RCxNQUFNO2dCQUNWO29CQUNJLE1BQU07WUFDZCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLG1DQUFtQztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxNQUFNO2lCQUNOLE1BQU0sQ0FBQyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztpQkFDM0QsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDdEMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ1YsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsTUFBTSxZQUFZLEdBQVEsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDO1lBRTVDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1IsUUFBUSxJQUFJLEVBQUUsQ0FBQztvQkFDWCxLQUFLLFNBQVMsQ0FBQyxNQUFNO3dCQUNqQixJQUFJLElBQUk7NEJBQUUsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDM0UsTUFBTTtvQkFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJO3dCQUNmLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO3dCQUMzQyxNQUFNO29CQUNWLEtBQUssU0FBUyxDQUFDLFFBQVE7d0JBQ25CLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQy9CLE1BQU07b0JBQ1YsS0FBSyxTQUFTLENBQUMsYUFBYTt3QkFDeEIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQzt3QkFDMUQsTUFBTTtvQkFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJO3dCQUNmLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUN6QyxNQUFNO29CQUNWO3dCQUNJLE1BQU07Z0JBQ2QsQ0FBQztZQUNMLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUN4RixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixZQUFZLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUN6RixDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQWU7UUFDdEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFVLEVBQUUsYUFBNEI7UUFDekQsSUFBSSxVQUFVLEdBQXVCLEVBQUUsQ0FBQztRQUV4QyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUNyQixVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RDLE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxPQUFPO2dCQUN4QixVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pDLE1BQU07WUFDVixLQUFLLGFBQWEsQ0FBQztZQUNuQixLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUNyQixLQUFLLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLGVBQWUsQ0FBQyxLQUFLO2dCQUN0QixVQUFVLEdBQUc7b0JBQ1QsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNO29CQUN0Qix5QkFBeUIsRUFBRSxvQkFBb0I7b0JBQy9DLGdCQUFnQixFQUFFLFdBQVc7b0JBQzdCLFNBQVMsRUFBRSxFQUFFO29CQUNiLEtBQUssRUFBRSxDQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDUCxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxjQUFjLElBQUksSUFBSTtxQkFDdkQ7b0JBQ0QsV0FBVyxFQUFFLElBQUk7aUJBQ3BCLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZUFBZSxDQUFDLE1BQU07Z0JBQ3ZCLFVBQVUsR0FBRztvQkFDVCxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07b0JBQ3RCLHlCQUF5QixFQUFFLG9CQUFvQjtvQkFDL0MsZ0JBQWdCLEVBQUUsV0FBVztvQkFDN0IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLElBQUk7aUJBQ3BCLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZUFBZSxDQUFDLE9BQU87Z0JBQ3hCLFVBQVUsR0FBRztvQkFDVCxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07b0JBQ3RCLHlCQUF5QixFQUFFLG9CQUFvQjtvQkFDL0MsZ0JBQWdCLEVBQUUsV0FBVztvQkFDN0IsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsV0FBVyxFQUFFLElBQUk7aUJBQ3BCLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssZUFBZSxDQUFDLEdBQUc7Z0JBQ3BCLEtBQUssQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsTUFBTTtRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ2pCLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTztZQUNwQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRO1lBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixJQUFJLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQzlCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDN0MsZUFBZSxFQUFFLGFBQWEsQ0FBQyxRQUFRO1lBQ3ZDLGVBQWUsRUFBRSxhQUFhLENBQUMsTUFBTTtZQUNyQyxHQUFHLFVBQVU7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQVU7UUFDaEMsT0FBTztZQUNILFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsUUFBUTtZQUN4RCxPQUFPLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzVHLENBQUM7SUFDTixDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLE9BQU87WUFDSCxZQUFZLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7Z0JBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO2dCQUM1QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQzthQUMvQztTQUNKLENBQUM7SUFDTixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE9BQU87WUFDSCxJQUFJLEVBQUU7Z0JBQ0YsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLEVBQUU7YUFDVDtZQUNELE1BQU0sRUFBRSxnQ0FBZ0M7WUFDeEMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFDbkQsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFDbkQsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUM7WUFDbkQsY0FBYyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztZQUN6RCxRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxDQUFDLEtBQTJCLEVBQUUsU0FBb0IsRUFBRSxFQUFFO2dCQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUNELFlBQVksRUFBRSxDQUFDLEtBQXdCLEVBQUUsU0FBb0IsRUFBRSxFQUFFO2dCQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQ0QsY0FBYyxFQUFFLENBQUMsS0FBYSxFQUFFLFNBQW9CLEVBQUUsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUNELGNBQWMsRUFBRSxDQUFDLEtBQTRDLEVBQUUsU0FBb0IsRUFBRSxFQUFFO2dCQUNuRixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0Qsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtTQUM5QyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNLLHdCQUF3QixDQUFDLE1BQWE7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzNGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQ3JCLG9CQUFvQixFQUNwQixJQUFJLFNBQVMsQ0FBQztnQkFDVixJQUFJLFNBQVMsQ0FBQztvQkFDVixNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDcEMsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ3RDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUNwQyxRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDekQsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQzVELENBQUM7YUFDTCxDQUFDLENBQ0wsQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBZ0I7UUFDM0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDMUYsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFxQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3RSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBZSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUE0QyxFQUFFLEtBQWdCO1FBQy9FLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxRQUFrQixDQUFDO1lBQ2pELElBQUksQ0FBQyxtQkFBbUI7aUJBQ25CLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2lCQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDbEMsU0FBUyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixJQUFJLENBQUMsbUJBQW1CO3FCQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDO3FCQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNsQyxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQVksQ0FBQztvQkFDdEQsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMvRCxNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQy9DLE9BQU8sQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztvQkFDeEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7b0JBQ3hCLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO29CQUMxQixNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBMkIsRUFBRSxTQUFjO1FBQzFELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFpQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPO1FBQ1gsQ0FBQztRQUVELGdHQUFnRztRQUNoRyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFFekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxtQkFBbUI7cUJBQ25CLGtCQUFrQixDQUNmO29CQUNJLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ3ZCLEtBQUssRUFBRSxLQUFLO29CQUNaLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDdEIsRUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQzVCO3FCQUNBLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRjtxQkFDQSxTQUFTLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDckIsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO29CQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLG1CQUFtQjt5QkFDMUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7eUJBQzlCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRixRQUFRLENBQUMsR0FBRyxFQUFFO3dCQUNWLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUM3QixDQUFDLENBQUMsQ0FDTDt5QkFDQSxTQUFTLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTt3QkFDekIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDdkIsSUFBSSxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dDQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDOzRCQUN2RSxDQUFDO2lDQUNJLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQ0FDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUNsRCxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUM1QixDQUFDO2dDQUVGLE1BQU0sS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQ0FDN0UsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssQ0FBQztnQ0FDM0UsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO29DQUNyQixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHO3dDQUNuQyxHQUFHLFFBQVE7d0NBQ1gsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLO3FDQUNqQixDQUFDO2dDQUNOLENBQUM7Z0NBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQ0FDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0NBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7Z0NBQ3BELEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDekIsQ0FBQzt3QkFDTCxDQUFDOzZCQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEtBQUssYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzt3QkFDaEMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztvQkFDUCxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQXdCLEVBQUUsU0FBYztRQUN2RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLDBFQUEwRTtZQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztZQUM3QyxPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHO2dCQUNuQyxHQUFHLFFBQVE7Z0JBQ1gsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO2FBQy9DLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhLEVBQUUsU0FBYztRQUM5QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQWlCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzlDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWdCLEVBQUUsR0FBc0IsRUFBRSxLQUFhO1FBQzVFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1lBQ3BELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLGlDQUFpQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTyw4QkFBOEI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQixLQUFLLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0F6c0JRLHFCQUFxQjs0RkFBckIscUJBQXFCLHNmQWJuQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRDtnQkFDSSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLHFCQUFxQjtnQkFDbEMsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLCtDQ3BETCxvVEFpQkE7OzRGRHFDYSxxQkFBcUI7a0JBaEJqQyxTQUFTOytCQUNJLGlCQUFpQixhQUVoQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHVCQUF1Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsdUJBQXVCOzRCQUNsQyxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs7MEJBNkRJLFFBQVE7eUNBeEROLE1BQU07c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLE1BQU07c0JBRFosS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWxCLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMscUJBQXFCO3NCQUQzQixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLOztBQXNxQlYsU0FBUyxXQUFXLENBQUMsSUFBYTtJQUM5QixPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFhO0lBQ2hDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sQ29udGFpbmVyLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1BcnJheSxcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yRm4sXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZm9ya0pvaW4sIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEeW5hbWljVHlwZSwgRmllbGRUeXBlLCBGb3JtRmllbGQsIE51bWJlckZpZWxkLCBOdW1iZXJGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtJztcbmltcG9ydCB7IEZpbGVEdG8gfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ZpbGUtdXBsb2FkJztcbmltcG9ydCB7IExvY2FsZU9wdGlvbnMsIExvY2FsZVNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBDdXN0b21GaWVsZHNTZXJ2aWNlIH0gZnJvbSAnLi9jdXN0b20tZmllbGRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tRmllbGRUeXBlIH0gZnJvbSAnLi9tb2RlbHMvY3VzdG9tLWZpZWxkLXR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtY3VzdG9tLWZpZWxkcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1maWVsZHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBDdXN0b21GaWVsZHNDb21wb25lbnQsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBDdXN0b21GaWVsZHNDb21wb25lbnQsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21GaWVsZHNDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHVibGljIGRvbWFpbiE6IHN0cmluZztcblxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgcHVibGljIHNlcnZpY2UhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyBlbnRpdHkhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnZhbGlkRXJyb3JMYWJlbCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW50aXR5T2JqZWN0OiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHNFbmRwb2ludCA9ICdwbGF0Zm9ybS9maWVsZF9jdXN0b21pemF0aW9uL3F1ZXJpZXMvZ2V0RW50aXR5JztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbGVMb2NhdGlvbkVuZHBvaW50ID0gJ3BsYXRmb3JtL2ZpZWxkX2N1c3RvbWl6YXRpb24vYWN0aW9ucy9yZXF1ZXN0VXBsb2FkJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlcXVlc3RBY2Nlc3NFbmRwb2ludCA9ICdwbGF0Zm9ybS9maWVsZF9jdXN0b21pemF0aW9uL2FjdGlvbnMvcmVxdWVzdEFjY2Vzcyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXF1aXJlZEVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzcGxheVRpbWVJbmZvU2lnbiA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93RmlsZVVwbG9hZERhdGUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlYWR5JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlRmllbGRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJvdGVjdGVkIHJvd1R5cGUgPSBEeW5hbWljVHlwZS5Sb3c7XG5cbiAgICBwdWJsaWMgZmllbGRzOiBGb3JtRmllbGRbXSA9IFtdO1xuICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIHByaXZhdGUgcmVhZHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIG9uQ2hhbmdlOiBhbnk7XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueTtcbiAgICBwcml2YXRlIHZhbHVlOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1VzdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgdXBsb2FkQ2FuY2VsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBoYXNCbG9iOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgaGFzVXBsb2FkZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21GaWVsZHNTZXJ2aWNlOiBDdXN0b21GaWVsZHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICAgICkge1xuICAgICAgICB0aGlzLmludmFsaWRFcnJvckxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5pbnZhbGlkX3ZhbHVlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDdXN0b21GaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZmllbGRzPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbCBhcyBGb3JtR3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRDb250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Rm9ybS5nZXQoJ2N1c3RvbScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmFsaWRhdGVJbnB1dHMoKTtcbiAgICAgICAgdGhpcy5fY3JlYXRlRm9ybSgpO1xuICAgICAgICB0aGlzLmFkZERpc3BsYXlUaW1lSW5mb1NpZ25Ub0ZpZWxkcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5hYmxlT3JEaXNhYmxlRmllbGRzKCEhdGhpcy5kaXNhYmxlRmllbGRzKTtcblxuICAgICAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DaGFuZ2U/Lih0aGlzLnBhcnNlRmllbGRzVmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCBfZGlzYWJsZUZpZWxkcyA9IGNoYW5nZXNbJ2Rpc2FibGVGaWVsZHMnXTtcbiAgICAgICAgaWYgKF9kaXNhYmxlRmllbGRzKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZU9yRGlzYWJsZUZpZWxkcyhfZGlzYWJsZUZpZWxkcy5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVXN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5yZWFkeSkge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnBhcnNlVmFsdWVzRm9yRmllbGRzKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWxlc0lmU2V0Rm9ybVZhbHVlc0FmdGVySW5pdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh2YWx1ZSB8fCB7fSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEN1c3RvbUZpZWxkcygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlPYmplY3Q/LmVudGl0eV8pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmVudGl0eU9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZS5nZXRDdXN0b21GaWVsZHMoXG4gICAgICAgICAgICB0aGlzLmRvbWFpbixcbiAgICAgICAgICAgIHRoaXMuc2VydmljZSxcbiAgICAgICAgICAgIHRoaXMuZW50aXR5LFxuICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNFbmRwb2ludCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yczogYW55ID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBlcnJvcnM6IGNvbnRyb2xFcnJvcnMgfSA9IHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZCkgYXMgRm9ybUdyb3VwO1xuICAgICAgICAgICAgaWYgKGNvbnRyb2xFcnJvcnMpIHtcbiAgICAgICAgICAgICAgICBlcnJvcnNbZmllbGRdID0gY29udHJvbEVycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFuRmllbGRzKCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlT3JEaXNhYmxlRmllbGRzKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtR3JvdXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgb2YgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAudmFsdWUpKSB7XG4gICAgICAgICAgICBkaXNhYmxlZCA/IHRoaXMuZm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk/LmRpc2FibGUoKSA6IHRoaXMuZm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk/LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsaWRhdGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kb21haW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgY3VzdG9tLWZpZWxkcyBkb21haW4hJylcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBjdXN0b20tZmllbGRzIHNlcnZpY2UhJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmVudGl0eSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBjdXN0b20tZmllbGRzIGVudGl0eSEnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZUZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzID0gW3RoaXMuZ2V0Q3VzdG9tRmllbGRzKCksIHRoaXMubG9jYWxlU2VydmljZS5nZXQoKV07XG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Q29udHJvbD8ubWFya0FzUHJpc3RpbmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeSQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtjdXN0b21GaWVsZHNSZXNwb25zZSwgbG9jYWxlT3B0aW9uc10gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0czogYW55ID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLlN0cmluZ10gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQm9vbGVhbl0gPSB7IGRlZmF1bHRWYWx1ZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuSW50ZWdlcl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuRG91YmxlXSA9IHsgZGVmYXVsdE1hc2s6ICcnIH07XG4gICAgICAgICAgICAgICAgZGVmYXVsdHNbQ3VzdG9tRmllbGRUeXBlLk1vbmV5XSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5EYXRlXSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5EYXRlVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuTG9jYWxEYXRlVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuVGltZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQmxvYl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuRW51bV0gPSB7fTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0c1tDdXN0b21GaWVsZFR5cGUuQmluYXJ5XSA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRzW0N1c3RvbUZpZWxkVHlwZS5BbnldID0ge307XG5cbiAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbUZpZWxkc1Jlc3BvbnNlIHx8ICFjdXN0b21GaWVsZHNSZXNwb25zZS5lbnRpdHlfKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhY3RpdmUsIGZpZWxkcyB9ID0gY3VzdG9tRmllbGRzUmVzcG9uc2UuZW50aXR5XztcbiAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmN1c3RvbWl6YWJsZSAmJiBmaWVsZC5jdXN0b21pemF0aW9uPy5hY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmdldEZvcm1GaWVsZChmaWVsZCwgbG9jYWxlT3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGZpZWxkLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBDdXN0b21GaWVsZFR5cGUuQmxvYiAmJiB0aGlzLnZhbHVlW2Zvcm1GaWVsZC5uYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvYlRvRmlsZVVwbG9hZChmb3JtRmllbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHZhbGlkYXRpb25SZWdleCB9ID0gZmllbGQuY3VzdG9taXphdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXNJc1R5cGVzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5Cb29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkVHlwZS5Nb25leSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZFR5cGUuRGF0ZVRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRUeXBlLlRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvblJlZ2V4ICYmICFhc0lzVHlwZXMuaW5jbHVkZXMoZmllbGRUeXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdGlvblJlZ2V4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGRUeXBlID09PSBDdXN0b21GaWVsZFR5cGUuSW50ZWdlciAmJiAhZm9ybUZpZWxkLm1hc2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eXFwtP1xcZCokLykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUZpZWxkLnJlcXVpcmVkPy4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiBkZWZhdWx0c1tmaWVsZFR5cGVdLmRlZmF1bHRWYWx1ZSwgZGlzYWJsZWQ6IHRoaXMuZm9ybUdyb3VwLmRpc2FibGVkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woZm9ybUZpZWxkLm5hbWUsIGNvbnRyb2wpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHRoaXMucGFyc2VWYWx1ZXNGb3JGaWVsZHModGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVZhbHVlc0ZvckZpZWxkcyh2YWx1ZXM6IGFueSkge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZXMgPSB7IC4uLnZhbHVlcyB9O1xuXG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gZmllbGQudHlwZSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmllbGQubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzPy5bbmFtZV07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhdGFtZW50byBleGNsdXNpdm8gcGFyYSBjYW1wb3MgYm9vbGVhbiBxdWUgdGVtIG8gc3RhdHVzIEVtcHR5XG4gICAgICAgICAgICAgKiBFc3NhIGNvbmRpY2lvbmFsIG5lY2Vzc2l0YSBlc3RhciBhbnRlcyBkbyBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgICAgICAgICAgKiBQb2lzIGVsYSB0ZW0gdW0gc3RhdHVzIHF1ZSB1c2EgbnVsbCBubyB2YWxvciBkbyBjYW1wbyByYWRpbyBib29sZWFuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBGaWVsZFR5cGUuQm9vbGVhbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzU3RyaW5nID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgICAgICBjb25zdCBub3RWYWxpZCA9ICFpc1N0cmluZyAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJztcbiAgICAgICAgICAgICAgICBpZiAobm90VmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb25kaWNpb25hbCBwYXJhIGNhbXBvcyBxdWUgcmV0b3JuYW0gc3RyaW5nIGRlIGJvb2xlbiBkbyBiYWNrYW5kXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gdmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBtb21lbnQodmFsdWUpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWVzW25hbWVdID0gbW9tZW50KHZhbHVlLCAnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTUycpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSBtb21lbnQodmFsdWUsICdISDptbTpzcycpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbGd1bWFzIGVxdWlwZXMgc8OzIHNldGFtIHZhbG9yIG5vIGZvcm11bMOhcmlvLCBhcMOzcyBvIGNhcnJlZ2FtZW50byBkYSB0ZWxhXG4gICAgICogQ29tbyDDqSBiZW0gcGFkcsOjbyBpc3NvLCBmb2kgbmVjZXNzw6FyaW8gY3JpYXIgZXNzZSBtw6l0b2RvIHBhcmEgZ2VyYXIgbyBmaWxlXG4gICAgICogYXDDs3Mgc2V0YXIgbyB2YWxvciBubyBmb3JtdWzDoXJpb1xuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlRmlsZXNJZlNldEZvcm1WYWx1ZXNBZnRlckluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNVcGxvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZHNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChmaWVsZDogRm9ybUZpZWxkKSA9PiBmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuQmxvYilcbiAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKT8udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvYlRvRmlsZVVwbG9hZChmaWVsZClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlRmllbGRzVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBwYXJzZWRWYWx1ZXM6IGFueSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIG1hc2ssIHNjYWxlIH0gPSBmaWVsZDtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KG5hbWUpPy52YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXNrKSB2YWx1ZSA9IG5ldyBCaWdOdW1iZXIodmFsdWUpLnRvRml4ZWQoc2NhbGUgYXMgbnVtYmVyKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnSEg6bW06c3MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpICYmIHRoaXMuaXNUeXBlTnVtYmVyT3JFbnVtKHR5cGUgYXMgRmllbGRUeXBlKSkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlc1tuYW1lXSA9IGZpZWxkLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQmxvYikge1xuICAgICAgICAgICAgcGFyc2VkVmFsdWVzWydmaWVsZEN1c3RvbWl6YXRpb24nXSA9IHRoaXMuZm9ybUdyb3VwLmdldCgnZmllbGRDdXN0b21pemF0aW9uJyk/LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1R5cGVOdW1iZXJPckVudW0odHlwZTogRmllbGRUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG51bWJlck9yRW51bSA9IFtGaWVsZFR5cGUuTnVtYmVyLCBGaWVsZFR5cGUuRW51bV07XG4gICAgICAgIHJldHVybiBudW1iZXJPckVudW0uaW5jbHVkZXModHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtRmllbGQoZmllbGQ6IGFueSwgbG9jYWxlT3B0aW9uczogTG9jYWxlT3B0aW9ucyk6IEZvcm1GaWVsZCB7XG4gICAgICAgIGxldCBwYXJhbWV0ZXJzOiBQYXJ0aWFsPEZvcm1GaWVsZD4gPSB7fTtcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJsb2I6XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0QmxvYlBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHRoaXMuZ2V0Qm9vbGVhblBhcmFtZXRlcnMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudW1lcmF0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkVudW06XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IEZpZWxkVHlwZS5FbnVtO1xuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB0aGlzLmdldEVudW1QYXJhbWV0ZXJzKGZpZWxkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLk1vbmV5OlxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5DdXN0b20sXG4gICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpZWxkQ29tcG9uZW50Q2xhc3M6IE51bWJlckZpZWxkQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENsYXNzOiBOdW1iZXJGaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiAxNSxcbiAgICAgICAgICAgICAgICAgICAgc2NhbGU6IDIsXG4gICAgICAgICAgICAgICAgICAgIGxlZnRBZGRvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxvY2FsZU9wdGlvbnM/Lm51bWJlcj8uY3VycmVuY3lTeW1ib2wgPz8gJ1IkJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaWdub3JlTGFiZWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmllbGRUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuQ3VzdG9tLFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENvbXBvbmVudENsYXNzOiBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRDbGFzczogTnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiAyLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVMYWJlbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuSW50ZWdlcjpcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuQ3VzdG9tLFxuICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWVsZENvbXBvbmVudENsYXNzOiBOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmllbGRDbGFzczogTnVtYmVyRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbjogMTUsXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiAwLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVMYWJlbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDdXN0b21GaWVsZFR5cGUuQW55OlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSBGaWVsZFR5cGUuU3RyaW5nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgbmFtZTogZmllbGQuaWQsXG4gICAgICAgICAgICBsYWJlbDogZmllbGQuY3VzdG9taXphdGlvbi5sYWJlbCxcbiAgICAgICAgICAgIHRvb2x0aXA6IGZpZWxkLmN1c3RvbWl6YXRpb24udG9vbHRpcCxcbiAgICAgICAgICAgIGluZm9TaWduOiBmaWVsZC5jdXN0b21pemF0aW9uLmluZm9TaWduLFxuICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICAgIG1hc2s6IGZpZWxkLmN1c3RvbWl6YXRpb24ubWFzayxcbiAgICAgICAgICAgIHJlcXVpcmVkOiAoKSA9PiBmaWVsZC5jdXN0b21pemF0aW9uLm1hbmRhdG9yeSxcbiAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9uczogbG9jYWxlT3B0aW9ucy5jYWxlbmRhcixcbiAgICAgICAgICAgIGN1cnJlbmN5T3B0aW9uczogbG9jYWxlT3B0aW9ucy5udW1iZXIsXG4gICAgICAgICAgICAuLi5wYXJhbWV0ZXJzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVudW1QYXJhbWV0ZXJzKGZpZWxkOiBhbnkpOiBvYmplY3Qge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hvd0NsZWFyOiB0cnVlLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZpZWxkLmN1c3RvbWl6YXRpb24uY3VzdG9tRW51bWVyYXRpb24ubXVsdGlwbGUsXG4gICAgICAgICAgICBvcHRpb25zOiBmaWVsZC5jdXN0b21pemF0aW9uLmN1c3RvbUVudW1lcmF0aW9uLnZhbHVlcy5tYXAoKGU6IGFueSkgPT4gKHsgbGFiZWw6IGUudmFsdWUsIHZhbHVlOiBlLmtleSB9KSksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCb29sZWFuUGFyYW1ldGVycygpOiBvYmplY3Qge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb3B0aW9uc0xhYmVsOiB7XG4gICAgICAgICAgICAgICAgdHJ1ZTogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgdHJ1ZV9sYWJlbGApLFxuICAgICAgICAgICAgICAgIGZhbHNlOiB0aGlzLmdldFRyYW5zbGF0ZUxhYmVsKGBmYWxzZV9sYWJlbGApLFxuICAgICAgICAgICAgICAgIGVtcHR5OiB0aGlzLmdldFRyYW5zbGF0ZUxhYmVsKGBlbXB0eV9sYWJlbGApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJsb2JQYXJhbWV0ZXJzKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaXplOiB7XG4gICAgICAgICAgICAgICAgc206IDEyLFxuICAgICAgICAgICAgICAgIG1kOiAxMixcbiAgICAgICAgICAgICAgICBsZzogMTIsXG4gICAgICAgICAgICAgICAgeGw6IDEyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY2VwdDogJ2ltYWdlLyosIGFwcGxpY2F0aW9uLyosIHRleHQvKicsXG4gICAgICAgICAgICBjaG9vc2VMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2hvb3NlX2xhYmVsYCksXG4gICAgICAgICAgICByZW1vdmVMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgcmVtb3ZlX2xhYmVsYCksXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgY2FuY2VsX2xhYmVsYCksXG4gICAgICAgICAgICBzdWNjZXNzVG9vbHRpcDogdGhpcy5nZXRUcmFuc2xhdGVMYWJlbChgc3VjY2Vzc190b29sdGlwYCksXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBvblVwbG9hZEZpbGU6IChldmVudDogeyBmaWxlczogRmlsZUR0b1tdIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNVcGxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uUmVtb3ZlRmlsZTogKGV2ZW50OiB7IGZpbGU6IEZpbGVEdG8gfSwgZm9ybWZpZWxkOiBGb3JtRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25DYW5jZWxVcGxvYWQ6IChldmVudDogbnVtYmVyLCBmb3JtZmllbGQ6IEZvcm1GaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsVXBsb2FkKGV2ZW50LCBmb3JtZmllbGQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRG93bmxvYWRGaWxlOiAoZXZlbnQ6IHsgaW5kZXg6IG51bWJlcjsgYW5jaG9yOiBFbGVtZW50UmVmIH0sIGZvcm1maWVsZDogRm9ybUZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZXZlbnQsIGZvcm1maWVsZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2hvd0ZpbGVVcGxvYWREYXRlOiB0aGlzLnNob3dGaWxlVXBsb2FkRGF0ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDDiSBuZWNlc3PDoXJpbyBjcmlhciBvIGZpZWxkQ3VzdG9taXphdGlvbiBxdWFuZG8gaMOhIHVtIEJsb2IgbmEgZW50aWRhZGUgcGFyYSBnZXJhciBvXG4gICAgICogY29tIG9zIGZpZWxkcyBpbnNlcmlkb3MgZSBkZWxldGFkb3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjcmVhdGVGaWVsZEN1c3RvbWl6YXRpb24oZmllbGRzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLmhhc0Jsb2IgPSAhIWZpZWxkcy5maWx0ZXIoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnR5cGUgPT09IEN1c3RvbUZpZWxkVHlwZS5CbG9iKS5sZW5ndGg7XG4gICAgICAgIGlmICh0aGlzLmhhc0Jsb2IpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgICAgICAgJ2ZpZWxkQ3VzdG9taXphdGlvbicsXG4gICAgICAgICAgICAgICAgbmV3IEZvcm1BcnJheShbXG4gICAgICAgICAgICAgICAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5kb21haW4pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZTogbmV3IEZvcm1Db250cm9sKHRoaXMuc2VydmljZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmVudGl0eSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0b0RlbGV0ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHt9LCBkaXNhYmxlZDogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0b0luc2VydDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHt9LCBkaXNhYmxlZDogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQmxvYlRvRmlsZVVwbG9hZChmaWVsZDogRm9ybUZpZWxkKSB7XG4gICAgICAgIGNvbnN0IF9uYW1lID0gZmllbGQubmFtZTtcbiAgICAgICAgY29uc3Qgb2JqZWN0SWQgPSB0aGlzLnZhbHVlW19uYW1lXSA/IHRoaXMudmFsdWVbX25hbWVdIDogdGhpcy5mb3JtR3JvdXAuZ2V0KF9uYW1lKT8udmFsdWU7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gb2JqZWN0SWQuc3Vic3RyaW5nKG9iamVjdElkLmxhc3RJbmRleE9mKCcvJykgKyAxKTtcbiAgICAgICAgY29uc3QgZmlsZTogUGFydGlhbDxGaWxlRHRvPiA9IHsgb2JqZWN0SWQsIG5hbWU6IGZpbGVOYW1lLCBzYXZlZEZpbGU6IHRydWUgfTtcbiAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZSBhcyBGaWxlRHRvXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRvd25sb2FkRmlsZShldmVudDogeyBpbmRleDogbnVtYmVyOyBhbmNob3I6IEVsZW1lbnRSZWYgfSwgZmllbGQ6IEZvcm1GaWVsZCkge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBhbmNob3IgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBfZmlsZXMgPSBmaWVsZC5maWxlcyB8fCBbXTtcbiAgICAgICAgaWYgKCFfZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudEZpbGUgPSBfZmlsZXNbaW5kZXhdO1xuICAgICAgICBpZiAoY3VycmVudEZpbGUub2JqZWN0VVJMKSB7XG4gICAgICAgICAgICBhbmNob3IubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgX29iamVjdElkID0gY3VycmVudEZpbGUub2JqZWN0SWQgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnJlcXVlc3RBY2Nlc3MoX29iamVjdElkLCB0aGlzLnJlcXVlc3RBY2Nlc3NFbmRwb2ludClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVOYW1lLCB1cmkgfSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRzU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdldEZpbGUodXJpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVc3Vic2NyaWJlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGJsb2I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGZpbGVOYW1lKSBhcyBGaWxlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh1cmkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsIHVyaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RmlsZS5vYmplY3RJZCA9IGN1cnJlbnRGaWxlLm9iamVjdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGUuc2F2ZWRGaWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmlsZXNbaW5kZXhdID0gbmV3RmlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5maWxlcyA9IFsuLi5fZmlsZXNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvci5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBsb2FkRmlsZShldmVudDogeyBmaWxlczogRmlsZUR0b1tdIH0sIGZvcm1GaWVsZDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsZXMgfSA9IGV2ZW50O1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoKHJlY29yZDogRm9ybUZpZWxkKSA9PiByZWNvcmQubmFtZSA9PT0gZm9ybUZpZWxkLm5hbWUpO1xuICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZSBvY29ycmVyIHVtIHVwbG9hZCwgasOhIGV4aXN0aW5kbyB1bSBhcnF1aXZvIGNvbSB1cGxvYWQgZmVpdG8uIMOJIG5lY2Vzc8OhcmlvIGV4Y2x1aXIgbyBtZXNtby5cbiAgICAgICAgaWYgKGZpZWxkPy5maWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGUoeyBmaWxlOiBmaWVsZC5maWxlc1swXSB9LCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGQuZmlsZXMgPSBmaWxlcztcbiAgICAgICAgY29uc3QgX25hbWUgPSBmaWVsZC5uYW1lO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1tpXTtcbiAgICAgICAgICAgIGlmICghZmlsZS5zYXZlZEZpbGUgJiYgIWZpbGUucHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICBmaWxlLmlzVXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy5zZXRWYWxpZGF0b3JzKGlzVXBsb2FkaW5nKGZpbGUpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5nZXRGaWxlTG9jYXRpb25VcmwoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLmRvbWFpbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZTogdGhpcy5lbnRpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlTG9jYXRpb25FbmRwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVXN1YnNjcmliZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih0aGlzLmRlZmFsdENhdGNoRXJyb3IoZmllbGQsIGVyciwgaSkpKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbG9jYXRpb24sIHZlcnNpb24sIG9iamVjdElkIH0gPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0SWQgPSBvYmplY3RJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudXBsb2FkU3Vic2NyaWJlID0gdGhpcy5jdXN0b21GaWVsZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnVwbG9hZFRlbXBGaWxlKGxvY2F0aW9uLCBmaWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1VzdWJzY3JpYmUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih0aGlzLmRlZmFsdENhdGNoRXJyb3IoZmllbGQsIGVyciwgaSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHR5cGUgfSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXBsb2FkQ2FuY2VsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IE1hdGgucm91bmQocmVzcG9uc2UubG9hZGVkIC8gcmVzcG9uc2UudG90YWwpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUub2JqZWN0VVJMID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB7IG9iamVjdElkLCBuYW1lOiBmaWxlLm5hbWUsIHZlcnNpb246IGZpbGUudmVyc2lvbiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvSW5zZXJ0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdmaWVsZEN1c3RvbWl6YXRpb24nKT8udmFsdWVbMF0udG9JbnNlcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRDdXN0b21pemF0aW9uID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdmaWVsZEN1c3RvbWl6YXRpb24nKT8udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkQ3VzdG9taXphdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEN1c3RvbWl6YXRpb24udmFsdWVbMF0udG9JbnNlcnQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi50b0luc2VydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtfbmFtZV06IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy5zZXRWYWx1ZShgJHtmaWxlLm9iamVjdElkfS8ke2ZpbGUubmFtZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy51cGxvYWRDYW5jZWxlZCAmJiB0eXBlID09PSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZENhbmNlbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbGVzID0gW2ZpbGVdO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlRmlsZShldmVudDogeyBmaWxlOiBGaWxlRHRvIH0sIGZvcm1GaWVsZDogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlsZSB9ID0gZXZlbnQ7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZCgocmVjb3JkOiBGb3JtRmllbGQpID0+IHJlY29yZC5uYW1lID09PSBmb3JtRmllbGQubmFtZSk7XG4gICAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBfbmFtZSA9IGZpZWxkLm5hbWU7XG4gICAgICAgIGZpZWxkLmZpbGVzID0gW107XG4gICAgICAgIGlmIChmaWxlLm9iamVjdElkKSB7XG4gICAgICAgICAgICAvLyBRdWFuZG8gw6kgdW0gYXJxdWl2byBqw6Egc2Fsdm8gbyBvYmplY3RJZCBqw6Egw6kgbm8gZm9ybWF0byBcIm9iamVjdElkL25hbWVcIlxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBmaWxlLnNhdmVkRmlsZSA/IGAke2ZpbGUub2JqZWN0SWR9YCA6IGAke2ZpbGUub2JqZWN0SWR9LyR7ZmlsZS5uYW1lfWA7XG4gICAgICAgICAgICBjb25zdCBmaWVsZEN1c3RvbWl6YXRpb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2ZpZWxkQ3VzdG9taXphdGlvbicpPy52YWx1ZVswXTtcbiAgICAgICAgICAgIGNvbnN0IHRvRGVsZXRlID0gZmllbGRDdXN0b21pemF0aW9uLnRvRGVsZXRlO1xuICAgICAgICAgICAgZGVsZXRlIGZpZWxkQ3VzdG9taXphdGlvbi50b0luc2VydFtfbmFtZV07XG4gICAgICAgICAgICBmaWVsZEN1c3RvbWl6YXRpb24udmFsdWVbMF0udG9EZWxldGUgPSB7XG4gICAgICAgICAgICAgICAgLi4udG9EZWxldGUsXG4gICAgICAgICAgICAgICAgW19uYW1lXTogWy4uLih0b0RlbGV0ZVtfbmFtZV0gfHwgW10pLCB2YWx1ZV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KF9uYW1lKT8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChfbmFtZSk/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KF9uYW1lKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuY2VsVXBsb2FkKGluZGV4OiBudW1iZXIsIGZvcm1GaWVsZDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkQ2FuY2VsZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoKHJlY29yZDogRm9ybUZpZWxkKSA9PiByZWNvcmQubmFtZSA9PT0gZm9ybUZpZWxkLm5hbWUpO1xuICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgX25hbWUgPSBmaWVsZC5uYW1lO1xuICAgICAgICBjb25zdCBfZmlsZXMgPSBmaWVsZC5maWxlcyB8fCBbXTtcbiAgICAgICAgX2ZpbGVzW2luZGV4XT8udXBsb2FkU3Vic2NyaWJlPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBmaWVsZC5maWxlcyA9IFtdO1xuICAgICAgICBjb25zdCBmaWVsZEN1c3RvbWl6YXRpb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2ZpZWxkQ3VzdG9taXphdGlvbicpPy52YWx1ZVswXTtcbiAgICAgICAgZGVsZXRlIGZpZWxkQ3VzdG9taXphdGlvbi50b0luc2VydFtfbmFtZV07XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChfbmFtZSk/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChfbmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmFsdENhdGNoRXJyb3IoZmllbGQ6IEZvcm1GaWVsZCwgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gZmllbGQ7XG4gICAgICAgIGlmIChmaWxlcykge1xuICAgICAgICAgICAgZmlsZXNbaW5kZXhdLmVycm9yID0gZXJyO1xuICAgICAgICAgICAgZmlsZXNbaW5kZXhdLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBmaWVsZC5maWxlcyA9IFsuLi5maWxlc107XG4gICAgICAgICAgICBjb25zdCBfbmFtZSA9IGZpZWxkLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoX25hbWUpPy5zZXRWYWxpZGF0b3JzKFtlcnJvck9uVXBsb2FkKGZpbGVzW2luZGV4XSldKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChfbmFtZSk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignZXJyb3IgaW4gdXBsb2FkIGZpbGUuIERldGFpbHM6ICcgKyBlcnIubWVzc2FnZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdlcnJvciBpbiB1cGxvYWQgZmlsZS4gRGV0YWlsczogJyArIGVyci5tZXNzYWdlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0ZUxhYmVsKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYCR7dGhpcy5kb21haW59LiR7dGhpcy5zZXJ2aWNlfS4ke2xhYmVsfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRGlzcGxheVRpbWVJbmZvU2lnblRvRmllbGRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgZmllbGQuZGlzcGxheVRpbWVJbmZvU2lnbiA9IHRoaXMuZGlzcGxheVRpbWVJbmZvU2lnbjtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc1VwbG9hZGluZyhmaWxlOiBGaWxlRHRvKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoKSA9PiAoZmlsZS5pc1VwbG9hZGluZyA/IHsgaXNVcGxvYWRpbmc6IHRydWUgfSA6IG51bGwpO1xufVxuXG5mdW5jdGlvbiBlcnJvck9uVXBsb2FkKGZpbGU6IEZpbGVEdG8pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuICgpID0+IChmaWxlLmVycm9yID8geyB1cGxvYWRFcnJvcjogdHJ1ZSB9IDogbnVsbCk7XG59XG5cbiIsIkBsZXQgZXJyb3JNZXNzYWdlcyA9IHtcbiAgICBwYXR0ZXJuOiBpbnZhbGlkRXJyb3JMYWJlbCxcbiAgICByZXF1aXJlZDogcmVxdWlyZWRFcnJvck1lc3NhZ2Vcbn07XG5cbkBsZXQgY29uZmlncyA9IFtcbiAgICB7XG4gICAgICAgIHR5cGU6IHJvd1R5cGUsXG4gICAgICAgIGZpZWxkc1xuICAgIH1cbl07XG5cbjxzLWR5bmFtaWMtZm9ybVxuICAgIFtjb25maWdzXT1cImNvbmZpZ3NcIlxuICAgIFtmb3JtXT1cImZvcm1Hcm91cFwiXG4gICAgW2Vycm9yTWVzc2FnZXNdPVwiZXJyb3JNZXNzYWdlc1wiPlxuPC9zLWR5bmFtaWMtZm9ybT5cbiJdfQ==
|