@skyux/forms 13.11.5 → 14.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-forms.mjs","sources":["../tmp-esm2022/lib/modules/shared/sky-forms-resources.module.js","../tmp-esm2022/lib/modules/character-counter/character-counter-screen-reader.pipe.js","../tmp-esm2022/lib/modules/character-counter/character-counter-indicator.component.js","../tmp-esm2022/lib/modules/character-counter/character-counter.directive.js","../tmp-esm2022/lib/modules/character-counter/character-counter.module.js","../tmp-esm2022/lib/modules/form-error/form-errors-enabled-token.js","../tmp-esm2022/lib/modules/form-error/form-error.component.js","../tmp-esm2022/lib/modules/form-error/form-error.module.js","../tmp-esm2022/lib/modules/form-error/form-errors.component.js","../tmp-esm2022/lib/modules/form-error/form-errors.module.js","../tmp-esm2022/lib/modules/checkbox/checkbox-group.component.js","../tmp-esm2022/lib/modules/checkbox/checkbox-label-text-label.component.js","../tmp-esm2022/lib/modules/checkbox/checkbox-label.component.js","../tmp-esm2022/lib/modules/checkbox/checkbox.component.js","../tmp-esm2022/lib/modules/checkbox/checkbox.module.js","../tmp-esm2022/lib/modules/field-group/field-group.component.js","../tmp-esm2022/lib/modules/field-group/field-group.module.js","../tmp-esm2022/lib/modules/file-attachment/file-attachment/file-attachment-label.component.js","../tmp-esm2022/lib/modules/file-attachment/shared/file-size.pipe.js","../tmp-esm2022/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.js","../tmp-esm2022/lib/modules/file-attachment/file-attachment/file-attachment.service.js","../tmp-esm2022/lib/modules/file-attachment/shared/file-item.service.js","../tmp-esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.js","../tmp-esm2022/lib/modules/file-attachment/file-attachment/file-attachment.module.js","../tmp-esm2022/lib/modules/input-box/input-box-host.service.js","../tmp-esm2022/lib/modules/input-box/input-box-control.directive.js","../tmp-esm2022/lib/modules/input-box/input-box-hint-text.pipe.js","../tmp-esm2022/lib/modules/input-box/input-box-adapter.service.js","../tmp-esm2022/lib/modules/input-box/input-box.component.js","../tmp-esm2022/lib/modules/input-box/input-box.module.js","../tmp-esm2022/lib/modules/file-attachment/file-drop/file-drop.component.js","../tmp-esm2022/lib/modules/file-attachment/file-drop/file-item.component.js","../tmp-esm2022/lib/modules/file-attachment/file-drop/file-drop.module.js","../tmp-esm2022/lib/modules/file-attachment/file-attachments.module.js","../tmp-esm2022/lib/modules/radio/radio-group-id.service.js","../tmp-esm2022/lib/modules/radio/radio.component.js","../tmp-esm2022/lib/modules/radio/radio-group.component.js","../tmp-esm2022/lib/modules/radio/radio-label.component.js","../tmp-esm2022/lib/modules/radio/radio.module.js","../tmp-esm2022/lib/modules/required-state/required-state.directive.js","../tmp-esm2022/lib/modules/selection-box/selection-box-adapter.service.js","../tmp-esm2022/lib/modules/selection-box/selection-box-description.component.js","../tmp-esm2022/lib/modules/selection-box/selection-box.component.js","../tmp-esm2022/lib/modules/selection-box/selection-box-grid.component.js","../tmp-esm2022/lib/modules/selection-box/selection-box-header.component.js","../tmp-esm2022/lib/modules/selection-box/selection-box.module.js","../tmp-esm2022/lib/modules/toggle-switch/toggle-switch-label.component.js","../tmp-esm2022/lib/modules/toggle-switch/toggle-switch.component.js","../tmp-esm2022/lib/modules/toggle-switch/toggle-switch.module.js","../tmp-esm2022/skyux-forms.js"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-forms' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-US': {\n skyux_character_count_message: { message: '{0} characters out of {1}' },\n skyux_character_count_over_limit: {\n message: 'You are over the character limit.',\n },\n skyux_form_error_character_count: {\n message: 'Limit {0} to {1} characters.',\n },\n skyux_form_error_date: { message: 'Select or enter a valid date.' },\n skyux_form_error_date_max: {\n message: 'Select or enter a date on or before {0}.',\n },\n skyux_form_error_date_min: {\n message: 'Select or enter a date on or after {0}.',\n },\n skyux_form_error_fuzzy_date_future_disabled: {\n message: 'Future dates are disabled. Select or enter a date in the past.',\n },\n skyux_form_error_fuzzy_date_invalid: {\n message: 'Select or enter a valid date.',\n },\n skyux_form_error_fuzzy_date_max_date: {\n message: 'Select or enter a date on or before {0}.',\n },\n skyux_form_error_fuzzy_date_min_date: {\n message: 'Select or enter a date on or after {0}.',\n },\n skyux_form_error_fuzzy_date_year_required: { message: 'Year is required.' },\n skyux_form_error_email: {\n message: 'Enter an email address with a valid format.',\n },\n skyux_form_error_maxlength: { message: 'Limit {0} to {1} characters.' },\n skyux_form_error_minlength: {\n message: '{0} must be at least {1} characters.',\n },\n skyux_form_error_phone: {\n message: 'Enter a phone number matching the format for the selected country.',\n },\n skyux_form_error_required: { message: '{0} is required.' },\n skyux_form_error_time: { message: 'Select or enter a valid time.' },\n skyux_form_error_url: { message: 'Enter a URL with a valid format.' },\n skyux_form_group_required: { message: 'Required' },\n skyux_file_attachment_button_label_choose_file: { message: 'Attach file' },\n skyux_file_attachment_button_label_choose_file_label: {\n message: 'Attach file for',\n },\n skyux_file_attachment_button_label_replace_file: {\n message: 'Replace file',\n },\n skyux_file_attachment_button_label_replace_file_label: {\n message: 'Replace file {0} for',\n },\n skyux_file_attachment_file_item_delete: { message: 'Delete {0}' },\n skyux_file_attachment_file_item_remove: { message: 'Remove file {0} for' },\n skyux_file_attachment_file_size_b_plural: { message: '{0} bytes' },\n skyux_file_attachment_file_size_b_singular: { message: '{0} byte' },\n skyux_file_attachment_file_size_gb: { message: '{0} GB' },\n skyux_file_attachment_file_size_kb: { message: '{0} KB' },\n skyux_file_attachment_file_size_mb: { message: '{0} MB' },\n skyux_file_attachment_file_upload_drag_file_here: {\n message: 'Drag a file here',\n },\n skyux_file_attachment_file_upload_drag_or_click: {\n message: 'Drag a file here or click to browse',\n },\n skyux_file_attachment_file_upload_drop_files_here: {\n message: 'Drop files here',\n },\n skyux_file_attachment_file_upload_file_added: { message: '{0} added.' },\n skyux_file_attachment_file_upload_file_replaced: {\n message: '{0} removed. {1} added.',\n },\n skyux_file_attachment_file_upload_file_removed: { message: '{0} removed.' },\n skyux_file_attachment_file_upload_image_preview_alt_text: {\n message: 'Image preview',\n },\n skyux_file_attachment_file_upload_invalid_file: {\n message: 'This file type is invalid',\n },\n skyux_file_attachment_file_upload_link_label: { message: 'Link to a file' },\n skyux_file_attachment_file_upload_or_click_to_browse: {\n message: 'or click to browse',\n },\n skyux_file_attachment_file_upload_link_done: { message: 'Done' },\n skyux_file_attachment_file_upload_link_added: {\n message: 'Link to {0} added.',\n },\n skyux_file_attachment_file_upload_link_removed: {\n message: 'Link to {0} removed.',\n },\n skyux_file_attachment_file_type_error_label_text: {\n message: 'Upload one of these file types: {0}.',\n },\n skyux_file_attachment_file_type_error_label_text_with_name: {\n message: '{0}: Upload one of these file types: {1}.',\n },\n skyux_file_attachment_max_file_size_error_label_text: {\n message: 'Upload a file under {0}.',\n },\n skyux_file_attachment_max_file_size_error_label_text_with_name: {\n message: '{0}: Upload a file under {1}.',\n },\n skyux_file_attachment_min_file_size_error_label_text: {\n message: 'Upload a file over {0}.',\n },\n skyux_file_attachment_min_file_size_error_label_text_with_name: {\n message: '{0}: Upload a file over {1}.',\n },\n skyux_file_attachment_label_no_file_chosen: { message: 'No file chosen.' },\n skyux_file_attachment_required: { message: 'Required' },\n skyux_input_box_help_inline_aria_label: {\n message: 'Show help content for {0}',\n },\n },\n 'FR-CA': {\n skyux_character_count_message: { message: '{0} caractères de {1}' },\n skyux_character_count_over_limit: {\n message: 'Vous avez dépassé la limite de caractères.',\n },\n skyux_form_error_character_count: {\n message: 'Limite {0} de {1} caractère(s).',\n },\n skyux_form_error_date: {\n message: 'Sélectionnez ou entrez une date valide.',\n },\n skyux_form_error_date_max: {\n message: 'Sélectionnez ou entrez une date le ou avant le {0}.',\n },\n skyux_form_error_date_min: {\n message: 'Sélectionnez ou entrez une date le ou après le {0}.',\n },\n skyux_form_error_fuzzy_date_future_disabled: {\n message: 'Les dates futures sont désactivées. Sélectionnez ou entrez une date dans le passé.',\n },\n skyux_form_error_fuzzy_date_invalid: {\n message: 'Sélectionnez ou entrez une date valide.',\n },\n skyux_form_error_fuzzy_date_max_date: {\n message: 'Sélectionnez ou entrez une date le ou avant le {0}.',\n },\n skyux_form_error_fuzzy_date_min_date: {\n message: 'Sélectionnez ou entrez une date le ou après le {0}.',\n },\n skyux_form_error_fuzzy_date_year_required: {\n message: 'L’année est requise.',\n },\n skyux_form_error_email: {\n message: 'Entrez une adresse courriel avec un format valide.',\n },\n skyux_form_error_maxlength: { message: 'Limite {0} de {1} caractère(s).' },\n skyux_form_error_minlength: {\n message: '{0} doit avoir au moins {1} caractère(s).',\n },\n skyux_form_error_phone: {\n message: 'Entrez un numéro de téléphone correspondant au format du pays sélectionné.',\n },\n skyux_form_error_required: { message: '{0} est requis.' },\n skyux_form_error_time: {\n message: 'Sélectionnez ou entrez une heure valide.',\n },\n skyux_form_error_url: { message: 'Entrez une URL avec un format valide.' },\n skyux_form_group_required: { message: 'Requis' },\n skyux_file_attachment_button_label_choose_file: {\n message: 'Joindre un fichier',\n },\n skyux_file_attachment_button_label_choose_file_label: {\n message: 'Joindre un fichier pour',\n },\n skyux_file_attachment_button_label_replace_file: {\n message: 'Remplacer le fichier',\n },\n skyux_file_attachment_button_label_replace_file_label: {\n message: 'Remplacer le fichier {0} pour',\n },\n skyux_file_attachment_file_item_delete: { message: 'Supprimer {0}' },\n skyux_file_attachment_file_item_remove: {\n message: 'Retirer le fichier {0} pour',\n },\n skyux_file_attachment_file_size_b_plural: { message: '{0} octets' },\n skyux_file_attachment_file_size_b_singular: { message: '{0} octet' },\n skyux_file_attachment_file_size_gb: { message: '{0} Go' },\n skyux_file_attachment_file_size_kb: { message: '{0} Ko' },\n skyux_file_attachment_file_size_mb: { message: '{0} Mo' },\n skyux_file_attachment_file_upload_drag_file_here: {\n message: 'Faites glisser un fichier ici',\n },\n skyux_file_attachment_file_upload_drag_or_click: {\n message: 'Faites glisser un fichier ici ou cliquez pour naviguer',\n },\n skyux_file_attachment_file_upload_drop_files_here: {\n message: 'Déplacez les fichiers ici',\n },\n skyux_file_attachment_file_upload_file_added: {\n message: '{0} a été ajouté.',\n },\n skyux_file_attachment_file_upload_file_replaced: {\n message: '{0} a été retiré. {1} a été ajouté.',\n },\n skyux_file_attachment_file_upload_file_removed: {\n message: '{0} a été retiré.',\n },\n skyux_file_attachment_file_upload_image_preview_alt_text: {\n message: 'Aperçu de l’image',\n },\n skyux_file_attachment_file_upload_invalid_file: {\n message: 'Ce type de fichier n’est pas valide',\n },\n skyux_file_attachment_file_upload_link_label: {\n message: 'Liens vers un fichier',\n },\n skyux_file_attachment_file_upload_or_click_to_browse: {\n message: 'ou cliquez pour naviguer',\n },\n skyux_file_attachment_file_upload_link_done: { message: 'Terminé' },\n skyux_file_attachment_file_upload_link_added: {\n message: 'Le lien vers {0} a été ajouté.',\n },\n skyux_file_attachment_file_upload_link_removed: {\n message: 'Le lien vers {0} a été retiré.',\n },\n skyux_file_attachment_file_type_error_label_text: {\n message: 'Téléversez l’un de ces types de fichier : {0}.',\n },\n skyux_file_attachment_file_type_error_label_text_with_name: {\n message: '{0} : Téléversez l’un de ces types de fichier : {1}.',\n },\n skyux_file_attachment_max_file_size_error_label_text: {\n message: 'Téléversez un fichier de moins de {0}.',\n },\n skyux_file_attachment_max_file_size_error_label_text_with_name: {\n message: '{0} : Téléversez un fichier de moins de {1}.',\n },\n skyux_file_attachment_min_file_size_error_label_text: {\n message: 'Téléversez un fichier de plus de {0}.',\n },\n skyux_file_attachment_min_file_size_error_label_text_with_name: {\n message: '{0} : Téléversez un fichier de plus de {1}.',\n },\n skyux_file_attachment_label_no_file_chosen: {\n message: 'Aucun fichier choisi.',\n },\n skyux_file_attachment_required: { message: 'Requis' },\n skyux_input_box_help_inline_aria_label: {\n message: 'Afficher le contenu de l’aide pour {0}',\n },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyFormsResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormsResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormsResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormsResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWZvcm1zLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktZm9ybXMtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUU7UUFDdkUsZ0NBQWdDLEVBQUU7WUFDaEMsT0FBTyxFQUFFLG1DQUFtQztTQUM3QztRQUNELGdDQUFnQyxFQUFFO1lBQ2hDLE9BQU8sRUFBRSw4QkFBOEI7U0FDeEM7UUFDRCxxQkFBcUIsRUFBRSxFQUFFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRTtRQUNuRSx5QkFBeUIsRUFBRTtZQUN6QixPQUFPLEVBQUUsMENBQTBDO1NBQ3BEO1FBQ0QseUJBQXlCLEVBQUU7WUFDekIsT0FBTyxFQUFFLHlDQUF5QztTQUNuRDtRQUNELDJDQUEyQyxFQUFFO1lBQzNDLE9BQU8sRUFBRSxnRUFBZ0U7U0FDMUU7UUFDRCxtQ0FBbUMsRUFBRTtZQUNuQyxPQUFPLEVBQUUsK0JBQStCO1NBQ3pDO1FBQ0Qsb0NBQW9DLEVBQUU7WUFDcEMsT0FBTyxFQUFFLDBDQUEwQztTQUNwRDtRQUNELG9DQUFvQyxFQUFFO1lBQ3BDLE9BQU8sRUFBRSx5Q0FBeUM7U0FDbkQ7UUFDRCx5Q0FBeUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRTtRQUMzRSxzQkFBc0IsRUFBRTtZQUN0QixPQUFPLEVBQUUs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b0RBQW9ELEVBQUU7WUFDcEQsT0FBTyxFQUFFLDBCQUEwQjtTQUNwQztRQUNELDJDQUEyQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtRQUNuRSw0Q0FBNEMsRUFBRTtZQUM1QyxPQUFPLEVBQUUsZ0NBQWdDO1NBQzFDO1FBQ0QsOENBQThDLEVBQUU7WUFDOUMsT0FBTyxFQUFFLGdDQUFnQztTQUMxQztRQUNELGdEQUFnRCxFQUFFO1lBQ2hELE9BQU8sRUFBRSxnREFBZ0Q7U0FDMUQ7UUFDRCwwREFBMEQsRUFBRTtZQUMxRCxPQUFPLEVBQUUsc0RBQXNEO1NBQ2hFO1FBQ0Qsb0RBQW9ELEVBQUU7WUFDcEQsT0FBTyxFQUFFLHdDQUF3QztTQUNsRDtRQUNELDhEQUE4RCxFQUFFO1lBQzlELE9BQU8sRUFBRSw4Q0FBOEM7U0FDeEQ7UUFDRCxvREFBb0QsRUFBRTtZQUNwRCxPQUFPLEVBQUUsdUNBQXVDO1NBQ2pEO1FBQ0QsOERBQThELEVBQUU7WUFDOUQsT0FBTyxFQUFFLDZDQUE2QztTQUN2RDtRQUNELDBDQUEwQyxFQUFFO1lBQzFDLE9BQU8sRUFBRSx1QkFBdUI7U0FDakM7UUFDRCw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDckQsc0NBQXNDLEVBQUU7WUFDdEMsT0FBTyxFQUFFLHdDQUF3QztTQUNsRDtLQUNGO0NBQ0YsQ0FBQztBQUVGLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUvQzs7R0FFRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLFlBRnhCLGFBQWE7Z0hBRVosdUJBQXVCLFlBRnhCLGFBQWE7OzRGQUVaLHVCQUF1QjtrQkFIbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWZvcm1zJyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lJMThuTW9kdWxlLFxuICBTa3lMaWJSZXNvdXJjZXMsXG4gIFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9pMThuJztcblxuY29uc3QgUkVTT1VSQ0VTOiBSZWNvcmQ8c3RyaW5nLCBTa3lMaWJSZXNvdXJjZXM+ID0ge1xuICAnRU4tVVMnOiB7XG4gICAgc2t5dXhfY2hhcmFjdGVyX2NvdW50X21lc3NhZ2U6IHsgbWVzc2FnZTogJ3swfSBjaGFyYWN0ZXJzIG91dCBvZiB7MX0nIH0sXG4gICAgc2t5dXhfY2hhcmFjdGVyX2NvdW50X292ZXJfbGltaXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdZb3UgYXJlIG92ZXIgdGhlIGNoYXJhY3RlciBsaW1pdC4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9jaGFyYWN0ZXJfY291bnQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdMaW1pdCB7MH0gdG8gezF9IGNoYXJhY3RlcnMuJyxcbiAgICB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfZGF0ZTogeyBtZXNzYWdlOiAnU2VsZWN0IG9yIGVudGVyIGEgdmFsaWQgZGF0ZS4nIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9kYXRlX21heDoge1xuICAgICAgbWVzc2FnZTogJ1NlbGVjdCBvciBlbnRlciBhIGRhdGUgb24gb3IgYmVmb3JlIHswfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9kYXRlX21pbjoge1xuICAgICAgbWVzc2FnZTogJ1NlbGVjdCBvciBlbnRlciBhIGRhdGUgb24gb3IgYWZ0ZXIgezB9LicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfZnV0dXJlX2Rpc2FibGVkOiB7XG4gICAgICBtZXNzYWdlOiAnRnV0dXJlIGRhdGVzIGFyZSBkaXNhYmxlZC4gU2VsZWN0IG9yIGVudGVyIGEgZGF0ZSBpbiB0aGUgcGFzdC4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX2ludmFsaWQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdTZWxlY3Qgb3IgZW50ZXIgYSB2YWxpZCBkYXRlLicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfbWF4X2RhdGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdTZWxlY3Qgb3IgZW50ZXIgYSBkYXRlIG9uIG9yIGJlZm9yZSB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfZnV6enlfZGF0ZV9taW5fZGF0ZToge1xuICAgICAgbWVzc2FnZTogJ1NlbGVjdCBvciBlbnRlciBhIGRhdGUgb24gb3IgYWZ0ZXIgezB9LicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfeWVhcl9yZXF1aXJlZDogeyBtZXNzYWdlOiAnWWVhciBpcyByZXF1aXJlZC4nIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9lbWFpbDoge1xuICAgICAgbWVzc2FnZTogJ0VudGVyIGFuIGVtYWlsIGFkZHJlc3Mgd2l0aCBhIHZhbGlkIGZvcm1hdC4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9tYXhsZW5ndGg6IHsgbWVzc2FnZTogJ0xpbWl0IHswfSB0byB7MX0gY2hhcmFjdGVycy4nIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9taW5sZW5ndGg6IHtcbiAgICAgIG1lc3NhZ2U6ICd7MH0gbXVzdCBiZSBhdCBsZWFzdCB7MX0gY2hhcmFjdGVycy4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9waG9uZToge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ0VudGVyIGEgcGhvbmUgbnVtYmVyIG1hdGNoaW5nIHRoZSBmb3JtYXQgZm9yIHRoZSBzZWxlY3RlZCBjb3VudHJ5LicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX3JlcXVpcmVkOiB7IG1lc3NhZ2U6ICd7MH0gaXMgcmVxdWlyZWQuJyB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfdGltZTogeyBtZXNzYWdlOiAnU2VsZWN0IG9yIGVudGVyIGEgdmFsaWQgdGltZS4nIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl91cmw6IHsgbWVzc2FnZTogJ0VudGVyIGEgVVJMIHdpdGggYSB2YWxpZCBmb3JtYXQuJyB9LFxuICAgIHNreXV4X2Zvcm1fZ3JvdXBfcmVxdWlyZWQ6IHsgbWVzc2FnZTogJ1JlcXVpcmVkJyB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9idXR0b25fbGFiZWxfY2hvb3NlX2ZpbGU6IHsgbWVzc2FnZTogJ0F0dGFjaCBmaWxlJyB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9idXR0b25fbGFiZWxfY2hvb3NlX2ZpbGVfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdBdHRhY2ggZmlsZSBmb3InLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2J1dHRvbl9sYWJlbF9yZXBsYWNlX2ZpbGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdSZXBsYWNlIGZpbGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2J1dHRvbl9sYWJlbF9yZXBsYWNlX2ZpbGVfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdSZXBsYWNlIGZpbGUgezB9IGZvcicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9pdGVtX2RlbGV0ZTogeyBtZXNzYWdlOiAnRGVsZXRlIHswfScgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9pdGVtX3JlbW92ZTogeyBtZXNzYWdlOiAnUmVtb3ZlIGZpbGUgezB9IGZvcicgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9zaXplX2JfcGx1cmFsOiB7IG1lc3NhZ2U6ICd7MH0gYnl0ZXMnIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9iX3Npbmd1bGFyOiB7IG1lc3NhZ2U6ICd7MH0gYnl0ZScgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9zaXplX2diOiB7IG1lc3NhZ2U6ICd7MH0gR0InIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9rYjogeyBtZXNzYWdlOiAnezB9IEtCJyB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3NpemVfbWI6IHsgbWVzc2FnZTogJ3swfSBNQicgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJhZ19maWxlX2hlcmU6IHtcbiAgICAgIG1lc3NhZ2U6ICdEcmFnIGEgZmlsZSBoZXJlJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX29yX2NsaWNrOiB7XG4gICAgICBtZXNzYWdlOiAnRHJhZyBhIGZpbGUgaGVyZSBvciBjbGljayB0byBicm93c2UnLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2Ryb3BfZmlsZXNfaGVyZToge1xuICAgICAgbWVzc2FnZTogJ0Ryb3AgZmlsZXMgaGVyZScsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZmlsZV9hZGRlZDogeyBtZXNzYWdlOiAnezB9IGFkZGVkLicgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZmlsZV9yZXBsYWNlZDoge1xuICAgICAgbWVzc2FnZTogJ3swfSByZW1vdmVkLiB7MX0gYWRkZWQuJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9maWxlX3JlbW92ZWQ6IHsgbWVzc2FnZTogJ3swfSByZW1vdmVkLicgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfaW1hZ2VfcHJldmlld19hbHRfdGV4dDoge1xuICAgICAgbWVzc2FnZTogJ0ltYWdlIHByZXZpZXcnLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZToge1xuICAgICAgbWVzc2FnZTogJ1RoaXMgZmlsZSB0eXBlIGlzIGludmFsaWQnLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfbGFiZWw6IHsgbWVzc2FnZTogJ0xpbmsgdG8gYSBmaWxlJyB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9vcl9jbGlja190b19icm93c2U6IHtcbiAgICAgIG1lc3NhZ2U6ICdvciBjbGljayB0byBicm93c2UnLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfZG9uZTogeyBtZXNzYWdlOiAnRG9uZScgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19hZGRlZDoge1xuICAgICAgbWVzc2FnZTogJ0xpbmsgdG8gezB9IGFkZGVkLicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19yZW1vdmVkOiB7XG4gICAgICBtZXNzYWdlOiAnTGluayB0byB7MH0gcmVtb3ZlZC4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdHlwZV9lcnJvcl9sYWJlbF90ZXh0OiB7XG4gICAgICBtZXNzYWdlOiAnVXBsb2FkIG9uZSBvZiB0aGVzZSBmaWxlIHR5cGVzOiB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3R5cGVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWU6IHtcbiAgICAgIG1lc3NhZ2U6ICd7MH06IFVwbG9hZCBvbmUgb2YgdGhlc2UgZmlsZSB0eXBlczogezF9LicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfbWF4X2ZpbGVfc2l6ZV9lcnJvcl9sYWJlbF90ZXh0OiB7XG4gICAgICBtZXNzYWdlOiAnVXBsb2FkIGEgZmlsZSB1bmRlciB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9tYXhfZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lOiB7XG4gICAgICBtZXNzYWdlOiAnezB9OiBVcGxvYWQgYSBmaWxlIHVuZGVyIHsxfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X21pbl9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dDoge1xuICAgICAgbWVzc2FnZTogJ1VwbG9hZCBhIGZpbGUgb3ZlciB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9taW5fZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lOiB7XG4gICAgICBtZXNzYWdlOiAnezB9OiBVcGxvYWQgYSBmaWxlIG92ZXIgezF9LicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfbGFiZWxfbm9fZmlsZV9jaG9zZW46IHsgbWVzc2FnZTogJ05vIGZpbGUgY2hvc2VuLicgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfcmVxdWlyZWQ6IHsgbWVzc2FnZTogJ1JlcXVpcmVkJyB9LFxuICAgIHNreXV4X2lucHV0X2JveF9oZWxwX2lubGluZV9hcmlhX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU2hvdyBoZWxwIGNvbnRlbnQgZm9yIHswfScsXG4gICAgfSxcbiAgfSxcbiAgJ0ZSLUNBJzoge1xuICAgIHNreXV4X2NoYXJhY3Rlcl9jb3VudF9tZXNzYWdlOiB7IG1lc3NhZ2U6ICd7MH3CoGNhcmFjdMOocmVzIGRlIHsxfScgfSxcbiAgICBza3l1eF9jaGFyYWN0ZXJfY291bnRfb3Zlcl9saW1pdDoge1xuICAgICAgbWVzc2FnZTogJ1ZvdXMgYXZleiBkw6lwYXNzw6kgbGEgbGltaXRlIGRlIGNhcmFjdMOocmVzLicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2NoYXJhY3Rlcl9jb3VudDoge1xuICAgICAgbWVzc2FnZTogJ0xpbWl0ZSB7MH0gZGUgezF9wqBjYXJhY3TDqHJlKHMpLicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2RhdGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdTw6lsZWN0aW9ubmV6IG91IGVudHJleiB1bmUgZGF0ZSB2YWxpZGUuJyxcbiAgICB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfZGF0ZV9tYXg6IHtcbiAgICAgIG1lc3NhZ2U6ICdTw6lsZWN0aW9ubmV6IG91IGVudHJleiB1bmUgZGF0ZSBsZSBvdSBhdmFudCBsZSB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfZGF0ZV9taW46IHtcbiAgICAgIG1lc3NhZ2U6ICdTw6lsZWN0aW9ubmV6IG91IGVudHJleiB1bmUgZGF0ZSBsZSBvdSBhcHLDqHMgbGUgezB9LicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfZnV0dXJlX2Rpc2FibGVkOiB7XG4gICAgICBtZXNzYWdlOlxuICAgICAgICAnTGVzIGRhdGVzIGZ1dHVyZXMgc29udCBkw6lzYWN0aXbDqWVzLiBTw6lsZWN0aW9ubmV6IG91IGVudHJleiB1bmUgZGF0ZSBkYW5zIGxlIHBhc3PDqS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX2ludmFsaWQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdTw6lsZWN0aW9ubmV6IG91IGVudHJleiB1bmUgZGF0ZSB2YWxpZGUuJyxcbiAgICB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfZnV6enlfZGF0ZV9tYXhfZGF0ZToge1xuICAgICAgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXogb3UgZW50cmV6IHVuZSBkYXRlIGxlIG91IGF2YW50IGxlIHswfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX21pbl9kYXRlOiB7XG4gICAgICBtZXNzYWdlOiAnU8OpbGVjdGlvbm5leiBvdSBlbnRyZXogdW5lIGRhdGUgbGUgb3UgYXByw6hzIGxlIHswfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9mdXp6eV9kYXRlX3llYXJfcmVxdWlyZWQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdM4oCZYW5uw6llIGVzdCByZXF1aXNlLicsXG4gICAgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX2VtYWlsOiB7XG4gICAgICBtZXNzYWdlOiAnRW50cmV6IHVuZSBhZHJlc3NlIGNvdXJyaWVsIGF2ZWMgdW4gZm9ybWF0IHZhbGlkZS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9tYXhsZW5ndGg6IHsgbWVzc2FnZTogJ0xpbWl0ZSB7MH0gZGUgezF9wqBjYXJhY3TDqHJlKHMpLicgfSxcbiAgICBza3l1eF9mb3JtX2Vycm9yX21pbmxlbmd0aDoge1xuICAgICAgbWVzc2FnZTogJ3swfSBkb2l0IGF2b2lyIGF1IG1vaW5zIHsxfcKgY2FyYWN0w6hyZShzKS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9waG9uZToge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ0VudHJleiB1biBudW3DqXJvIGRlIHTDqWzDqXBob25lIGNvcnJlc3BvbmRhbnQgYXUgZm9ybWF0IGR1IHBheXMgc8OpbGVjdGlvbm7DqS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZm9ybV9lcnJvcl9yZXF1aXJlZDogeyBtZXNzYWdlOiAnezB9IGVzdCByZXF1aXMuJyB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfdGltZToge1xuICAgICAgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXogb3UgZW50cmV6IHVuZSBoZXVyZSB2YWxpZGUuJyxcbiAgICB9LFxuICAgIHNreXV4X2Zvcm1fZXJyb3JfdXJsOiB7IG1lc3NhZ2U6ICdFbnRyZXogdW5lIFVSTCBhdmVjIHVuIGZvcm1hdCB2YWxpZGUuJyB9LFxuICAgIHNreXV4X2Zvcm1fZ3JvdXBfcmVxdWlyZWQ6IHsgbWVzc2FnZTogJ1JlcXVpcycgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfYnV0dG9uX2xhYmVsX2Nob29zZV9maWxlOiB7XG4gICAgICBtZXNzYWdlOiAnSm9pbmRyZSB1biBmaWNoaWVyJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9idXR0b25fbGFiZWxfY2hvb3NlX2ZpbGVfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdKb2luZHJlIHVuIGZpY2hpZXIgcG91cicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfYnV0dG9uX2xhYmVsX3JlcGxhY2VfZmlsZToge1xuICAgICAgbWVzc2FnZTogJ1JlbXBsYWNlciBsZSBmaWNoaWVyJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9idXR0b25fbGFiZWxfcmVwbGFjZV9maWxlX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnUmVtcGxhY2VyIGxlIGZpY2hpZXIgezB9IHBvdXInLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfaXRlbV9kZWxldGU6IHsgbWVzc2FnZTogJ1N1cHByaW1lciB7MH0nIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfaXRlbV9yZW1vdmU6IHtcbiAgICAgIG1lc3NhZ2U6ICdSZXRpcmVyIGxlIGZpY2hpZXIgezB9IHBvdXInLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9iX3BsdXJhbDogeyBtZXNzYWdlOiAnezB9wqBvY3RldHMnIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9iX3Npbmd1bGFyOiB7IG1lc3NhZ2U6ICd7MH3CoG9jdGV0JyB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3NpemVfZ2I6IHsgbWVzc2FnZTogJ3swfcKgR28nIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9rYjogeyBtZXNzYWdlOiAnezB9wqBLbycgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9zaXplX21iOiB7IG1lc3NhZ2U6ICd7MH3CoE1vJyB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX2ZpbGVfaGVyZToge1xuICAgICAgbWVzc2FnZTogJ0ZhaXRlcyBnbGlzc2VyIHVuIGZpY2hpZXIgaWNpJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX29yX2NsaWNrOiB7XG4gICAgICBtZXNzYWdlOiAnRmFpdGVzIGdsaXNzZXIgdW4gZmljaGllciBpY2kgb3UgY2xpcXVleiBwb3VyIG5hdmlndWVyJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcm9wX2ZpbGVzX2hlcmU6IHtcbiAgICAgIG1lc3NhZ2U6ICdEw6lwbGFjZXogbGVzIGZpY2hpZXJzIGljaScsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZmlsZV9hZGRlZDoge1xuICAgICAgbWVzc2FnZTogJ3swfcKgYSDDqXTDqSBham91dMOpLicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZmlsZV9yZXBsYWNlZDoge1xuICAgICAgbWVzc2FnZTogJ3swfcKgYSDDqXTDqSByZXRpcsOpLiB7MX3CoGEgw6l0w6kgYWpvdXTDqS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ZpbGVfcmVtb3ZlZDoge1xuICAgICAgbWVzc2FnZTogJ3swfcKgYSDDqXTDqSByZXRpcsOpLicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfaW1hZ2VfcHJldmlld19hbHRfdGV4dDoge1xuICAgICAgbWVzc2FnZTogJ0FwZXLDp3UgZGUgbOKAmWltYWdlJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9pbnZhbGlkX2ZpbGU6IHtcbiAgICAgIG1lc3NhZ2U6ICdDZSB0eXBlIGRlIGZpY2hpZXIgbuKAmWVzdCBwYXMgdmFsaWRlJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnTGllbnMgdmVycyB1biBmaWNoaWVyJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9vcl9jbGlja190b19icm93c2U6IHtcbiAgICAgIG1lc3NhZ2U6ICdvdSBjbGlxdWV6IHBvdXIgbmF2aWd1ZXInLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfZG9uZTogeyBtZXNzYWdlOiAnVGVybWluw6knIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfYWRkZWQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdMZSBsaWVuIHZlcnMgezB9IGEgw6l0w6kgYWpvdXTDqS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfcmVtb3ZlZDoge1xuICAgICAgbWVzc2FnZTogJ0xlIGxpZW4gdmVycyB7MH0gYSDDqXTDqSByZXRpcsOpLicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV90eXBlX2Vycm9yX2xhYmVsX3RleHQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdUw6lsw6l2ZXJzZXogbOKAmXVuIGRlIGNlcyB0eXBlcyBkZSBmaWNoaWVywqA6IHswfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdHlwZV9lcnJvcl9sYWJlbF90ZXh0X3dpdGhfbmFtZToge1xuICAgICAgbWVzc2FnZTogJ3swfcKgOiBUw6lsw6l2ZXJzZXogbOKAmXVuIGRlIGNlcyB0eXBlcyBkZSBmaWNoaWVywqA6IHsxfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X21heF9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dDoge1xuICAgICAgbWVzc2FnZTogJ1TDqWzDqXZlcnNleiB1biBmaWNoaWVyIGRlIG1vaW5zIGRlIHswfS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X21heF9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWU6IHtcbiAgICAgIG1lc3NhZ2U6ICd7MH3CoDogVMOpbMOpdmVyc2V6IHVuIGZpY2hpZXIgZGUgbW9pbnMgZGUgezF9LicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfbWluX2ZpbGVfc2l6ZV9lcnJvcl9sYWJlbF90ZXh0OiB7XG4gICAgICBtZXNzYWdlOiAnVMOpbMOpdmVyc2V6IHVuIGZpY2hpZXIgZGUgcGx1cyBkZSB7MH0uJyxcbiAgICB9LFxuICAgIHNreXV4X2ZpbGVfYXR0YWNobWVudF9taW5fZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lOiB7XG4gICAgICBtZXNzYWdlOiAnezB9wqA6IFTDqWzDqXZlcnNleiB1biBmaWNoaWVyIGRlIHBsdXMgZGUgezF9LicsXG4gICAgfSxcbiAgICBza3l1eF9maWxlX2F0dGFjaG1lbnRfbGFiZWxfbm9fZmlsZV9jaG9zZW46IHtcbiAgICAgIG1lc3NhZ2U6ICdBdWN1biBmaWNoaWVyIGNob2lzaS4nLFxuICAgIH0sXG4gICAgc2t5dXhfZmlsZV9hdHRhY2htZW50X3JlcXVpcmVkOiB7IG1lc3NhZ2U6ICdSZXF1aXMnIH0sXG4gICAgc2t5dXhfaW5wdXRfYm94X2hlbHBfaW5saW5lX2FyaWFfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdBZmZpY2hlciBsZSBjb250ZW51IGRlIGzigJlhaWRlIHBvdXIgezB9JyxcbiAgICB9LFxuICB9LFxufTtcblxuU2t5TGliUmVzb3VyY2VzU2VydmljZS5hZGRSZXNvdXJjZXMoUkVTT1VSQ0VTKTtcblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUge31cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SkyCharacterCounterScreenReaderPipe {\n #previousAnnouncementPoint;\n transform(characterCount, characterCountLimit) {\n /* Safety check */\n /* istanbul ignore if */\n if (characterCount === undefined || characterCountLimit === undefined) {\n return '';\n }\n // We want to announce every 10 characters if we are within 50 of the limit or every 50 otherwise.\n const modulus = characterCountLimit - Math.floor(characterCount / 10) * 10 <= 50\n ? 10\n : 50;\n if (characterCount === characterCountLimit ||\n characterCount % modulus === 0 ||\n this.#previousAnnouncementPoint === undefined) {\n this.#previousAnnouncementPoint = characterCount;\n }\n else {\n // We want the floor of the previous announcement and modulus in case the previous announcement wasn't an announcement point.\n const previousAnnouncementQuotient = Math.floor(this.#previousAnnouncementPoint / modulus);\n // Lower limit of what announcement should have been made for the current count\n const currentAnnouncementQuotient = Math.floor(characterCount / modulus);\n // Next announcement that would be made if the current count increases\n const currentAnnouncementNextAnnouncement = Math.ceil(characterCount / modulus);\n // Jump to the appropriate announcement point if the count jumps. For example, if going from 43 of 50 characters to 21 of 50 characters.\n if (currentAnnouncementQuotient !== previousAnnouncementQuotient &&\n currentAnnouncementNextAnnouncement !== previousAnnouncementQuotient) {\n this.#previousAnnouncementPoint =\n Math.floor(characterCount / modulus) * modulus;\n }\n }\n return this.#previousAnnouncementPoint.toLocaleString();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterScreenReaderPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterScreenReaderPipe, isStandalone: true, name: \"skyCharacterCounterScreenReader\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterScreenReaderPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyCharacterCounterScreenReader',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50ZXItc2NyZWVuLXJlYWRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGFyYWN0ZXItY291bnRlci9jaGFyYWN0ZXItY291bnRlci1zY3JlZW4tcmVhZGVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxtQ0FBbUM7SUFDOUMsMEJBQTBCLENBQXFCO0lBRXhDLFNBQVMsQ0FDZCxjQUFrQyxFQUNsQyxtQkFBdUM7UUFFdkMsa0JBQWtCO1FBQ2xCLHdCQUF3QjtRQUN4QixJQUFJLGNBQWMsS0FBSyxTQUFTLElBQUksbUJBQW1CLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsa0dBQWtHO1FBQ2xHLE1BQU0sT0FBTyxHQUNYLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQzlELENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVULElBQ0UsY0FBYyxLQUFLLG1CQUFtQjtZQUN0QyxjQUFjLEdBQUcsT0FBTyxLQUFLLENBQUM7WUFDOUIsSUFBSSxDQUFDLDBCQUEwQixLQUFLLFNBQVMsRUFDN0MsQ0FBQztZQUNELElBQUksQ0FBQywwQkFBMEIsR0FBRyxjQUFjLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTiw2SEFBNkg7WUFDN0gsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUM3QyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsT0FBTyxDQUMxQyxDQUFDO1lBQ0YsK0VBQStFO1lBQy9FLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDekUsc0VBQXNFO1lBQ3RFLE1BQU0sbUNBQW1DLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDbkQsY0FBYyxHQUFHLE9BQU8sQ0FDekIsQ0FBQztZQUVGLHdJQUF3STtZQUN4SSxJQUNFLDJCQUEyQixLQUFLLDRCQUE0QjtnQkFDNUQsbUNBQW1DLEtBQUssNEJBQTRCLEVBQ3BFLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLDBCQUEwQjtvQkFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUQsQ0FBQzsrR0FoRFUsbUNBQW1DOzZHQUFuQyxtQ0FBbUM7OzRGQUFuQyxtQ0FBbUM7a0JBSC9DLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlDQUFpQztpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NreUNoYXJhY3RlckNvdW50ZXJTY3JlZW5SZWFkZXInLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDaGFyYWN0ZXJDb3VudGVyU2NyZWVuUmVhZGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAjcHJldmlvdXNBbm5vdW5jZW1lbnRQb2ludDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY2hhcmFjdGVyQ291bnQ6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICBjaGFyYWN0ZXJDb3VudExpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICk6IHN0cmluZyB7XG4gICAgLyogU2FmZXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGNoYXJhY3RlckNvdW50ID09PSB1bmRlZmluZWQgfHwgY2hhcmFjdGVyQ291bnRMaW1pdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gV2Ugd2FudCB0byBhbm5vdW5jZSBldmVyeSAxMCBjaGFyYWN0ZXJzIGlmIHdlIGFyZSB3aXRoaW4gNTAgb2YgdGhlIGxpbWl0IG9yIGV2ZXJ5IDUwIG90aGVyd2lzZS5cbiAgICBjb25zdCBtb2R1bHVzID1cbiAgICAgIGNoYXJhY3RlckNvdW50TGltaXQgLSBNYXRoLmZsb29yKGNoYXJhY3RlckNvdW50IC8gMTApICogMTAgPD0gNTBcbiAgICAgICAgPyAxMFxuICAgICAgICA6IDUwO1xuXG4gICAgaWYgKFxuICAgICAgY2hhcmFjdGVyQ291bnQgPT09IGNoYXJhY3RlckNvdW50TGltaXQgfHxcbiAgICAgIGNoYXJhY3RlckNvdW50ICUgbW9kdWx1cyA9PT0gMCB8fFxuICAgICAgdGhpcy4jcHJldmlvdXNBbm5vdW5jZW1lbnRQb2ludCA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aGlzLiNwcmV2aW91c0Fubm91bmNlbWVudFBvaW50ID0gY2hhcmFjdGVyQ291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIHdhbnQgdGhlIGZsb29yIG9mIHRoZSBwcmV2aW91cyBhbm5vdW5jZW1lbnQgYW5kIG1vZHVsdXMgaW4gY2FzZSB0aGUgcHJldmlvdXMgYW5ub3VuY2VtZW50IHdhc24ndCBhbiBhbm5vdW5jZW1lbnQgcG9pbnQuXG4gICAgICBjb25zdCBwcmV2aW91c0Fubm91bmNlbWVudFF1b3RpZW50ID0gTWF0aC5mbG9vcihcbiAgICAgICAgdGhpcy4jcHJldmlvdXNBbm5vdW5jZW1lbnRQb2ludCAvIG1vZHVsdXMsXG4gICAgICApO1xuICAgICAgLy8gTG93ZXIgbGltaXQgb2Ygd2hhdCBhbm5vdW5jZW1lbnQgc2hvdWxkIGhhdmUgYmVlbiBtYWRlIGZvciB0aGUgY3VycmVudCBjb3VudFxuICAgICAgY29uc3QgY3VycmVudEFubm91bmNlbWVudFF1b3RpZW50ID0gTWF0aC5mbG9vcihjaGFyYWN0ZXJDb3VudCAvIG1vZHVsdXMpO1xuICAgICAgLy8gTmV4dCBhbm5vdW5jZW1lbnQgdGhhdCB3b3VsZCBiZSBtYWRlIGlmIHRoZSBjdXJyZW50IGNvdW50IGluY3JlYXNlc1xuICAgICAgY29uc3QgY3VycmVudEFubm91bmNlbWVudE5leHRBbm5vdW5jZW1lbnQgPSBNYXRoLmNlaWwoXG4gICAgICAgIGNoYXJhY3RlckNvdW50IC8gbW9kdWx1cyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEp1bXAgdG8gdGhlIGFwcHJvcHJpYXRlIGFubm91bmNlbWVudCBwb2ludCBpZiB0aGUgY291bnQganVtcHMuIEZvciBleGFtcGxlLCBpZiBnb2luZyBmcm9tIDQzIG9mIDUwIGNoYXJhY3RlcnMgdG8gMjEgb2YgNTAgY2hhcmFjdGVycy5cbiAgICAgIGlmIChcbiAgICAgICAgY3VycmVudEFubm91bmNlbWVudFF1b3RpZW50ICE9PSBwcmV2aW91c0Fubm91bmNlbWVudFF1b3RpZW50ICYmXG4gICAgICAgIGN1cnJlbnRBbm5vdW5jZW1lbnROZXh0QW5ub3VuY2VtZW50ICE9PSBwcmV2aW91c0Fubm91bmNlbWVudFF1b3RpZW50XG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jcHJldmlvdXNBbm5vdW5jZW1lbnRQb2ludCA9XG4gICAgICAgICAgTWF0aC5mbG9vcihjaGFyYWN0ZXJDb3VudCAvIG1vZHVsdXMpICogbW9kdWx1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jcHJldmlvdXNBbm5vdW5jZW1lbnRQb2ludC50b0xvY2FsZVN0cmluZygpO1xuICB9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"./character-counter-screen-reader.pipe\";\nimport * as i3 from \"@skyux/i18n\";\nexport class SkyCharacterCounterIndicatorComponent {\n #_characterCountLimit = 0;\n #_characterCount = 0;\n #changeDetector;\n constructor(changeDetector) {\n this.#changeDetector = changeDetector;\n }\n get characterCount() {\n return this.#_characterCount;\n }\n set characterCount(count) {\n this.#_characterCount = count;\n this.#changeDetector.markForCheck();\n }\n get characterCountLimit() {\n return this.#_characterCountLimit;\n }\n set characterCountLimit(limit) {\n this.#_characterCountLimit = limit;\n this.#changeDetector.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterIndicatorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyCharacterCounterIndicatorComponent, isStandalone: false, selector: \"sky-character-counter-indicator\", inputs: { characterCount: \"characterCount\", characterCountLimit: \"characterCountLimit\" }, ngImport: i0, template: \"<span\\n class=\\\"sky-character-count-label sky-font-deemphasized\\\"\\n [ngClass]=\\\"{ 'sky-error-label': characterCount > characterCountLimit }\\\"\\n>\\n {{ characterCount + '/' + characterCountLimit }}\\n</span>\\n<span aria-live=\\\"polite\\\" class=\\\"sky-screen-reader-only\\\">\\n @if (characterCount > characterCountLimit) {\\n <ng-container>{{\\n 'skyux_character_count_over_limit' | skyLibResources\\n }}</ng-container>\\n } @else {\\n @if (\\n characterCount | skyCharacterCounterScreenReader: characterCountLimit;\\n as screenReaderCount\\n ) {\\n <ng-container>{{\\n 'skyux_character_count_message'\\n | skyLibResources: screenReaderCount : characterCountLimit\\n }}</ng-container>\\n }\\n }\\n</span>\\n\", styles: [\".sky-character-count-label:not(.sky-theme-modern *){--sky-override-character-count-font-size: 15px}:host{flex-shrink:.0001}.sky-character-count-label{font-size:var(--sky-override-character-count-font-size, inherit)}.sky-character-count-label.sky-error-label{margin:0}.sky-character-count-label.sky-error-label:before{font-style:normal}.sky-screen-reader-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);outline:none;white-space:nowrap}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: i2.SkyCharacterCounterScreenReaderPipe, name: \"skyCharacterCounterScreenReader\" }, { kind: \"pipe\", type: i3.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterIndicatorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-character-counter-indicator', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<span\\n class=\\\"sky-character-count-label sky-font-deemphasized\\\"\\n [ngClass]=\\\"{ 'sky-error-label': characterCount > characterCountLimit }\\\"\\n>\\n {{ characterCount + '/' + characterCountLimit }}\\n</span>\\n<span aria-live=\\\"polite\\\" class=\\\"sky-screen-reader-only\\\">\\n @if (characterCount > characterCountLimit) {\\n <ng-container>{{\\n 'skyux_character_count_over_limit' | skyLibResources\\n }}</ng-container>\\n } @else {\\n @if (\\n characterCount | skyCharacterCounterScreenReader: characterCountLimit;\\n as screenReaderCount\\n ) {\\n <ng-container>{{\\n 'skyux_character_count_message'\\n | skyLibResources: screenReaderCount : characterCountLimit\\n }}</ng-container>\\n }\\n }\\n</span>\\n\", styles: [\".sky-character-count-label:not(.sky-theme-modern *){--sky-override-character-count-font-size: 15px}:host{flex-shrink:.0001}.sky-character-count-label{font-size:var(--sky-override-character-count-font-size, inherit)}.sky-character-count-label.sky-error-label{margin:0}.sky-character-count-label.sky-error-label:before{font-style:normal}.sky-screen-reader-only{width:0;height:0;padding:0;opacity:0;position:absolute;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);outline:none;white-space:nowrap}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { characterCount: [{\n type: Input\n }], characterCountLimit: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvY2hhcmFjdGVyLWNvdW50ZXIvY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvY2hhcmFjdGVyLWNvdW50ZXIvY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTdkIsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDMUIsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBRXJCLGVBQWUsQ0FBb0I7SUFFbkMsWUFBWSxjQUFpQztRQUMzQyxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUNXLGNBQWMsQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQ1csbUJBQW1CLENBQUMsS0FBYTtRQUMxQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQzsrR0E1QlUscUNBQXFDO21HQUFyQyxxQ0FBcUMsc0xDZGxELDB1QkF1QkE7OzRGRFRhLHFDQUFxQztrQkFQakQsU0FBUzsrQkFDRSxpQ0FBaUMsbUJBRzFCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs7c0JBZ0JoQixLQUFLOztzQkFVTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWNoYXJhY3Rlci1jb3VudGVyLWluZGljYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9yQ29tcG9uZW50IHtcbiAgI19jaGFyYWN0ZXJDb3VudExpbWl0ID0gMDtcbiAgI19jaGFyYWN0ZXJDb3VudCA9IDA7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICBjb25zdHJ1Y3RvcihjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFyYWN0ZXJDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfY2hhcmFjdGVyQ291bnQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoYXJhY3RlckNvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLiNfY2hhcmFjdGVyQ291bnQgPSBjb3VudDtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcmFjdGVyQ291bnRMaW1pdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfY2hhcmFjdGVyQ291bnRMaW1pdDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hhcmFjdGVyQ291bnRMaW1pdChsaW1pdDogbnVtYmVyKSB7XG4gICAgdGhpcy4jX2NoYXJhY3RlckNvdW50TGltaXQgPSBsaW1pdDtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPHNwYW5cbiAgY2xhc3M9XCJza3ktY2hhcmFjdGVyLWNvdW50LWxhYmVsIHNreS1mb250LWRlZW1waGFzaXplZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3NreS1lcnJvci1sYWJlbCc6IGNoYXJhY3RlckNvdW50ID4gY2hhcmFjdGVyQ291bnRMaW1pdCB9XCJcbj5cbiAge3sgY2hhcmFjdGVyQ291bnQgKyAnLycgKyBjaGFyYWN0ZXJDb3VudExpbWl0IH19XG48L3NwYW4+XG48c3BhbiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj5cbiAgQGlmIChjaGFyYWN0ZXJDb3VudCA+IGNoYXJhY3RlckNvdW50TGltaXQpIHtcbiAgICA8bmctY29udGFpbmVyPnt7XG4gICAgICAnc2t5dXhfY2hhcmFjdGVyX2NvdW50X292ZXJfbGltaXQnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgfX08L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAgQGlmIChcbiAgICAgIGNoYXJhY3RlckNvdW50IHwgc2t5Q2hhcmFjdGVyQ291bnRlclNjcmVlblJlYWRlcjogY2hhcmFjdGVyQ291bnRMaW1pdDtcbiAgICAgIGFzIHNjcmVlblJlYWRlckNvdW50XG4gICAgKSB7XG4gICAgICA8bmctY29udGFpbmVyPnt7XG4gICAgICAgICdza3l1eF9jaGFyYWN0ZXJfY291bnRfbWVzc2FnZSdcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogc2NyZWVuUmVhZGVyQ291bnQgOiBjaGFyYWN0ZXJDb3VudExpbWl0XG4gICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgfVxuPC9zcGFuPlxuIl19","import { Directive, Input } from '@angular/core';\nimport { NG_VALIDATORS, } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\n/**\n * Creates an input field that validates the number of characters. Place this directive on\n * an `input` or `textarea` element. If users enter more characters than allowed, then the\n * input field is invalid and the component displays an error indicator.\n * @required\n */\nexport class SkyCharacterCounterInputDirective {\n /**\n * The character count indicator component that displays the character count,\n * character limit, and over-the-limit indicator. Place this directive on an `input` or\n * `textarea` element.\n */\n get skyCharacterCounterIndicator() {\n return this.#_skyCharacterCounterIndicator;\n }\n set skyCharacterCounterIndicator(value) {\n this.#_skyCharacterCounterIndicator = value;\n this.#updateIndicatorLimit();\n }\n /**\n * The maximum number of characters allowed in the input field. Place this directive\n * on an `input` or `textarea` element. This property accepts `number` values.\n * @required\n */\n set skyCharacterCounterLimit(value) {\n this.#skyCharacterCounterLimitOrDefault = value ?? 0;\n this.#updateIndicatorLimit();\n }\n #_skyCharacterCounterIndicator;\n #skyCharacterCounterLimitOrDefault = 0;\n validate(control) {\n const value = control.value;\n this.#updateIndicatorCount((value && value.length) || 0);\n if (!value) {\n return null;\n }\n const limit = this.#skyCharacterCounterLimitOrDefault;\n if (value.length > this.#skyCharacterCounterLimitOrDefault) {\n // This is needed to apply the appropriate error styles to the input.\n control.markAsTouched();\n return {\n skyCharacterCounter: {\n invalid: value,\n limit,\n },\n };\n }\n return null;\n }\n registerOnValidatorChange(fn) {\n this.#validatorChange = fn;\n }\n #updateIndicatorCount(count) {\n if (this.skyCharacterCounterIndicator) {\n this.skyCharacterCounterIndicator.characterCount = count;\n }\n }\n #updateIndicatorLimit() {\n if (this.skyCharacterCounterIndicator) {\n this.skyCharacterCounterIndicator.characterCountLimit =\n this.#skyCharacterCounterLimitOrDefault;\n }\n this.#validatorChange();\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #validatorChange = () => { };\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterInputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyCharacterCounterInputDirective, isStandalone: false, selector: \"[skyCharacterCounter]\", inputs: { skyCharacterCounterIndicator: \"skyCharacterCounterIndicator\", skyCharacterCounterLimit: \"skyCharacterCounterLimit\" }, providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyCharacterCounterInputDirective,\n multi: true,\n },\n ], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyCharacterCounter]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyCharacterCounterInputDirective,\n multi: true,\n },\n ],\n standalone: false,\n }]\n }], propDecorators: { skyCharacterCounterIndicator: [{\n type: Input\n }], skyCharacterCounterLimit: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGFyYWN0ZXItY291bnRlci9jaGFyYWN0ZXItY291bnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUVMLGFBQWEsR0FHZCxNQUFNLGdCQUFnQixDQUFDOztBQUl4Qjs7Ozs7R0FLRztBQVlILE1BQU0sT0FBTyxpQ0FBaUM7SUFDNUM7Ozs7T0FJRztJQUNILElBQ1csNEJBQTRCO1FBR3JDLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFXLDRCQUE0QixDQUNyQyxLQUF3RDtRQUV4RCxJQUFJLENBQUMsOEJBQThCLEdBQUcsS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDVyx3QkFBd0IsQ0FBQyxLQUF5QjtRQUMzRCxJQUFJLENBQUMsa0NBQWtDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsOEJBQThCLENBRWhCO0lBRWQsa0NBQWtDLEdBQUcsQ0FBQyxDQUFDO0lBRWhDLFFBQVEsQ0FBQyxPQUF3QjtRQUN0QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBRTVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1FBRXRELElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztZQUMzRCxxRUFBcUU7WUFDckUsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRXhCLE9BQU87Z0JBQ0wsbUJBQW1CLEVBQUU7b0JBQ25CLE9BQU8sRUFBRSxLQUFLO29CQUNkLEtBQUs7aUJBQ047YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHlCQUF5QixDQUFDLEVBQWM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBYTtRQUNqQyxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLG1CQUFtQjtnQkFDbkQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLGdCQUFnQixHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQzsrR0FsRnZCLGlDQUFpQzttR0FBakMsaUNBQWlDLHFNQVRqQztZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzRGQUdVLGlDQUFpQztrQkFYN0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsbUNBQW1DOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsS0FBSztpQkFDbEI7O3NCQU9FLEtBQUs7O3NCQWtCTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgU2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnB1dCBmaWVsZCB0aGF0IHZhbGlkYXRlcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMuIFBsYWNlIHRoaXMgZGlyZWN0aXZlIG9uXG4gKiBhbiBgaW5wdXRgIG9yIGB0ZXh0YXJlYWAgZWxlbWVudC4gSWYgdXNlcnMgZW50ZXIgbW9yZSBjaGFyYWN0ZXJzIHRoYW4gYWxsb3dlZCwgdGhlbiB0aGVcbiAqIGlucHV0IGZpZWxkIGlzIGludmFsaWQgYW5kIHRoZSBjb21wb25lbnQgZGlzcGxheXMgYW4gZXJyb3IgaW5kaWNhdG9yLlxuICogQHJlcXVpcmVkXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lDaGFyYWN0ZXJDb3VudGVyXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU2t5Q2hhcmFjdGVyQ291bnRlcklucHV0RGlyZWN0aXZlLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNoYXJhY3RlckNvdW50ZXJJbnB1dERpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIGNvdW50IGluZGljYXRvciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyB0aGUgY2hhcmFjdGVyIGNvdW50LFxuICAgKiBjaGFyYWN0ZXIgbGltaXQsIGFuZCBvdmVyLXRoZS1saW1pdCBpbmRpY2F0b3IuIFBsYWNlIHRoaXMgZGlyZWN0aXZlIG9uIGFuIGBpbnB1dGAgb3JcbiAgICogYHRleHRhcmVhYCBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBza3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9yKCk6XG4gICAgfCBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9yQ29tcG9uZW50XG4gICAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvcjtcbiAgfVxuICBwdWJsaWMgc2V0IHNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3IoXG4gICAgdmFsdWU6IFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI19za3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9yID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlSW5kaWNhdG9yTGltaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoZSBpbnB1dCBmaWVsZC4gUGxhY2UgdGhpcyBkaXJlY3RpdmVcbiAgICogb24gYW4gYGlucHV0YCBvciBgdGV4dGFyZWFgIGVsZW1lbnQuIFRoaXMgcHJvcGVydHkgYWNjZXB0cyBgbnVtYmVyYCB2YWx1ZXMuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3lDaGFyYWN0ZXJDb3VudGVyTGltaXQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI3NreUNoYXJhY3RlckNvdW50ZXJMaW1pdE9yRGVmYXVsdCA9IHZhbHVlID8/IDA7XG4gICAgdGhpcy4jdXBkYXRlSW5kaWNhdG9yTGltaXQoKTtcbiAgfVxuXG4gICNfc2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvcjpcbiAgICB8IFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JDb21wb25lbnRcbiAgICB8IHVuZGVmaW5lZDtcblxuICAjc2t5Q2hhcmFjdGVyQ291bnRlckxpbWl0T3JEZWZhdWx0ID0gMDtcblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcblxuICAgIHRoaXMuI3VwZGF0ZUluZGljYXRvckNvdW50KCh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHx8IDApO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbGltaXQgPSB0aGlzLiNza3lDaGFyYWN0ZXJDb3VudGVyTGltaXRPckRlZmF1bHQ7XG5cbiAgICBpZiAodmFsdWUubGVuZ3RoID4gdGhpcy4jc2t5Q2hhcmFjdGVyQ291bnRlckxpbWl0T3JEZWZhdWx0KSB7XG4gICAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBhcHBseSB0aGUgYXBwcm9wcmlhdGUgZXJyb3Igc3R5bGVzIHRvIHRoZSBpbnB1dC5cbiAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lDaGFyYWN0ZXJDb3VudGVyOiB7XG4gICAgICAgICAgaW52YWxpZDogdmFsdWUsXG4gICAgICAgICAgbGltaXQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiN2YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gICN1cGRhdGVJbmRpY2F0b3JDb3VudChjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvcikge1xuICAgICAgdGhpcy5za3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9yLmNoYXJhY3RlckNvdW50ID0gY291bnQ7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUluZGljYXRvckxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3IpIHtcbiAgICAgIHRoaXMuc2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvci5jaGFyYWN0ZXJDb3VudExpbWl0ID1cbiAgICAgICAgdGhpcy4jc2t5Q2hhcmFjdGVyQ291bnRlckxpbWl0T3JEZWZhdWx0O1xuICAgIH1cblxuICAgIHRoaXMuI3ZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjdmFsaWRhdG9yQ2hhbmdlID0gKCk6IHZvaWQgPT4ge307XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\nimport { SkyCharacterCounterIndicatorComponent } from './character-counter-indicator.component';\nimport { SkyCharacterCounterScreenReaderPipe } from './character-counter-screen-reader.pipe';\nimport { SkyCharacterCounterInputDirective } from './character-counter.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyCharacterCounterModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterModule, declarations: [SkyCharacterCounterInputDirective,\n SkyCharacterCounterIndicatorComponent], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCharacterCounterScreenReaderPipe,\n SkyFormsResourcesModule], exports: [SkyCharacterCounterInputDirective,\n SkyCharacterCounterIndicatorComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterModule, imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyFormsResourcesModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCharacterCounterModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyCharacterCounterInputDirective,\n SkyCharacterCounterIndicatorComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCharacterCounterScreenReaderPipe,\n SkyFormsResourcesModule,\n ],\n exports: [\n SkyCharacterCounterInputDirective,\n SkyCharacterCounterIndicatorComponent,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcmFjdGVyLWNvdW50ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGFyYWN0ZXItY291bnRlci9jaGFyYWN0ZXItY291bnRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQW1CbEYsTUFBTSxPQUFPLHlCQUF5QjsrR0FBekIseUJBQXlCO2dIQUF6Qix5QkFBeUIsaUJBZmxDLGlDQUFpQztZQUNqQyxxQ0FBcUMsYUFHckMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsbUNBQW1DO1lBQ25DLHVCQUF1QixhQUd2QixpQ0FBaUM7WUFDakMscUNBQXFDO2dIQUc1Qix5QkFBeUIsWUFYbEMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFFbkIsdUJBQXVCOzs0RkFPZCx5QkFBeUI7a0JBakJyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixpQ0FBaUM7d0JBQ2pDLHFDQUFxQztxQkFDdEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLG1DQUFtQzt3QkFDbkMsdUJBQXVCO3FCQUN4QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUNBQWlDO3dCQUNqQyxxQ0FBcUM7cUJBQ3RDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWZvcm1zLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lDaGFyYWN0ZXJDb3VudGVySW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUNoYXJhY3RlckNvdW50ZXJTY3JlZW5SZWFkZXJQaXBlIH0gZnJvbSAnLi9jaGFyYWN0ZXItY291bnRlci1zY3JlZW4tcmVhZGVyLnBpcGUnO1xuaW1wb3J0IHsgU2t5Q2hhcmFjdGVyQ291bnRlcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9jaGFyYWN0ZXItY291bnRlci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lDaGFyYWN0ZXJDb3VudGVySW5wdXREaXJlY3RpdmUsXG4gICAgU2t5Q2hhcmFjdGVyQ291bnRlckluZGljYXRvckNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFNreUNoYXJhY3RlckNvdW50ZXJTY3JlZW5SZWFkZXJQaXBlLFxuICAgIFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5Q2hhcmFjdGVyQ291bnRlcklucHV0RGlyZWN0aXZlLFxuICAgIFNreUNoYXJhY3RlckNvdW50ZXJJbmRpY2F0b3JDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUNoYXJhY3RlckNvdW50ZXJNb2R1bGUge31cbiJdfQ==","import { InjectionToken } from '@angular/core';\n/**\n * @internal\n */\nexport const SKY_FORM_ERRORS_ENABLED = new InjectionToken('SKY_FORM_ERRORS_ENABLED');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FDdkQseUJBQXlCLENBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQgPSBuZXcgSW5qZWN0aW9uVG9rZW48Ym9vbGVhbj4oXG4gICdTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCcsXG4pO1xuIl19","import { ChangeDetectionStrategy, Component, HostBinding, Input, inject, } from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\nimport { SKY_FORM_ERRORS_ENABLED } from './form-errors-enabled-token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/theme\";\nimport * as i2 from \"@skyux/indicators\";\n/**\n * Displays default and custom form field error messages for form field components.\n * Set `labelText` on the `SkyInputBoxComponent` to automatically display required,\n * maximum length, minimum length, date, email, phone number, time, and URL errors.\n * To display custom errors, include `sky-form-error` elements in the `SkyInputBoxComponent`.\n */\nexport class SkyFormErrorComponent {\n get dataErrorName() {\n return this.errorName;\n }\n constructor() {\n this.formErrors = inject(SKY_FORM_ERRORS_ENABLED, {\n optional: true,\n });\n if (!this.formErrors) {\n throw new Error('The `sky-form-error` component is not supported in the provided context.');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyFormErrorComponent, isStandalone: true, selector: \"sky-form-error\", inputs: { errorName: \"errorName\", errorText: \"errorText\" }, host: { properties: { \"attr.data-error-name\": \"this.dataErrorName\" } }, hostDirectives: [{ directive: i1.SkyThemeComponentClassDirective }], ngImport: i0, template: `\n @if (formErrors) {\n <sky-status-indicator\n class=\"sky-form-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n >\n {{ errorText }}\n </sky-status-indicator>\n }\n `, isInline: true, styles: [\":host.sky-cmp-theme-default{--sky-override-form-error-margin-top: var(--sky-margin-stacked-xs)}@keyframes sky-modal-error{0%,50%{max-height:0;margin-top:0;opacity:0}to{max-height:500px;opacity:1}}:host{animation:sky-modal-error .3s ease-out 1;display:block;margin-top:var(--sky-override-form-error-margin-top, var(--sky-space-gap-stacked_supplemental-s))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: SkyStatusIndicatorModule }, { kind: \"component\", type: i2.λ10, selector: \"sky-status-indicator\", inputs: [\"indicatorType\", \"descriptionType\", \"customDescription\", \"helpPopoverContent\", \"helpPopoverTitle\", \"helpKey\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-form-error', imports: [SkyStatusIndicatorModule], template: `\n @if (formErrors) {\n <sky-status-indicator\n class=\"sky-form-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n >\n {{ errorText }}\n </sky-status-indicator>\n }\n `, hostDirectives: [SkyThemeComponentClassDirective], changeDetection: ChangeDetectionStrategy.OnPush, styles: [\":host.sky-cmp-theme-default{--sky-override-form-error-margin-top: var(--sky-margin-stacked-xs)}@keyframes sky-modal-error{0%,50%{max-height:0;margin-top:0;opacity:0}to{max-height:500px;opacity:1}}:host{animation:sky-modal-error .3s ease-out 1;display:block;margin-top:var(--sky-override-form-error-margin-top, var(--sky-space-gap-stacked_supplemental-s))}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { errorName: [{\n type: Input,\n args: [{ required: true }]\n }], errorText: [{\n type: Input,\n args: [{ required: true }]\n }], dataErrorName: [{\n type: HostBinding,\n args: ['attr.data-error-name']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBRXRFOzs7OztHQUtHO0FBbUJILE1BQU0sT0FBTyxxQkFBcUI7SUFlaEMsSUFBZ0QsYUFBYTtRQUMzRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQU1EO1FBSm1CLGVBQVUsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUU7WUFDOUQsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7UUFHRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMEVBQTBFLENBQzNFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0E3QlUscUJBQXFCO21HQUFyQixxQkFBcUIsbVJBZnRCOzs7Ozs7Ozs7O0dBVVQsOGFBWFMsd0JBQXdCOzs0RkFnQnZCLHFCQUFxQjtrQkFsQmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLFdBQ2pCLENBQUMsd0JBQXdCLENBQUMsWUFDekI7Ozs7Ozs7Ozs7R0FVVCxrQkFFZSxDQUFDLCtCQUErQixDQUFDLG1CQUNoQyx1QkFBdUIsQ0FBQyxNQUFNOztzQkFPOUMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7O3NCQU94QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs7c0JBR3hCLFdBQVc7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5U3RhdHVzSW5kaWNhdG9yTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5VGhlbWVDb21wb25lbnRDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVEIH0gZnJvbSAnLi9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuJztcblxuLyoqXG4gKiBEaXNwbGF5cyBkZWZhdWx0IGFuZCBjdXN0b20gZm9ybSBmaWVsZCBlcnJvciBtZXNzYWdlcyBmb3IgZm9ybSBmaWVsZCBjb21wb25lbnRzLlxuICogU2V0IGBsYWJlbFRleHRgIG9uIHRoZSBgU2t5SW5wdXRCb3hDb21wb25lbnRgIHRvIGF1dG9tYXRpY2FsbHkgZGlzcGxheSByZXF1aXJlZCxcbiAqIG1heGltdW0gbGVuZ3RoLCBtaW5pbXVtIGxlbmd0aCwgZGF0ZSwgZW1haWwsIHBob25lIG51bWJlciwgdGltZSwgYW5kIFVSTCBlcnJvcnMuXG4gKiBUbyBkaXNwbGF5IGN1c3RvbSBlcnJvcnMsIGluY2x1ZGUgYHNreS1mb3JtLWVycm9yYCBlbGVtZW50cyBpbiB0aGUgYFNreUlucHV0Qm94Q29tcG9uZW50YC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWZvcm0tZXJyb3InLFxuICBpbXBvcnRzOiBbU2t5U3RhdHVzSW5kaWNhdG9yTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGZvcm1FcnJvcnMpIHtcbiAgICAgIDxza3ktc3RhdHVzLWluZGljYXRvclxuICAgICAgICBjbGFzcz1cInNreS1mb3JtLWVycm9yXCJcbiAgICAgICAgZGVzY3JpcHRpb25UeXBlPVwiZXJyb3JcIlxuICAgICAgICBpbmRpY2F0b3JUeXBlPVwiZGFuZ2VyXCJcbiAgICAgID5cbiAgICAgICAge3sgZXJyb3JUZXh0IH19XG4gICAgICA8L3NreS1zdGF0dXMtaW5kaWNhdG9yPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnLFxuICBob3N0RGlyZWN0aXZlczogW1NreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rm9ybUVycm9yQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlcnJvci5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgZXJyb3JOYW1lITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBlcnJvclRleHQhOiBzdHJpbmc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZXJyb3ItbmFtZScpIHB1YmxpYyBnZXQgZGF0YUVycm9yTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVycm9yTmFtZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtRXJyb3JzID0gaW5qZWN0KFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5mb3JtRXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgYHNreS1mb3JtLWVycm9yYCBjb21wb25lbnQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgcHJvdmlkZWQgY29udGV4dC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyFormErrorComponent } from './form-error.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyFormErrorModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorModule, imports: [SkyFormErrorComponent], exports: [SkyFormErrorComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorModule, imports: [SkyFormErrorComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [SkyFormErrorComponent],\n exports: [SkyFormErrorComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFNL0QsTUFBTSxPQUFPLGtCQUFrQjsrR0FBbEIsa0JBQWtCO2dIQUFsQixrQkFBa0IsWUFIbkIscUJBQXFCLGFBQ3JCLHFCQUFxQjtnSEFFcEIsa0JBQWtCLFlBSG5CLHFCQUFxQjs7NEZBR3BCLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTa3lGb3JtRXJyb3JDb21wb25lbnRdLFxuICBleHBvcnRzOiBbU2t5Rm9ybUVycm9yQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rm9ybUVycm9yTW9kdWxlIHt9XG4iXX0=","import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\nimport { SkyFormErrorComponent } from './form-error.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\n/**\n * @internal\n */\nexport class SkyFormErrorsComponent {\n constructor() {\n /**\n * Indicates whether the parent component's control is touched\n */\n this.touched = false;\n /**\n * Indicates whether the parent component's control is dirty\n */\n this.dirty = false;\n this.ariaAtomic = 'true';\n this.ariaLive = 'assertive';\n this.ariaRelevant = 'all';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyFormErrorsComponent, isStandalone: true, selector: \"sky-form-errors\", inputs: { errors: \"errors\", labelText: \"labelText\", touched: [\"touched\", \"touched\", booleanAttribute], dirty: [\"dirty\", \"dirty\", booleanAttribute] }, host: { properties: { \"attr.aria-atomic\": \"this.ariaAtomic\", \"attr.aria-live\": \"this.ariaLive\", \"attr.aria-relevant\": \"this.ariaRelevant\" } }, ngImport: i0, template: \"@if (labelText) {\\n @if (touched) {\\n @if (errors?.['required']) {\\n <sky-form-error\\n errorName=\\\"required\\\"\\n [errorText]=\\\"'skyux_form_error_required' | skyLibResources: labelText\\\"\\n />\\n }\\n\\n @if (errors?.['minlength']; as minLengthError) {\\n <sky-form-error\\n errorName=\\\"minlength\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_minlength'\\n | skyLibResources: labelText : minLengthError.requiredLength\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyDate'] && errors?.['skyDate']['invalid']) {\\n <sky-form-error\\n errorName=\\\"invalidDate\\\"\\n [errorText]=\\\"'skyux_form_error_date' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyDate'] && errors?.['skyDate']['minDate']) {\\n <sky-form-error\\n errorName=\\\"minDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_date_min'\\n | skyLibResources: errors?.['skyDate']['minDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyDate'] && errors?.['skyDate']['maxDate']) {\\n <sky-form-error\\n errorName=\\\"maxDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_date_max'\\n | skyLibResources: errors?.['skyDate']['maxDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (\\n errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['futureDisabled']\\n ) {\\n <sky-form-error\\n errorName=\\\"fuzzyFutureDisabled\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['invalid']) {\\n <sky-form-error\\n errorName=\\\"fuzzyInvalidDate\\\"\\n [errorText]=\\\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['maxDate']) {\\n <sky-form-error\\n errorName=\\\"fuzzyMaxDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_max_date'\\n | skyLibResources: errors?.['skyFuzzyDate']['maxDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['minDate']) {\\n <sky-form-error\\n errorName=\\\"fuzzyMinDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_min_date'\\n | skyLibResources\\n : errors?.['skyFuzzyDate'] &&\\n errors?.['skyFuzzyDate']['minDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['yearRequired']) {\\n <sky-form-error\\n errorName=\\\"fuzzyYearRequired\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyEmail']) {\\n <sky-form-error\\n errorName=\\\"email\\\"\\n [errorText]=\\\"'skyux_form_error_email' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyPhoneField']) {\\n <sky-form-error\\n errorName=\\\"phone\\\"\\n [errorText]=\\\"'skyux_form_error_phone' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyTime']) {\\n <sky-form-error\\n errorName=\\\"time\\\"\\n [errorText]=\\\"'skyux_form_error_time' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyUrl']) {\\n <sky-form-error\\n errorName=\\\"url\\\"\\n [errorText]=\\\"'skyux_form_error_url' | skyLibResources\\\"\\n />\\n }\\n }\\n\\n @if (touched || dirty) {\\n @if (errors?.['maxlength']; as maxLengthError) {\\n <sky-form-error\\n errorName=\\\"maxlength\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_maxlength'\\n | skyLibResources: labelText : maxLengthError.requiredLength\\n \\\"\\n />\\n }\\n <ng-content />\\n }\\n}\\n\", styles: [\"sky-status-indicator{display:block;line-height:normal}\\n\"], dependencies: [{ kind: \"ngmodule\", type: SkyIdModule }, { kind: \"component\", type: SkyFormErrorComponent, selector: \"sky-form-error\", inputs: [\"errorName\", \"errorText\"] }, { kind: \"ngmodule\", type: SkyFormsResourcesModule }, { kind: \"pipe\", type: i1.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-form-errors', imports: [SkyIdModule, SkyFormErrorComponent, SkyFormsResourcesModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"@if (labelText) {\\n @if (touched) {\\n @if (errors?.['required']) {\\n <sky-form-error\\n errorName=\\\"required\\\"\\n [errorText]=\\\"'skyux_form_error_required' | skyLibResources: labelText\\\"\\n />\\n }\\n\\n @if (errors?.['minlength']; as minLengthError) {\\n <sky-form-error\\n errorName=\\\"minlength\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_minlength'\\n | skyLibResources: labelText : minLengthError.requiredLength\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyDate'] && errors?.['skyDate']['invalid']) {\\n <sky-form-error\\n errorName=\\\"invalidDate\\\"\\n [errorText]=\\\"'skyux_form_error_date' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyDate'] && errors?.['skyDate']['minDate']) {\\n <sky-form-error\\n errorName=\\\"minDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_date_min'\\n | skyLibResources: errors?.['skyDate']['minDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyDate'] && errors?.['skyDate']['maxDate']) {\\n <sky-form-error\\n errorName=\\\"maxDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_date_max'\\n | skyLibResources: errors?.['skyDate']['maxDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (\\n errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['futureDisabled']\\n ) {\\n <sky-form-error\\n errorName=\\\"fuzzyFutureDisabled\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['invalid']) {\\n <sky-form-error\\n errorName=\\\"fuzzyInvalidDate\\\"\\n [errorText]=\\\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['maxDate']) {\\n <sky-form-error\\n errorName=\\\"fuzzyMaxDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_max_date'\\n | skyLibResources: errors?.['skyFuzzyDate']['maxDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['minDate']) {\\n <sky-form-error\\n errorName=\\\"fuzzyMinDate\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_min_date'\\n | skyLibResources\\n : errors?.['skyFuzzyDate'] &&\\n errors?.['skyFuzzyDate']['minDateFormatted']\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['yearRequired']) {\\n <sky-form-error\\n errorName=\\\"fuzzyYearRequired\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\\n \\\"\\n />\\n }\\n\\n @if (errors?.['skyEmail']) {\\n <sky-form-error\\n errorName=\\\"email\\\"\\n [errorText]=\\\"'skyux_form_error_email' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyPhoneField']) {\\n <sky-form-error\\n errorName=\\\"phone\\\"\\n [errorText]=\\\"'skyux_form_error_phone' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyTime']) {\\n <sky-form-error\\n errorName=\\\"time\\\"\\n [errorText]=\\\"'skyux_form_error_time' | skyLibResources\\\"\\n />\\n }\\n\\n @if (errors?.['skyUrl']) {\\n <sky-form-error\\n errorName=\\\"url\\\"\\n [errorText]=\\\"'skyux_form_error_url' | skyLibResources\\\"\\n />\\n }\\n }\\n\\n @if (touched || dirty) {\\n @if (errors?.['maxlength']; as maxLengthError) {\\n <sky-form-error\\n errorName=\\\"maxlength\\\"\\n [errorText]=\\\"\\n 'skyux_form_error_maxlength'\\n | skyLibResources: labelText : maxLengthError.requiredLength\\n \\\"\\n />\\n }\\n <ng-content />\\n }\\n}\\n\", styles: [\"sky-status-indicator{display:block;line-height:normal}\\n\"] }]\n }], propDecorators: { errors: [{\n type: Input\n }], labelText: [{\n type: Input\n }], touched: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], dirty: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], ariaAtomic: [{\n type: HostBinding,\n args: ['attr.aria-atomic']\n }], ariaLive: [{\n type: HostBinding,\n args: ['attr.aria-live']\n }], ariaRelevant: [{\n type: HostBinding,\n args: ['attr.aria-relevant']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZm9ybS1lcnJvci9mb3JtLWVycm9ycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUNMLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFFL0Q7O0dBRUc7QUFRSCxNQUFNLE9BQU8sc0JBQXNCO0lBUG5DO1FBb0JFOztXQUVHO1FBRUksWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV2Qjs7V0FFRztRQUVJLFVBQUssR0FBRyxLQUFLLENBQUM7UUFHRixlQUFVLEdBQUcsTUFBTSxDQUFDO1FBR3BCLGFBQVEsR0FBRyxXQUFXLENBQUM7UUFHdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7S0FDekM7K0dBakNZLHNCQUFzQjttR0FBdEIsc0JBQXNCLHVJQWdCYixnQkFBZ0IsNkJBTWhCLGdCQUFnQiw0S0M5Q3RDLG12SEF5SUEsaUhEdEhZLFdBQVcsK0JBQUUscUJBQXFCLDhGQUFFLHVCQUF1Qjs7NEZBSzFELHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxpQkFBaUIsV0FDbEIsQ0FBQyxXQUFXLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLENBQUMsbUJBR3JELHVCQUF1QixDQUFDLE1BQU07O3NCQU05QyxLQUFLOztzQkFNTCxLQUFLOztzQkFNTCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFNckMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBR3JDLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFHOUIsV0FBVzt1QkFBQyxnQkFBZ0I7O3NCQUc1QixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1mb3Jtcy1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1mb3JtLWVycm9ycycsXG4gIGltcG9ydHM6IFtTa3lJZE1vZHVsZSwgU2t5Rm9ybUVycm9yQ29tcG9uZW50LCBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVycm9ycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3JzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGb3JtRXJyb3JzQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB2YWxpZGF0aW9uIGVycm9ycyBmcm9tIHRoZSBmb3JtIGNvbnRyb2wuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5wdXQgbGFiZWwgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBhcmVudCBjb21wb25lbnQncyBjb250cm9sIGlzIHRvdWNoZWRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgdG91Y2hlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcGFyZW50IGNvbXBvbmVudCdzIGNvbnRyb2wgaXMgZGlydHlcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgZGlydHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1hdG9taWMnKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXJpYUF0b21pYyA9ICd0cnVlJztcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1saXZlJylcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyaWFMaXZlID0gJ2Fzc2VydGl2ZSc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcmVsZXZhbnQnKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXJpYVJlbGV2YW50ID0gJ2FsbCc7XG59XG4iLCJAaWYgKGxhYmVsVGV4dCkge1xuICBAaWYgKHRvdWNoZWQpIHtcbiAgICBAaWYgKGVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgZXJyb3JOYW1lPVwicmVxdWlyZWRcIlxuICAgICAgICBbZXJyb3JUZXh0XT1cIidza3l1eF9mb3JtX2Vycm9yX3JlcXVpcmVkJyB8IHNreUxpYlJlc291cmNlczogbGFiZWxUZXh0XCJcbiAgICAgIC8+XG4gICAgfVxuXG4gICAgQGlmIChlcnJvcnM/LlsnbWlubGVuZ3RoJ107IGFzIG1pbkxlbmd0aEVycm9yKSB7XG4gICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgZXJyb3JOYW1lPVwibWlubGVuZ3RoXCJcbiAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICAnc2t5dXhfZm9ybV9lcnJvcl9taW5sZW5ndGgnXG4gICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogbGFiZWxUZXh0IDogbWluTGVuZ3RoRXJyb3IucmVxdWlyZWRMZW5ndGhcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgfVxuXG4gICAgQGlmIChlcnJvcnM/Llsnc2t5RGF0ZSddICYmIGVycm9ycz8uWydza3lEYXRlJ11bJ2ludmFsaWQnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImludmFsaWREYXRlXCJcbiAgICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9kYXRlJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAvPlxuICAgIH1cblxuICAgIEBpZiAoZXJyb3JzPy5bJ3NreURhdGUnXSAmJiBlcnJvcnM/Llsnc2t5RGF0ZSddWydtaW5EYXRlJ10pIHtcbiAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICBlcnJvck5hbWU9XCJtaW5EYXRlXCJcbiAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICAnc2t5dXhfZm9ybV9lcnJvcl9kYXRlX21pbidcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBlcnJvcnM/Llsnc2t5RGF0ZSddWydtaW5EYXRlRm9ybWF0dGVkJ11cbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgfVxuXG4gICAgQGlmIChlcnJvcnM/Llsnc2t5RGF0ZSddICYmIGVycm9ycz8uWydza3lEYXRlJ11bJ21heERhdGUnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cIm1heERhdGVcIlxuICAgICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAgICdza3l1eF9mb3JtX2Vycm9yX2RhdGVfbWF4J1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGVycm9ycz8uWydza3lEYXRlJ11bJ21heERhdGVGb3JtYXR0ZWQnXVxuICAgICAgICBcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgZXJyb3JzPy5bJ3NreUZ1enp5RGF0ZSddICYmIGVycm9ycz8uWydza3lGdXp6eURhdGUnXVsnZnV0dXJlRGlzYWJsZWQnXVxuICAgICkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImZ1enp5RnV0dXJlRGlzYWJsZWRcIlxuICAgICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAgICdza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfZnV0dXJlX2Rpc2FibGVkJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICBcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKGVycm9ycz8uWydza3lGdXp6eURhdGUnXSAmJiBlcnJvcnM/Llsnc2t5RnV6enlEYXRlJ11bJ2ludmFsaWQnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImZ1enp5SW52YWxpZERhdGVcIlxuICAgICAgICBbZXJyb3JUZXh0XT1cIidza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfaW52YWxpZCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKGVycm9ycz8uWydza3lGdXp6eURhdGUnXSAmJiBlcnJvcnM/Llsnc2t5RnV6enlEYXRlJ11bJ21heERhdGUnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImZ1enp5TWF4RGF0ZVwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgJ3NreXV4X2Zvcm1fZXJyb3JfZnV6enlfZGF0ZV9tYXhfZGF0ZSdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBlcnJvcnM/Llsnc2t5RnV6enlEYXRlJ11bJ21heERhdGVGb3JtYXR0ZWQnXVxuICAgICAgICBcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKGVycm9ycz8uWydza3lGdXp6eURhdGUnXSAmJiBlcnJvcnM/Llsnc2t5RnV6enlEYXRlJ11bJ21pbkRhdGUnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImZ1enp5TWluRGF0ZVwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgJ3NreXV4X2Zvcm1fZXJyb3JfZnV6enlfZGF0ZV9taW5fZGF0ZSdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIDogZXJyb3JzPy5bJ3NreUZ1enp5RGF0ZSddICYmXG4gICAgICAgICAgICAgICAgICBlcnJvcnM/Llsnc2t5RnV6enlEYXRlJ11bJ21pbkRhdGVGb3JtYXR0ZWQnXVxuICAgICAgICBcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKGVycm9ycz8uWydza3lGdXp6eURhdGUnXSAmJiBlcnJvcnM/Llsnc2t5RnV6enlEYXRlJ11bJ3llYXJSZXF1aXJlZCddKSB7XG4gICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgZXJyb3JOYW1lPVwiZnV6enlZZWFyUmVxdWlyZWRcIlxuICAgICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAgICdza3l1eF9mb3JtX2Vycm9yX2Z1enp5X2RhdGVfeWVhcl9yZXF1aXJlZCcgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgfVxuXG4gICAgQGlmIChlcnJvcnM/Llsnc2t5RW1haWwnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImVtYWlsXCJcbiAgICAgICAgW2Vycm9yVGV4dF09XCInc2t5dXhfZm9ybV9lcnJvcl9lbWFpbCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKGVycm9ycz8uWydza3lQaG9uZUZpZWxkJ10pIHtcbiAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICBlcnJvck5hbWU9XCJwaG9uZVwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfcGhvbmUnIHwgc2t5TGliUmVzb3VyY2VzXCJcbiAgICAgIC8+XG4gICAgfVxuXG4gICAgQGlmIChlcnJvcnM/Llsnc2t5VGltZSddKSB7XG4gICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgZXJyb3JOYW1lPVwidGltZVwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfdGltZScgfCBza3lMaWJSZXNvdXJjZXNcIlxuICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKGVycm9ycz8uWydza3lVcmwnXSkge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cInVybFwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiJ3NreXV4X2Zvcm1fZXJyb3JfdXJsJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICAvPlxuICAgIH1cbiAgfVxuXG4gIEBpZiAodG91Y2hlZCB8fCBkaXJ0eSkge1xuICAgIEBpZiAoZXJyb3JzPy5bJ21heGxlbmd0aCddOyBhcyBtYXhMZW5ndGhFcnJvcikge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cIm1heGxlbmd0aFwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgJ3NreXV4X2Zvcm1fZXJyb3JfbWF4bGVuZ3RoJ1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGxhYmVsVGV4dCA6IG1heExlbmd0aEVycm9yLnJlcXVpcmVkTGVuZ3RoXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIH1cbiAgICA8bmctY29udGVudCAvPlxuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { SkyFormErrorComponent } from './form-error.component';\nimport { SkyFormErrorsComponent } from './form-errors.component';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyFormErrorsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorsModule, imports: [SkyFormErrorsComponent, SkyFormErrorComponent], exports: [SkyFormErrorsComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorsModule, imports: [SkyFormErrorsComponent, SkyFormErrorComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFormErrorsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [SkyFormErrorsComponent, SkyFormErrorComponent],\n exports: [SkyFormErrorsComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUVqRTs7R0FFRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjtnSEFBbkIsbUJBQW1CLFlBSHBCLHNCQUFzQixFQUFFLHFCQUFxQixhQUM3QyxzQkFBc0I7Z0hBRXJCLG1CQUFtQixZQUhwQixzQkFBc0IsRUFBRSxxQkFBcUI7OzRGQUc1QyxtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsc0JBQXNCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3hELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Rm9ybUVycm9yc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1lcnJvcnMuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1NreUZvcm1FcnJvcnNDb21wb25lbnQsIFNreUZvcm1FcnJvckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtTa3lGb3JtRXJyb3JzQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Rm9ybUVycm9yc01vZHVsZSB7fVxuIl19","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, booleanAttribute, inject, numberAttribute, } from '@angular/core';\nimport { NG_VALIDATORS, } from '@angular/forms';\nimport { SkyIdModule, SkyIdService } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeComponentClassDirective, SkyThemeModule } from '@skyux/theme';\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/theme\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"../form-error/form-errors.component\";\nimport * as i4 from \"@skyux/help-inline\";\nimport * as i5 from \"@skyux/core\";\nimport * as i6 from \"@skyux/i18n\";\nfunction numberAttribute4(value) {\n return numberAttribute(value, 4);\n}\n/**\n * Organizes checkboxes into a group.\n */\nexport class SkyCheckboxGroupComponent {\n constructor() {\n /**\n * Indicates whether to hide the `headingText`.\n */\n this.headingHidden = false;\n /**\n * Whether the checkbox group is required.\n */\n this.required = false;\n this.stackedLg = false;\n this.stackedXL = false;\n this.#idSvc = inject(SkyIdService);\n this.errorId = this.#idSvc.generateId();\n this.headingClass = 'sky-font-heading-4';\n this.formErrorsDataId = 'checkbox-group-form-errors';\n this.#_stacked = false;\n }\n /**\n * The semantic heading level in the document structure. By default, the heading text is not wrapped in a heading element.\n */\n set headingLevel(value) {\n this.#_headingLevel = value && !isNaN(value) ? value : undefined;\n this.#updateStackedClasses();\n }\n get headingLevel() {\n return this.#_headingLevel;\n }\n /**\n * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n * @default 4\n */\n set headingStyle(value) {\n this.headingClass = `sky-font-heading-${value}`;\n }\n /**\n * Whether the checkbox group is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the checkbox group.\n */\n set stacked(value) {\n this.#_stacked = value;\n this.#updateStackedClasses();\n }\n get stacked() {\n return this.#_stacked;\n }\n #idSvc;\n #_headingLevel;\n #_stacked;\n validate(formGroup) {\n this.formGroup ??= formGroup;\n if (!this.required) {\n return null;\n }\n const controlNames = Object.keys(formGroup.controls);\n let atLeastOneSelected = false;\n controlNames.forEach((controlName) => {\n const control = formGroup.get(controlName);\n if (control?.value) {\n atLeastOneSelected = true;\n }\n });\n if (!atLeastOneSelected) {\n return { required: true };\n }\n else {\n return null;\n }\n }\n #updateStackedClasses() {\n this.stackedLg = !this.headingLevel && this.stacked;\n this.stackedXL = !!this.headingLevel && this.stacked;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyCheckboxGroupComponent, isStandalone: true, selector: \"sky-checkbox-group\", inputs: { helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", headingText: \"headingText\", headingHidden: [\"headingHidden\", \"headingHidden\", booleanAttribute], headingLevel: [\"headingLevel\", \"headingLevel\", numberAttribute], headingStyle: [\"headingStyle\", \"headingStyle\", numberAttribute4], hintText: \"hintText\", required: [\"required\", \"required\", booleanAttribute], stacked: [\"stacked\", \"stacked\", booleanAttribute], helpKey: \"helpKey\" }, host: { properties: { \"class.sky-form-field-stacked\": \"this.stackedLg\", \"class.sky-field-group-stacked\": \"this.stackedXL\" } }, providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyCheckboxGroupComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], hostDirectives: [{ directive: i1.SkyThemeComponentClassDirective }], ngImport: i0, template: \"<fieldset\\n class=\\\"sky-checkbox-group\\\"\\n [attr.aria-invalid]=\\\"!!formGroup?.errors\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-errormessage]=\\\"\\n headingText && formGroup?.errors ? errorId : undefined\\n \\\"\\n>\\n <legend\\n class=\\\"sky-checkbox-group-legend\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': headingHidden\\n }\\\"\\n >\\n <span\\n class=\\\"sky-checkbox-group-heading\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': required\\n }\\\"\\n >\\n @switch (headingLevel) {\\n @case (3) {\\n <h3 [class]=\\\"headingClass\\\">{{ headingText }}</h3>\\n }\\n @case (4) {\\n <h4 [class]=\\\"headingClass\\\">{{ headingText }}</h4>\\n }\\n @case (5) {\\n <h5 [class]=\\\"headingClass\\\">{{ headingText }}</h5>\\n }\\n @default {\\n <span [class]=\\\"'sky-checkbox-group-heading-text ' + headingClass\\\">{{\\n headingText\\n }}</span>\\n }\\n }\\n </span>\\n @if (required) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_form_group_required' | skyLibResources\\n }}</span>\\n }\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"headingText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n <div\\n #hintTextEl=\\\"skyId\\\"\\n skyId\\n [ngClass]=\\\"{\\n 'sky-checkbox-group-hint-text': !!hintText\\n }\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n <span class=\\\"sky-checkbox-group-inline sky-switch-icon-group\\\">\\n <ng-content select=\\\"sky-checkbox[iconName]\\\" />\\n </span>\\n <span class=\\\"sky-checkbox-group-stacked\\\">\\n <ng-content select=\\\"sky-checkbox\\\" />\\n </span>\\n</fieldset>\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [attr.data-sky-id]=\\\"formErrorsDataId\\\"\\n [errors]=\\\"formGroup?.errors\\\"\\n [labelText]=\\\"headingText\\\"\\n [touched]=\\\"formGroup?.touched\\\"\\n [dirty]=\\\"formGroup?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n</sky-form-errors>\\n\", styles: [\".sky-checkbox-group:not(.sky-theme-modern *){--sky-override-checkbox-group-content-space: 8px;--sky-override-checkbox-group-content-with-hint-text-space: 10px;--sky-override-checkbox-group-hint-text-space: 5px}.sky-checkbox-group:not(.sky-theme-modern *) .sky-checkbox-group-legend .sky-checkbox-group-heading-text{line-height:1.1}:host{display:block}.sky-checkbox-group-legend h3,.sky-checkbox-group-legend h4,.sky-checkbox-group-legend h5{margin:0;display:inline-block}.sky-checkbox-group-inline,.sky-checkbox-group-stacked{display:block}.sky-checkbox-group:has(.sky-checkbox-group-legend:not(.sky-screen-reader-only)):not(:has(.sky-checkbox-group-hint-text)) .sky-checkbox-group-inline,.sky-checkbox-group:has(.sky-checkbox-group-legend:not(.sky-screen-reader-only)):not(:has(.sky-checkbox-group-hint-text)) .sky-checkbox-group-stacked{margin-top:var(--sky-override-checkbox-group-content-space, var(--sky-space-gap-form-s))}.sky-checkbox-group:has(.sky-checkbox-group-legend:not(.sky-screen-reader-only)) .sky-checkbox-group-hint-text{margin-top:var(--sky-override-checkbox-group-hint-text-space, var(--sky-space-gap-stacked_supplemental-s))}.sky-checkbox-group:has(.sky-checkbox-group-hint-text) .sky-checkbox-group-inline,.sky-checkbox-group:has(.sky-checkbox-group-hint-text) .sky-checkbox-group-stacked{margin-top:var(--sky-override-checkbox-group-content-with-hint-text-space, var(--sky-space-gap-form-l))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: SkyFormErrorsModule }, { kind: \"component\", type: i3.SkyFormErrorsComponent, selector: \"sky-form-errors\", inputs: [\"errors\", \"labelText\", \"touched\", \"dirty\"] }, { kind: \"ngmodule\", type: SkyFormsResourcesModule }, { kind: \"ngmodule\", type: SkyHelpInlineModule }, { kind: \"component\", type: i4.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"ngmodule\", type: SkyIdModule }, { kind: \"directive\", type: i5.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"directive\", type: i1.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"pipe\", type: i6.SkyLibResourcesPipe, name: \"skyLibResources\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxGroupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-checkbox-group', imports: [\n CommonModule,\n SkyFormErrorsModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIdModule,\n SkyThemeModule,\n ], providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyCheckboxGroupComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], hostDirectives: [SkyThemeComponentClassDirective], template: \"<fieldset\\n class=\\\"sky-checkbox-group\\\"\\n [attr.aria-invalid]=\\\"!!formGroup?.errors\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-errormessage]=\\\"\\n headingText && formGroup?.errors ? errorId : undefined\\n \\\"\\n>\\n <legend\\n class=\\\"sky-checkbox-group-legend\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': headingHidden\\n }\\\"\\n >\\n <span\\n class=\\\"sky-checkbox-group-heading\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': required\\n }\\\"\\n >\\n @switch (headingLevel) {\\n @case (3) {\\n <h3 [class]=\\\"headingClass\\\">{{ headingText }}</h3>\\n }\\n @case (4) {\\n <h4 [class]=\\\"headingClass\\\">{{ headingText }}</h4>\\n }\\n @case (5) {\\n <h5 [class]=\\\"headingClass\\\">{{ headingText }}</h5>\\n }\\n @default {\\n <span [class]=\\\"'sky-checkbox-group-heading-text ' + headingClass\\\">{{\\n headingText\\n }}</span>\\n }\\n }\\n </span>\\n @if (required) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_form_group_required' | skyLibResources\\n }}</span>\\n }\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"headingText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n <div\\n #hintTextEl=\\\"skyId\\\"\\n skyId\\n [ngClass]=\\\"{\\n 'sky-checkbox-group-hint-text': !!hintText\\n }\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n <span class=\\\"sky-checkbox-group-inline sky-switch-icon-group\\\">\\n <ng-content select=\\\"sky-checkbox[iconName]\\\" />\\n </span>\\n <span class=\\\"sky-checkbox-group-stacked\\\">\\n <ng-content select=\\\"sky-checkbox\\\" />\\n </span>\\n</fieldset>\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [attr.data-sky-id]=\\\"formErrorsDataId\\\"\\n [errors]=\\\"formGroup?.errors\\\"\\n [labelText]=\\\"headingText\\\"\\n [touched]=\\\"formGroup?.touched\\\"\\n [dirty]=\\\"formGroup?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n</sky-form-errors>\\n\", styles: [\".sky-checkbox-group:not(.sky-theme-modern *){--sky-override-checkbox-group-content-space: 8px;--sky-override-checkbox-group-content-with-hint-text-space: 10px;--sky-override-checkbox-group-hint-text-space: 5px}.sky-checkbox-group:not(.sky-theme-modern *) .sky-checkbox-group-legend .sky-checkbox-group-heading-text{line-height:1.1}:host{display:block}.sky-checkbox-group-legend h3,.sky-checkbox-group-legend h4,.sky-checkbox-group-legend h5{margin:0;display:inline-block}.sky-checkbox-group-inline,.sky-checkbox-group-stacked{display:block}.sky-checkbox-group:has(.sky-checkbox-group-legend:not(.sky-screen-reader-only)):not(:has(.sky-checkbox-group-hint-text)) .sky-checkbox-group-inline,.sky-checkbox-group:has(.sky-checkbox-group-legend:not(.sky-screen-reader-only)):not(:has(.sky-checkbox-group-hint-text)) .sky-checkbox-group-stacked{margin-top:var(--sky-override-checkbox-group-content-space, var(--sky-space-gap-form-s))}.sky-checkbox-group:has(.sky-checkbox-group-legend:not(.sky-screen-reader-only)) .sky-checkbox-group-hint-text{margin-top:var(--sky-override-checkbox-group-hint-text-space, var(--sky-space-gap-stacked_supplemental-s))}.sky-checkbox-group:has(.sky-checkbox-group-hint-text) .sky-checkbox-group-inline,.sky-checkbox-group:has(.sky-checkbox-group-hint-text) .sky-checkbox-group-stacked{margin-top:var(--sky-override-checkbox-group-content-with-hint-text-space, var(--sky-space-gap-form-l))}\\n\"] }]\n }], propDecorators: { helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], headingText: [{\n type: Input,\n args: [{ required: true }]\n }], headingHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], headingLevel: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], headingStyle: [{\n type: Input,\n args: [{ transform: numberAttribute4 }]\n }], hintText: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], helpKey: [{\n type: Input\n }], stackedLg: [{\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], stackedXL: [{\n type: HostBinding,\n args: ['class.sky-field-group-stacked']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGVja2JveC9jaGVja2JveC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBRUwsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxhQUFhLEdBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7OztBQUsvRSxTQUFTLGdCQUFnQixDQUFDLEtBQWM7SUFDdEMsT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7R0FFRztBQXVCSCxNQUFNLE9BQU8seUJBQXlCO0lBdEJ0QztRQTRDRTs7V0FFRztRQUVJLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBK0I3Qjs7V0FFRztRQUVJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUF5QmpCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVoQixXQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLFlBQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsb0JBQW9CLENBQUM7UUFDcEMscUJBQWdCLEdBQUcsNEJBQTRCLENBQUM7UUFJMUQsY0FBUyxHQUFHLEtBQUssQ0FBQztLQThCbkI7SUFwR0M7O09BRUc7SUFDSCxJQUNXLFlBQVksQ0FBQyxLQUErQztRQUNyRSxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDakUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ1csWUFBWSxDQUFDLEtBQW1DO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFlRDs7O09BR0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFnQlEsTUFBTSxDQUF3QjtJQU12QyxjQUFjLENBQTJDO0lBQ3pELFNBQVMsQ0FBUztJQUVYLFFBQVEsQ0FBQyxTQUFvQjtRQUNsQyxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQztRQUU3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRS9CLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNuQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNuQixrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkQsQ0FBQzsrR0EvSFUseUJBQXlCO21HQUF6Qix5QkFBeUIsOE5BeUJoQixnQkFBZ0Isa0RBTWhCLGVBQWUsa0RBNUQ1QixnQkFBZ0IsNERBeUZILGdCQUFnQixtQ0FPaEIsZ0JBQWdCLG1LQTdFekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLHlCQUF5QjtnQkFDdEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDckQsK0ZDckRILG94RUFtRkEsazhDRDVDSSxZQUFZLDRIQUNaLG1CQUFtQix3S0FDbkIsdUJBQXVCLDhCQUN2QixtQkFBbUIsd1BBQ25CLFdBQVcsNEdBQ1gsY0FBYzs7NEZBWUwseUJBQXlCO2tCQXRCckMsU0FBUzsrQkFDRSxvQkFBb0IsV0FHckI7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGNBQWM7cUJBQ2YsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVywyQkFBMkI7NEJBQ3RDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7cUJBQ3JELGtCQUNlLENBQUMsK0JBQStCLENBQUM7O3NCQVFoRCxLQUFLOztzQkFPTCxLQUFLOztzQkFNTCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs7c0JBTXhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQU1yQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTs7c0JBY3BDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQVNyQyxLQUFLOztzQkFNTCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFPckMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBZXJDLEtBQUs7O3NCQUdMLFdBQVc7dUJBQUMsOEJBQThCOztzQkFHMUMsV0FBVzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUsIFNreUlkU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUhlbHBJbmxpbmVNb2R1bGUgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUnO1xuaW1wb3J0IHsgU2t5VGhlbWVDb21wb25lbnRDbGFzc0RpcmVjdGl2ZSwgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWZvcm1zLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lDaGVja2JveEdyb3VwSGVhZGluZ0xldmVsIH0gZnJvbSAnLi9jaGVja2JveC1ncm91cC1oZWFkaW5nLWxldmVsJztcbmltcG9ydCB7IFNreUNoZWNrYm94R3JvdXBIZWFkaW5nU3R5bGUgfSBmcm9tICcuL2NoZWNrYm94LWdyb3VwLWhlYWRpbmctc3R5bGUnO1xuXG5mdW5jdGlvbiBudW1iZXJBdHRyaWJ1dGU0KHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHtcbiAgcmV0dXJuIG51bWJlckF0dHJpYnV0ZSh2YWx1ZSwgNCk7XG59XG5cbi8qKlxuICogT3JnYW5pemVzIGNoZWNrYm94ZXMgaW50byBhIGdyb3VwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktY2hlY2tib3gtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LnNjc3MnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gICAgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5SGVscElubGluZU1vZHVsZSxcbiAgICBTa3lJZE1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lDaGVja2JveEdyb3VwQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1NreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDaGVja2JveEdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGhlYWRpbmdUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSBjaGVja2JveCBncm91cCBmaWVsZHNldCBsZWdlbmQuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWFkaW5nVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBjaGVja2JveCBncm91cCdzIGhlYWRpbmcuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgaGVhZGluZ1RleHQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGBoZWFkaW5nVGV4dGAuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGhlYWRpbmdIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIGhlYWRpbmcgbGV2ZWwgaW4gdGhlIGRvY3VtZW50IHN0cnVjdHVyZS4gQnkgZGVmYXVsdCwgdGhlIGhlYWRpbmcgdGV4dCBpcyBub3Qgd3JhcHBlZCBpbiBhIGhlYWRpbmcgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgaGVhZGluZ0xldmVsKHZhbHVlOiBTa3lDaGVja2JveEdyb3VwSGVhZGluZ0xldmVsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2hlYWRpbmdMZXZlbCA9IHZhbHVlICYmICFpc05hTih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLiN1cGRhdGVTdGFja2VkQ2xhc3NlcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBoZWFkaW5nTGV2ZWwoKTogU2t5Q2hlY2tib3hHcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19oZWFkaW5nTGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgW2ZvbnQgc3R5bGVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL3N0eWxlcy90eXBvZ3JhcGh5I2hlYWRpbmdzKS5cbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGU0IH0pXG4gIHB1YmxpYyBzZXQgaGVhZGluZ1N0eWxlKHZhbHVlOiBTa3lDaGVja2JveEdyb3VwSGVhZGluZ1N0eWxlKSB7XG4gICAgdGhpcy5oZWFkaW5nQ2xhc3MgPSBgc2t5LWZvbnQtaGVhZGluZy0ke3ZhbHVlfWA7XG4gIH1cblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBncm91cCBpcyBzdGFja2VkIG9uIGFub3RoZXIgZm9ybSBjb21wb25lbnQuIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBjaGVja2JveCBncm91cC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IHN0YWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLiNfc3RhY2tlZCA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZVN0YWNrZWRDbGFzc2VzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGhlYWRpbmdUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIGNoZWNrYm94IGdyb3VwIGhlYWRpbmcuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlYWRpbmdUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1maWVsZC1zdGFja2VkJylcbiAgcHVibGljIHN0YWNrZWRMZyA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LWZpZWxkLWdyb3VwLXN0YWNrZWQnKVxuICBwdWJsaWMgc3RhY2tlZFhMID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgI2lkU3ZjID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gIHByb3RlY3RlZCBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgaGVhZGluZ0NsYXNzID0gJ3NreS1mb250LWhlYWRpbmctNCc7XG4gIHByb3RlY3RlZCBmb3JtRXJyb3JzRGF0YUlkID0gJ2NoZWNrYm94LWdyb3VwLWZvcm0tZXJyb3JzJztcbiAgcHJvdGVjdGVkIGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAjX2hlYWRpbmdMZXZlbDogU2t5Q2hlY2tib3hHcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZDtcbiAgI19zdGFja2VkID0gZmFsc2U7XG5cbiAgcHVibGljIHZhbGlkYXRlKGZvcm1Hcm91cDogRm9ybUdyb3VwKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHRoaXMuZm9ybUdyb3VwID8/PSBmb3JtR3JvdXA7XG5cbiAgICBpZiAoIXRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xOYW1lcyA9IE9iamVjdC5rZXlzKGZvcm1Hcm91cC5jb250cm9scyk7XG4gICAgbGV0IGF0TGVhc3RPbmVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgY29udHJvbE5hbWVzLmZvckVhY2goKGNvbnRyb2xOYW1lKSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk7XG4gICAgICBpZiAoY29udHJvbD8udmFsdWUpIHtcbiAgICAgICAgYXRMZWFzdE9uZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghYXRMZWFzdE9uZVNlbGVjdGVkKSB7XG4gICAgICByZXR1cm4geyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlU3RhY2tlZENsYXNzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja2VkTGcgPSAhdGhpcy5oZWFkaW5nTGV2ZWwgJiYgdGhpcy5zdGFja2VkO1xuICAgIHRoaXMuc3RhY2tlZFhMID0gISF0aGlzLmhlYWRpbmdMZXZlbCAmJiB0aGlzLnN0YWNrZWQ7XG4gIH1cbn1cbiIsIjxmaWVsZHNldFxuICBjbGFzcz1cInNreS1jaGVja2JveC1ncm91cFwiXG4gIFthdHRyLmFyaWEtaW52YWxpZF09XCIhIWZvcm1Hcm91cD8uZXJyb3JzXCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICBoZWFkaW5nVGV4dCAmJiBmb3JtR3JvdXA/LmVycm9ycyA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgXCJcbj5cbiAgPGxlZ2VuZFxuICAgIGNsYXNzPVwic2t5LWNoZWNrYm94LWdyb3VwLWxlZ2VuZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBoZWFkaW5nSGlkZGVuXG4gICAgfVwiXG4gID5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJza3ktY2hlY2tib3gtZ3JvdXAtaGVhZGluZ1wiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCc6IHJlcXVpcmVkXG4gICAgICB9XCJcbiAgICA+XG4gICAgICBAc3dpdGNoIChoZWFkaW5nTGV2ZWwpIHtcbiAgICAgICAgQGNhc2UgKDMpIHtcbiAgICAgICAgICA8aDMgW2NsYXNzXT1cImhlYWRpbmdDbGFzc1wiPnt7IGhlYWRpbmdUZXh0IH19PC9oMz5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoNCkge1xuICAgICAgICAgIDxoNCBbY2xhc3NdPVwiaGVhZGluZ0NsYXNzXCI+e3sgaGVhZGluZ1RleHQgfX08L2g0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICg1KSB7XG4gICAgICAgICAgPGg1IFtjbGFzc109XCJoZWFkaW5nQ2xhc3NcIj57eyBoZWFkaW5nVGV4dCB9fTwvaDU+XG4gICAgICAgIH1cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInc2t5LWNoZWNrYm94LWdyb3VwLWhlYWRpbmctdGV4dCAnICsgaGVhZGluZ0NsYXNzXCI+e3tcbiAgICAgICAgICAgIGhlYWRpbmdUZXh0XG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gICAgQGlmIChyZXF1aXJlZCkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCI+e3tcbiAgICAgICAgJ3NreXV4X2Zvcm1fZ3JvdXBfcmVxdWlyZWQnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICB9fTwvc3Bhbj5cbiAgICB9XG4gICAgQGlmIChoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleSkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgICA8c2t5LWhlbHAtaW5saW5lXG4gICAgICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICAgICAgW2xhYmVsVGV4dF09XCJoZWFkaW5nVGV4dFwiXG4gICAgICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgICAgICBbcG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvbGVnZW5kPlxuICA8ZGl2XG4gICAgI2hpbnRUZXh0RWw9XCJza3lJZFwiXG4gICAgc2t5SWRcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWNoZWNrYm94LWdyb3VwLWhpbnQtdGV4dCc6ICEhaGludFRleHRcbiAgICB9XCJcbiAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnLFxuICAgICAgJ3NreS1mb250LWhpbnQtdGV4dC1zJzogJ21vZGVybidcbiAgICB9XCJcbiAgPlxuICAgIHt7IGhpbnRUZXh0IH19XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cInNreS1jaGVja2JveC1ncm91cC1pbmxpbmUgc2t5LXN3aXRjaC1pY29uLWdyb3VwXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWNoZWNrYm94W2ljb25OYW1lXVwiIC8+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJza3ktY2hlY2tib3gtZ3JvdXAtc3RhY2tlZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1jaGVja2JveFwiIC8+XG4gIDwvc3Bhbj5cbjwvZmllbGRzZXQ+XG48c2t5LWZvcm0tZXJyb3JzXG4gIFtpZF09XCJlcnJvcklkXCJcbiAgW2F0dHIuZGF0YS1za3ktaWRdPVwiZm9ybUVycm9yc0RhdGFJZFwiXG4gIFtlcnJvcnNdPVwiZm9ybUdyb3VwPy5lcnJvcnNcIlxuICBbbGFiZWxUZXh0XT1cImhlYWRpbmdUZXh0XCJcbiAgW3RvdWNoZWRdPVwiZm9ybUdyb3VwPy50b3VjaGVkXCJcbiAgW2RpcnR5XT1cImZvcm1Hcm91cD8uZGlydHlcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG48L3NreS1mb3JtLWVycm9ycz5cbiJdfQ==","import { Component, Input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n@internal\n */\nexport class SkyCheckboxLabelTextLabelComponent {\n constructor() {\n this.labelHidden = false;\n this.#_labelText = '';\n }\n set labelText(value) {\n this.#_labelText = value.trim();\n }\n get labelText() {\n return this.#_labelText;\n }\n #_labelText;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxLabelTextLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyCheckboxLabelTextLabelComponent, isStandalone: false, selector: \"sky-checkbox-label-text-label\", inputs: { labelHidden: \"labelHidden\", labelText: \"labelText\" }, ngImport: i0, template: \"@if (!labelHidden) {\\n <span class=\\\"sky-switch-label\\\">{{ labelText }}</span>\\n}\\n\", styles: [\".sky-switch-label:not(.sky-theme-modern *){margin-right:0}\\n\", \":host-context(.sky-theme-modern) .sky-switch-label{margin-right:0}\\n\"] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxLabelTextLabelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-checkbox-label-text-label', standalone: false, template: \"@if (!labelHidden) {\\n <span class=\\\"sky-switch-label\\\">{{ labelText }}</span>\\n}\\n\", styles: [\".sky-switch-label:not(.sky-theme-modern *){margin-right:0}\\n\", \":host-context(.sky-theme-modern) .sky-switch-label{margin-right:0}\\n\"] }]\n }], propDecorators: { labelHidden: [{\n type: Input\n }], labelText: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWxhYmVsLXRleHQtbGFiZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGVja2JveC9jaGVja2JveC1sYWJlbC10ZXh0LWxhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVqRDs7R0FFRztBQVVILE1BQU0sT0FBTyxrQ0FBa0M7SUFUL0M7UUFXUyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQVczQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztLQUNsQjtJQVZDLElBQ1csU0FBUyxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVcsQ0FBTTsrR0FiTixrQ0FBa0M7bUdBQWxDLGtDQUFrQywwSkNkL0Msc0ZBR0E7OzRGRFdhLGtDQUFrQztrQkFUOUMsU0FBUzsrQkFDRSwrQkFBK0IsY0FNN0IsS0FBSzs7c0JBR2hCLEtBQUs7O3NCQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jaGVja2JveC1sYWJlbC10ZXh0LWxhYmVsJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5kZWZhdWx0LmNvbXBvbmVudC5zY3NzJyxcbiAgICAnLi9jaGVja2JveC1sYWJlbC10ZXh0LWxhYmVsLm1vZGVybi5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1sYWJlbC10ZXh0LWxhYmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94TGFiZWxUZXh0TGFiZWxDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy4jX2xhYmVsVGV4dCA9IHZhbHVlLnRyaW0oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbFRleHQ7XG4gIH1cblxuICAjX2xhYmVsVGV4dCA9ICcnO1xufVxuIiwiQGlmICghbGFiZWxIaWRkZW4pIHtcbiAgPHNwYW4gY2xhc3M9XCJza3ktc3dpdGNoLWxhYmVsXCI+e3sgbGFiZWxUZXh0IH19PC9zcGFuPlxufVxuIl19","import { Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\n/**\n * Specifies a label for the checkbox. To display a help button beside the label, include a help button element, such as\n * `sky-help-inline`, in the `sky-checkbox-label` element and a `sky-control-help` CSS class on that help button\n * element.\n * @deprecated Use `labelText` input on `sky-checkbox-component` instead.\n */\nexport class SkyCheckboxLabelComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyCheckboxLabelComponent, isStandalone: false, selector: \"sky-checkbox-label\", ngImport: i0, template: \"<span class=\\\"sky-switch-label\\\"\\n ><span skyTrim><ng-content /></span\\n ><span class=\\\"sky-control-help-container\\\"\\n ><ng-content select=\\\".sky-control-help\\\" /></span\\n></span>\\n\", dependencies: [{ kind: \"directive\", type: i1.λ4, selector: \"[skyTrim]\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxLabelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-checkbox-label', standalone: false, template: \"<span class=\\\"sky-switch-label\\\"\\n ><span skyTrim><ng-content /></span\\n ><span class=\\\"sky-control-help-container\\\"\\n ><ng-content select=\\\".sky-control-help\\\" /></span\\n></span>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGVja2JveC9jaGVja2JveC1sYWJlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LWxhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUUxQzs7Ozs7R0FLRztBQU1ILE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjttR0FBekIseUJBQXlCLCtFQ2J0Qyw0TEFLQTs7NEZEUWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLG9CQUFvQixjQUVsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU3BlY2lmaWVzIGEgbGFiZWwgZm9yIHRoZSBjaGVja2JveC4gVG8gZGlzcGxheSBhIGhlbHAgYnV0dG9uIGJlc2lkZSB0aGUgbGFiZWwsIGluY2x1ZGUgYSBoZWxwIGJ1dHRvbiBlbGVtZW50LCBzdWNoIGFzXG4gKiBgc2t5LWhlbHAtaW5saW5lYCwgaW4gdGhlIGBza3ktY2hlY2tib3gtbGFiZWxgIGVsZW1lbnQgYW5kIGEgYHNreS1jb250cm9sLWhlbHBgIENTUyBjbGFzcyBvbiB0aGF0IGhlbHAgYnV0dG9uXG4gKiBlbGVtZW50LlxuICogQGRlcHJlY2F0ZWQgVXNlIGBsYWJlbFRleHRgIGlucHV0IG9uIGBza3ktY2hlY2tib3gtY29tcG9uZW50YCBpbnN0ZWFkLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktY2hlY2tib3gtbGFiZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Q2hlY2tib3hMYWJlbENvbXBvbmVudCB7fVxuIiwiPHNwYW4gY2xhc3M9XCJza3ktc3dpdGNoLWxhYmVsXCJcbiAgPjxzcGFuIHNreVRyaW0+PG5nLWNvbnRlbnQgLz48L3NwYW5cbiAgPjxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIlxuICAgID48bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiIC8+PC9zcGFuXG4+PC9zcGFuPlxuIl19","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild, booleanAttribute, inject, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\nimport { Subject } from 'rxjs';\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/theme\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"../form-error/form-errors.component\";\nimport * as i4 from \"@skyux/help-inline\";\nimport * as i5 from \"@skyux/icon\";\nimport * as i6 from \"@skyux/core\";\nimport * as i7 from \"./checkbox-label-text-label.component\";\n/**\n * Replaces the HTML input element with `type=\"checkbox\"`. When users select a checkbox, its value\n * is driven through an `ngModel` attribute that you specify on the `sky-checkbox` element.\n */\nexport class SkyCheckboxComponent {\n /**\n * The ARIA label for the checkbox. This sets the checkbox's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/components/checkbox#accessibility)\n * when the checkbox does not include a visible label. You must set this property for icon\n * checkboxes. If the checkbox includes a visible label, use `labelledBy` instead.\n * @deprecated Use `labelText` instead.\n */\n set label(value) {\n this.#_label = value;\n if (value) {\n this.#logger.deprecated('SkyCheckboxComponent.label', {\n deprecationMajorVersion: 9,\n });\n }\n }\n get label() {\n return this.#_label;\n }\n /**\n * The HTML element ID of the element that labels the\n * checkbox. This sets the checkbox's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/components/checkbox#accessibility).\n * If the checkbox does not include a visible label, use `label` instead.\n * @deprecated Use `labelText` instead.\n */\n set labelledBy(value) {\n this.#_labelledBy = value;\n if (value) {\n this.#logger.deprecated('SkyCheckboxComponent.labelledBy', {\n deprecationMajorVersion: 9,\n });\n }\n }\n get labelledBy() {\n return this.#_labelledBy;\n }\n /**\n * The ID for the checkbox.\n * If a value is not provided, an autogenerated ID is used.\n */\n set id(value) {\n if (value) {\n this.inputId = `sky-checkbox-${value}-input`;\n }\n else {\n this.inputId = `sky-checkbox-${this.#defaultId}-input`;\n }\n }\n /**\n * Whether to disable the checkbox on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n if (value !== this.#_disabled) {\n this.#_disabled = value;\n this.#disabledChange.next(value);\n }\n }\n /**\n * Whether the checkbox is disabled.\n */\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The name for the checkbox.\n * If a value is not provided, an autogenerated ID is used.\n */\n set name(value) {\n if (value && value !== this.#defaultId) {\n this.#_name = value;\n }\n else {\n this.#_name = `sky-checkbox-${this.#defaultId}`;\n }\n }\n get name() {\n return this.#_name;\n }\n /**\n * The background color type after users select a checkbox where the\n * `icon` property displays an icon in place of the checkbox. The valid options correspond to\n * [the label component's](https://developer.blackbaud.com/skyux/components/label)\n * label types. `\"info\"` creates a blue background, `\"success\"` creates a green\n * background, `\"warning\"` creates an orange background, and `\"danger\"` creates a red background.\n * @default \"info\"\n * @deprecated The `checkboxType` input is no longer supported.\n */\n set checkboxType(value) {\n if (value) {\n this.#logger.deprecated('SkyCheckboxComponent.checkboxType', {\n deprecationMajorVersion: 7,\n });\n }\n this.#_checkboxType = value ? value.toLowerCase() : 'info';\n }\n get checkboxType() {\n return this.#_checkboxType;\n }\n /**\n * Whether the checkbox is selected.\n * @default false\n */\n set checked(value) {\n const checked = !!value;\n if (checked !== this.#_checked) {\n this.#_checked = checked;\n this.#checkedChange.next(checked);\n }\n }\n /**\n * Whether the checkbox is selected.\n */\n get checked() {\n return this.#_checked;\n }\n /**\n * Whether the checkbox is in the indeterminate state. This has no visual effect for icon checkboxes.\n * @internal\n */\n set indeterminate(value) {\n if (value !== this.#_indeterminate) {\n this.#_indeterminate = !!value;\n this.#indeterminateChange.next(this.#_indeterminate);\n if (this.inputEl) {\n this.inputEl.nativeElement.indeterminate = this.#_indeterminate;\n this.#changeDetector.markForCheck();\n }\n }\n }\n get indeterminate() {\n return this.#_indeterminate;\n }\n /**\n * Fires when users select or deselect the checkbox.\n */\n get checkedChange() {\n return this.#checkedChangeObs;\n }\n /**\n * Fires when the selected value changes.\n */\n get disabledChange() {\n return this.#disabledChangeObs;\n }\n /**\n * Fires when the indeterminate state changes.\n * @internal\n */\n get indeterminateChange() {\n return this.#indeterminateChangeObs;\n }\n set inputEl(el) {\n this.#_inputEl = el;\n if (el && this.indeterminate) {\n el.nativeElement.indeterminate = this.indeterminate;\n }\n }\n get inputEl() {\n return this.#_inputEl;\n }\n get isCheckboxRequired() {\n return !!(this.required ||\n this.control?.hasValidator(Validators.requiredTrue) ||\n this.control?.hasValidator(Validators.required));\n }\n #checkedChange;\n #checkedChangeObs;\n #disabledChange;\n #disabledChangeObs;\n #indeterminateChange;\n #indeterminateChangeObs;\n #_checked;\n #_checkboxType;\n #_disabled;\n #_indeterminate;\n #_inputEl;\n #_name;\n #_label;\n #_labelledBy;\n #changeDetector;\n #idSvc;\n #defaultId;\n #logger;\n constructor() {\n /**\n * The index for the checkbox. If not defined, the index is set to the position of the\n * checkbox on load.\n */\n this.tabindex = 0;\n /**\n * Fires when the selected value changes.\n */\n this.change = new EventEmitter();\n /**\n * Whether the input is required for form validation.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input element so that forms display an invalid state until the input element\n * is complete.\n * @default false\n */\n this.required = false;\n /**\n * Indicates whether to hide the `labelText`.\n */\n this.labelHidden = false;\n /**\n * Whether the checkbox is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the checkbox. If the checkbox is within a checkbox group,\n * set `stacked` on the checkbox group component instead.\n */\n this.stacked = false;\n this.inputId = '';\n this.#_checked = false;\n this.#_checkboxType = 'info';\n this.#_disabled = false;\n this.#_indeterminate = false;\n this.#_name = '';\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#idSvc = inject(SkyIdService);\n this.#defaultId = this.#idSvc.generateId();\n this.#logger = inject(SkyLogService);\n this.errorId = this.#idSvc.generateId();\n /** Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor. */\n // istanbul ignore next\n this.onTouched = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.#controlValueAccessorChangeFn = (value) => { };\n this.#checkedChange = new Subject();\n this.#disabledChange = new Subject();\n this.#indeterminateChange = new Subject();\n this.#checkedChangeObs = this.#checkedChange.asObservable();\n this.#disabledChangeObs = this.#disabledChange.asObservable();\n this.#indeterminateChangeObs = this.#indeterminateChange.asObservable();\n this.id = this.#defaultId;\n this.name = this.#defaultId;\n }\n ngAfterViewInit() {\n this.#checkedChange.next(this.checked);\n this.#disabledChange.next(this.disabled);\n this.#indeterminateChange.next(this.indeterminate);\n }\n validate(control) {\n this.control ||= control;\n // In template-driven forms, Angular's native 'required' attribute directive only works\n // on `input[type=\"checkbox\"]` selectors, so we need to write the validation logic ourselves.\n // Also, we're treating Validators.required the same as Validators.requiredTrue internally, so\n // we need to account for that decision in our custom validator.\n return this.isCheckboxRequired && control.value !== true\n ? { required: true }\n : null;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n */\n writeValue(value) {\n this.checked = !!value;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n */\n registerOnChange(fn) {\n this.#controlValueAccessorChangeFn = fn;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n */\n onInteractionEvent(event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n if (!this.disabled) {\n this.indeterminate = false;\n this.#toggle();\n this.#controlValueAccessorChangeFn(this.checked);\n this.#emitChangeEvent();\n }\n }\n onInputBlur() {\n this.onTouched();\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #controlValueAccessorChangeFn;\n #emitChangeEvent() {\n this.change.emit({ checked: this.checked });\n }\n /**\n * Toggles the `checked` value between true and false\n */\n #toggle() {\n this.checked = !this.checked;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyCheckboxComponent, isStandalone: false, selector: \"sky-checkbox\", inputs: { label: \"label\", labelledBy: \"labelledBy\", id: \"id\", disabled: [\"disabled\", \"disabled\", booleanAttribute], tabindex: \"tabindex\", name: \"name\", helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", iconName: \"iconName\", checkboxType: \"checkboxType\", checked: \"checked\", indeterminate: \"indeterminate\", required: [\"required\", \"required\", booleanAttribute], labelText: \"labelText\", labelHidden: [\"labelHidden\", \"labelHidden\", booleanAttribute], hintText: \"hintText\", stacked: [\"stacked\", \"stacked\", booleanAttribute], helpKey: \"helpKey\" }, outputs: { change: \"change\", checkedChange: \"checkedChange\", disabledChange: \"disabledChange\", indeterminateChange: \"indeterminateChange\" }, host: { properties: { \"class.sky-form-field-stacked\": \"this.stacked\" } }, providers: [\n { provide: NG_VALIDATORS, useExisting: SkyCheckboxComponent, multi: true },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyCheckboxComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], viewQueries: [{ propertyName: \"inputEl\", first: true, predicate: [\"inputEl\"], descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.SkyThemeComponentClassDirective }], ngImport: i0, template: \"<span class=\\\"sky-checkbox-outer-wrapper\\\">\\n <label\\n class=\\\"sky-checkbox-wrapper sky-switch\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': isCheckboxRequired,\\n 'sky-switch-disabled': disabled\\n }\\\"\\n >\\n <input\\n #inputEl\\n class=\\\"sky-checkbox-input sky-switch-input\\\"\\n type=\\\"checkbox\\\"\\n [id]=\\\"inputId\\\"\\n [checked]=\\\"checked\\\"\\n [disabled]=\\\"disabled\\\"\\n [name]=\\\"name\\\"\\n [required]=\\\"isCheckboxRequired\\\"\\n [tabIndex]=\\\"tabindex\\\"\\n [attr.aria-label]=\\\"labelText || label\\\"\\n [attr.aria-labelledby]=\\\"labelText ? undefined : labelledBy\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-required]=\\\"isCheckboxRequired ? true : null\\\"\\n [attr.aria-invalid]=\\\"!!control?.errors\\\"\\n [attr.aria-errormessage]=\\\"\\n labelText && control?.errors ? errorId : undefined\\n \\\"\\n [ngClass]=\\\"{\\n 'sky-switch-invalid':\\n (control?.touched || control?.dirty) && control?.errors\\n }\\\"\\n (blur)=\\\"onInputBlur()\\\"\\n (change)=\\\"onInteractionEvent($event)\\\"\\n />\\n <span\\n class=\\\"sky-switch-control\\\"\\n [ngClass]=\\\"{\\n 'sky-switch-control-icon': iconName,\\n 'sky-switch-control-info': checkboxType === 'info',\\n 'sky-switch-control-success': checkboxType === 'success',\\n 'sky-switch-control-warning': checkboxType === 'warning',\\n 'sky-switch-control-danger': checkboxType === 'danger'\\n }\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-rounded-corners': 'default'\\n }\\\"\\n >\\n @if (iconName) {\\n <sky-icon variant=\\\"solid\\\" [iconName]=\\\"iconName\\\" />\\n } @else {\\n @if (indeterminate) {\\n <sky-icon\\n class=\\\"sky-checkbox-icon-indeterminate sky-checkbox-icon-modern-indeterminate\\\"\\n iconName=\\\"square\\\"\\n variant=\\\"solid\\\"\\n iconSize=\\\"s\\\"\\n />\\n } @else if (checked) {\\n <sky-icon\\n class=\\\"sky-checkbox-icon-modern-checked\\\"\\n iconName=\\\"checkmark\\\"\\n iconSize=\\\"s\\\"\\n />\\n }\\n }\\n </span>\\n\\n @if (labelText) {\\n <sky-checkbox-label-text-label\\n [labelText]=\\\"labelText\\\"\\n [labelHidden]=\\\"labelHidden\\\"\\n />\\n } @else {\\n <ng-content select=\\\"sky-checkbox-label\\\" />\\n }\\n </label>\\n @if ((helpPopoverContent || helpKey) && labelText) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n class=\\\"sky-checkbox-help-inline\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n</span>\\n<span #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-checkbox-hint-text sky-checkbox-form-margin\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n</span>\\n<sky-form-errors\\n [class.sky-checkbox-form-margin]=\\\"labelText && control?.errors\\\"\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"control?.errors\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"control?.touched\\\"\\n [dirty]=\\\"control?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n</sky-form-errors>\\n\", styles: [\":host.sky-cmp-theme-default{display:inline-block}.sky-checkbox-outer-wrapper:not(.sky-theme-modern *){display:flex}.sky-checkbox-outer-wrapper:not(.sky-theme-modern *) .sky-checkbox-help-inline{display:inline-flex}.sky-checkbox-outer-wrapper:not(.sky-theme-modern *) .sky-checkbox-icon-indeterminate{font-size:14px}.sky-checkbox-hint-text:not(.sky-theme-modern *){margin-top:var(--sky-margin-stacked-xs)}.sky-checkbox-form-margin:not(.sky-theme-modern *){display:block;margin-left:calc(var(--sky-switch-size) + var(--sky-switch-margin))}:host.sky-form-field-stacked.sky-cmp-theme-default{display:block}:host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-default{display:block}:host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-default:not(:last-child){margin-bottom:var(--sky-margin-stacked-sm)}\\n\", \":host-context(.sky-theme-modern) :host.sky-cmp-theme-modern{display:inline-block}:host-context(.sky-theme-modern) :host.sky-cmp-theme-modern .sky-switch:not(:has(~.sky-control-help-container)):not(:has(.sky-switch-control-icon)):has(sky-checkbox-label-text-label){margin-right:0}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper{display:flex}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper .sky-checkbox-help-inline{display:inline-flex}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper .sky-checkbox-label{padding-left:var(--sky-space-gap-label-s)}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper .sky-switch-control:not(.sky-switch-control-icon){border-radius:var(--sky-comp-checkbox-border-radius)}:host-context(.sky-theme-modern) .sky-checkbox-hint-text{margin-top:var(--sky-space-gap-stacked_supplemental-xs)}:host-context(.sky-theme-modern) .sky-checkbox-form-margin{display:block;margin-left:var(--sky-space-inset-switch)}:host-context(.sky-theme-modern) :host.sky-form-field-stacked.sky-cmp-theme-modern{display:block}:host-context(.sky-theme-modern) :host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-modern{display:block}:host-context(.sky-theme-modern) :host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-modern:not(:last-child){margin-bottom:var(--sky-space-gap-form-s)}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i3.SkyFormErrorsComponent, selector: \"sky-form-errors\", inputs: [\"errors\", \"labelText\", \"touched\", \"dirty\"] }, { kind: \"component\", type: i4.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i6.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"directive\", type: i1.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"component\", type: i7.SkyCheckboxLabelTextLabelComponent, selector: \"sky-checkbox-label-text-label\", inputs: [\"labelHidden\", \"labelText\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-checkbox', hostDirectives: [SkyThemeComponentClassDirective], providers: [\n { provide: NG_VALIDATORS, useExisting: SkyCheckboxComponent, multi: true },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyCheckboxComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], standalone: false, template: \"<span class=\\\"sky-checkbox-outer-wrapper\\\">\\n <label\\n class=\\\"sky-checkbox-wrapper sky-switch\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': isCheckboxRequired,\\n 'sky-switch-disabled': disabled\\n }\\\"\\n >\\n <input\\n #inputEl\\n class=\\\"sky-checkbox-input sky-switch-input\\\"\\n type=\\\"checkbox\\\"\\n [id]=\\\"inputId\\\"\\n [checked]=\\\"checked\\\"\\n [disabled]=\\\"disabled\\\"\\n [name]=\\\"name\\\"\\n [required]=\\\"isCheckboxRequired\\\"\\n [tabIndex]=\\\"tabindex\\\"\\n [attr.aria-label]=\\\"labelText || label\\\"\\n [attr.aria-labelledby]=\\\"labelText ? undefined : labelledBy\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-required]=\\\"isCheckboxRequired ? true : null\\\"\\n [attr.aria-invalid]=\\\"!!control?.errors\\\"\\n [attr.aria-errormessage]=\\\"\\n labelText && control?.errors ? errorId : undefined\\n \\\"\\n [ngClass]=\\\"{\\n 'sky-switch-invalid':\\n (control?.touched || control?.dirty) && control?.errors\\n }\\\"\\n (blur)=\\\"onInputBlur()\\\"\\n (change)=\\\"onInteractionEvent($event)\\\"\\n />\\n <span\\n class=\\\"sky-switch-control\\\"\\n [ngClass]=\\\"{\\n 'sky-switch-control-icon': iconName,\\n 'sky-switch-control-info': checkboxType === 'info',\\n 'sky-switch-control-success': checkboxType === 'success',\\n 'sky-switch-control-warning': checkboxType === 'warning',\\n 'sky-switch-control-danger': checkboxType === 'danger'\\n }\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-rounded-corners': 'default'\\n }\\\"\\n >\\n @if (iconName) {\\n <sky-icon variant=\\\"solid\\\" [iconName]=\\\"iconName\\\" />\\n } @else {\\n @if (indeterminate) {\\n <sky-icon\\n class=\\\"sky-checkbox-icon-indeterminate sky-checkbox-icon-modern-indeterminate\\\"\\n iconName=\\\"square\\\"\\n variant=\\\"solid\\\"\\n iconSize=\\\"s\\\"\\n />\\n } @else if (checked) {\\n <sky-icon\\n class=\\\"sky-checkbox-icon-modern-checked\\\"\\n iconName=\\\"checkmark\\\"\\n iconSize=\\\"s\\\"\\n />\\n }\\n }\\n </span>\\n\\n @if (labelText) {\\n <sky-checkbox-label-text-label\\n [labelText]=\\\"labelText\\\"\\n [labelHidden]=\\\"labelHidden\\\"\\n />\\n } @else {\\n <ng-content select=\\\"sky-checkbox-label\\\" />\\n }\\n </label>\\n @if ((helpPopoverContent || helpKey) && labelText) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n class=\\\"sky-checkbox-help-inline\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n</span>\\n<span #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-checkbox-hint-text sky-checkbox-form-margin\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n</span>\\n<sky-form-errors\\n [class.sky-checkbox-form-margin]=\\\"labelText && control?.errors\\\"\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"control?.errors\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"control?.touched\\\"\\n [dirty]=\\\"control?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n</sky-form-errors>\\n\", styles: [\":host.sky-cmp-theme-default{display:inline-block}.sky-checkbox-outer-wrapper:not(.sky-theme-modern *){display:flex}.sky-checkbox-outer-wrapper:not(.sky-theme-modern *) .sky-checkbox-help-inline{display:inline-flex}.sky-checkbox-outer-wrapper:not(.sky-theme-modern *) .sky-checkbox-icon-indeterminate{font-size:14px}.sky-checkbox-hint-text:not(.sky-theme-modern *){margin-top:var(--sky-margin-stacked-xs)}.sky-checkbox-form-margin:not(.sky-theme-modern *){display:block;margin-left:calc(var(--sky-switch-size) + var(--sky-switch-margin))}:host.sky-form-field-stacked.sky-cmp-theme-default{display:block}:host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-default{display:block}:host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-default:not(:last-child){margin-bottom:var(--sky-margin-stacked-sm)}\\n\", \":host-context(.sky-theme-modern) :host.sky-cmp-theme-modern{display:inline-block}:host-context(.sky-theme-modern) :host.sky-cmp-theme-modern .sky-switch:not(:has(~.sky-control-help-container)):not(:has(.sky-switch-control-icon)):has(sky-checkbox-label-text-label){margin-right:0}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper{display:flex}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper .sky-checkbox-help-inline{display:inline-flex}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper .sky-checkbox-label{padding-left:var(--sky-space-gap-label-s)}:host-context(.sky-theme-modern) .sky-checkbox-outer-wrapper .sky-switch-control:not(.sky-switch-control-icon){border-radius:var(--sky-comp-checkbox-border-radius)}:host-context(.sky-theme-modern) .sky-checkbox-hint-text{margin-top:var(--sky-space-gap-stacked_supplemental-xs)}:host-context(.sky-theme-modern) .sky-checkbox-form-margin{display:block;margin-left:var(--sky-space-inset-switch)}:host-context(.sky-theme-modern) :host.sky-form-field-stacked.sky-cmp-theme-modern{display:block}:host-context(.sky-theme-modern) :host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-modern{display:block}:host-context(.sky-theme-modern) :host-context(sky-checkbox-group .sky-checkbox-group-stacked) :host.sky-cmp-theme-modern:not(:last-child){margin-bottom:var(--sky-space-gap-form-s)}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { label: [{\n type: Input\n }], labelledBy: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], tabindex: [{\n type: Input\n }], name: [{\n type: Input\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], change: [{\n type: Output\n }], iconName: [{\n type: Input\n }], checkboxType: [{\n type: Input\n }], checked: [{\n type: Input\n }], indeterminate: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], labelText: [{\n type: Input\n }], labelHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hintText: [{\n type: Input\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }, {\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], helpKey: [{\n type: Input\n }], checkedChange: [{\n type: Output\n }], disabledChange: [{\n type: Output\n }], indeterminateChange: [{\n type: Output\n }], inputEl: [{\n type: ViewChild,\n args: ['inputEl', { read: ElementRef }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsRUFHakIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9ELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7OztBQUlsRjs7O0dBR0c7QUFvQkgsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQjs7Ozs7O09BTUc7SUFDSCxJQUNXLEtBQUssQ0FBQyxLQUF5QjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUU7Z0JBQ3BELHVCQUF1QixFQUFFLENBQUM7YUFDM0IsQ0FBQyxD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QWNMLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQW1CckMsS0FBSzs7c0JBT0wsS0FBSzs7c0JBa0JMLEtBQUs7O3NCQU9MLEtBQUs7O3NCQU1MLE1BQU07O3NCQVFOLEtBQUs7O3NCQVlMLEtBQUs7O3NCQW1CTCxLQUFLOztzQkFvQkwsS0FBSzs7c0JBdUJMLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQU9yQyxLQUFLOztzQkFNTCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFPckMsS0FBSzs7c0JBUUwsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsOEJBQThCOztzQkFRMUMsS0FBSzs7c0JBTUwsTUFBTTs7c0JBUU4sTUFBTTs7c0JBU04sTUFBTTs7c0JBS04sU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUlkU2VydmljZSwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVEIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuJztcblxuaW1wb3J0IHsgU2t5Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICcuL2NoZWNrYm94LWNoYW5nZSc7XG5cbi8qKlxuICogUmVwbGFjZXMgdGhlIEhUTUwgaW5wdXQgZWxlbWVudCB3aXRoIGB0eXBlPVwiY2hlY2tib3hcImAuIFdoZW4gdXNlcnMgc2VsZWN0IGEgY2hlY2tib3gsIGl0cyB2YWx1ZVxuICogaXMgZHJpdmVuIHRocm91Z2ggYW4gYG5nTW9kZWxgIGF0dHJpYnV0ZSB0aGF0IHlvdSBzcGVjaWZ5IG9uIHRoZSBgc2t5LWNoZWNrYm94YCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9jaGVja2JveC5kZWZhdWx0LmNvbXBvbmVudC5zY3NzJyxcbiAgICAnLi9jaGVja2JveC5tb2Rlcm4uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1NreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBTa3lDaGVja2JveENvbXBvbmVudCwgbXVsdGk6IHRydWUgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lDaGVja2JveENvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSBjaGVja2JveC4gVGhpcyBzZXRzIHRoZSBjaGVja2JveCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2NoZWNrYm94I2FjY2Vzc2liaWxpdHkpXG4gICAqIHdoZW4gdGhlIGNoZWNrYm94IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLiBZb3UgbXVzdCBzZXQgdGhpcyBwcm9wZXJ0eSBmb3IgaWNvblxuICAgKiBjaGVja2JveGVzLiBJZiB0aGUgY2hlY2tib3ggaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgbGFiZWxUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lDaGVja2JveENvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHRoZVxuICAgKiBjaGVja2JveC4gVGhpcyBzZXRzIHRoZSBjaGVja2JveCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvY2hlY2tib3gjYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBjaGVja2JveCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBsYWJlbGAgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBsYWJlbFRleHRgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsbGVkQnkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19sYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lDaGVja2JveENvbXBvbmVudC5sYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxsZWRCeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWxsZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSUQgZm9yIHRoZSBjaGVja2JveC5cbiAgICogSWYgYSB2YWx1ZSBpcyBub3QgcHJvdmlkZWQsIGFuIGF1dG9nZW5lcmF0ZWQgSUQgaXMgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dElkID0gYHNreS1jaGVja2JveC0ke3ZhbHVlfS1pbnB1dGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRJZCA9IGBza3ktY2hlY2tib3gtJHt0aGlzLiNkZWZhdWx0SWR9LWlucHV0YDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBjaGVja2JveCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2Rpc2FibGVkKSB7XG4gICAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2Rpc2FibGVkQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZm9yIHRoZSBjaGVja2JveC4gSWYgbm90IGRlZmluZWQsIHRoZSBpbmRleCBpcyBzZXQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZVxuICAgKiBjaGVja2JveCBvbiBsb2FkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYmluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGNoZWNrYm94LlxuICAgKiBJZiBhIHZhbHVlIGlzIG5vdCBwcm92aWRlZCwgYW4gYXV0b2dlbmVyYXRlZCBJRCBpcyB1c2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHRoaXMuI2RlZmF1bHRJZCkge1xuICAgICAgdGhpcy4jX25hbWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX25hbWUgPSBgc2t5LWNoZWNrYm94LSR7dGhpcy4jZGVmYXVsdElkfWA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgY2hlY2tib3ggbGFiZWwuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgcHVibGljIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5Q2hlY2tib3hDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBTVkcgaWNvbiB0byBkaXNwbGF5IGluIHBsYWNlIG9mIHRoZSBjaGVja2JveC4gVG8gZ3JvdXAgaWNvbiBjaGVja2JveGVzXG4gICAqIGxpa2UgaW4gdGhlIGRlbW8sIHBsYWNlIHRoZSBjaGVja2JveGVzIHdpdGhpbiBhIGBza3ktY2hlY2tib3gtZ3JvdXBgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGljb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIHR5cGUgYWZ0ZXIgdXNlcnMgc2VsZWN0IGEgY2hlY2tib3ggd2hlcmUgdGhlXG4gICAqIGBpY29uYCBwcm9wZXJ0eSBkaXNwbGF5cyBhbiBpY29uIGluIHBsYWNlIG9mIHRoZSBjaGVja2JveC4gVGhlIHZhbGlkIG9wdGlvbnMgY29ycmVzcG9uZCB0b1xuICAgKiBbdGhlIGxhYmVsIGNvbXBvbmVudCdzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvbGFiZWwpXG4gICAqIGxhYmVsIHR5cGVzLiBgXCJpbmZvXCJgIGNyZWF0ZXMgYSBibHVlIGJhY2tncm91bmQsIGBcInN1Y2Nlc3NcImAgY3JlYXRlcyBhIGdyZWVuXG4gICAqIGJhY2tncm91bmQsIGBcIndhcm5pbmdcImAgY3JlYXRlcyBhbiBvcmFuZ2UgYmFja2dyb3VuZCwgYW5kIGBcImRhbmdlclwiYCBjcmVhdGVzIGEgcmVkIGJhY2tncm91bmQuXG4gICAqIEBkZWZhdWx0IFwiaW5mb1wiXG4gICAqIEBkZXByZWNhdGVkIFRoZSBgY2hlY2tib3hUeXBlYCBpbnB1dCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjaGVja2JveFR5cGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreUNoZWNrYm94Q29tcG9uZW50LmNoZWNrYm94VHlwZScsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiNfY2hlY2tib3hUeXBlID0gdmFsdWUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogJ2luZm8nO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGVja2JveFR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX2NoZWNrYm94VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBzZWxlY3RlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNoZWNrZWQgPSAhIXZhbHVlO1xuICAgIGlmIChjaGVja2VkICE9PSB0aGlzLiNfY2hlY2tlZCkge1xuICAgICAgdGhpcy4jX2NoZWNrZWQgPSBjaGVja2VkO1xuICAgICAgdGhpcy4jY2hlY2tlZENoYW5nZS5uZXh0KGNoZWNrZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBzZWxlY3RlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2NoZWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW4gdGhlIGluZGV0ZXJtaW5hdGUgc3RhdGUuIFRoaXMgaGFzIG5vIHZpc3VhbCBlZmZlY3QgZm9yIGljb24gY2hlY2tib3hlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGluZGV0ZXJtaW5hdGUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19pbmRldGVybWluYXRlKSB7XG4gICAgICB0aGlzLiNfaW5kZXRlcm1pbmF0ZSA9ICEhdmFsdWU7XG4gICAgICB0aGlzLiNpbmRldGVybWluYXRlQ2hhbmdlLm5leHQodGhpcy4jX2luZGV0ZXJtaW5hdGUpO1xuICAgICAgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gdGhpcy4jX2luZGV0ZXJtaW5hdGU7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2luZGV0ZXJtaW5hdGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gdmFsaWRhdGlvbi5cbiAgICogV2hlbiB5b3Ugc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgLCB0aGUgY29tcG9uZW50IGFkZHMgYGFyaWEtcmVxdWlyZWRgIGFuZCBgcmVxdWlyZWRgXG4gICAqIGF0dHJpYnV0ZXMgdG8gdGhlIGlucHV0IGVsZW1lbnQgc28gdGhhdCBmb3JtcyBkaXNwbGF5IGFuIGludmFsaWQgc3RhdGUgdW50aWwgdGhlIGlucHV0IGVsZW1lbnRcbiAgICogaXMgY29tcGxldGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIGNoZWNrYm94J3MgbGFiZWwuIFVzZSB0aGlzIGluc3RlYWQgb2YgdGhlIGBza3ktY2hlY2tib3gtbGFiZWxgIHdoZW4gdGhlIGxhYmVsIGlzIHRleHQtb25seS5cbiAgICogU3BlY2lmeWluZyBgbGFiZWxUZXh0YCBhbHNvIGVuYWJsZXMgYXV0b21hdGljIGVycm9yIG1lc3NhZ2UgaGFuZGxpbmcgZm9yIGNoZWNrYm94LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBoaWRlIHRoZSBgbGFiZWxUZXh0YC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsIHRoZSBhcHByb3ByaWF0ZVxuICAgKiB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGNoZWNrYm94LiBJZiB0aGUgY2hlY2tib3ggaXMgd2l0aGluIGEgY2hlY2tib3ggZ3JvdXAsXG4gICAqIHNldCBgc3RhY2tlZGAgb24gdGhlIGNoZWNrYm94IGdyb3VwIGNvbXBvbmVudCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSBjaGVja2JveCBsYWJlbC4gQ2xpY2tpbmcgdGhlIGJ1dHRvbiBpbnZva2VzIFtnbG9iYWwgaGVscF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9kZXZlbG9wL2dsb2JhbC1oZWxwKVxuICAgKiBhcyBjb25maWd1cmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IG9yIGRlc2VsZWN0IHRoZSBjaGVja2JveC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGNoZWNrZWRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuI2NoZWNrZWRDaGFuZ2VPYnM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGRpc2FibGVkQ2hhbmdlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLiNkaXNhYmxlZENoYW5nZU9icztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBpbmRldGVybWluYXRlIHN0YXRlIGNoYW5nZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy4jaW5kZXRlcm1pbmF0ZUNoYW5nZU9icztcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIHNldCBpbnB1dEVsKGVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2lucHV0RWwgPSBlbDtcbiAgICBpZiAoZWwgJiYgdGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICBlbC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbnB1dEVsKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaW5wdXRFbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNDaGVja2JveFJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMucmVxdWlyZWQgfHxcbiAgICAgIHRoaXMuY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKSB8fFxuICAgICAgdGhpcy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGlucHV0SWQgPSAnJztcblxuICAjY2hlY2tlZENoYW5nZTogU3ViamVjdDxib29sZWFuPjtcbiAgI2NoZWNrZWRDaGFuZ2VPYnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICNkaXNhYmxlZENoYW5nZTogU3ViamVjdDxib29sZWFuPjtcbiAgI2Rpc2FibGVkQ2hhbmdlT2JzOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAjaW5kZXRlcm1pbmF0ZUNoYW5nZTogU3ViamVjdDxib29sZWFuPjtcbiAgI2luZGV0ZXJtaW5hdGVDaGFuZ2VPYnM6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgI19jaGVja2VkID0gZmFsc2U7XG4gICNfY2hlY2tib3hUeXBlID0gJ2luZm8nO1xuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAjX2lucHV0RWw6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG4gICNfbmFtZSA9ICcnO1xuICAjX2xhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfbGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICAjZGVmYXVsdElkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2NoZWNrZWRDaGFuZ2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHRoaXMuI2Rpc2FibGVkQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICB0aGlzLiNpbmRldGVybWluYXRlQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHRoaXMuI2NoZWNrZWRDaGFuZ2VPYnMgPSB0aGlzLiNjaGVja2VkQ2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuI2Rpc2FibGVkQ2hhbmdlT2JzID0gdGhpcy4jZGlzYWJsZWRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jaW5kZXRlcm1pbmF0ZUNoYW5nZU9icyA9IHRoaXMuI2luZGV0ZXJtaW5hdGVDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5pZCA9IHRoaXMuI2RlZmF1bHRJZDtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLiNkZWZhdWx0SWQ7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2NoZWNrZWRDaGFuZ2UubmV4dCh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuI2Rpc2FibGVkQ2hhbmdlLm5leHQodGhpcy5kaXNhYmxlZCk7XG4gICAgdGhpcy4jaW5kZXRlcm1pbmF0ZUNoYW5nZS5uZXh0KHRoaXMuaW5kZXRlcm1pbmF0ZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sPGJvb2xlYW4+KTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHRoaXMuY29udHJvbCB8fD0gY29udHJvbDtcblxuICAgIC8vIEluIHRlbXBsYXRlLWRyaXZlbiBmb3JtcywgQW5ndWxhcidzIG5hdGl2ZSAncmVxdWlyZWQnIGF0dHJpYnV0ZSBkaXJlY3RpdmUgb25seSB3b3Jrc1xuICAgIC8vIG9uIGBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl1gIHNlbGVjdG9ycywgc28gd2UgbmVlZCB0byB3cml0ZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBvdXJzZWx2ZXMuXG4gICAgLy8gQWxzbywgd2UncmUgdHJlYXRpbmcgVmFsaWRhdG9ycy5yZXF1aXJlZCB0aGUgc2FtZSBhcyBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZSBpbnRlcm5hbGx5LCBzb1xuICAgIC8vIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhhdCBkZWNpc2lvbiBpbiBvdXIgY3VzdG9tIHZhbGlkYXRvci5cbiAgICByZXR1cm4gdGhpcy5pc0NoZWNrYm94UmVxdWlyZWQgJiYgY29udHJvbC52YWx1ZSAhPT0gdHJ1ZVxuICAgICAgPyB7IHJlcXVpcmVkOiB0cnVlIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgY2hlY2tib3ggaW5wdXQgZWxlbWVudC5cbiAgICogVG9nZ2xlcyBjaGVja2VkIHN0YXRlIGlmIGVsZW1lbnQgaXMgbm90IGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAgLy8gT3RoZXJ3aXNlIHRoZSBjaGFuZ2UgZXZlbnQsIGZyb20gdGhlIGlucHV0IGVsZW1lbnQsIHdpbGwgYnViYmxlIHVwIGFuZFxuICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuI3RvZ2dsZSgpO1xuICAgICAgdGhpcy4jY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLmNoZWNrZWQpO1xuICAgICAgdGhpcy4jZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIGNoZWNrYm94IGlzIGJsdXJyZWQuIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG5cbiAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgcHVibGljIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAodmFsdWUpID0+IHt9O1xuXG4gICNlbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh7IGNoZWNrZWQ6IHRoaXMuY2hlY2tlZCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBgY2hlY2tlZGAgdmFsdWUgYmV0d2VlbiB0cnVlIGFuZCBmYWxzZVxuICAgKi9cbiAgI3RvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInNreS1jaGVja2JveC1vdXRlci13cmFwcGVyXCI+XG4gIDxsYWJlbFxuICAgIGNsYXNzPVwic2t5LWNoZWNrYm94LXdyYXBwZXIgc2t5LXN3aXRjaFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJzogaXNDaGVja2JveFJlcXVpcmVkLFxuICAgICAgJ3NreS1zd2l0Y2gtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICAjaW5wdXRFbFxuICAgICAgY2xhc3M9XCJza3ktY2hlY2tib3gtaW5wdXQgc2t5LXN3aXRjaC1pbnB1dFwiXG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICBbcmVxdWlyZWRdPVwiaXNDaGVja2JveFJlcXVpcmVkXCJcbiAgICAgIFt0YWJJbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsVGV4dCB8fCBsYWJlbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxUZXh0ID8gdW5kZWZpbmVkIDogbGFiZWxsZWRCeVwiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhpbnRUZXh0ID8gaGludFRleHRFbC5pZCA6IHVuZGVmaW5lZFwiXG4gICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImlzQ2hlY2tib3hSZXF1aXJlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCIhIWNvbnRyb2w/LmVycm9yc1wiXG4gICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICAgICAgbGFiZWxUZXh0ICYmIGNvbnRyb2w/LmVycm9ycyA/IGVycm9ySWQgOiB1bmRlZmluZWRcbiAgICAgIFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktc3dpdGNoLWludmFsaWQnOlxuICAgICAgICAgIChjb250cm9sPy50b3VjaGVkIHx8IGNvbnRyb2w/LmRpcnR5KSAmJiBjb250cm9sPy5lcnJvcnNcbiAgICAgIH1cIlxuICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoKVwiXG4gICAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cInNreS1zd2l0Y2gtY29udHJvbFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktc3dpdGNoLWNvbnRyb2wtaWNvbic6IGljb25OYW1lLFxuICAgICAgICAnc2t5LXN3aXRjaC1jb250cm9sLWluZm8nOiBjaGVja2JveFR5cGUgPT09ICdpbmZvJyxcbiAgICAgICAgJ3NreS1zd2l0Y2gtY29udHJvbC1zdWNjZXNzJzogY2hlY2tib3hUeXBlID09PSAnc3VjY2VzcycsXG4gICAgICAgICdza3ktc3dpdGNoLWNvbnRyb2wtd2FybmluZyc6IGNoZWNrYm94VHlwZSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAnc2t5LXN3aXRjaC1jb250cm9sLWRhbmdlcic6IGNoZWNrYm94VHlwZSA9PT0gJ2RhbmdlcidcbiAgICAgIH1cIlxuICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LXJvdW5kZWQtY29ybmVycyc6ICdkZWZhdWx0J1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgQGlmIChpY29uTmFtZSkge1xuICAgICAgICA8c2t5LWljb24gdmFyaWFudD1cInNvbGlkXCIgW2ljb25OYW1lXT1cImljb25OYW1lXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKGluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWNoZWNrYm94LWljb24taW5kZXRlcm1pbmF0ZSBza3ktY2hlY2tib3gtaWNvbi1tb2Rlcm4taW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICBpY29uTmFtZT1cInNxdWFyZVwiXG4gICAgICAgICAgICB2YXJpYW50PVwic29saWRcIlxuICAgICAgICAgICAgaWNvblNpemU9XCJzXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIGlmIChjaGVja2VkKSB7XG4gICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInNreS1jaGVja2JveC1pY29uLW1vZGVybi1jaGVja2VkXCJcbiAgICAgICAgICAgIGljb25OYW1lPVwiY2hlY2ttYXJrXCJcbiAgICAgICAgICAgIGljb25TaXplPVwic1wiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvc3Bhbj5cblxuICAgIEBpZiAobGFiZWxUZXh0KSB7XG4gICAgICA8c2t5LWNoZWNrYm94LWxhYmVsLXRleHQtbGFiZWxcbiAgICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgICBbbGFiZWxIaWRkZW5dPVwibGFiZWxIaWRkZW5cIlxuICAgICAgLz5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1jaGVja2JveC1sYWJlbFwiIC8+XG4gICAgfVxuICA8L2xhYmVsPlxuICBAaWYgKChoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleSkgJiYgbGFiZWxUZXh0KSB7XG4gICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgICBjbGFzcz1cInNreS1jaGVja2JveC1oZWxwLWlubGluZVwiXG4gICAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICAgIFtwb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gIH1cbjwvc3Bhbj5cbjxzcGFuICNoaW50VGV4dEVsPVwic2t5SWRcIiBza3lJZD5cbiAgQGlmIChoaW50VGV4dCkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LWNoZWNrYm94LWhpbnQtdGV4dCBza3ktY2hlY2tib3gtZm9ybS1tYXJnaW5cIlxuICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnLFxuICAgICAgICAnc2t5LWZvbnQtaGludC10ZXh0LXMnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgPlxuICAgICAge3sgaGludFRleHQgfX1cbiAgICA8L2Rpdj5cbiAgfVxuPC9zcGFuPlxuPHNreS1mb3JtLWVycm9yc1xuICBbY2xhc3Muc2t5LWNoZWNrYm94LWZvcm0tbWFyZ2luXT1cImxhYmVsVGV4dCAmJiBjb250cm9sPy5lcnJvcnNcIlxuICBbaWRdPVwiZXJyb3JJZFwiXG4gIFtlcnJvcnNdPVwiY29udHJvbD8uZXJyb3JzXCJcbiAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICBbdG91Y2hlZF09XCJjb250cm9sPy50b3VjaGVkXCJcbiAgW2RpcnR5XT1cImNvbnRyb2w/LmRpcnR5XCJcbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWZvcm0tZXJyb3JcIiAvPlxuPC9za3ktZm9ybS1lcnJvcnM+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\nimport { SkyCheckboxGroupComponent } from './checkbox-group.component';\nimport { SkyCheckboxLabelTextLabelComponent } from './checkbox-label-text-label.component';\nimport { SkyCheckboxLabelComponent } from './checkbox-label.component';\nimport { SkyCheckboxComponent } from './checkbox.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyCheckboxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxModule, declarations: [SkyCheckboxComponent,\n SkyCheckboxLabelComponent,\n SkyCheckboxLabelTextLabelComponent], imports: [CommonModule,\n FormsModule,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyTrimModule,\n SkyThemeModule], exports: [SkyCheckboxComponent,\n SkyCheckboxLabelComponent,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxModule, imports: [CommonModule,\n FormsModule,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyTrimModule,\n SkyThemeModule, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyCheckboxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyCheckboxComponent,\n SkyCheckboxLabelComponent,\n SkyCheckboxLabelTextLabelComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyTrimModule,\n SkyThemeModule,\n ],\n exports: [\n SkyCheckboxComponent,\n SkyCheckboxLabelComponent,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9jaGVja2JveC9jaGVja2JveC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUE0QjVELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQXhCMUIsb0JBQW9CO1lBQ3BCLHlCQUF5QjtZQUN6QixrQ0FBa0MsYUFHbEMsWUFBWTtZQUNaLFdBQVc7WUFDWCx5QkFBeUI7WUFDekIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQix1QkFBdUI7WUFDdkIsbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixXQUFXO1lBQ1gsYUFBYTtZQUNiLGNBQWMsYUFHZCxvQkFBb0I7WUFDcEIseUJBQXlCO1lBQ3pCLHlCQUF5QjtZQUN6QixrQkFBa0I7Z0hBR1QsaUJBQWlCLFlBbkIxQixZQUFZO1lBQ1osV0FBVztZQUNYLHlCQUF5QjtZQUN6QixrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLFdBQVc7WUFDWCxhQUFhO1lBQ2IsY0FBYyxFQU1kLGtCQUFrQjs7NEZBR1QsaUJBQWlCO2tCQTFCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLGtDQUFrQztxQkFDbkM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCx5QkFBeUI7d0JBQ3pCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLHlCQUF5Qjt3QkFDekIsa0JBQWtCO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJZE1vZHVsZSwgU2t5VHJpbU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUhlbHBJbmxpbmVNb2R1bGUgfSBmcm9tICdAc2t5dXgvaGVscC1pbmxpbmUnO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pY29uJztcbmltcG9ydCB7IFNreVRoZW1lTW9kdWxlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWZvcm1zLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lDaGVja2JveEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hMYWJlbFRleHRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tib3gtbGFiZWwtdGV4dC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Q2hlY2tib3hMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tib3gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTa3lDaGVja2JveENvbXBvbmVudCxcbiAgICBTa3lDaGVja2JveExhYmVsQ29tcG9uZW50LFxuICAgIFNreUNoZWNrYm94TGFiZWxUZXh0TGFiZWxDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgU2t5Q2hlY2tib3hHcm91cENvbXBvbmVudCxcbiAgICBTa3lGb3JtRXJyb3JNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgICBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5VHJpbU1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNreUNoZWNrYm94Q29tcG9uZW50LFxuICAgIFNreUNoZWNrYm94TGFiZWxDb21wb25lbnQsXG4gICAgU2t5Q2hlY2tib3hHcm91cENvbXBvbmVudCxcbiAgICBTa3lGb3JtRXJyb3JNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUNoZWNrYm94TW9kdWxlIHt9XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, booleanAttribute, numberAttribute, } from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeModule } from '@skyux/theme';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/help-inline\";\nimport * as i3 from \"@skyux/core\";\nimport * as i4 from \"@skyux/theme\";\nfunction numberAttribute3(value) {\n return numberAttribute(value, 3);\n}\n/**\n * Organizes form fields into a group.\n */\nexport class SkyFieldGroupComponent {\n constructor() {\n /**\n * Indicates whether to hide the `headingText`.\n */\n this.headingHidden = false;\n /**\n * Whether the field group is stacked on another field group. When specified, the appropriate\n * vertical spacing is automatically added to the field group.\n */\n this.stacked = false;\n /**\n * The semantic heading level in the document structure.\n * @default 3\n */\n this.headingLevel = 3;\n this.headingClass = 'sky-font-heading-3';\n }\n /**\n * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n * @default 3\n */\n set headingStyle(value) {\n this.headingClass = `sky-font-heading-${value}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFieldGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyFieldGroupComponent, isStandalone: true, selector: \"sky-field-group\", inputs: { headingText: \"headingText\", hintText: \"hintText\", headingHidden: [\"headingHidden\", \"headingHidden\", booleanAttribute], stacked: [\"stacked\", \"stacked\", booleanAttribute], headingLevel: [\"headingLevel\", \"headingLevel\", numberAttribute3], headingStyle: [\"headingStyle\", \"headingStyle\", numberAttribute3], helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", helpKey: \"helpKey\" }, host: { properties: { \"class.sky-field-group-stacked\": \"this.stacked\" } }, ngImport: i0, template: \"<fieldset\\n class=\\\"sky-field-group\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n>\\n <legend\\n class=\\\"sky-field-group-legend\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': headingHidden\\n }\\\"\\n >\\n <span class=\\\"sky-field-group-heading\\\">\\n @switch (headingLevel) {\\n @case (4) {\\n <h4 [class]=\\\"headingClass\\\">{{ headingText }}</h4>\\n }\\n @default {\\n <h3 [class]=\\\"headingClass\\\">{{ headingText }}</h3>\\n }\\n }\\n </span>\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n class=\\\"sky-field-group-help-inline\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"headingText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n <div #hintTextEl=\\\"skyId\\\" skyId class=\\\"sky-field-group-hint-text-wrapper\\\">\\n @if (hintText) {\\n <div\\n class=\\\"sky-field-group-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n </div>\\n <div class=\\\"sky-field-group-content\\\">\\n <ng-content />\\n </div>\\n</fieldset>\\n\", styles: [\".sky-field-group:not(.sky-theme-modern *){--sky-override-field-group-align-items: normal;--sky-override-field-group-content-space: 8px;--sky-override-field-group-content-with-hint-text-space: 10px;--sky-override-field-group-hint-text-space: 5px}:host{display:block}legend{display:flex;align-items:var(--sky-override-field-group-align-items, baseline)}legend h3,legend h4{margin:0}.sky-field-group-hint-text{margin-top:var(--sky-override-field-group-hint-text-space, var(--sky-space-gap-stacked_supplemental-s))}.sky-field-group-content{margin-top:var(--sky-override-field-group-content-space, var(--sky-space-gap-form-s))}.sky-field-group-hint-text-wrapper:has(.sky-field-group-hint-text)+.sky-field-group-content{margin-top:var(--sky-override-field-group-content-with-hint-text-space, var(--sky-space-gap-form-l))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: SkyHelpInlineModule }, { kind: \"component\", type: i2.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"ngmodule\", type: SkyIdModule }, { kind: \"directive\", type: i3.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"directive\", type: i4.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFieldGroupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-field-group', imports: [CommonModule, SkyHelpInlineModule, SkyIdModule, SkyThemeModule], template: \"<fieldset\\n class=\\\"sky-field-group\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n>\\n <legend\\n class=\\\"sky-field-group-legend\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': headingHidden\\n }\\\"\\n >\\n <span class=\\\"sky-field-group-heading\\\">\\n @switch (headingLevel) {\\n @case (4) {\\n <h4 [class]=\\\"headingClass\\\">{{ headingText }}</h4>\\n }\\n @default {\\n <h3 [class]=\\\"headingClass\\\">{{ headingText }}</h3>\\n }\\n }\\n </span>\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n class=\\\"sky-field-group-help-inline\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"headingText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n <div #hintTextEl=\\\"skyId\\\" skyId class=\\\"sky-field-group-hint-text-wrapper\\\">\\n @if (hintText) {\\n <div\\n class=\\\"sky-field-group-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n </div>\\n <div class=\\\"sky-field-group-content\\\">\\n <ng-content />\\n </div>\\n</fieldset>\\n\", styles: [\".sky-field-group:not(.sky-theme-modern *){--sky-override-field-group-align-items: normal;--sky-override-field-group-content-space: 8px;--sky-override-field-group-content-with-hint-text-space: 10px;--sky-override-field-group-hint-text-space: 5px}:host{display:block}legend{display:flex;align-items:var(--sky-override-field-group-align-items, baseline)}legend h3,legend h4{margin:0}.sky-field-group-hint-text{margin-top:var(--sky-override-field-group-hint-text-space, var(--sky-space-gap-stacked_supplemental-s))}.sky-field-group-content{margin-top:var(--sky-override-field-group-content-space, var(--sky-space-gap-form-s))}.sky-field-group-hint-text-wrapper:has(.sky-field-group-hint-text)+.sky-field-group-content{margin-top:var(--sky-override-field-group-content-with-hint-text-space, var(--sky-space-gap-form-l))}\\n\"] }]\n }], propDecorators: { headingText: [{\n type: Input,\n args: [{ required: true }]\n }], hintText: [{\n type: Input\n }], headingHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }, {\n type: HostBinding,\n args: ['class.sky-field-group-stacked']\n }], headingLevel: [{\n type: Input,\n args: [{ transform: numberAttribute3 }]\n }], headingStyle: [{\n type: Input,\n args: [{ transform: numberAttribute3 }]\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], helpKey: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWVsZC1ncm91cC9maWVsZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpZWxkLWdyb3VwL2ZpZWxkLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBRUwsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFLOUMsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8sc0JBQXNCO0lBTm5DO1FBb0JFOztXQUVHO1FBRUksa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFN0I7OztXQUdHO1FBR0ksWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV2Qjs7O1dBR0c7UUFFSSxpQkFBWSxHQUE4QixDQUFDLENBQUM7UUFrQ3pDLGlCQUFZLEdBQUcsb0JBQW9CLENBQUM7S0FDL0M7SUFqQ0M7OztPQUdHO0lBQ0gsSUFDVyxZQUFZLENBQUMsS0FBZ0M7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxvQkFBb0IsS0FBSyxFQUFFLENBQUM7SUFDbEQsQ0FBQzsrR0ExQ1Usc0JBQXNCO21HQUF0QixzQkFBc0IsaUtBaUJiLGdCQUFnQixtQ0FPaEIsZ0JBQWdCLGtEQXJDN0IsZ0JBQWdCLGtEQUFoQixnQkFBZ0IsNE1DaEJ6QixnMUNBaURBLDAyQkR0QlksWUFBWSw0SEFBRSxtQkFBbUIsd1BBQUUsV0FBVyw0R0FBRSxjQUFjOzs0RkFFN0Qsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLGlCQUFpQixXQUdsQixDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDOztzQkFNeEUsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7O3NCQU94QixLQUFLOztzQkFNTCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFPckMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsK0JBQStCOztzQkFPM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBT3JDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQVVyQyxLQUFLOztzQkFPTCxLQUFLOztzQkFRTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUlkTW9kdWxlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZSc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreUZpZWxkR3JvdXBIZWFkaW5nTGV2ZWwgfSBmcm9tICcuL2ZpZWxkLWdyb3VwLWhlYWRpbmctbGV2ZWwnO1xuaW1wb3J0IHsgU2t5RmllbGRHcm91cEhlYWRpbmdTdHlsZSB9IGZyb20gJy4vZmllbGQtZ3JvdXAtaGVhZGluZy1zdHlsZSc7XG5cbmZ1bmN0aW9uIG51bWJlckF0dHJpYnV0ZTModmFsdWU6IHVua25vd24pOiBudW1iZXIge1xuICByZXR1cm4gbnVtYmVyQXR0cmlidXRlKHZhbHVlLCAzKTtcbn1cblxuLyoqXG4gKiBPcmdhbml6ZXMgZm9ybSBmaWVsZHMgaW50byBhIGdyb3VwLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZmllbGQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmllbGQtZ3JvdXAuY29tcG9uZW50LnNjc3MnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lIZWxwSW5saW5lTW9kdWxlLCBTa3lJZE1vZHVsZSwgU2t5VGhlbWVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWVsZEdyb3VwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIGZpZWxkIGdyb3VwJ3MgaGVhZGluZy5cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBoZWFkaW5nVGV4dCE6IHN0cmluZztcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGBoZWFkaW5nVGV4dGAuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGhlYWRpbmdIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmllbGQgZ3JvdXAgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZpZWxkIGdyb3VwLiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZmllbGQgZ3JvdXAuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZmllbGQtZ3JvdXAtc3RhY2tlZCcpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpYyBoZWFkaW5nIGxldmVsIGluIHRoZSBkb2N1bWVudCBzdHJ1Y3R1cmUuXG4gICAqIEBkZWZhdWx0IDNcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlMyB9KVxuICBwdWJsaWMgaGVhZGluZ0xldmVsOiBTa3lGaWVsZEdyb3VwSGVhZGluZ0xldmVsID0gMztcblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgW2ZvbnQgc3R5bGVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL3N0eWxlcy90eXBvZ3JhcGh5I2hlYWRpbmdzKS5cbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUzIH0pXG4gIHB1YmxpYyBzZXQgaGVhZGluZ1N0eWxlKHZhbHVlOiBTa3lGaWVsZEdyb3VwSGVhZGluZ1N0eWxlKSB7XG4gICAgdGhpcy5oZWFkaW5nQ2xhc3MgPSBgc2t5LWZvbnQtaGVhZGluZy0ke3ZhbHVlfWA7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgaGVhZGluZ1RleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIGZpZWxkIGdyb3VwIGhlYWRpbmcuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWFkaW5nVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBoZWFkaW5nVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSBmaWVsZCBncm91cCBoZWFkaW5nLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWFkaW5nVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBoZWFkaW5nQ2xhc3MgPSAnc2t5LWZvbnQtaGVhZGluZy0zJztcbn1cbiIsIjxmaWVsZHNldFxuICBjbGFzcz1cInNreS1maWVsZC1ncm91cFwiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaGludFRleHQgPyBoaW50VGV4dEVsLmlkIDogdW5kZWZpbmVkXCJcbj5cbiAgPGxlZ2VuZFxuICAgIGNsYXNzPVwic2t5LWZpZWxkLWdyb3VwLWxlZ2VuZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBoZWFkaW5nSGlkZGVuXG4gICAgfVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cInNreS1maWVsZC1ncm91cC1oZWFkaW5nXCI+XG4gICAgICBAc3dpdGNoIChoZWFkaW5nTGV2ZWwpIHtcbiAgICAgICAgQGNhc2UgKDQpIHtcbiAgICAgICAgICA8aDQgW2NsYXNzXT1cImhlYWRpbmdDbGFzc1wiPnt7IGhlYWRpbmdUZXh0IH19PC9oND5cbiAgICAgICAgfVxuICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgPGgzIFtjbGFzc109XCJoZWFkaW5nQ2xhc3NcIj57eyBoZWFkaW5nVGV4dCB9fTwvaDM+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L3NwYW4+XG4gICAgQGlmIChoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleSkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgICA8c2t5LWhlbHAtaW5saW5lXG4gICAgICAgICAgY2xhc3M9XCJza3ktZmllbGQtZ3JvdXAtaGVscC1pbmxpbmVcIlxuICAgICAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgICAgIFtsYWJlbFRleHRdPVwiaGVhZGluZ1RleHRcIlxuICAgICAgICAgIFtwb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgIC8+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICA8L2xlZ2VuZD5cbiAgPGRpdiAjaGludFRleHRFbD1cInNreUlkXCIgc2t5SWQgY2xhc3M9XCJza3ktZmllbGQtZ3JvdXAtaGludC10ZXh0LXdyYXBwZXJcIj5cbiAgICBAaWYgKGhpbnRUZXh0KSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2t5LWZpZWxkLWdyb3VwLWhpbnQtdGV4dFwiXG4gICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnLFxuICAgICAgICAgICdza3ktZm9udC1oaW50LXRleHQtcyc6ICdtb2Rlcm4nXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICB7eyBoaW50VGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNreS1maWVsZC1ncm91cC1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9kaXY+XG48L2ZpZWxkc2V0PlxuIl19","import { NgModule } from '@angular/core';\nimport { SkyFieldGroupComponent } from './field-group.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyFieldGroupModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFieldGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFieldGroupModule, imports: [SkyFieldGroupComponent], exports: [SkyFieldGroupComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFieldGroupModule, imports: [SkyFieldGroupComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFieldGroupModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [SkyFieldGroupComponent],\n exports: [SkyFieldGroupComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ3JvdXAubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWVsZC1ncm91cC9maWVsZC1ncm91cC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNakUsTUFBTSxPQUFPLG1CQUFtQjsrR0FBbkIsbUJBQW1CO2dIQUFuQixtQkFBbUIsWUFIcEIsc0JBQXNCLGFBQ3RCLHNCQUFzQjtnSEFFckIsbUJBQW1CLFlBSHBCLHNCQUFzQjs7NEZBR3JCLG1CQUFtQjtrQkFKL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5RmllbGRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtZ3JvdXAuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1NreUZpZWxkR3JvdXBDb21wb25lbnRdLFxuICBleHBvcnRzOiBbU2t5RmllbGRHcm91cENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUZpZWxkR3JvdXBNb2R1bGUge31cbiJdfQ==","import { ChangeDetectionStrategy, Component, ViewChild, inject, } from '@angular/core';\nimport { SkyIdModule, SkyLogService, SkyTrimModule } from '@skyux/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\n/**\n * Displays a label above the file attachment element. To display a help button\n * beside the label, include a help button element, such as `sky-help-inline`,\n * in the `sky-file-attachment-label` element and a `sky-control-help` CSS class\n * on that help button element.\n * @deprecated Use the `labelText` input on the single file attachment component\n * instead.\n */\nexport class SkyFileAttachmentLabelComponent {\n constructor() {\n inject(SkyLogService).deprecated('SkyFileAttachmentLabelComponent', {\n deprecationMajorVersion: 9,\n replacementRecommendation: 'To add a label to single file attachment, use the `labelText` input ' +\n 'on the `sky-file-attachment` component instead.',\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyFileAttachmentLabelComponent, isStandalone: true, selector: \"sky-file-attachment-label\", viewQueries: [{ propertyName: \"labelContentId\", first: true, predicate: [\"labelContentId\"], descendants: true }], ngImport: i0, template: \"<span class=\\\"sky-control-label\\\"\\n ><span #labelContentId=\\\"skyId\\\" skyId skyTrim><ng-content /></span\\n ><span class=\\\"sky-control-help-container\\\"\\n ><ng-content select=\\\".sky-control-help\\\" /></span\\n></span>\\n\", styles: [\":host-context(.sky-theme-modern) .sky-control-label{color:#686c73;font-size:13px}.sky-theme-modern .sky-control-label{color:#686c73;font-size:13px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: SkyIdModule }, { kind: \"directive\", type: i1.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"ngmodule\", type: SkyTrimModule }, { kind: \"directive\", type: i1.λ4, selector: \"[skyTrim]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentLabelComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [SkyIdModule, SkyTrimModule], selector: 'sky-file-attachment-label', template: \"<span class=\\\"sky-control-label\\\"\\n ><span #labelContentId=\\\"skyId\\\" skyId skyTrim><ng-content /></span\\n ><span class=\\\"sky-control-help-container\\\"\\n ><ng-content select=\\\".sky-control-help\\\" /></span\\n></span>\\n\", styles: [\":host-context(.sky-theme-modern) .sky-control-label{color:#686c73;font-size:13px}.sky-theme-modern .sky-control-label{color:#686c73;font-size:13px}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { labelContentId: [{\n type: ViewChild,\n args: ['labelContentId']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LWxhYmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQtbGFiZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC1sYWJlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRXhFOzs7Ozs7O0dBT0c7QUFRSCxNQUFNLE9BQU8sK0JBQStCO0lBSTFDO1FBQ0UsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsRUFBRTtZQUNsRSx1QkFBdUIsRUFBRSxDQUFDO1lBQzFCLHlCQUF5QixFQUN2QixzRUFBc0U7Z0JBQ3RFLGlEQUFpRDtTQUNwRCxDQUFDLENBQUM7SUFDTCxDQUFDOytHQVhVLCtCQUErQjttR0FBL0IsK0JBQStCLHVNQ3ZCNUMsNk5BS0EsOE1EYVksV0FBVyw0R0FBRSxhQUFhOzs0RkFLekIsK0JBQStCO2tCQVAzQyxTQUFTO3NDQUNTLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLFlBQzNCLDJCQUEyQjs7c0JBS3BDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUsIFNreUxvZ1NlcnZpY2UsIFNreVRyaW1Nb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbi8qKlxuICogRGlzcGxheXMgYSBsYWJlbCBhYm92ZSB0aGUgZmlsZSBhdHRhY2htZW50IGVsZW1lbnQuIFRvIGRpc3BsYXkgYSBoZWxwIGJ1dHRvblxuICogYmVzaWRlIHRoZSBsYWJlbCwgaW5jbHVkZSBhIGhlbHAgYnV0dG9uIGVsZW1lbnQsIHN1Y2ggYXMgYHNreS1oZWxwLWlubGluZWAsXG4gKiBpbiB0aGUgYHNreS1maWxlLWF0dGFjaG1lbnQtbGFiZWxgIGVsZW1lbnQgYW5kIGEgYHNreS1jb250cm9sLWhlbHBgIENTUyBjbGFzc1xuICogb24gdGhhdCBoZWxwIGJ1dHRvbiBlbGVtZW50LlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBvbiB0aGUgc2luZ2xlIGZpbGUgYXR0YWNobWVudCBjb21wb25lbnRcbiAqIGluc3RlYWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1NreUlkTW9kdWxlLCBTa3lUcmltTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdza3ktZmlsZS1hdHRhY2htZW50LWxhYmVsJyxcbiAgc3R5bGVVcmw6ICdmaWxlLWF0dGFjaG1lbnQtbGFiZWwuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1hdHRhY2htZW50LWxhYmVsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RmlsZUF0dGFjaG1lbnRMYWJlbENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2xhYmVsQ29udGVudElkJylcbiAgcHVibGljIGxhYmVsQ29udGVudElkOiB7IGlkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpbmplY3QoU2t5TG9nU2VydmljZSkuZGVwcmVjYXRlZCgnU2t5RmlsZUF0dGFjaG1lbnRMYWJlbENvbXBvbmVudCcsIHtcbiAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA5LFxuICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjpcbiAgICAgICAgJ1RvIGFkZCBhIGxhYmVsIHRvIHNpbmdsZSBmaWxlIGF0dGFjaG1lbnQsIHVzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgJyArXG4gICAgICAgICdvbiB0aGUgYHNreS1maWxlLWF0dGFjaG1lbnRgIGNvbXBvbmVudCBpbnN0ZWFkLicsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIlxuICA+PHNwYW4gI2xhYmVsQ29udGVudElkPVwic2t5SWRcIiBza3lJZCBza3lUcmltPjxuZy1jb250ZW50IC8+PC9zcGFuXG4gID48c3BhbiBjbGFzcz1cInNreS1jb250cm9sLWhlbHAtY29udGFpbmVyXCJcbiAgICA+PG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1jb250cm9sLWhlbHBcIiAvPjwvc3BhblxuPjwvc3Bhbj5cbiJdfQ==","import { formatNumber } from '@angular/common';\nimport { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\n/**\n * @internal\n */\nexport class SkyFileSizePipe {\n #resourcesService;\n #defaultLocale = 'en-US';\n constructor(resourcesService) {\n this.#resourcesService = resourcesService;\n }\n transform(input) {\n let decimalPlaces = 0, dividend = 1, template;\n if (input === null || input === undefined) {\n return '';\n }\n if (typeof input === 'string') {\n input = Number.parseInt(input);\n }\n if (Math.abs(input) === 1) {\n template = 'skyux_file_attachment_file_size_b_singular';\n }\n else if (input < 1024) {\n template = 'skyux_file_attachment_file_size_b_plural';\n }\n else if (input < Math.pow(1024, 2)) {\n template = 'skyux_file_attachment_file_size_kb';\n dividend = 1024;\n }\n else if (input < Math.pow(1024, 3)) {\n template = 'skyux_file_attachment_file_size_mb';\n dividend = Math.pow(1024, 2);\n decimalPlaces = 1;\n }\n else {\n template = 'skyux_file_attachment_file_size_gb';\n dividend = Math.pow(1024, 3);\n decimalPlaces = 1;\n }\n const roundedSize = Math.floor(input / (dividend / Math.pow(10, decimalPlaces))) /\n Math.pow(10, decimalPlaces);\n const formattedSize = formatNumber(roundedSize, this.#defaultLocale, '.0-3');\n return this.#getString(template, formattedSize);\n }\n #getString(key, ...args) {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesService.getStringForLocale({ locale: this.#defaultLocale }, key, ...args);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileSizePipe, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileSizePipe, isStandalone: true, name: \"skyFileSize\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileSizePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyFileSize',\n }]\n }], ctorParameters: () => [{ type: i1.SkyLibResourcesService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9zaGFyZWQvZmlsZS1zaXplLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFHcEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUNqQixpQkFBaUIsQ0FBeUI7SUFDMUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUVsQyxZQUFZLGdCQUF3QztRQUNsRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDNUMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUE4QjtRQUM3QyxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQ25CLFFBQVEsR0FBRyxDQUFDLEVBQ1osUUFBZ0IsQ0FBQztRQUVuQixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixRQUFRLEdBQUcsNENBQTRDLENBQUM7UUFDMUQsQ0FBQzthQUFNLElBQUksS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3hCLFFBQVEsR0FBRywwQ0FBMEMsQ0FBQztRQUN4RCxDQUFDO2FBQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxRQUFRLEdBQUcsb0NBQW9DLENBQUM7WUFDaEQsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxRQUFRLEdBQUcsb0NBQW9DLENBQUM7WUFDaEQsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdCLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLEdBQUcsb0NBQW9DLENBQUM7WUFDaEQsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdCLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFOUIsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUNoQyxXQUFXLEVBQ1gsSUFBSSxDQUFDLGNBQWMsRUFDbkIsTUFBTSxDQUNQLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBZTtRQUN4Qyw2RUFBNkU7UUFDN0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQzlDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFDL0IsR0FBRyxFQUNILEdBQUcsSUFBSSxDQUNSLENBQUM7SUFDSixDQUFDOytHQTFEVSxlQUFlOzZHQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBSDNCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreUZpbGVTaXplJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RmlsZVNpemVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlO1xuICByZWFkb25seSAjZGVmYXVsdExvY2FsZSA9ICdlbi1VUyc7XG5cbiAgY29uc3RydWN0b3IocmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSkge1xuICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UgPSByZXNvdXJjZXNTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIHRyYW5zZm9ybShpbnB1dD86IG51bWJlciB8IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICAgIGxldCBkZWNpbWFsUGxhY2VzID0gMCxcbiAgICAgIGRpdmlkZW5kID0gMSxcbiAgICAgIHRlbXBsYXRlOiBzdHJpbmc7XG5cbiAgICBpZiAoaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnB1dCA9IE51bWJlci5wYXJzZUludChpbnB1dCk7XG4gICAgfVxuXG4gICAgaWYgKE1hdGguYWJzKGlucHV0KSA9PT0gMSkge1xuICAgICAgdGVtcGxhdGUgPSAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9iX3Npbmd1bGFyJztcbiAgICB9IGVsc2UgaWYgKGlucHV0IDwgMTAyNCkge1xuICAgICAgdGVtcGxhdGUgPSAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfc2l6ZV9iX3BsdXJhbCc7XG4gICAgfSBlbHNlIGlmIChpbnB1dCA8IE1hdGgucG93KDEwMjQsIDIpKSB7XG4gICAgICB0ZW1wbGF0ZSA9ICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9zaXplX2tiJztcbiAgICAgIGRpdmlkZW5kID0gMTAyNDtcbiAgICB9IGVsc2UgaWYgKGlucHV0IDwgTWF0aC5wb3coMTAyNCwgMykpIHtcbiAgICAgIHRlbXBsYXRlID0gJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3NpemVfbWInO1xuICAgICAgZGl2aWRlbmQgPSBNYXRoLnBvdygxMDI0LCAyKTtcbiAgICAgIGRlY2ltYWxQbGFjZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZW1wbGF0ZSA9ICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV9zaXplX2diJztcbiAgICAgIGRpdmlkZW5kID0gTWF0aC5wb3coMTAyNCwgMyk7XG4gICAgICBkZWNpbWFsUGxhY2VzID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCByb3VuZGVkU2l6ZSA9XG4gICAgICBNYXRoLmZsb29yKGlucHV0IC8gKGRpdmlkZW5kIC8gTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpKSkgL1xuICAgICAgTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkU2l6ZSA9IGZvcm1hdE51bWJlcihcbiAgICAgIHJvdW5kZWRTaXplLFxuICAgICAgdGhpcy4jZGVmYXVsdExvY2FsZSxcbiAgICAgICcuMC0zJyxcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuI2dldFN0cmluZyh0ZW1wbGF0ZSwgZm9ybWF0dGVkU2l6ZSk7XG4gIH1cblxuICAjZ2V0U3RyaW5nKGtleTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IE5lZWQgdG8gaW1wbGVtZW50IHRoZSBhc3luYyBgZ2V0U3RyaW5nYCBtZXRob2QgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgcmV0dXJuIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nRm9yTG9jYWxlKFxuICAgICAgeyBsb2NhbGU6IHRoaXMuI2RlZmF1bHRMb2NhbGUgfSxcbiAgICAgIGtleSxcbiAgICAgIC4uLmFyZ3MsXG4gICAgKTtcbiAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Joins an array of IDs with a single space.\n * @internal\n */\nexport class SkyFileAttachmentJoinIdsPipe {\n transform(...ids) {\n // Remove undefined values and join with a \" \".\n return ids && ids.filter((id) => id).join(' ');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentJoinIdsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentJoinIdsPipe, isStandalone: true, name: \"skyFileAttachmentJoinIds\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentJoinIdsPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyFileAttachmentJoinIds',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LWpvaW4taWRzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50LWpvaW4taWRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOzs7R0FHRztBQUlILE1BQU0sT0FBTyw0QkFBNEI7SUFDaEMsU0FBUyxDQUFDLEdBQUcsR0FBa0M7UUFDcEQsK0NBQStDO1FBQy9DLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQUpVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUh4QyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSwwQkFBMEI7aUJBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEpvaW5zIGFuIGFycmF5IG9mIElEcyB3aXRoIGEgc2luZ2xlIHNwYWNlLlxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreUZpbGVBdHRhY2htZW50Sm9pbklkcycsXG59KVxuZXhwb3J0IGNsYXNzIFNreUZpbGVBdHRhY2htZW50Sm9pbklkc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybSguLi5pZHM6IChzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKVtdKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gUmVtb3ZlIHVuZGVmaW5lZCB2YWx1ZXMgYW5kIGpvaW4gd2l0aCBhIFwiIFwiLlxuICAgIHJldHVybiBpZHMgJiYgaWRzLmZpbHRlcigoaWQpID0+IGlkKS5qb2luKCcgJyk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyFileAttachmentService {\n checkFiles(files, minFileSize, maxFileSize, acceptedTypes, validateFn) {\n const fileResults = [];\n files.forEach((fileItem) => {\n if (fileItem.file.size < minFileSize) {\n fileItem.errorType = 'minFileSize';\n fileItem.errorParam = minFileSize.toString();\n fileResults.push(fileItem);\n }\n else if (fileItem.file.size > maxFileSize) {\n fileItem.errorType = 'maxFileSize';\n fileItem.errorParam = maxFileSize.toString();\n fileResults.push(fileItem);\n }\n else if (this.fileTypeRejected(fileItem.file.type, acceptedTypes)) {\n fileItem.errorType = 'fileType';\n fileItem.errorParam = this.#getAcceptedTypesList(acceptedTypes);\n fileResults.push(fileItem);\n }\n else if (validateFn) {\n const errorParam = validateFn(fileItem);\n if (errorParam) {\n fileItem.errorType = 'validate';\n fileItem.errorParam = errorParam;\n }\n fileResults.push(fileItem);\n }\n else {\n fileResults.push(fileItem);\n }\n });\n return fileResults;\n }\n /**\n * Returns `true` if a directory is found in the provided `files` parameter.\n */\n hasDirectory(files) {\n for (let index = 0; index < files.length; index++) {\n const file = files.item(index);\n if (file.webkitGetAsEntry &&\n file.webkitGetAsEntry() &&\n file.webkitGetAsEntry().isDirectory) {\n return true;\n }\n }\n return false;\n }\n fileTypeRejected(fileType, acceptedTypes) {\n if (!acceptedTypes) {\n return false;\n }\n if (!fileType) {\n return true;\n }\n const acceptedTypesUpper = acceptedTypes.toUpperCase();\n const typeArray = acceptedTypesUpper.split(',');\n return !this.#fileTypeInArray(typeArray, fileType.toUpperCase());\n }\n #fileTypeInArray(typeArray, fileType) {\n if (typeArray.indexOf(fileType) !== -1) {\n return true;\n }\n for (const type of typeArray) {\n const validSubtype = this.#getMimeSubtype(type);\n if (validSubtype === '*') {\n if (this.#getMimeMainType(type) === this.#getMimeMainType(fileType)) {\n return true;\n }\n }\n }\n return false;\n }\n #getAcceptedTypesList(rawTypes) {\n return rawTypes\n ?.toUpperCase()\n .split(',')\n .map((type) => {\n const subType = this.#getMimeSubtype(type);\n return subType.startsWith('X-') ? subType.substr(2) : subType;\n })\n .join(', ');\n }\n #getMimeSubtype(type) {\n return type.substr(type.indexOf('/') + 1, type.length);\n }\n #getMimeMainType(type) {\n return type.substr(0, type.indexOf('/'));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBQzVCLFVBQVUsQ0FDZixLQUFvQixFQUNwQixXQUFtQixFQUNuQixXQUFtQixFQUNuQixhQUFzQixFQUN0QixVQUE4QjtRQUU5QixNQUFNLFdBQVcsR0FBa0IsRUFBRSxDQUFDO1FBRXRDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN6QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxRQUFRLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztnQkFDbkMsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUM1QyxRQUFRLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztnQkFDbkMsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElB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T0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0MsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDaEUsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBMUdVLHdCQUF3QjttSEFBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lGaWxlSXRlbSB9IGZyb20gJy4uL3NoYXJlZC9maWxlLWl0ZW0nO1xuaW1wb3J0IHsgU2t5RmlsZVZhbGlkYXRlRm4gfSBmcm9tICcuLi9zaGFyZWQvZmlsZS12YWxpZGF0ZS1mdW5jdGlvbic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lGaWxlQXR0YWNobWVudFNlcnZpY2Uge1xuICBwdWJsaWMgY2hlY2tGaWxlcyhcbiAgICBmaWxlczogU2t5RmlsZUl0ZW1bXSxcbiAgICBtaW5GaWxlU2l6ZTogbnVtYmVyLFxuICAgIG1heEZpbGVTaXplOiBudW1iZXIsXG4gICAgYWNjZXB0ZWRUeXBlcz86IHN0cmluZyxcbiAgICB2YWxpZGF0ZUZuPzogU2t5RmlsZVZhbGlkYXRlRm4sXG4gICk6IFNreUZpbGVJdGVtW10ge1xuICAgIGNvbnN0IGZpbGVSZXN1bHRzOiBTa3lGaWxlSXRlbVtdID0gW107XG5cbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlSXRlbSkgPT4ge1xuICAgICAgaWYgKGZpbGVJdGVtLmZpbGUuc2l6ZSA8IG1pbkZpbGVTaXplKSB7XG4gICAgICAgIGZpbGVJdGVtLmVycm9yVHlwZSA9ICdtaW5GaWxlU2l6ZSc7XG4gICAgICAgIGZpbGVJdGVtLmVycm9yUGFyYW0gPSBtaW5GaWxlU2l6ZS50b1N0cmluZygpO1xuICAgICAgICBmaWxlUmVzdWx0cy5wdXNoKGZpbGVJdGVtKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsZUl0ZW0uZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcbiAgICAgICAgZmlsZUl0ZW0uZXJyb3JUeXBlID0gJ21heEZpbGVTaXplJztcbiAgICAgICAgZmlsZUl0ZW0uZXJyb3JQYXJhbSA9IG1heEZpbGVTaXplLnRvU3RyaW5nKCk7XG4gICAgICAgIGZpbGVSZXN1bHRzLnB1c2goZmlsZUl0ZW0pO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGVUeXBlUmVqZWN0ZWQoZmlsZUl0ZW0uZmlsZS50eXBlLCBhY2NlcHRlZFR5cGVzKSkge1xuICAgICAgICBmaWxlSXRlbS5lcnJvclR5cGUgPSAnZmlsZVR5cGUnO1xuICAgICAgICBmaWxlSXRlbS5lcnJvclBhcmFtID0gdGhpcy4jZ2V0QWNjZXB0ZWRUeXBlc0xpc3QoYWNjZXB0ZWRUeXBlcyk7XG4gICAgICAgIGZpbGVSZXN1bHRzLnB1c2goZmlsZUl0ZW0pO1xuICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZUZuKSB7XG4gICAgICAgIGNvbnN0IGVycm9yUGFyYW0gPSB2YWxpZGF0ZUZuKGZpbGVJdGVtKTtcblxuICAgICAgICBpZiAoZXJyb3JQYXJhbSkge1xuICAgICAgICAgIGZpbGVJdGVtLmVycm9yVHlwZSA9ICd2YWxpZGF0ZSc7XG4gICAgICAgICAgZmlsZUl0ZW0uZXJyb3JQYXJhbSA9IGVycm9yUGFyYW07XG4gICAgICAgIH1cbiAgICAgICAgZmlsZVJlc3VsdHMucHVzaChmaWxlSXRlbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWxlUmVzdWx0cy5wdXNoKGZpbGVJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmlsZVJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgYSBkaXJlY3RvcnkgaXMgZm91bmQgaW4gdGhlIHByb3ZpZGVkIGBmaWxlc2AgcGFyYW1ldGVyLlxuICAgKi9cbiAgcHVibGljIGhhc0RpcmVjdG9yeShmaWxlczogRmlsZUxpc3QpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmlsZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBmaWxlOiBhbnkgPSBmaWxlcy5pdGVtKGluZGV4KTtcbiAgICAgIGlmIChcbiAgICAgICAgZmlsZS53ZWJraXRHZXRBc0VudHJ5ICYmXG4gICAgICAgIGZpbGUud2Via2l0R2V0QXNFbnRyeSgpICYmXG4gICAgICAgIGZpbGUud2Via2l0R2V0QXNFbnRyeSgpLmlzRGlyZWN0b3J5XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGZpbGVUeXBlUmVqZWN0ZWQoZmlsZVR5cGU6IHN0cmluZywgYWNjZXB0ZWRUeXBlcz86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYWNjZXB0ZWRUeXBlcykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghZmlsZVR5cGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdGVkVHlwZXNVcHBlciA9IGFjY2VwdGVkVHlwZXMudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCB0eXBlQXJyYXkgPSBhY2NlcHRlZFR5cGVzVXBwZXIuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiAhdGhpcy4jZmlsZVR5cGVJbkFycmF5KHR5cGVBcnJheSwgZmlsZVR5cGUudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAjZmlsZVR5cGVJbkFycmF5KHR5cGVBcnJheTogc3RyaW5nW10sIGZpbGVUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZUFycmF5LmluZGV4T2YoZmlsZVR5cGUpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVBcnJheSkge1xuICAgICAgY29uc3QgdmFsaWRTdWJ0eXBlID0gdGhpcy4jZ2V0TWltZVN1YnR5cGUodHlwZSk7XG5cbiAgICAgIGlmICh2YWxpZFN1YnR5cGUgPT09ICcqJykge1xuICAgICAgICBpZiAodGhpcy4jZ2V0TWltZU1haW5UeXBlKHR5cGUpID09PSB0aGlzLiNnZXRNaW1lTWFpblR5cGUoZmlsZVR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAjZ2V0QWNjZXB0ZWRUeXBlc0xpc3QocmF3VHlwZXM6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHJhd1R5cGVzXG4gICAgICA/LnRvVXBwZXJDYXNlKClcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKCh0eXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlR5cGUgPSB0aGlzLiNnZXRNaW1lU3VidHlwZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIHN1YlR5cGUuc3RhcnRzV2l0aCgnWC0nKSA/IHN1YlR5cGUuc3Vic3RyKDIpIDogc3ViVHlwZTtcbiAgICAgIH0pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG4gICNnZXRNaW1lU3VidHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlLnN1YnN0cih0eXBlLmluZGV4T2YoJy8nKSArIDEsIHR5cGUubGVuZ3RoKTtcbiAgfVxuXG4gICNnZXRNaW1lTWFpblR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZS5zdWJzdHIoMCwgdHlwZS5pbmRleE9mKCcvJykpO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyFileItemService {\n isFile(fileItem) {\n const file = fileItem.file;\n return !!(file &&\n file !== undefined &&\n file !== null &&\n file.size !== undefined &&\n file.size !== null);\n }\n isImage(fileItem) {\n const fileTypeUpper = this.getFileTypeUpper(fileItem);\n const slashIndex = fileTypeUpper.indexOf('/');\n if (slashIndex >= 0) {\n switch (fileTypeUpper.substr(fileTypeUpper.indexOf('/') + 1)) {\n case 'BMP':\n case 'GIF':\n case 'JPEG':\n case 'PNG':\n return true;\n default:\n break;\n }\n }\n return false;\n }\n getFileExtensionUpper(fileItem) {\n let extension = '', name;\n /* istanbul ignore else */\n /* sanity check */\n if (fileItem) {\n const file = fileItem.file;\n if (file) {\n /* istanbul ignore next */\n name = file.name || '';\n /* istanbul ignore next */\n extension = name.substr(name.lastIndexOf('.')) || '';\n }\n else {\n extension = '';\n }\n }\n return extension.toUpperCase();\n }\n getFileTypeUpper(fileItem) {\n let fileType = '';\n /* istanbul ignore else */\n /* sanity check */\n if (fileItem) {\n const file = fileItem.file;\n if (file) {\n fileType = file.type || '';\n }\n else {\n fileType = '';\n }\n }\n return fileType.toUpperCase();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileItemService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileItemService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileItemService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9zaGFyZWQvZmlsZS1pdGVtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3RCLE1BQU0sQ0FBQyxRQUFxQjtRQUNqQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRTNCLE9BQU8sQ0FBQyxDQUFDLENBQ1AsSUFBSTtZQUNKLElBQUksS0FBSyxTQUFTO1lBQ2xCLElBQUksS0FBSyxJQUFJO1lBQ2IsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVNLE9BQU8sQ0FBQyxRQUFxQjtRQUNsQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU5QyxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixRQUFRLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxLQUFLLEtBQUssQ0FBQztnQkFDWCxLQUFLLEtBQUssQ0FBQztnQkFDWCxLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLEtBQUs7b0JBQ1IsT0FBTyxJQUFJLENBQUM7Z0JBQ2Q7b0JBQ0UsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0scUJBQXFCLENBQUMsUUFBcUI7UUFDaEQsSUFBSSxTQUFTLEdBQUcsRUFBRSxFQUNoQixJQUFZLENBQUM7UUFFZiwwQkFBMEI7UUFDMUIsa0JBQWtCO1FBQ2xCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzNCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsMEJBQTBCO2dCQUMxQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLDBCQUEwQjtnQkFDMUIsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxRQUFxQjtRQUMzQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsMEJBQTBCO1FBQzFCLGtCQUFrQjtRQUNsQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7K0dBbkVVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUZpbGVJdGVtIH0gZnJvbSAnLi9maWxlLWl0ZW0nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNreUZpbGVJdGVtU2VydmljZSB7XG4gIHB1YmxpYyBpc0ZpbGUoZmlsZUl0ZW06IFNreUZpbGVJdGVtKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsZSA9IGZpbGVJdGVtLmZpbGU7XG5cbiAgICByZXR1cm4gISEoXG4gICAgICBmaWxlICYmXG4gICAgICBmaWxlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGZpbGUgIT09IG51bGwgJiZcbiAgICAgIGZpbGUuc2l6ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBmaWxlLnNpemUgIT09IG51bGxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzSW1hZ2UoZmlsZUl0ZW06IFNreUZpbGVJdGVtKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsZVR5cGVVcHBlciA9IHRoaXMuZ2V0RmlsZVR5cGVVcHBlcihmaWxlSXRlbSk7XG4gICAgY29uc3Qgc2xhc2hJbmRleCA9IGZpbGVUeXBlVXBwZXIuaW5kZXhPZignLycpO1xuXG4gICAgaWYgKHNsYXNoSW5kZXggPj0gMCkge1xuICAgICAgc3dpdGNoIChmaWxlVHlwZVVwcGVyLnN1YnN0cihmaWxlVHlwZVVwcGVyLmluZGV4T2YoJy8nKSArIDEpKSB7XG4gICAgICAgIGNhc2UgJ0JNUCc6XG4gICAgICAgIGNhc2UgJ0dJRic6XG4gICAgICAgIGNhc2UgJ0pQRUcnOlxuICAgICAgICBjYXNlICdQTkcnOlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWxlRXh0ZW5zaW9uVXBwZXIoZmlsZUl0ZW06IFNreUZpbGVJdGVtKTogc3RyaW5nIHtcbiAgICBsZXQgZXh0ZW5zaW9uID0gJycsXG4gICAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChmaWxlSXRlbSkge1xuICAgICAgY29uc3QgZmlsZSA9IGZpbGVJdGVtLmZpbGU7XG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBuYW1lID0gZmlsZS5uYW1lIHx8ICcnO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBleHRlbnNpb24gPSBuYW1lLnN1YnN0cihuYW1lLmxhc3RJbmRleE9mKCcuJykpIHx8ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gJyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dGVuc2lvbi50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEZpbGVUeXBlVXBwZXIoZmlsZUl0ZW06IFNreUZpbGVJdGVtKTogc3RyaW5nIHtcbiAgICBsZXQgZmlsZVR5cGUgPSAnJztcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChmaWxlSXRlbSkge1xuICAgICAgY29uc3QgZmlsZSA9IGZpbGVJdGVtLmZpbGU7XG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICBmaWxlVHlwZSA9IGZpbGUudHlwZSB8fCAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbGVUeXBlID0gJyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVUeXBlLnRvVXBwZXJDYXNlKCk7XG4gIH1cbn1cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChildren, DOCUMENT, EventEmitter, HostBinding, Input, Optional, Output, Self, ViewChild, booleanAttribute, inject, } from '@angular/core';\nimport { Validators, } from '@angular/forms';\nimport { SkyFileReaderService, SkyIdModule, SkyIdService, SkyLiveAnnouncerService, } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeComponentClassDirective, SkyThemeModule, } from '@skyux/theme';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { SkyFormErrorComponent } from '../../form-error/form-error.component';\nimport { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsComponent } from '../../form-error/form-errors.component';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport { SkyFileAttachmentJoinIdsPipe } from './file-attachment-join-ids.pipe';\nimport { SkyFileAttachmentLabelComponent } from './file-attachment-label.component';\nimport { SkyFileAttachmentService } from './file-attachment.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./file-attachment.service\";\nimport * as i2 from \"../shared/file-item.service\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@skyux/theme\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@skyux/help-inline\";\nimport * as i7 from \"@skyux/icon\";\nimport * as i8 from \"@skyux/core\";\nimport * as i9 from \"@skyux/i18n\";\nconst MAX_FILE_SIZE_DEFAULT = 500000;\nconst MIN_FILE_SIZE_DEFAULT = 0;\n/**\n * Provides an element to attach a single local file.\n */\nexport class SkyFileAttachmentComponent {\n #document;\n #fileReaderSvc;\n /**\n * The maximum size in bytes for valid files.\n * @default 500000\n */\n set maxFileSize(value) {\n this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;\n }\n get maxFileSize() {\n return this.#_maxFileSize;\n }\n /**\n * The minimum size in bytes for valid files.\n * @default 0\n */\n set minFileSize(value) {\n this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;\n }\n get minFileSize() {\n return this.#_minFileSize;\n }\n set value(value) {\n // The null check is needed to address a bug in Angular 4.\n // writeValue is being called twice, first time with a phantom null value\n // See: https://github.com/angular/angular/issues/14988\n const isNewValue = value !== this.value && value !== null;\n if (isNewValue) {\n if (value) {\n this.isImage = this.#fileItemService.isImage(value);\n }\n else {\n this.isImage = false;\n }\n this.#setFileName(value);\n this.#_value = value;\n this.#onChange(value);\n this.#updateFileAttachmentButton();\n }\n }\n get value() {\n return this.#_value;\n }\n get isRequired() {\n return (this.required ||\n (this.ngControl?.control?.hasValidator(Validators.required) ?? false));\n }\n #enterEventTarget;\n #ngUnsubscribe;\n #_maxFileSize;\n #_minFileSize;\n #_value;\n #changeDetector;\n #fileAttachmentService;\n #fileItemService;\n #themeSvc;\n #idSvc;\n #liveAnnouncerSvc;\n #resourcesSvc;\n constructor(changeDetector, fileAttachmentService, fileItemService, ngControl, themeSvc) {\n this.#document = inject(DOCUMENT);\n this.#fileReaderSvc = inject(SkyFileReaderService);\n /**\n * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n */\n this.disabled = false;\n /**\n * Whether to hide `labelText` from view.\n */\n this.labelHidden = false;\n /**\n * Whether the single file attachment is stacked on another form component. When specified,\n * the appropriate vertical spacing is automatically added to the single file attachment.\n */\n this.stacked = false;\n /**\n * Fires when users add or remove files.\n * @deprecated Subscribe to the form control's `valueChanges` event instead.\n */\n this.fileChange = new EventEmitter();\n /**\n * Fires when users select the file name link. Make sure to bind the event.\n * If you do not, the file name link will be a dead link.\n */\n this.fileClick = new EventEmitter();\n this.acceptedOver = false;\n this.hasLabelComponent = false;\n this.rejectedOver = false;\n /**\n * Whether the input is required for form validation.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input element so that forms display an invalid state until the input element\n * is complete.\n * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n */\n this.required = false;\n this.fileName = '';\n this.showFileAttachmentButton = true;\n this.truncatedFileName = '';\n this.isImage = false;\n this.#ngUnsubscribe = new Subject();\n this.#_maxFileSize = MAX_FILE_SIZE_DEFAULT;\n this.#_minFileSize = MIN_FILE_SIZE_DEFAULT;\n this.#idSvc = inject(SkyIdService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.errorId = this.#idSvc.generateId();\n this.labelId = this.#idSvc.generateId();\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n this.#onChange = (_) => {\n return;\n };\n // istanbul ignore next\n this.#onTouched = () => {\n return;\n };\n this.#changeDetector = changeDetector;\n this.#fileAttachmentService = fileAttachmentService;\n this.#fileItemService = fileItemService;\n this.ngControl = ngControl;\n this.#themeSvc = themeSvc;\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n ngOnInit() {\n if (this.#themeSvc) {\n this.#themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((themeSettings) => {\n this.currentThemeName = themeSettings.currentSettings.theme.name;\n this.#updateFileAttachmentButton();\n });\n }\n }\n ngAfterViewInit() {\n // This is needed to address a bug in Angular 7.\n // When a control value is set initially, its value is not represented on the view.\n // See: https://github.com/angular/angular/issues/13792\n // Of note is the parent check which allows us to determine if the form is reactive.\n // Without this check there is a changed before checked error\n /* istanbul ignore else */\n if (this.ngControl) {\n setTimeout(() => {\n this.ngControl?.control?.setValue(this.value, {\n emitEvent: false,\n });\n this.#changeDetector.markForCheck();\n });\n // There is some disconnect between the host control and the form control.\n // This handles that by running change detection whenever the host control\n // has any changes. This is a workaround for this existing bug and will be\n // addressed in a future story that refactors file attachment.\n this.ngControl.control?.events.subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngAfterContentInit() {\n if (this.labelComponents) {\n this.hasLabelComponent = this.labelComponents.length > 0;\n this.#changeDetector.detectChanges();\n // Handles updating classes when label changes\n this.labelComponents.changes\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newLabelComponents) => {\n this.hasLabelComponent = newLabelComponents.length > 0;\n this.#changeDetector.markForCheck();\n });\n }\n }\n onButtonBlur() {\n // Only mark the field as touched on blur when the document still has focus. This\n // prevents validation from occurring while the user has the file dialog open,\n // since focus moves away from the document and onto the file dialog before this\n // event fires.\n if (this.#document.hasFocus()) {\n this.#onTouched();\n }\n }\n onFileCancel() {\n this.#onTouched();\n }\n onDropClicked() {\n /* istanbul ignore else */\n if (this.inputEl) {\n this.inputEl.nativeElement.click();\n }\n }\n fileChangeEvent(fileChangeEvent) {\n /** Set a timeout here to allow the browser to regain context from the system dialog. Without this, error messages do not read out correctly to screen readers. */\n setTimeout(() => {\n this.#handleFiles(fileChangeEvent.target?.files);\n }, 500);\n }\n fileDragEnter(dragEnterEvent) {\n // Save this target to know when the drag event leaves\n this.#enterEventTarget = dragEnterEvent.target;\n dragEnterEvent.stopPropagation();\n dragEnterEvent.preventDefault();\n }\n fileDragOver(dragOverEvent) {\n const transfer = dragOverEvent.dataTransfer;\n dragOverEvent.stopPropagation();\n dragOverEvent.preventDefault();\n if (transfer) {\n if (transfer.items) {\n const files = Array.from(transfer.items);\n for (const file of files) {\n if (file.type &&\n this.#fileAttachmentService.fileTypeRejected(file.type, this.acceptedTypes)) {\n this.rejectedOver = true;\n this.acceptedOver = false;\n return;\n }\n }\n if (files.length > 0 && !this.acceptedOver) {\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n }\n else if (transfer.files) {\n // If the browser does not support DataTransfer.items,\n // defer file-type checking to drop handler.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n }\n }\n fileDrop(dropEvent) {\n dropEvent.stopPropagation();\n dropEvent.preventDefault();\n this.#enterEventTarget = undefined;\n this.rejectedOver = false;\n this.acceptedOver = false;\n if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {\n if (dropEvent.dataTransfer.files.length > 1) {\n return;\n }\n if (this.#fileAttachmentService.hasDirectory(dropEvent.dataTransfer.files)) {\n return;\n }\n this.#handleFiles(dropEvent.dataTransfer.files);\n }\n }\n fileDragLeave(dragLeaveEvent) {\n if (this.#enterEventTarget === dragLeaveEvent.target) {\n this.rejectedOver = false;\n this.acceptedOver = false;\n }\n }\n deleteFileAttachment() {\n const fileName = this.value?.file.name;\n this.value = undefined;\n this.#emitFileChangeEvent(this.value);\n /* istanbul ignore else: safety check */\n if (fileName) {\n this.#announceState('skyux_file_attachment_file_upload_file_removed', fileName);\n }\n this.#changeDetector.markForCheck();\n }\n ngOnDestroy() {\n this.fileChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#onTouched = fn;\n }\n writeValue(value) {\n this.value = value;\n this.#changeDetector.markForCheck();\n }\n /**\n * @internal\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.#changeDetector.markForCheck();\n }\n emitClick() {\n /* istanbul ignore else */\n if (this.value) {\n this.fileClick.emit({\n file: this.value,\n });\n }\n }\n #announceState(resourceString, ...args) {\n this.#resourcesSvc\n .getString(resourceString, ...args)\n .pipe(take(1))\n .subscribe((internationalizedString) => {\n this.#liveAnnouncerSvc.announce(internationalizedString);\n });\n }\n #emitFileChangeEvent(currentFile) {\n if (currentFile && !currentFile.errorType) {\n this.writeValue(currentFile);\n this.fileErrorName = undefined;\n this.fileErrorParam = undefined;\n this.fileErrorValidation = undefined;\n }\n else {\n this.writeValue(undefined);\n // Makes sure value accessor is marked as dirty even if current file is undefined\n this.#onChange(undefined);\n this.fileErrorValidation = { fileError: true };\n this.fileErrorName = currentFile?.errorType;\n this.fileErrorParam = currentFile?.errorParam;\n }\n this.fileChange.emit({\n file: currentFile,\n });\n /* istanbul ignore else */\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n }\n async #loadFile(file) {\n if (file.file) {\n try {\n const previousFileName = this.value?.file.name;\n if (previousFileName) {\n this.#announceState('skyux_file_attachment_file_upload_file_replaced', previousFileName, file.file.name);\n }\n else {\n this.#announceState('skyux_file_attachment_file_upload_file_added', file.file.name);\n }\n file.url = await this.#fileReaderSvc.readAsDataURL(file.file);\n this.#emitFileChangeEvent(file);\n }\n catch {\n this.#emitFileChangeEvent(file);\n }\n }\n }\n #handleFiles(fileList) {\n this.#onTouched();\n if (fileList) {\n const files = [];\n if ('item' in fileList) {\n for (let index = 0; index < fileList.length; index++) {\n files.push({\n file: fileList.item(index),\n });\n }\n }\n const processedFiles = this.#fileAttachmentService.checkFiles(files, this.minFileSize, this.maxFileSize, this.acceptedTypes, this.validateFn);\n for (const file of processedFiles) {\n if (file.errorType) {\n this.#emitFileChangeEvent(file);\n }\n else {\n void this.#loadFile(file);\n }\n }\n }\n }\n #setFileName(file) {\n if (file) {\n const dropName = this.#fileItemService.isFile(file) && file.file.name\n ? file.file.name\n : file.url;\n this.fileName = dropName;\n if (dropName.length > 26) {\n this.truncatedFileName = dropName.slice(0, 26) + '...';\n }\n else {\n this.truncatedFileName = dropName;\n }\n }\n else {\n this.fileName = '';\n this.truncatedFileName = '';\n }\n }\n #updateFileAttachmentButton() {\n this.showFileAttachmentButton = !(this.value && this.currentThemeName === 'modern');\n this.#changeDetector.markForCheck();\n }\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n #onChange;\n // istanbul ignore next\n #onTouched;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyFileAttachmentService }, { token: i2.SkyFileItemService }, { token: i3.NgControl, optional: true, self: true }, { token: i4.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyFileAttachmentComponent, isStandalone: true, selector: \"sky-file-attachment\", inputs: { acceptedTypes: \"acceptedTypes\", acceptedTypesErrorMessage: \"acceptedTypesErrorMessage\", disabled: [\"disabled\", \"disabled\", booleanAttribute], helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", helpKey: \"helpKey\", labelText: \"labelText\", labelHidden: [\"labelHidden\", \"labelHidden\", booleanAttribute], hintText: \"hintText\", maxFileSize: \"maxFileSize\", minFileSize: \"minFileSize\", stacked: [\"stacked\", \"stacked\", booleanAttribute], validateFn: \"validateFn\", required: [\"required\", \"required\", booleanAttribute] }, outputs: { fileChange: \"fileChange\", fileClick: \"fileClick\" }, host: { properties: { \"class.sky-form-field-stacked\": \"this.stacked\" } }, providers: [\n SkyFileAttachmentService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], queries: [{ propertyName: \"labelComponents\", predicate: SkyFileAttachmentLabelComponent }], viewQueries: [{ propertyName: \"inputEl\", first: true, predicate: [\"fileInputRef\"], descendants: true }], hostDirectives: [{ directive: i4.SkyThemeComponentClassDirective }], ngImport: i0, template: \"<div class=\\\"sky-file-attachment-wrapper\\\">\\n <div\\n class=\\\"sky-file-attachment-label-wrapper\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required':\\n !labelText && isRequired && hasLabelComponent\\n }\\\"\\n >\\n @if (labelText) {\\n @if (!labelHidden) {\\n <span\\n class=\\\"sky-control-label\\\"\\n [attr.id]=\\\"labelId\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': isRequired\\n }\\\"\\n >{{ labelText }}</span\\n >\\n }\\n } @else {\\n <ng-content select=\\\"sky-file-attachment-label\\\" />\\n }\\n @if (isRequired && (hasLabelComponent || labelText)) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_file_attachment_required' | skyLibResources\\n }}</span>\\n }\\n @if (labelText && (helpPopoverContent || helpKey)) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [labelText]=\\\"labelText\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </div>\\n <div\\n class=\\\"sky-file-attachment-upload sky-file-attachment sky-file-attachment-target\\\"\\n [ngClass]=\\\"{\\n 'sky-file-attachment-accept': acceptedOver,\\n 'sky-file-attachment-reject': rejectedOver\\n }\\\"\\n (dragenter)=\\\"fileDragEnter($event)\\\"\\n (dragover)=\\\"fileDragOver($event)\\\"\\n (dragleave)=\\\"fileDragLeave($event)\\\"\\n (drop)=\\\"fileDrop($event)\\\"\\n >\\n <div\\n #fileDropDescriptionRef=\\\"skyId\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-screen-reader-only\\\"\\n role=\\\"tooltip\\\"\\n skyId\\n >\\n {{ 'skyux_file_attachment_file_upload_drag_or_click' | skyLibResources }}\\n </div>\\n <input\\n #fileInputRef\\n hidden\\n tabindex=\\\"-1\\\"\\n type=\\\"file\\\"\\n [attr.accept]=\\\"acceptedTypes || null\\\"\\n [disabled]=\\\"disabled\\\"\\n [required]=\\\"isRequired\\\"\\n (change)=\\\"fileChangeEvent($event)\\\"\\n (cancel)=\\\"onFileCancel()\\\"\\n />\\n @if (showFileAttachmentButton) {\\n <button\\n class=\\\"sky-file-attachment-btn sky-btn sky-btn-default\\\"\\n type=\\\"button\\\"\\n [attr.aria-describedby]=\\\"\\n hintText && hintTextEl.id\\n | skyFileAttachmentJoinIds: fileDropDescriptionRef.id\\n \\\"\\n [attr.aria-labelledby]=\\\"\\n attachButtonLabelRef.id\\n | skyFileAttachmentJoinIds\\n : (labelText\\n ? labelId\\n : labelComponents?.get(0)?.labelContentId?.id)\\n \\\"\\n [attr.aria-invalid]=\\\"!!(ngControl?.errors ?? fileErrorValidation)\\\"\\n [attr.aria-errormessage]=\\\"\\n !!(ngControl?.errors ?? fileErrorValidation) ? errorId : undefined\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onDropClicked()\\\"\\n (blur)=\\\"onButtonBlur()\\\"\\n >\\n <sky-icon iconName=\\\"folder-open\\\" />\\n {{\\n value\\n ? ('skyux_file_attachment_button_label_replace_file'\\n | skyLibResources)\\n : ('skyux_file_attachment_button_label_choose_file'\\n | skyLibResources)\\n }}\\n </button>\\n }\\n @if (value && !isImage && currentThemeName === 'modern') {\\n <sky-icon\\n class=\\\"sky-file-attachment-icon\\\"\\n iconName=\\\"document\\\"\\n iconSize=\\\"xl\\\"\\n />\\n }\\n @if (value || currentThemeName === 'default') {\\n <span class=\\\"sky-file-attachment-file-link\\\">\\n @if (value) {\\n <a\\n class=\\\"sky-btn sky-btn-link-inline\\\"\\n [attr.title]=\\\"fileName\\\"\\n (click)=\\\"emitClick()\\\"\\n >\\n {{ truncatedFileName }}\\n </a>\\n } @else {\\n <span class=\\\"sky-file-attachment-none sky-font-deemphasized\\\">\\n {{ 'skyux_file_attachment_label_no_file_chosen' | skyLibResources }}\\n </span>\\n }\\n </span>\\n }\\n\\n @if (value) {\\n <button\\n class=\\\"sky-btn sky-btn-icon-borderless sky-file-attachment-delete\\\"\\n type=\\\"button\\\"\\n [attr.aria-labelledby]=\\\"\\n deleteButtonLabelRef.id\\n | skyFileAttachmentJoinIds\\n : (labelText\\n ? labelId\\n : labelComponents?.get(0)?.labelContentId?.id)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"deleteFileAttachment()\\\"\\n >\\n <sky-icon iconName=\\\"delete\\\" />\\n </button>\\n }\\n </div>\\n\\n @if (value && isImage) {\\n <img\\n class=\\\"sky-file-attachment-preview-img\\\"\\n [alt]=\\\"\\n 'skyux_file_attachment_file_upload_image_preview_alt_text'\\n | skyLibResources\\n \\\"\\n [src]=\\\"value.url\\\"\\n />\\n }\\n</div>\\n<div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-file-attachment-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n</div>\\n\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"ngControl?.errors\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"ngControl?.touched\\\"\\n [dirty]=\\\"ngControl?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n @if (ngControl?.touched) {\\n @if (fileErrorName === 'fileType') {\\n <sky-form-error\\n errorName=\\\"fileType\\\"\\n [errorText]=\\\"\\n acceptedTypesErrorMessage ??\\n 'skyux_file_attachment_file_type_error_label_text'\\n | skyLibResources: fileErrorParam\\n \\\"\\n />\\n } @else if (fileErrorName === 'maxFileSize') {\\n <sky-form-error\\n errorName=\\\"maxFileSize\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_max_file_size_error_label_text'\\n | skyLibResources: (fileErrorParam | skyFileSize)\\n \\\"\\n />\\n } @else if (fileErrorName === 'minFileSize') {\\n <sky-form-error\\n errorName=\\\"minFileSize\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_min_file_size_error_label_text'\\n | skyLibResources: (fileErrorParam | skyFileSize)\\n \\\"\\n />\\n }\\n }\\n</sky-form-errors>\\n\\n<span\\n #attachButtonLabelRef=\\\"skyId\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-screen-reader-only\\\"\\n skyId\\n>\\n {{\\n value\\n ? ('skyux_file_attachment_button_label_replace_file_label'\\n | skyLibResources: fileName)\\n : ('skyux_file_attachment_button_label_choose_file_label'\\n | skyLibResources)\\n }}\\n</span>\\n\\n<span\\n #deleteButtonLabelRef=\\\"skyId\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-screen-reader-only\\\"\\n skyId\\n>\\n {{ 'skyux_file_attachment_file_item_remove' | skyLibResources: fileName }}\\n</span>\\n\", styles: [\".sky-file-attachment-wrapper:not(.sky-theme-modern *){--sky-override-file-attachment-accept-border-color: #72bf44;--sky-override-file-attachment-accept-border-radius: 5px;--sky-override-file-attachment-accept-border-width: 1px;--sky-override-file-attachment-control-label-color: #212327;--sky-override-file-attachment-control-label-font-size: 15px;--sky-override-file-attachment-delete-margin-left: 0;--sky-override-file-attachment-drag-border-style: dashed;--sky-override-file-attachment-drag-box-shadow: none;--sky-override-file-attachment-file-link-padding: 0 5px;--sky-override-file-attachment-invalid-border: 1px solid #ef4044;--sky-override-file-attachment-invalid-box-shadow: 0 0 8px rgba(239, 64, 68, .6);--sky-override-file-attachment-invalid-label-color: #212327;--sky-override-file-attachment-preview-img-border: none;--sky-override-file-attachment-preview-img-box-shadow: 0 0 5px #666;--sky-override-file-attachment-preview-img-margin: 10px;--sky-override-file-attachment-preview-img-width: auto;--sky-override-file-attachment-reject-border-color: #ef4044;--sky-override-file-attachment-reject-border-radius: 5px;--sky-override-file-attachment-reject-border-width: 1px;--sky-override-file-attachment-upload-border: 1px solid transparent;--sky-override-file-attachment-upload-display: block;--sky-override-file-attachment-upload-padding-right: 8px;--sky-override-file-attachment-wrapper-display: inline-block}.sky-file-attachment-wrapper:not(.sky-theme-modern *) .sky-file-attachment-delete{padding:0}:host.sky-cmp-theme-default{--sky-override-file-attachment-hint-text-margin-top: var( --sky-margin-stacked-xs )}:host.sky-form-field-stacked{display:block}:host:not(.sky-form-field-stacked) .sky-file-attachment-wrapper .sky-file-attachment-btn{margin:0}.sky-file-attachment-wrapper{display:var(--sky-override-file-attachment-wrapper-display, flex);flex-wrap:wrap}.sky-file-attachment-label-wrapper{width:100%}.sky-file-attachment-upload{order:2;display:var(--sky-override-file-attachment-upload-display, flex);align-items:flex-start;padding-right:var(--sky-override-file-attachment-upload-padding-right, 0);border:var(--sky-override-file-attachment-upload-border, none)}.sky-file-attachment-upload:has(.sky-file-attachment-icon){align-items:center}.sky-file-attachment-accept{border-color:var(--sky-override-file-attachment-accept-border-color, none);border-style:var(--sky-override-file-attachment-drag-border-style, none);border-width:var(--sky-override-file-attachment-accept-border-width, none);border-radius:var(--sky-override-file-attachment-accept-border-radius, none)}.sky-file-attachment-accept button{box-shadow:var(--sky-override-file-attachment-drag-box-shadow, inset 0 0 0 var(--sky-border-width-input-base) var(--sky-color-border-success))}.sky-file-attachment-reject{border-color:var(--sky-override-file-attachment-reject-border-color, none);border-style:var(--sky-override-file-attachment-drag-border-style, none);border-width:var(--sky-override-file-attachment-reject-border-width, none);border-radius:var(--sky-override-file-attachment-reject-border-radius, none)}.sky-file-attachment-reject button{box-shadow:var(--sky-override-file-attachment-drag-box-shadow, inset 0 0 0 var(--sky-border-width-input-error) var(--sky-color-border-danger))}.sky-file-attachment-btn,.sky-control-label{transition:border-color .15s,box-shadow .15s,color .15s}:host(.ng-invalid.ng-touched) .sky-file-attachment-btn{box-shadow:var(--sky-override-file-attachment-invalid-box-shadow, inset 0 0 0 var(--sky-border-width-input-error) var(--sky-color-border-danger));border:var(--sky-override-file-attachment-invalid-border, none)}:host(.ng-invalid.ng-touched) .sky-control-label{color:var(--sky-override-file-attachment-invalid-label-color, var(--sky-color-text-danger))}.sky-file-attachment-file-link{padding:var(--sky-override-file-attachment-file-link-padding, 0 0 0 var(--sky-space-gap-icon-m));margin:0}.sky-file-attachment-delete{width:auto;height:auto;margin-left:var(--sky-override-file-attachment-delete-margin-left, var(--sky-space-gap-text_action-s))}.sky-file-attachment-preview-img{flex:0;order:1;max-width:25%;width:var(--sky-override-file-attachment-preview-img-width, var(--sky-size-thumbnail-l));height:auto;box-shadow:var(--sky-override-file-attachment-preview-img-box-shadow, var(--sky-elevation-raised-100));border:var(--sky-override-file-attachment-preview-img-border, none);margin:var(--sky-override-file-attachment-preview-img-margin, 0)}.sky-file-attachment-hint-text{margin-top:var(--sky-override-file-attachment-hint-text-margin-top, var(--sky-space-gap-stacked_supplemental-s))}.sky-control-label{color:var(--sky-override-file-attachment-control-label-color, var(--sky-color-text-default));font-size:var(--sky-override-file-attachment-control-label-font-size, var(--sky-font-size-input-label))}.sky-file-attachment-icon{color:var(--sky-color-icon-deemphasized);margin:0 0 0 var(--sky-gap-icon-m);line-height:1}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i5.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: SkyFormErrorComponent, selector: \"sky-form-error\", inputs: [\"errorName\", \"errorText\"] }, { kind: \"component\", type: SkyFormErrorsComponent, selector: \"sky-form-errors\", inputs: [\"errors\", \"labelText\", \"touched\", \"dirty\"] }, { kind: \"ngmodule\", type: SkyFormsResourcesModule }, { kind: \"ngmodule\", type: SkyHelpInlineModule }, { kind: \"component\", type: i6.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i7.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"ngmodule\", type: SkyIdModule }, { kind: \"directive\", type: i8.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"directive\", type: i4.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"directive\", type: SkyThemeComponentClassDirective, selector: \"[skyThemeClass]\" }, { kind: \"pipe\", type: SkyFileAttachmentJoinIdsPipe, name: \"skyFileAttachmentJoinIds\" }, { kind: \"pipe\", type: SkyFileSizePipe, name: \"skyFileSize\" }, { kind: \"pipe\", type: i9.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyFileAttachmentJoinIdsPipe,\n SkyFileSizePipe,\n SkyFormErrorComponent,\n SkyFormErrorsComponent,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyThemeModule,\n SkyThemeComponentClassDirective,\n ], providers: [\n SkyFileAttachmentService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], hostDirectives: [SkyThemeComponentClassDirective], selector: 'sky-file-attachment', template: \"<div class=\\\"sky-file-attachment-wrapper\\\">\\n <div\\n class=\\\"sky-file-attachment-label-wrapper\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required':\\n !labelText && isRequired && hasLabelComponent\\n }\\\"\\n >\\n @if (labelText) {\\n @if (!labelHidden) {\\n <span\\n class=\\\"sky-control-label\\\"\\n [attr.id]=\\\"labelId\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': isRequired\\n }\\\"\\n >{{ labelText }}</span\\n >\\n }\\n } @else {\\n <ng-content select=\\\"sky-file-attachment-label\\\" />\\n }\\n @if (isRequired && (hasLabelComponent || labelText)) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_file_attachment_required' | skyLibResources\\n }}</span>\\n }\\n @if (labelText && (helpPopoverContent || helpKey)) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [labelText]=\\\"labelText\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </div>\\n <div\\n class=\\\"sky-file-attachment-upload sky-file-attachment sky-file-attachment-target\\\"\\n [ngClass]=\\\"{\\n 'sky-file-attachment-accept': acceptedOver,\\n 'sky-file-attachment-reject': rejectedOver\\n }\\\"\\n (dragenter)=\\\"fileDragEnter($event)\\\"\\n (dragover)=\\\"fileDragOver($event)\\\"\\n (dragleave)=\\\"fileDragLeave($event)\\\"\\n (drop)=\\\"fileDrop($event)\\\"\\n >\\n <div\\n #fileDropDescriptionRef=\\\"skyId\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-screen-reader-only\\\"\\n role=\\\"tooltip\\\"\\n skyId\\n >\\n {{ 'skyux_file_attachment_file_upload_drag_or_click' | skyLibResources }}\\n </div>\\n <input\\n #fileInputRef\\n hidden\\n tabindex=\\\"-1\\\"\\n type=\\\"file\\\"\\n [attr.accept]=\\\"acceptedTypes || null\\\"\\n [disabled]=\\\"disabled\\\"\\n [required]=\\\"isRequired\\\"\\n (change)=\\\"fileChangeEvent($event)\\\"\\n (cancel)=\\\"onFileCancel()\\\"\\n />\\n @if (showFileAttachmentButton) {\\n <button\\n class=\\\"sky-file-attachment-btn sky-btn sky-btn-default\\\"\\n type=\\\"button\\\"\\n [attr.aria-describedby]=\\\"\\n hintText && hintTextEl.id\\n | skyFileAttachmentJoinIds: fileDropDescriptionRef.id\\n \\\"\\n [attr.aria-labelledby]=\\\"\\n attachButtonLabelRef.id\\n | skyFileAttachmentJoinIds\\n : (labelText\\n ? labelId\\n : labelComponents?.get(0)?.labelContentId?.id)\\n \\\"\\n [attr.aria-invalid]=\\\"!!(ngControl?.errors ?? fileErrorValidation)\\\"\\n [attr.aria-errormessage]=\\\"\\n !!(ngControl?.errors ?? fileErrorValidation) ? errorId : undefined\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onDropClicked()\\\"\\n (blur)=\\\"onButtonBlur()\\\"\\n >\\n <sky-icon iconName=\\\"folder-open\\\" />\\n {{\\n value\\n ? ('skyux_file_attachment_button_label_replace_file'\\n | skyLibResources)\\n : ('skyux_file_attachment_button_label_choose_file'\\n | skyLibResources)\\n }}\\n </button>\\n }\\n @if (value && !isImage && currentThemeName === 'modern') {\\n <sky-icon\\n class=\\\"sky-file-attachment-icon\\\"\\n iconName=\\\"document\\\"\\n iconSize=\\\"xl\\\"\\n />\\n }\\n @if (value || currentThemeName === 'default') {\\n <span class=\\\"sky-file-attachment-file-link\\\">\\n @if (value) {\\n <a\\n class=\\\"sky-btn sky-btn-link-inline\\\"\\n [attr.title]=\\\"fileName\\\"\\n (click)=\\\"emitClick()\\\"\\n >\\n {{ truncatedFileName }}\\n </a>\\n } @else {\\n <span class=\\\"sky-file-attachment-none sky-font-deemphasized\\\">\\n {{ 'skyux_file_attachment_label_no_file_chosen' | skyLibResources }}\\n </span>\\n }\\n </span>\\n }\\n\\n @if (value) {\\n <button\\n class=\\\"sky-btn sky-btn-icon-borderless sky-file-attachment-delete\\\"\\n type=\\\"button\\\"\\n [attr.aria-labelledby]=\\\"\\n deleteButtonLabelRef.id\\n | skyFileAttachmentJoinIds\\n : (labelText\\n ? labelId\\n : labelComponents?.get(0)?.labelContentId?.id)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"deleteFileAttachment()\\\"\\n >\\n <sky-icon iconName=\\\"delete\\\" />\\n </button>\\n }\\n </div>\\n\\n @if (value && isImage) {\\n <img\\n class=\\\"sky-file-attachment-preview-img\\\"\\n [alt]=\\\"\\n 'skyux_file_attachment_file_upload_image_preview_alt_text'\\n | skyLibResources\\n \\\"\\n [src]=\\\"value.url\\\"\\n />\\n }\\n</div>\\n<div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-file-attachment-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n</div>\\n\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"ngControl?.errors\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"ngControl?.touched\\\"\\n [dirty]=\\\"ngControl?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n @if (ngControl?.touched) {\\n @if (fileErrorName === 'fileType') {\\n <sky-form-error\\n errorName=\\\"fileType\\\"\\n [errorText]=\\\"\\n acceptedTypesErrorMessage ??\\n 'skyux_file_attachment_file_type_error_label_text'\\n | skyLibResources: fileErrorParam\\n \\\"\\n />\\n } @else if (fileErrorName === 'maxFileSize') {\\n <sky-form-error\\n errorName=\\\"maxFileSize\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_max_file_size_error_label_text'\\n | skyLibResources: (fileErrorParam | skyFileSize)\\n \\\"\\n />\\n } @else if (fileErrorName === 'minFileSize') {\\n <sky-form-error\\n errorName=\\\"minFileSize\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_min_file_size_error_label_text'\\n | skyLibResources: (fileErrorParam | skyFileSize)\\n \\\"\\n />\\n }\\n }\\n</sky-form-errors>\\n\\n<span\\n #attachButtonLabelRef=\\\"skyId\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-screen-reader-only\\\"\\n skyId\\n>\\n {{\\n value\\n ? ('skyux_file_attachment_button_label_replace_file_label'\\n | skyLibResources: fileName)\\n : ('skyux_file_attachment_button_label_choose_file_label'\\n | skyLibResources)\\n }}\\n</span>\\n\\n<span\\n #deleteButtonLabelRef=\\\"skyId\\\"\\n aria-hidden=\\\"true\\\"\\n class=\\\"sky-screen-reader-only\\\"\\n skyId\\n>\\n {{ 'skyux_file_attachment_file_item_remove' | skyLibResources: fileName }}\\n</span>\\n\", styles: [\".sky-file-attachment-wrapper:not(.sky-theme-modern *){--sky-override-file-attachment-accept-border-color: #72bf44;--sky-override-file-attachment-accept-border-radius: 5px;--sky-override-file-attachment-accept-border-width: 1px;--sky-override-file-attachment-control-label-color: #212327;--sky-override-file-attachment-control-label-font-size: 15px;--sky-override-file-attachment-delete-margin-left: 0;--sky-override-file-attachment-drag-border-style: dashed;--sky-override-file-attachment-drag-box-shadow: none;--sky-override-file-attachment-file-link-padding: 0 5px;--sky-override-file-attachment-invalid-border: 1px solid #ef4044;--sky-override-file-attachment-invalid-box-shadow: 0 0 8px rgba(239, 64, 68, .6);--sky-override-file-attachment-invalid-label-color: #212327;--sky-override-file-attachment-preview-img-border: none;--sky-override-file-attachment-preview-img-box-shadow: 0 0 5px #666;--sky-override-file-attachment-preview-img-margin: 10px;--sky-override-file-attachment-preview-img-width: auto;--sky-override-file-attachment-reject-border-color: #ef4044;--sky-override-file-attachment-reject-border-radius: 5px;--sky-override-file-attachment-reject-border-width: 1px;--sky-override-file-attachment-upload-border: 1px solid transparent;--sky-override-file-attachment-upload-display: block;--sky-override-file-attachment-upload-padding-right: 8px;--sky-override-file-attachment-wrapper-display: inline-block}.sky-file-attachment-wrapper:not(.sky-theme-modern *) .sky-file-attachment-delete{padding:0}:host.sky-cmp-theme-default{--sky-override-file-attachment-hint-text-margin-top: var( --sky-margin-stacked-xs )}:host.sky-form-field-stacked{display:block}:host:not(.sky-form-field-stacked) .sky-file-attachment-wrapper .sky-file-attachment-btn{margin:0}.sky-file-attachment-wrapper{display:var(--sky-override-file-attachment-wrapper-display, flex);flex-wrap:wrap}.sky-file-attachment-label-wrapper{width:100%}.sky-file-attachment-upload{order:2;display:var(--sky-override-file-attachment-upload-display, flex);align-items:flex-start;padding-right:var(--sky-override-file-attachment-upload-padding-right, 0);border:var(--sky-override-file-attachment-upload-border, none)}.sky-file-attachment-upload:has(.sky-file-attachment-icon){align-items:center}.sky-file-attachment-accept{border-color:var(--sky-override-file-attachment-accept-border-color, none);border-style:var(--sky-override-file-attachment-drag-border-style, none);border-width:var(--sky-override-file-attachment-accept-border-width, none);border-radius:var(--sky-override-file-attachment-accept-border-radius, none)}.sky-file-attachment-accept button{box-shadow:var(--sky-override-file-attachment-drag-box-shadow, inset 0 0 0 var(--sky-border-width-input-base) var(--sky-color-border-success))}.sky-file-attachment-reject{border-color:var(--sky-override-file-attachment-reject-border-color, none);border-style:var(--sky-override-file-attachment-drag-border-style, none);border-width:var(--sky-override-file-attachment-reject-border-width, none);border-radius:var(--sky-override-file-attachment-reject-border-radius, none)}.sky-file-attachment-reject button{box-shadow:var(--sky-override-file-attachment-drag-box-shadow, inset 0 0 0 var(--sky-border-width-input-error) var(--sky-color-border-danger))}.sky-file-attachment-btn,.sky-control-label{transition:border-color .15s,box-shadow .15s,color .15s}:host(.ng-invalid.ng-touched) .sky-file-attachment-btn{box-shadow:var(--sky-override-file-attachment-invalid-box-shadow, inset 0 0 0 var(--sky-border-width-input-error) var(--sky-color-border-danger));border:var(--sky-override-file-attachment-invalid-border, none)}:host(.ng-invalid.ng-touched) .sky-control-label{color:var(--sky-override-file-attachment-invalid-label-color, var(--sky-color-text-danger))}.sky-file-attachment-file-link{padding:var(--sky-override-file-attachment-file-link-padding, 0 0 0 var(--sky-space-gap-icon-m));margin:0}.sky-file-attachment-delete{width:auto;height:auto;margin-left:var(--sky-override-file-attachment-delete-margin-left, var(--sky-space-gap-text_action-s))}.sky-file-attachment-preview-img{flex:0;order:1;max-width:25%;width:var(--sky-override-file-attachment-preview-img-width, var(--sky-size-thumbnail-l));height:auto;box-shadow:var(--sky-override-file-attachment-preview-img-box-shadow, var(--sky-elevation-raised-100));border:var(--sky-override-file-attachment-preview-img-border, none);margin:var(--sky-override-file-attachment-preview-img-margin, 0)}.sky-file-attachment-hint-text{margin-top:var(--sky-override-file-attachment-hint-text-margin-top, var(--sky-space-gap-stacked_supplemental-s))}.sky-control-label{color:var(--sky-override-file-attachment-control-label-color, var(--sky-color-text-default));font-size:var(--sky-override-file-attachment-control-label-font-size, var(--sky-font-size-input-label))}.sky-file-attachment-icon{color:var(--sky-color-icon-deemphasized);margin:0 0 0 var(--sky-gap-icon-m);line-height:1}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyFileAttachmentService }, { type: i2.SkyFileItemService }, { type: i3.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: i4.SkyThemeService, decorators: [{\n type: Optional\n }] }], propDecorators: { acceptedTypes: [{\n type: Input\n }], acceptedTypesErrorMessage: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], helpKey: [{\n type: Input\n }], labelText: [{\n type: Input\n }], labelHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hintText: [{\n type: Input\n }], maxFileSize: [{\n type: Input\n }], minFileSize: [{\n type: Input\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }, {\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], validateFn: [{\n type: Input\n }], fileChange: [{\n type: Output\n }], fileClick: [{\n type: Output\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], inputEl: [{\n type: ViewChild,\n args: ['fileInputRef']\n }], labelComponents: [{\n type: ContentChildren,\n args: [SkyFileAttachmentLabelComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFFUixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFFSixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsWUFBWSxFQUNaLHVCQUF1QixHQUN4QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGNBQWMsR0FFZixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1B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LDhCQUE4Qjs7c0JBUTFDLEtBQUs7O3NCQU9MLE1BQU07O3NCQU9OLE1BQU07O3NCQWdCTixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFtQ3JDLFNBQVM7dUJBQUMsY0FBYzs7c0JBR3hCLGVBQWU7dUJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOZ0NvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIFNreUZpbGVSZWFkZXJTZXJ2aWNlLFxuICBTa3lJZE1vZHVsZSxcbiAgU2t5SWRTZXJ2aWNlLFxuICBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pY29uJztcbmltcG9ydCB7XG4gIFNreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmUsXG4gIFNreVRoZW1lTW9kdWxlLFxuICBTa3lUaGVtZVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uLy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2t5LWZvcm1zLXJlc291cmNlcy5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RmlsZUl0ZW0gfSBmcm9tICcuLi9zaGFyZWQvZmlsZS1pdGVtJztcbmltcG9ydCB7IFNreUZpbGVJdGVtRXJyb3JUeXBlIH0gZnJvbSAnLi4vc2hhcmVkL2ZpbGUtaXRlbS1lcnJvci10eXBlJztcbmltcG9ydCB7IFNreUZpbGVJdGVtU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9maWxlLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGaWxlU2l6ZVBpcGUgfSBmcm9tICcuLi9zaGFyZWQvZmlsZS1zaXplLnBpcGUnO1xuaW1wb3J0IHsgU2t5RmlsZVZhbGlkYXRlRm4gfSBmcm9tICcuLi9zaGFyZWQvZmlsZS12YWxpZGF0ZS1mdW5jdGlvbic7XG5cbmltcG9ydCB7IFNreUZpbGVBdHRhY2htZW50Q2hhbmdlIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQtY2hhbmdlJztcbmltcG9ydCB7IFNreUZpbGVBdHRhY2htZW50Q2xpY2sgfSBmcm9tICcuL2ZpbGUtYXR0YWNobWVudC1jbGljayc7XG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudEpvaW5JZHNQaXBlIH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQtam9pbi1pZHMucGlwZSc7XG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9maWxlLWF0dGFjaG1lbnQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNreUZpbGVBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4vZmlsZS1hdHRhY2htZW50LnNlcnZpY2UnO1xuXG5jb25zdCBNQVhfRklMRV9TSVpFX0RFRkFVTFQgPSA1MDAwMDA7XG5jb25zdCBNSU5fRklMRV9TSVpFX0RFRkFVTFQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIGVsZW1lbnQgdG8gYXR0YWNoIGEgc2luZ2xlIGxvY2FsIGZpbGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTa3lGaWxlQXR0YWNobWVudEpvaW5JZHNQaXBlLFxuICAgIFNreUZpbGVTaXplUGlwZSxcbiAgICBTa3lGb3JtRXJyb3JDb21wb25lbnQsXG4gICAgU2t5Rm9ybUVycm9yc0NvbXBvbmVudCxcbiAgICBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gICAgU2t5VGhlbWVDb21wb25lbnRDbGFzc0RpcmVjdGl2ZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbU2t5VGhlbWVDb21wb25lbnRDbGFzc0RpcmVjdGl2ZV0sXG4gIHNlbGVjdG9yOiAnc2t5LWZpbGUtYXR0YWNobWVudCcsXG4gIHN0eWxlVXJsOiAnLi9maWxlLWF0dGFjaG1lbnQuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1hdHRhY2htZW50LmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RmlsZUF0dGFjaG1lbnRDb21wb25lbnRcbiAgaW1wbGVtZW50c1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95XG57XG4gIHJlYWRvbmx5ICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgcmVhZG9ubHkgI2ZpbGVSZWFkZXJTdmMgPSBpbmplY3QoU2t5RmlsZVJlYWRlclNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWEtZGVsaW1pdGVkIHN0cmluZyBsaXRlcmFsIG9mIE1JTUUgdHlwZXMgdGhhdCB1c2VycyBjYW4gYXR0YWNoLlxuICAgKiBCeSBkZWZhdWx0LCBhbGwgZmlsZSB0eXBlcyBhcmUgYWxsb3dlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRlZFR5cGVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIGEgZmlsZSBkb2Vzbid0IG1hdGNoIHRoZSBhY2NlcHRlZCB0eXBlcy5cbiAgICogVGhpcyByZXBsYWNlcyBhIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSB0aGF0IGxpc3RzIGFsbCBhY2NlcHRlZCB0eXBlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRlZFR5cGVzRXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgaW5wdXQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIHNpbmdsZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIHNpbmdsZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBmaWxlIGF0dGFjaG1lbnQncyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIGBsYWJlbFRleHRgIGZyb20gdmlldy5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCA1MDAwMDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4RmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tYXhGaWxlU2l6ZSA9IHZhbHVlID8/IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21heEZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWluRmlsZVNpemUgPSB2YWx1ZSA/PyBNSU5fRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbkZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19taW5GaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzaW5nbGUgZmlsZSBhdHRhY2htZW50IGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsXG4gICAqIHRoZSBhcHByb3ByaWF0ZSB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHNpbmdsZSBmaWxlIGF0dGFjaG1lbnQuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1maWVsZC1zdGFja2VkJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9uLiBUaGlzIHZhbGlkYXRpb24gcnVucyBhbG9uZ3NpZGUgdGhlIGludGVybmFsXG4gICAqIGZpbGUgdmFsaWRhdGlvbi4gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIGBTa3lGaWxlSXRlbWAgb2JqZWN0IGFzIGEgcGFyYW1ldGVyLlxuICAgKiBAZGVwcmVjYXRlZCBBZGQgYSBjdXN0b20gQW5ndWxhciBgVmFsaWRhdG9yYCBmdW5jdGlvbiB0byB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHZhbGlkYXRlRm46IFNreUZpbGVWYWxpZGF0ZUZuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGFkZCBvciByZW1vdmUgZmlsZXMuXG4gICAqIEBkZXByZWNhdGVkIFN1YnNjcmliZSB0byB0aGUgZm9ybSBjb250cm9sJ3MgYHZhbHVlQ2hhbmdlc2AgZXZlbnQgaW5zdGVhZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5RmlsZUF0dGFjaG1lbnRDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBmaWxlIG5hbWUgbGluay4gTWFrZSBzdXJlIHRvIGJpbmQgdGhlIGV2ZW50LlxuICAgKiBJZiB5b3UgZG8gbm90LCB0aGUgZmlsZSBuYW1lIGxpbmsgd2lsbCBiZSBhIGRlYWQgbGluay5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lGaWxlQXR0YWNobWVudENsaWNrPigpO1xuXG4gIHB1YmxpYyBhY2NlcHRlZE92ZXIgPSBmYWxzZTtcblxuICBwdWJsaWMgaGFzTGFiZWxDb21wb25lbnQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVqZWN0ZWRPdmVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIHJlcXVpcmVkIGZvciBmb3JtIHZhbGlkYXRpb24uXG4gICAqIFdoZW4geW91IHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBhZGRzIGBhcmlhLXJlcXVpcmVkYCBhbmQgYHJlcXVpcmVkYFxuICAgKiBhdHRyaWJ1dGVzIHRvIHRoZSBpbnB1dCBlbGVtZW50IHNvIHRoYXQgZm9ybXMgZGlzcGxheSBhbiBpbnZhbGlkIHN0YXRlIHVudGlsIHRoZSBpbnB1dCBlbGVtZW50XG4gICAqIGlzIGNvbXBsZXRlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtcmVxdWlyZWRgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLXJlcXVpcmVkKS5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBTa3lGaWxlSXRlbSB8IHVuZGVmaW5lZCB8IG51bGwpIHtcbiAgICAvLyBUaGUgbnVsbCBjaGVjayBpcyBuZWVkZWQgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBBbmd1bGFyIDQuXG4gICAgLy8gd3JpdGVWYWx1ZSBpcyBiZWluZyBjYWxsZWQgdHdpY2UsIGZpcnN0IHRpbWUgd2l0aCBhIHBoYW50b20gbnVsbCB2YWx1ZVxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTQ5ODhcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gdmFsdWUgIT09IHRoaXMudmFsdWUgJiYgdmFsdWUgIT09IG51bGw7XG5cbiAgICBpZiAoaXNOZXdWYWx1ZSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IHRoaXMuI2ZpbGVJdGVtU2VydmljZS5pc0ltYWdlKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNJbWFnZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy4jc2V0RmlsZU5hbWUodmFsdWUpO1xuXG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuI3VwZGF0ZUZpbGVBdHRhY2htZW50QnV0dG9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBTa3lGaWxlSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50VGhlbWVOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGZpbGVOYW1lID0gJyc7XG5cbiAgcHVibGljIHNob3dGaWxlQXR0YWNobWVudEJ1dHRvbiA9IHRydWU7XG5cbiAgcHVibGljIHRydW5jYXRlZEZpbGVOYW1lID0gJyc7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0UmVmJylcbiAgcHVibGljIGlucHV0RWw6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lGaWxlQXR0YWNobWVudExhYmVsQ29tcG9uZW50KVxuICBwdWJsaWMgbGFiZWxDb21wb25lbnRzOlxuICAgIHwgUXVlcnlMaXN0PFNreUZpbGVBdHRhY2htZW50TGFiZWxDb21wb25lbnQ+XG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGlzSW1hZ2UgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgZ2V0IGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucmVxdWlyZWQgfHxcbiAgICAgICh0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlKVxuICAgICk7XG4gIH1cblxuICAjZW50ZXJFdmVudFRhcmdldDogRXZlbnRUYXJnZXQgfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX21heEZpbGVTaXplID0gTUFYX0ZJTEVfU0laRV9ERUZBVUxUO1xuXG4gICNfbWluRmlsZVNpemUgPSBNSU5fRklMRV9TSVpFX0RFRkFVTFQ7XG5cbiAgI192YWx1ZTogU2t5RmlsZUl0ZW0gfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2ZpbGVBdHRhY2htZW50U2VydmljZTogU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlO1xuICAjZmlsZUl0ZW1TZXJ2aWNlOiBTa3lGaWxlSXRlbVNlcnZpY2U7XG4gICN0aGVtZVN2YzogU2t5VGhlbWVTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlclN2YyA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIG5nQ29udHJvbDogTmdDb250cm9sIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgZXJyb3JJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHJvdGVjdGVkIGxhYmVsSWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG5cbiAgcHJvdGVjdGVkIGZpbGVFcnJvck5hbWU6IFNreUZpbGVJdGVtRXJyb3JUeXBlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgZmlsZUVycm9yUGFyYW06IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIGZpbGVFcnJvclZhbGlkYXRpb246IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBmaWxlQXR0YWNobWVudFNlcnZpY2U6IFNreUZpbGVBdHRhY2htZW50U2VydmljZSxcbiAgICBmaWxlSXRlbVNlcnZpY2U6IFNreUZpbGVJdGVtU2VydmljZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbD86IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UgPSBmaWxlQXR0YWNobWVudFNlcnZpY2U7XG4gICAgdGhpcy4jZmlsZUl0ZW1TZXJ2aWNlID0gZmlsZUl0ZW1TZXJ2aWNlO1xuICAgIHRoaXMubmdDb250cm9sID0gbmdDb250cm9sO1xuICAgIHRoaXMuI3RoZW1lU3ZjID0gdGhlbWVTdmM7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jdGhlbWVTdmMpIHtcbiAgICAgIHRoaXMuI3RoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGhlbWVTZXR0aW5ncykgPT4ge1xuICAgICAgICAgIHRoaXMuY3VycmVudFRoZW1lTmFtZSA9IHRoZW1lU2V0dGluZ3MuY3VycmVudFNldHRpbmdzLnRoZW1lLm5hbWU7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlRmlsZUF0dGFjaG1lbnRCdXR0b24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBhZGRyZXNzIGEgYnVnIGluIEFuZ3VsYXIgNy5cbiAgICAvLyBXaGVuIGEgY29udHJvbCB2YWx1ZSBpcyBzZXQgaW5pdGlhbGx5LCBpdHMgdmFsdWUgaXMgbm90IHJlcHJlc2VudGVkIG9uIHRoZSB2aWV3LlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM3OTJcbiAgICAvLyBPZiBub3RlIGlzIHRoZSBwYXJlbnQgY2hlY2sgd2hpY2ggYWxsb3dzIHVzIHRvIGRldGVybWluZSBpZiB0aGUgZm9ybSBpcyByZWFjdGl2ZS5cbiAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2sgdGhlcmUgaXMgYSBjaGFuZ2VkIGJlZm9yZSBjaGVja2VkIGVycm9yXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodGhpcy52YWx1ZSwge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUaGVyZSBpcyBzb21lIGRpc2Nvbm5lY3QgYmV0d2VlbiB0aGUgaG9zdCBjb250cm9sIGFuZCB0aGUgZm9ybSBjb250cm9sLlxuICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoYXQgYnkgcnVubmluZyBjaGFuZ2UgZGV0ZWN0aW9uIHdoZW5ldmVyIHRoZSBob3N0IGNvbnRyb2xcbiAgICAgIC8vIGhhcyBhbnkgY2hhbmdlcy4gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoaXMgZXhpc3RpbmcgYnVnIGFuZCB3aWxsIGJlXG4gICAgICAvLyBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgc3RvcnkgdGhhdCByZWZhY3RvcnMgZmlsZSBhdHRhY2htZW50LlxuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uZXZlbnRzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYWJlbENvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMuaGFzTGFiZWxDb21wb25lbnQgPSB0aGlzLmxhYmVsQ29tcG9uZW50cy5sZW5ndGggPiAwO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBIYW5kbGVzIHVwZGF0aW5nIGNsYXNzZXMgd2hlbiBsYWJlbCBjaGFuZ2VzXG4gICAgICB0aGlzLmxhYmVsQ29tcG9uZW50cy5jaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAobmV3TGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8U2t5RmlsZUF0dGFjaG1lbnRMYWJlbENvbXBvbmVudD4pID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFzTGFiZWxDb21wb25lbnQgPSBuZXdMYWJlbENvbXBvbmVudHMubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQnV0dG9uQmx1cigpOiB2b2lkIHtcbiAgICAvLyBPbmx5IG1hcmsgdGhlIGZpZWxkIGFzIHRvdWNoZWQgb24gYmx1ciB3aGVuIHRoZSBkb2N1bWVudCBzdGlsbCBoYXMgZm9jdXMuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyB2YWxpZGF0aW9uIGZyb20gb2NjdXJyaW5nIHdoaWxlIHRoZSB1c2VyIGhhcyB0aGUgZmlsZSBkaWFsb2cgb3BlbixcbiAgICAvLyBzaW5jZSBmb2N1cyBtb3ZlcyBhd2F5IGZyb20gdGhlIGRvY3VtZW50IGFuZCBvbnRvIHRoZSBmaWxlIGRpYWxvZyBiZWZvcmUgdGhpc1xuICAgIC8vIGV2ZW50IGZpcmVzLlxuICAgIGlmICh0aGlzLiNkb2N1bWVudC5oYXNGb2N1cygpKSB7XG4gICAgICB0aGlzLiNvblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GaWxlQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIG9uRHJvcENsaWNrZWQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlQ2hhbmdlRXZlbnQoZmlsZUNoYW5nZUV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIC8qKiBTZXQgYSB0aW1lb3V0IGhlcmUgdG8gYWxsb3cgdGhlIGJyb3dzZXIgdG8gcmVnYWluIGNvbnRleHQgZnJvbSB0aGUgc3lzdGVtIGRpYWxvZy4gV2l0aG91dCB0aGlzLCBlcnJvciBtZXNzYWdlcyBkbyBub3QgcmVhZCBvdXQgY29ycmVjdGx5IHRvIHNjcmVlbiByZWFkZXJzLiAqL1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jaGFuZGxlRmlsZXMoXG4gICAgICAgIChmaWxlQ2hhbmdlRXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQpPy5maWxlcyxcbiAgICAgICk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJhZ0VudGVyKGRyYWdFbnRlckV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBTYXZlIHRoaXMgdGFyZ2V0IHRvIGtub3cgd2hlbiB0aGUgZHJhZyBldmVudCBsZWF2ZXNcbiAgICB0aGlzLiNlbnRlckV2ZW50VGFyZ2V0ID0gZHJhZ0VudGVyRXZlbnQudGFyZ2V0O1xuICAgIGRyYWdFbnRlckV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRyYWdFbnRlckV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdPdmVyKGRyYWdPdmVyRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRyYW5zZmVyID0gZHJhZ092ZXJFdmVudC5kYXRhVHJhbnNmZXI7XG5cbiAgICBkcmFnT3ZlckV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRyYWdPdmVyRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICh0cmFuc2Zlcikge1xuICAgICAgaWYgKHRyYW5zZmVyLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbSh0cmFuc2Zlci5pdGVtcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmlsZS50eXBlICYmXG4gICAgICAgICAgICB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UuZmlsZVR5cGVSZWplY3RlZChcbiAgICAgICAgICAgICAgZmlsZS50eXBlLFxuICAgICAgICAgICAgICB0aGlzLmFjY2VwdGVkVHlwZXMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwICYmICF0aGlzLmFjY2VwdGVkT3Zlcikge1xuICAgICAgICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICAgIC8vIElmIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgRGF0YVRyYW5zZmVyLml0ZW1zLFxuICAgICAgICAvLyBkZWZlciBmaWxlLXR5cGUgY2hlY2tpbmcgdG8gZHJvcCBoYW5kbGVyLlxuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRGF0YVRyYW5zZmVyL2l0ZW1zI0Jyb3dzZXJfY29tcGF0aWJpbGl0eVxuICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVEcm9wKGRyb3BFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZHJvcEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGRyb3BFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG5cbiAgICBpZiAoZHJvcEV2ZW50LmRhdGFUcmFuc2ZlciAmJiBkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICBpZiAoZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UuaGFzRGlyZWN0b3J5KGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNoYW5kbGVGaWxlcyhkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdMZWF2ZShkcmFnTGVhdmVFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2VudGVyRXZlbnRUYXJnZXQgPT09IGRyYWdMZWF2ZUV2ZW50LnRhcmdldCkge1xuICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUZpbGVBdHRhY2htZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy52YWx1ZT8uZmlsZS5uYW1lO1xuICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jZW1pdEZpbGVDaGFuZ2VFdmVudCh0aGlzLnZhbHVlKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBzYWZldHkgY2hlY2sgKi9cbiAgICBpZiAoZmlsZU5hbWUpIHtcbiAgICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZmlsZV9yZW1vdmVkJyxcbiAgICAgICAgZmlsZU5hbWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy4jb25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgV2hldGhlciB0aGUgY29udHJvbCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZW1pdENsaWNrKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZmlsZUNsaWNrLmVtaXQoe1xuICAgICAgICBmaWxlOiB0aGlzLnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI2Fubm91bmNlU3RhdGUocmVzb3VyY2VTdHJpbmc6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNvdXJjZXNTdmNcbiAgICAgIC5nZXRTdHJpbmcocmVzb3VyY2VTdHJpbmcsIC4uLmFyZ3MpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoaW50ZXJuYXRpb25hbGl6ZWRTdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlclN2Yy5hbm5vdW5jZShpbnRlcm5hdGlvbmFsaXplZFN0cmluZyk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNlbWl0RmlsZUNoYW5nZUV2ZW50KGN1cnJlbnRGaWxlPzogU2t5RmlsZUl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoY3VycmVudEZpbGUgJiYgIWN1cnJlbnRGaWxlLmVycm9yVHlwZSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKGN1cnJlbnRGaWxlKTtcbiAgICAgIHRoaXMuZmlsZUVycm9yTmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZmlsZUVycm9yUGFyYW0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmZpbGVFcnJvclZhbGlkYXRpb24gPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgLy8gTWFrZXMgc3VyZSB2YWx1ZSBhY2Nlc3NvciBpcyBtYXJrZWQgYXMgZGlydHkgZXZlbiBpZiBjdXJyZW50IGZpbGUgaXMgdW5kZWZpbmVkXG4gICAgICB0aGlzLiNvbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5maWxlRXJyb3JWYWxpZGF0aW9uID0geyBmaWxlRXJyb3I6IHRydWUgfTtcbiAgICAgIHRoaXMuZmlsZUVycm9yTmFtZSA9IGN1cnJlbnRGaWxlPy5lcnJvclR5cGU7XG4gICAgICB0aGlzLmZpbGVFcnJvclBhcmFtID0gY3VycmVudEZpbGU/LmVycm9yUGFyYW07XG4gICAgfVxuICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHtcbiAgICAgIGZpbGU6IGN1cnJlbnRGaWxlLFxuICAgIH0gYXMgU2t5RmlsZUF0dGFjaG1lbnRDaGFuZ2UpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jICNsb2FkRmlsZShmaWxlOiBTa3lGaWxlSXRlbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChmaWxlLmZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRmlsZU5hbWUgPSB0aGlzLnZhbHVlPy5maWxlLm5hbWU7XG5cbiAgICAgICAgaWYgKHByZXZpb3VzRmlsZU5hbWUpIHtcbiAgICAgICAgICB0aGlzLiNhbm5vdW5jZVN0YXRlKFxuICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9maWxlX3JlcGxhY2VkJyxcbiAgICAgICAgICAgIHByZXZpb3VzRmlsZU5hbWUsXG4gICAgICAgICAgICBmaWxlLmZpbGUubmFtZSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ZpbGVfYWRkZWQnLFxuICAgICAgICAgICAgZmlsZS5maWxlLm5hbWUsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbGUudXJsID0gYXdhaXQgdGhpcy4jZmlsZVJlYWRlclN2Yy5yZWFkQXNEYXRhVVJMKGZpbGUuZmlsZSk7XG5cbiAgICAgICAgdGhpcy4jZW1pdEZpbGVDaGFuZ2VFdmVudChmaWxlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aGlzLiNlbWl0RmlsZUNoYW5nZUV2ZW50KGZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNoYW5kbGVGaWxlcyhmaWxlTGlzdD86IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZCgpO1xuXG4gICAgaWYgKGZpbGVMaXN0KSB7XG4gICAgICBjb25zdCBmaWxlczogU2t5RmlsZUl0ZW1bXSA9IFtdO1xuXG4gICAgICBpZiAoJ2l0ZW0nIGluIGZpbGVMaXN0KSB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWxlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBmaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIGZpbGU6IGZpbGVMaXN0Lml0ZW0oaW5kZXgpLFxuICAgICAgICAgIH0gYXMgU2t5RmlsZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2Nlc3NlZEZpbGVzID0gdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmNoZWNrRmlsZXMoXG4gICAgICAgIGZpbGVzLFxuICAgICAgICB0aGlzLm1pbkZpbGVTaXplLFxuICAgICAgICB0aGlzLm1heEZpbGVTaXplLFxuICAgICAgICB0aGlzLmFjY2VwdGVkVHlwZXMsXG4gICAgICAgIHRoaXMudmFsaWRhdGVGbixcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBwcm9jZXNzZWRGaWxlcykge1xuICAgICAgICBpZiAoZmlsZS5lcnJvclR5cGUpIHtcbiAgICAgICAgICB0aGlzLiNlbWl0RmlsZUNoYW5nZUV2ZW50KGZpbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZvaWQgdGhpcy4jbG9hZEZpbGUoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjc2V0RmlsZU5hbWUoZmlsZT86IFNreUZpbGVJdGVtKTogdm9pZCB7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGNvbnN0IGRyb3BOYW1lID1cbiAgICAgICAgdGhpcy4jZmlsZUl0ZW1TZXJ2aWNlLmlzRmlsZShmaWxlKSAmJiBmaWxlLmZpbGUubmFtZVxuICAgICAgICAgID8gZmlsZS5maWxlLm5hbWVcbiAgICAgICAgICA6IGZpbGUudXJsO1xuXG4gICAgICB0aGlzLmZpbGVOYW1lID0gZHJvcE5hbWU7XG5cbiAgICAgIGlmIChkcm9wTmFtZS5sZW5ndGggPiAyNikge1xuICAgICAgICB0aGlzLnRydW5jYXRlZEZpbGVOYW1lID0gZHJvcE5hbWUuc2xpY2UoMCwgMjYpICsgJy4uLic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRydW5jYXRlZEZpbGVOYW1lID0gZHJvcE5hbWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSAnJztcbiAgICAgIHRoaXMudHJ1bmNhdGVkRmlsZU5hbWUgPSAnJztcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlRmlsZUF0dGFjaG1lbnRCdXR0b24oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RmlsZUF0dGFjaG1lbnRCdXR0b24gPSAhKFxuICAgICAgdGhpcy52YWx1ZSAmJiB0aGlzLmN1cnJlbnRUaGVtZU5hbWUgPT09ICdtb2Rlcm4nXG4gICAgKTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgI29uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge1xuICAgIHJldHVybjtcbiAgfTtcbiAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgI29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LWZpbGUtYXR0YWNobWVudC13cmFwcGVyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1maWxlLWF0dGFjaG1lbnQtbGFiZWwtd3JhcHBlclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJzpcbiAgICAgICAgIWxhYmVsVGV4dCAmJiBpc1JlcXVpcmVkICYmIGhhc0xhYmVsQ29tcG9uZW50XG4gICAgfVwiXG4gID5cbiAgICBAaWYgKGxhYmVsVGV4dCkge1xuICAgICAgQGlmICghbGFiZWxIaWRkZW4pIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCJcbiAgICAgICAgICBbYXR0ci5pZF09XCJsYWJlbElkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiBpc1JlcXVpcmVkXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgPnt7IGxhYmVsVGV4dCB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZmlsZS1hdHRhY2htZW50LWxhYmVsXCIgLz5cbiAgICB9XG4gICAgQGlmIChpc1JlcXVpcmVkICYmIChoYXNMYWJlbENvbXBvbmVudCB8fCBsYWJlbFRleHQpKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj57e1xuICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X3JlcXVpcmVkJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgfX08L3NwYW4+XG4gICAgfVxuICAgIEBpZiAobGFiZWxUZXh0ICYmIChoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleSkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIj5cbiAgICAgICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgICAgIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgICAgICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgICAvPlxuICAgICAgPC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1maWxlLWF0dGFjaG1lbnQtdXBsb2FkIHNreS1maWxlLWF0dGFjaG1lbnQgc2t5LWZpbGUtYXR0YWNobWVudC10YXJnZXRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZmlsZS1hdHRhY2htZW50LWFjY2VwdCc6IGFjY2VwdGVkT3ZlcixcbiAgICAgICdza3ktZmlsZS1hdHRhY2htZW50LXJlamVjdCc6IHJlamVjdGVkT3ZlclxuICAgIH1cIlxuICAgIChkcmFnZW50ZXIpPVwiZmlsZURyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAoZHJhZ292ZXIpPVwiZmlsZURyYWdPdmVyKCRldmVudClcIlxuICAgIChkcmFnbGVhdmUpPVwiZmlsZURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAoZHJvcCk9XCJmaWxlRHJvcCgkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICNmaWxlRHJvcERlc2NyaXB0aW9uUmVmPVwic2t5SWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwic2t5LXNjcmVlbi1yZWFkZXItb25seVwiXG4gICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgICBza3lJZFxuICAgID5cbiAgICAgIHt7ICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJhZ19vcl9jbGljaycgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXRcbiAgICAgICNmaWxlSW5wdXRSZWZcbiAgICAgIGhpZGRlblxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBbYXR0ci5hY2NlcHRdPVwiYWNjZXB0ZWRUeXBlcyB8fCBudWxsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgIChjYW5jZWwpPVwib25GaWxlQ2FuY2VsKClcIlxuICAgIC8+XG4gICAgQGlmIChzaG93RmlsZUF0dGFjaG1lbnRCdXR0b24pIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1hdHRhY2htZW50LWJ0biBza3ktYnRuIHNreS1idG4tZGVmYXVsdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIlxuICAgICAgICAgIGhpbnRUZXh0ICYmIGhpbnRUZXh0RWwuaWRcbiAgICAgICAgICAgIHwgc2t5RmlsZUF0dGFjaG1lbnRKb2luSWRzOiBmaWxlRHJvcERlc2NyaXB0aW9uUmVmLmlkXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICBhdHRhY2hCdXR0b25MYWJlbFJlZi5pZFxuICAgICAgICAgICAgfCBza3lGaWxlQXR0YWNobWVudEpvaW5JZHNcbiAgICAgICAgICAgICAgOiAobGFiZWxUZXh0XG4gICAgICAgICAgICAgICAgICA/IGxhYmVsSWRcbiAgICAgICAgICAgICAgICAgIDogbGFiZWxDb21wb25lbnRzPy5nZXQoMCk/LmxhYmVsQ29udGVudElkPy5pZClcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhKG5nQ29udHJvbD8uZXJyb3JzID8/IGZpbGVFcnJvclZhbGlkYXRpb24pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiXG4gICAgICAgICAgISEobmdDb250cm9sPy5lcnJvcnMgPz8gZmlsZUVycm9yVmFsaWRhdGlvbikgPyBlcnJvcklkIDogdW5kZWZpbmVkXG4gICAgICAgIFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJvbkRyb3BDbGlja2VkKClcIlxuICAgICAgICAoYmx1cik9XCJvbkJ1dHRvbkJsdXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uTmFtZT1cImZvbGRlci1vcGVuXCIgLz5cbiAgICAgICAge3tcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgPyAoJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9idXR0b25fbGFiZWxfcmVwbGFjZV9maWxlJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgIDogKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfYnV0dG9uX2xhYmVsX2Nob29zZV9maWxlJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgICBAaWYgKHZhbHVlICYmICFpc0ltYWdlICYmIGN1cnJlbnRUaGVtZU5hbWUgPT09ICdtb2Rlcm4nKSB7XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1hdHRhY2htZW50LWljb25cIlxuICAgICAgICBpY29uTmFtZT1cImRvY3VtZW50XCJcbiAgICAgICAgaWNvblNpemU9XCJ4bFwiXG4gICAgICAvPlxuICAgIH1cbiAgICBAaWYgKHZhbHVlIHx8IGN1cnJlbnRUaGVtZU5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktZmlsZS1hdHRhY2htZW50LWZpbGUtbGlua1wiPlxuICAgICAgICBAaWYgKHZhbHVlKSB7XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWxpbmstaW5saW5lXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cImZpbGVOYW1lXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlbWl0Q2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdHJ1bmNhdGVkRmlsZU5hbWUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWZpbGUtYXR0YWNobWVudC1ub25lIHNreS1mb250LWRlZW1waGFzaXplZFwiPlxuICAgICAgICAgICAge3sgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9sYWJlbF9ub19maWxlX2Nob3NlbicgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICBAaWYgKHZhbHVlKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWljb24tYm9yZGVybGVzcyBza3ktZmlsZS1hdHRhY2htZW50LWRlbGV0ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiXG4gICAgICAgICAgZGVsZXRlQnV0dG9uTGFiZWxSZWYuaWRcbiAgICAgICAgICAgIHwgc2t5RmlsZUF0dGFjaG1lbnRKb2luSWRzXG4gICAgICAgICAgICAgIDogKGxhYmVsVGV4dFxuICAgICAgICAgICAgICAgICAgPyBsYWJlbElkXG4gICAgICAgICAgICAgICAgICA6IGxhYmVsQ29tcG9uZW50cz8uZ2V0KDApPy5sYWJlbENvbnRlbnRJZD8uaWQpXG4gICAgICAgIFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVGaWxlQXR0YWNobWVudCgpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiZGVsZXRlXCIgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmICh2YWx1ZSAmJiBpc0ltYWdlKSB7XG4gICAgPGltZ1xuICAgICAgY2xhc3M9XCJza3ktZmlsZS1hdHRhY2htZW50LXByZXZpZXctaW1nXCJcbiAgICAgIFthbHRdPVwiXG4gICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfaW1hZ2VfcHJldmlld19hbHRfdGV4dCdcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICAgIFtzcmNdPVwidmFsdWUudXJsXCJcbiAgICAvPlxuICB9XG48L2Rpdj5cbjxkaXYgI2hpbnRUZXh0RWw9XCJza3lJZFwiIHNreUlkPlxuICBAaWYgKGhpbnRUZXh0KSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktZmlsZS1hdHRhY2htZW50LWhpbnQtdGV4dFwiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCcsXG4gICAgICAgICdza3ktZm9udC1oaW50LXRleHQtcyc6ICdtb2Rlcm4nXG4gICAgICB9XCJcbiAgICA+XG4gICAgICB7eyBoaW50VGV4dCB9fVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuPHNreS1mb3JtLWVycm9yc1xuICBbaWRdPVwiZXJyb3JJZFwiXG4gIFtlcnJvcnNdPVwibmdDb250cm9sPy5lcnJvcnNcIlxuICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gIFt0b3VjaGVkXT1cIm5nQ29udHJvbD8udG91Y2hlZFwiXG4gIFtkaXJ0eV09XCJuZ0NvbnRyb2w/LmRpcnR5XCJcbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWZvcm0tZXJyb3JcIiAvPlxuICBAaWYgKG5nQ29udHJvbD8udG91Y2hlZCkge1xuICAgIEBpZiAoZmlsZUVycm9yTmFtZSA9PT0gJ2ZpbGVUeXBlJykge1xuICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgIGVycm9yTmFtZT1cImZpbGVUeXBlXCJcbiAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICBhY2NlcHRlZFR5cGVzRXJyb3JNZXNzYWdlID8/XG4gICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdHlwZV9lcnJvcl9sYWJlbF90ZXh0J1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGZpbGVFcnJvclBhcmFtXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIH0gQGVsc2UgaWYgKGZpbGVFcnJvck5hbWUgPT09ICdtYXhGaWxlU2l6ZScpIHtcbiAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICBlcnJvck5hbWU9XCJtYXhGaWxlU2l6ZVwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9tYXhfZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHQnXG4gICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogKGZpbGVFcnJvclBhcmFtIHwgc2t5RmlsZVNpemUpXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIH0gQGVsc2UgaWYgKGZpbGVFcnJvck5hbWUgPT09ICdtaW5GaWxlU2l6ZScpIHtcbiAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICBlcnJvck5hbWU9XCJtaW5GaWxlU2l6ZVwiXG4gICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9taW5fZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHQnXG4gICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogKGZpbGVFcnJvclBhcmFtIHwgc2t5RmlsZVNpemUpXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgIH1cbiAgfVxuPC9za3ktZm9ybS1lcnJvcnM+XG5cbjxzcGFuXG4gICNhdHRhY2hCdXR0b25MYWJlbFJlZj1cInNreUlkXCJcbiAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgc2t5SWRcbj5cbiAge3tcbiAgICB2YWx1ZVxuICAgICAgPyAoJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9idXR0b25fbGFiZWxfcmVwbGFjZV9maWxlX2xhYmVsJ1xuICAgICAgICB8IHNreUxpYlJlc291cmNlczogZmlsZU5hbWUpXG4gICAgICA6ICgnc2t5dXhfZmlsZV9hdHRhY2htZW50X2J1dHRvbl9sYWJlbF9jaG9vc2VfZmlsZV9sYWJlbCdcbiAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gIH19XG48L3NwYW4+XG5cbjxzcGFuXG4gICNkZWxldGVCdXR0b25MYWJlbFJlZj1cInNreUlkXCJcbiAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgc2t5SWRcbj5cbiAge3sgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX2l0ZW1fcmVtb3ZlJyB8IHNreUxpYlJlc291cmNlczogZmlsZU5hbWUgfX1cbjwvc3Bhbj5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyFormErrorModule } from '../../form-error/form-error.module';\nimport { SkyFileAttachmentLabelComponent } from './file-attachment-label.component';\nimport { SkyFileAttachmentComponent } from './file-attachment.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyFileAttachmentModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentModule, imports: [SkyFileAttachmentComponent, SkyFileAttachmentLabelComponent], exports: [SkyFileAttachmentComponent,\n SkyFileAttachmentLabelComponent,\n SkyFormErrorModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentModule, imports: [SkyFileAttachmentComponent, SkyFileAttachmentLabelComponent, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [\n SkyFileAttachmentComponent,\n SkyFileAttachmentLabelComponent,\n SkyFormErrorModule,\n ],\n imports: [SkyFileAttachmentComponent, SkyFileAttachmentLabelComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBVXpFLE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLFlBRnhCLDBCQUEwQixFQUFFLCtCQUErQixhQUpuRSwwQkFBMEI7WUFDMUIsK0JBQStCO1lBQy9CLGtCQUFrQjtnSEFJVCx1QkFBdUIsWUFGeEIsMEJBQTBCLEVBQUUsK0JBQStCLEVBRm5FLGtCQUFrQjs7NEZBSVQsdUJBQXVCO2tCQVJuQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCwwQkFBMEI7d0JBQzFCLCtCQUErQjt3QkFDL0Isa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwrQkFBK0IsQ0FBQztpQkFDdkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JNb2R1bGUgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RmlsZUF0dGFjaG1lbnRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1hdHRhY2htZW50LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1hdHRhY2htZW50LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtcbiAgICBTa3lGaWxlQXR0YWNobWVudENvbXBvbmVudCxcbiAgICBTa3lGaWxlQXR0YWNobWVudExhYmVsQ29tcG9uZW50LFxuICAgIFNreUZvcm1FcnJvck1vZHVsZSxcbiAgXSxcbiAgaW1wb3J0czogW1NreUZpbGVBdHRhY2htZW50Q29tcG9uZW50LCBTa3lGaWxlQXR0YWNobWVudExhYmVsQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RmlsZUF0dGFjaG1lbnRNb2R1bGUge31cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyInputBoxHostService {\n constructor() {\n this.#requiredSubject = new BehaviorSubject(false);\n this.required = this.#requiredSubject.asObservable();\n }\n #host;\n #requiredSubject;\n get controlId() {\n return this.#host?.controlId ?? '';\n }\n get labelId() {\n return this.#host?.labelText ? this.#host.labelId : '';\n }\n get labelText() {\n return this.#host?.labelText ?? '';\n }\n get ariaDescribedBy() {\n return this.#ariaDescribedBy;\n }\n #ariaDescribedBy;\n init(host) {\n this.#host = host;\n this.#ariaDescribedBy = host.ariaDescribedBy.asObservable();\n }\n ngOnDestroy() {\n this.#requiredSubject.complete();\n }\n populate(args) {\n if (!this.#host) {\n throw new Error('Cannot populate the input box because `SkyInputBoxHostService` has not yet been initialized. Try running the `populate` method within an Angular lifecycle hook, such as `ngOnInit`.');\n }\n this.#host.populate(args);\n }\n setHintText(hintText) {\n if (!this.#host) {\n throw new Error('Cannot set hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.');\n }\n this.#host.setHostHintText(hintText);\n }\n setHintTextHidden(hide) {\n if (!this.#host) {\n throw new Error('Cannot hide hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.');\n }\n this.#host.setHintTextHidden(hide);\n }\n setHintTextScreenReaderOnly(hide) {\n if (!this.#host) {\n throw new Error('Cannot remove hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.');\n }\n this.#host.setHintTextScreenReaderOnly(hide);\n }\n /**\n * Set required so that input box displays the label correctly. When the input is supplied by the consumer it is a content\n * child that input box can read required from and this is unnecessary. When the input is supplied internally by the\n * component the input box does not have a ref to it, so the component needs to inform the input box of its required state.\n */\n setRequired(required) {\n this.#requiredSubject.next(required);\n }\n /**\n * Whether the focused element is inside the input box.\n * @internal\n */\n focusIsInInput(el) {\n if (!this.#host) {\n throw new Error('Cannot get whether the focus is in the input box because `SkyInputBoxHostService` has not yet been initialized.');\n }\n return this.#host.containsElement(el);\n }\n /**\n * Returns an html element that is inside the input box.\n * @internal\n */\n queryHost(query) {\n if (!this.#host) {\n throw new Error('Cannot query input box host because `SkyInputBoxHostService` has not yet been initialized.');\n }\n return this.#host.queryPopulatedElement(query);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxHostService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxHostService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWhvc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvaW5wdXQtYm94L2lucHV0LWJveC1ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUtuRDs7R0FFRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFHRSxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVoRCxhQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0tBdUd4RDtJQTFHQyxLQUFLLENBQW1DO0lBQ3hDLGdCQUFnQixDQUF1QztJQUl2RCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQTZDO0lBRXRELElBQUksQ0FBQyxJQUEwQjtRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUE2QjtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0xBQXNMLENBQ3ZMLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUE0QjtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0dBQXNHLENBQ3ZHLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQWE7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLHVHQUF1RyxDQUN4RyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLDJCQUEyQixDQUFDLElBQWE7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLHlHQUF5RyxDQUMxRyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsUUFBaUI7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxDQUFDLEVBQWU7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLGlIQUFpSCxDQUNsSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYiw0RkFBNEYsQ0FDN0YsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzsrR0ExR1Usc0JBQXNCO21IQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreUlucHV0Qm94UG9wdWxhdGVBcmdzIH0gZnJvbSAnLi9pbnB1dC1ib3gtcG9wdWxhdGUtYXJncyc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQtYm94LmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgI2hvc3Q6IFNreUlucHV0Qm94Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICAjcmVxdWlyZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlcXVpcmVkID0gdGhpcy4jcmVxdWlyZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHB1YmxpYyBnZXQgY29udHJvbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2hvc3Q/LmNvbnRyb2xJZCA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNob3N0Py5sYWJlbFRleHQgPyB0aGlzLiNob3N0LmxhYmVsSWQgOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2hvc3Q/LmxhYmVsVGV4dCA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI2FyaWFEZXNjcmliZWRCeTtcbiAgfVxuXG4gICNhcmlhRGVzY3JpYmVkQnk6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaW5pdChob3N0OiBTa3lJbnB1dEJveENvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMuI2hvc3QgPSBob3N0O1xuICAgIHRoaXMuI2FyaWFEZXNjcmliZWRCeSA9IGhvc3QuYXJpYURlc2NyaWJlZEJ5LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlcXVpcmVkU3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlKGFyZ3M6IFNreUlucHV0Qm94UG9wdWxhdGVBcmdzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNob3N0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgcG9wdWxhdGUgdGhlIGlucHV0IGJveCBiZWNhdXNlIGBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlYCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLiBUcnkgcnVubmluZyB0aGUgYHBvcHVsYXRlYCBtZXRob2Qgd2l0aGluIGFuIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2ssIHN1Y2ggYXMgYG5nT25Jbml0YC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNob3N0LnBvcHVsYXRlKGFyZ3MpO1xuICB9XG5cbiAgcHVibGljIHNldEhpbnRUZXh0KGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2hvc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBzZXQgaGludCB0ZXh0IG9uIHRoZSBpbnB1dCBib3ggYmVjYXVzZSBgU2t5SW5wdXRCb3hIb3N0U2VydmljZWAgaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNob3N0LnNldEhvc3RIaW50VGV4dChoaW50VGV4dCk7XG4gIH1cblxuICBwdWJsaWMgc2V0SGludFRleHRIaWRkZW4oaGlkZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy4jaG9zdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGhpZGUgaGludCB0ZXh0IG9uIHRoZSBpbnB1dCBib3ggYmVjYXVzZSBgU2t5SW5wdXRCb3hIb3N0U2VydmljZWAgaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNob3N0LnNldEhpbnRUZXh0SGlkZGVuKGhpZGUpO1xuICB9XG5cbiAgcHVibGljIHNldEhpbnRUZXh0U2NyZWVuUmVhZGVyT25seShoaWRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNob3N0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgcmVtb3ZlIGhpbnQgdGV4dCBvbiB0aGUgaW5wdXQgYm94IGJlY2F1c2UgYFNreUlucHV0Qm94SG9zdFNlcnZpY2VgIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy4jaG9zdC5zZXRIaW50VGV4dFNjcmVlblJlYWRlck9ubHkoaGlkZSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJlcXVpcmVkIHNvIHRoYXQgaW5wdXQgYm94IGRpc3BsYXlzIHRoZSBsYWJlbCBjb3JyZWN0bHkuIFdoZW4gdGhlIGlucHV0IGlzIHN1cHBsaWVkIGJ5IHRoZSBjb25zdW1lciBpdCBpcyBhIGNvbnRlbnRcbiAgICogY2hpbGQgdGhhdCBpbnB1dCBib3ggY2FuIHJlYWQgcmVxdWlyZWQgZnJvbSBhbmQgdGhpcyBpcyB1bm5lY2Vzc2FyeS4gV2hlbiB0aGUgaW5wdXQgaXMgc3VwcGxpZWQgaW50ZXJuYWxseSBieSB0aGVcbiAgICogY29tcG9uZW50IHRoZSBpbnB1dCBib3ggZG9lcyBub3QgaGF2ZSBhIHJlZiB0byBpdCwgc28gdGhlIGNvbXBvbmVudCBuZWVkcyB0byBpbmZvcm0gdGhlIGlucHV0IGJveCBvZiBpdHMgcmVxdWlyZWQgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgc2V0UmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLiNyZXF1aXJlZFN1YmplY3QubmV4dChyZXF1aXJlZCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIGluc2lkZSB0aGUgaW5wdXQgYm94LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBmb2N1c0lzSW5JbnB1dChlbDogRXZlbnRUYXJnZXQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuI2hvc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBnZXQgd2hldGhlciB0aGUgZm9jdXMgaXMgaW4gdGhlIGlucHV0IGJveCBiZWNhdXNlIGBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlYCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jaG9zdC5jb250YWluc0VsZW1lbnQoZWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaHRtbCBlbGVtZW50IHRoYXQgaXMgaW5zaWRlIHRoZSBpbnB1dCBib3guXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHF1ZXJ5SG9zdChxdWVyeTogc3RyaW5nKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy4jaG9zdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IHF1ZXJ5IGlucHV0IGJveCBob3N0IGJlY2F1c2UgYFNreUlucHV0Qm94SG9zdFNlcnZpY2VgIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNob3N0LnF1ZXJ5UG9wdWxhdGVkRWxlbWVudChxdWVyeSk7XG4gIH1cbn1cbiJdfQ==","import { Directive, HostBinding, Input, inject } from '@angular/core';\nimport { SkyInputBoxHostService } from './input-box-host.service';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyInputBoxControlDirective {\n set autocomplete(value) {\n this.#_autocomplete = value;\n }\n get autocomplete() {\n return this.#_autocomplete || (this.#hostSvc ? 'off' : undefined);\n }\n #_autocomplete;\n #hostSvc = inject(SkyInputBoxHostService, { optional: true });\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyInputBoxControlDirective, isStandalone: true, selector: \"input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)\", inputs: { autocomplete: \"autocomplete\" }, host: { properties: { \"autocomplete\": \"this.autocomplete\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxControlDirective, decorators: [{\n type: Directive,\n args: [{\n selector: \n // eslint-disable-next-line @angular-eslint/directive-selector\n 'input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)',\n }]\n }], propDecorators: { autocomplete: [{\n type: HostBinding,\n args: ['autocomplete']\n }, {\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWNvbnRyb2wuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9pbnB1dC1ib3gvaW5wdXQtYm94LWNvbnRyb2wuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRWxFOztHQUVHO0FBTUgsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxJQUVXLFlBQVksQ0FBQyxLQUF5QjtRQUMvQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBcUI7SUFDbkMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDOytHQVpuRCwyQkFBMkI7bUdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRO29CQUNOLDhEQUE4RDtvQkFDOUQsbUlBQW1JO2lCQUN0STs7c0JBRUUsV0FBVzt1QkFBQyxjQUFjOztzQkFDMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJy4vaW5wdXQtYm94LWhvc3Quc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgICdpbnB1dDpub3QoW3NreUlkXSk6bm90KC5za3ktZm9ybS1jb250cm9sKSxzZWxlY3Q6bm90KFtza3lJZF0pOm5vdCguc2t5LWZvcm0tY29udHJvbCksdGV4dGFyZWE6bm90KFtza3lJZF0pOm5vdCguc2t5LWZvcm0tY29udHJvbCknLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lJbnB1dEJveENvbnRyb2xEaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2F1dG9jb21wbGV0ZScpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXV0b2NvbXBsZXRlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXV0b2NvbXBsZXRlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dG9jb21wbGV0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXV0b2NvbXBsZXRlIHx8ICh0aGlzLiNob3N0U3ZjID8gJ29mZicgOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgI19hdXRvY29tcGxldGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI2hvc3RTdmMgPSBpbmplY3QoU2t5SW5wdXRCb3hIb3N0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyInputBoxHintTextPipe {\n transform(hintText, hostHintText) {\n if (hintText && hostHintText) {\n return `${hintText} ${hostHintText}`;\n }\n return hintText || hostHintText;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxHintTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxHintTextPipe, isStandalone: true, name: \"skyInputBoxHintText\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxHintTextPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyInputBoxHintText',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWhpbnQtdGV4dC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9pbnB1dC1ib3gvaW5wdXQtYm94LWhpbnQtdGV4dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUVwRDs7R0FFRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsU0FBUyxDQUNkLFFBQWlCLEVBQ2pCLFlBQXFCO1FBRXJCLElBQUksUUFBUSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQzdCLE9BQU8sR0FBRyxRQUFRLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsQ0FBQztRQUVELE9BQU8sUUFBUSxJQUFJLFlBQVksQ0FBQztJQUNsQyxDQUFDOytHQVZVLHVCQUF1Qjs2R0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUhuQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxxQkFBcUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lJbnB1dEJveEhpbnRUZXh0Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5SW5wdXRCb3hIaW50VGV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHVibGljIHRyYW5zZm9ybShcbiAgICBoaW50VGV4dD86IHN0cmluZyxcbiAgICBob3N0SGludFRleHQ/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGhpbnRUZXh0ICYmIGhvc3RIaW50VGV4dCkge1xuICAgICAgcmV0dXJuIGAke2hpbnRUZXh0fSAke2hvc3RIaW50VGV4dH1gO1xuICAgIH1cblxuICAgIHJldHVybiBoaW50VGV4dCB8fCBob3N0SGludFRleHQ7XG4gIH1cbn1cbiJdfQ==","import { Injectable, RendererFactory2, inject, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nconst ARIA_DESCRIBEDBY_ATTR = 'aria-describedby';\n/**\n * @internal\n */\nexport class SkyInputBoxAdapterService {\n #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n /**\n * Returns whether the provided input box contains the focus event target.\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n containsElement(inputRef, el) {\n return inputRef.nativeElement.contains(el);\n }\n focusControl(elRef) {\n const control = elRef.nativeElement.querySelector('.sky-form-control');\n /* istanbul ignore else */\n if (control) {\n control.focus();\n }\n }\n /**\n * Returns the inline help element.\n */\n getInlineHelpElement(elRef) {\n return elRef.nativeElement.querySelector('.sky-control-help');\n }\n /**\n * Returns true if the provided element contains the focused element.\n */\n isFocusInElement(el) {\n if (el) {\n return (el === document.activeElement || el.contains(document.activeElement));\n }\n return false;\n }\n updateDescribedBy(inputRef, hintTextId, hintText) {\n const inputEl = inputRef.nativeElement;\n const describedByIds = inputEl\n .getAttribute(ARIA_DESCRIBEDBY_ATTR)\n ?.split(' ')\n .map((id) => id.trim()) ?? [];\n const hintTextIdIndex = describedByIds.indexOf(hintTextId);\n const previousCount = describedByIds.length;\n if (hintText && hintTextIdIndex < 0) {\n describedByIds.push(hintTextId);\n }\n else if (!hintText && hintTextIdIndex >= 0) {\n describedByIds.splice(hintTextIdIndex, 1);\n }\n if (describedByIds.length !== previousCount) {\n this.#setDescribedByIds(inputEl, describedByIds);\n }\n }\n /**\n * Queries the provided input box with the query string.\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n queryElement(inputRef, query) {\n return inputRef.nativeElement.querySelector(query);\n }\n #setDescribedByIds(inputEl, describedByIds) {\n if (describedByIds.length === 0) {\n this.#renderer.removeAttribute(inputEl, ARIA_DESCRIBEDBY_ATTR);\n }\n else {\n this.#renderer.setAttribute(inputEl, ARIA_DESCRIBEDBY_ATTR, describedByIds.join(' '));\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxAdapterService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvaW5wdXQtYm94L2lucHV0LWJveC1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUV2QixNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDO0FBRWpEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxTQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVyRTs7T0FFRztJQUNILDhGQUE4RjtJQUN2RixlQUFlLENBQUMsUUFBb0IsRUFBRSxFQUFlO1FBQzFELE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFpQjtRQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZFLDBCQUEwQjtRQUMxQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0IsQ0FBQyxLQUFpQjtRQUMzQyxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsRUFBZTtRQUNyQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxDQUNMLEVBQUUsS0FBSyxRQUFRLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUNyRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGlCQUFpQixDQUN0QixRQUFvQixFQUNwQixVQUFrQixFQUNsQixRQUE0QjtRQUU1QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBNEIsQ0FBQztRQUV0RCxNQUFNLGNBQWMsR0FDbEIsT0FBTzthQUNKLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztZQUNwQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDWCxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVsQyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFFNUMsSUFBSSxRQUFRLElBQUksZUFBZSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLElBQUksQ0FBQyxRQUFRLElBQUksZUFBZSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLGNBQWMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsOEZBQThGO0lBQ3ZGLFlBQVksQ0FBQyxRQUFvQixFQUFFLEtBQWE7UUFDckQsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBb0IsRUFBRSxjQUF3QjtRQUMvRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDekIsT0FBTyxFQUNQLHFCQUFxQixFQUNyQixjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUN6QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7K0dBbkZVLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgUmVuZGVyZXJGYWN0b3J5MixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgQVJJQV9ERVNDUklCRURCWV9BVFRSID0gJ2FyaWEtZGVzY3JpYmVkYnknO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5SW5wdXRCb3hBZGFwdGVyU2VydmljZSB7XG4gICNyZW5kZXJlciA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGlucHV0IGJveCBjb250YWlucyB0aGUgZm9jdXMgZXZlbnQgdGFyZ2V0LlxuICAgKi9cbiAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgaWYgbm8gbG9uZ2VyIG5lZWRlZCBhZnRlciBhIHNjYWxhYmxlIGZvY3VzIG1vbml0b3Igc2VydmljZSBpcyBpbXBsZW1lbnRlZFxuICBwdWJsaWMgY29udGFpbnNFbGVtZW50KGlucHV0UmVmOiBFbGVtZW50UmVmLCBlbDogRXZlbnRUYXJnZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaW5wdXRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhlbCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXNDb250cm9sKGVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IGVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1mb3JtLWNvbnRyb2wnKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChjb250cm9sKSB7XG4gICAgICBjb250cm9sLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlubGluZSBoZWxwIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0SW5saW5lSGVscEVsZW1lbnQoZWxSZWY6IEVsZW1lbnRSZWYpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIGVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNreS1jb250cm9sLWhlbHAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVkIGVsZW1lbnQgY29udGFpbnMgdGhlIGZvY3VzZWQgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBpc0ZvY3VzSW5FbGVtZW50KGVsOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmIChlbCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgZWwgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgZWwuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEZXNjcmliZWRCeShcbiAgICBpbnB1dFJlZjogRWxlbWVudFJlZixcbiAgICBoaW50VGV4dElkOiBzdHJpbmcsXG4gICAgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbCA9IGlucHV0UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCBkZXNjcmliZWRCeUlkcyA9XG4gICAgICBpbnB1dEVsXG4gICAgICAgIC5nZXRBdHRyaWJ1dGUoQVJJQV9ERVNDUklCRURCWV9BVFRSKVxuICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgoaWQpID0+IGlkLnRyaW0oKSkgPz8gW107XG5cbiAgICBjb25zdCBoaW50VGV4dElkSW5kZXggPSBkZXNjcmliZWRCeUlkcy5pbmRleE9mKGhpbnRUZXh0SWQpO1xuICAgIGNvbnN0IHByZXZpb3VzQ291bnQgPSBkZXNjcmliZWRCeUlkcy5sZW5ndGg7XG5cbiAgICBpZiAoaGludFRleHQgJiYgaGludFRleHRJZEluZGV4IDwgMCkge1xuICAgICAgZGVzY3JpYmVkQnlJZHMucHVzaChoaW50VGV4dElkKTtcbiAgICB9IGVsc2UgaWYgKCFoaW50VGV4dCAmJiBoaW50VGV4dElkSW5kZXggPj0gMCkge1xuICAgICAgZGVzY3JpYmVkQnlJZHMuc3BsaWNlKGhpbnRUZXh0SWRJbmRleCwgMSk7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaWJlZEJ5SWRzLmxlbmd0aCAhPT0gcHJldmlvdXNDb3VudCkge1xuICAgICAgdGhpcy4jc2V0RGVzY3JpYmVkQnlJZHMoaW5wdXRFbCwgZGVzY3JpYmVkQnlJZHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBRdWVyaWVzIHRoZSBwcm92aWRlZCBpbnB1dCBib3ggd2l0aCB0aGUgcXVlcnkgc3RyaW5nLlxuICAgKi9cbiAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgaWYgbm8gbG9uZ2VyIG5lZWRlZCBhZnRlciBhIHNjYWxhYmxlIGZvY3VzIG1vbml0b3Igc2VydmljZSBpcyBpbXBsZW1lbnRlZFxuICBwdWJsaWMgcXVlcnlFbGVtZW50KGlucHV0UmVmOiBFbGVtZW50UmVmLCBxdWVyeTogc3RyaW5nKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBpbnB1dFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IocXVlcnkpO1xuICB9XG5cbiAgI3NldERlc2NyaWJlZEJ5SWRzKGlucHV0RWw6IEhUTUxFbGVtZW50LCBkZXNjcmliZWRCeUlkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoZGVzY3JpYmVkQnlJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoaW5wdXRFbCwgQVJJQV9ERVNDUklCRURCWV9BVFRSKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgICBpbnB1dEVsLFxuICAgICAgICBBUklBX0RFU0NSSUJFREJZX0FUVFIsXG4gICAgICAgIGRlc2NyaWJlZEJ5SWRzLmpvaW4oJyAnKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { coerceBooleanProperty, coerceNumberProperty, } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, Component, ContentChild, ElementRef, HostBinding, Input, Renderer2, ViewEncapsulation, inject, } from '@angular/core';\nimport { FormControlDirective, FormControlName, NgModel, Validators, } from '@angular/forms';\nimport { SkyContentInfoProvider, SkyIdService } from '@skyux/core';\nimport { ReplaySubject, Subject, takeUntil } from 'rxjs';\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\nimport { SkyInputBoxAdapterService } from './input-box-adapter.service';\nimport { SkyInputBoxControlDirective } from './input-box-control.directive';\nimport { SkyInputBoxHostService } from './input-box-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"../character-counter/character-counter-indicator.component\";\nimport * as i3 from \"../form-error/form-errors.component\";\nimport * as i4 from \"@skyux/help-inline\";\nimport * as i5 from \"@skyux/theme\";\nimport * as i6 from \"@skyux/i18n\";\nimport * as i7 from \"./input-box-hint-text.pipe\";\n/**\n * A wrapper component that provides styling and accessibility to form elements.\n */\nexport class SkyInputBoxComponent {\n constructor() {\n this.#changeRef = inject(ChangeDetectorRef);\n this.#inputBoxHostSvc = inject(SkyInputBoxHostService);\n this.#adapterService = inject(SkyInputBoxAdapterService);\n this.#idSvc = inject(SkyIdService);\n this.#elementRef = inject(ElementRef);\n this.#renderer = inject(Renderer2);\n this.formControlHasFocus = false;\n this.hintTextHidden = false;\n this.hintTextScreenReaderOnly = false;\n this.controlId = this.#idSvc.generateId();\n this.labelId = this.#idSvc.generateId();\n this.errorId = this.#idSvc.generateId();\n this.hintTextId = this.#idSvc.generateId();\n this.ariaDescribedBy = new ReplaySubject(1);\n this.cssClass = '';\n this.characterCountScreenReader = 0;\n this.#_stacked = false;\n this.#ngUnsubscribe = new Subject();\n }\n #changeRef;\n #inputBoxHostSvc;\n #adapterService;\n #idSvc;\n #elementRef;\n #renderer;\n /**\n * The maximum number of characters allowed in the input. A [SKY UX character count](https://developer.blackbaud.com/skyux/components/character-count)\n * will be placed on the input element with the appropriate validator.\n */\n set characterLimit(value) {\n this.#_characterLimit =\n value === undefined ? undefined : coerceNumberProperty(value, undefined);\n this.#updateMaxLengthValidator();\n }\n get characterLimit() {\n return this.#_characterLimit;\n }\n /**\n * Whether the input box is stacked on another input box. When specified, the appropriate\n * vertical spacing is automatically added to the input box.\n */\n set stacked(value) {\n this.#_stacked = coerceBooleanProperty(value);\n this.cssClass = this.#_stacked ? 'sky-form-field-stacked' : '';\n }\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n set hintText(value) {\n this.#_hintText = value;\n this.ariaDescribedBy.next(value ? this.hintTextId : undefined);\n }\n get hintText() {\n return this.#_hintText;\n }\n #requiredByFormField;\n get isDisabled() {\n return !!(this.disabled ||\n this.controlDir?.control?.disabled ||\n this.inputRef?.nativeElement?.disabled);\n }\n get hasErrorsComputed() {\n if (this.hasErrors === undefined) {\n return this.#controlHasErrors(this.controlDir);\n }\n return this.hasErrors;\n }\n get required() {\n return (this.#hasRequiredValidator() ||\n this.inputRef?.nativeElement.required ||\n this.#requiredByFormField);\n }\n #_stacked;\n #_characterLimit;\n #_hintText;\n #previousInputRef;\n #previousMaxLengthValidator;\n #ngUnsubscribe;\n ngOnInit() {\n this.#inputBoxHostSvc.init(this);\n this.#inputBoxHostSvc.required\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((required) => {\n this.#requiredByFormField = required;\n this.#changeRef.markForCheck();\n });\n }\n ngAfterContentChecked() {\n this.controlDir =\n this.formControl || this.formControlByName || this.ngModel;\n if (!this.formControlHasFocus) {\n this.characterCountScreenReader = this.controlDir?.value?.length || 0;\n }\n this.#updateInputRef();\n }\n ngOnDestroy() {\n this.ariaDescribedBy.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Whether the input box component contains the focused element.\n * @internal\n */\n containsElement(el) {\n return this.#adapterService.containsElement(this.#elementRef, el);\n }\n formControlFocusIn() {\n const inlineHelpEl = this.#adapterService.getInlineHelpElement(this.#elementRef);\n if (!this.#adapterService.isFocusInElement(inlineHelpEl)) {\n this.#updateHasFocus(true);\n }\n }\n formControlFocusOut() {\n this.characterCountScreenReader = this.controlDir?.value?.length || 0;\n this.#updateHasFocus(false);\n }\n onInsetIconClick() {\n if (!this.isDisabled) {\n this.#adapterService.focusControl(this.#elementRef);\n }\n }\n populate(args) {\n this.hostInputTemplate = args.inputTemplate;\n this.hostButtonsTemplate = args.buttonsTemplate;\n this.hostButtonsLeftTemplate = args.buttonsLeftTemplate;\n this.hostButtonsInsetTemplate = args.buttonsInsetTemplate;\n this.hostIconsInsetTemplate = args.iconsInsetTemplate;\n this.hostIconsInsetLeftTemplate = args.iconsInsetLeftTemplate;\n this.#changeRef.markForCheck();\n }\n /**\n * Returns an element inside the input box.\n * This can be used to query parts of a input box\n * that was populated through the `SkyInputBoxHostService`\n * @internal\n */\n queryPopulatedElement(query) {\n return this.#adapterService.queryElement(this.#elementRef, query);\n }\n setHintTextHidden(hide) {\n this.hintTextHidden = hide;\n this.#changeRef.markForCheck();\n }\n setHostHintText(value) {\n this.hostHintText = value;\n this.#changeRef.markForCheck();\n }\n setHintTextScreenReaderOnly(hide) {\n this.hintTextScreenReaderOnly = hide;\n this.#changeRef.markForCheck();\n }\n #hasRequiredValidator() {\n return !!this.controlDir?.control?.hasValidator(Validators.required);\n }\n #updateHasFocus(hasFocus) {\n // Some components manipulate the focus of elements inside an input box programmatically,\n // which can cause an `ExpressionChangedAfterItHasBeenCheckedError` if focus was set after\n // initial change detection. Using `setTimeout()` here fixes it.\n setTimeout(() => {\n this.formControlHasFocus = hasFocus;\n this.#changeRef.markForCheck();\n });\n }\n #controlHasErrors(control) {\n return !!(control && control.invalid && (control.dirty || control.touched));\n }\n #updateInputRef() {\n if (!this.inputRef) {\n return;\n }\n const inputEl = this.inputRef.nativeElement;\n // Check for the Angular required validator and add an aria-required attribute\n // to match. For template-driven forms, the input will have a `required` attribute\n // so the aria-required attribute is unnecessary.\n const hasRequiredValidator = this.#hasRequiredValidator();\n const ariaRequired = inputEl.ariaRequired;\n if (hasRequiredValidator && ariaRequired !== 'true') {\n inputEl.ariaRequired = 'true';\n }\n else if (!hasRequiredValidator && ariaRequired === 'true') {\n inputEl.ariaRequired = null;\n }\n if (this.hasErrorsComputed) {\n this.#renderer.setAttribute(inputEl, 'aria-invalid', 'true');\n this.#renderer.setAttribute(inputEl, 'aria-errormessage', this.errorId);\n }\n else {\n this.#renderer.removeAttribute(inputEl, 'aria-invalid');\n this.#renderer.removeAttribute(inputEl, 'aria-errormessage');\n }\n this.#adapterService.updateDescribedBy(this.inputRef, this.hintTextId, this.hintText ?? this.hostHintText);\n if (this.inputRef !== this.#previousInputRef) {\n this.#renderer.addClass(inputEl, 'sky-form-control');\n this.#renderer.setAttribute(inputEl, 'id', this.controlId);\n this.#updateMaxLengthValidator();\n this.#previousInputRef = this.inputRef;\n }\n }\n #updateMaxLengthValidator() {\n const control = this.controlDir?.control;\n if (this.#previousMaxLengthValidator) {\n control?.removeValidators(this.#previousMaxLengthValidator);\n this.#previousMaxLengthValidator = undefined;\n }\n if (control && this.characterLimit !== undefined) {\n this.#previousMaxLengthValidator = Validators.maxLength(this.characterLimit);\n control.addValidators([this.#previousMaxLengthValidator]);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyInputBoxComponent, isStandalone: false, selector: \"sky-input-box\", inputs: { hasErrors: \"hasErrors\", disabled: \"disabled\", labelText: \"labelText\", characterLimit: \"characterLimit\", stacked: \"stacked\", helpPopoverTitle: \"helpPopoverTitle\", helpPopoverContent: \"helpPopoverContent\", helpKey: \"helpKey\", hintText: \"hintText\" }, host: { properties: { \"class\": \"this.cssClass\" } }, providers: [\n SkyContentInfoProvider,\n SkyInputBoxAdapterService,\n SkyInputBoxHostService,\n {\n provide: SKY_FORM_ERRORS_ENABLED,\n useValue: true,\n },\n ], queries: [{ propertyName: \"formControl\", first: true, predicate: FormControlDirective, descendants: true }, { propertyName: \"formControlByName\", first: true, predicate: FormControlName, descendants: true }, { propertyName: \"ngModel\", first: true, predicate: NgModel, descendants: true }, { propertyName: \"inputRef\", first: true, predicate: SkyInputBoxControlDirective, descendants: true, read: ElementRef }], ngImport: i0, template: \"<div\\n *skyThemeIf=\\\"'default'\\\"\\n class=\\\"sky-input-box\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-disabled': isDisabled\\n }\\\"\\n>\\n <div class=\\\"sky-form-group\\\">\\n <div class=\\\"sky-input-box-label-wrapper\\\">\\n <ng-container *ngTemplateOutlet=\\\"labelTemplate\\\" /><ng-container\\n *ngTemplateOutlet=\\\"inlineHelpTemplate\\\"\\n />\\n <ng-container *ngTemplateOutlet=\\\"characterCountTemplate\\\" />\\n </div>\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"buttonsLeftTemplate\\\" />\\n <div\\n class=\\\"sky-input-box-input-group-inner\\\"\\n [ngClass]=\\\"{\\n 'sky-field-status-active': formControlHasFocus,\\n 'sky-field-status-invalid': hasErrorsComputed\\n }\\\"\\n (focusin)=\\\"formControlFocusIn()\\\"\\n (focusout)=\\\"formControlFocusOut()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetLeftTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"inputTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"buttonsInsetTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"buttonsTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"hintTextTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"errorLabelTemplate\\\" />\\n </div>\\n</div>\\n\\n<div\\n *skyThemeIf=\\\"'modern'\\\"\\n class=\\\"sky-input-box\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-disabled': isDisabled\\n }\\\"\\n>\\n <div class=\\\"sky-input-box-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"buttonsLeftTemplate\\\" />\\n <div\\n class=\\\"sky-input-box-group-form-control\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-group-form-control-focus': formControlHasFocus,\\n 'sky-input-box-group-form-control-invalid': hasErrorsComputed\\n }\\\"\\n (focusin)=\\\"formControlFocusIn()\\\"\\n (focusout)=\\\"formControlFocusOut()\\\"\\n >\\n <div class=\\\"sky-form-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetLeftTemplate\\\" />\\n <div class=\\\"sky-input-box-form-group-inner\\\">\\n <div class=\\\"sky-input-box-label-wrapper\\\">\\n <ng-container *ngTemplateOutlet=\\\"labelTemplate\\\" /><ng-container\\n *ngTemplateOutlet=\\\"inlineHelpTemplate\\\"\\n />\\n <ng-container *ngTemplateOutlet=\\\"characterCountTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"inputTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"buttonsInsetTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetTemplate\\\" />\\n </div>\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"buttonsTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"hintTextTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"errorLabelTemplate\\\" />\\n</div>\\n\\n<ng-template #labelTemplate>\\n <ng-content select=\\\".sky-control-label\\\" />\\n @if (labelText) {\\n <label\\n class=\\\"sky-control-label\\\"\\n [attr.aria-label]=\\\"\\n characterLimit !== undefined\\n ? labelText +\\n ' ' +\\n ('skyux_character_count_message'\\n | skyLibResources: characterCountScreenReader : characterLimit)\\n : null\\n \\\"\\n [for]=\\\"controlId\\\"\\n [id]=\\\"labelId\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': required\\n }\\\"\\n >{{ labelText }}</label\\n >\\n }\\n</ng-template>\\n\\n<ng-template #inlineHelpTemplate>\\n @if ((helpPopoverContent || helpKey) && labelText) {\\n <sky-help-inline\\n class=\\\"sky-control-help\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n />\\n }\\n <ng-content select=\\\".sky-control-help\\\" />\\n</ng-template>\\n\\n<ng-template #characterCountTemplate>\\n @if (characterLimit !== undefined) {\\n <sky-character-counter-indicator\\n [characterCount]=\\\"controlDir?.value?.length || 0\\\"\\n [characterCountLimit]=\\\"characterLimit\\\"\\n />\\n }\\n <ng-content select=\\\"sky-character-counter-indicator\\\" />\\n</ng-template>\\n\\n<ng-template #inputTemplate>\\n <ng-content\\n select=\\\"input,select,.sky-form-control:not(textarea),sky-autocomplete,sky-text-editor\\\"\\n />\\n @if (hostInputTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostInputTemplate\\\" />\\n }\\n <ng-content select=\\\"textarea\\\" />\\n</ng-template>\\n\\n<ng-template #buttonsLeftTemplate>\\n <ng-content select=\\\".sky-input-group-btn.sky-input-box-btn-left\\\" />\\n @if (hostButtonsLeftTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostButtonsLeftTemplate\\\" />\\n }\\n</ng-template>\\n\\n<ng-template #buttonsTemplate>\\n <ng-content\\n select=\\\".sky-input-group-btn:not(.sky-input-box-btn-left):not(.sky-input-box-btn-inset)\\\"\\n />\\n @if (hostButtonsTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostButtonsTemplate\\\" />\\n }\\n</ng-template>\\n\\n<ng-template #buttonsInsetTemplate>\\n <ng-content select=\\\".sky-input-group-btn.sky-input-box-btn-inset\\\" />\\n @if (hostButtonsInsetTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostButtonsInsetTemplate\\\" />\\n }\\n</ng-template>\\n\\n<ng-template #iconsInsetTemplate>\\n <div class=\\\"sky-input-box-icon-inset-wrapper\\\" (click)=\\\"onInsetIconClick()\\\">\\n <ng-content select=\\\".sky-input-group-icon.sky-input-box-icon-inset\\\" />\\n @if (hostIconsInsetTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostIconsInsetTemplate\\\" />\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #iconsInsetLeftTemplate>\\n <div\\n class=\\\"sky-input-box-icon-inset-left-wrapper\\\"\\n (click)=\\\"onInsetIconClick()\\\"\\n >\\n <ng-content select=\\\".sky-input-group-icon.sky-input-box-icon-inset-left\\\" />\\n @if (hostIconsInsetLeftTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostIconsInsetLeftTemplate\\\" />\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #errorLabelTemplate>\\n <sky-form-errors\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"controlDir?.errors\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"controlDir?.touched\\\"\\n [dirty]=\\\"controlDir?.dirty\\\"\\n >\\n <ng-content\\n select=\\\"sky-form-error,span.sky-input-box-descendent-form-error\\\"\\n />\\n </sky-form-errors>\\n <ng-content select=\\\".sky-error-label,.sky-error-indicator\\\" />\\n</ng-template>\\n\\n<ng-template #hintTextTemplate>\\n @if (hintText || hostHintText) {\\n <div\\n class=\\\"sky-input-box-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-hint-text-hidden': hintTextHidden,\\n 'sky-screen-reader-only': hintTextScreenReaderOnly\\n }\\\"\\n [id]=\\\"hintTextId\\\"\\n >\\n {{ hintText | skyInputBoxHintText: hostHintText }}\\n </div>\\n }\\n</ng-template>\\n\", styles: [\".sky-input-box:not(.sky-theme-modern *){--sky-override-button-width: 33px;--sky-override-input-box-error-margin-top: 5px;--sky-override-input-box-form-errors-margin-left: 0;--sky-override-input-box-hint-margin-left: 0;--sky-override-input-box-hint-margin-top: var(--sky-margin-stacked-xs);--sky-override-input-box-select-border-radius: 0}sky-input-box{--sky-comp-override-input-box-group-background-color: transparent;--sky-comp-override-input-box-group-background-color-active: transparent;--sky-comp-override-input-box-group-background-color-hover: transparent;--sky-comp-override-input-box-group-background-color-focused: transparent}.sky-input-box{--sky-input-box-button-width: var( --sky-override-button-width, var(--sky-input-box-height) )}.sky-theme-modern sky-input-box{--sky-comp-override-input-box-group-background-color: var( --sky-color-background-input-base );--sky-comp-override-input-box-group-background-color-active: var( --sky-color-background-input-base );--sky-comp-override-input-box-group-background-color-disabled: var( --sky-color-background-input-disabled );--sky-comp-override-input-box-group-background-color-hover: var( --sky-color-background-input-base );--sky-comp-override-input-box-group-background-color-focused: var( --sky-color-background-input-base )}sky-input-box{display:block}sky-input-box .sky-error-indicator{margin-top:var(--sky-override-input-box-error-margin-top, var(--sky-space-gap-stacked_supplemental-s))}sky-input-box sky-form-error,sky-input-box .sky-error-label,sky-input-box .sky-error-indicator{margin-left:var(--sky-override-input-box-form-errors-margin-left, var(--sky-comp-input-label-space-inset-left));display:block}sky-input-box .sky-form-group{display:flex;flex-wrap:wrap;background-color:var(--sky-comp-override-input-box-group-background-color)}sky-input-box .sky-form-group:has(:active){background-color:var(--sky-comp-override-input-box-group-background-color-active)}sky-input-box .sky-form-group:hover:not(:has(:active)){background-color:var(--sky-comp-override-input-box-group-background-color-hover)}sky-input-box .sky-form-group:focus-within:not(:has(:active)){background-color:var(--sky-comp-override-input-box-group-background-color-focused)}sky-input-box .sky-form-group .sky-input-box-label-wrapper{display:flex;width:100%}sky-input-box .sky-form-group select.sky-form-control{border-radius:var(--sky-override-input-box-select-border-radius, var(--sky-border-radius-s))}sky-input-box .sky-input-box-input-group-inner{display:flex;background-color:#fff;width:100%;z-index:1}sky-input-box .sky-input-box-input-group-inner:not(.sky-field-status-active):not(.sky-field-status-invalid){border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}sky-input-box .sky-input-box-btn-inset .sky-btn{background-color:transparent;border:none}sky-input-box .sky-input-group-btn .sky-btn{padding:4.5px 12px}sky-input-box .sky-input-box-icon-inset-wrapper,sky-input-box .sky-input-box-icon-inset-left-wrapper{display:flex}sky-input-box .sky-input-box-icon-inset-wrapper .sky-input-group-icon,sky-input-box .sky-input-box-icon-inset-left-wrapper .sky-input-group-icon{width:var(--sky-input-box-button-width);display:flex;align-items:center;justify-content:center}sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-wrapper,sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-left-wrapper{background-color:#cdcfd2}sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-wrapper .sky-icon,sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-left-wrapper .sky-icon{color:#686c73}sky-input-box sky-character-counter-indicator{text-align:right;margin-bottom:5px;margin-left:auto}sky-input-box .sky-control-label+sky-character-counter-indicator{flex-shrink:.001}sky-input-box .sky-form-control,sky-input-box .sky-form-control:focus{border:none;flex-basis:100%}sky-input-box .sky-form-control:focus,sky-input-box .sky-form-control.ng-invalid.ng-touched,sky-input-box .sky-form-control:focus:focus,sky-input-box .sky-form-control:focus.ng-invalid.ng-touched{border:none;box-shadow:none}sky-input-box .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 0 0 10px;width:initial}sky-input-box .sky-input-box-hint-text{flex-basis:100%;margin-left:var(--sky-override-input-box-hint-margin-left, var(--sky-comp-input-label-space-inset-left));margin-top:var(--sky-override-input-box-hint-margin-top, var(--sky-space-gap-stacked_supplemental-s));text-align:left}sky-input-box .sky-input-box-hint-text.sky-input-box-hint-text-hidden{visibility:hidden}.sky-theme-modern .sky-input-box{--sky-input-box-space-top: calc( calc( var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) ) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom) );--sky-input-box-margin-top: calc(var(--sky-input-box-space-top) * -1);--sky-input-box-height: calc( var(--sky-comp-input-value-space-inset-bottom) + calc( var(--sky-font-size-input-val) * var(--sky-font-line_height-input-val) ) + var(--sky-input-box-space-top) )}.sky-theme-modern .sky-input-box .sky-input-box-group{display:flex}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control{flex-grow:1;position:relative}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control:first-child .sky-form-group{border-top-left-radius:var(--sky-border-radius-s);border-bottom-left-radius:var(--sky-border-radius-s)}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control:last-child .sky-form-group{border-top-right-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-s)}.sky-theme-modern .sky-input-box .sky-input-box-form-group-inner{display:flex;flex-grow:1;flex-wrap:wrap}.sky-theme-modern .sky-input-box .sky-input-group-btn .sky-btn{border-radius:0;color:var(--sky-color-icon-input-action);margin:0;padding:0;position:relative;transition:border-color .15s,box-shadow .15s,color .15s;width:var(--sky-input-box-button-width)}.sky-theme-modern .sky-input-box .sky-input-group-btn .sky-btn .sky-icon{font-size:24px}.sky-theme-modern .sky-input-box .sky-input-group-btn:first-child .sky-btn{border-top-left-radius:var(--sky-border-radius-s);border-bottom-left-radius:var(--sky-border-radius-s);margin-right:calc(var(--sky-border-width-input-base) * -1)}.sky-theme-modern .sky-input-box .sky-input-group-btn:first-child .sky-btn:focus{z-index:1}.sky-theme-modern .sky-input-box .sky-input-group-btn:last-child .sky-btn{border-top-right-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-s)}.sky-theme-modern .sky-input-box .sky-input-group-icon .sky-icon{color:var(--sky-color-icon-input-action);font-size:24px}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control-focus:not(:last-child),.sky-theme-modern .sky-input-box .sky-input-box-group-form-control-invalid:not(:last-child),.sky-theme-modern .sky-input-box .sky-input-group-btn:focus-within:not(:last-child){z-index:1}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control-focus:not(:active)+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-focus) * -1)}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control:active+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-active) * -1)}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-base) * -1)}.sky-theme-modern .sky-input-box .sky-input-group-btn+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-base) * -1)}.sky-theme-modern .sky-input-box .sky-form-group{color:var(--sky-color-text-default);flex-wrap:nowrap;margin-bottom:0;padding:0}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper{padding:0 var(--sky-comp-input-value-space-inset-right) 0 var(--sky-comp-input-value-space-inset-left)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper sky-character-counter-indicator{margin-bottom:0;position:relative;z-index:2}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-help{z-index:4}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label{padding-top:var(--sky-comp-input-label-space-inset-top);padding-bottom:var(--sky-comp-input-label-space-inset-bottom);font-style:var(--sky-font-style-input-label);font-weight:var(--sky-font-style-input-label)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label:has(+sky-character-counter-indicator){margin-right:var(--sky-comp-input-label-space-inset-right)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-character-count-label{font-size:var(--sky-font-size-input-label);letter-spacing:var(--sky-font-letter_spacing-input-label);line-height:var(--sky-font-line_height-input-label);display:inline-block}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-help{margin:3px 0 -3px var(--sky-space-gap-text_action-xs)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-help:not(:last-child){margin-right:var(--sky-comp-input-value-space-inset-right)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper sky-character-counter-indicator{margin-left:auto;padding:var(--sky-comp-input-label-space-inset-top) 0 var(--sky-comp-input-label-space-inset-bottom);font-size:var(--sky-font-size-input-label)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control{margin-top:var(--sky-input-box-margin-top);padding-top:var(--sky-input-box-space-top)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control{background-color:transparent;border:none;border-radius:var(--sky-border-radius-s);font-size:var(--sky-font-size-input-val);height:auto;line-height:var(--sky-font-line_height-input-val);padding-right:var(--sky-comp-input-value-space-inset-right);padding-bottom:var(--sky-comp-input-value-space-inset-bottom);padding-left:var(--sky-comp-input-value-space-inset-left);position:relative}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:autofill,.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:-webkit-autofill{box-shadow:none!important;clip-path:inset(var(--sky-input-box-input-border-width) round var(--sky-border-radius-s))!important}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:autofill:hover,.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:-webkit-autofill:hover{clip-path:inset(var(--sky-input-box-input-border-width) round var(--sky-border-radius-s))!important}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:focus,.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control.ng-invalid{box-shadow:none;outline:none}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control::-webkit-input-placeholder{font-size:var(--sky-font-size-input-val)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control::-moz-placeholder{font-size:var(--sky-font-size-input-val)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-controlinput:-moz-placeholder{font-size:var(--sky-font-size-input-val)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:hover+.sky-form-control:autofill,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:hover+.sky-form-control:-webkit-autofill{clip-path:inset(var(--sky-input-box-input-border-width) round var(--sky-border-radius-s))!important}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-group-btn.sky-input-box-btn-inset .sky-btn{background-color:transparent;border-top-right-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-s);transition-property:none}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-group-btn.sky-input-box-btn-inset .sky-btn:not(:active):not(:focus):not(:hover){box-shadow:none}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+.sky-form-control,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+* .sky-form-control{margin-top:0}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+.sky-form-control:not(textarea),.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+* .sky-form-control:not(textarea){padding-top:var(--sky-comp-input-value-space-inset-top)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+textarea.sky-form-control,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+* textarea.sky-form-control{border-top:var(--sky-comp-input-value-space-inset-top) solid transparent}.sky-theme-modern .sky-input-box .sky-form-group select.sky-form-control{background-position-x:100%;z-index:3}.sky-theme-modern .sky-input-box .sky-form-group textarea.sky-form-control{margin-top:var(--sky-input-box-margin-top);padding-top:0;resize:vertical;border-top:var(--sky-input-box-space-top) solid transparent}.sky-theme-modern .sky-input-box .sky-form-group textarea.sky-form-control:autofill,.sky-theme-modern .sky-input-box .sky-form-group textarea.sky-form-control:-webkit-autofill{border-top:var(--sky-input-box-space-top) solid transparent!important}.sky-theme-modern .sky-input-box .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 0 0 var(--sky-comp-input-value-space-inset-left);width:initial}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control .sky-form-group{border:none;box-shadow:var(--sky-input-box-box-shadow-with-elevation, inset 0 0 0 var(--sky-input-box-input-border-width) var(--sky-comp-override-input-box-input-border-color), var(--sky-comp-override-input-box-input-elevation-shadow))}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled){--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-base );--sky-input-box-input-border-width: var(--sky-border-width-input-base);--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-input-base );--sky-input-box-button-border-color: var( --sky-color-border-action-input-base );--sky-input-box-button-border-width: var(--sky-border-width-action-base);--sky-input-box-button-background-color: var( --sky-color-background-action-input-base );--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-base )}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn{border:none;box-shadow:var(--sky-input-box-button-box-shadow-with-focus-elevation, inset 0 0 0 var(--sky-input-box-button-border-width) var(--sky-input-box-button-border-color), var(--sky-input-box-button-elevation-shadow));background-color:var(--sky-input-box-button-background-color)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:hover{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-hover );--sky-input-box-input-border-width: var(--sky-border-width-input-hover);z-index:1}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:active{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-active );--sky-input-box-input-border-width: var( --sky-border-width-input-active )}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:active .sky-form-group{color:var(--sky-color-text-action)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active),.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active).sky-input-box-group-form-control-invalid{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-focus );--sky-input-box-input-border-width: var(--sky-border-width-input-focus);--sky-input-box-box-shadow-with-elevation: inset 0 0 0 var(--sky-input-box-input-border-width) var(--sky-comp-override-input-box-input-border-color), var(--sky-elevation-input-base);z-index:1}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active) .sky-form-group,.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active).sky-input-box-group-form-control-invalid .sky-form-group{color:var(--sky-color-text-action)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-invalid{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-error );--sky-input-box-input-border-width: var(--sky-border-width-input-error)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-invalid .sky-form-group{color:var(--sky-color-text-danger)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn:hover{--sky-input-box-button-border-color: var( --sky-color-border-action-input-hover );--sky-input-box-button-border-width: var( --sky-border-width-action-hover );--sky-input-box-button-background-color: var( --sky-color-background-action-input-hover );--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-hover );z-index:1}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn:active{--sky-input-box-button-border-color: var( --sky-color-border-action-input-active );--sky-input-box-button-border-width: var( --sky-border-width-action-active );--sky-input-box-button-background-color: var( --sky-color-background-action-input-active );--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-active );color:var(--sky-color-text-default);z-index:2}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn:focus:not(:active){--sky-input-box-button-border-color: var( --sky-color-border-action-input-focus );--sky-input-box-button-border-width: var( --sky-border-width-action-focus );--sky-input-box-button-background-color: var( --sky-color-background-action-input-focus );--sky-input-box-button-box-shadow-with-focus-elevation: inset 0 0 0 var(--sky-input-box-button-border-width) var(--sky-input-box-button-border-color), var(--sky-elevation-action-input-focus);--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-focus );color:var(--sky-color-text-default);outline:none;z-index:2}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-form-group{transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-form-group .sky-control-label{transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-form-group{border:none;--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-disabled );--sky-input-box-input-border-width: var( --sky-border-width-input-disabled );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-input-disabled )}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-btn .sky-btn{border:none;color:var(--sky-color-icon-deemphasized);box-shadow:inset 0 0 0 var(--sky-border-width-action-disabled) var(--sky-color-border-action-input-disabled),var(--sky-elevation-action-input-disabled);background-color:var(--sky-comp-override-input-box-group-background-color-disabled)}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-form-control,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-control-label,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-btn{cursor:not-allowed}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-box-icon-inset-wrapper,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-box-icon-inset-left-wrapper{background-color:transparent}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-form-group,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-btn .sky-btn{background-color:var(--sky-comp-override-input-box-group-background-color-disabled)}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-icon{color:var(--sky-color-icon-deemphasized)}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i2.SkyCharacterCounterIndicatorComponent, selector: \"sky-character-counter-indicator\", inputs: [\"characterCount\", \"characterCountLimit\"] }, { kind: \"component\", type: i3.SkyFormErrorsComponent, selector: \"sky-form-errors\", inputs: [\"errors\", \"labelText\", \"touched\", \"dirty\"] }, { kind: \"component\", type: i4.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"directive\", type: i5.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"directive\", type: i5.λ3, selector: \"[skyThemeIf]\", inputs: [\"skyThemeIf\"] }, { kind: \"pipe\", type: i6.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"pipe\", type: i7.SkyInputBoxHintTextPipe, name: \"skyInputBoxHintText\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-input-box', providers: [\n SkyContentInfoProvider,\n SkyInputBoxAdapterService,\n SkyInputBoxHostService,\n {\n provide: SKY_FORM_ERRORS_ENABLED,\n useValue: true,\n },\n ], encapsulation: ViewEncapsulation.None, standalone: false, template: \"<div\\n *skyThemeIf=\\\"'default'\\\"\\n class=\\\"sky-input-box\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-disabled': isDisabled\\n }\\\"\\n>\\n <div class=\\\"sky-form-group\\\">\\n <div class=\\\"sky-input-box-label-wrapper\\\">\\n <ng-container *ngTemplateOutlet=\\\"labelTemplate\\\" /><ng-container\\n *ngTemplateOutlet=\\\"inlineHelpTemplate\\\"\\n />\\n <ng-container *ngTemplateOutlet=\\\"characterCountTemplate\\\" />\\n </div>\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"buttonsLeftTemplate\\\" />\\n <div\\n class=\\\"sky-input-box-input-group-inner\\\"\\n [ngClass]=\\\"{\\n 'sky-field-status-active': formControlHasFocus,\\n 'sky-field-status-invalid': hasErrorsComputed\\n }\\\"\\n (focusin)=\\\"formControlFocusIn()\\\"\\n (focusout)=\\\"formControlFocusOut()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetLeftTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"inputTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"buttonsInsetTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"buttonsTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"hintTextTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"errorLabelTemplate\\\" />\\n </div>\\n</div>\\n\\n<div\\n *skyThemeIf=\\\"'modern'\\\"\\n class=\\\"sky-input-box\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-disabled': isDisabled\\n }\\\"\\n>\\n <div class=\\\"sky-input-box-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"buttonsLeftTemplate\\\" />\\n <div\\n class=\\\"sky-input-box-group-form-control\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-group-form-control-focus': formControlHasFocus,\\n 'sky-input-box-group-form-control-invalid': hasErrorsComputed\\n }\\\"\\n (focusin)=\\\"formControlFocusIn()\\\"\\n (focusout)=\\\"formControlFocusOut()\\\"\\n >\\n <div class=\\\"sky-form-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetLeftTemplate\\\" />\\n <div class=\\\"sky-input-box-form-group-inner\\\">\\n <div class=\\\"sky-input-box-label-wrapper\\\">\\n <ng-container *ngTemplateOutlet=\\\"labelTemplate\\\" /><ng-container\\n *ngTemplateOutlet=\\\"inlineHelpTemplate\\\"\\n />\\n <ng-container *ngTemplateOutlet=\\\"characterCountTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"inputTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"buttonsInsetTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"iconsInsetTemplate\\\" />\\n </div>\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"buttonsTemplate\\\" />\\n </div>\\n <ng-container *ngTemplateOutlet=\\\"hintTextTemplate\\\" />\\n <ng-container *ngTemplateOutlet=\\\"errorLabelTemplate\\\" />\\n</div>\\n\\n<ng-template #labelTemplate>\\n <ng-content select=\\\".sky-control-label\\\" />\\n @if (labelText) {\\n <label\\n class=\\\"sky-control-label\\\"\\n [attr.aria-label]=\\\"\\n characterLimit !== undefined\\n ? labelText +\\n ' ' +\\n ('skyux_character_count_message'\\n | skyLibResources: characterCountScreenReader : characterLimit)\\n : null\\n \\\"\\n [for]=\\\"controlId\\\"\\n [id]=\\\"labelId\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': required\\n }\\\"\\n >{{ labelText }}</label\\n >\\n }\\n</ng-template>\\n\\n<ng-template #inlineHelpTemplate>\\n @if ((helpPopoverContent || helpKey) && labelText) {\\n <sky-help-inline\\n class=\\\"sky-control-help\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n />\\n }\\n <ng-content select=\\\".sky-control-help\\\" />\\n</ng-template>\\n\\n<ng-template #characterCountTemplate>\\n @if (characterLimit !== undefined) {\\n <sky-character-counter-indicator\\n [characterCount]=\\\"controlDir?.value?.length || 0\\\"\\n [characterCountLimit]=\\\"characterLimit\\\"\\n />\\n }\\n <ng-content select=\\\"sky-character-counter-indicator\\\" />\\n</ng-template>\\n\\n<ng-template #inputTemplate>\\n <ng-content\\n select=\\\"input,select,.sky-form-control:not(textarea),sky-autocomplete,sky-text-editor\\\"\\n />\\n @if (hostInputTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostInputTemplate\\\" />\\n }\\n <ng-content select=\\\"textarea\\\" />\\n</ng-template>\\n\\n<ng-template #buttonsLeftTemplate>\\n <ng-content select=\\\".sky-input-group-btn.sky-input-box-btn-left\\\" />\\n @if (hostButtonsLeftTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostButtonsLeftTemplate\\\" />\\n }\\n</ng-template>\\n\\n<ng-template #buttonsTemplate>\\n <ng-content\\n select=\\\".sky-input-group-btn:not(.sky-input-box-btn-left):not(.sky-input-box-btn-inset)\\\"\\n />\\n @if (hostButtonsTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostButtonsTemplate\\\" />\\n }\\n</ng-template>\\n\\n<ng-template #buttonsInsetTemplate>\\n <ng-content select=\\\".sky-input-group-btn.sky-input-box-btn-inset\\\" />\\n @if (hostButtonsInsetTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostButtonsInsetTemplate\\\" />\\n }\\n</ng-template>\\n\\n<ng-template #iconsInsetTemplate>\\n <div class=\\\"sky-input-box-icon-inset-wrapper\\\" (click)=\\\"onInsetIconClick()\\\">\\n <ng-content select=\\\".sky-input-group-icon.sky-input-box-icon-inset\\\" />\\n @if (hostIconsInsetTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostIconsInsetTemplate\\\" />\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #iconsInsetLeftTemplate>\\n <div\\n class=\\\"sky-input-box-icon-inset-left-wrapper\\\"\\n (click)=\\\"onInsetIconClick()\\\"\\n >\\n <ng-content select=\\\".sky-input-group-icon.sky-input-box-icon-inset-left\\\" />\\n @if (hostIconsInsetLeftTemplate) {\\n <ng-container [ngTemplateOutlet]=\\\"hostIconsInsetLeftTemplate\\\" />\\n }\\n </div>\\n</ng-template>\\n\\n<ng-template #errorLabelTemplate>\\n <sky-form-errors\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"controlDir?.errors\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"controlDir?.touched\\\"\\n [dirty]=\\\"controlDir?.dirty\\\"\\n >\\n <ng-content\\n select=\\\"sky-form-error,span.sky-input-box-descendent-form-error\\\"\\n />\\n </sky-form-errors>\\n <ng-content select=\\\".sky-error-label,.sky-error-indicator\\\" />\\n</ng-template>\\n\\n<ng-template #hintTextTemplate>\\n @if (hintText || hostHintText) {\\n <div\\n class=\\\"sky-input-box-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n [ngClass]=\\\"{\\n 'sky-input-box-hint-text-hidden': hintTextHidden,\\n 'sky-screen-reader-only': hintTextScreenReaderOnly\\n }\\\"\\n [id]=\\\"hintTextId\\\"\\n >\\n {{ hintText | skyInputBoxHintText: hostHintText }}\\n </div>\\n }\\n</ng-template>\\n\", styles: [\".sky-input-box:not(.sky-theme-modern *){--sky-override-button-width: 33px;--sky-override-input-box-error-margin-top: 5px;--sky-override-input-box-form-errors-margin-left: 0;--sky-override-input-box-hint-margin-left: 0;--sky-override-input-box-hint-margin-top: var(--sky-margin-stacked-xs);--sky-override-input-box-select-border-radius: 0}sky-input-box{--sky-comp-override-input-box-group-background-color: transparent;--sky-comp-override-input-box-group-background-color-active: transparent;--sky-comp-override-input-box-group-background-color-hover: transparent;--sky-comp-override-input-box-group-background-color-focused: transparent}.sky-input-box{--sky-input-box-button-width: var( --sky-override-button-width, var(--sky-input-box-height) )}.sky-theme-modern sky-input-box{--sky-comp-override-input-box-group-background-color: var( --sky-color-background-input-base );--sky-comp-override-input-box-group-background-color-active: var( --sky-color-background-input-base );--sky-comp-override-input-box-group-background-color-disabled: var( --sky-color-background-input-disabled );--sky-comp-override-input-box-group-background-color-hover: var( --sky-color-background-input-base );--sky-comp-override-input-box-group-background-color-focused: var( --sky-color-background-input-base )}sky-input-box{display:block}sky-input-box .sky-error-indicator{margin-top:var(--sky-override-input-box-error-margin-top, var(--sky-space-gap-stacked_supplemental-s))}sky-input-box sky-form-error,sky-input-box .sky-error-label,sky-input-box .sky-error-indicator{margin-left:var(--sky-override-input-box-form-errors-margin-left, var(--sky-comp-input-label-space-inset-left));display:block}sky-input-box .sky-form-group{display:flex;flex-wrap:wrap;background-color:var(--sky-comp-override-input-box-group-background-color)}sky-input-box .sky-form-group:has(:active){background-color:var(--sky-comp-override-input-box-group-background-color-active)}sky-input-box .sky-form-group:hover:not(:has(:active)){background-color:var(--sky-comp-override-input-box-group-background-color-hover)}sky-input-box .sky-form-group:focus-within:not(:has(:active)){background-color:var(--sky-comp-override-input-box-group-background-color-focused)}sky-input-box .sky-form-group .sky-input-box-label-wrapper{display:flex;width:100%}sky-input-box .sky-form-group select.sky-form-control{border-radius:var(--sky-override-input-box-select-border-radius, var(--sky-border-radius-s))}sky-input-box .sky-input-box-input-group-inner{display:flex;background-color:#fff;width:100%;z-index:1}sky-input-box .sky-input-box-input-group-inner:not(.sky-field-status-active):not(.sky-field-status-invalid){border-top:1px solid #cdcfd2;border-bottom:1px solid #cdcfd2;border-left:1px solid #cdcfd2;border-right:1px solid #cdcfd2}sky-input-box .sky-input-box-btn-inset .sky-btn{background-color:transparent;border:none}sky-input-box .sky-input-group-btn .sky-btn{padding:4.5px 12px}sky-input-box .sky-input-box-icon-inset-wrapper,sky-input-box .sky-input-box-icon-inset-left-wrapper{display:flex}sky-input-box .sky-input-box-icon-inset-wrapper .sky-input-group-icon,sky-input-box .sky-input-box-icon-inset-left-wrapper .sky-input-group-icon{width:var(--sky-input-box-button-width);display:flex;align-items:center;justify-content:center}sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-wrapper,sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-left-wrapper{background-color:#cdcfd2}sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-wrapper .sky-icon,sky-input-box .sky-input-box-disabled .sky-input-box-icon-inset-left-wrapper .sky-icon{color:#686c73}sky-input-box sky-character-counter-indicator{text-align:right;margin-bottom:5px;margin-left:auto}sky-input-box .sky-control-label+sky-character-counter-indicator{flex-shrink:.001}sky-input-box .sky-form-control,sky-input-box .sky-form-control:focus{border:none;flex-basis:100%}sky-input-box .sky-form-control:focus,sky-input-box .sky-form-control.ng-invalid.ng-touched,sky-input-box .sky-form-control:focus:focus,sky-input-box .sky-form-control:focus.ng-invalid.ng-touched{border:none;box-shadow:none}sky-input-box .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 0 0 10px;width:initial}sky-input-box .sky-input-box-hint-text{flex-basis:100%;margin-left:var(--sky-override-input-box-hint-margin-left, var(--sky-comp-input-label-space-inset-left));margin-top:var(--sky-override-input-box-hint-margin-top, var(--sky-space-gap-stacked_supplemental-s));text-align:left}sky-input-box .sky-input-box-hint-text.sky-input-box-hint-text-hidden{visibility:hidden}.sky-theme-modern .sky-input-box{--sky-input-box-space-top: calc( calc( var(--sky-font-line_height-input-label) * var(--sky-font-size-input-label) ) + var(--sky-comp-input-label-space-inset-top) + var(--sky-comp-input-label-space-inset-bottom) );--sky-input-box-margin-top: calc(var(--sky-input-box-space-top) * -1);--sky-input-box-height: calc( var(--sky-comp-input-value-space-inset-bottom) + calc( var(--sky-font-size-input-val) * var(--sky-font-line_height-input-val) ) + var(--sky-input-box-space-top) )}.sky-theme-modern .sky-input-box .sky-input-box-group{display:flex}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control{flex-grow:1;position:relative}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control:first-child .sky-form-group{border-top-left-radius:var(--sky-border-radius-s);border-bottom-left-radius:var(--sky-border-radius-s)}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control:last-child .sky-form-group{border-top-right-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-s)}.sky-theme-modern .sky-input-box .sky-input-box-form-group-inner{display:flex;flex-grow:1;flex-wrap:wrap}.sky-theme-modern .sky-input-box .sky-input-group-btn .sky-btn{border-radius:0;color:var(--sky-color-icon-input-action);margin:0;padding:0;position:relative;transition:border-color .15s,box-shadow .15s,color .15s;width:var(--sky-input-box-button-width)}.sky-theme-modern .sky-input-box .sky-input-group-btn .sky-btn .sky-icon{font-size:24px}.sky-theme-modern .sky-input-box .sky-input-group-btn:first-child .sky-btn{border-top-left-radius:var(--sky-border-radius-s);border-bottom-left-radius:var(--sky-border-radius-s);margin-right:calc(var(--sky-border-width-input-base) * -1)}.sky-theme-modern .sky-input-box .sky-input-group-btn:first-child .sky-btn:focus{z-index:1}.sky-theme-modern .sky-input-box .sky-input-group-btn:last-child .sky-btn{border-top-right-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-s)}.sky-theme-modern .sky-input-box .sky-input-group-icon .sky-icon{color:var(--sky-color-icon-input-action);font-size:24px}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control-focus:not(:last-child),.sky-theme-modern .sky-input-box .sky-input-box-group-form-control-invalid:not(:last-child),.sky-theme-modern .sky-input-box .sky-input-group-btn:focus-within:not(:last-child){z-index:1}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control-focus:not(:active)+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-focus) * -1)}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control:active+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-active) * -1)}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-base) * -1)}.sky-theme-modern .sky-input-box .sky-input-group-btn+.sky-input-group-btn .sky-btn{margin-left:calc(var(--sky-border-width-input-base) * -1)}.sky-theme-modern .sky-input-box .sky-form-group{color:var(--sky-color-text-default);flex-wrap:nowrap;margin-bottom:0;padding:0}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper{padding:0 var(--sky-comp-input-value-space-inset-right) 0 var(--sky-comp-input-value-space-inset-left)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper sky-character-counter-indicator{margin-bottom:0;position:relative;z-index:2}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-help{z-index:4}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label{padding-top:var(--sky-comp-input-label-space-inset-top);padding-bottom:var(--sky-comp-input-label-space-inset-bottom);font-style:var(--sky-font-style-input-label);font-weight:var(--sky-font-style-input-label)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label:has(+sky-character-counter-indicator){margin-right:var(--sky-comp-input-label-space-inset-right)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-label,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-character-count-label{font-size:var(--sky-font-size-input-label);letter-spacing:var(--sky-font-letter_spacing-input-label);line-height:var(--sky-font-line_height-input-label);display:inline-block}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-help{margin:3px 0 -3px var(--sky-space-gap-text_action-xs)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper .sky-control-help:not(:last-child){margin-right:var(--sky-comp-input-value-space-inset-right)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper sky-character-counter-indicator{margin-left:auto;padding:var(--sky-comp-input-label-space-inset-top) 0 var(--sky-comp-input-label-space-inset-bottom);font-size:var(--sky-font-size-input-label)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control{margin-top:var(--sky-input-box-margin-top);padding-top:var(--sky-input-box-space-top)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control{background-color:transparent;border:none;border-radius:var(--sky-border-radius-s);font-size:var(--sky-font-size-input-val);height:auto;line-height:var(--sky-font-line_height-input-val);padding-right:var(--sky-comp-input-value-space-inset-right);padding-bottom:var(--sky-comp-input-value-space-inset-bottom);padding-left:var(--sky-comp-input-value-space-inset-left);position:relative}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:autofill,.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:-webkit-autofill{box-shadow:none!important;clip-path:inset(var(--sky-input-box-input-border-width) round var(--sky-border-radius-s))!important}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:autofill:hover,.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:-webkit-autofill:hover{clip-path:inset(var(--sky-input-box-input-border-width) round var(--sky-border-radius-s))!important}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control:focus,.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control.ng-invalid{box-shadow:none;outline:none}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control::-webkit-input-placeholder{font-size:var(--sky-font-size-input-val)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-control::-moz-placeholder{font-size:var(--sky-font-size-input-val)}.sky-theme-modern .sky-input-box .sky-form-group .sky-form-controlinput:-moz-placeholder{font-size:var(--sky-font-size-input-val)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:hover+.sky-form-control:autofill,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:hover+.sky-form-control:-webkit-autofill{clip-path:inset(var(--sky-input-box-input-border-width) round var(--sky-border-radius-s))!important}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-group-btn.sky-input-box-btn-inset .sky-btn{background-color:transparent;border-top-right-radius:var(--sky-border-radius-s);border-bottom-right-radius:var(--sky-border-radius-s);transition-property:none}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-group-btn.sky-input-box-btn-inset .sky-btn:not(:active):not(:focus):not(:hover){box-shadow:none}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+.sky-form-control,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+* .sky-form-control{margin-top:0}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+.sky-form-control:not(textarea),.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+* .sky-form-control:not(textarea){padding-top:var(--sky-comp-input-value-space-inset-top)}.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+textarea.sky-form-control,.sky-theme-modern .sky-input-box .sky-form-group .sky-input-box-label-wrapper:empty+* textarea.sky-form-control{border-top:var(--sky-comp-input-value-space-inset-top) solid transparent}.sky-theme-modern .sky-input-box .sky-form-group select.sky-form-control{background-position-x:100%;z-index:3}.sky-theme-modern .sky-input-box .sky-form-group textarea.sky-form-control{margin-top:var(--sky-input-box-margin-top);padding-top:0;resize:vertical;border-top:var(--sky-input-box-space-top) solid transparent}.sky-theme-modern .sky-input-box .sky-form-group textarea.sky-form-control:autofill,.sky-theme-modern .sky-input-box .sky-form-group textarea.sky-form-control:-webkit-autofill{border-top:var(--sky-input-box-space-top) solid transparent!important}.sky-theme-modern .sky-input-box .sky-input-box-icon-inset-left-wrapper .sky-input-box-icon-inset-left{padding:0 0 0 var(--sky-comp-input-value-space-inset-left);width:initial}.sky-theme-modern .sky-input-box .sky-input-box-group-form-control .sky-form-group{border:none;box-shadow:var(--sky-input-box-box-shadow-with-elevation, inset 0 0 0 var(--sky-input-box-input-border-width) var(--sky-comp-override-input-box-input-border-color), var(--sky-comp-override-input-box-input-elevation-shadow))}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled){--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-base );--sky-input-box-input-border-width: var(--sky-border-width-input-base);--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-input-base );--sky-input-box-button-border-color: var( --sky-color-border-action-input-base );--sky-input-box-button-border-width: var(--sky-border-width-action-base);--sky-input-box-button-background-color: var( --sky-color-background-action-input-base );--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-base )}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn{border:none;box-shadow:var(--sky-input-box-button-box-shadow-with-focus-elevation, inset 0 0 0 var(--sky-input-box-button-border-width) var(--sky-input-box-button-border-color), var(--sky-input-box-button-elevation-shadow));background-color:var(--sky-input-box-button-background-color)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:hover{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-hover );--sky-input-box-input-border-width: var(--sky-border-width-input-hover);z-index:1}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:active{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-active );--sky-input-box-input-border-width: var( --sky-border-width-input-active )}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control:active .sky-form-group{color:var(--sky-color-text-action)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active),.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active).sky-input-box-group-form-control-invalid{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-focus );--sky-input-box-input-border-width: var(--sky-border-width-input-focus);--sky-input-box-box-shadow-with-elevation: inset 0 0 0 var(--sky-input-box-input-border-width) var(--sky-comp-override-input-box-input-border-color), var(--sky-elevation-input-base);z-index:1}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active) .sky-form-group,.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-focus:not(:active).sky-input-box-group-form-control-invalid .sky-form-group{color:var(--sky-color-text-action)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-invalid{--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-error );--sky-input-box-input-border-width: var(--sky-border-width-input-error)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-box-group-form-control-invalid .sky-form-group{color:var(--sky-color-text-danger)}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn:hover{--sky-input-box-button-border-color: var( --sky-color-border-action-input-hover );--sky-input-box-button-border-width: var( --sky-border-width-action-hover );--sky-input-box-button-background-color: var( --sky-color-background-action-input-hover );--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-hover );z-index:1}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn:active{--sky-input-box-button-border-color: var( --sky-color-border-action-input-active );--sky-input-box-button-border-width: var( --sky-border-width-action-active );--sky-input-box-button-background-color: var( --sky-color-background-action-input-active );--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-active );color:var(--sky-color-text-default);z-index:2}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-input-group-btn .sky-btn:focus:not(:active){--sky-input-box-button-border-color: var( --sky-color-border-action-input-focus );--sky-input-box-button-border-width: var( --sky-border-width-action-focus );--sky-input-box-button-background-color: var( --sky-color-background-action-input-focus );--sky-input-box-button-box-shadow-with-focus-elevation: inset 0 0 0 var(--sky-input-box-button-border-width) var(--sky-input-box-button-border-color), var(--sky-elevation-action-input-focus);--sky-input-box-button-elevation-shadow: var( --sky-elevation-action-input-focus );color:var(--sky-color-text-default);outline:none;z-index:2}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-form-group{transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-input-box:not(.sky-input-box-disabled) .sky-form-group .sky-control-label{transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-form-group{border:none;--sky-comp-override-input-box-input-border-color: var( --sky-color-border-input-disabled );--sky-input-box-input-border-width: var( --sky-border-width-input-disabled );--sky-comp-override-input-box-input-elevation-shadow: var( --sky-elevation-input-disabled )}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-btn .sky-btn{border:none;color:var(--sky-color-icon-deemphasized);box-shadow:inset 0 0 0 var(--sky-border-width-action-disabled) var(--sky-color-border-action-input-disabled),var(--sky-elevation-action-input-disabled);background-color:var(--sky-comp-override-input-box-group-background-color-disabled)}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-form-control,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-control-label,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-btn{cursor:not-allowed}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-box-icon-inset-wrapper,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-box-icon-inset-left-wrapper{background-color:transparent}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-form-group,.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-btn .sky-btn{background-color:var(--sky-comp-override-input-box-group-background-color-disabled)}.sky-theme-modern .sky-input-box.sky-input-box-disabled .sky-input-group-icon{color:var(--sky-color-icon-deemphasized)}\\n\"] }]\n }], propDecorators: { hasErrors: [{\n type: Input\n }], disabled: [{\n type: Input\n }], labelText: [{\n type: Input\n }], characterLimit: [{\n type: Input\n }], stacked: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], helpPopoverContent: [{\n type: Input\n }], helpKey: [{\n type: Input\n }], hintText: [{\n type: Input\n }], cssClass: [{\n type: HostBinding,\n args: ['class']\n }], formControl: [{\n type: ContentChild,\n args: [FormControlDirective]\n }], formControlByName: [{\n type: ContentChild,\n args: [FormControlName]\n }], ngModel: [{\n type: ContentChild,\n args: [NgModel]\n }], inputRef: [{\n type: ContentChild,\n args: [SkyInputBoxControlDirective, {\n read: ElementRef,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvaW5wdXQtYm94L2lucHV0LWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2lucHV0LWJveC9pbnB1dC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxFQUVULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsT0FBTyxFQUVQLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7QUFHbEU7O0dBRUc7QUFtQkgsTUFBTSxPQUFPLG9CQUFvQjtJQWxCakM7UUFx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QkFBMkIsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7K0dBL1ZVLG9CQUFvQjttR0FBcEIsb0JBQW9CLG1YQWRwQjtZQUNULHNCQUFzQjtZQUN0Qix5QkFBeUI7WUFDekIsc0JBQXNCO1lBQ3RCO2dCQUNFLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7U0FDRixtRUE0SWEsb0JBQW9CLG9GQUdwQixlQUFlLDBFQUdmLE9BQU8sMkVBR1AsMkJBQTJCLDJCQUNqQyxVQUFVLDZCQzdNcEIsNHBOQWlOQTs7NEZEcEphLG9CQUFvQjtrQkFsQmhDLFNBQVM7K0JBQ0UsZUFBZSxhQUdkO3dCQUNULHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6QixzQkFBc0I7d0JBQ3RCOzRCQUNFLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3FCQUNGLGlCQUdjLGlCQUFpQixDQUFDLElBQUksY0FDekIsS0FBSzs7c0JBaUJoQixLQUFLOztzQkFhTCxLQUFLOztzQkFRTCxLQUFLOztzQkFPTCxLQUFLOztzQkFnQkwsS0FBSzs7c0JBVUwsS0FBSzs7c0JBUUwsS0FBSzs7c0JBUUwsS0FBSzs7c0JBT0wsS0FBSzs7c0JBdUNMLFdBQVc7dUJBQUMsT0FBTzs7c0JBR25CLFlBQVk7dUJBQUMsb0JBQW9COztzQkFHakMsWUFBWTt1QkFBQyxlQUFlOztzQkFHNUIsWUFBWTt1QkFBQyxPQUFPOztzQkFHcEIsWUFBWTt1QkFBQywyQkFBMkIsRUFBRTt3QkFDekMsSUFBSSxFQUFFLFVBQVU7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQm9vbGVhbklucHV0LFxuICBOdW1iZXJJbnB1dCxcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5LFxuICBjb2VyY2VOdW1iZXJQcm9wZXJ0eSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUsXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICBGb3JtQ29udHJvbE5hbWUsXG4gIE5nTW9kZWwsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDb250ZW50SW5mb1Byb3ZpZGVyLCBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5cbmltcG9ydCB7IFNreUlucHV0Qm94QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2lucHV0LWJveC1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9pbnB1dC1ib3gtY29udHJvbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJy4vaW5wdXQtYm94LWhvc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveFBvcHVsYXRlQXJncyB9IGZyb20gJy4vaW5wdXQtYm94LXBvcHVsYXRlLWFyZ3MnO1xuXG4vKipcbiAqIEEgd3JhcHBlciBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBzdHlsaW5nIGFuZCBhY2Nlc3NpYmlsaXR5IHRvIGZvcm0gZWxlbWVudHMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1pbnB1dC1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFNreUNvbnRlbnRJbmZvUHJvdmlkZXIsXG4gICAgU2t5SW5wdXRCb3hBZGFwdGVyU2VydmljZSxcbiAgICBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELFxuICAgICAgdXNlVmFsdWU6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgLy8gTm90ZSB0aGF0IGNoYW5nZSBkZXRlY3Rpb24gaXMgbm90IHNldCB0byBPblB1c2g7IGRlZmF1bHQgY2hhbmdlIGRldGVjdGlvbiBhbGxvd3MgdGhlXG4gIC8vIGludmFsaWQgQ1NTIGNsYXNzIHRvIGJlIGFkZGVkIHdoZW4gdGhlIGNvbnRlbnQgY29udHJvbCdzIGludmFsaWQvZGlydHkgc3RhdGUgY2hhbmdlcy5cbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreUlucHV0Qm94Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3lcbntcbiAgI2NoYW5nZVJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICNpbnB1dEJveEhvc3RTdmMgPSBpbmplY3QoU2t5SW5wdXRCb3hIb3N0U2VydmljZSk7XG4gICNhZGFwdGVyU2VydmljZSA9IGluamVjdChTa3lJbnB1dEJveEFkYXB0ZXJTZXJ2aWNlKTtcbiAgI2lkU3ZjID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG4gICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2aXN1YWxseSBoaWdobGlnaHQgdGhlIGlucHV0IGJveCBpbiBhbiBlcnJvciBzdGF0ZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGlucHV0IGJveFxuICAgKiBkaXNwbGF5cyBpbiBhbiBlcnJvciBzdGF0ZSB3aGVuIGVpdGhlciB0aGUgYG5nTW9kZWxgIG9yIHRoZSBBbmd1bGFyIGBGb3JtQ29udHJvbGAgY29udGFpbnMgYW4gZXJyb3IuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhhc0Vycm9yczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byB2aXN1YWxseSBoaWdobGlnaHQgdGhlIGlucHV0IGJveCBhcyBkaXNhYmxlZC4gVG8gZGlzYWJsZSB0aGUgaW5wdXQgYm94J3NcbiAgICogaW5wdXQgZWxlbWVudCwgdXNlIHRoZSBIVE1MIGBkaXNhYmxlZGAgYXR0cmlidXRlIG9yIHRoZSBBbmd1bGFyIGBGb3JtQ29udHJvbC5kaXNhYmxlZGBcbiAgICogcHJvcGVydHkuIElmIHRoZSBpbnB1dCBlbGVtZW50IGlzIG1hcHBlZCB0byBhbiBBbmd1bGFyIGZvcm0gY29udHJvbFxuICAgKiAoZS5nLiBgZm9ybUNvbnRyb2xOYW1lYCwgYG5nTW9kZWxgLCBldGMuKSwgXCJkaXNhYmxlZFwiIHN0eWxlcyBhcmUgYXBwbGllZCBhdXRvbWF0aWNhbGx5O1xuICAgKiBpZiB0aGUgaW5wdXQgZWxlbWVudCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIEFuZ3VsYXIgZm9ybSBjb250cm9sLCB0aGUgYGRpc2FibGVkYFxuICAgKiBwcm9wZXJ0eSBvbiB0aGUgaW5wdXQgYm94IG11c3QgYmUgc2V0IHRvIGB0cnVlYCB0byB2aXN1YWxseSBpbmRpY2F0ZVxuICAgKiB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGlucHV0IGJveC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgaW5wdXQncyBsYWJlbCBhbmQgaW4ga25vd24gdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcy4gVGhlIGxhYmVsXG4gICAqIHdpbGwgYXV0b21hdGljYWxseSBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGBpbnB1dGAsIGBzZWxlY3RgLCBgdGV4dGFyZWFgLCBvciBjb21wYXRpYmxlIFNLWSBVWFxuICAgKiBjb21wb25lbnQgaW5jbHVkZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB0aGUgaW5wdXQuIEEgW1NLWSBVWCBjaGFyYWN0ZXIgY291bnRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9jaGFyYWN0ZXItY291bnQpXG4gICAqIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBpbnB1dCBlbGVtZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbGlkYXRvci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY2hhcmFjdGVyTGltaXQodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy4jX2NoYXJhY3RlckxpbWl0ID1cbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdW5kZWZpbmVkKTtcblxuICAgIHRoaXMuI3VwZGF0ZU1heExlbmd0aFZhbGlkYXRvcigpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFyYWN0ZXJMaW1pdCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfY2hhcmFjdGVyTGltaXQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgYm94IGlzIHN0YWNrZWQgb24gYW5vdGhlciBpbnB1dCBib3guIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBpbnB1dCBib3guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YWNrZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuI19zdGFja2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLmNzc0NsYXNzID0gdGhpcy4jX3N0YWNrZWQgPyAnc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgcG9wb3Zlci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgaGVscFBvcG92ZXJDb250ZW50YCBpc1xuICAgKiBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlclRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgaW5wdXQgYm94IGxhYmVsLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgaW5wdXQgYm94IGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoaW50VGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2hpbnRUZXh0ID0gdmFsdWU7XG5cbiAgICB0aGlzLmFyaWFEZXNjcmliZWRCeS5uZXh0KHZhbHVlID8gdGhpcy5oaW50VGV4dElkIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGludFRleHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2hpbnRUZXh0O1xuICB9XG5cbiAgcHVibGljIGhvc3RJbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaG9zdEJ1dHRvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhvc3RCdXR0b25zSW5zZXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGhvc3RCdXR0b25zTGVmdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZm9ybUNvbnRyb2xIYXNGb2N1cyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBob3N0SWNvbnNJbnNldFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaG9zdEljb25zSW5zZXRMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBoaW50VGV4dEhpZGRlbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoaW50VGV4dFNjcmVlblJlYWRlck9ubHkgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgaG9zdEhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsSWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIHB1YmxpYyByZWFkb25seSBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuICBwdWJsaWMgcmVhZG9ubHkgaGludFRleHRJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHVibGljIHJlYWRvbmx5IGFyaWFEZXNjcmliZWRCeSA9IG5ldyBSZXBsYXlTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oMSk7XG5cbiAgI3JlcXVpcmVkQnlGb3JtRmllbGQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHB1YmxpYyBjc3NDbGFzcyA9ICcnO1xuXG4gIEBDb250ZW50Q2hpbGQoRm9ybUNvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZChGb3JtQ29udHJvbE5hbWUpXG4gIHB1YmxpYyBmb3JtQ29udHJvbEJ5TmFtZTogRm9ybUNvbnRyb2xOYW1lIHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGQoTmdNb2RlbClcbiAgcHVibGljIG5nTW9kZWw6IE5nTW9kZWwgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZChTa3lJbnB1dEJveENvbnRyb2xEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgaW5wdXRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGNvbnRyb2xEaXI6IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5kaXNhYmxlZCB8fFxuICAgICAgdGhpcy5jb250cm9sRGlyPy5jb250cm9sPy5kaXNhYmxlZCB8fFxuICAgICAgdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZGlzYWJsZWRcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBoYXNFcnJvcnNDb21wdXRlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5oYXNFcnJvcnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuI2NvbnRyb2xIYXNFcnJvcnModGhpcy5jb250cm9sRGlyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5oYXNFcnJvcnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLiNoYXNSZXF1aXJlZFZhbGlkYXRvcigpIHx8XG4gICAgICB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50LnJlcXVpcmVkIHx8XG4gICAgICB0aGlzLiNyZXF1aXJlZEJ5Rm9ybUZpZWxkXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGFyYWN0ZXJDb3VudFNjcmVlblJlYWRlciA9IDA7XG5cbiAgI19zdGFja2VkID0gZmFsc2U7XG4gICNfY2hhcmFjdGVyTGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI19oaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNwcmV2aW91c0lucHV0UmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuICAjcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3I6IFZhbGlkYXRvckZuIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2lucHV0Qm94SG9zdFN2Yy5pbml0KHRoaXMpO1xuXG4gICAgdGhpcy4jaW5wdXRCb3hIb3N0U3ZjLnJlcXVpcmVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXF1aXJlZCkgPT4ge1xuICAgICAgICB0aGlzLiNyZXF1aXJlZEJ5Rm9ybUZpZWxkID0gcmVxdWlyZWQ7XG4gICAgICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xEaXIgPVxuICAgICAgdGhpcy5mb3JtQ29udHJvbCB8fCB0aGlzLmZvcm1Db250cm9sQnlOYW1lIHx8IHRoaXMubmdNb2RlbDtcblxuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbEhhc0ZvY3VzKSB7XG4gICAgICB0aGlzLmNoYXJhY3RlckNvdW50U2NyZWVuUmVhZGVyID0gdGhpcy5jb250cm9sRGlyPy52YWx1ZT8ubGVuZ3RoIHx8IDA7XG4gICAgfVxuXG4gICAgdGhpcy4jdXBkYXRlSW5wdXRSZWYoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFyaWFEZXNjcmliZWRCeS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnB1dCBib3ggY29tcG9uZW50IGNvbnRhaW5zIHRoZSBmb2N1c2VkIGVsZW1lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5zRWxlbWVudChlbDogRXZlbnRUYXJnZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jYWRhcHRlclNlcnZpY2UuY29udGFpbnNFbGVtZW50KHRoaXMuI2VsZW1lbnRSZWYsIGVsKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtQ29udHJvbEZvY3VzSW4oKTogdm9pZCB7XG4gICAgY29uc3QgaW5saW5lSGVscEVsID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0SW5saW5lSGVscEVsZW1lbnQoXG4gICAgICB0aGlzLiNlbGVtZW50UmVmLFxuICAgICk7XG4gICAgaWYgKCF0aGlzLiNhZGFwdGVyU2VydmljZS5pc0ZvY3VzSW5FbGVtZW50KGlubGluZUhlbHBFbCkpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUhhc0ZvY3VzKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtQ29udHJvbEZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcmFjdGVyQ291bnRTY3JlZW5SZWFkZXIgPSB0aGlzLmNvbnRyb2xEaXI/LnZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICB0aGlzLiN1cGRhdGVIYXNGb2N1cyhmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25JbnNldEljb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNDb250cm9sKHRoaXMuI2VsZW1lbnRSZWYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwb3B1bGF0ZShhcmdzOiBTa3lJbnB1dEJveFBvcHVsYXRlQXJncyk6IHZvaWQge1xuICAgIHRoaXMuaG9zdElucHV0VGVtcGxhdGUgPSBhcmdzLmlucHV0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0QnV0dG9uc1RlbXBsYXRlID0gYXJncy5idXR0b25zVGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0QnV0dG9uc0xlZnRUZW1wbGF0ZSA9IGFyZ3MuYnV0dG9uc0xlZnRUZW1wbGF0ZTtcbiAgICB0aGlzLmhvc3RCdXR0b25zSW5zZXRUZW1wbGF0ZSA9IGFyZ3MuYnV0dG9uc0luc2V0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0SWNvbnNJbnNldFRlbXBsYXRlID0gYXJncy5pY29uc0luc2V0VGVtcGxhdGU7XG4gICAgdGhpcy5ob3N0SWNvbnNJbnNldExlZnRUZW1wbGF0ZSA9IGFyZ3MuaWNvbnNJbnNldExlZnRUZW1wbGF0ZTtcbiAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBlbGVtZW50IGluc2lkZSB0aGUgaW5wdXQgYm94LlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IHBhcnRzIG9mIGEgaW5wdXQgYm94XG4gICAqIHRoYXQgd2FzIHBvcHVsYXRlZCB0aHJvdWdoIHRoZSBgU2t5SW5wdXRCb3hIb3N0U2VydmljZWBcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgcXVlcnlQb3B1bGF0ZWRFbGVtZW50KHF1ZXJ5OiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnF1ZXJ5RWxlbWVudCh0aGlzLiNlbGVtZW50UmVmLCBxdWVyeSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SGludFRleHRIaWRkZW4oaGlkZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaGludFRleHRIaWRkZW4gPSBoaWRlO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIb3N0SGludFRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdEhpbnRUZXh0ID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldEhpbnRUZXh0U2NyZWVuUmVhZGVyT25seShoaWRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5oaW50VGV4dFNjcmVlblJlYWRlck9ubHkgPSBoaWRlO1xuICAgIHRoaXMuI2NoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNoYXNSZXF1aXJlZFZhbGlkYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbnRyb2xEaXI/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgfVxuXG4gICN1cGRhdGVIYXNGb2N1cyhoYXNGb2N1czogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFNvbWUgY29tcG9uZW50cyBtYW5pcHVsYXRlIHRoZSBmb2N1cyBvZiBlbGVtZW50cyBpbnNpZGUgYW4gaW5wdXQgYm94IHByb2dyYW1tYXRpY2FsbHksXG4gICAgLy8gd2hpY2ggY2FuIGNhdXNlIGFuIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBpZiBmb2N1cyB3YXMgc2V0IGFmdGVyXG4gICAgLy8gaW5pdGlhbCBjaGFuZ2UgZGV0ZWN0aW9uLiBVc2luZyBgc2V0VGltZW91dCgpYCBoZXJlIGZpeGVzIGl0LlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbEhhc0ZvY3VzID0gaGFzRm9jdXM7XG4gICAgICB0aGlzLiNjaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAjY29udHJvbEhhc0Vycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmUgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSk7XG4gIH1cblxuICAjdXBkYXRlSW5wdXRSZWYoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlucHV0UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIC8vIENoZWNrIGZvciB0aGUgQW5ndWxhciByZXF1aXJlZCB2YWxpZGF0b3IgYW5kIGFkZCBhbiBhcmlhLXJlcXVpcmVkIGF0dHJpYnV0ZVxuICAgIC8vIHRvIG1hdGNoLiBGb3IgdGVtcGxhdGUtZHJpdmVuIGZvcm1zLCB0aGUgaW5wdXQgd2lsbCBoYXZlIGEgYHJlcXVpcmVkYCBhdHRyaWJ1dGVcbiAgICAvLyBzbyB0aGUgYXJpYS1yZXF1aXJlZCBhdHRyaWJ1dGUgaXMgdW5uZWNlc3NhcnkuXG4gICAgY29uc3QgaGFzUmVxdWlyZWRWYWxpZGF0b3IgPSB0aGlzLiNoYXNSZXF1aXJlZFZhbGlkYXRvcigpO1xuICAgIGNvbnN0IGFyaWFSZXF1aXJlZCA9IGlucHV0RWwuYXJpYVJlcXVpcmVkO1xuXG4gICAgaWYgKGhhc1JlcXVpcmVkVmFsaWRhdG9yICYmIGFyaWFSZXF1aXJlZCAhPT0gJ3RydWUnKSB7XG4gICAgICBpbnB1dEVsLmFyaWFSZXF1aXJlZCA9ICd0cnVlJztcbiAgICB9IGVsc2UgaWYgKCFoYXNSZXF1aXJlZFZhbGlkYXRvciAmJiBhcmlhUmVxdWlyZWQgPT09ICd0cnVlJykge1xuICAgICAgaW5wdXRFbC5hcmlhUmVxdWlyZWQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0Vycm9yc0NvbXB1dGVkKSB7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXRFbCwgJ2FyaWEtaW52YWxpZCcsICd0cnVlJyk7XG4gICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoaW5wdXRFbCwgJ2FyaWEtZXJyb3JtZXNzYWdlJywgdGhpcy5lcnJvcklkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGlucHV0RWwsICdhcmlhLWludmFsaWQnKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShpbnB1dEVsLCAnYXJpYS1lcnJvcm1lc3NhZ2UnKTtcbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS51cGRhdGVEZXNjcmliZWRCeShcbiAgICAgIHRoaXMuaW5wdXRSZWYsXG4gICAgICB0aGlzLmhpbnRUZXh0SWQsXG4gICAgICB0aGlzLmhpbnRUZXh0ID8/IHRoaXMuaG9zdEhpbnRUZXh0LFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pbnB1dFJlZiAhPT0gdGhpcy4jcHJldmlvdXNJbnB1dFJlZikge1xuICAgICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoaW5wdXRFbCwgJ3NreS1mb3JtLWNvbnRyb2wnKTtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShpbnB1dEVsLCAnaWQnLCB0aGlzLmNvbnRyb2xJZCk7XG5cbiAgICAgIHRoaXMuI3VwZGF0ZU1heExlbmd0aFZhbGlkYXRvcigpO1xuXG4gICAgICB0aGlzLiNwcmV2aW91c0lucHV0UmVmID0gdGhpcy5pbnB1dFJlZjtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlTWF4TGVuZ3RoVmFsaWRhdG9yKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2xEaXI/LmNvbnRyb2w7XG5cbiAgICBpZiAodGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IpIHtcbiAgICAgIGNvbnRyb2w/LnJlbW92ZVZhbGlkYXRvcnModGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IpO1xuICAgICAgdGhpcy4jcHJldmlvdXNNYXhMZW5ndGhWYWxpZGF0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRyb2wgJiYgdGhpcy5jaGFyYWN0ZXJMaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNwcmV2aW91c01heExlbmd0aFZhbGlkYXRvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKFxuICAgICAgICB0aGlzLmNoYXJhY3RlckxpbWl0LFxuICAgICAgKTtcblxuICAgICAgY29udHJvbC5hZGRWYWxpZGF0b3JzKFt0aGlzLiNwcmV2aW91c01heExlbmd0aFZhbGlkYXRvcl0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdlxuICAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiXG4gIGNsYXNzPVwic2t5LWlucHV0LWJveFwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2t5LWlucHV0LWJveC1kaXNhYmxlZCc6IGlzRGlzYWJsZWRcbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtYm94LWxhYmVsLXdyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlXCIgLz48bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5saW5lSGVscFRlbXBsYXRlXCJcbiAgICAgIC8+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hhcmFjdGVyQ291bnRUZW1wbGF0ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNMZWZ0VGVtcGxhdGVcIiAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtaW5wdXQtZ3JvdXAtaW5uZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1maWVsZC1zdGF0dXMtYWN0aXZlJzogZm9ybUNvbnRyb2xIYXNGb2N1cyxcbiAgICAgICAgICAnc2t5LWZpZWxkLXN0YXR1cy1pbnZhbGlkJzogaGFzRXJyb3JzQ29tcHV0ZWRcbiAgICAgICAgfVwiXG4gICAgICAgIChmb2N1c2luKT1cImZvcm1Db250cm9sRm9jdXNJbigpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cImZvcm1Db250cm9sRm9jdXNPdXQoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uc0luc2V0TGVmdFRlbXBsYXRlXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc0luc2V0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbnNJbnNldFRlbXBsYXRlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvbnNUZW1wbGF0ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhpbnRUZXh0VGVtcGxhdGVcIiAvPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvckxhYmVsVGVtcGxhdGVcIiAvPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2XG4gICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICBjbGFzcz1cInNreS1pbnB1dC1ib3hcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1pbnB1dC1ib3gtZGlzYWJsZWQnOiBpc0Rpc2FibGVkXG4gIH1cIlxuPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1ncm91cFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zTGVmdFRlbXBsYXRlXCIgLz5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtZ3JvdXAtZm9ybS1jb250cm9sXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1pbnB1dC1ib3gtZ3JvdXAtZm9ybS1jb250cm9sLWZvY3VzJzogZm9ybUNvbnRyb2xIYXNGb2N1cyxcbiAgICAgICAgJ3NreS1pbnB1dC1ib3gtZ3JvdXAtZm9ybS1jb250cm9sLWludmFsaWQnOiBoYXNFcnJvcnNDb21wdXRlZFxuICAgICAgfVwiXG4gICAgICAoZm9jdXNpbik9XCJmb3JtQ29udHJvbEZvY3VzSW4oKVwiXG4gICAgICAoZm9jdXNvdXQpPVwiZm9ybUNvbnRyb2xGb2N1c091dCgpXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25zSW5zZXRMZWZ0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1mb3JtLWdyb3VwLWlubmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ib3gtbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGVcIiAvPjxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbmxpbmVIZWxwVGVtcGxhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjaGFyYWN0ZXJDb3VudFRlbXBsYXRlXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uc0luc2V0VGVtcGxhdGVcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbnNJbnNldFRlbXBsYXRlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zVGVtcGxhdGVcIiAvPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhpbnRUZXh0VGVtcGxhdGVcIiAvPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXJyb3JMYWJlbFRlbXBsYXRlXCIgLz5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xhYmVsVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktY29udHJvbC1sYWJlbFwiIC8+XG4gIEBpZiAobGFiZWxUZXh0KSB7XG4gICAgPGxhYmVsXG4gICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgIGNoYXJhY3RlckxpbWl0ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IGxhYmVsVGV4dCArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgKCdza3l1eF9jaGFyYWN0ZXJfY291bnRfbWVzc2FnZSdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGNoYXJhY3RlckNvdW50U2NyZWVuUmVhZGVyIDogY2hhcmFjdGVyTGltaXQpXG4gICAgICAgICAgOiBudWxsXG4gICAgICBcIlxuICAgICAgW2Zvcl09XCJjb250cm9sSWRcIlxuICAgICAgW2lkXT1cImxhYmVsSWRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWNvbnRyb2wtbGFiZWwtcmVxdWlyZWQnOiByZXF1aXJlZFxuICAgICAgfVwiXG4gICAgICA+e3sgbGFiZWxUZXh0IH19PC9sYWJlbFxuICAgID5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbmxpbmVIZWxwVGVtcGxhdGU+XG4gIEBpZiAoKGhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5KSAmJiBsYWJlbFRleHQpIHtcbiAgICA8c2t5LWhlbHAtaW5saW5lXG4gICAgICBjbGFzcz1cInNreS1jb250cm9sLWhlbHBcIlxuICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICBbcG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICAgIFtwb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgLz5cbiAgfVxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiIC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NoYXJhY3RlckNvdW50VGVtcGxhdGU+XG4gIEBpZiAoY2hhcmFjdGVyTGltaXQgIT09IHVuZGVmaW5lZCkge1xuICAgIDxza3ktY2hhcmFjdGVyLWNvdW50ZXItaW5kaWNhdG9yXG4gICAgICBbY2hhcmFjdGVyQ291bnRdPVwiY29udHJvbERpcj8udmFsdWU/Lmxlbmd0aCB8fCAwXCJcbiAgICAgIFtjaGFyYWN0ZXJDb3VudExpbWl0XT1cImNoYXJhY3RlckxpbWl0XCJcbiAgICAvPlxuICB9XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1jaGFyYWN0ZXItY291bnRlci1pbmRpY2F0b3JcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlPlxuICA8bmctY29udGVudFxuICAgIHNlbGVjdD1cImlucHV0LHNlbGVjdCwuc2t5LWZvcm0tY29udHJvbDpub3QodGV4dGFyZWEpLHNreS1hdXRvY29tcGxldGUsc2t5LXRleHQtZWRpdG9yXCJcbiAgLz5cbiAgQGlmIChob3N0SW5wdXRUZW1wbGF0ZSkge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG9zdElucHV0VGVtcGxhdGVcIiAvPlxuICB9XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInRleHRhcmVhXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc0xlZnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1idG4uc2t5LWlucHV0LWJveC1idG4tbGVmdFwiIC8+XG4gIEBpZiAoaG9zdEJ1dHRvbnNMZWZ0VGVtcGxhdGUpIHtcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RCdXR0b25zTGVmdFRlbXBsYXRlXCIgLz5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50XG4gICAgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1idG46bm90KC5za3ktaW5wdXQtYm94LWJ0bi1sZWZ0KTpub3QoLnNreS1pbnB1dC1ib3gtYnRuLWluc2V0KVwiXG4gIC8+XG4gIEBpZiAoaG9zdEJ1dHRvbnNUZW1wbGF0ZSkge1xuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG9zdEJ1dHRvbnNUZW1wbGF0ZVwiIC8+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uc0luc2V0VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktaW5wdXQtZ3JvdXAtYnRuLnNreS1pbnB1dC1ib3gtYnRuLWluc2V0XCIgLz5cbiAgQGlmIChob3N0QnV0dG9uc0luc2V0VGVtcGxhdGUpIHtcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RCdXR0b25zSW5zZXRUZW1wbGF0ZVwiIC8+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbnNJbnNldFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwic2t5LWlucHV0LWJveC1pY29uLWluc2V0LXdyYXBwZXJcIiAoY2xpY2spPVwib25JbnNldEljb25DbGljaygpXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1pY29uLnNreS1pbnB1dC1ib3gtaWNvbi1pbnNldFwiIC8+XG4gICAgQGlmIChob3N0SWNvbnNJbnNldFRlbXBsYXRlKSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RJY29uc0luc2V0VGVtcGxhdGVcIiAvPlxuICAgIH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ljb25zSW5zZXRMZWZ0VGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtaWNvbi1pbnNldC1sZWZ0LXdyYXBwZXJcIlxuICAgIChjbGljayk9XCJvbkluc2V0SWNvbkNsaWNrKClcIlxuICA+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNreS1pbnB1dC1ncm91cC1pY29uLnNreS1pbnB1dC1ib3gtaWNvbi1pbnNldC1sZWZ0XCIgLz5cbiAgICBAaWYgKGhvc3RJY29uc0luc2V0TGVmdFRlbXBsYXRlKSB7XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvc3RJY29uc0luc2V0TGVmdFRlbXBsYXRlXCIgLz5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlcnJvckxhYmVsVGVtcGxhdGU+XG4gIDxza3ktZm9ybS1lcnJvcnNcbiAgICBbaWRdPVwiZXJyb3JJZFwiXG4gICAgW2Vycm9yc109XCJjb250cm9sRGlyPy5lcnJvcnNcIlxuICAgIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgICBbdG91Y2hlZF09XCJjb250cm9sRGlyPy50b3VjaGVkXCJcbiAgICBbZGlydHldPVwiY29udHJvbERpcj8uZGlydHlcIlxuICA+XG4gICAgPG5nLWNvbnRlbnRcbiAgICAgIHNlbGVjdD1cInNreS1mb3JtLWVycm9yLHNwYW4uc2t5LWlucHV0LWJveC1kZXNjZW5kZW50LWZvcm0tZXJyb3JcIlxuICAgIC8+XG4gIDwvc2t5LWZvcm0tZXJyb3JzPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWVycm9yLWxhYmVsLC5za3ktZXJyb3ItaW5kaWNhdG9yXCIgLz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaGludFRleHRUZW1wbGF0ZT5cbiAgQGlmIChoaW50VGV4dCB8fCBob3N0SGludFRleHQpIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1pbnB1dC1ib3gtaGludC10ZXh0XCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdkZWZhdWx0JyxcbiAgICAgICAgJ3NreS1mb250LWhpbnQtdGV4dC1zJzogJ21vZGVybidcbiAgICAgIH1cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWlucHV0LWJveC1oaW50LXRleHQtaGlkZGVuJzogaGludFRleHRIaWRkZW4sXG4gICAgICAgICdza3ktc2NyZWVuLXJlYWRlci1vbmx5JzogaGludFRleHRTY3JlZW5SZWFkZXJPbmx5XG4gICAgICB9XCJcbiAgICAgIFtpZF09XCJoaW50VGV4dElkXCJcbiAgICA+XG4gICAgICB7eyBoaW50VGV4dCB8IHNreUlucHV0Qm94SGludFRleHQ6IGhvc3RIaW50VGV4dCB9fVxuICAgIDwvZGl2PlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyCharacterCounterModule } from '../character-counter/character-counter.module';\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\nimport { SkyInputBoxControlDirective } from './input-box-control.directive';\nimport { SkyInputBoxHintTextPipe } from './input-box-hint-text.pipe';\nimport { SkyInputBoxComponent } from './input-box.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyInputBoxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxModule, declarations: [SkyInputBoxComponent], imports: [CommonModule,\n SkyCharacterCounterModule,\n SkyFormErrorsModule,\n SkyFormErrorModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyInputBoxControlDirective,\n SkyInputBoxHintTextPipe,\n SkyThemeModule], exports: [SkyInputBoxHintTextPipe,\n SkyInputBoxComponent,\n SkyInputBoxControlDirective,\n SkyFormErrorModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxModule, imports: [CommonModule,\n SkyCharacterCounterModule,\n SkyFormErrorsModule,\n SkyFormErrorModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyThemeModule, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyInputBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyInputBoxComponent],\n imports: [\n CommonModule,\n SkyCharacterCounterModule,\n SkyFormErrorsModule,\n SkyFormErrorModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyInputBoxControlDirective,\n SkyInputBoxHintTextPipe,\n SkyThemeModule,\n ],\n exports: [\n SkyInputBoxHintTextPipe,\n SkyInputBoxComponent,\n SkyInputBoxControlDirective,\n SkyFormErrorModule,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvaW5wdXQtYm94L2lucHV0LWJveC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFzQjdELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQW5CYixvQkFBb0IsYUFFakMsWUFBWTtZQUNaLHlCQUF5QjtZQUN6QixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsMkJBQTJCO1lBQzNCLHVCQUF1QjtZQUN2QixjQUFjLGFBR2QsdUJBQXVCO1lBQ3ZCLG9CQUFvQjtZQUNwQiwyQkFBMkI7WUFDM0Isa0JBQWtCO2dIQUdULGlCQUFpQixZQWpCMUIsWUFBWTtZQUNaLHlCQUF5QjtZQUN6QixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFHbkIsY0FBYyxFQU1kLGtCQUFrQjs7NEZBR1QsaUJBQWlCO2tCQXBCN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1oseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsdUJBQXVCO3dCQUN2QixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsMkJBQTJCO3dCQUMzQixrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcbmltcG9ydCB7IFNreVRoZW1lTW9kdWxlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU2t5Q2hhcmFjdGVyQ291bnRlck1vZHVsZSB9IGZyb20gJy4uL2NoYXJhY3Rlci1jb3VudGVyL2NoYXJhY3Rlci1jb3VudGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IubW9kdWxlJztcbmltcG9ydCB7IFNreUZvcm1FcnJvcnNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZm9ybXMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreUlucHV0Qm94Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vaW5wdXQtYm94LWNvbnRyb2wuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SGludFRleHRQaXBlIH0gZnJvbSAnLi9pbnB1dC1ib3gtaGludC10ZXh0LnBpcGUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWJveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lJbnB1dEJveENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5Q2hhcmFjdGVyQ291bnRlck1vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JzTW9kdWxlLFxuICAgIFNreUZvcm1FcnJvck1vZHVsZSxcbiAgICBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUlucHV0Qm94Q29udHJvbERpcmVjdGl2ZSxcbiAgICBTa3lJbnB1dEJveEhpbnRUZXh0UGlwZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNreUlucHV0Qm94SGludFRleHRQaXBlLFxuICAgIFNreUlucHV0Qm94Q29tcG9uZW50LFxuICAgIFNreUlucHV0Qm94Q29udHJvbERpcmVjdGl2ZSxcbiAgICBTa3lGb3JtRXJyb3JNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUlucHV0Qm94TW9kdWxlIHt9XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Input, Output, ViewChild, booleanAttribute, inject, } from '@angular/core';\nimport { FormsModule, NgControl, Validators, } from '@angular/forms';\nimport { SkyFileReaderService, SkyIdModule, SkyLiveAnnouncerService, } from '@skyux/core';\nimport { SkyIdService } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { take } from 'rxjs/operators';\nimport { SkyFormErrorComponent } from '../../form-error/form-error.component';\nimport { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsComponent } from '../../form-error/form-errors.component';\nimport { SkyInputBoxModule } from '../../input-box/input-box.module';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileAttachmentService } from '../file-attachment/file-attachment.service';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@skyux/help-inline\";\nimport * as i4 from \"@skyux/icon\";\nimport * as i5 from \"@skyux/core\";\nimport * as i6 from \"../../input-box/input-box.component\";\nimport * as i7 from \"../../input-box/input-box-control.directive\";\nimport * as i8 from \"@skyux/theme\";\nimport * as i9 from \"@skyux/i18n\";\nconst MAX_FILE_SIZE_DEFAULT = 500000;\nconst MIN_FILE_SIZE_DEFAULT = 0;\n/**\n * Provides an element to attach multiple files where users can browse or drag and drop local files\n * or provide hyperlinks to external files. You can leave the contents of the component\n * blank to display the drop zone's default UI, or you can specify custom content to\n * display instead. When the module initializes, it disables the ability to drag and\n * drop files for the entire window to prevent the browser from opening files that are\n * accidentally dropped outside the target zone. If you implement your own file drop functionality\n * outside of the file drop component, you can place the `sky-file-drop-target` CSS class\n * on the element that receives drop events to exempt it from the drop exclusion rule.\n */\nexport class SkyFileDropComponent {\n /**\n * The minimum size in bytes for valid files.\n * @default 0\n */\n set minFileSize(value) {\n this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;\n }\n get minFileSize() {\n return this.#_minFileSize;\n }\n /**\n * The maximum size in bytes for valid files.\n * @default 500000\n */\n set maxFileSize(value) {\n this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;\n }\n get maxFileSize() {\n return this.#_maxFileSize;\n }\n #enterEventTarget;\n #_maxFileSize;\n #_minFileSize;\n #notifyTouched;\n #notifyChange;\n #_uploadedFiles;\n #fileAttachmentService;\n #fileReaderSvc;\n #liveAnnouncerSvc;\n #resourcesSvc;\n #idSvc;\n constructor() {\n /**\n * Fires when users add or remove files.\n */\n this.filesChanged = new EventEmitter();\n /**\n * Fires when the link input box triggers a blur event.\n */\n this.linkInputBlur = new EventEmitter();\n /**\n * Fires when users add or remove links.\n */\n this.linkChanged = new EventEmitter();\n /**\n * Whether users can drag and drop multiple files at the same time.\n */\n this.multiple = true;\n /**\n * Whether to disable the option to browse for files to attach.\n */\n this.noClick = false;\n /**\n * Whether to display the option to attach files from URLs rather than from local devices.\n */\n this.allowLinks = false;\n /**\n * Whether to hide `labelText` from view.\n */\n this.labelHidden = false;\n /**\n * Whether uploading a file or link is required.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input elements so that screen readers announce an invalid state until the input element\n * is complete.\n * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n */\n this.required = false;\n /**\n * Whether the file attachment is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the file attachment.\n */\n this.stacked = false;\n this.rejectedOver = false;\n this.acceptedOver = false;\n this.#_maxFileSize = MAX_FILE_SIZE_DEFAULT;\n this.#_minFileSize = MIN_FILE_SIZE_DEFAULT;\n this.#_uploadedFiles = [];\n this.#fileAttachmentService = inject(SkyFileAttachmentService);\n this.#fileReaderSvc = inject(SkyFileReaderService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.#idSvc = inject(SkyIdService);\n this.errorId = this.#idSvc.generateId();\n this.ngControl = inject(NgControl, { optional: true });\n this.rejectedFiles = [];\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n ngOnDestroy() {\n this.filesChanged.complete();\n this.linkChanged.complete();\n this.linkInputBlur.complete();\n }\n writeValue(value) {\n if (Array.isArray(value)) {\n const linkUploads = [];\n const fileUploads = [];\n value.forEach((file) => {\n if ('url' in file && file.url !== undefined) {\n if (!('file' in file)) {\n linkUploads.push(file);\n }\n else if ('file' in file && file.file !== undefined) {\n fileUploads.push(file);\n }\n }\n });\n if (!(linkUploads.length > 0) && !(fileUploads.length > 0)) {\n this.#notifyChange?.(null);\n }\n else {\n this.#_uploadedFiles = [];\n if (linkUploads.length > 0) {\n linkUploads.forEach((file) => {\n this.uploadLink(file);\n });\n }\n if (fileUploads.length > 0) {\n // this prevents FormControl from setting an invalid value before the async\n // processes in #handleFile is complete\n this.#notifyChange?.(null);\n this.#handleFiles(fileUploads);\n }\n }\n }\n else {\n this.#notifyChange?.(null);\n }\n }\n registerOnChange(fn) {\n this.#notifyChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n dropClicked() {\n if (!this.noClick && this.inputEl) {\n this.#notifyTouched?.();\n this.inputEl.nativeElement.click();\n }\n }\n fileChangeEvent(fileChangeEvent) {\n /** Set a timeout here to allow the browser to regain context from the system dialog. Without this, error messages do not read out correctly to screen readers. */\n setTimeout(() => {\n this.#handleFiles(fileChangeEvent.target?.files);\n }, 500);\n }\n fileDragEnter(dragEnterEvent) {\n // Save this target to know when the drag event leaves\n this.#enterEventTarget = dragEnterEvent.target;\n dragEnterEvent.stopPropagation();\n dragEnterEvent.preventDefault();\n }\n fileDragOver(dragOverEvent) {\n const transfer = dragOverEvent.dataTransfer;\n dragOverEvent.stopPropagation();\n dragOverEvent.preventDefault();\n if (transfer) {\n if (transfer.items) {\n const files = Array.from(transfer.items);\n for (const file of files) {\n if (file.type &&\n this.#fileAttachmentService.fileTypeRejected(file.type, this.acceptedTypes)) {\n this.rejectedOver = true;\n this.acceptedOver = false;\n return;\n }\n }\n if (files.length > 0 && !this.acceptedOver) {\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n } /* istanbul ignore next: untestable */\n else if (transfer.files) {\n // If the browser does not support DataTransfer.items,\n // defer file-type checking to drop handler.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n }\n }\n fileDrop(dropEvent) {\n dropEvent.stopPropagation();\n dropEvent.preventDefault();\n this.#notifyTouched?.();\n this.#enterEventTarget = undefined;\n this.rejectedOver = false;\n this.acceptedOver = false;\n if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {\n const hasDirectory = this.#fileAttachmentService.hasDirectory(dropEvent.dataTransfer.files);\n const invalidNumberOfFiles = !this.multiple && dropEvent.dataTransfer.files.length > 1;\n if (hasDirectory || invalidNumberOfFiles) {\n return;\n }\n this.#handleFiles(dropEvent.dataTransfer.files);\n }\n }\n fileDragLeave(dragLeaveEvent) {\n if (this.#enterEventTarget === dragLeaveEvent.target) {\n this.rejectedOver = false;\n this.acceptedOver = false;\n }\n }\n addLinkEnter(event) {\n if (event.which === 13) {\n this.addLink(event);\n }\n }\n addLink(event) {\n event.preventDefault();\n this.uploadLink({ url: this.linkUrl });\n this.linkUrl = undefined;\n this.#notifyTouched?.();\n }\n uploadLink(file) {\n this.linkChanged.emit(file);\n this.#_uploadedFiles?.push(file);\n this.#notifyChange?.(this.#_uploadedFiles);\n this.#announceState('skyux_file_attachment_file_upload_link_added', file.url);\n }\n onLinkBlur() {\n this.#notifyTouched?.();\n this.linkInputBlur.emit();\n }\n get isRequired() {\n return (this.required ||\n (this.ngControl?.control?.hasValidator(Validators.required) ?? false));\n }\n #announceState(resourceString, ...args) {\n this.#resourcesSvc\n .getString(resourceString, ...args)\n .pipe(take(1))\n .subscribe((internationalizedString) => {\n this.#liveAnnouncerSvc.announce(internationalizedString);\n });\n }\n #emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray) {\n if (totalFiles === rejectedFileArray.length + validFileArray.length) {\n this.filesChanged.emit({\n files: validFileArray,\n rejectedFiles: rejectedFileArray,\n });\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n }\n }\n #filesRejected(file, validFileArray, rejectedFileArray, totalFiles) {\n rejectedFileArray.push(file);\n this.#notifyChange?.(this.#_uploadedFiles.length > 0 ? this.#_uploadedFiles : null);\n this.#emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray);\n }\n async #loadFile(fileDrop, file, validFileArray, rejectedFileArray, totalFiles) {\n try {\n file.url = await this.#fileReaderSvc.readAsDataURL(file.file);\n validFileArray.push(file);\n fileDrop.#emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray);\n this.#announceState('skyux_file_attachment_file_upload_file_added', file.file.name);\n this.#_uploadedFiles?.push(file);\n this.#notifyChange?.(this.#_uploadedFiles);\n }\n catch {\n fileDrop.#filesRejected(file, validFileArray, rejectedFileArray, totalFiles);\n }\n }\n #handleFiles(fileList) {\n if (fileList) {\n const validFileArray = [];\n const rejectedFileArray = [];\n const totalFiles = fileList.length;\n let files = [];\n if ('item' in fileList) {\n for (let index = 0; index < fileList.length; index++) {\n files.push({\n file: fileList.item(index),\n });\n }\n }\n else {\n files = fileList;\n }\n const processedFiles = this.#fileAttachmentService.checkFiles(files, this.minFileSize, this.maxFileSize, this.acceptedTypes, this.validateFn);\n for (const file of processedFiles) {\n if (file.errorType) {\n this.#filesRejected(file, validFileArray, rejectedFileArray, totalFiles);\n }\n else {\n void this.#loadFile(this, file, validFileArray, rejectedFileArray, totalFiles);\n }\n }\n this.rejectedFiles = rejectedFileArray;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyFileDropComponent, isStandalone: true, selector: \"sky-file-drop\", inputs: { fileUploadAriaLabel: \"fileUploadAriaLabel\", linkUploadAriaLabel: \"linkUploadAriaLabel\", linkUploadHintText: \"linkUploadHintText\", minFileSize: \"minFileSize\", maxFileSize: \"maxFileSize\", multiple: \"multiple\", validateFn: \"validateFn\", acceptedTypes: \"acceptedTypes\", acceptedTypesErrorMessage: \"acceptedTypesErrorMessage\", noClick: \"noClick\", allowLinks: \"allowLinks\", labelText: \"labelText\", labelHidden: [\"labelHidden\", \"labelHidden\", booleanAttribute], hintText: \"hintText\", required: [\"required\", \"required\", booleanAttribute], helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", stacked: [\"stacked\", \"stacked\", booleanAttribute], helpKey: \"helpKey\" }, outputs: { filesChanged: \"filesChanged\", linkInputBlur: \"linkInputBlur\", linkChanged: \"linkChanged\" }, host: { properties: { \"class.sky-form-field-stacked\": \"this.stacked\" } }, providers: [\n SkyFileAttachmentService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], viewQueries: [{ propertyName: \"inputEl\", first: true, predicate: [\"fileInput\"], descendants: true }], ngImport: i0, template: \"<fieldset class=\\\"sky-file-drop-wrapper\\\">\\n @if (labelText) {\\n <legend\\n class=\\\"sky-control-label sky-font-body-default\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': labelHidden\\n }\\\"\\n >\\n <span\\n class=\\\"sky-file-drop-label-text\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': isRequired\\n }\\\"\\n >{{ labelText }}</span\\n >\\n @if (isRequired) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_file_attachment_required' | skyLibResources\\n }}</span>\\n }\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n }\\n <div\\n class=\\\"sky-file-drop-row\\\"\\n [ngClass]=\\\"{ 'sky-file-drop-allow-links': allowLinks }\\\"\\n >\\n <div\\n class=\\\"sky-file-drop-col\\\"\\n [ngClass]=\\\"{\\n 'sky-file-drop-accept': acceptedOver,\\n 'sky-file-drop-reject': rejectedOver\\n }\\\"\\n >\\n <button\\n class=\\\"sky-file-drop sky-file-drop-target\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n fileUploadAriaLabel ||\\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\\n \\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-invalid]=\\\"!!rejectedFiles.length\\\"\\n [attr.aria-errormessage]=\\\"\\n labelText && rejectedFiles.length ? errorId : undefined\\n \\\"\\n (click)=\\\"dropClicked()\\\"\\n (dragover)=\\\"fileDragOver($event)\\\"\\n (dragenter)=\\\"fileDragEnter($event)\\\"\\n (dragleave)=\\\"fileDragLeave($event)\\\"\\n (drop)=\\\"fileDrop($event)\\\"\\n ></button>\\n\\n <input\\n #fileInput\\n tabindex=\\\"-1\\\"\\n aria-hidden=\\\"true\\\"\\n type=\\\"file\\\"\\n class=\\\"sky-file-input-hidden\\\"\\n [attr.multiple]=\\\"multiple ? multiple : null\\\"\\n [attr.accept]=\\\"acceptedTypes ? acceptedTypes : null\\\"\\n (change)=\\\"fileChangeEvent($event)\\\"\\n />\\n\\n @if (customEl.children.length === 0) {\\n <div class=\\\"sky-file-drop-contents sky-file-drop-upload-contents\\\">\\n <div class=\\\"sky-file-drop-contents-not-over\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_drag_file_here'\\n | skyLibResources\\n }}\\n </div>\\n <div class=\\\"sky-file-drop-text\\\">\\n {{\\n 'skyux_file_attachment_file_upload_or_click_to_browse'\\n | skyLibResources\\n }}\\n </div>\\n <sky-icon\\n class=\\\"sky-file-upload-icon\\\"\\n iconName=\\\"arrow-upload\\\"\\n iconSize=\\\"xl\\\"\\n />\\n </div>\\n\\n <!-- This will appear when file is dragged over and is valid -->\\n <div class=\\\"sky-file-drop-contents-accept\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_drop_files_here'\\n | skyLibResources\\n }}\\n </div>\\n <sky-icon\\n class=\\\"sky-file-upload-icon sky-file-upload-icon-target\\\"\\n iconName=\\\"target\\\"\\n iconSize=\\\"xl\\\"\\n />\\n </div>\\n\\n <!-- This will appear when file is dragged over and is invalid -->\\n <div class=\\\"sky-file-drop-contents-reject\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_invalid_file'\\n | skyLibResources\\n }}\\n </div>\\n <sky-icon\\n class=\\\"sky-file-upload-icon sky-file-upload-icon-close\\\"\\n iconName=\\\"prohibited\\\"\\n iconSize=\\\"xl\\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <div #customEl class=\\\"sky-file-drop-contents-custom\\\">\\n <ng-content />\\n </div>\\n </div>\\n @if (allowLinks) {\\n <div class=\\\"sky-file-drop-col\\\">\\n <div class=\\\"sky-file-drop-contents\\\">\\n <div class=\\\"sky-file-drop-link\\\">\\n <div class=\\\"sky-file-drop-link-header\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_link_label'\\n | skyLibResources\\n }}\\n </div>\\n </div>\\n <sky-input-box [hintText]=\\\"linkUploadHintText\\\">\\n <input\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n linkUploadAriaLabel ||\\n ('skyux_file_attachment_file_upload_link_label'\\n | skyLibResources)\\n \\\"\\n [attr.aria-invalid]=\\\"!!rejectedFiles.length\\\"\\n [attr.aria-errormessage]=\\\"\\n labelText && rejectedFiles.length ? errorId : undefined\\n \\\"\\n [(ngModel)]=\\\"linkUrl\\\"\\n (blur)=\\\"onLinkBlur()\\\"\\n (keyup)=\\\"addLinkEnter($event)\\\"\\n />\\n </sky-input-box>\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-primary\\\"\\n [disabled]=\\\"!linkUrl\\\"\\n (click)=\\\"addLink($event)\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\\n }}\\n </button>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n <div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-font-deemphasized sky-file-drop-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n </div>\\n</fieldset>\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"ngControl ? ngControl.touched : rejectedFiles.length > 0\\\"\\n [dirty]=\\\"ngControl?.dirty\\\"\\n [errors]=\\\"ngControl?.errors\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n @for (rejectedFile of rejectedFiles; track rejectedFile.url) {\\n <div>\\n @if (rejectedFile.errorType === 'fileType') {\\n <sky-form-error\\n errorName=\\\"fileType\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_file_type_error_label_text_with_name'\\n | skyLibResources\\n : rejectedFile.file.name\\n : rejectedFile.errorParam\\n \\\"\\n />\\n } @else if (rejectedFile.errorType === 'maxFileSize') {\\n <sky-form-error\\n errorName=\\\"maxFileSize\\\"\\n [errorText]=\\\"\\n acceptedTypesErrorMessage ??\\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\\n | skyLibResources\\n : rejectedFile.file.name\\n : (rejectedFile.errorParam | skyFileSize)\\n \\\"\\n />\\n } @else if (rejectedFile.errorType === 'minFileSize') {\\n <sky-form-error\\n errorName=\\\"minFileSize\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\\n | skyLibResources\\n : rejectedFile.file.name\\n : (rejectedFile.errorParam | skyFileSize)\\n \\\"\\n />\\n } @else if (\\n rejectedFile.errorType === 'validate' && rejectedFile.errorParam\\n ) {\\n <sky-form-error\\n errorName=\\\"validate\\\"\\n [errorText]=\\\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\\\"\\n />\\n }\\n </div>\\n }\\n</sky-form-errors>\\n\", styles: [\".sky-file-drop-wrapper:not(.sky-theme-modern *){--sky-override-file-drop-accept-border-color: #72bf44;--sky-override-file-drop-col-padding: 0 5px;--sky-override-file-drop-col-responsive-margin-bottom: 10px;--sky-override-file-drop-col-responsive-margin-right: 0;--sky-override-file-drop-contents-background-color: #eeeeef;--sky-override-file-drop-contents-border-color: #cdcfd2;--sky-override-file-drop-contents-border-radius: 0;--sky-override-file-drop-contents-border-width: 1px;--sky-override-file-drop-contents-padding: 10px;--sky-override-file-drop-drag-border-width: 1px;--sky-override-file-drop-drag-contents-border-style: dashed;--sky-override-file-drop-hint-text-margin-top: var(--sky-margin-stacked-xs);--sky-override-file-drop-label-color: #212327;--sky-override-file-drop-label-font-size: 15px;--sky-override-file-drop-link-header-margin-bottom: 5px;--sky-override-file-drop-link-input-background-color: transparent;--sky-override-file-drop-link-input-margin-bottom: 10px;--sky-override-file-drop-non-stacked-with-item-margin-bottom: 0;--sky-override-file-drop-outline-focus: auto;--sky-override-file-drop-reject-border-color: #ef4044;--sky-override-file-drop-text-font-size: 15px;--sky-override-file-drop-text-font-weight: 400;--sky-override-file-drop-text-header-font-size: 22px;--sky-override-file-drop-text-header-font-weight: 600;--sky-override-file-drop-text-header-line-height: 1.1;--sky-override-file-drop-text-line-height: 1.1;--sky-override-file-drop-text-margin-bottom: 20px;--sky-override-file-drop-text-margin-top: 5px;--sky-override-file-drop-upload-contents-active-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-focus-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-hover-border: #cdcfd2 solid 1px;--sky-override-file-upload-icon-color: #686c73;--sky-override-file-drop-upload-icon-margin-top: 10px}:host.sky-form-field-stacked{display:block}:host-context(:has(+ sky-file-item):not(.sky-form-field-stacked)) .sky-file-drop-wrapper{margin-bottom:var(--sky-override-file-drop-non-stacked-with-item-margin-bottom, var(--sky-space-gap-form-l))}.sky-file-drop-col{padding:var(--sky-override-file-drop-col-padding, 0);position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border:var(--sky-override-file-drop-contents-border-width, var(--sky-border-width-input-base)) solid var(--sky-override-file-drop-contents-border-color, var(--sky-color-border-input-base));background-color:var(--sky-override-file-drop-contents-background-color, var(--sky-color-background-file_drop));border-radius:var(--sky-override-file-drop-contents-border-radius, var(--sky-border-radius-s));padding:var(--sky-override-file-drop-contents-padding, var(--sky-comp-file_drop-content-space-inset-top) var(--sky-comp-file_drop-content-space-inset-right) var(--sky-comp-file_drop-content-space-inset-bottom) var(--sky-comp-file_drop-content-space-inset-left));cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:var(--sky-override-file-drop-link-header-margin-bottom, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop:active~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-active-border, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active))}.sky-file-drop:focus-visible:not(:active){outline:var(--sky-override-file-drop-outline-focus, none)}.sky-file-drop:focus-visible:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-focus-border, var(--sky-border-width-input-focus) solid var(--sky-color-border-input-focus))}.sky-file-drop:hover:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-hover-border, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover))}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-override-file-drop-hint-text-margin-top, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:var(--sky-override-file-drop-drag-contents-border-style, solid);border-width:var(--sky-override-file-drop-drag-border-width, var(--sky-border-width-input-hover))}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:var(--sky-override-file-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:var(--sky-override-file-drop-reject-border-color, var(--sky-color-border-danger));border-width:var(--sky-override-file-drop-drag-border-width, var(--sky-border-width-input-error))}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;max-height:auto;color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-deemphasized));margin-top:var(--sky-override-file-drop-upload-icon-margin-top, var(--sky-space-gap-stacked_supplemental-l))}.sky-file-upload-icon-close{color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-danger))}.sky-file-upload-icon-target{color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-success))}.sky-file-drop-link{cursor:default}.sky-file-drop-link sky-input-box{--sky-comp-override-input-box-group-background-color: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );--sky-comp-override-input-box-group-background-color-focused: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );margin-bottom:var(--sky-override-file-drop-link-input-margin-bottom, var(--sky-space-gap-form-s))}.sky-file-drop-text-header{margin:0;font-size:var(--sky-override-file-drop-text-header-font-size, var(--sky-font-size-body-m));font-style:var(--sky-font-style-body-m);font-weight:var(--sky-override-file-drop-text-header-font-weight, var(--sky-font-style-body-m));line-height:var(--sky-override-file-drop-text-header-line-height, var(--sky-font-line_height-body-m))}.sky-file-drop-text{margin-top:var(--sky-override-file-drop-text-margin-top, var(--sky-space-gap-stacked_supplemental-s));margin-bottom:var(--sky-override-file-drop-text-margin-bottom, 0);font-size:var(--sky-override-file-drop-text-font-size, var(--sky-font-size-body-s));font-style:var(--sky-font-style-body-s);font-weight:var(--sky-override-file-drop-text-font-weight, var(--sky-font-style-body-s));line-height:var(--sky-override-file-drop-text-line-height, var(--sky-font-line_height-body-s))}.sky-file-drop-text,.sky-file-drop-text-header{display:block}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-control-label{color:var(--sky-override-file-drop-label-color, var(--sky-color-text-default));font-size:var(--sky-override-file-drop-label-font-size, var(--sky-font-size-input-label));font-style:var(--sky-font-style-input-label);font-weight:var(--sky-font-style-input-label);letter-spacing:var(--sky-font-letter_spacing-input-label);line-height:var(--sky-font-line_height-input-label)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: SkyFormErrorComponent, selector: \"sky-form-error\", inputs: [\"errorName\", \"errorText\"] }, { kind: \"component\", type: SkyFormErrorsComponent, selector: \"sky-form-errors\", inputs: [\"errors\", \"labelText\", \"touched\", \"dirty\"] }, { kind: \"ngmodule\", type: SkyFormsResourcesModule }, { kind: \"ngmodule\", type: SkyHelpInlineModule }, { kind: \"component\", type: i3.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i4.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"ngmodule\", type: SkyIdModule }, { kind: \"directive\", type: i5.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"ngmodule\", type: SkyInputBoxModule }, { kind: \"component\", type: i6.SkyInputBoxComponent, selector: \"sky-input-box\", inputs: [\"hasErrors\", \"disabled\", \"labelText\", \"characterLimit\", \"stacked\", \"helpPopoverTitle\", \"helpPopoverContent\", \"helpKey\", \"hintText\"] }, { kind: \"directive\", type: i7.SkyInputBoxControlDirective, selector: \"input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)\", inputs: [\"autocomplete\"] }, { kind: \"ngmodule\", type: SkyThemeModule }, { kind: \"directive\", type: i8.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"pipe\", type: SkyFileSizePipe, name: \"skyFileSize\" }, { kind: \"pipe\", type: i9.SkyLibResourcesPipe, name: \"skyLibResources\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileDropComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-file-drop', providers: [\n SkyFileAttachmentService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], imports: [\n CommonModule,\n FormsModule,\n SkyFileSizePipe,\n SkyFormErrorComponent,\n SkyFormErrorsComponent,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyThemeModule,\n ], template: \"<fieldset class=\\\"sky-file-drop-wrapper\\\">\\n @if (labelText) {\\n <legend\\n class=\\\"sky-control-label sky-font-body-default\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': labelHidden\\n }\\\"\\n >\\n <span\\n class=\\\"sky-file-drop-label-text\\\"\\n [ngClass]=\\\"{\\n 'sky-control-label-required': isRequired\\n }\\\"\\n >{{ labelText }}</span\\n >\\n @if (isRequired) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_file_attachment_required' | skyLibResources\\n }}</span>\\n }\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n }\\n <div\\n class=\\\"sky-file-drop-row\\\"\\n [ngClass]=\\\"{ 'sky-file-drop-allow-links': allowLinks }\\\"\\n >\\n <div\\n class=\\\"sky-file-drop-col\\\"\\n [ngClass]=\\\"{\\n 'sky-file-drop-accept': acceptedOver,\\n 'sky-file-drop-reject': rejectedOver\\n }\\\"\\n >\\n <button\\n class=\\\"sky-file-drop sky-file-drop-target\\\"\\n type=\\\"button\\\"\\n [attr.aria-label]=\\\"\\n fileUploadAriaLabel ||\\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\\n \\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-invalid]=\\\"!!rejectedFiles.length\\\"\\n [attr.aria-errormessage]=\\\"\\n labelText && rejectedFiles.length ? errorId : undefined\\n \\\"\\n (click)=\\\"dropClicked()\\\"\\n (dragover)=\\\"fileDragOver($event)\\\"\\n (dragenter)=\\\"fileDragEnter($event)\\\"\\n (dragleave)=\\\"fileDragLeave($event)\\\"\\n (drop)=\\\"fileDrop($event)\\\"\\n ></button>\\n\\n <input\\n #fileInput\\n tabindex=\\\"-1\\\"\\n aria-hidden=\\\"true\\\"\\n type=\\\"file\\\"\\n class=\\\"sky-file-input-hidden\\\"\\n [attr.multiple]=\\\"multiple ? multiple : null\\\"\\n [attr.accept]=\\\"acceptedTypes ? acceptedTypes : null\\\"\\n (change)=\\\"fileChangeEvent($event)\\\"\\n />\\n\\n @if (customEl.children.length === 0) {\\n <div class=\\\"sky-file-drop-contents sky-file-drop-upload-contents\\\">\\n <div class=\\\"sky-file-drop-contents-not-over\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_drag_file_here'\\n | skyLibResources\\n }}\\n </div>\\n <div class=\\\"sky-file-drop-text\\\">\\n {{\\n 'skyux_file_attachment_file_upload_or_click_to_browse'\\n | skyLibResources\\n }}\\n </div>\\n <sky-icon\\n class=\\\"sky-file-upload-icon\\\"\\n iconName=\\\"arrow-upload\\\"\\n iconSize=\\\"xl\\\"\\n />\\n </div>\\n\\n <!-- This will appear when file is dragged over and is valid -->\\n <div class=\\\"sky-file-drop-contents-accept\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_drop_files_here'\\n | skyLibResources\\n }}\\n </div>\\n <sky-icon\\n class=\\\"sky-file-upload-icon sky-file-upload-icon-target\\\"\\n iconName=\\\"target\\\"\\n iconSize=\\\"xl\\\"\\n />\\n </div>\\n\\n <!-- This will appear when file is dragged over and is invalid -->\\n <div class=\\\"sky-file-drop-contents-reject\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_invalid_file'\\n | skyLibResources\\n }}\\n </div>\\n <sky-icon\\n class=\\\"sky-file-upload-icon sky-file-upload-icon-close\\\"\\n iconName=\\\"prohibited\\\"\\n iconSize=\\\"xl\\\"\\n />\\n </div>\\n </div>\\n }\\n\\n <div #customEl class=\\\"sky-file-drop-contents-custom\\\">\\n <ng-content />\\n </div>\\n </div>\\n @if (allowLinks) {\\n <div class=\\\"sky-file-drop-col\\\">\\n <div class=\\\"sky-file-drop-contents\\\">\\n <div class=\\\"sky-file-drop-link\\\">\\n <div class=\\\"sky-file-drop-link-header\\\">\\n <div\\n class=\\\"sky-file-drop-text-header\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-display-3': 'default'\\n }\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_link_label'\\n | skyLibResources\\n }}\\n </div>\\n </div>\\n <sky-input-box [hintText]=\\\"linkUploadHintText\\\">\\n <input\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n linkUploadAriaLabel ||\\n ('skyux_file_attachment_file_upload_link_label'\\n | skyLibResources)\\n \\\"\\n [attr.aria-invalid]=\\\"!!rejectedFiles.length\\\"\\n [attr.aria-errormessage]=\\\"\\n labelText && rejectedFiles.length ? errorId : undefined\\n \\\"\\n [(ngModel)]=\\\"linkUrl\\\"\\n (blur)=\\\"onLinkBlur()\\\"\\n (keyup)=\\\"addLinkEnter($event)\\\"\\n />\\n </sky-input-box>\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-primary\\\"\\n [disabled]=\\\"!linkUrl\\\"\\n (click)=\\\"addLink($event)\\\"\\n >\\n {{\\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\\n }}\\n </button>\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n <div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-font-deemphasized sky-file-drop-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n </div>\\n</fieldset>\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [labelText]=\\\"labelText\\\"\\n [touched]=\\\"ngControl ? ngControl.touched : rejectedFiles.length > 0\\\"\\n [dirty]=\\\"ngControl?.dirty\\\"\\n [errors]=\\\"ngControl?.errors\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n @for (rejectedFile of rejectedFiles; track rejectedFile.url) {\\n <div>\\n @if (rejectedFile.errorType === 'fileType') {\\n <sky-form-error\\n errorName=\\\"fileType\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_file_type_error_label_text_with_name'\\n | skyLibResources\\n : rejectedFile.file.name\\n : rejectedFile.errorParam\\n \\\"\\n />\\n } @else if (rejectedFile.errorType === 'maxFileSize') {\\n <sky-form-error\\n errorName=\\\"maxFileSize\\\"\\n [errorText]=\\\"\\n acceptedTypesErrorMessage ??\\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\\n | skyLibResources\\n : rejectedFile.file.name\\n : (rejectedFile.errorParam | skyFileSize)\\n \\\"\\n />\\n } @else if (rejectedFile.errorType === 'minFileSize') {\\n <sky-form-error\\n errorName=\\\"minFileSize\\\"\\n [errorText]=\\\"\\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\\n | skyLibResources\\n : rejectedFile.file.name\\n : (rejectedFile.errorParam | skyFileSize)\\n \\\"\\n />\\n } @else if (\\n rejectedFile.errorType === 'validate' && rejectedFile.errorParam\\n ) {\\n <sky-form-error\\n errorName=\\\"validate\\\"\\n [errorText]=\\\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\\\"\\n />\\n }\\n </div>\\n }\\n</sky-form-errors>\\n\", styles: [\".sky-file-drop-wrapper:not(.sky-theme-modern *){--sky-override-file-drop-accept-border-color: #72bf44;--sky-override-file-drop-col-padding: 0 5px;--sky-override-file-drop-col-responsive-margin-bottom: 10px;--sky-override-file-drop-col-responsive-margin-right: 0;--sky-override-file-drop-contents-background-color: #eeeeef;--sky-override-file-drop-contents-border-color: #cdcfd2;--sky-override-file-drop-contents-border-radius: 0;--sky-override-file-drop-contents-border-width: 1px;--sky-override-file-drop-contents-padding: 10px;--sky-override-file-drop-drag-border-width: 1px;--sky-override-file-drop-drag-contents-border-style: dashed;--sky-override-file-drop-hint-text-margin-top: var(--sky-margin-stacked-xs);--sky-override-file-drop-label-color: #212327;--sky-override-file-drop-label-font-size: 15px;--sky-override-file-drop-link-header-margin-bottom: 5px;--sky-override-file-drop-link-input-background-color: transparent;--sky-override-file-drop-link-input-margin-bottom: 10px;--sky-override-file-drop-non-stacked-with-item-margin-bottom: 0;--sky-override-file-drop-outline-focus: auto;--sky-override-file-drop-reject-border-color: #ef4044;--sky-override-file-drop-text-font-size: 15px;--sky-override-file-drop-text-font-weight: 400;--sky-override-file-drop-text-header-font-size: 22px;--sky-override-file-drop-text-header-font-weight: 600;--sky-override-file-drop-text-header-line-height: 1.1;--sky-override-file-drop-text-line-height: 1.1;--sky-override-file-drop-text-margin-bottom: 20px;--sky-override-file-drop-text-margin-top: 5px;--sky-override-file-drop-upload-contents-active-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-focus-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-hover-border: #cdcfd2 solid 1px;--sky-override-file-upload-icon-color: #686c73;--sky-override-file-drop-upload-icon-margin-top: 10px}:host.sky-form-field-stacked{display:block}:host-context(:has(+ sky-file-item):not(.sky-form-field-stacked)) .sky-file-drop-wrapper{margin-bottom:var(--sky-override-file-drop-non-stacked-with-item-margin-bottom, var(--sky-space-gap-form-l))}.sky-file-drop-col{padding:var(--sky-override-file-drop-col-padding, 0);position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border:var(--sky-override-file-drop-contents-border-width, var(--sky-border-width-input-base)) solid var(--sky-override-file-drop-contents-border-color, var(--sky-color-border-input-base));background-color:var(--sky-override-file-drop-contents-background-color, var(--sky-color-background-file_drop));border-radius:var(--sky-override-file-drop-contents-border-radius, var(--sky-border-radius-s));padding:var(--sky-override-file-drop-contents-padding, var(--sky-comp-file_drop-content-space-inset-top) var(--sky-comp-file_drop-content-space-inset-right) var(--sky-comp-file_drop-content-space-inset-bottom) var(--sky-comp-file_drop-content-space-inset-left));cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:var(--sky-override-file-drop-link-header-margin-bottom, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop:active~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-active-border, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active))}.sky-file-drop:focus-visible:not(:active){outline:var(--sky-override-file-drop-outline-focus, none)}.sky-file-drop:focus-visible:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-focus-border, var(--sky-border-width-input-focus) solid var(--sky-color-border-input-focus))}.sky-file-drop:hover:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-hover-border, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover))}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-override-file-drop-hint-text-margin-top, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:var(--sky-override-file-drop-drag-contents-border-style, solid);border-width:var(--sky-override-file-drop-drag-border-width, var(--sky-border-width-input-hover))}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:var(--sky-override-file-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:var(--sky-override-file-drop-reject-border-color, var(--sky-color-border-danger));border-width:var(--sky-override-file-drop-drag-border-width, var(--sky-border-width-input-error))}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;max-height:auto;color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-deemphasized));margin-top:var(--sky-override-file-drop-upload-icon-margin-top, var(--sky-space-gap-stacked_supplemental-l))}.sky-file-upload-icon-close{color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-danger))}.sky-file-upload-icon-target{color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-success))}.sky-file-drop-link{cursor:default}.sky-file-drop-link sky-input-box{--sky-comp-override-input-box-group-background-color: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );--sky-comp-override-input-box-group-background-color-focused: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );margin-bottom:var(--sky-override-file-drop-link-input-margin-bottom, var(--sky-space-gap-form-s))}.sky-file-drop-text-header{margin:0;font-size:var(--sky-override-file-drop-text-header-font-size, var(--sky-font-size-body-m));font-style:var(--sky-font-style-body-m);font-weight:var(--sky-override-file-drop-text-header-font-weight, var(--sky-font-style-body-m));line-height:var(--sky-override-file-drop-text-header-line-height, var(--sky-font-line_height-body-m))}.sky-file-drop-text{margin-top:var(--sky-override-file-drop-text-margin-top, var(--sky-space-gap-stacked_supplemental-s));margin-bottom:var(--sky-override-file-drop-text-margin-bottom, 0);font-size:var(--sky-override-file-drop-text-font-size, var(--sky-font-size-body-s));font-style:var(--sky-font-style-body-s);font-weight:var(--sky-override-file-drop-text-font-weight, var(--sky-font-style-body-s));line-height:var(--sky-override-file-drop-text-line-height, var(--sky-font-line_height-body-s))}.sky-file-drop-text,.sky-file-drop-text-header{display:block}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-control-label{color:var(--sky-override-file-drop-label-color, var(--sky-color-text-default));font-size:var(--sky-override-file-drop-label-font-size, var(--sky-font-size-input-label));font-style:var(--sky-font-style-input-label);font-weight:var(--sky-font-style-input-label);letter-spacing:var(--sky-font-letter_spacing-input-label);line-height:var(--sky-font-line_height-input-label)}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { filesChanged: [{\n type: Output\n }], linkInputBlur: [{\n type: Output\n }], linkChanged: [{\n type: Output\n }], fileUploadAriaLabel: [{\n type: Input\n }], linkUploadAriaLabel: [{\n type: Input\n }], linkUploadHintText: [{\n type: Input\n }], minFileSize: [{\n type: Input\n }], maxFileSize: [{\n type: Input\n }], multiple: [{\n type: Input\n }], validateFn: [{\n type: Input\n }], acceptedTypes: [{\n type: Input\n }], acceptedTypesErrorMessage: [{\n type: Input\n }], noClick: [{\n type: Input\n }], allowLinks: [{\n type: Input\n }], labelText: [{\n type: Input\n }], labelHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hintText: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }, {\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], helpKey: [{\n type: Input\n }], inputEl: [{\n type: ViewChild,\n args: ['fileInput']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC9maWxlLWRyb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsdUJBQXVCLEdBQ3hCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1B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QkFBcUIsK0ZBQ3JCLHNCQUFzQixnSEFDdEIsdUJBQXVCLDhCQUN2QixtQkFBbUIsd1BBQ25CLGFBQWEscUlBQ2IsV0FBVyw0R0FDWCxpQkFBaUIsbWVBQ2pCLGNBQWMsK0hBUmQsZUFBZTs7NEZBV04sb0JBQW9CO2tCQXRCaEMsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Qsd0JBQXdCO3dCQUN4QixFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO3FCQUNyRCxXQUNRO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0Qix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsY0FBYztxQkFDZjs7c0JBTUEsTUFBTTs7c0JBTU4sTUFBTTs7c0JBTU4sTUFBTTs7c0JBU04sS0FBSzs7c0JBU0wsS0FBSzs7c0JBTUwsS0FBSzs7c0JBT0wsS0FBSzs7c0JBYUwsS0FBSzs7c0JBWUwsS0FBSzs7c0JBUUwsS0FBSzs7c0JBUUwsS0FBSzs7c0JBT0wsS0FBSzs7c0JBTUwsS0FBSzs7c0JBTUwsS0FBSzs7c0JBTUwsS0FBSzs7c0JBTUwsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBT3JDLEtBQUs7O3NCQVVMLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQVFyQyxLQUFLOztzQkFPTCxLQUFLOztzQkFPTCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFOztzQkFDckMsV0FBVzt1QkFBQyw4QkFBOEI7O3NCQVExQyxLQUFLOztzQkFHTCxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybXNNb2R1bGUsXG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgU2t5RmlsZVJlYWRlclNlcnZpY2UsXG4gIFNreUlkTW9kdWxlLFxuICBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pY29uJztcbmltcG9ydCB7IFNreVRoZW1lTW9kdWxlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Rm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uLy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hNb2R1bGUgfSBmcm9tICcuLi8uLi9pbnB1dC1ib3gvaW5wdXQtYm94Lm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9za3ktZm9ybXMtcmVzb3VyY2VzLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudFNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWF0dGFjaG1lbnQvZmlsZS1hdHRhY2htZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RmlsZUl0ZW0gfSBmcm9tICcuLi9zaGFyZWQvZmlsZS1pdGVtJztcbmltcG9ydCB7IFNreUZpbGVTaXplUGlwZSB9IGZyb20gJy4uL3NoYXJlZC9maWxlLXNpemUucGlwZSc7XG5pbXBvcnQgeyBTa3lGaWxlVmFsaWRhdGVGbiB9IGZyb20gJy4uL3NoYXJlZC9maWxlLXZhbGlkYXRlLWZ1bmN0aW9uJztcblxuaW1wb3J0IHsgU2t5RmlsZURyb3BDaGFuZ2UgfSBmcm9tICcuL2ZpbGUtZHJvcC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RmlsZUxpbmsgfSBmcm9tICcuL2ZpbGUtbGluayc7XG5cbmNvbnN0IE1BWF9GSUxFX1NJWkVfREVGQVVMVCA9IDUwMDAwMDtcbmNvbnN0IE1JTl9GSUxFX1NJWkVfREVGQVVMVCA9IDA7XG5cbi8qKlxuICogUHJvdmlkZXMgYW4gZWxlbWVudCB0byBhdHRhY2ggbXVsdGlwbGUgZmlsZXMgd2hlcmUgdXNlcnMgY2FuIGJyb3dzZSBvciBkcmFnIGFuZCBkcm9wIGxvY2FsIGZpbGVzXG4gKiBvciBwcm92aWRlIGh5cGVybGlua3MgdG8gZXh0ZXJuYWwgZmlsZXMuIFlvdSBjYW4gbGVhdmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBjb21wb25lbnRcbiAqIGJsYW5rIHRvIGRpc3BsYXkgdGhlIGRyb3Agem9uZSdzIGRlZmF1bHQgVUksIG9yIHlvdSBjYW4gc3BlY2lmeSBjdXN0b20gY29udGVudCB0b1xuICogZGlzcGxheSBpbnN0ZWFkLiBXaGVuIHRoZSBtb2R1bGUgaW5pdGlhbGl6ZXMsIGl0IGRpc2FibGVzIHRoZSBhYmlsaXR5IHRvIGRyYWcgYW5kXG4gKiBkcm9wIGZpbGVzIGZvciB0aGUgZW50aXJlIHdpbmRvdyB0byBwcmV2ZW50IHRoZSBicm93c2VyIGZyb20gb3BlbmluZyBmaWxlcyB0aGF0IGFyZVxuICogYWNjaWRlbnRhbGx5IGRyb3BwZWQgb3V0c2lkZSB0aGUgdGFyZ2V0IHpvbmUuIElmIHlvdSBpbXBsZW1lbnQgeW91ciBvd24gZmlsZSBkcm9wIGZ1bmN0aW9uYWxpdHlcbiAqIG91dHNpZGUgb2YgdGhlIGZpbGUgZHJvcCBjb21wb25lbnQsIHlvdSBjYW4gcGxhY2UgdGhlIGBza3ktZmlsZS1kcm9wLXRhcmdldGAgQ1NTIGNsYXNzXG4gKiBvbiB0aGUgZWxlbWVudCB0aGF0IHJlY2VpdmVzIGRyb3AgZXZlbnRzIHRvIGV4ZW1wdCBpdCBmcm9tIHRoZSBkcm9wIGV4Y2x1c2lvbiBydWxlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktZmlsZS1kcm9wJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtZHJvcC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lGaWxlQXR0YWNobWVudFNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTa3lGaWxlU2l6ZVBpcGUsXG4gICAgU2t5Rm9ybUVycm9yQ29tcG9uZW50LFxuICAgIFNreUZvcm1FcnJvcnNDb21wb25lbnQsXG4gICAgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5SGVscElubGluZU1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUlkTW9kdWxlLFxuICAgIFNreUlucHV0Qm94TW9kdWxlLFxuICAgIFNreVRoZW1lTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWxlRHJvcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBhZGQgb3IgcmVtb3ZlIGZpbGVzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWxlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUZpbGVEcm9wQ2hhbmdlPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBsaW5rIGlucHV0IGJveCB0cmlnZ2VycyBhIGJsdXIgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGxpbmtJbnB1dEJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgYWRkIG9yIHJlbW92ZSBsaW5rcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbGlua0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUZpbGVMaW5rPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIGZpbGUgdXBsb2FkIGJ1dHRvbi4gVGhpcyBwcm92aWRlcyBhIHRleHQgZXF1aXZhbGVudCBmb3JcbiAgICogc2NyZWVuIHJlYWRlcnMgW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiRHJhZyBhIGZpbGUgaGVyZSBvciBjbGljayB0byBicm93c2VcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGZpbGVVcGxvYWRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSBsaW5rIHVwbG9hZCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBidXR0b24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIHNjcmVlbiByZWFkZXJzIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVmYXVsdCBcIkxpbmsgdG8gYSBmaWxlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsaW5rVXBsb2FkQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBoaW50IHRleHQgZm9yIHRoZSBsaW5rIHVwbG9hZCBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsaW5rVXBsb2FkSGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gc2l6ZSBpbiBieXRlcyBmb3IgdmFsaWQgZmlsZXMuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19taW5GaWxlU2l6ZSA9IHZhbHVlID8/IE1JTl9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluRmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21pbkZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCA1MDAwMDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWF4RmlsZVNpemUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tYXhGaWxlU2l6ZSA9IHZhbHVlID8/IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX21heEZpbGVTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlcnMgY2FuIGRyYWcgYW5kIGRyb3AgbXVsdGlwbGUgZmlsZXMgYXQgdGhlIHNhbWUgdGltZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtdWx0aXBsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gdmFsaWRhdGlvbiBmdW5jdGlvbi4gVGhpcyB2YWxpZGF0aW9uIHJ1bnMgYWxvbmdzaWRlIHRoZSBpbnRlcm5hbFxuICAgKiBmaWxlIHZhbGlkYXRpb24uIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBgU2t5RmlsZUl0ZW1gIG9iamVjdCBhcyBhIHBhcmFtZXRlci5cbiAgICogVGhlIHN0cmluZyByZXR1cm5lZCBpcyB1c2VkIGFzIHRoZSBlcnJvciBtZXNzYWdlIGluIG11bHRpLWZpbGUgYXR0YWNobWVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2YWxpZGF0ZUZuOiBTa3lGaWxlVmFsaWRhdGVGbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgbGl0ZXJhbCBvZiBNSU1FIHR5cGVzIHRoYXQgdXNlcnMgY2FuIGF0dGFjaC5cbiAgICogQnkgZGVmYXVsdCwgYWxsIGZpbGUgdHlwZXMgYXJlIGFsbG93ZWQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdGVkVHlwZXM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBjdXN0b20gZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IHdoZW4gYSBmaWxlIGRvZXNuJ3QgbWF0Y2ggdGhlIGFjY2VwdGVkIHR5cGVzLlxuICAgKiBUaGlzIHJlcGxhY2VzIGEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIHRoYXQgbGlzdHMgYWxsIGFjY2VwdGVkIHR5cGVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdGVkVHlwZXNFcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBvcHRpb24gdG8gYnJvd3NlIGZvciBmaWxlcyB0byBhdHRhY2guXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9DbGljazogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIG9wdGlvbiB0byBhdHRhY2ggZmlsZXMgZnJvbSBVUkxzIHJhdGhlciB0aGFuIGZyb20gbG9jYWwgZGV2aWNlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhbGxvd0xpbmtzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIGZpbGUgYXR0YWNobWVudCdzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgYGxhYmVsVGV4dGAgZnJvbSB2aWV3LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBsYWJlbEhpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBbUGVyc2lzdGVudCBpbmxpbmUgaGVscCB0ZXh0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9ndWlkZWxpbmVzL3VzZXItYXNzaXN0YW5jZSNpbmxpbmUtaGVscCkgdGhhdCBwcm92aWRlc1xuICAgKiBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB1cGxvYWRpbmcgYSBmaWxlIG9yIGxpbmsgaXMgcmVxdWlyZWQuXG4gICAqIFdoZW4geW91IHNldCB0aGlzIHByb3BlcnR5IHRvIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBhZGRzIGBhcmlhLXJlcXVpcmVkYCBhbmQgYHJlcXVpcmVkYFxuICAgKiBhdHRyaWJ1dGVzIHRvIHRoZSBpbnB1dCBlbGVtZW50cyBzbyB0aGF0IHNjcmVlbiByZWFkZXJzIGFubm91bmNlIGFuIGludmFsaWQgc3RhdGUgdW50aWwgdGhlIGlucHV0IGVsZW1lbnRcbiAgICogaXMgY29tcGxldGUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtcmVxdWlyZWQpLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIGZpbGUgYXR0YWNobWVudCBsYWJlbC4gVGhlIGhlbHAgaW5saW5lIGJ1dHRvbiBkaXNwbGF5cyBhIFtwb3BvdmVyXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcG9wb3ZlcilcbiAgICogd2hlbiBjbGlja2VkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgb3B0aW9uYWwgdGl0bGUuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBoZWxwIHBvcG92ZXIuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlbHBQb3BvdmVyQ29udGVudGAgaXNcbiAgICogYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscFBvcG92ZXJUaXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmaWxlIGF0dGFjaG1lbnQgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCwgdGhlIGFwcHJvcHJpYXRlXG4gICAqIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZmlsZSBhdHRhY2htZW50LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBwbGFjZWQgYmVzaWRlIHRoZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpXG4gIHB1YmxpYyBpbnB1dEVsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgcHVibGljIGFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgbGlua1VybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNlbnRlckV2ZW50VGFyZ2V0OiBhbnk7XG5cbiAgI19tYXhGaWxlU2l6ZSA9IE1BWF9GSUxFX1NJWkVfREVGQVVMVDtcblxuICAjX21pbkZpbGVTaXplID0gTUlOX0ZJTEVfU0laRV9ERUZBVUxUO1xuXG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICNub3RpZnlDaGFuZ2U6XG4gICAgfCAoKF86IChTa3lGaWxlSXRlbSB8IFNreUZpbGVMaW5rKVtdIHwgdW5kZWZpbmVkIHwgbnVsbCkgPT4gdm9pZClcbiAgICB8IHVuZGVmaW5lZDtcbiAgI191cGxvYWRlZEZpbGVzOiAoU2t5RmlsZUl0ZW0gfCBTa3lGaWxlTGluaylbXSA9IFtdO1xuXG4gIHJlYWRvbmx5ICNmaWxlQXR0YWNobWVudFNlcnZpY2UgPSBpbmplY3QoU2t5RmlsZUF0dGFjaG1lbnRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2ZpbGVSZWFkZXJTdmMgPSBpbmplY3QoU2t5RmlsZVJlYWRlclNlcnZpY2UpO1xuICByZWFkb25seSAjbGl2ZUFubm91bmNlclN2YyA9IGluamVjdChTa3lMaXZlQW5ub3VuY2VyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG4gIHJlYWRvbmx5ICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBlcnJvcklkID0gdGhpcy4jaWRTdmMuZ2VuZXJhdGVJZCgpO1xuXG4gIHByb3RlY3RlZCBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByb3RlY3RlZCByZWplY3RlZEZpbGVzOiBTa3lGaWxlSXRlbVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5maWxlc0NoYW5nZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5saW5rSW5wdXRCbHVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uc3QgbGlua1VwbG9hZHM6IFNreUZpbGVMaW5rW10gPSBbXTtcbiAgICAgIGNvbnN0IGZpbGVVcGxvYWRzOiBTa3lGaWxlSXRlbVtdID0gW107XG5cbiAgICAgIHZhbHVlLmZvckVhY2goKGZpbGUpID0+IHtcbiAgICAgICAgaWYgKCd1cmwnIGluIGZpbGUgJiYgZmlsZS51cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICghKCdmaWxlJyBpbiBmaWxlKSkge1xuICAgICAgICAgICAgbGlua1VwbG9hZHMucHVzaChmaWxlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCdmaWxlJyBpbiBmaWxlICYmIGZpbGUuZmlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmaWxlVXBsb2Fkcy5wdXNoKGZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICghKGxpbmtVcGxvYWRzLmxlbmd0aCA+IDApICYmICEoZmlsZVVwbG9hZHMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4obnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNfdXBsb2FkZWRGaWxlcyA9IFtdO1xuXG4gICAgICAgIGlmIChsaW5rVXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGlua1VwbG9hZHMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRMaW5rKGZpbGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxlVXBsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gdGhpcyBwcmV2ZW50cyBGb3JtQ29udHJvbCBmcm9tIHNldHRpbmcgYW4gaW52YWxpZCB2YWx1ZSBiZWZvcmUgdGhlIGFzeW5jXG4gICAgICAgICAgLy8gcHJvY2Vzc2VzIGluICNoYW5kbGVGaWxlIGlzIGNvbXBsZXRlXG4gICAgICAgICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4obnVsbCk7XG4gICAgICAgICAgdGhpcy4jaGFuZGxlRmlsZXMoZmlsZVVwbG9hZHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBkcm9wQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubm9DbGljayAmJiB0aGlzLmlucHV0RWwpIHtcbiAgICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZUV2ZW50KGZpbGVDaGFuZ2VFdmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAvKiogU2V0IGEgdGltZW91dCBoZXJlIHRvIGFsbG93IHRoZSBicm93c2VyIHRvIHJlZ2FpbiBjb250ZXh0IGZyb20gdGhlIHN5c3RlbSBkaWFsb2cuIFdpdGhvdXQgdGhpcywgZXJyb3IgbWVzc2FnZXMgZG8gbm90IHJlYWQgb3V0IGNvcnJlY3RseSB0byBzY3JlZW4gcmVhZGVycy4gKi9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI2hhbmRsZUZpbGVzKFxuICAgICAgICAoZmlsZUNoYW5nZUV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkKT8uZmlsZXMsXG4gICAgICApO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdFbnRlcihkcmFnRW50ZXJFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgLy8gU2F2ZSB0aGlzIHRhcmdldCB0byBrbm93IHdoZW4gdGhlIGRyYWcgZXZlbnQgbGVhdmVzXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IGRyYWdFbnRlckV2ZW50LnRhcmdldDtcbiAgICBkcmFnRW50ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnRW50ZXJFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnT3ZlcihkcmFnT3ZlckV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2ZlciA9IGRyYWdPdmVyRXZlbnQuZGF0YVRyYW5zZmVyO1xuXG4gICAgZHJhZ092ZXJFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcmFnT3ZlckV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAodHJhbnNmZXIpIHtcbiAgICAgIGlmICh0cmFuc2Zlci5pdGVtcykge1xuICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odHJhbnNmZXIuaXRlbXMpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbGUudHlwZSAmJlxuICAgICAgICAgICAgdGhpcy4jZmlsZUF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVUeXBlUmVqZWN0ZWQoXG4gICAgICAgICAgICAgIGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5hY2NlcHRlZE92ZXIpIHtcbiAgICAgICAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdW50ZXN0YWJsZSAqLyBlbHNlIGlmICh0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAvLyBJZiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IERhdGFUcmFuc2Zlci5pdGVtcyxcbiAgICAgICAgLy8gZGVmZXIgZmlsZS10eXBlIGNoZWNraW5nIHRvIGRyb3AgaGFuZGxlci5cbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RhdGFUcmFuc2Zlci9pdGVtcyNCcm93c2VyX2NvbXBhdGliaWxpdHlcbiAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hY2NlcHRlZE92ZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJvcChkcm9wRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGRyb3BFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBkcm9wRXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuXG4gICAgdGhpcy4jZW50ZXJFdmVudFRhcmdldCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnJlamVjdGVkT3ZlciA9IGZhbHNlO1xuICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG5cbiAgICBpZiAoZHJvcEV2ZW50LmRhdGFUcmFuc2ZlciAmJiBkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSB7XG4gICAgICBjb25zdCBoYXNEaXJlY3RvcnkgPSB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UuaGFzRGlyZWN0b3J5KFxuICAgICAgICBkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGludmFsaWROdW1iZXJPZkZpbGVzID1cbiAgICAgICAgIXRoaXMubXVsdGlwbGUgJiYgZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAxO1xuXG4gICAgICBpZiAoaGFzRGlyZWN0b3J5IHx8IGludmFsaWROdW1iZXJPZkZpbGVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jaGFuZGxlRmlsZXMoZHJvcEV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnTGVhdmUoZHJhZ0xlYXZlRXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNlbnRlckV2ZW50VGFyZ2V0ID09PSBkcmFnTGVhdmVFdmVudC50YXJnZXQpIHtcbiAgICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRMaW5rRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQud2hpY2ggPT09IDEzKSB7XG4gICAgICB0aGlzLmFkZExpbmsoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRMaW5rKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy51cGxvYWRMaW5rKHsgdXJsOiB0aGlzLmxpbmtVcmwgfSBhcyBTa3lGaWxlTGluayk7XG4gICAgdGhpcy5saW5rVXJsID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwbG9hZExpbmsoZmlsZTogU2t5RmlsZUxpbmspOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkLmVtaXQoZmlsZSk7XG4gICAgdGhpcy4jX3VwbG9hZGVkRmlsZXM/LnB1c2goZmlsZSk7XG4gICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4odGhpcy4jX3VwbG9hZGVkRmlsZXMpO1xuICAgIHRoaXMuI2Fubm91bmNlU3RhdGUoXG4gICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfYWRkZWQnLFxuICAgICAgZmlsZS51cmwsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICAgIHRoaXMubGlua0lucHV0Qmx1ci5lbWl0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucmVxdWlyZWQgfHxcbiAgICAgICh0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/IGZhbHNlKVxuICAgICk7XG4gIH1cblxuICAjYW5ub3VuY2VTdGF0ZShyZXNvdXJjZVN0cmluZzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgLmdldFN0cmluZyhyZXNvdXJjZVN0cmluZywgLi4uYXJncylcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChpbnRlcm5hdGlvbmFsaXplZFN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKGludGVybmF0aW9uYWxpemVkU3RyaW5nKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI2VtaXRGaWxlQ2hhbmdlRXZlbnQoXG4gICAgdG90YWxGaWxlczogbnVtYmVyLFxuICAgIHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICAgIHZhbGlkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICApOiB2b2lkIHtcbiAgICBpZiAodG90YWxGaWxlcyA9PT0gcmVqZWN0ZWRGaWxlQXJyYXkubGVuZ3RoICsgdmFsaWRGaWxlQXJyYXkubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgZmlsZXM6IHZhbGlkRmlsZUFycmF5LFxuICAgICAgICByZWplY3RlZEZpbGVzOiByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgIH0gYXMgU2t5RmlsZURyb3BDaGFuZ2UpO1xuXG4gICAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2ZpbGVzUmVqZWN0ZWQoXG4gICAgZmlsZTogU2t5RmlsZUl0ZW0sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdG90YWxGaWxlczogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICByZWplY3RlZEZpbGVBcnJheS5wdXNoKGZpbGUpO1xuICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKFxuICAgICAgdGhpcy4jX3VwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCA/IHRoaXMuI191cGxvYWRlZEZpbGVzIDogbnVsbCxcbiAgICApO1xuICAgIHRoaXMuI2VtaXRGaWxlQ2hhbmdlRXZlbnQodG90YWxGaWxlcywgcmVqZWN0ZWRGaWxlQXJyYXksIHZhbGlkRmlsZUFycmF5KTtcbiAgfVxuXG4gIGFzeW5jICNsb2FkRmlsZShcbiAgICBmaWxlRHJvcDogU2t5RmlsZURyb3BDb21wb25lbnQsXG4gICAgZmlsZTogU2t5RmlsZUl0ZW0sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdG90YWxGaWxlczogbnVtYmVyLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgZmlsZS51cmwgPSBhd2FpdCB0aGlzLiNmaWxlUmVhZGVyU3ZjLnJlYWRBc0RhdGFVUkwoZmlsZS5maWxlKTtcblxuICAgICAgdmFsaWRGaWxlQXJyYXkucHVzaChmaWxlKTtcbiAgICAgIGZpbGVEcm9wLiNlbWl0RmlsZUNoYW5nZUV2ZW50KFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgICByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICApO1xuICAgICAgdGhpcy4jYW5ub3VuY2VTdGF0ZShcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9maWxlX2FkZGVkJyxcbiAgICAgICAgZmlsZS5maWxlLm5hbWUsXG4gICAgICApO1xuICAgICAgdGhpcy4jX3VwbG9hZGVkRmlsZXM/LnB1c2goZmlsZSk7XG4gICAgICB0aGlzLiNub3RpZnlDaGFuZ2U/Lih0aGlzLiNfdXBsb2FkZWRGaWxlcyk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBmaWxlRHJvcC4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjaGFuZGxlRmlsZXMoZmlsZUxpc3Q/OiBGaWxlTGlzdCB8IG51bGwgfCBTa3lGaWxlSXRlbVtdKTogdm9pZCB7XG4gICAgaWYgKGZpbGVMaXN0KSB7XG4gICAgICBjb25zdCB2YWxpZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHRvdGFsRmlsZXMgPSBmaWxlTGlzdC5sZW5ndGg7XG5cbiAgICAgIGxldCBmaWxlczogU2t5RmlsZUl0ZW1bXSA9IFtdO1xuXG4gICAgICBpZiAoJ2l0ZW0nIGluIGZpbGVMaXN0KSB7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWxlTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBmaWxlcy5wdXNoKHtcbiAgICAgICAgICAgIGZpbGU6IGZpbGVMaXN0Lml0ZW0oaW5kZXgpLFxuICAgICAgICAgIH0gYXMgU2t5RmlsZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWxlcyA9IGZpbGVMaXN0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9jZXNzZWRGaWxlcyA9IHRoaXMuI2ZpbGVBdHRhY2htZW50U2VydmljZS5jaGVja0ZpbGVzKFxuICAgICAgICBmaWxlcyxcbiAgICAgICAgdGhpcy5taW5GaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5tYXhGaWxlU2l6ZSxcbiAgICAgICAgdGhpcy5hY2NlcHRlZFR5cGVzLFxuICAgICAgICB0aGlzLnZhbGlkYXRlRm4sXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcHJvY2Vzc2VkRmlsZXMpIHtcbiAgICAgICAgaWYgKGZpbGUuZXJyb3JUeXBlKSB7XG4gICAgICAgICAgdGhpcy4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICB2YWxpZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZvaWQgdGhpcy4jbG9hZEZpbGUoXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHZhbGlkRmlsZUFycmF5LFxuICAgICAgICAgICAgcmVqZWN0ZWRGaWxlQXJyYXksXG4gICAgICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWplY3RlZEZpbGVzID0gcmVqZWN0ZWRGaWxlQXJyYXk7XG4gICAgfVxuICB9XG59XG4iLCI8ZmllbGRzZXQgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXdyYXBwZXJcIj5cbiAgQGlmIChsYWJlbFRleHQpIHtcbiAgICA8bGVnZW5kXG4gICAgICBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsIHNreS1mb250LWJvZHktZGVmYXVsdFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktc2NyZWVuLXJlYWRlci1vbmx5JzogbGFiZWxIaWRkZW5cbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwic2t5LWZpbGUtZHJvcC1sYWJlbC10ZXh0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCc6IGlzUmVxdWlyZWRcbiAgICAgICAgfVwiXG4gICAgICAgID57eyBsYWJlbFRleHQgfX08L3NwYW5cbiAgICAgID5cbiAgICAgIEBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj57e1xuICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfcmVxdWlyZWQnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1jb250cm9sLWhlbHAtY29udGFpbmVyXCI+XG4gICAgICAgICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICAgICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICAgICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvbGVnZW5kPlxuICB9XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1maWxlLWRyb3Atcm93XCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktZmlsZS1kcm9wLWFsbG93LWxpbmtzJzogYWxsb3dMaW5rcyB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb2xcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWZpbGUtZHJvcC1hY2NlcHQnOiBhY2NlcHRlZE92ZXIsXG4gICAgICAgICdza3ktZmlsZS1kcm9wLXJlamVjdCc6IHJlamVjdGVkT3ZlclxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1maWxlLWRyb3Agc2t5LWZpbGUtZHJvcC10YXJnZXRcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICBmaWxlVXBsb2FkQXJpYUxhYmVsIHx8XG4gICAgICAgICAgKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJhZ19vcl9jbGljaycgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaGludFRleHQgPyBoaW50VGV4dEVsLmlkIDogdW5kZWZpbmVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICAgICAgICBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJcbiAgICAgICAgICBsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGggPyBlcnJvcklkIDogdW5kZWZpbmVkXG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCJkcm9wQ2xpY2tlZCgpXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cImZpbGVEcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdlbnRlcik9XCJmaWxlRHJhZ0VudGVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cImZpbGVEcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgIChkcm9wKT1cImZpbGVEcm9wKCRldmVudClcIlxuICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBjbGFzcz1cInNreS1maWxlLWlucHV0LWhpZGRlblwiXG4gICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlID8gbXVsdGlwbGUgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYWNjZXB0XT1cImFjY2VwdGVkVHlwZXMgPyBhY2NlcHRlZFR5cGVzIDogbnVsbFwiXG4gICAgICAgIChjaGFuZ2UpPVwiZmlsZUNoYW5nZUV2ZW50KCRldmVudClcIlxuICAgICAgLz5cblxuICAgICAgQGlmIChjdXN0b21FbC5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMgc2t5LWZpbGUtZHJvcC11cGxvYWQtY29udGVudHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1ub3Qtb3ZlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dC1oZWFkZXJcIlxuICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3NreS1mb250LWRpc3BsYXktMyc6ICdkZWZhdWx0J1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2RyYWdfZmlsZV9oZXJlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dFwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfb3JfY2xpY2tfdG9fYnJvd3NlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZpbGUtdXBsb2FkLWljb25cIlxuICAgICAgICAgICAgICBpY29uTmFtZT1cImFycm93LXVwbG9hZFwiXG4gICAgICAgICAgICAgIGljb25TaXplPVwieGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gVGhpcyB3aWxsIGFwcGVhciB3aGVuIGZpbGUgaXMgZHJhZ2dlZCBvdmVyIGFuZCBpcyB2YWxpZCAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1hY2NlcHRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdza3ktZm9udC1kaXNwbGF5LTMnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcm9wX2ZpbGVzX2hlcmUnXG4gICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZmlsZS11cGxvYWQtaWNvbiBza3ktZmlsZS11cGxvYWQtaWNvbi10YXJnZXRcIlxuICAgICAgICAgICAgICBpY29uTmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgICAgIGljb25TaXplPVwieGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gVGhpcyB3aWxsIGFwcGVhciB3aGVuIGZpbGUgaXMgZHJhZ2dlZCBvdmVyIGFuZCBpcyBpbnZhbGlkIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLXJlamVjdFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtdGV4dC1oZWFkZXJcIlxuICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3NreS1mb250LWRpc3BsYXktMyc6ICdkZWZhdWx0J1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ludmFsaWRfZmlsZSdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uIHNreS1maWxlLXVwbG9hZC1pY29uLWNsb3NlXCJcbiAgICAgICAgICAgICAgaWNvbk5hbWU9XCJwcm9oaWJpdGVkXCJcbiAgICAgICAgICAgICAgaWNvblNpemU9XCJ4bFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiAjY3VzdG9tRWwgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzLWN1c3RvbVwiPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgQGlmIChhbGxvd0xpbmtzKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1saW5rXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtZHJvcC1saW5rLWhlYWRlclwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGlzcGxheS0zJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2xhYmVsJ1xuICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c2t5LWlucHV0LWJveCBbaGludFRleHRdPVwibGlua1VwbG9hZEhpbnRUZXh0XCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgbGlua1VwbG9hZEFyaWFMYWJlbCB8fFxuICAgICAgICAgICAgICAgICAgKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFyZWplY3RlZEZpbGVzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiXG4gICAgICAgICAgICAgICAgICBsYWJlbFRleHQgJiYgcmVqZWN0ZWRGaWxlcy5sZW5ndGggPyBlcnJvcklkIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxpbmtVcmxcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uTGlua0JsdXIoKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImFkZExpbmtFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc2t5LWlucHV0LWJveD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWxpbmtVcmxcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkTGluaygkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfZG9uZScgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgI2hpbnRUZXh0RWw9XCJza3lJZFwiIHNreUlkPlxuICAgIEBpZiAoaGludFRleHQpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJza3ktZm9udC1kZWVtcGhhc2l6ZWQgc2t5LWZpbGUtZHJvcC1oaW50LXRleHRcIlxuICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdkZWZhdWx0JyxcbiAgICAgICAgICAnc2t5LWZvbnQtaGludC10ZXh0LXMnOiAnbW9kZXJuJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAge3sgaGludFRleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2ZpZWxkc2V0PlxuPHNreS1mb3JtLWVycm9yc1xuICBbaWRdPVwiZXJyb3JJZFwiXG4gIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgW3RvdWNoZWRdPVwibmdDb250cm9sID8gbmdDb250cm9sLnRvdWNoZWQgOiByZWplY3RlZEZpbGVzLmxlbmd0aCA+IDBcIlxuICBbZGlydHldPVwibmdDb250cm9sPy5kaXJ0eVwiXG4gIFtlcnJvcnNdPVwibmdDb250cm9sPy5lcnJvcnNcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG4gIEBmb3IgKHJlamVjdGVkRmlsZSBvZiByZWplY3RlZEZpbGVzOyB0cmFjayByZWplY3RlZEZpbGUudXJsKSB7XG4gICAgPGRpdj5cbiAgICAgIEBpZiAocmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ2ZpbGVUeXBlJykge1xuICAgICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgICBlcnJvck5hbWU9XCJmaWxlVHlwZVwiXG4gICAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV90eXBlX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgIDogcmVqZWN0ZWRGaWxlLmZpbGUubmFtZVxuICAgICAgICAgICAgICAgIDogcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSBpZiAocmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ21heEZpbGVTaXplJykge1xuICAgICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgICBlcnJvck5hbWU9XCJtYXhGaWxlU2l6ZVwiXG4gICAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICAgIGFjY2VwdGVkVHlwZXNFcnJvck1lc3NhZ2UgPz9cbiAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9tYXhfZmlsZV9zaXplX2Vycm9yX2xhYmVsX3RleHRfd2l0aF9uYW1lJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgIDogcmVqZWN0ZWRGaWxlLmZpbGUubmFtZVxuICAgICAgICAgICAgICAgIDogKHJlamVjdGVkRmlsZS5lcnJvclBhcmFtIHwgc2t5RmlsZVNpemUpXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2UgaWYgKHJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICdtaW5GaWxlU2l6ZScpIHtcbiAgICAgICAgPHNreS1mb3JtLWVycm9yXG4gICAgICAgICAgZXJyb3JOYW1lPVwibWluRmlsZVNpemVcIlxuICAgICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X21pbl9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgOiByZWplY3RlZEZpbGUuZmlsZS5uYW1lXG4gICAgICAgICAgICAgICAgOiAocmVqZWN0ZWRGaWxlLmVycm9yUGFyYW0gfCBza3lGaWxlU2l6ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgIHJlamVjdGVkRmlsZS5lcnJvclR5cGUgPT09ICd2YWxpZGF0ZScgJiYgcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cbiAgICAgICkge1xuICAgICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgICBlcnJvck5hbWU9XCJ2YWxpZGF0ZVwiXG4gICAgICAgICAgW2Vycm9yVGV4dF09XCJyZWplY3RlZEZpbGUuZmlsZS5uYW1lICsgJzogJyArIHJlamVjdGVkRmlsZS5lcnJvclBhcmFtXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9za3ktZm9ybS1lcnJvcnM+XG4iXX0=","import { Component, EventEmitter, Input, Output, inject, } from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { take } from 'rxjs/operators';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../shared/file-item.service\";\nimport * as i2 from \"@skyux/icon\";\nimport * as i3 from \"@skyux/i18n\";\nexport class SkyFileItemComponent {\n /**\n * The summary information to display about file attachments. For local files,\n * the default summary includes the file name, file size, file preview, and a delete button.\n * For external files, the default summary includes the URL and a delete button.\n * You can include additional inputs to display user-entered metadata.\n * @required\n */\n set fileItem(value) {\n this.#_fileItem = value;\n if (value && 'file' in value) {\n this.isFile = this.#fileItemService.isFile(value);\n this.isImage = this.#fileItemService.isImage(value);\n this.fileName = value.file.name;\n this.fileSize = value.file.size;\n }\n else {\n this.isFile = this.isImage = false;\n this.fileName = '';\n this.fileSize = undefined;\n }\n this.url = value?.url ?? '';\n }\n get fileItem() {\n return this.#_fileItem;\n }\n #_fileItem;\n #differ;\n #fileItemService;\n #liveAnnouncerSvc;\n #resourcesSvc;\n constructor(differs, fileItemService) {\n /**\n * Fires when users select the delete button for an item. The deleted item is passed to the\n * function.\n */\n this.deleteFile = new EventEmitter();\n this.fileName = '';\n this.url = '';\n this.isFile = false;\n this.isImage = false;\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.#differ = differs.find({}).create();\n this.#fileItemService = fileItemService;\n }\n ngDoCheck() {\n if (this.fileItem) {\n const changes = this.#differ.diff(this.fileItem);\n if (changes) {\n let cls;\n const extensionUpper = this.#fileItemService.getFileExtensionUpper(this.fileItem);\n let fileTypeUpper;\n switch (extensionUpper) {\n case '.PDF':\n cls = 'pdf';\n break;\n case '.GZ':\n case '.RAR':\n case '.TGZ':\n case '.ZIP':\n cls = 'archive';\n break;\n case '.PPT':\n case '.PPTX':\n cls = 'ppt';\n break;\n case '.DOC':\n case '.DOCX':\n cls = 'doc';\n break;\n case '.XLS':\n case '.XLSX':\n cls = 'xls';\n break;\n case '.TXT':\n cls = 'text';\n break;\n case '.HTM':\n case '.HTML':\n cls = 'chevron-double';\n break;\n default:\n break;\n }\n if (!cls) {\n fileTypeUpper = this.#fileItemService.getFileTypeUpper(this.fileItem);\n switch (fileTypeUpper.substr(0, fileTypeUpper.indexOf('/'))) {\n case 'AUDIO':\n cls = 'audio';\n break;\n case 'IMAGE':\n // Normally images are displayed as thumbnails, but if an image type is not recognized\n // as being widely supported by modern browsers (e.g. TIFF files) then an icon should\n // be displayed instead.\n cls = 'image';\n break;\n case 'TEXT':\n cls = 'text';\n break;\n case 'VIDEO':\n cls = 'video';\n break;\n default:\n break;\n }\n }\n this.icon = 'document' + (cls ? '-' + cls : '');\n }\n }\n else {\n this.icon = undefined;\n }\n }\n itemDelete() {\n this.deleteFile.emit(this.fileItem);\n if (!this.isFile) {\n this.#resourcesSvc\n .getString('skyux_file_attachment_file_upload_link_removed', this.url)\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n else {\n this.#resourcesSvc\n .getString('skyux_file_attachment_file_upload_file_removed', this.fileName)\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileItemComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i1.SkyFileItemService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyFileItemComponent, isStandalone: true, selector: \"sky-file-item\", inputs: { fileItem: \"fileItem\" }, outputs: { deleteFile: \"deleteFile\" }, ngImport: i0, template: \"@if (fileItem) {\\n <div class=\\\"sky-file-item\\\">\\n <div class=\\\"sky-file-item-title\\\">\\n <div class=\\\"sky-file-item-name-container\\\">\\n <div class=\\\"sky-file-item-name\\\">\\n @if (isFile) {\\n {{ fileName }}\\n } @else {\\n {{ url }}\\n }\\n </div>\\n @if (isFile) {\\n <div class=\\\"sky-file-item-size\\\">({{ fileSize | skyFileSize }})</div>\\n }\\n </div>\\n <div class=\\\"sky-file-item-controls\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-file-item-btn-delete\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_file_attachment_file_item_delete'\\n | skyLibResources: (isFile ? fileName : url)\\n \\\"\\n (click)=\\\"itemDelete()\\\"\\n >\\n <sky-icon iconName=\\\"delete\\\" />\\n </button>\\n </div>\\n </div>\\n <div class=\\\"sky-file-item-content\\\">\\n <div class=\\\"sky-file-item-preview\\\">\\n @if (isImage) {\\n <div class=\\\"sky-file-item-preview-img-container\\\">\\n <img\\n class=\\\"sky-file-item-preview-img\\\"\\n [src]=\\\"url\\\"\\n [alt]=\\\"\\n 'skyux_file_attachment_file_upload_image_preview_alt_text'\\n | skyLibResources\\n \\\"\\n />\\n </div>\\n } @else if (icon) {\\n <div class=\\\"sky-file-item-preview-other\\\">\\n <sky-icon iconSize=\\\"xxxl\\\" [iconName]=\\\"icon\\\" />\\n </div>\\n }\\n </div>\\n <div class=\\\"sky-file-item-content-custom\\\">\\n <ng-content />\\n </div>\\n </div>\\n </div>\\n}\\n\", styles: [\".sky-file-item:not(.sky-theme-modern *){--sky-override-file-item-background-color: #eeeeef;--sky-override-file-item-border: 1px solid #e2e3e4;--sky-override-file-item-border-radius: 0;--sky-override-file-item-controls-padding-left: 15px;--sky-override-file-item-gap: 10px;--sky-override-file-item-margin-bottom: 10px;--sky-override-file-item-name-line-height: normal;--sky-override-file-item-name-font-size: 15px;--sky-override-file-item-name-font-weight: bolder;--sky-override-file-item-padding: 10px 10px 10px 10px;--sky-override-file-item-preview-img-box-shadow: 0 0 5px #666;--sky-override-file-item-preview-other-color: #686c73;--sky-override-file-item-preview-other-font-size: 100px;--sky-override-file-item-size-line-height: normal;--sky-override-file-item-size-font-size: 15px;--sky-override-file-item-size-font-weight: 400;--sky-override-file-item-title-bottom-margin: 10px}:host:not(:last-of-type) .sky-file-item{margin-bottom:var(--sky-override-file-item-gap, var(--sky-space-gap-form-s))}:host-context(sky-file-drop.sky-form-field-stacked ~ sky-file-item:last-of-type) .sky-file-item{margin-bottom:var(--sky-override-file-item-margin-bottom, var(--sky-space-gap-form-l))}.sky-file-item{border:var(--sky-override-file-item-border, var(--sky-border-width-input-base) solid var(--sky-color-border-input-base));border-radius:var(--sky-override-file-item-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-file-item-background-color, var(--sky-color-background-file_drop));margin-bottom:var(--sky-override-file-item-margin-bottom, 0);padding:var(--sky-override-file-item-padding, var(--sky-comp-file_drop-content-space-inset-top) var(--sky-comp-file_drop-content-space-inset-right) var(--sky-comp-file_drop-content-space-inset-bottom) var(--sky-comp-file_drop-content-space-inset-left))}.sky-file-item-name-container{flex:1 1 auto;overflow:hidden}.sky-file-item-controls{flex:0 1 auto;padding-left:var(--sky-override-file-item-controls-padding-left, var(--sky-space-gap-text_action-m))}.sky-file-item-name{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:var(--sky-override-file-item-name-font-weight, var(--sky-font-style-body-m));font-size:var(--sky-override-file-item-name-font-size, var(--sky-font-size-body-m));font-style:var(--sky-font-style-body-m);line-height:var(--sky-override-file-item-name-line-height, var(--sky-font-line_height-body-m))}.sky-file-item-size{font-weight:var(--sky-override-file-item-size-font-weight, var(--sky-font-style-body-s));font-size:var(--sky-override-file-item-size-font-size, var(--sky-font-size-body-s));font-style:var(--sky-font-style-body-s);line-height:var(--sky-override-file-item-size-line-height, var(--sky-font-line_height-body-s))}.sky-file-item-title{margin-bottom:var(--sky-override-file-item-title-bottom-margin, var(--sky-space-gap-stacked_supplemental-m));display:flex}.sky-file-item-content{display:flex}.sky-file-item-preview{flex-basis:25%}.sky-file-item-content-custom{flex-basis:75%}.sky-file-item-preview-img-container{text-align:center}.sky-file-item-preview-img{max-width:100%;height:auto;box-shadow:var(--sky-override-file-item-preview-img-box-shadow, var(--sky-elevation-raised-100))}.sky-file-item-preview-other{color:var(--sky-override-file-item-preview-other-color, var(--sky-color-icon-deemphasized));font-size:var(--sky-override-file-item-preview-other-font-size, var(--sky-size-illustration-l));line-height:1;text-align:center;width:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: SkyFormsResourcesModule }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i2.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"pipe\", type: SkyFileSizePipe, name: \"skyFileSize\" }, { kind: \"pipe\", type: i3.SkyLibResourcesPipe, name: \"skyLibResources\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileItemComponent, decorators: [{\n type: Component,\n args: [{ imports: [SkyFileSizePipe, SkyFormsResourcesModule, SkyIconModule], selector: 'sky-file-item', template: \"@if (fileItem) {\\n <div class=\\\"sky-file-item\\\">\\n <div class=\\\"sky-file-item-title\\\">\\n <div class=\\\"sky-file-item-name-container\\\">\\n <div class=\\\"sky-file-item-name\\\">\\n @if (isFile) {\\n {{ fileName }}\\n } @else {\\n {{ url }}\\n }\\n </div>\\n @if (isFile) {\\n <div class=\\\"sky-file-item-size\\\">({{ fileSize | skyFileSize }})</div>\\n }\\n </div>\\n <div class=\\\"sky-file-item-controls\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-file-item-btn-delete\\\"\\n [attr.aria-label]=\\\"\\n 'skyux_file_attachment_file_item_delete'\\n | skyLibResources: (isFile ? fileName : url)\\n \\\"\\n (click)=\\\"itemDelete()\\\"\\n >\\n <sky-icon iconName=\\\"delete\\\" />\\n </button>\\n </div>\\n </div>\\n <div class=\\\"sky-file-item-content\\\">\\n <div class=\\\"sky-file-item-preview\\\">\\n @if (isImage) {\\n <div class=\\\"sky-file-item-preview-img-container\\\">\\n <img\\n class=\\\"sky-file-item-preview-img\\\"\\n [src]=\\\"url\\\"\\n [alt]=\\\"\\n 'skyux_file_attachment_file_upload_image_preview_alt_text'\\n | skyLibResources\\n \\\"\\n />\\n </div>\\n } @else if (icon) {\\n <div class=\\\"sky-file-item-preview-other\\\">\\n <sky-icon iconSize=\\\"xxxl\\\" [iconName]=\\\"icon\\\" />\\n </div>\\n }\\n </div>\\n <div class=\\\"sky-file-item-content-custom\\\">\\n <ng-content />\\n </div>\\n </div>\\n </div>\\n}\\n\", styles: [\".sky-file-item:not(.sky-theme-modern *){--sky-override-file-item-background-color: #eeeeef;--sky-override-file-item-border: 1px solid #e2e3e4;--sky-override-file-item-border-radius: 0;--sky-override-file-item-controls-padding-left: 15px;--sky-override-file-item-gap: 10px;--sky-override-file-item-margin-bottom: 10px;--sky-override-file-item-name-line-height: normal;--sky-override-file-item-name-font-size: 15px;--sky-override-file-item-name-font-weight: bolder;--sky-override-file-item-padding: 10px 10px 10px 10px;--sky-override-file-item-preview-img-box-shadow: 0 0 5px #666;--sky-override-file-item-preview-other-color: #686c73;--sky-override-file-item-preview-other-font-size: 100px;--sky-override-file-item-size-line-height: normal;--sky-override-file-item-size-font-size: 15px;--sky-override-file-item-size-font-weight: 400;--sky-override-file-item-title-bottom-margin: 10px}:host:not(:last-of-type) .sky-file-item{margin-bottom:var(--sky-override-file-item-gap, var(--sky-space-gap-form-s))}:host-context(sky-file-drop.sky-form-field-stacked ~ sky-file-item:last-of-type) .sky-file-item{margin-bottom:var(--sky-override-file-item-margin-bottom, var(--sky-space-gap-form-l))}.sky-file-item{border:var(--sky-override-file-item-border, var(--sky-border-width-input-base) solid var(--sky-color-border-input-base));border-radius:var(--sky-override-file-item-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-file-item-background-color, var(--sky-color-background-file_drop));margin-bottom:var(--sky-override-file-item-margin-bottom, 0);padding:var(--sky-override-file-item-padding, var(--sky-comp-file_drop-content-space-inset-top) var(--sky-comp-file_drop-content-space-inset-right) var(--sky-comp-file_drop-content-space-inset-bottom) var(--sky-comp-file_drop-content-space-inset-left))}.sky-file-item-name-container{flex:1 1 auto;overflow:hidden}.sky-file-item-controls{flex:0 1 auto;padding-left:var(--sky-override-file-item-controls-padding-left, var(--sky-space-gap-text_action-m))}.sky-file-item-name{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:var(--sky-override-file-item-name-font-weight, var(--sky-font-style-body-m));font-size:var(--sky-override-file-item-name-font-size, var(--sky-font-size-body-m));font-style:var(--sky-font-style-body-m);line-height:var(--sky-override-file-item-name-line-height, var(--sky-font-line_height-body-m))}.sky-file-item-size{font-weight:var(--sky-override-file-item-size-font-weight, var(--sky-font-style-body-s));font-size:var(--sky-override-file-item-size-font-size, var(--sky-font-size-body-s));font-style:var(--sky-font-style-body-s);line-height:var(--sky-override-file-item-size-line-height, var(--sky-font-line_height-body-s))}.sky-file-item-title{margin-bottom:var(--sky-override-file-item-title-bottom-margin, var(--sky-space-gap-stacked_supplemental-m));display:flex}.sky-file-item-content{display:flex}.sky-file-item-preview{flex-basis:25%}.sky-file-item-content-custom{flex-basis:75%}.sky-file-item-preview-img-container{text-align:center}.sky-file-item-preview-img{max-width:100%;height:auto;box-shadow:var(--sky-override-file-item-preview-img-box-shadow, var(--sky-elevation-raised-100))}.sky-file-item-preview-other{color:var(--sky-override-file-item-preview-other-color, var(--sky-color-icon-deemphasized));font-size:var(--sky-override-file-item-preview-other-font-size, var(--sky-size-illustration-l));line-height:1;text-align:center;width:100%}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i1.SkyFileItemService }], propDecorators: { fileItem: [{\n type: Input\n }], deleteFile: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC9maWxlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFVM0QsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQjs7Ozs7O09BTUc7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUE0QztRQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELElB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Q2IsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhO2lCQUNmLFNBQVMsQ0FDUixnREFBZ0QsRUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FDZDtpQkFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNiLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7K0dBNUpVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGtKQzdCakMseW9EQXNEQSx1L0dEOUI2Qix1QkFBdUIsOEJBQUUsYUFBYSxpSUFBdkQsZUFBZTs7NEZBS2Qsb0JBQW9CO2tCQU5oQyxTQUFTOzhCQUNDLENBQUMsZUFBZSxFQUFFLHVCQUF1QixFQUFFLGFBQWEsQ0FBQyxZQUN4RCxlQUFlOztzQkFZeEIsS0FBSzs7c0JBd0JMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIE91dHB1dCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5cbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NreS1mb3Jtcy1yZXNvdXJjZXMubW9kdWxlJztcbmltcG9ydCB7IFNreUZpbGVJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL2ZpbGUtaXRlbSc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvZmlsZS1pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RmlsZVNpemVQaXBlIH0gZnJvbSAnLi4vc2hhcmVkL2ZpbGUtc2l6ZS5waXBlJztcblxuaW1wb3J0IHsgU2t5RmlsZUxpbmsgfSBmcm9tICcuL2ZpbGUtbGluayc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbU2t5RmlsZVNpemVQaXBlLCBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSwgU2t5SWNvbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnc2t5LWZpbGUtaXRlbScsXG4gIHN0eWxlVXJsOiAnLi9maWxlLWl0ZW0uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RmlsZUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrIHtcbiAgLyoqXG4gICAqIFRoZSBzdW1tYXJ5IGluZm9ybWF0aW9uIHRvIGRpc3BsYXkgYWJvdXQgZmlsZSBhdHRhY2htZW50cy4gRm9yIGxvY2FsIGZpbGVzLFxuICAgKiB0aGUgZGVmYXVsdCBzdW1tYXJ5IGluY2x1ZGVzIHRoZSBmaWxlIG5hbWUsIGZpbGUgc2l6ZSwgZmlsZSBwcmV2aWV3LCBhbmQgYSBkZWxldGUgYnV0dG9uLlxuICAgKiBGb3IgZXh0ZXJuYWwgZmlsZXMsIHRoZSBkZWZhdWx0IHN1bW1hcnkgaW5jbHVkZXMgdGhlIFVSTCBhbmQgYSBkZWxldGUgYnV0dG9uLlxuICAgKiBZb3UgY2FuIGluY2x1ZGUgYWRkaXRpb25hbCBpbnB1dHMgdG8gZGlzcGxheSB1c2VyLWVudGVyZWQgbWV0YWRhdGEuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWxlSXRlbSh2YWx1ZTogU2t5RmlsZUl0ZW0gfCBTa3lGaWxlTGluayB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19maWxlSXRlbSA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiAnZmlsZScgaW4gdmFsdWUpIHtcbiAgICAgIHRoaXMuaXNGaWxlID0gdGhpcy4jZmlsZUl0ZW1TZXJ2aWNlLmlzRmlsZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlzSW1hZ2UgPSB0aGlzLiNmaWxlSXRlbVNlcnZpY2UuaXNJbWFnZSh2YWx1ZSk7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gdmFsdWUuZmlsZS5uYW1lO1xuICAgICAgdGhpcy5maWxlU2l6ZSA9IHZhbHVlLmZpbGUuc2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0ZpbGUgPSB0aGlzLmlzSW1hZ2UgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsZU5hbWUgPSAnJztcbiAgICAgIHRoaXMuZmlsZVNpemUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMudXJsID0gdmFsdWU/LnVybCA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsZUl0ZW0oKTogU2t5RmlsZUl0ZW0gfCBTa3lGaWxlTGluayB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19maWxlSXRlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgZGVsZXRlIGJ1dHRvbiBmb3IgYW4gaXRlbS4gVGhlIGRlbGV0ZWQgaXRlbSBpcyBwYXNzZWQgdG8gdGhlXG4gICAqIGZ1bmN0aW9uLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBkZWxldGVGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lGaWxlTGluayB8IFNreUZpbGVJdGVtPigpO1xuXG4gIHB1YmxpYyBmaWxlTmFtZSA9ICcnO1xuXG4gIHB1YmxpYyBmaWxlU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyB1cmwgPSAnJztcblxuICBwdWJsaWMgaWNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBpc0ZpbGUgPSBmYWxzZTtcbiAgcHVibGljIGlzSW1hZ2UgPSBmYWxzZTtcblxuICAjX2ZpbGVJdGVtOiBTa3lGaWxlSXRlbSB8IFNreUZpbGVMaW5rIHwgdW5kZWZpbmVkO1xuXG4gICNkaWZmZXI6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PjtcbiAgI2ZpbGVJdGVtU2VydmljZTogU2t5RmlsZUl0ZW1TZXJ2aWNlO1xuXG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyU3ZjID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcblxuICByZWFkb25seSAjcmVzb3VyY2VzU3ZjID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKGRpZmZlcnM6IEtleVZhbHVlRGlmZmVycywgZmlsZUl0ZW1TZXJ2aWNlOiBTa3lGaWxlSXRlbVNlcnZpY2UpIHtcbiAgICB0aGlzLiNkaWZmZXIgPSBkaWZmZXJzLmZpbmQoe30pLmNyZWF0ZSgpO1xuICAgIHRoaXMuI2ZpbGVJdGVtU2VydmljZSA9IGZpbGVJdGVtU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZUl0ZW0pIHtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLiNkaWZmZXIuZGlmZih0aGlzLmZpbGVJdGVtKTtcblxuICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgbGV0IGNsczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBleHRlbnNpb25VcHBlciA9IHRoaXMuI2ZpbGVJdGVtU2VydmljZS5nZXRGaWxlRXh0ZW5zaW9uVXBwZXIoXG4gICAgICAgICAgdGhpcy5maWxlSXRlbSBhcyBTa3lGaWxlSXRlbSxcbiAgICAgICAgKTtcbiAgICAgICAgbGV0IGZpbGVUeXBlVXBwZXI6IHN0cmluZztcblxuICAgICAgICBzd2l0Y2ggKGV4dGVuc2lvblVwcGVyKSB7XG4gICAgICAgICAgY2FzZSAnLlBERic6XG4gICAgICAgICAgICBjbHMgPSAncGRmJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJy5HWic6XG4gICAgICAgICAgY2FzZSAnLlJBUic6XG4gICAgICAgICAgY2FzZSAnLlRHWic6XG4gICAgICAgICAgY2FzZSAnLlpJUCc6XG4gICAgICAgICAgICBjbHMgPSAnYXJjaGl2ZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICcuUFBUJzpcbiAgICAgICAgICBjYXNlICcuUFBUWCc6XG4gICAgICAgICAgICBjbHMgPSAncHB0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJy5ET0MnOlxuICAgICAgICAgIGNhc2UgJy5ET0NYJzpcbiAgICAgICAgICAgIGNscyA9ICdkb2MnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnLlhMUyc6XG4gICAgICAgICAgY2FzZSAnLlhMU1gnOlxuICAgICAgICAgICAgY2xzID0gJ3hscyc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICcuVFhUJzpcbiAgICAgICAgICAgIGNscyA9ICd0ZXh0JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJy5IVE0nOlxuICAgICAgICAgIGNhc2UgJy5IVE1MJzpcbiAgICAgICAgICAgIGNscyA9ICdjaGV2cm9uLWRvdWJsZSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWNscykge1xuICAgICAgICAgIGZpbGVUeXBlVXBwZXIgPSB0aGlzLiNmaWxlSXRlbVNlcnZpY2UuZ2V0RmlsZVR5cGVVcHBlcihcbiAgICAgICAgICAgIHRoaXMuZmlsZUl0ZW0gYXMgU2t5RmlsZUl0ZW0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHN3aXRjaCAoZmlsZVR5cGVVcHBlci5zdWJzdHIoMCwgZmlsZVR5cGVVcHBlci5pbmRleE9mKCcvJykpKSB7XG4gICAgICAgICAgICBjYXNlICdBVURJTyc6XG4gICAgICAgICAgICAgIGNscyA9ICdhdWRpbyc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnSU1BR0UnOlxuICAgICAgICAgICAgICAvLyBOb3JtYWxseSBpbWFnZXMgYXJlIGRpc3BsYXllZCBhcyB0aHVtYm5haWxzLCBidXQgaWYgYW4gaW1hZ2UgdHlwZSBpcyBub3QgcmVjb2duaXplZFxuICAgICAgICAgICAgICAvLyBhcyBiZWluZyB3aWRlbHkgc3VwcG9ydGVkIGJ5IG1vZGVybiBicm93c2VycyAoZS5nLiBUSUZGIGZpbGVzKSB0aGVuIGFuIGljb24gc2hvdWxkXG4gICAgICAgICAgICAgIC8vIGJlIGRpc3BsYXllZCBpbnN0ZWFkLlxuICAgICAgICAgICAgICBjbHMgPSAnaW1hZ2UnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RFWFQnOlxuICAgICAgICAgICAgICBjbHMgPSAndGV4dCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnVklERU8nOlxuICAgICAgICAgICAgICBjbHMgPSAndmlkZW8nO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmljb24gPSAnZG9jdW1lbnQnICsgKGNscyA/ICctJyArIGNscyA6ICcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pY29uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpdGVtRGVsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlRmlsZS5lbWl0KHRoaXMuZmlsZUl0ZW0pO1xuICAgIGlmICghdGhpcy5pc0ZpbGUpIHtcbiAgICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgICAuZ2V0U3RyaW5nKCdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19yZW1vdmVkJywgdGhpcy51cmwpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlU3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy4jbGl2ZUFubm91bmNlclN2Yy5hbm5vdW5jZShyZXNvdXJjZVN0cmluZyk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZXNvdXJjZXNTdmNcbiAgICAgICAgLmdldFN0cmluZyhcbiAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ZpbGVfcmVtb3ZlZCcsXG4gICAgICAgICAgdGhpcy5maWxlTmFtZSxcbiAgICAgICAgKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXNvdXJjZVN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMuI2xpdmVBbm5vdW5jZXJTdmMuYW5ub3VuY2UocmVzb3VyY2VTdHJpbmcpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAoZmlsZUl0ZW0pIHtcbiAgPGRpdiBjbGFzcz1cInNreS1maWxlLWl0ZW1cIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtaXRlbS10aXRsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWl0ZW0tbmFtZS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWl0ZW0tbmFtZVwiPlxuICAgICAgICAgIEBpZiAoaXNGaWxlKSB7XG4gICAgICAgICAgICB7eyBmaWxlTmFtZSB9fVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgdXJsIH19XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChpc0ZpbGUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LWZpbGUtaXRlbS1zaXplXCI+KHt7IGZpbGVTaXplIHwgc2t5RmlsZVNpemUgfX0pPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWl0ZW0tY29udHJvbHNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWZpbGUtaXRlbS1idG4tZGVsZXRlXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX2l0ZW1fZGVsZXRlJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogKGlzRmlsZSA/IGZpbGVOYW1lIDogdXJsKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKGNsaWNrKT1cIml0ZW1EZWxldGUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gaWNvbk5hbWU9XCJkZWxldGVcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1pdGVtLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1pdGVtLXByZXZpZXdcIj5cbiAgICAgICAgQGlmIChpc0ltYWdlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWl0ZW0tcHJldmlldy1pbWctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZpbGUtaXRlbS1wcmV2aWV3LWltZ1wiXG4gICAgICAgICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgICAgICAgW2FsdF09XCJcbiAgICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2ltYWdlX3ByZXZpZXdfYWx0X3RleHQnXG4gICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoaWNvbikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1pdGVtLXByZXZpZXctb3RoZXJcIj5cbiAgICAgICAgICAgIDxza3ktaWNvbiBpY29uU2l6ZT1cInh4eGxcIiBbaWNvbk5hbWVdPVwiaWNvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWl0ZW0tY29udGVudC1jdXN0b21cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyFormErrorModule } from '../../form-error/form-error.module';\nimport { SkyFileDropComponent } from './file-drop.component';\nimport { SkyFileItemComponent } from './file-item.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyFileDropModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileDropModule, imports: [SkyFileDropComponent, SkyFileItemComponent], exports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileDropModule, imports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileDropModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule],\n imports: [SkyFileDropComponent, SkyFileItemComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC9maWxlLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTTdELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLFlBRmxCLG9CQUFvQixFQUFFLG9CQUFvQixhQUQxQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0I7Z0hBRzdELGlCQUFpQixZQUZsQixvQkFBb0IsRUFBRSxvQkFBb0IsRUFERSxrQkFBa0I7OzRGQUc3RCxpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO2lCQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lGaWxlRHJvcENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1kcm9wLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1pdGVtLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lGaWxlRHJvcENvbXBvbmVudCwgU2t5RmlsZUl0ZW1Db21wb25lbnQsIFNreUZvcm1FcnJvck1vZHVsZV0sXG4gIGltcG9ydHM6IFtTa3lGaWxlRHJvcENvbXBvbmVudCwgU2t5RmlsZUl0ZW1Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWxlRHJvcE1vZHVsZSB7fVxuIl19","import { NgModule } from '@angular/core';\nimport { SkyFileAttachmentModule } from './file-attachment/file-attachment.module';\nimport { SkyFileDropModule } from './file-drop/file-drop.module';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated Import either `SkyFileAttachmentModule` or `SkyFileDropModule`.\n */\nexport class SkyFileAttachmentsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentsModule, imports: [SkyFileAttachmentModule, SkyFileDropModule], exports: [SkyFileAttachmentModule, SkyFileDropModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentsModule, imports: [SkyFileAttachmentModule, SkyFileDropModule, SkyFileAttachmentModule, SkyFileDropModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyFileAttachmentsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyFileAttachmentModule, SkyFileDropModule],\n imports: [SkyFileAttachmentModule, SkyFileDropModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVqRTs7R0FFRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7K0dBQXhCLHdCQUF3QjtnSEFBeEIsd0JBQXdCLFlBRnpCLHVCQUF1QixFQUFFLGlCQUFpQixhQUQxQyx1QkFBdUIsRUFBRSxpQkFBaUI7Z0hBR3pDLHdCQUF3QixZQUZ6Qix1QkFBdUIsRUFBRSxpQkFBaUIsRUFEMUMsdUJBQXVCLEVBQUUsaUJBQWlCOzs0RkFHekMsd0JBQXdCO2tCQUpwQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFLGlCQUFpQixDQUFDO29CQUNyRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxpQkFBaUIsQ0FBQztpQkFDdEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lGaWxlQXR0YWNobWVudE1vZHVsZSB9IGZyb20gJy4vZmlsZS1hdHRhY2htZW50L2ZpbGUtYXR0YWNobWVudC5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RmlsZURyb3BNb2R1bGUgfSBmcm9tICcuL2ZpbGUtZHJvcC9maWxlLWRyb3AubW9kdWxlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBJbXBvcnQgZWl0aGVyIGBTa3lGaWxlQXR0YWNobWVudE1vZHVsZWAgb3IgYFNreUZpbGVEcm9wTW9kdWxlYC5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUZpbGVBdHRhY2htZW50TW9kdWxlLCBTa3lGaWxlRHJvcE1vZHVsZV0sXG4gIGltcG9ydHM6IFtTa3lGaWxlQXR0YWNobWVudE1vZHVsZSwgU2t5RmlsZURyb3BNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWxlQXR0YWNobWVudHNNb2R1bGUge31cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Tracks the element IDs for all radios within a radio group.\n * @internal\n */\nexport class SkyRadioGroupIdService {\n get radioIds() {\n return this.#radioIdsObs;\n }\n #radioIds;\n #radioIds$;\n #radioIdsObs;\n constructor() {\n this.#radioIds = new Map();\n this.#radioIds$ = new BehaviorSubject([]);\n this.#radioIdsObs = this.#radioIds$.asObservable();\n }\n /**\n * Associates a radio input's ID with its parent radio group.\n * @param {string} id A unique ID for the radio component.\n * @param {string} inputElementId The ID applied to the radio input element.\n */\n register(id, inputElementId) {\n if (!this.#radioIds.has(id) || this.#radioIds.get(id) !== inputElementId) {\n this.#radioIds.set(id, inputElementId);\n this.#emitRadioIds();\n }\n }\n /**\n * Disassociates a radio input's ID with its parent radio group.\n * @param {string} id The ID used to register the radio component.\n */\n unregister(id) {\n if (this.#radioIds.has(id)) {\n this.#radioIds.delete(id);\n this.#emitRadioIds();\n }\n }\n #emitRadioIds() {\n this.#radioIds$.next(Array.from(this.#radioIds.values()));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioGroupIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioGroupIdService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioGroupIdService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAtaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvcmFkaW8vcmFkaW8tZ3JvdXAtaWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBRW5EOzs7R0FHRztBQUVILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxDQUFzQjtJQUMvQixVQUFVLENBQTRCO0lBQ3RDLFlBQVksQ0FBdUI7SUFFbkM7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsRUFBVSxFQUFFLGNBQXNCO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLEVBQVU7UUFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7K0dBeENVLHNCQUFzQjttSEFBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUcmFja3MgdGhlIGVsZW1lbnQgSURzIGZvciBhbGwgcmFkaW9zIHdpdGhpbiBhIHJhZGlvIGdyb3VwLlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0dyb3VwSWRTZXJ2aWNlIHtcbiAgcHVibGljIGdldCByYWRpb0lkcygpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuI3JhZGlvSWRzT2JzO1xuICB9XG5cbiAgI3JhZGlvSWRzOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICAjcmFkaW9JZHMkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+O1xuICAjcmFkaW9JZHNPYnM6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI3JhZGlvSWRzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuI3JhZGlvSWRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+KFtdKTtcbiAgICB0aGlzLiNyYWRpb0lkc09icyA9IHRoaXMuI3JhZGlvSWRzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NvY2lhdGVzIGEgcmFkaW8gaW5wdXQncyBJRCB3aXRoIGl0cyBwYXJlbnQgcmFkaW8gZ3JvdXAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBBIHVuaXF1ZSBJRCBmb3IgdGhlIHJhZGlvIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlucHV0RWxlbWVudElkIFRoZSBJRCBhcHBsaWVkIHRvIHRoZSByYWRpbyBpbnB1dCBlbGVtZW50LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyKGlkOiBzdHJpbmcsIGlucHV0RWxlbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI3JhZGlvSWRzLmhhcyhpZCkgfHwgdGhpcy4jcmFkaW9JZHMuZ2V0KGlkKSAhPT0gaW5wdXRFbGVtZW50SWQpIHtcbiAgICAgIHRoaXMuI3JhZGlvSWRzLnNldChpZCwgaW5wdXRFbGVtZW50SWQpO1xuICAgICAgdGhpcy4jZW1pdFJhZGlvSWRzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERpc2Fzc29jaWF0ZXMgYSByYWRpbyBpbnB1dCdzIElEIHdpdGggaXRzIHBhcmVudCByYWRpbyBncm91cC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBJRCB1c2VkIHRvIHJlZ2lzdGVyIHRoZSByYWRpbyBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlcihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3JhZGlvSWRzLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuI3JhZGlvSWRzLmRlbGV0ZShpZCk7XG4gICAgICB0aGlzLiNlbWl0UmFkaW9JZHMoKTtcbiAgICB9XG4gIH1cblxuICAjZW1pdFJhZGlvSWRzKCk6IHZvaWQge1xuICAgIHRoaXMuI3JhZGlvSWRzJC5uZXh0KEFycmF5LmZyb20odGhpcy4jcmFkaW9JZHMudmFsdWVzKCkpKTtcbiAgfVxufVxuIl19","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, booleanAttribute, forwardRef, inject, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\nimport { Subject } from 'rxjs';\nimport { SkyRadioGroupIdService } from './radio-group-id.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/theme\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@skyux/help-inline\";\nimport * as i4 from \"@skyux/icon\";\nimport * as i5 from \"@skyux/core\";\n/**\n * Provider Expression that allows sky-radio to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n */\nconst SKY_RADIO_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyRadioComponent),\n multi: true,\n};\n/**\n * Renders a SKY UX-themed replacement for an HTML `input` element\n * with `type=\"radio\"`. When users select a radio button, its value is driven through an\n * `ngModel` attribute that you specify on the `sky-radio` element or the parent `sky-radio-group` element.\n */\nexport class SkyRadioComponent {\n /**\n * Whether the radio button is selected.\n * @default false\n */\n set checked(value) {\n const newCheckedState = !!value;\n if (this.#_checked !== newCheckedState) {\n this.#_checked = newCheckedState;\n this.checkedChange.next(newCheckedState);\n if (newCheckedState) {\n this.selectedValue = this.value;\n }\n }\n this.#changeDetector.markForCheck();\n }\n get checked() {\n return this.#_checked;\n }\n /**\n * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n if (value !== this.disabled) {\n this.#_disabled = value;\n this.disabledChange.next(value);\n this.#changeDetector.markForCheck();\n }\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The ID for the radio button.\n * If a value is not provided, an autogenerated ID is used.\n */\n set id(value) {\n if (value) {\n this.inputId = `sky-radio-${value}-input`;\n }\n else {\n this.inputId = `sky-radio-${this.#defaultId}-input`;\n }\n this.#radioGroupIdSvc?.register(this.#defaultId, this.inputId);\n }\n /**\n * The ARIA label for the radio button. This sets the radio button's `aria-label`\n * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * when the radio button does not include a visible label. You must set this property for icon\n * radio buttons. If the radio button includes a visible label, use `labelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use `labelText` instead.\n */\n set label(value) {\n this.#_label = value;\n if (value) {\n this.#logger.deprecated('SkyRadioComponent.label', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'Use the `labelText` input instead.',\n });\n }\n }\n get label() {\n return this.#_label;\n }\n /**\n * The HTML element ID of the element that labels\n * the radio button. This sets the radio button's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the radio button does not include a visible label, use `label` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n * @deprecated Use `labelText` instead.\n */\n set labelledBy(value) {\n this.#_labelledBy = value;\n if (value) {\n this.#logger.deprecated('SkyRadioComponent.labelledBy', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'Use the `labelText` input instead.',\n });\n }\n }\n get labelledBy() {\n return this.#_labelledBy;\n }\n /**\n * This property is deprecated in favor of the `name` property on the `sky-radio-group element`.\n * We recommend using the `sky-radio-group` element with all radio buttons, but if you opt not to,\n * then this property specifies a name for a group of radio buttons.\n * @deprecated\n */\n set name(value) {\n this.#_name = value;\n this.#changeDetector.markForCheck();\n }\n get name() {\n return this.#_name;\n }\n /**\n * This property is deprecated in favor of\n * the `tabIndex` property on the `sky-radio-group` element. It specifies an index for the radio\n * button. If the index is not defined, it is set to the position of the radio button on load.\n * @deprecated\n */\n set tabindex(value) {\n console.warn('The sky-radio `tabindex` property is deprecated. Please use the `tabindex` property on the sky-radio-group component.');\n if (value) {\n this.#_tabindex = value;\n }\n else {\n this.#_tabindex = 0;\n }\n this.#changeDetector.markForCheck();\n }\n get tabindex() {\n return this.#_tabindex;\n }\n // For setting the tabindex from the radio group\n set groupTabIndex(value) {\n if (value) {\n this.#_tabindex = value;\n }\n else {\n this.#_tabindex = 0;\n }\n this.#changeDetector.markForCheck();\n }\n /**\n * The value bound to the radio button's `value` property. The value usually\n * corresponds to the radio button's label, which you specify with the `sky-radio-label`\n * component.\n * @required\n */\n set value(value) {\n /* istanbul ignore else */\n if (this.#_value !== value) {\n if (this.selectedValue && this.selectedValue === this.#_value) {\n this.selectedValue = value;\n this.#onChangeCallback(this.selectedValue);\n this.#onTouchedCallback();\n }\n this.#_value = value;\n }\n this.#changeDetector.markForCheck();\n }\n get value() {\n return this.#_value;\n }\n /**\n * The background color type after users select an icon radio button.\n * The valid options correspond\n * [the label component's](https://developer.blackbaud.com/skyux/components/label)\n * label types. `danger` creates a red background, `info` creates a blue background,\n * `success` creates a green background, and `warning` creates an orange background.\n * @default \"info\"\n * @deprecated radioType is no longer supported\n */\n get radioType() {\n return this.#_radioType;\n }\n set radioType(value) {\n if (value) {\n this.#logger.deprecated('SkyRadioComponent.radioType', {\n deprecationMajorVersion: 7,\n });\n }\n this.#_radioType = value ?? 'info';\n }\n set selectedValue(value) {\n if (value !== this.#_selectedValue) {\n this.#_selectedValue = value;\n }\n }\n get selectedValue() {\n return this.#_selectedValue;\n }\n #_checked;\n #_disabled;\n #_name;\n #_radioType;\n #_selectedValue;\n #_tabindex;\n #_value;\n #_label;\n #_labelledBy;\n #changeDetector;\n #defaultId;\n #radioGroupIdSvc;\n #logger;\n constructor() {\n /**\n * Fires when users focus off a radio button.\n */\n this.blur = new Subject();\n /**\n * Indicates whether to hide the `labelText`.\n */\n this.labelHidden = false;\n /**\n * Fires when users select a radio button.\n */\n this.change = new EventEmitter();\n /**\n * Fires when the selected value changes.\n */\n this.checkedChange = new EventEmitter();\n /**\n * Fires when the selected value changes.\n */\n this.disabledChange = new EventEmitter();\n this.radioGroupDisabled = false;\n this.inputId = '';\n this.#_checked = false;\n this.#_disabled = false;\n this.#_radioType = 'info';\n this.#_tabindex = 0;\n this.#changeDetector = inject(ChangeDetectorRef);\n this.#defaultId = inject(SkyIdService).generateId();\n this.#radioGroupIdSvc = inject(SkyRadioGroupIdService, { optional: true });\n this.#logger = inject(SkyLogService);\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.#removeUniqueSelectionListener = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.#onChangeCallback = (value) => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.#onTouchedCallback = () => { };\n this.id = this.#defaultId;\n }\n ngOnDestroy() {\n this.#radioGroupIdSvc?.unregister(this.#defaultId);\n this.#removeUniqueSelectionListener();\n this.change.complete();\n this.checkedChange.complete();\n this.disabledChange.complete();\n }\n writeValue(value) {\n if (value === undefined) {\n return;\n }\n this.selectedValue = value;\n this.checked = this.value === this.selectedValue;\n this.#changeDetector.markForCheck();\n }\n /**\n * @internal\n * Whether to disable the control. Implemented as a part of ControlValueAccessor.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n setGroupDisabledState(isDisabled) {\n this.radioGroupDisabled = isDisabled;\n this.#changeDetector.markForCheck();\n }\n registerOnChange(fn) {\n this.#onChangeCallback = fn;\n }\n registerOnTouched(fn) {\n this.#onTouchedCallback = fn;\n }\n onInputChange(event) {\n event.stopPropagation();\n if (!this.disabled) {\n this.checked = true;\n this.change.next({\n value: this.value,\n });\n this.onInputFocusChange();\n this.#onChangeCallback(this.value);\n }\n }\n onInputFocusChange() {\n this.#onTouchedCallback();\n this.blur.next();\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #removeUniqueSelectionListener;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onChangeCallback;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onTouchedCallback;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyRadioComponent, isStandalone: false, selector: \"sky-radio\", inputs: { checked: \"checked\", disabled: [\"disabled\", \"disabled\", booleanAttribute], id: \"id\", label: \"label\", labelledBy: \"labelledBy\", name: \"name\", tabindex: \"tabindex\", value: \"value\", helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", iconName: \"iconName\", radioType: \"radioType\", labelText: \"labelText\", labelHidden: [\"labelHidden\", \"labelHidden\", booleanAttribute], hintText: \"hintText\", helpKey: \"helpKey\" }, outputs: { change: \"change\", checkedChange: \"checkedChange\", disabledChange: \"disabledChange\" }, providers: [SKY_RADIO_CONTROL_VALUE_ACCESSOR], hostDirectives: [{ directive: i1.SkyThemeComponentClassDirective }], ngImport: i0, template: \"<span class=\\\"sky-radio-outer-wrapper\\\">\\n <label\\n class=\\\"sky-radio-wrapper sky-switch\\\"\\n [ngClass]=\\\"{ 'sky-switch-disabled': disabled || radioGroupDisabled }\\\"\\n >\\n <input\\n class=\\\"sky-radio-input sky-switch-input\\\"\\n type=\\\"radio\\\"\\n [attr.aria-label]=\\\"labelText || label\\\"\\n [attr.aria-labelledby]=\\\"labelText ? undefined : labelledBy\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [checked]=\\\"checked\\\"\\n [disabled]=\\\"disabled || radioGroupDisabled\\\"\\n [id]=\\\"inputId\\\"\\n [name]=\\\"name\\\"\\n [tabIndex]=\\\"tabindex\\\"\\n [value]=\\\"value\\\"\\n (blur)=\\\"onInputFocusChange()\\\"\\n (change)=\\\"onInputChange($event)\\\"\\n />\\n <span\\n class=\\\"sky-switch-control\\\"\\n [ngClass]=\\\"{\\n 'sky-switch-control-icon': iconName,\\n 'sky-rounded-circle': !iconName,\\n 'sky-switch-control-info': iconName && radioType === 'info',\\n 'sky-switch-control-success': iconName && radioType === 'success',\\n 'sky-switch-control-warning': iconName && radioType === 'warning',\\n 'sky-switch-control-danger': iconName && radioType === 'danger'\\n }\\\"\\n >\\n @if (iconName) {\\n <sky-icon [iconName]=\\\"iconName\\\" />\\n }\\n </span>\\n @if (labelText) {\\n <span\\n class=\\\"sky-switch-label sky-radio-label-text\\\"\\n [class.sky-screen-reader-only]=\\\"labelHidden\\\"\\n >{{ labelText }}</span\\n >\\n } @else {\\n <ng-content select=\\\"sky-radio-label\\\" />\\n }\\n </label>\\n @if ((helpPopoverContent || helpKey) && labelText) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n class=\\\"sky-radio-help-inline\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n</span>\\n<div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-radio-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n</div>\\n\", styles: [\".sky-radio-outer-wrapper:not(.sky-theme-modern *){--sky-override-radio-border-color-checked-active: var( --sky-highlight-color-info );--sky-override-radio-border-color-checked-hover: var( --sky-highlight-color-info );--sky-override-radio-border-width-checked-active: 2px;--sky-override-radio-border-width-checked-hover: 2px;--sky-override-radio-border-color-icon-checked-active: var( --sky-highlight-color-info );--sky-override-radio-border-color-icon-checked-hover: var( --sky-highlight-color-info );--sky-override-radio-border-width-icon-checked-active: 2px;--sky-override-radio-icon-border-radius: 50%;--sky-override-radio-icon-color-disabled: #000000;--sky-override-radio-icon-color-selected: #000000;--sky-override-radio-icon-size: 10px;--sky-override-radio-label-margin-right: var(--sky-margin-inline-xs)}:host.sky-cmp-theme-default{--sky-override-radio-group-radio-bottom-margin: var(--sky-margin-stacked-sm);--sky-override-radio-hint-text-inset: var(--sky-margin-stacked-xs) 0 0 calc(var(--sky-switch-size) + var(--sky-switch-margin))}:host:has(.sky-switch-control-icon){display:inline-block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)){display:block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)):not(:last-child){margin-bottom:var(--sky-override-radio-group-radio-bottom-margin, var(--sky-space-gap-form-s))}.sky-radio-outer-wrapper{display:flex}.sky-radio-help-inline{display:inline-flex}.sky-switch:not(:has(~.sky-control-help-container)) .sky-switch-label{margin-right:var(--sky-override-radio-label-margin-right, 0)}.sky-switch-input:checked+.sky-switch-control:not(.sky-switch-control-icon):after{content:\\\"\\\";display:inline-block;width:var(--sky-override-radio-icon-size, var(--sky-size-icon-xxs));height:var(--sky-override-radio-icon-size, var(--sky-size-icon-xxs));background:var(--sky-override-radio-icon-color-selected, var(--sky-color-icon-inverse));border-radius:var(--sky-override-radio-icon-border-radius, var(--sky-border-radius-round))}.sky-radio-input:disabled+.sky-switch-control:not(.sky-switch-control-icon):after{background-color:var(--sky-override-radio-icon-color-disabled, var(--sky-color-text-deemphasized))}.sky-switch-input:checked:not(:disabled).sky-radio-input:active+.sky-switch-control{border-width:var(--sky-override-radio-border-width-checked-active, var(--sky-border-width-selected-s));border-color:var(--sky-override-radio-border-color-checked-active, var(--sky-color-border-switch-selected-base))}.sky-switch-input:checked:not(:disabled).sky-radio-input:active+.sky-switch-control.sky-switch-control-icon{border-width:var(--sky-override-radio-border-width-icon-checked-active, var(--sky-border-width-selected-s));border-color:var(--sky-override-radio-border-color-icon-checked-active, var(--sky-color-border-selected))}.sky-switch-input:checked:not(:disabled).sky-radio-input:hover:not(:active)+.sky-switch-control{border-width:var(--sky-override-radio-border-width-checked-hover, var(--sky-border-width-selected-s));border-color:var(--sky-override-radio-border-color-checked-hover, var(--sky-color-border-switch-selected-base))}.sky-switch-input:checked:not(:disabled).sky-radio-input:hover:not(:active)+.sky-switch-control.sky-switch-control-icon{border-color:var(--sky-override-radio-border-color-icon-checked-hover, var(--sky-color-border-selected))}.sky-radio-hint-text{margin:var(--sky-override-radio-hint-text-inset, var(--sky-space-gap-stacked_supplemental-xs) 0 0 var(--sky-space-inset-switch))}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i3.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"component\", type: i4.λ1, selector: \"sky-icon\", inputs: [\"iconName\", \"variant\", \"iconSize\"] }, { kind: \"directive\", type: i5.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"directive\", type: i1.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-radio', providers: [SKY_RADIO_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [SkyThemeComponentClassDirective], standalone: false, template: \"<span class=\\\"sky-radio-outer-wrapper\\\">\\n <label\\n class=\\\"sky-radio-wrapper sky-switch\\\"\\n [ngClass]=\\\"{ 'sky-switch-disabled': disabled || radioGroupDisabled }\\\"\\n >\\n <input\\n class=\\\"sky-radio-input sky-switch-input\\\"\\n type=\\\"radio\\\"\\n [attr.aria-label]=\\\"labelText || label\\\"\\n [attr.aria-labelledby]=\\\"labelText ? undefined : labelledBy\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [checked]=\\\"checked\\\"\\n [disabled]=\\\"disabled || radioGroupDisabled\\\"\\n [id]=\\\"inputId\\\"\\n [name]=\\\"name\\\"\\n [tabIndex]=\\\"tabindex\\\"\\n [value]=\\\"value\\\"\\n (blur)=\\\"onInputFocusChange()\\\"\\n (change)=\\\"onInputChange($event)\\\"\\n />\\n <span\\n class=\\\"sky-switch-control\\\"\\n [ngClass]=\\\"{\\n 'sky-switch-control-icon': iconName,\\n 'sky-rounded-circle': !iconName,\\n 'sky-switch-control-info': iconName && radioType === 'info',\\n 'sky-switch-control-success': iconName && radioType === 'success',\\n 'sky-switch-control-warning': iconName && radioType === 'warning',\\n 'sky-switch-control-danger': iconName && radioType === 'danger'\\n }\\\"\\n >\\n @if (iconName) {\\n <sky-icon [iconName]=\\\"iconName\\\" />\\n }\\n </span>\\n @if (labelText) {\\n <span\\n class=\\\"sky-switch-label sky-radio-label-text\\\"\\n [class.sky-screen-reader-only]=\\\"labelHidden\\\"\\n >{{ labelText }}</span\\n >\\n } @else {\\n <ng-content select=\\\"sky-radio-label\\\" />\\n }\\n </label>\\n @if ((helpPopoverContent || helpKey) && labelText) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n class=\\\"sky-radio-help-inline\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n</span>\\n<div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-radio-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n</div>\\n\", styles: [\".sky-radio-outer-wrapper:not(.sky-theme-modern *){--sky-override-radio-border-color-checked-active: var( --sky-highlight-color-info );--sky-override-radio-border-color-checked-hover: var( --sky-highlight-color-info );--sky-override-radio-border-width-checked-active: 2px;--sky-override-radio-border-width-checked-hover: 2px;--sky-override-radio-border-color-icon-checked-active: var( --sky-highlight-color-info );--sky-override-radio-border-color-icon-checked-hover: var( --sky-highlight-color-info );--sky-override-radio-border-width-icon-checked-active: 2px;--sky-override-radio-icon-border-radius: 50%;--sky-override-radio-icon-color-disabled: #000000;--sky-override-radio-icon-color-selected: #000000;--sky-override-radio-icon-size: 10px;--sky-override-radio-label-margin-right: var(--sky-margin-inline-xs)}:host.sky-cmp-theme-default{--sky-override-radio-group-radio-bottom-margin: var(--sky-margin-stacked-sm);--sky-override-radio-hint-text-inset: var(--sky-margin-stacked-xs) 0 0 calc(var(--sky-switch-size) + var(--sky-switch-margin))}:host:has(.sky-switch-control-icon){display:inline-block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)){display:block}:host-context(sky-radio-group):not(:has(li)) :host:not(:has(.sky-switch-control-icon)):not(:last-child){margin-bottom:var(--sky-override-radio-group-radio-bottom-margin, var(--sky-space-gap-form-s))}.sky-radio-outer-wrapper{display:flex}.sky-radio-help-inline{display:inline-flex}.sky-switch:not(:has(~.sky-control-help-container)) .sky-switch-label{margin-right:var(--sky-override-radio-label-margin-right, 0)}.sky-switch-input:checked+.sky-switch-control:not(.sky-switch-control-icon):after{content:\\\"\\\";display:inline-block;width:var(--sky-override-radio-icon-size, var(--sky-size-icon-xxs));height:var(--sky-override-radio-icon-size, var(--sky-size-icon-xxs));background:var(--sky-override-radio-icon-color-selected, var(--sky-color-icon-inverse));border-radius:var(--sky-override-radio-icon-border-radius, var(--sky-border-radius-round))}.sky-radio-input:disabled+.sky-switch-control:not(.sky-switch-control-icon):after{background-color:var(--sky-override-radio-icon-color-disabled, var(--sky-color-text-deemphasized))}.sky-switch-input:checked:not(:disabled).sky-radio-input:active+.sky-switch-control{border-width:var(--sky-override-radio-border-width-checked-active, var(--sky-border-width-selected-s));border-color:var(--sky-override-radio-border-color-checked-active, var(--sky-color-border-switch-selected-base))}.sky-switch-input:checked:not(:disabled).sky-radio-input:active+.sky-switch-control.sky-switch-control-icon{border-width:var(--sky-override-radio-border-width-icon-checked-active, var(--sky-border-width-selected-s));border-color:var(--sky-override-radio-border-color-icon-checked-active, var(--sky-color-border-selected))}.sky-switch-input:checked:not(:disabled).sky-radio-input:hover:not(:active)+.sky-switch-control{border-width:var(--sky-override-radio-border-width-checked-hover, var(--sky-border-width-selected-s));border-color:var(--sky-override-radio-border-color-checked-hover, var(--sky-color-border-switch-selected-base))}.sky-switch-input:checked:not(:disabled).sky-radio-input:hover:not(:active)+.sky-switch-control.sky-switch-control-icon{border-color:var(--sky-override-radio-border-color-icon-checked-hover, var(--sky-color-border-selected))}.sky-radio-hint-text{margin:var(--sky-override-radio-hint-text-inset, var(--sky-space-gap-stacked_supplemental-xs) 0 0 var(--sky-space-inset-switch))}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { checked: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], id: [{\n type: Input\n }], label: [{\n type: Input\n }], labelledBy: [{\n type: Input\n }], name: [{\n type: Input\n }], tabindex: [{\n type: Input\n }], value: [{\n type: Input\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], iconName: [{\n type: Input\n }], radioType: [{\n type: Input\n }], labelText: [{\n type: Input\n }], labelHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hintText: [{\n type: Input\n }], helpKey: [{\n type: Input\n }], change: [{\n type: Output\n }], checkedChange: [{\n type: Output\n }], disabledChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFHTixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFJbEU7OztHQUdHO0FBQ0gsTUFBTSxnQ0FBZ0MsR0FBYTtJQUNqRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDaEQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUY7Ozs7R0FJRztBQVVILE1BQU0sT0FBTyxpQkFBaUI7SUFNNUI7OztPQUdHO0lBQ0gsSUFDVyxPQUFPLENBQUMsS0FBMEI7UUFDM0MsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVoQyxJQUFJ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SUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSw4QkFBOEIsQ0FBa0I7SUFDaEQsZ0VBQWdFO0lBQ2hFLGlCQUFpQixDQUE0QjtJQUM3QyxnRUFBZ0U7SUFDaEUsa0JBQWtCLENBQWtCOytHQXJYekIsaUJBQWlCO21HQUFqQixpQkFBaUIsK0dBbUNSLGdCQUFnQiw2U0E2TWhCLGdCQUFnQiwySkFyUHpCLENBQUMsZ0NBQWdDLENBQUMsK0ZDM0MvQyxpcUVBc0VBOzs0RkR0QmEsaUJBQWlCO2tCQVQ3QixTQUFTOytCQUNFLFdBQVcsYUFHVixDQUFDLGdDQUFnQyxDQUFDLG1CQUM1Qix1QkFBdUIsQ0FBQyxNQUFNLGtCQUMvQixDQUFDLCtCQUErQixDQUFDLGNBQ3JDLEtBQUs7O3NCQVloQixLQUFLOztzQkF5QkwsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBaUJyQyxLQUFLOztzQkFrQkwsS0FBSzs7c0JBd0JMLEtBQUs7O3NCQXNCTCxLQUFLOztzQkFnQkwsS0FBSzs7c0JBaUNMLEtBQUs7O3NCQXlCTCxLQUFLOztzQkFPTCxLQUFLOztzQkFRTCxLQUFLOztzQkFZTCxLQUFLOztzQkFpQkwsS0FBSzs7c0JBTUwsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBT3JDLEtBQUs7O3NCQVFMLEtBQUs7O3NCQU1MLE1BQU07O3NCQU9OLE1BQU07O3NCQU1OLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFByb3ZpZGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUlkU2VydmljZSwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreVRoZW1lQ29tcG9uZW50Q2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmFkaW9DaGFuZ2UgfSBmcm9tICcuL3R5cGVzL3JhZGlvLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lSYWRpb1R5cGUgfSBmcm9tICcuL3R5cGVzL3JhZGlvLXR5cGUnO1xuXG4vKipcbiAqIFByb3ZpZGVyIEV4cHJlc3Npb24gdGhhdCBhbGxvd3Mgc2t5LXJhZGlvIHRvIHJlZ2lzdGVyIGFzIGEgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKiBUaGlzIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldLlxuICovXG5jb25zdCBTS1lfUkFESU9fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lSYWRpb0NvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuLyoqXG4gKiBSZW5kZXJzIGEgU0tZIFVYLXRoZW1lZCByZXBsYWNlbWVudCBmb3IgYW4gSFRNTCBgaW5wdXRgIGVsZW1lbnRcbiAqIHdpdGggYHR5cGU9XCJyYWRpb1wiYC4gV2hlbiB1c2VycyBzZWxlY3QgYSByYWRpbyBidXR0b24sIGl0cyB2YWx1ZSBpcyBkcml2ZW4gdGhyb3VnaCBhblxuICogYG5nTW9kZWxgIGF0dHJpYnV0ZSB0aGF0IHlvdSBzcGVjaWZ5IG9uIHRoZSBgc2t5LXJhZGlvYCBlbGVtZW50IG9yIHRoZSBwYXJlbnQgYHNreS1yYWRpby1ncm91cGAgZWxlbWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXJhZGlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU0tZX1JBRElPX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtTa3lUaGVtZUNvbXBvbmVudENsYXNzRGlyZWN0aXZlXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGZvY3VzIG9mZiBhIHJhZGlvIGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBibHVyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbmV3Q2hlY2tlZFN0YXRlID0gISF2YWx1ZTtcblxuICAgIGlmICh0aGlzLiNfY2hlY2tlZCAhPT0gbmV3Q2hlY2tlZFN0YXRlKSB7XG4gICAgICB0aGlzLiNfY2hlY2tlZCA9IG5ld0NoZWNrZWRTdGF0ZTtcbiAgICAgIHRoaXMuY2hlY2tlZENoYW5nZS5uZXh0KG5ld0NoZWNrZWRTdGF0ZSk7XG5cbiAgICAgIGlmIChuZXdDaGVja2VkU3RhdGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2NoZWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBpbnB1dCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLm5leHQodmFsdWUpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBmb3IgdGhlIHJhZGlvIGJ1dHRvbi5cbiAgICogSWYgYSB2YWx1ZSBpcyBub3QgcHJvdmlkZWQsIGFuIGF1dG9nZW5lcmF0ZWQgSUQgaXMgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5pbnB1dElkID0gYHNreS1yYWRpby0ke3ZhbHVlfS1pbnB1dGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRJZCA9IGBza3ktcmFkaW8tJHt0aGlzLiNkZWZhdWx0SWR9LWlucHV0YDtcbiAgICB9XG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjPy5yZWdpc3Rlcih0aGlzLiNkZWZhdWx0SWQsIHRoaXMuaW5wdXRJZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSByYWRpbyBidXR0b24uIFRoaXMgc2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgYGFyaWEtbGFiZWxgXG4gICAqIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVycyBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpXG4gICAqIHdoZW4gdGhlIHJhZGlvIGJ1dHRvbiBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbC4gWW91IG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgZm9yIGljb25cbiAgICogcmFkaW8gYnV0dG9ucy4gSWYgdGhlIHJhZGlvIGJ1dHRvbiBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgbGFiZWxUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2xhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0NvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSByYWRpbyBidXR0b24uIFRoaXMgc2V0cyB0aGUgcmFkaW8gYnV0dG9uJ3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSByYWRpbyBidXR0b24gZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgbGFiZWxgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbGxlZGJ5KS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBsYWJlbFRleHRgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsbGVkQnkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19sYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0NvbXBvbmVudC5sYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogMTAsXG4gICAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246ICdVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxsZWRCeSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbGFiZWxsZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGBuYW1lYCBwcm9wZXJ0eSBvbiB0aGUgYHNreS1yYWRpby1ncm91cCBlbGVtZW50YC5cbiAgICogV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBgc2t5LXJhZGlvLWdyb3VwYCBlbGVtZW50IHdpdGggYWxsIHJhZGlvIGJ1dHRvbnMsIGJ1dCBpZiB5b3Ugb3B0IG5vdCB0byxcbiAgICogdGhlbiB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyBhIG5hbWUgZm9yIGEgZ3JvdXAgb2YgcmFkaW8gYnV0dG9ucy5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX25hbWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2ZcbiAgICogdGhlIGB0YWJJbmRleGAgcHJvcGVydHkgb24gdGhlIGBza3ktcmFkaW8tZ3JvdXBgIGVsZW1lbnQuIEl0IHNwZWNpZmllcyBhbiBpbmRleCBmb3IgdGhlIHJhZGlvXG4gICAqIGJ1dHRvbi4gSWYgdGhlIGluZGV4IGlzIG5vdCBkZWZpbmVkLCBpdCBpcyBzZXQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSByYWRpbyBidXR0b24gb24gbG9hZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiaW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdUaGUgc2t5LXJhZGlvIGB0YWJpbmRleGAgcHJvcGVydHkgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSB0aGUgYHRhYmluZGV4YCBwcm9wZXJ0eSBvbiB0aGUgc2t5LXJhZGlvLWdyb3VwIGNvbXBvbmVudC4nLFxuICAgICk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGFiaW5kZXggPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3RhYmluZGV4ID0gMDtcbiAgICB9XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcHVibGljIGdldCB0YWJpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfdGFiaW5kZXg7XG4gIH1cblxuICAvLyBGb3Igc2V0dGluZyB0aGUgdGFiaW5kZXggZnJvbSB0aGUgcmFkaW8gZ3JvdXBcbiAgcHVibGljIHNldCBncm91cFRhYkluZGV4KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI190YWJpbmRleCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNfdGFiaW5kZXggPSAwO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBib3VuZCB0byB0aGUgcmFkaW8gYnV0dG9uJ3MgYHZhbHVlYCBwcm9wZXJ0eS4gVGhlIHZhbHVlIHVzdWFsbHlcbiAgICogY29ycmVzcG9uZHMgdG8gdGhlIHJhZGlvIGJ1dHRvbidzIGxhYmVsLCB3aGljaCB5b3Ugc3BlY2lmeSB3aXRoIHRoZSBgc2t5LXJhZGlvLWxhYmVsYFxuICAgKiBjb21wb25lbnQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgPT09IHRoaXMuI192YWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy4jb25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICB0aGlzLiNvblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBoZWxwIHBvcG92ZXIuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGxhYmVsVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byByYWRpbyBidXR0b24uIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIFNWRyBpY29uIHRvIGRpc3BsYXkgaW4gcGxhY2Ugb2YgdGhlIHJhZGlvIGJ1dHRvbi4gVG8gZ3JvdXAgcmFkaW8gYnV0dG9ucyBsaWtlIGluXG4gICAqIHRoZSBkZW1vIGFib3ZlLCBwbGFjZSB0aGUgYHNreS1zd2l0Y2gtaWNvbi1ncm91cGAgY2xhc3Mgb24gdGhlIGRpcmVjdCBwYXJlbnQgZWxlbWVudCBvZiB0aGVcbiAgICogcmFkaW8gYnV0dG9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpY29uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFja2dyb3VuZCBjb2xvciB0eXBlIGFmdGVyIHVzZXJzIHNlbGVjdCBhbiBpY29uIHJhZGlvIGJ1dHRvbi5cbiAgICogVGhlIHZhbGlkIG9wdGlvbnMgY29ycmVzcG9uZFxuICAgKiBbdGhlIGxhYmVsIGNvbXBvbmVudCdzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvbGFiZWwpXG4gICAqIGxhYmVsIHR5cGVzLiBgZGFuZ2VyYCBjcmVhdGVzIGEgcmVkIGJhY2tncm91bmQsIGBpbmZvYCBjcmVhdGVzIGEgYmx1ZSBiYWNrZ3JvdW5kLFxuICAgKiBgc3VjY2Vzc2AgY3JlYXRlcyBhIGdyZWVuIGJhY2tncm91bmQsIGFuZCBgd2FybmluZ2AgY3JlYXRlcyBhbiBvcmFuZ2UgYmFja2dyb3VuZC5cbiAgICogQGRlZmF1bHQgXCJpbmZvXCJcbiAgICogQGRlcHJlY2F0ZWQgcmFkaW9UeXBlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgcmFkaW9UeXBlKCk6IFNreVJhZGlvVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19yYWRpb1R5cGU7XG4gIH1cbiAgcHVibGljIHNldCByYWRpb1R5cGUodmFsdWU6IFNreVJhZGlvVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreVJhZGlvQ29tcG9uZW50LnJhZGlvVHlwZScsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiNfcmFkaW9UeXBlID0gdmFsdWUgPz8gJ2luZm8nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIHJhZGlvIGJ1dHRvbidzIGxhYmVsLiBVc2UgdGhpcyBpbnN0ZWFkIG9mIHRoZSBgc2t5LXJhZGlvLWxhYmVsYCB3aGVuIHRoZSBsYWJlbCBpcyB0ZXh0LW9ubHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWxUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGBsYWJlbFRleHRgLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBsYWJlbEhpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBbUGVyc2lzdGVudCBpbmxpbmUgaGVscCB0ZXh0XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2Rlc2lnbi9ndWlkZWxpbmVzL3VzZXItYXNzaXN0YW5jZSNpbmxpbmUtaGVscCkgdGhhdCBwcm92aWRlc1xuICAgKiBhZGRpdGlvbmFsIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGludFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBoZWxwIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIGdsb2JhbCBoZWxwIGNvbnRlbnQgdG8gZGlzcGxheS4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIHJhZGlvIGJ1dHRvbiBsYWJlbC4gQ2xpY2tpbmcgdGhlIGJ1dHRvbiBpbnZva2VzIFtnbG9iYWwgaGVscF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9kZXZlbG9wL2dsb2JhbC1oZWxwKVxuICAgKiBhcyBjb25maWd1cmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IGEgcmFkaW8gYnV0dG9uLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBwdWJsaWMgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lSYWRpb0NoYW5nZT4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2VsZWN0ZWQgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZGlzYWJsZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19zZWxlY3RlZFZhbHVlKSB7XG4gICAgICB0aGlzLiNfc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdGVkVmFsdWU7XG4gIH1cblxuICBwdWJsaWMgcmFkaW9Hcm91cERpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGlucHV0SWQgPSAnJztcblxuICAjX2NoZWNrZWQgPSBmYWxzZTtcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX25hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI19yYWRpb1R5cGU6IFNreVJhZGlvVHlwZSA9ICdpbmZvJztcbiAgI19zZWxlY3RlZFZhbHVlOiB1bmtub3duO1xuICAjX3RhYmluZGV4ID0gMDtcbiAgI192YWx1ZTogYW55O1xuICAjX2xhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfbGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICNkZWZhdWx0SWQgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKS5nZW5lcmF0ZUlkKCk7XG4gICNyYWRpb0dyb3VwSWRTdmMgPSBpbmplY3QoU2t5UmFkaW9Hcm91cElkU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgI2xvZ2dlciA9IGluamVjdChTa3lMb2dTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gdGhpcy4jZGVmYXVsdElkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3JhZGlvR3JvdXBJZFN2Yz8udW5yZWdpc3Rlcih0aGlzLiNkZWZhdWx0SWQpO1xuICAgIHRoaXMuI3JlbW92ZVVuaXF1ZVNlbGVjdGlvbkxpc3RlbmVyKCk7XG4gICAgdGhpcy5jaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmRpc2FibGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jaGVja2VkID0gdGhpcy52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFZhbHVlO1xuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldEdyb3VwRGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yYWRpb0dyb3VwRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2UubmV4dCh7XG4gICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMub25JbnB1dEZvY3VzQ2hhbmdlKCk7XG4gICAgICB0aGlzLiNvbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0Rm9jdXNDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLmJsdXIubmV4dCgpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjcmVtb3ZlVW5pcXVlU2VsZWN0aW9uTGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjb25DaGFuZ2VDYWxsYmFjayA9ICh2YWx1ZTogYW55KTogdm9pZCA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjb25Ub3VjaGVkQ2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7fTtcbn1cbiIsIjxzcGFuIGNsYXNzPVwic2t5LXJhZGlvLW91dGVyLXdyYXBwZXJcIj5cbiAgPGxhYmVsXG4gICAgY2xhc3M9XCJza3ktcmFkaW8td3JhcHBlciBza3ktc3dpdGNoXCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktc3dpdGNoLWRpc2FibGVkJzogZGlzYWJsZWQgfHwgcmFkaW9Hcm91cERpc2FibGVkIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICBjbGFzcz1cInNreS1yYWRpby1pbnB1dCBza3ktc3dpdGNoLWlucHV0XCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsVGV4dCB8fCBsYWJlbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxUZXh0ID8gdW5kZWZpbmVkIDogbGFiZWxsZWRCeVwiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhpbnRUZXh0ID8gaGludFRleHRFbC5pZCA6IHVuZGVmaW5lZFwiXG4gICAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByYWRpb0dyb3VwRGlzYWJsZWRcIlxuICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICBbdGFiSW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChibHVyKT1cIm9uSW5wdXRGb2N1c0NoYW5nZSgpXCJcbiAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cInNreS1zd2l0Y2gtY29udHJvbFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktc3dpdGNoLWNvbnRyb2wtaWNvbic6IGljb25OYW1lLFxuICAgICAgICAnc2t5LXJvdW5kZWQtY2lyY2xlJzogIWljb25OYW1lLFxuICAgICAgICAnc2t5LXN3aXRjaC1jb250cm9sLWluZm8nOiBpY29uTmFtZSAmJiByYWRpb1R5cGUgPT09ICdpbmZvJyxcbiAgICAgICAgJ3NreS1zd2l0Y2gtY29udHJvbC1zdWNjZXNzJzogaWNvbk5hbWUgJiYgcmFkaW9UeXBlID09PSAnc3VjY2VzcycsXG4gICAgICAgICdza3ktc3dpdGNoLWNvbnRyb2wtd2FybmluZyc6IGljb25OYW1lICYmIHJhZGlvVHlwZSA9PT0gJ3dhcm5pbmcnLFxuICAgICAgICAnc2t5LXN3aXRjaC1jb250cm9sLWRhbmdlcic6IGljb25OYW1lICYmIHJhZGlvVHlwZSA9PT0gJ2RhbmdlcidcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIEBpZiAoaWNvbk5hbWUpIHtcbiAgICAgICAgPHNreS1pY29uIFtpY29uTmFtZV09XCJpY29uTmFtZVwiIC8+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICAgIEBpZiAobGFiZWxUZXh0KSB7XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInNreS1zd2l0Y2gtbGFiZWwgc2t5LXJhZGlvLWxhYmVsLXRleHRcIlxuICAgICAgICBbY2xhc3Muc2t5LXNjcmVlbi1yZWFkZXItb25seV09XCJsYWJlbEhpZGRlblwiXG4gICAgICAgID57eyBsYWJlbFRleHQgfX08L3NwYW5cbiAgICAgID5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1yYWRpby1sYWJlbFwiIC8+XG4gICAgfVxuICA8L2xhYmVsPlxuICBAaWYgKChoZWxwUG9wb3ZlckNvbnRlbnQgfHwgaGVscEtleSkgJiYgbGFiZWxUZXh0KSB7XG4gICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgPHNreS1oZWxwLWlubGluZVxuICAgICAgICBjbGFzcz1cInNreS1yYWRpby1oZWxwLWlubGluZVwiXG4gICAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gICAgICAgIFtwb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gIH1cbjwvc3Bhbj5cbjxkaXYgI2hpbnRUZXh0RWw9XCJza3lJZFwiIHNreUlkPlxuICBAaWYgKGhpbnRUZXh0KSB7XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktcmFkaW8taGludC10ZXh0XCJcbiAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdkZWZhdWx0JyxcbiAgICAgICAgJ3NreS1mb250LWhpbnQtdGV4dC1zJzogJ21vZGVybidcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIHt7IGhpbnRUZXh0IH19XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19","import { Component, ContentChildren, HostBinding, Input, Optional, Self, booleanAttribute, inject, numberAttribute, } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\nimport { SkyRadioGroupIdService } from './radio-group-id.service';\nimport { SkyRadioComponent } from './radio.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./radio-group-id.service\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"../form-error/form-errors.component\";\nimport * as i6 from \"@skyux/help-inline\";\nimport * as i7 from \"@skyux/core\";\nimport * as i8 from \"@skyux/i18n\";\nlet nextUniqueId = 0;\nfunction numberAttribute4(value) {\n return numberAttribute(value, 4);\n}\n/**\n * Organizes radio buttons into a group. It is required for radio\n * buttons on Angular reactive forms, and we recommend using it with all radio buttons.\n * On Angular forms, the component manages the selected values and keeps the forms up-to-date.\n * When users select a radio button, its value is driven through an `ngModel` attribute that you specify on the `sky-radio-group` element.\n */\nexport class SkyRadioGroupComponent {\n /**\n * The HTML element ID of the element that labels\n * the radio button group. This sets the radio button group's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the radio button group does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n * @deprecated Use `headingText` instead.\n */\n set ariaLabelledBy(value) {\n this.#_ariaLabelledBy = value;\n if (value) {\n this.#logger.deprecated('SkyRadioGroupComponent.ariaLabelledBy', {\n deprecationMajorVersion: 9,\n });\n }\n }\n get ariaLabelledBy() {\n return this.#_ariaLabelledBy;\n }\n /**\n * The ARIA label for the radio button group. This sets the\n * radio button group's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the radio button group includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use `headingText` instead.\n */\n set ariaLabel(value) {\n this.#_ariaLabel = value;\n if (value) {\n this.#logger.deprecated('SkyRadioGroupComponent.ariaLabel', {\n deprecationMajorVersion: 9,\n });\n }\n }\n get ariaLabel() {\n return this.#_ariaLabel;\n }\n /**\n * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n if (this.#_disabled !== value) {\n this.#_disabled = value;\n this.#updateRadioButtonDisabled();\n }\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The semantic heading level in the document structure. By default, the heading text is not wrapped in a heading element.\n */\n set headingLevel(value) {\n this.#_headingLevel = value && !isNaN(value) ? value : undefined;\n this.#updateStackedClasses();\n }\n get headingLevel() {\n return this.#_headingLevel;\n }\n /**\n * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n * @default 4\n */\n set headingStyle(value) {\n this.headingClass = `sky-font-heading-${value}`;\n }\n /**\n * The name for the collection of radio buttons that the component groups together.\n * This property overwrites the deprecated `name` property on individual `sky-radio` elements,\n * and it is required unless the `name` property is set on individual `sky-radio` elements.\n * @required\n */\n set name(value) {\n if (value) {\n this.#_name = value;\n }\n else {\n this.#_name = this.#defaultName;\n }\n this.#updateRadioButtonNames();\n }\n get name() {\n return this.#_name;\n }\n /**\n * Whether the radio button group is stacked on another form component. When specified,\n * the appropriate vertical spacing is automatically added to the radio button group.\n */\n set stacked(value) {\n this.#_stacked = value;\n this.#updateStackedClasses();\n }\n get stacked() {\n return this.#_stacked;\n }\n /**\n * The value of the radio button to select by default when the group loads.\n * The value corresponds to the `value` property of an individual `sky-radio` element within the\n * group.\n */\n // TODO: Look into more strongly typing in a breaking change\n set value(value) {\n const isNewValue = value !== this.#controlValue;\n /* istanbul ignore else */\n if (isNewValue) {\n this.#controlValue = value;\n this.#onChange(value);\n this.#updateCheckedRadioFromValue();\n }\n }\n /**\n * The index for all the radio buttons in the group. If the index is not defined,\n * the indices for individual radio buttons are set to their positions on load.\n * This property supports accessibility by placing focus on the currently selected radio\n * button. If no radio button is selected, it places focus on the first or last button\n * depending on how users navigate to the radio button group.\n */\n set tabIndex(value) {\n if (this.#_tabIndex !== value) {\n this.#_tabIndex = value;\n this.#updateRadioButtonTabIndexes();\n }\n }\n get tabIndex() {\n return this.#_tabIndex;\n }\n get isRequired() {\n return (this.required ||\n (this.ngControl?.control?.hasValidator(Validators.required) ?? false));\n }\n #controlValue;\n #defaultName;\n #ngUnsubscribe;\n #_disabled;\n #_name;\n #_tabIndex;\n #_ariaLabel;\n #_ariaLabelledBy;\n #_headingLevel;\n #_stacked;\n #changeDetector;\n #radioGroupIdSvc;\n #logger;\n #idService;\n constructor(changeDetector, radioGroupIdSvc, ngControl) {\n /**\n * Whether the input is required for form validation.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input element so that forms display an invalid state until the input element\n * is complete.\n * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n * @default false\n */\n this.required = false;\n /**\n * Indicates whether to hide the `headingText`.\n */\n this.headingHidden = false;\n this.stackedLg = false;\n this.stackedXL = false;\n this.headingClass = 'sky-font-heading-4';\n this.#defaultName = `sky-radio-group-${nextUniqueId++}`;\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#_name = '';\n this.#_stacked = false;\n this.#logger = inject(SkyLogService);\n this.#idService = inject(SkyIdService);\n this.errorId = this.#idService.generateId();\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.#onChange = () => { };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.#onTouched = () => { };\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n this.#changeDetector = changeDetector;\n this.#radioGroupIdSvc = radioGroupIdSvc;\n this.ngControl = ngControl;\n this.name = this.#defaultName;\n this.#radioGroupIdSvc.radioIds\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((ids) => {\n this.ariaOwns = ids.join(' ') || undefined;\n this.#changeDetector.markForCheck();\n });\n }\n ngAfterContentInit() {\n // Let child radio components render before updating.\n setTimeout(() => {\n this.#resetRadioButtons();\n });\n // Watch for radio selections.\n this.watchForSelections();\n /* istanbul ignore else */\n if (this.radios) {\n this.radios.changes.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n // Wait for child radio components to finish any rendering updates.\n setTimeout(() => {\n this.#resetRadioButtons();\n });\n // Subscribe to the new radio buttons\n this.watchForSelections();\n });\n }\n }\n watchForSelections() {\n /* istanbul ignore else */\n if (this.radios) {\n this.radios.forEach((radio) => {\n radio.change\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change) => {\n this.#onTouched();\n this.value = change.value;\n });\n radio.blur.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n this.#onTouched();\n this.#changeDetector.markForCheck();\n });\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n writeValue(value) {\n const isNewValue = value !== this.#controlValue;\n /* istanbul ignore else */\n if (isNewValue) {\n this.#controlValue = value;\n this.#updateCheckedRadioFromValue();\n }\n }\n /**\n * @internal\n * Whether to disable the control. Implemented as a part of ControlValueAccessor.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#onTouched = fn;\n }\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onChange;\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onTouched;\n #updateRadioButtonDisabled() {\n if (this.radios) {\n this.radios.forEach((radio) => radio.setGroupDisabledState(this.disabled));\n }\n }\n #updateRadioButtonNames() {\n if (this.radios) {\n this.radios.forEach((radio) => {\n radio.name = this.name;\n });\n }\n }\n #updateRadioButtonTabIndexes() {\n if (this.radios) {\n this.radios.forEach((radio) => {\n radio.groupTabIndex = this.tabIndex;\n });\n }\n }\n #updateCheckedRadioFromValue() {\n if (!this.radios) {\n return;\n }\n this.radios.forEach((radio) => {\n radio.checked = this.#controlValue === radio.value;\n });\n }\n #resetRadioButtons() {\n this.#updateCheckedRadioFromValue();\n this.#updateRadioButtonNames();\n this.#updateRadioButtonTabIndexes();\n this.#updateRadioButtonDisabled();\n }\n #updateStackedClasses() {\n this.stackedLg = !this.headingLevel && this.stacked;\n this.stackedXL = !!this.headingLevel && this.stacked;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioGroupComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyRadioGroupIdService }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyRadioGroupComponent, isStandalone: false, selector: \"sky-radio-group\", inputs: { ariaLabelledBy: \"ariaLabelledBy\", ariaLabel: \"ariaLabel\", disabled: [\"disabled\", \"disabled\", booleanAttribute], headingLevel: [\"headingLevel\", \"headingLevel\", numberAttribute], headingStyle: [\"headingStyle\", \"headingStyle\", numberAttribute4], name: \"name\", required: [\"required\", \"required\", booleanAttribute], stacked: [\"stacked\", \"stacked\", booleanAttribute], value: \"value\", tabIndex: \"tabIndex\", headingText: \"headingText\", headingHidden: [\"headingHidden\", \"headingHidden\", booleanAttribute], hintText: \"hintText\", helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", helpKey: \"helpKey\" }, host: { properties: { \"class.sky-form-field-stacked\": \"this.stackedLg\", \"class.sky-field-group-stacked\": \"this.stackedXL\" } }, providers: [\n SkyRadioGroupIdService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], queries: [{ propertyName: \"radios\", predicate: SkyRadioComponent, descendants: true }], hostDirectives: [{ directive: i3.SkyThemeComponentClassDirective }], ngImport: i0, template: \"<fieldset\\n class=\\\"sky-radio-group\\\"\\n role=\\\"radiogroup\\\"\\n [attr.aria-label]=\\\"headingText ? undefined : ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"headingText ? undefined : ariaLabelledBy\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-owns]=\\\"ariaOwns\\\"\\n [attr.aria-required]=\\\"isRequired ? true : null\\\"\\n [attr.required]=\\\"isRequired ? '' : null\\\"\\n [attr.aria-invalid]=\\\"!!ngControl?.errors\\\"\\n [attr.aria-errormessage]=\\\"\\n headingText && ngControl?.errors ? errorId : undefined\\n \\\"\\n>\\n @if (headingText) {\\n <legend\\n class=\\\"sky-radio-group-legend\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': headingHidden\\n }\\\"\\n >\\n <span\\n [ngClass]=\\\"{\\n 'sky-control-label-required': required\\n }\\\"\\n >\\n @switch (headingLevel) {\\n @case (3) {\\n <h3 [class]=\\\"headingClass\\\">{{ headingText }}</h3>\\n }\\n @case (4) {\\n <h4 [class]=\\\"headingClass\\\">{{ headingText }}</h4>\\n }\\n @case (5) {\\n <h5 [class]=\\\"headingClass\\\">{{ headingText }}</h5>\\n }\\n @default {\\n <span [class]=\\\"'sky-radio-group-heading-text ' + headingClass\\\">{{\\n headingText\\n }}</span>\\n }\\n }\\n </span>\\n @if (required) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_form_group_required' | skyLibResources\\n }}</span>\\n }\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"headingText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n }\\n <div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-radio-group-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n </div>\\n <div class=\\\"sky-radio-group-content\\\">\\n <ng-content />\\n </div>\\n</fieldset>\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"ngControl?.errors\\\"\\n [labelText]=\\\"headingText\\\"\\n [touched]=\\\"ngControl?.touched\\\"\\n [dirty]=\\\"ngControl?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n</sky-form-errors>\\n\", styles: [\".sky-radio-group:not(.sky-theme-modern *){--sky-override-radio-group-content-space: 8px;--sky-override-radio-group-content-with-hint-text-space: 10px;--sky-override-radio-group-hint-text-space: 5px}.sky-radio-group:not(.sky-theme-modern *) .sky-radio-group-legend .sky-radio-group-heading-text{line-height:1.1}:host.sky-field-group-stacked,:host.sky-form-field-stacked{display:block}.sky-radio-group-legend h3,.sky-radio-group-legend h4,.sky-radio-group-legend h5{margin:0;display:inline-block}.sky-radio-group:has(.sky-radio-group-legend:not(.sky-screen-reader-only)):not(:has(.sky-radio-group-hint-text)) .sky-radio-group-content{margin-top:var(--sky-override-radio-group-content-space, var(--sky-space-gap-form-s))}.sky-radio-group:has(.sky-radio-group-legend:not(.sky-screen-reader-only)) .sky-radio-group-hint-text{margin-top:var(--sky-override-radio-group-hint-text-space, var(--sky-space-gap-stacked_supplemental-s))}.sky-radio-group:has(.sky-radio-group-hint-text) .sky-radio-group-content{margin-top:var(--sky-override-radio-group-content-with-hint-text-space, var(--sky-space-gap-form-l))}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i5.SkyFormErrorsComponent, selector: \"sky-form-errors\", inputs: [\"errors\", \"labelText\", \"touched\", \"dirty\"] }, { kind: \"component\", type: i6.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"directive\", type: i7.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }, { kind: \"directive\", type: i3.λ2, selector: \"[skyThemeClass]\", inputs: [\"class\", \"skyThemeClass\"] }, { kind: \"pipe\", type: i8.SkyLibResourcesPipe, name: \"skyLibResources\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioGroupComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-radio-group', providers: [\n SkyRadioGroupIdService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], hostDirectives: [SkyThemeComponentClassDirective], standalone: false, template: \"<fieldset\\n class=\\\"sky-radio-group\\\"\\n role=\\\"radiogroup\\\"\\n [attr.aria-label]=\\\"headingText ? undefined : ariaLabel\\\"\\n [attr.aria-labelledby]=\\\"headingText ? undefined : ariaLabelledBy\\\"\\n [attr.aria-describedby]=\\\"hintText ? hintTextEl.id : undefined\\\"\\n [attr.aria-owns]=\\\"ariaOwns\\\"\\n [attr.aria-required]=\\\"isRequired ? true : null\\\"\\n [attr.required]=\\\"isRequired ? '' : null\\\"\\n [attr.aria-invalid]=\\\"!!ngControl?.errors\\\"\\n [attr.aria-errormessage]=\\\"\\n headingText && ngControl?.errors ? errorId : undefined\\n \\\"\\n>\\n @if (headingText) {\\n <legend\\n class=\\\"sky-radio-group-legend\\\"\\n [ngClass]=\\\"{\\n 'sky-screen-reader-only': headingHidden\\n }\\\"\\n >\\n <span\\n [ngClass]=\\\"{\\n 'sky-control-label-required': required\\n }\\\"\\n >\\n @switch (headingLevel) {\\n @case (3) {\\n <h3 [class]=\\\"headingClass\\\">{{ headingText }}</h3>\\n }\\n @case (4) {\\n <h4 [class]=\\\"headingClass\\\">{{ headingText }}</h4>\\n }\\n @case (5) {\\n <h5 [class]=\\\"headingClass\\\">{{ headingText }}</h5>\\n }\\n @default {\\n <span [class]=\\\"'sky-radio-group-heading-text ' + headingClass\\\">{{\\n headingText\\n }}</span>\\n }\\n }\\n </span>\\n @if (required) {\\n <span class=\\\"sky-screen-reader-only\\\">{{\\n 'skyux_form_group_required' | skyLibResources\\n }}</span>\\n }\\n @if (helpPopoverContent || helpKey) {\\n <span class=\\\"sky-control-help-container\\\">\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"headingText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n </span>\\n }\\n </legend>\\n }\\n <div #hintTextEl=\\\"skyId\\\" skyId>\\n @if (hintText) {\\n <div\\n class=\\\"sky-radio-group-hint-text\\\"\\n [skyThemeClass]=\\\"{\\n 'sky-font-deemphasized': 'default',\\n 'sky-font-hint-text-s': 'modern'\\n }\\\"\\n >\\n {{ hintText }}\\n </div>\\n }\\n </div>\\n <div class=\\\"sky-radio-group-content\\\">\\n <ng-content />\\n </div>\\n</fieldset>\\n<sky-form-errors\\n [id]=\\\"errorId\\\"\\n [errors]=\\\"ngControl?.errors\\\"\\n [labelText]=\\\"headingText\\\"\\n [touched]=\\\"ngControl?.touched\\\"\\n [dirty]=\\\"ngControl?.dirty\\\"\\n>\\n <ng-content select=\\\"sky-form-error\\\" />\\n</sky-form-errors>\\n\", styles: [\".sky-radio-group:not(.sky-theme-modern *){--sky-override-radio-group-content-space: 8px;--sky-override-radio-group-content-with-hint-text-space: 10px;--sky-override-radio-group-hint-text-space: 5px}.sky-radio-group:not(.sky-theme-modern *) .sky-radio-group-legend .sky-radio-group-heading-text{line-height:1.1}:host.sky-field-group-stacked,:host.sky-form-field-stacked{display:block}.sky-radio-group-legend h3,.sky-radio-group-legend h4,.sky-radio-group-legend h5{margin:0;display:inline-block}.sky-radio-group:has(.sky-radio-group-legend:not(.sky-screen-reader-only)):not(:has(.sky-radio-group-hint-text)) .sky-radio-group-content{margin-top:var(--sky-override-radio-group-content-space, var(--sky-space-gap-form-s))}.sky-radio-group:has(.sky-radio-group-legend:not(.sky-screen-reader-only)) .sky-radio-group-hint-text{margin-top:var(--sky-override-radio-group-hint-text-space, var(--sky-space-gap-stacked_supplemental-s))}.sky-radio-group:has(.sky-radio-group-hint-text) .sky-radio-group-content{margin-top:var(--sky-override-radio-group-content-with-hint-text-space, var(--sky-space-gap-form-l))}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyRadioGroupIdService }, { type: i2.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }], propDecorators: { ariaLabelledBy: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], headingLevel: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], headingStyle: [{\n type: Input,\n args: [{ transform: numberAttribute4 }]\n }], name: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], value: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], headingText: [{\n type: Input\n }], headingHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hintText: [{\n type: Input\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], helpKey: [{\n type: Input\n }], radios: [{\n type: ContentChildren,\n args: [SkyRadioComponent, { descendants: true }]\n }], stackedLg: [{\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], stackedXL: [{\n type: HostBinding,\n args: ['class.sky-field-group-stacked']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFdBQVcsRUFDWCxLQUFLLEVBRUwsUUFBUSxFQUVSLElBQUksRUFFSixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7OztBQUt0RCxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckIsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLE9BQU8sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7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dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFOztzQkFHeEQsV0FBVzt1QkFBQyw4QkFBOEI7O3NCQUcxQyxXQUFXO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UsIFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZUNvbXBvbmVudENsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSYWRpb0NoYW5nZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tY2hhbmdlJztcbmltcG9ydCB7IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfSBmcm9tICcuL3R5cGVzL3JhZGlvLWdyb3VwLWhlYWRpbmctbGV2ZWwnO1xuaW1wb3J0IHsgU2t5UmFkaW9Hcm91cEhlYWRpbmdTdHlsZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tZ3JvdXAtaGVhZGluZy1zdHlsZSc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5mdW5jdGlvbiBudW1iZXJBdHRyaWJ1dGU0KHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHtcbiAgcmV0dXJuIG51bWJlckF0dHJpYnV0ZSh2YWx1ZSwgNCk7XG59XG5cbi8qKlxuICogT3JnYW5pemVzIHJhZGlvIGJ1dHRvbnMgaW50byBhIGdyb3VwLiBJdCBpcyByZXF1aXJlZCBmb3IgcmFkaW9cbiAqIGJ1dHRvbnMgb24gQW5ndWxhciByZWFjdGl2ZSBmb3JtcywgYW5kIHdlIHJlY29tbWVuZCB1c2luZyBpdCB3aXRoIGFsbCByYWRpbyBidXR0b25zLlxuICogT24gQW5ndWxhciBmb3JtcywgdGhlIGNvbXBvbmVudCBtYW5hZ2VzIHRoZSBzZWxlY3RlZCB2YWx1ZXMgYW5kIGtlZXBzIHRoZSBmb3JtcyB1cC10by1kYXRlLlxuICogV2hlbiB1c2VycyBzZWxlY3QgYSByYWRpbyBidXR0b24sIGl0cyB2YWx1ZSBpcyBkcml2ZW4gdGhyb3VnaCBhbiBgbmdNb2RlbGAgYXR0cmlidXRlIHRoYXQgeW91IHNwZWNpZnkgb24gdGhlIGBza3ktcmFkaW8tZ3JvdXBgIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yYWRpby1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVJhZGlvR3JvdXBJZFNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtTa3lUaGVtZUNvbXBvbmVudENsYXNzRGlyZWN0aXZlXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGhlYWRpbmdUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWxsZWRCeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2FyaWFMYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0dyb3VwQ29tcG9uZW50LmFyaWFMYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbGxlZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlXG4gICAqIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGhlYWRpbmdUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhTGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreVJhZGlvR3JvdXBDb21wb25lbnQuYXJpYUxhYmVsJywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBpbnB1dCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLiNfZGlzYWJsZWQgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uRGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlbWFudGljIGhlYWRpbmcgbGV2ZWwgaW4gdGhlIGRvY3VtZW50IHN0cnVjdHVyZS4gQnkgZGVmYXVsdCwgdGhlIGhlYWRpbmcgdGV4dCBpcyBub3Qgd3JhcHBlZCBpbiBhIGhlYWRpbmcgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgaGVhZGluZ0xldmVsKHZhbHVlOiBTa3lSYWRpb0dyb3VwSGVhZGluZ0xldmVsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2hlYWRpbmdMZXZlbCA9IHZhbHVlICYmICFpc05hTih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLiN1cGRhdGVTdGFja2VkQ2xhc3NlcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBoZWFkaW5nTGV2ZWwoKTogU2t5UmFkaW9Hcm91cEhlYWRpbmdMZXZlbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19oZWFkaW5nTGV2ZWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGhlYWRpbmcgW2ZvbnQgc3R5bGVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL3N0eWxlcy90eXBvZ3JhcGh5I2hlYWRpbmdzKS5cbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGU0IH0pXG4gIHB1YmxpYyBzZXQgaGVhZGluZ1N0eWxlKHZhbHVlOiBTa3lSYWRpb0dyb3VwSGVhZGluZ1N0eWxlKSB7XG4gICAgdGhpcy5oZWFkaW5nQ2xhc3MgPSBgc2t5LWZvbnQtaGVhZGluZy0ke3ZhbHVlfWA7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIHJhZGlvIGJ1dHRvbnMgdGhhdCB0aGUgY29tcG9uZW50IGdyb3VwcyB0b2dldGhlci5cbiAgICogVGhpcyBwcm9wZXJ0eSBvdmVyd3JpdGVzIHRoZSBkZXByZWNhdGVkIGBuYW1lYCBwcm9wZXJ0eSBvbiBpbmRpdmlkdWFsIGBza3ktcmFkaW9gIGVsZW1lbnRzLFxuICAgKiBhbmQgaXQgaXMgcmVxdWlyZWQgdW5sZXNzIHRoZSBgbmFtZWAgcHJvcGVydHkgaXMgc2V0IG9uIGluZGl2aWR1YWwgYHNreS1yYWRpb2AgZWxlbWVudHMuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19uYW1lID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19uYW1lID0gdGhpcy4jZGVmYXVsdE5hbWU7XG4gICAgfVxuICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX25hbWU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gdmFsaWRhdGlvbi5cbiAgICogV2hlbiB5b3Ugc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgLCB0aGUgY29tcG9uZW50IGFkZHMgYGFyaWEtcmVxdWlyZWRgIGFuZCBgcmVxdWlyZWRgXG4gICAqIGF0dHJpYnV0ZXMgdG8gdGhlIGlucHV0IGVsZW1lbnQgc28gdGhhdCBmb3JtcyBkaXNwbGF5IGFuIGludmFsaWQgc3RhdGUgdW50aWwgdGhlIGlucHV0IGVsZW1lbnRcbiAgICogaXMgY29tcGxldGUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtcmVxdWlyZWQpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gZ3JvdXAgaXMgc3RhY2tlZCBvbiBhbm90aGVyIGZvcm0gY29tcG9uZW50LiBXaGVuIHNwZWNpZmllZCxcbiAgICogdGhlIGFwcHJvcHJpYXRlIHZlcnRpY2FsIHNwYWNpbmcgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgc3RhY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19zdGFja2VkID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlU3RhY2tlZENsYXNzZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YWNrZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSByYWRpbyBidXR0b24gdG8gc2VsZWN0IGJ5IGRlZmF1bHQgd2hlbiB0aGUgZ3JvdXAgbG9hZHMuXG4gICAqIFRoZSB2YWx1ZSBjb3JyZXNwb25kcyB0byB0aGUgYHZhbHVlYCBwcm9wZXJ0eSBvZiBhbiBpbmRpdmlkdWFsIGBza3ktcmFkaW9gIGVsZW1lbnQgd2l0aGluIHRoZVxuICAgKiBncm91cC5cbiAgICovXG4gIC8vIFRPRE86IExvb2sgaW50byBtb3JlIHN0cm9uZ2x5IHR5cGluZyBpbiBhIGJyZWFraW5nIGNoYW5nZVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gdmFsdWUgIT09IHRoaXMuI2NvbnRyb2xWYWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGlzTmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2xWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jb25DaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy4jdXBkYXRlQ2hlY2tlZFJhZGlvRnJvbVZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBmb3IgYWxsIHRoZSByYWRpbyBidXR0b25zIGluIHRoZSBncm91cC4gSWYgdGhlIGluZGV4IGlzIG5vdCBkZWZpbmVkLFxuICAgKiB0aGUgaW5kaWNlcyBmb3IgaW5kaXZpZHVhbCByYWRpbyBidXR0b25zIGFyZSBzZXQgdG8gdGhlaXIgcG9zaXRpb25zIG9uIGxvYWQuXG4gICAqIFRoaXMgcHJvcGVydHkgc3VwcG9ydHMgYWNjZXNzaWJpbGl0eSBieSBwbGFjaW5nIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmFkaW9cbiAgICogYnV0dG9uLiBJZiBubyByYWRpbyBidXR0b24gaXMgc2VsZWN0ZWQsIGl0IHBsYWNlcyBmb2N1cyBvbiB0aGUgZmlyc3Qgb3IgbGFzdCBidXR0b25cbiAgICogZGVwZW5kaW5nIG9uIGhvdyB1c2VycyBuYXZpZ2F0ZSB0byB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuI190YWJJbmRleCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuI190YWJJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25UYWJJbmRleGVzKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIHJhZGlvIGdyb3VwJ3MgaGVhZGluZy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkaW5nVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBoaWRlIHRoZSBgaGVhZGluZ1RleHRgLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBoZWFkaW5nSGlkZGVuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBoZWFkaW5nVGV4dGAsIGEgW2hlbHAgaW5saW5lXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvaGVscC1pbmxpbmUpXG4gICAqIGJ1dHRvbiBpcyBhZGRlZCB0byByYWRpbyBncm91cC4gVGhlIGhlbHAgaW5saW5lIGJ1dHRvbiBkaXNwbGF5cyBhIFtwb3BvdmVyXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcG9wb3ZlcilcbiAgICogd2hlbiBjbGlja2VkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCBhbmQgb3B0aW9uYWwgdGl0bGUuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlYWRpbmdUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgcG9wb3Zlci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgaGVscFBvcG92ZXJDb250ZW50YCBpc1xuICAgKiBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlclRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkIGFsb25nIHdpdGggYGhlYWRpbmdUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIHBsYWNlZCBiZXNpZGUgdGhlIHJhZGlvIGdyb3VwIGhlYWRpbmcuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGhlYWRpbmdUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE91ciByYWRpbyBjb21wb25lbnRzIGFyZSB1c3VhbGx5IGltcGxlbWVudGVkIHVzaW5nIGFuIHVub3JkZXJlZCBsaXN0LiBUaGlzIGlzIGFuXG4gICAqIGFjY2Vzc2liaWxpdHkgdmlvbGF0aW9uIGJlY2F1c2UgdGhlIHVub3JkZXJlZCBsaXN0IGhhcyBhbiBpbXBsaWNpdCByb2xlIHdoaWNoXG4gICAqIGludGVycnVwdHMgdGhlICdyYWRpb2dyb3VwJyBhbmQgJ3JhZGlvJyByZWxhdGlvbnNoaXAuIFRvIGNvcnJlY3QgdGhpcywgd2UgY2FuIHNldCB0aGVcbiAgICogcmFkaW8gZ3JvdXAncyAnYXJpYS1vd25zJyBhdHRyaWJ1dGUgdG8gYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiByYWRpbyBJRHMuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1vd25zYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1vd25zKSwgYW5kIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgcmFkaW9gIHJvbGUsIHNlZSBbaXRzIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jcmFkaW8pLlxuICAgKi9cbiAgcHVibGljIGFyaWFPd25zOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lSYWRpb0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgcmFkaW9zOiBRdWVyeUxpc3Q8U2t5UmFkaW9Db21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LWZvcm0tZmllbGQtc3RhY2tlZCcpXG4gIHB1YmxpYyBzdGFja2VkTGcgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1maWVsZC1ncm91cC1zdGFja2VkJylcbiAgcHVibGljIHN0YWNrZWRYTCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5yZXF1aXJlZCB8fFxuICAgICAgKHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoZWFkaW5nQ2xhc3MgPSAnc2t5LWZvbnQtaGVhZGluZy00JztcblxuICAjY29udHJvbFZhbHVlOiBhbnk7XG5cbiAgI2RlZmF1bHROYW1lID0gYHNreS1yYWRpby1ncm91cC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAjX25hbWUgPSAnJztcblxuICAjX3RhYkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI19hcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2FyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI19oZWFkaW5nTGV2ZWw6IFNreVJhZGlvR3JvdXBIZWFkaW5nTGV2ZWwgfCB1bmRlZmluZWQ7XG5cbiAgI19zdGFja2VkID0gZmFsc2U7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3JhZGlvR3JvdXBJZFN2YzogU2t5UmFkaW9Hcm91cElkU2VydmljZTtcblxuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuICByZWFkb25seSAjaWRTZXJ2aWNlID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGVycm9ySWQgPSB0aGlzLiNpZFNlcnZpY2UuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJhZGlvR3JvdXBJZFN2YzogU2t5UmFkaW9Hcm91cElkU2VydmljZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjID0gcmFkaW9Hcm91cElkU3ZjO1xuICAgIHRoaXMubmdDb250cm9sID0gbmdDb250cm9sO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuI2RlZmF1bHROYW1lO1xuXG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjLnJhZGlvSWRzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpZHMpID0+IHtcbiAgICAgICAgdGhpcy5hcmlhT3ducyA9IGlkcy5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBMZXQgY2hpbGQgcmFkaW8gY29tcG9uZW50cyByZW5kZXIgYmVmb3JlIHVwZGF0aW5nLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jcmVzZXRSYWRpb0J1dHRvbnMoKTtcbiAgICB9KTtcblxuICAgIC8vIFdhdGNoIGZvciByYWRpbyBzZWxlY3Rpb25zLlxuICAgIHRoaXMud2F0Y2hGb3JTZWxlY3Rpb25zKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgY2hpbGQgcmFkaW8gY29tcG9uZW50cyB0byBmaW5pc2ggYW55IHJlbmRlcmluZyB1cGRhdGVzLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNyZXNldFJhZGlvQnV0dG9ucygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG5ldyByYWRpbyBidXR0b25zXG4gICAgICAgIHRoaXMud2F0Y2hGb3JTZWxlY3Rpb25zKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hGb3JTZWxlY3Rpb25zKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICByYWRpby5jaGFuZ2VcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlOiBTa3lSYWRpb0NoYW5nZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jb25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gY2hhbmdlLnZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICByYWRpby5ibHVyLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI29uVG91Y2hlZCgpO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGlzTmV3VmFsdWUgPSB2YWx1ZSAhPT0gdGhpcy4jY29udHJvbFZhbHVlO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXNOZXdWYWx1ZSkge1xuICAgICAgdGhpcy4jY29udHJvbFZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLiN1cGRhdGVDaGVja2VkUmFkaW9Gcm9tVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICN1cGRhdGVSYWRpb0J1dHRvbkRpc2FibGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+XG4gICAgICAgIHJhZGlvLnNldEdyb3VwRGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICByYWRpby5uYW1lID0gdGhpcy5uYW1lO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVJhZGlvQnV0dG9uVGFiSW5kZXhlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICAgIHJhZGlvLmdyb3VwVGFiSW5kZXggPSB0aGlzLnRhYkluZGV4O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmFkaW9zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgIHJhZGlvLmNoZWNrZWQgPSB0aGlzLiNjb250cm9sVmFsdWUgPT09IHJhZGlvLnZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgI3Jlc2V0UmFkaW9CdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTtcbiAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvblRhYkluZGV4ZXMoKTtcbiAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvbkRpc2FibGVkKCk7XG4gIH1cblxuICAjdXBkYXRlU3RhY2tlZENsYXNzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja2VkTGcgPSAhdGhpcy5oZWFkaW5nTGV2ZWwgJiYgdGhpcy5zdGFja2VkO1xuICAgIHRoaXMuc3RhY2tlZFhMID0gISF0aGlzLmhlYWRpbmdMZXZlbCAmJiB0aGlzLnN0YWNrZWQ7XG4gIH1cbn1cbiIsIjxmaWVsZHNldFxuICBjbGFzcz1cInNreS1yYWRpby1ncm91cFwiXG4gIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJoZWFkaW5nVGV4dCA/IHVuZGVmaW5lZCA6IGFyaWFMYWJlbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoZWFkaW5nVGV4dCA/IHVuZGVmaW5lZCA6IGFyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImlzUmVxdWlyZWQgPyB0cnVlIDogbnVsbFwiXG4gIFthdHRyLnJlcXVpcmVkXT1cImlzUmVxdWlyZWQgPyAnJyA6IG51bGxcIlxuICBbYXR0ci5hcmlhLWludmFsaWRdPVwiISFuZ0NvbnRyb2w/LmVycm9yc1wiXG4gIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgIGhlYWRpbmdUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICBcIlxuPlxuICBAaWYgKGhlYWRpbmdUZXh0KSB7XG4gICAgPGxlZ2VuZFxuICAgICAgY2xhc3M9XCJza3ktcmFkaW8tZ3JvdXAtbGVnZW5kXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBoZWFkaW5nSGlkZGVuXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJzogcmVxdWlyZWRcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIEBzd2l0Y2ggKGhlYWRpbmdMZXZlbCkge1xuICAgICAgICAgIEBjYXNlICgzKSB7XG4gICAgICAgICAgICA8aDMgW2NsYXNzXT1cImhlYWRpbmdDbGFzc1wiPnt7IGhlYWRpbmdUZXh0IH19PC9oMz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKDQpIHtcbiAgICAgICAgICAgIDxoNCBbY2xhc3NdPVwiaGVhZGluZ0NsYXNzXCI+e3sgaGVhZGluZ1RleHQgfX08L2g0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoNSkge1xuICAgICAgICAgICAgPGg1IFtjbGFzc109XCJoZWFkaW5nQ2xhc3NcIj57eyBoZWFkaW5nVGV4dCB9fTwvaDU+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInc2t5LXJhZGlvLWdyb3VwLWhlYWRpbmctdGV4dCAnICsgaGVhZGluZ0NsYXNzXCI+e3tcbiAgICAgICAgICAgICAgaGVhZGluZ1RleHRcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9zcGFuPlxuICAgICAgQGlmIChyZXF1aXJlZCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIj57e1xuICAgICAgICAgICdza3l1eF9mb3JtX2dyb3VwX3JlcXVpcmVkJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoaGVscFBvcG92ZXJDb250ZW50IHx8IGhlbHBLZXkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxza3ktaGVscC1pbmxpbmVcbiAgICAgICAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJoZWFkaW5nVGV4dFwiXG4gICAgICAgICAgICBbcG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvbGVnZW5kPlxuICB9XG4gIDxkaXYgI2hpbnRUZXh0RWw9XCJza3lJZFwiIHNreUlkPlxuICAgIEBpZiAoaGludFRleHQpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJza3ktcmFkaW8tZ3JvdXAtaGludC10ZXh0XCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1mb250LWhpbnQtdGV4dC1zJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIHt7IGhpbnRUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2t5LXJhZGlvLWdyb3VwLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2Rpdj5cbjwvZmllbGRzZXQ+XG48c2t5LWZvcm0tZXJyb3JzXG4gIFtpZF09XCJlcnJvcklkXCJcbiAgW2Vycm9yc109XCJuZ0NvbnRyb2w/LmVycm9yc1wiXG4gIFtsYWJlbFRleHRdPVwiaGVhZGluZ1RleHRcIlxuICBbdG91Y2hlZF09XCJuZ0NvbnRyb2w/LnRvdWNoZWRcIlxuICBbZGlydHldPVwibmdDb250cm9sPy5kaXJ0eVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19","import { Component, HostListener, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\n/**\n * Specifies a label for the radio button. To display a help button beside the label, include a help button element,\n * such as `sky-help-inline`, in the `sky-radio-label` element and a `sky-control-help` CSS class on that help button\n * element.\n * @deprecated Use `labelText` input on `sky-radio-component` instead.\n */\nexport class SkyRadioLabelComponent {\n // When clicking on a checkbox label, Angular registers two click events.\n // This handler ignores all events except for those that deal\n // with the checkbox input explicitly.\n onClick(event) {\n event.stopPropagation();\n }\n constructor() {\n inject(SkyLogService).deprecated('SkyToggleSwitchLabelComponent', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'To add a label to radio button, use the `labelText` input on the radio button component instead.',\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyRadioLabelComponent, isStandalone: false, selector: \"sky-radio-label\", host: { listeners: { \"click\": \"onClick($event)\" } }, ngImport: i0, template: \"<span class=\\\"sky-switch-label\\\"\\n ><span skyTrim><ng-content /></span\\n ><span class=\\\"sky-control-help-container\\\"\\n ><ng-content select=\\\".sky-control-help\\\" /></span\\n></span>\\n\", dependencies: [{ kind: \"directive\", type: i1.λ4, selector: \"[skyTrim]\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioLabelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-radio-label', standalone: false, template: \"<span class=\\\"sky-switch-label\\\"\\n ><span skyTrim><ng-content /></span\\n ><span class=\\\"sky-control-help-container\\\"\\n ><ng-content select=\\\".sky-control-help\\\" /></span\\n></span>\\n\" }]\n }], ctorParameters: () => [], propDecorators: { onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby1sYWJlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLWxhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFFNUM7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLHlFQUF5RTtJQUN6RSw2REFBNkQ7SUFDN0Qsc0NBQXNDO0lBRS9CLE9BQU8sQ0FBQyxLQUFpQjtRQUM5QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEO1FBQ0UsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsRUFBRTtZQUNoRSx1QkFBdUIsRUFBRSxFQUFFO1lBQzNCLHlCQUF5QixFQUN2QixrR0FBa0c7U0FDckcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FmVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpSUNkbkMsNExBS0E7OzRGRFNhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FFZixLQUFLOztzQkFNaEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBhIGxhYmVsIGZvciB0aGUgcmFkaW8gYnV0dG9uLiBUbyBkaXNwbGF5IGEgaGVscCBidXR0b24gYmVzaWRlIHRoZSBsYWJlbCwgaW5jbHVkZSBhIGhlbHAgYnV0dG9uIGVsZW1lbnQsXG4gKiBzdWNoIGFzIGBza3ktaGVscC1pbmxpbmVgLCBpbiB0aGUgYHNreS1yYWRpby1sYWJlbGAgZWxlbWVudCBhbmQgYSBgc2t5LWNvbnRyb2wtaGVscGAgQ1NTIGNsYXNzIG9uIHRoYXQgaGVscCBidXR0b25cbiAqIGVsZW1lbnQuXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGxhYmVsVGV4dGAgaW5wdXQgb24gYHNreS1yYWRpby1jb21wb25lbnRgIGluc3RlYWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yYWRpby1sYWJlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1sYWJlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0xhYmVsQ29tcG9uZW50IHtcbiAgLy8gV2hlbiBjbGlja2luZyBvbiBhIGNoZWNrYm94IGxhYmVsLCBBbmd1bGFyIHJlZ2lzdGVycyB0d28gY2xpY2sgZXZlbnRzLlxuICAvLyBUaGlzIGhhbmRsZXIgaWdub3JlcyBhbGwgZXZlbnRzIGV4Y2VwdCBmb3IgdGhvc2UgdGhhdCBkZWFsXG4gIC8vIHdpdGggdGhlIGNoZWNrYm94IGlucHV0IGV4cGxpY2l0bHkuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGluamVjdChTa3lMb2dTZXJ2aWNlKS5kZXByZWNhdGVkKCdTa3lUb2dnbGVTd2l0Y2hMYWJlbENvbXBvbmVudCcsIHtcbiAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiAxMCxcbiAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246XG4gICAgICAgICdUbyBhZGQgYSBsYWJlbCB0byByYWRpbyBidXR0b24sIHVzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgb24gdGhlIHJhZGlvIGJ1dHRvbiBjb21wb25lbnQgaW5zdGVhZC4nLFxuICAgIH0pO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInNreS1zd2l0Y2gtbGFiZWxcIlxuICA+PHNwYW4gc2t5VHJpbT48bmctY29udGVudCAvPjwvc3BhblxuICA+PHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiXG4gICAgPjxuZy1jb250ZW50IHNlbGVjdD1cIi5za3ktY29udHJvbC1oZWxwXCIgLz48L3NwYW5cbj48L3NwYW4+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\nimport { SkyRadioGroupComponent } from './radio-group.component';\nimport { SkyRadioLabelComponent } from './radio-label.component';\nimport { SkyRadioComponent } from './radio.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyRadioModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioModule, declarations: [SkyRadioComponent,\n SkyRadioGroupComponent,\n SkyRadioLabelComponent], imports: [CommonModule,\n FormsModule,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyFormsResourcesModule,\n SkyTrimModule,\n SkyThemeModule], exports: [SkyFormErrorModule,\n SkyRadioComponent,\n SkyRadioGroupComponent,\n SkyRadioLabelComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioModule, imports: [CommonModule,\n FormsModule,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyFormsResourcesModule,\n SkyTrimModule,\n SkyThemeModule, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRadioModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkyRadioComponent,\n SkyRadioGroupComponent,\n SkyRadioLabelComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyFormsResourcesModule,\n SkyTrimModule,\n SkyThemeModule,\n ],\n exports: [\n SkyFormErrorModule,\n SkyRadioComponent,\n SkyRadioGroupComponent,\n SkyRadioLabelComponent,\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUEyQnRELE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkF2QnZCLGlCQUFpQjtZQUNqQixzQkFBc0I7WUFDdEIsc0JBQXNCLGFBR3RCLFlBQVk7WUFDWixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLFdBQVc7WUFDWCx1QkFBdUI7WUFDdkIsYUFBYTtZQUNiLGNBQWMsYUFHZCxrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLHNCQUFzQjtZQUN0QixzQkFBc0I7Z0hBR2IsY0FBYyxZQWxCdkIsWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixhQUFhO1lBQ2IsV0FBVztZQUNYLHVCQUF1QjtZQUN2QixhQUFhO1lBQ2IsY0FBYyxFQUdkLGtCQUFrQjs7NEZBTVQsY0FBYztrQkF6QjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixXQUFXO3dCQUNYLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QixzQkFBc0I7cUJBQ3ZCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUlkTW9kdWxlLCBTa3lUcmltTW9kdWxlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SGVscElubGluZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9oZWxwLWlubGluZSc7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IubW9kdWxlJztcbmltcG9ydCB7IFNreUZvcm1FcnJvcnNNb2R1bGUgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLm1vZHVsZSc7XG5pbXBvcnQgeyBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktZm9ybXMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSYWRpb0xhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi9yYWRpby1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNreVJhZGlvQ29tcG9uZW50LFxuICAgIFNreVJhZGlvR3JvdXBDb21wb25lbnQsXG4gICAgU2t5UmFkaW9MYWJlbENvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JNb2R1bGUsXG4gICAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5Rm9ybXNSZXNvdXJjZXNNb2R1bGUsXG4gICAgU2t5VHJpbU1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNreUZvcm1FcnJvck1vZHVsZSxcbiAgICBTa3lSYWRpb0NvbXBvbmVudCxcbiAgICBTa3lSYWRpb0dyb3VwQ29tcG9uZW50LFxuICAgIFNreVJhZGlvTGFiZWxDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJhZGlvTW9kdWxlIHt9XG4iXX0=","import { Directive, Input, booleanAttribute, inject } from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\n/**\n * A host directive used to capture the \"required\" state of the host's form control.\n * @internal\n */\nexport class SkyRequiredStateDirective {\n constructor() {\n this.required = false;\n this.#ngControl = inject(NgControl, { optional: true, self: true });\n }\n /**\n * Whether the `required` attribute is set to `true`, or the control includes\n * the `Validators.required` validator.\n */\n isRequired() {\n return (this.required ||\n !!this.#ngControl?.control?.hasValidator(Validators.required));\n }\n #ngControl;\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRequiredStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"20.3.15\", type: SkyRequiredStateDirective, isStandalone: true, inputs: { required: [\"required\", \"required\", booleanAttribute] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyRequiredStateDirective, decorators: [{\n type: Directive,\n args: [{}]\n }], propDecorators: { required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yZXF1aXJlZC1zdGF0ZS9yZXF1aXJlZC1zdGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXZEOzs7R0FHRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFHUyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBYWYsZUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3pFO0lBWkM7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUTtZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVRLFVBQVUsQ0FBcUQ7K0dBZjdELHlCQUF5QjttR0FBekIseUJBQXlCLG1FQUNoQixnQkFBZ0I7OzRGQUR6Qix5QkFBeUI7a0JBRHJDLFNBQVM7bUJBQUMsRUFBRTs7c0JBRVYsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIEEgaG9zdCBkaXJlY3RpdmUgdXNlZCB0byBjYXB0dXJlIHRoZSBcInJlcXVpcmVkXCIgc3RhdGUgb2YgdGhlIGhvc3QncyBmb3JtIGNvbnRyb2wuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lSZXF1aXJlZFN0YXRlRGlyZWN0aXZlIHtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBgcmVxdWlyZWRgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHRydWVgLCBvciB0aGUgY29udHJvbCBpbmNsdWRlc1xuICAgKiB0aGUgYFZhbGlkYXRvcnMucmVxdWlyZWRgIHZhbGlkYXRvci5cbiAgICovXG4gIHB1YmxpYyBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnJlcXVpcmVkIHx8XG4gICAgICAhIXRoaXMuI25nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgKTtcbiAgfVxuXG4gIHJlYWRvbmx5ICNuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xufVxuIl19","import { Injectable, } from '@angular/core';\nimport { SkyMediaBreakpoints } from '@skyux/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nconst RESPONSIVE_CLASS_XS = 'sky-selection-box-container-xs';\nconst RESPONSIVE_CLASS_SM = 'sky-selection-box-container-sm';\nconst RESPONSIVE_CLASS_MD = 'sky-selection-box-container-md';\nconst RESPONSIVE_CLASS_LG = 'sky-selection-box-container-lg';\nconst BREAKPOINT_XS_MAX_PIXELS = 767;\nconst BREAKPOINT_SM_MIN_PIXELS = 768;\nconst BREAKPOINT_SM_MAX_PIXELS = 991;\nconst BREAKPOINT_MD_MIN_PIXELS = 992;\nconst BREAKPOINT_MD_MAX_PIXELS = 1439;\n/**\n * @internal\n */\nexport class SkySelectionBoxAdapterService {\n #coreAdapterService;\n #renderer;\n constructor(coreAdapterService, rendererFactory) {\n this.#coreAdapterService = coreAdapterService;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n /**\n * Sets focus on the specified element.\n */\n focus(el) {\n el.nativeElement.focus();\n }\n /**\n * Returns a child element with the `.sky-switch` class.\n * Useful for getting SKY UX-themed radio buttons or checkboxes.\n */\n getControl(el) {\n return el.nativeElement.querySelector('.sky-switch');\n }\n /**\n * Returns a breakpoint based on the width.\n * @param width Width of the element in pixels.\n */\n getBreakpointForWidth(width) {\n if (!width) {\n return SkyMediaBreakpoints.lg;\n }\n if (width <= BREAKPOINT_XS_MAX_PIXELS) {\n return SkyMediaBreakpoints.xs;\n }\n else if (width >= BREAKPOINT_SM_MIN_PIXELS &&\n width <= BREAKPOINT_SM_MAX_PIXELS) {\n return SkyMediaBreakpoints.sm;\n }\n else if (width >= BREAKPOINT_MD_MIN_PIXELS &&\n width <= BREAKPOINT_MD_MAX_PIXELS) {\n return SkyMediaBreakpoints.md;\n }\n else {\n return SkyMediaBreakpoints.lg;\n }\n }\n /**\n * Returns the width of the `parentNode` of the provided `element`.\n */\n getParentWidth(element) {\n return element.nativeElement?.parentElement?.getBoundingClientRect()?.width;\n }\n /**\n * Returns `true` if the `childEl` is a descendant of the `parentEl`.\n */\n isDescendant(parentEl, childEl) {\n return parentEl.nativeElement.contains(childEl);\n }\n /**\n * Sets the `tabIndex` of all focusable children of the `element` to the provided `tabIndex`.\n */\n setChildrenTabIndex(element, tabIndex) {\n const el = element.nativeElement;\n const focusableEls = this.#coreAdapterService.getFocusableChildren(el, {\n ignoreVisibility: true,\n });\n let index = focusableEls.length;\n while (index--) {\n focusableEls[index].tabIndex = tabIndex;\n }\n }\n /**\n * Adds a responsive CSS class on the provided element based on its current width.\n */\n setResponsiveClass(element, breakpoint) {\n const nativeEl = element.nativeElement;\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_XS);\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_SM);\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_MD);\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_LG);\n let newClass;\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = RESPONSIVE_CLASS_XS;\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = RESPONSIVE_CLASS_SM;\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = RESPONSIVE_CLASS_MD;\n break;\n }\n case SkyMediaBreakpoints.lg: {\n newClass = RESPONSIVE_CLASS_LG;\n break;\n }\n }\n this.#renderer.addClass(nativeEl, newClass);\n }\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n setTabIndex(element, tabIndex) {\n const el = element.nativeElement;\n el.tabIndex = tabIndex;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxAdapterService, deps: [{ token: i1.SkyCoreAdapterService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxAdapterService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxAdapterService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.SkyCoreAdapterService }, { type: i0.RendererFactory2 }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFFekUsTUFBTSxtQkFBbUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUM3RCxNQUFNLG1CQUFtQixHQUFHLGdDQUFnQyxDQUFDO0FBQzdELE1BQU0sbUJBQW1CLEdBQUcsZ0NBQWdDLENBQUM7QUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUU3RCxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUNyQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUNyQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUNyQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUNyQyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUV0Qzs7R0FFRztBQUVILE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsbUJBQW1CLENBQXdCO0lBQzNDLFNBQVMsQ0FBWTtJQUVyQixZQUNFLGtCQUF5QyxFQUN6QyxlQUFpQztRQUVqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsRUFBYztRQUN6QixFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFD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QUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVcsQ0FBQyxPQUFtQixFQUFFLFFBQWdCO1FBQ3RELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFakMsRUFBRSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQzsrR0FoSVUsNkJBQTZCO21IQUE3Qiw2QkFBNkI7OzRGQUE3Qiw2QkFBNkI7a0JBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLCBTa3lNZWRpYUJyZWFrcG9pbnRzIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5jb25zdCBSRVNQT05TSVZFX0NMQVNTX1hTID0gJ3NreS1zZWxlY3Rpb24tYm94LWNvbnRhaW5lci14cyc7XG5jb25zdCBSRVNQT05TSVZFX0NMQVNTX1NNID0gJ3NreS1zZWxlY3Rpb24tYm94LWNvbnRhaW5lci1zbSc7XG5jb25zdCBSRVNQT05TSVZFX0NMQVNTX01EID0gJ3NreS1zZWxlY3Rpb24tYm94LWNvbnRhaW5lci1tZCc7XG5jb25zdCBSRVNQT05TSVZFX0NMQVNTX0xHID0gJ3NreS1zZWxlY3Rpb24tYm94LWNvbnRhaW5lci1sZyc7XG5cbmNvbnN0IEJSRUFLUE9JTlRfWFNfTUFYX1BJWEVMUyA9IDc2NztcbmNvbnN0IEJSRUFLUE9JTlRfU01fTUlOX1BJWEVMUyA9IDc2ODtcbmNvbnN0IEJSRUFLUE9JTlRfU01fTUFYX1BJWEVMUyA9IDk5MTtcbmNvbnN0IEJSRUFLUE9JTlRfTURfTUlOX1BJWEVMUyA9IDk5MjtcbmNvbnN0IEJSRUFLUE9JTlRfTURfTUFYX1BJWEVMUyA9IDE0Mzk7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZSB7XG4gICNjb3JlQWRhcHRlclNlcnZpY2U6IFNreUNvcmVBZGFwdGVyU2VydmljZTtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICApIHtcbiAgICB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UgPSBjb3JlQWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGZvY3VzIG9uIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBmb2N1cyhlbDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIGVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2hpbGQgZWxlbWVudCB3aXRoIHRoZSBgLnNreS1zd2l0Y2hgIGNsYXNzLlxuICAgKiBVc2VmdWwgZm9yIGdldHRpbmcgU0tZIFVYLXRoZW1lZCByYWRpbyBidXR0b25zIG9yIGNoZWNrYm94ZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29udHJvbChlbDogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2t5LXN3aXRjaCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBicmVha3BvaW50IGJhc2VkIG9uIHRoZSB3aWR0aC5cbiAgICogQHBhcmFtIHdpZHRoIFdpZHRoIG9mIHRoZSBlbGVtZW50IGluIHBpeGVscy5cbiAgICovXG4gIHB1YmxpYyBnZXRCcmVha3BvaW50Rm9yV2lkdGgod2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZCk6IFNreU1lZGlhQnJlYWtwb2ludHMge1xuICAgIGlmICghd2lkdGgpIHtcbiAgICAgIHJldHVybiBTa3lNZWRpYUJyZWFrcG9pbnRzLmxnO1xuICAgIH1cblxuICAgIGlmICh3aWR0aCA8PSBCUkVBS1BPSU5UX1hTX01BWF9QSVhFTFMpIHtcbiAgICAgIHJldHVybiBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB3aWR0aCA+PSBCUkVBS1BPSU5UX1NNX01JTl9QSVhFTFMgJiZcbiAgICAgIHdpZHRoIDw9IEJSRUFLUE9JTlRfU01fTUFYX1BJWEVMU1xuICAgICkge1xuICAgICAgcmV0dXJuIFNreU1lZGlhQnJlYWtwb2ludHMuc207XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHdpZHRoID49IEJSRUFLUE9JTlRfTURfTUlOX1BJWEVMUyAmJlxuICAgICAgd2lkdGggPD0gQlJFQUtQT0lOVF9NRF9NQVhfUElYRUxTXG4gICAgKSB7XG4gICAgICByZXR1cm4gU2t5TWVkaWFCcmVha3BvaW50cy5tZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFNreU1lZGlhQnJlYWtwb2ludHMubGc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSBgcGFyZW50Tm9kZWAgb2YgdGhlIHByb3ZpZGVkIGBlbGVtZW50YC5cbiAgICovXG4gIHB1YmxpYyBnZXRQYXJlbnRXaWR0aChlbGVtZW50OiBFbGVtZW50UmVmKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkXG4gICAgKT8ucGFyZW50RWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/LndpZHRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBgY2hpbGRFbGAgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBgcGFyZW50RWxgLlxuICAgKi9cbiAgcHVibGljIGlzRGVzY2VuZGFudChwYXJlbnRFbDogRWxlbWVudFJlZiwgY2hpbGRFbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcGFyZW50RWwubmF0aXZlRWxlbWVudC5jb250YWlucyhjaGlsZEVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgdGFiSW5kZXhgIG9mIGFsbCBmb2N1c2FibGUgY2hpbGRyZW4gb2YgdGhlIGBlbGVtZW50YCB0byB0aGUgcHJvdmlkZWQgYHRhYkluZGV4YC5cbiAgICovXG4gIHB1YmxpYyBzZXRDaGlsZHJlblRhYkluZGV4KGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBmb2N1c2FibGVFbHMgPSB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oZWwsIHtcbiAgICAgIGlnbm9yZVZpc2liaWxpdHk6IHRydWUsXG4gICAgfSk7XG4gICAgbGV0IGluZGV4ID0gZm9jdXNhYmxlRWxzLmxlbmd0aDtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgZm9jdXNhYmxlRWxzW2luZGV4XS50YWJJbmRleCA9IHRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcmVzcG9uc2l2ZSBDU1MgY2xhc3Mgb24gdGhlIHByb3ZpZGVkIGVsZW1lbnQgYmFzZWQgb24gaXRzIGN1cnJlbnQgd2lkdGguXG4gICAqL1xuICBwdWJsaWMgc2V0UmVzcG9uc2l2ZUNsYXNzKFxuICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgYnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50cyxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbmF0aXZlRWw6IEhUTUxFbGVtZW50ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsIFJFU1BPTlNJVkVfQ0xBU1NfWFMpO1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCBSRVNQT05TSVZFX0NMQVNTX1NNKTtcbiAgICB0aGlzLiNyZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgUkVTUE9OU0lWRV9DTEFTU19NRCk7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsIFJFU1BPTlNJVkVfQ0xBU1NfTEcpO1xuXG4gICAgbGV0IG5ld0NsYXNzOiBzdHJpbmc7XG5cbiAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHtcbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy54czoge1xuICAgICAgICBuZXdDbGFzcyA9IFJFU1BPTlNJVkVfQ0xBU1NfWFM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtOiB7XG4gICAgICAgIG5ld0NsYXNzID0gUkVTUE9OU0lWRV9DTEFTU19TTTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMubWQ6IHtcbiAgICAgICAgbmV3Q2xhc3MgPSBSRVNQT05TSVZFX0NMQVNTX01EO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy5sZzoge1xuICAgICAgICBuZXdDbGFzcyA9IFJFU1BPTlNJVkVfQ0xBU1NfTEc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKG5hdGl2ZUVsLCBuZXdDbGFzcyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYHRhYkluZGV4YCBvZiB0aGUgYGVsZW1lbnRgIHRvIHRoZSBwcm92aWRlZCBgdGFiSW5kZXhgLlxuICAgKi9cbiAgcHVibGljIHNldFRhYkluZGV4KGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRhYkluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgIGVsLnRhYkluZGV4ID0gdGFiSW5kZXg7XG4gIH1cbn1cbiJdfQ==","import { Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Specifies the description to display in a selection box.\n */\nexport class SkySelectionBoxDescriptionComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkySelectionBoxDescriptionComponent, isStandalone: false, selector: \"sky-selection-box-description\", ngImport: i0, template: \"<ng-content />\\n\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxDescriptionComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-selection-box-description', standalone: false, template: \"<ng-content />\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxtQ0FBbUM7K0dBQW5DLG1DQUFtQzttR0FBbkMsbUNBQW1DLDBGQ1ZoRCxrQkFDQTs7NEZEU2EsbUNBQW1DO2tCQUwvQyxTQUFTOytCQUNFLCtCQUErQixjQUU3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBkZXNjcmlwdGlvbiB0byBkaXNwbGF5IGluIGEgc2VsZWN0aW9uIGJveC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXNlbGVjdGlvbi1ib3gtZGVzY3JpcHRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Cb3hEZXNjcmlwdGlvbkNvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRlbnQgLz5cbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./selection-box-adapter.service\";\nimport * as i2 from \"@angular/common\";\n/**\n * Creates a button to present users with a choice or question before proceeding with a one-time process.\n */\nexport class SkySelectionBoxComponent {\n /**\n * The radio button or checkbox to display in the selection box.\n * @required\n */\n set control(value) {\n this.#_control = value;\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#ngUnsubscribe = new Subject();\n if (value) {\n this.#updateCheckedOnControlChange();\n this.#updateDisabledState();\n }\n }\n get control() {\n return this.#_control;\n }\n set checked(value) {\n this.#_checked = value;\n this.#changeDetector.markForCheck();\n }\n get checked() {\n return this.#_checked;\n }\n set disabled(value) {\n if (this.selectionBoxEl) {\n this.#selectionBoxAdapterService.setTabIndex(this.selectionBoxEl, value ? -1 : 0);\n }\n this.#_disabled = value;\n this.#changeDetector.markForCheck();\n }\n get disabled() {\n return this.#_disabled;\n }\n set selectionBoxEl(value) {\n this.#_selectionBoxEl = value;\n if (value) {\n this.#selectionBoxAdapterService.setTabIndex(value, this.disabled ? -1 : 0);\n // Wait for child elements to render before overriding tabIndex values.\n // TODO: This logic is brittle since the checkbox/radio can set its own tab index\n // value at any time. We need a way to enforce the tab index for the entire lifespan of the component.\n setTimeout(() => {\n this.#selectionBoxAdapterService.setChildrenTabIndex(value, -1);\n });\n }\n }\n get selectionBoxEl() {\n return this.#_selectionBoxEl;\n }\n #ngUnsubscribe = new Subject();\n #_checked = false;\n #_control;\n #_disabled = false;\n #_selectionBoxEl;\n #changeDetector;\n #selectionBoxAdapterService;\n constructor(changeDetector, selectionBoxAdapterService) {\n this.#changeDetector = changeDetector;\n this.#selectionBoxAdapterService = selectionBoxAdapterService;\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n onKeydown(event) {\n /* istanbul ignore else */\n if (event.key === ' ') {\n this.#selectControl();\n event.preventDefault();\n }\n }\n #selectControl() {\n if (this.controlEl) {\n this.#selectionBoxAdapterService.getControl(this.controlEl).click();\n }\n if (this.selectionBoxEl) {\n this.#selectionBoxAdapterService.focus(this.selectionBoxEl);\n }\n }\n #updateCheckedOnControlChange() {\n /* istanbul ignore else */\n if (this.control) {\n this.control.checkedChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.checked = value;\n });\n }\n }\n #updateDisabledState() {\n /* istanbul ignore else */\n if (this.control) {\n this.control.disabledChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.disabled = value;\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkySelectionBoxAdapterService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkySelectionBoxComponent, isStandalone: false, selector: \"sky-selection-box\", inputs: { control: \"control\" }, viewQueries: [{ propertyName: \"controlEl\", first: true, predicate: [\"control\"], descendants: true, read: ElementRef }, { propertyName: \"selectionBoxEl\", first: true, predicate: [\"selectionBox\"], descendants: true, read: ElementRef }], ngImport: i0, template: \"<label\\n #selectionBox\\n class=\\\"sky-selection-box sky-rounded-corners sky-btn sky-btn-default\\\"\\n [attr.disabled]=\\\"disabled ? true : null\\\"\\n [ngClass]=\\\"{\\n 'sky-selection-box-selected': checked,\\n 'sky-selection-box-disabled': disabled\\n }\\\"\\n (keydown)=\\\"onKeydown($event)\\\"\\n>\\n <div\\n #icon\\n class=\\\"sky-selection-box-icon\\\"\\n [ngClass]=\\\"{\\n 'sky-selection-box-icon-hidden': !icon.innerHTML.trim()\\n }\\\"\\n >\\n <ng-content select=\\\"sky-icon\\\" />\\n </div>\\n\\n <div class=\\\"sky-selection-box-content\\\">\\n <div class=\\\"sky-selection-box-header sky-font-display-2\\\">\\n <ng-content select=\\\"sky-selection-box-header\\\" />\\n </div>\\n <div class=\\\"sky-selection-box-description sky-font-deemphasized\\\">\\n <ng-content select=\\\"sky-selection-box-description\\\" />\\n </div>\\n </div>\\n\\n <div #control class=\\\"sky-selection-box-control\\\">\\n <ng-content select=\\\"sky-radio\\\" />\\n <ng-content select=\\\"sky-checkbox\\\" />\\n </div>\\n</label>\\n\", styles: [\".sky-selection-box:not(.sky-theme-modern *){--sky-override-selection-box-background-hover: #ffffff;--sky-override-selection-box-background-selected: #f1eef6;--sky-override-selection-box-box-shadow: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-selection-box-box-shadow-hover: 0px 0px 5px 0 rgba(0, 0, 0, .3), inset 0 0 0 1px #00b4f1;--sky-override-selection-box-box-shadow-selected: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-selection-box-content-margin-right: 10px;--sky-override-selection-box-control-padding-top: 5px;--sky-override-selection-box-description-margin-top: 0;--sky-override-selection-box-header-padding-top: 3px;--sky-override-selection-box-icon-background: transparent;--sky-override-selection-box-icon-border-radius: 0;--sky-override-selection-box-icon-color: #0974a1;--sky-override-selection-box-icon-margin: 10px;--sky-override-selection-box-icon-size: 42px;--sky-override-selection-box-padding: 15px 15px 15px 15px;--sky-override-selection-box-switch-border-hover: solid 1px #00b4f1;--sky-override-selection-box-switch-control-outline-hover: auto;--sky-override-selection-box-switch-control-box-shadow-focus: none;--sky-override-selection-box-switch-control-border-focus: 1px solid #cdcfd2;--sky-override-selection-box-background-color-disabled: #eeeeef;--sky-override-selection-box-icon-color-disabled: #686c73;--sky-override-selection-box-icon-background-color-disabled: transparent;--sky-override-selection-box-header-color-disabled: var( --sky-text-color-default )}.sky-selection-box{display:flex;flex-flow:row nowrap;text-align:left}.sky-selection-box.sky-btn-default{padding:var(--sky-override-selection-box-padding, var(--sky-comp-selection_box-expanded-space-inset-top) var(--sky-comp-selection_box-expanded-space-inset-right) var(--sky-comp-selection_box-expanded-space-inset-bottom) var(--sky-comp-selection_box-expanded-space-inset-left))}.sky-selection-box.sky-btn-default:not(.sky-selection-box-disabled){box-shadow:var(--sky-override-selection-box-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-secondary-base))}.sky-selection-box.sky-btn-default:hover{background:var(--sky-override-selection-box-background-hover, var(--sky-color-background-action-secondary-hover));box-shadow:var(--sky-override-selection-box-box-shadow-hover, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-secondary-hover))}.sky-selection-box.sky-btn-default:hover .sky-switch-control{border:var(--sky-override-selection-box-switch-border-hover, solid var(--sky-border-width-action-hover) var(--sky-color-border-action-secondary-hover))}.sky-selection-box.sky-btn-default:hover.sky-selection-box-selected:not(:has(sky-radio)){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-action-secondary-hover));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-secondary-hover))}.sky-selection-box.sky-btn-default:active{background:var(--sky-color-background-action-secondary-active);box-shadow:inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-secondary-active)}.sky-selection-box.sky-btn-default:active .sky-switch-control{border:solid var(--sky-border-width-action-active) var(--sky-color-border-action-secondary-active)}.sky-selection-box.sky-btn-default:active.sky-selection-box-selected:not(:has(sky-radio)){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-action-secondary-active));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-secondary-active))}.sky-selection-box.sky-btn-default:focus-visible:not(:active){background:var(--sky-color-background-action-secondary-focus)}.sky-selection-box.sky-btn-default:focus-visible:not(:active) .sky-switch-control{outline:var(--sky-override-selection-box-switch-control-outline-hover, none);border:var(--sky-override-selection-box-switch-control-border-focus, none);box-shadow:var(--sky-override-selection-box-switch-control-box-shadow-focus, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-secondary-focus))}.sky-selection-box.sky-btn-default:focus-visible:not(:active) .sky-switch-control .sky-switch-input:not(:disabled):checked+.sky-switch-control{border:none}.sky-selection-box.sky-btn-default:focus-visible:not(:active).sky-selection-box-selected:not(:has(sky-radio)){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-action-secondary-focus));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-secondary-focus))}.sky-selection-box.sky-btn-default.sky-selection-box-selected:not(:active):not(:hover):not(:focus-visible),.sky-selection-box.sky-btn-default.sky-selection-box-selected:has(sky-radio){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-selected-soft));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-secondary-base))}.sky-selection-box.sky-selection-box-disabled{background:var(--sky-override-selection-box-background-color-disabled, var(--sky-color-background-action-secondary-disabled))}.sky-selection-box.sky-selection-box-disabled .sky-selection-box-header{color:var(--sky-override-selection-box-header-color-disabled, var(--sky-color-text-deemphasized))}.sky-selection-box.sky-selection-box-disabled .sky-selection-box-icon{color:var(--sky-override-selection-box-icon-color-disabled, var(--sky-color-icon-deemphasized));background:var(--sky-override-selection-box-icon-background-color-disabled, var(--sky-color-background-action-secondary-disabled))}.sky-selection-box .sky-selection-box-icon{background:var(--sky-override-selection-box-icon-background, var(--sky-color-background-icon_matte-action-soft));color:var(--sky-override-selection-box-icon-color, var(--sky-color-icon-action));margin:0 var(--sky-override-selection-box-icon-margin, var(--sky-space-inline-m)) 0 0;width:var(--sky-override-selection-box-icon-size, calc(var(--sky-size-icon-l) + var(--sky-space-inset-thumbnail_matte-xl) * 2));height:var(--sky-override-selection-box-icon-size, calc(var(--sky-size-icon-l) + var(--sky-space-inset-thumbnail_matte-xl) * 2));border-radius:var(--sky-override-selection-box-icon-border-radius, var(--sky-border-radius-round));display:flex;align-items:center;justify-content:center;flex:0 0 auto}.sky-selection-box .sky-selection-box-icon .sky-icon{font-size:24px!important}.sky-selection-box .sky-selection-box-icon.sky-selection-box-icon-hidden{display:none}.sky-selection-box .sky-selection-box-content{flex:1 1 auto;margin:0 var(--sky-override-selection-box-content-margin-right, var(--sky-space-inline-xl)) 0 0;white-space:initial}.sky-selection-box .sky-selection-box-header{padding-top:var(--sky-override-selection-box-header-padding-top, 0)}.sky-selection-box .sky-selection-box-control{flex:0 0 auto;padding-top:var(--sky-override-selection-box-control-padding-top, 0)}.sky-selection-box .sky-selection-box-description{margin-top:var(--sky-override-selection-box-description-margin-top, var(--sky-space-stacked-xs))}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-selection-box', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: \"<label\\n #selectionBox\\n class=\\\"sky-selection-box sky-rounded-corners sky-btn sky-btn-default\\\"\\n [attr.disabled]=\\\"disabled ? true : null\\\"\\n [ngClass]=\\\"{\\n 'sky-selection-box-selected': checked,\\n 'sky-selection-box-disabled': disabled\\n }\\\"\\n (keydown)=\\\"onKeydown($event)\\\"\\n>\\n <div\\n #icon\\n class=\\\"sky-selection-box-icon\\\"\\n [ngClass]=\\\"{\\n 'sky-selection-box-icon-hidden': !icon.innerHTML.trim()\\n }\\\"\\n >\\n <ng-content select=\\\"sky-icon\\\" />\\n </div>\\n\\n <div class=\\\"sky-selection-box-content\\\">\\n <div class=\\\"sky-selection-box-header sky-font-display-2\\\">\\n <ng-content select=\\\"sky-selection-box-header\\\" />\\n </div>\\n <div class=\\\"sky-selection-box-description sky-font-deemphasized\\\">\\n <ng-content select=\\\"sky-selection-box-description\\\" />\\n </div>\\n </div>\\n\\n <div #control class=\\\"sky-selection-box-control\\\">\\n <ng-content select=\\\"sky-radio\\\" />\\n <ng-content select=\\\"sky-checkbox\\\" />\\n </div>\\n</label>\\n\", styles: [\".sky-selection-box:not(.sky-theme-modern *){--sky-override-selection-box-background-hover: #ffffff;--sky-override-selection-box-background-selected: #f1eef6;--sky-override-selection-box-box-shadow: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-selection-box-box-shadow-hover: 0px 0px 5px 0 rgba(0, 0, 0, .3), inset 0 0 0 1px #00b4f1;--sky-override-selection-box-box-shadow-selected: 0 0 5px 0 rgba(0, 0, 0, .3);--sky-override-selection-box-content-margin-right: 10px;--sky-override-selection-box-control-padding-top: 5px;--sky-override-selection-box-description-margin-top: 0;--sky-override-selection-box-header-padding-top: 3px;--sky-override-selection-box-icon-background: transparent;--sky-override-selection-box-icon-border-radius: 0;--sky-override-selection-box-icon-color: #0974a1;--sky-override-selection-box-icon-margin: 10px;--sky-override-selection-box-icon-size: 42px;--sky-override-selection-box-padding: 15px 15px 15px 15px;--sky-override-selection-box-switch-border-hover: solid 1px #00b4f1;--sky-override-selection-box-switch-control-outline-hover: auto;--sky-override-selection-box-switch-control-box-shadow-focus: none;--sky-override-selection-box-switch-control-border-focus: 1px solid #cdcfd2;--sky-override-selection-box-background-color-disabled: #eeeeef;--sky-override-selection-box-icon-color-disabled: #686c73;--sky-override-selection-box-icon-background-color-disabled: transparent;--sky-override-selection-box-header-color-disabled: var( --sky-text-color-default )}.sky-selection-box{display:flex;flex-flow:row nowrap;text-align:left}.sky-selection-box.sky-btn-default{padding:var(--sky-override-selection-box-padding, var(--sky-comp-selection_box-expanded-space-inset-top) var(--sky-comp-selection_box-expanded-space-inset-right) var(--sky-comp-selection_box-expanded-space-inset-bottom) var(--sky-comp-selection_box-expanded-space-inset-left))}.sky-selection-box.sky-btn-default:not(.sky-selection-box-disabled){box-shadow:var(--sky-override-selection-box-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-secondary-base))}.sky-selection-box.sky-btn-default:hover{background:var(--sky-override-selection-box-background-hover, var(--sky-color-background-action-secondary-hover));box-shadow:var(--sky-override-selection-box-box-shadow-hover, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-secondary-hover))}.sky-selection-box.sky-btn-default:hover .sky-switch-control{border:var(--sky-override-selection-box-switch-border-hover, solid var(--sky-border-width-action-hover) var(--sky-color-border-action-secondary-hover))}.sky-selection-box.sky-btn-default:hover.sky-selection-box-selected:not(:has(sky-radio)){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-action-secondary-hover));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-secondary-hover))}.sky-selection-box.sky-btn-default:active{background:var(--sky-color-background-action-secondary-active);box-shadow:inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-secondary-active)}.sky-selection-box.sky-btn-default:active .sky-switch-control{border:solid var(--sky-border-width-action-active) var(--sky-color-border-action-secondary-active)}.sky-selection-box.sky-btn-default:active.sky-selection-box-selected:not(:has(sky-radio)){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-action-secondary-active));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-secondary-active))}.sky-selection-box.sky-btn-default:focus-visible:not(:active){background:var(--sky-color-background-action-secondary-focus)}.sky-selection-box.sky-btn-default:focus-visible:not(:active) .sky-switch-control{outline:var(--sky-override-selection-box-switch-control-outline-hover, none);border:var(--sky-override-selection-box-switch-control-border-focus, none);box-shadow:var(--sky-override-selection-box-switch-control-box-shadow-focus, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-secondary-focus))}.sky-selection-box.sky-btn-default:focus-visible:not(:active) .sky-switch-control .sky-switch-input:not(:disabled):checked+.sky-switch-control{border:none}.sky-selection-box.sky-btn-default:focus-visible:not(:active).sky-selection-box-selected:not(:has(sky-radio)){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-action-secondary-focus));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-secondary-focus))}.sky-selection-box.sky-btn-default.sky-selection-box-selected:not(:active):not(:hover):not(:focus-visible),.sky-selection-box.sky-btn-default.sky-selection-box-selected:has(sky-radio){background:var(--sky-override-selection-box-background-selected, var(--sky-color-background-selected-soft));box-shadow:var(--sky-override-selection-box-box-shadow-selected, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-secondary-base))}.sky-selection-box.sky-selection-box-disabled{background:var(--sky-override-selection-box-background-color-disabled, var(--sky-color-background-action-secondary-disabled))}.sky-selection-box.sky-selection-box-disabled .sky-selection-box-header{color:var(--sky-override-selection-box-header-color-disabled, var(--sky-color-text-deemphasized))}.sky-selection-box.sky-selection-box-disabled .sky-selection-box-icon{color:var(--sky-override-selection-box-icon-color-disabled, var(--sky-color-icon-deemphasized));background:var(--sky-override-selection-box-icon-background-color-disabled, var(--sky-color-background-action-secondary-disabled))}.sky-selection-box .sky-selection-box-icon{background:var(--sky-override-selection-box-icon-background, var(--sky-color-background-icon_matte-action-soft));color:var(--sky-override-selection-box-icon-color, var(--sky-color-icon-action));margin:0 var(--sky-override-selection-box-icon-margin, var(--sky-space-inline-m)) 0 0;width:var(--sky-override-selection-box-icon-size, calc(var(--sky-size-icon-l) + var(--sky-space-inset-thumbnail_matte-xl) * 2));height:var(--sky-override-selection-box-icon-size, calc(var(--sky-size-icon-l) + var(--sky-space-inset-thumbnail_matte-xl) * 2));border-radius:var(--sky-override-selection-box-icon-border-radius, var(--sky-border-radius-round));display:flex;align-items:center;justify-content:center;flex:0 0 auto}.sky-selection-box .sky-selection-box-icon .sky-icon{font-size:24px!important}.sky-selection-box .sky-selection-box-icon.sky-selection-box-icon-hidden{display:none}.sky-selection-box .sky-selection-box-content{flex:1 1 auto;margin:0 var(--sky-override-selection-box-content-margin-right, var(--sky-space-inline-xl)) 0 0;white-space:initial}.sky-selection-box .sky-selection-box-header{padding-top:var(--sky-override-selection-box-header-padding-top, 0)}.sky-selection-box .sky-selection-box-control{flex:0 0 auto;padding-top:var(--sky-override-selection-box-control-padding-top, 0)}.sky-selection-box .sky-selection-box-description{margin-top:var(--sky-override-selection-box-description-margin-top, var(--sky-space-stacked-xs))}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkySelectionBoxAdapterService }], propDecorators: { control: [{\n type: Input\n }], controlEl: [{\n type: ViewChild,\n args: ['control', {\n read: ElementRef,\n static: false,\n }]\n }], selectionBoxEl: [{\n type: ViewChild,\n args: ['selectionBox', {\n read: ElementRef,\n static: false,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFPM0M7O0dBRUc7QUFTSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DOzs7T0FHRztJQUNILElBQ1csT0FBTyxDQUNoQixLQUEyRDtRQUUzRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzFDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FB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LENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO2lCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztpQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDOytHQTlJVSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrTEFnRDNCLFVBQVUseUdBTVYsVUFBVSw2QkNwRnBCLDArQkFrQ0E7OzRGREphLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixLQUFLOztzQkFPaEIsS0FBSzs7c0JBMENMLFNBQVM7dUJBQUMsU0FBUyxFQUFFO3dCQUNwQixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLEtBQUs7cUJBQ2Q7O3NCQUdBLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsVUFBVTt3QkFDaEIsTUFBTSxFQUFFLEtBQUs7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuLi9yYWRpby9yYWRpby5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vc2VsZWN0aW9uLWJveC1hZGFwdGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBidXR0b24gdG8gcHJlc2VudCB1c2VycyB3aXRoIGEgY2hvaWNlIG9yIHF1ZXN0aW9uIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYSBvbmUtdGltZSBwcm9jZXNzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktc2VsZWN0aW9uLWJveCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdGlvbi1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGlvbi1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNlbGVjdGlvbkJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgcmFkaW8gYnV0dG9uIG9yIGNoZWNrYm94IHRvIGRpc3BsYXkgaW4gdGhlIHNlbGVjdGlvbiBib3guXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjb250cm9sKFxuICAgIHZhbHVlOiBTa3lDaGVja2JveENvbXBvbmVudCB8IFNreVJhZGlvQ29tcG9uZW50IHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLiNfY29udHJvbCA9IHZhbHVlO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRPbkNvbnRyb2xDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI3VwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRyb2woKTogU2t5Q2hlY2tib3hDb21wb25lbnQgfCBTa3lSYWRpb0NvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19jb250cm9sO1xuICB9XG5cbiAgcHVibGljIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy4jX2NoZWNrZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2NoZWNrZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQm94RWwpIHtcbiAgICAgIHRoaXMuI3NlbGVjdGlvbkJveEFkYXB0ZXJTZXJ2aWNlLnNldFRhYkluZGV4KFxuICAgICAgICB0aGlzLnNlbGVjdGlvbkJveEVsLFxuICAgICAgICB2YWx1ZSA/IC0xIDogMCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY29udHJvbCcsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICAgIHN0YXRpYzogZmFsc2UsXG4gIH0pXG4gIHB1YmxpYyBjb250cm9sRWw6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0aW9uQm94Jywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiBmYWxzZSxcbiAgfSlcbiAgcHVibGljIHNldCBzZWxlY3Rpb25Cb3hFbCh2YWx1ZTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWxlY3Rpb25Cb3hFbCA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jc2VsZWN0aW9uQm94QWRhcHRlclNlcnZpY2Uuc2V0VGFiSW5kZXgoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRpc2FibGVkID8gLTEgOiAwLFxuICAgICAgKTtcblxuICAgICAgLy8gV2FpdCBmb3IgY2hpbGQgZWxlbWVudHMgdG8gcmVuZGVyIGJlZm9yZSBvdmVycmlkaW5nIHRhYkluZGV4IHZhbHVlcy5cbiAgICAgIC8vIFRPRE86IFRoaXMgbG9naWMgaXMgYnJpdHRsZSBzaW5jZSB0aGUgY2hlY2tib3gvcmFkaW8gY2FuIHNldCBpdHMgb3duIHRhYiBpbmRleFxuICAgICAgLy8gdmFsdWUgYXQgYW55IHRpbWUuIFdlIG5lZWQgYSB3YXkgdG8gZW5mb3JjZSB0aGUgdGFiIGluZGV4IGZvciB0aGUgZW50aXJlIGxpZmVzcGFuIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy4jc2VsZWN0aW9uQm94QWRhcHRlclNlcnZpY2Uuc2V0Q2hpbGRyZW5UYWJJbmRleCh2YWx1ZSwgLTEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3Rpb25Cb3hFbCgpOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdGlvbkJveEVsO1xuICB9XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfY2hlY2tlZCA9IGZhbHNlO1xuXG4gICNfY29udHJvbDogU2t5Q2hlY2tib3hDb21wb25lbnQgfCBTa3lSYWRpb0NvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI19zZWxlY3Rpb25Cb3hFbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjc2VsZWN0aW9uQm94QWRhcHRlclNlcnZpY2U6IFNreVNlbGVjdGlvbkJveEFkYXB0ZXJTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBzZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZTogU2t5U2VsZWN0aW9uQm94QWRhcHRlclNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jc2VsZWN0aW9uQm94QWRhcHRlclNlcnZpY2UgPSBzZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIHRoaXMuI3NlbGVjdENvbnRyb2woKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgI3NlbGVjdENvbnRyb2woKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udHJvbEVsKSB7XG4gICAgICB0aGlzLiNzZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZS5nZXRDb250cm9sKHRoaXMuY29udHJvbEVsKS5jbGljaygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbkJveEVsKSB7XG4gICAgICB0aGlzLiNzZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZS5mb2N1cyh0aGlzLnNlbGVjdGlvbkJveEVsKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQ2hlY2tlZE9uQ29udHJvbENoYW5nZSgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC5jaGVja2VkQ2hhbmdlXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZURpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZWRDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8bGFiZWxcbiAgI3NlbGVjdGlvbkJveFxuICBjbGFzcz1cInNreS1zZWxlY3Rpb24tYm94IHNreS1yb3VuZGVkLWNvcm5lcnMgc2t5LWJ0biBza3ktYnRuLWRlZmF1bHRcIlxuICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktc2VsZWN0aW9uLWJveC1zZWxlY3RlZCc6IGNoZWNrZWQsXG4gICAgJ3NreS1zZWxlY3Rpb24tYm94LWRpc2FibGVkJzogZGlzYWJsZWRcbiAgfVwiXG4gIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCJcbj5cbiAgPGRpdlxuICAgICNpY29uXG4gICAgY2xhc3M9XCJza3ktc2VsZWN0aW9uLWJveC1pY29uXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXNlbGVjdGlvbi1ib3gtaWNvbi1oaWRkZW4nOiAhaWNvbi5pbm5lckhUTUwudHJpbSgpXG4gICAgfVwiXG4gID5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktaWNvblwiIC8+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJza3ktc2VsZWN0aW9uLWJveC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInNreS1zZWxlY3Rpb24tYm94LWhlYWRlciBza3ktZm9udC1kaXNwbGF5LTJcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1zZWxlY3Rpb24tYm94LWhlYWRlclwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS1zZWxlY3Rpb24tYm94LWRlc2NyaXB0aW9uIHNreS1mb250LWRlZW1waGFzaXplZFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LXNlbGVjdGlvbi1ib3gtZGVzY3JpcHRpb25cIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICNjb250cm9sIGNsYXNzPVwic2t5LXNlbGVjdGlvbi1ib3gtY29udHJvbFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1yYWRpb1wiIC8+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWNoZWNrYm94XCIgLz5cbiAgPC9kaXY+XG48L2xhYmVsPlxuIl19","import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, HostListener, Input, Optional, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkySelectionBoxComponent } from './selection-box.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"./selection-box-adapter.service\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nconst SKY_SELECTION_BOX_CLASS_NAME = '.sky-selection-box';\n/**\n * Creates a grid layout for an array of selection boxes.\n */\nexport class SkySelectionBoxGridComponent {\n /**\n * @internal\n * How to display the selection boxes in the grid.\n * @default 'center'\n */\n set alignItems(value) {\n if (value) {\n this.#_alignItems = value;\n }\n else {\n this.#_alignItems = 'center';\n }\n }\n get alignItems() {\n return this.#_alignItems;\n }\n set containerElementRef(value) {\n this.#_containerElementRef = value;\n this.#destroyMutationObserver();\n if (value) {\n this.#updateBreakpointClass();\n this.#initMutationObserver();\n }\n }\n get containerElementRef() {\n return this.#_containerElementRef;\n }\n #mutationObserver;\n #ngUnsubscribe = new Subject();\n #_alignItems = 'center';\n #_containerElementRef;\n #coreAdapterService;\n #selectionBoxAdapter;\n #hostElRef;\n #mutationObserverSvc;\n #ngZone;\n #themeSvc;\n constructor(coreAdapterService, selectionBoxAdapter, hostElRef, mutationObserverSvc, ngZone, themeSvc) {\n this.#coreAdapterService = coreAdapterService;\n this.#selectionBoxAdapter = selectionBoxAdapter;\n this.#hostElRef = hostElRef;\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#ngZone = ngZone;\n this.#themeSvc = themeSvc;\n }\n ngOnInit() {\n /* istanbul ignore else */\n if (this.#themeSvc) {\n this.#themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#updateBreakpointClass();\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#destroyMutationObserver();\n }\n onWindowResize() {\n this.#updateBreakpointClass();\n }\n #initMutationObserver() {\n /* istanbul ignore else */\n if (!this.#mutationObserver && this.containerElementRef) {\n const el = this.containerElementRef.nativeElement;\n // MutationObserver is patched by Zone.js and therefore becomes part of the\n // Angular change detection cycle, but this can lead to infinite loops in some\n // scenarios. This will keep MutationObserver from triggering change detection.\n this.#ngZone.runOutsideAngular(() => {\n this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n this.#updateChildrenHeights();\n });\n this.#mutationObserver.observe(el, {\n characterData: true,\n subtree: true,\n });\n });\n }\n }\n #destroyMutationObserver() {\n /* istanbul ignore else */\n if (this.#mutationObserver) {\n this.#mutationObserver.disconnect();\n this.#mutationObserver = undefined;\n }\n }\n #updateBreakpointClass() {\n const parentWidth = this.#selectionBoxAdapter.getParentWidth(this.#hostElRef);\n if (this.containerElementRef) {\n this.#selectionBoxAdapter.setResponsiveClass(this.containerElementRef, this.#selectionBoxAdapter.getBreakpointForWidth(parentWidth));\n }\n this.#updateChildrenHeights();\n }\n #updateChildrenHeights() {\n if (this.containerElementRef) {\n this.#coreAdapterService.resetHeight(this.containerElementRef, SKY_SELECTION_BOX_CLASS_NAME);\n this.#coreAdapterService.syncMaxHeight(this.containerElementRef, SKY_SELECTION_BOX_CLASS_NAME);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxGridComponent, deps: [{ token: i1.SkyCoreAdapterService }, { token: i2.SkySelectionBoxAdapterService }, { token: i0.ElementRef }, { token: i1.SkyMutationObserverService }, { token: i0.NgZone }, { token: i3.SkyThemeService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkySelectionBoxGridComponent, isStandalone: false, selector: \"sky-selection-box-grid\", inputs: { alignItems: \"alignItems\" }, host: { listeners: { \"window:resize\": \"onWindowResize()\" } }, queries: [{ propertyName: \"selectionBoxes\", predicate: SkySelectionBoxComponent, read: SkySelectionBoxComponent }], viewQueries: [{ propertyName: \"containerElementRef\", first: true, predicate: [\"container\"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: \"<div\\n #container\\n class=\\\"sky-selection-box-grid\\\"\\n [ngClass]=\\\"'sky-selection-box-grid-align-' + alignItems\\\"\\n>\\n <ng-content select=\\\"sky-selection-box\\\" />\\n</div>\\n\", styles: [\".sky-selection-box-grid:not(.sky-theme-modern *){--sky-override-selection-box-grid-margin-bottom: -15px;--sky-override-selection-box-grid-padding-horizontal: 7.5px;--sky-override-selection-box-margin-horizontal: 7.5px;--sky-override-selection-box-margin-bottom: 15px;--sky-override-selection-box-padding-responsive: 15px 15px 15px 15px;--sky-override-selection-box-header-heading-2-font-size: 26px;--sky-override-selection-box-header-heading-2-font-weight: 300;--sky-override-selection-box-header-heading-2-line-height: calc(20 / 14);--sky-override-selection-box-header-heading-3-color-no-icon: var( --sky-text-color-deemphasized );--sky-override-selection-box-header-heading-3-font-family: BLKB Sans Condensed, Helvetica Neue Condensed, Arial Narrow;--sky-override-selection-box-header-heading-3-font-family-no-icon: BLKB Sans, Helvetica Neue, Arial, sans-serif;--sky-override-selection-box-header-heading-3-font-size: 20px;--sky-override-selection-box-header-heading-3-font-size-no-icon: 19px;--sky-override-selection-box-header-heading-3-font-size-no-icon-sm: 20px;--sky-override-selection-box-header-heading-3-font-weight: 400;--sky-override-selection-box-header-heading-3-font-weight-no-icon: 300;--sky-override-selection-box-header-heading-3-font-weight-no-icon-sm: 400;--sky-override-selection-box-header-heading-3-line-height: calc(20 / 14)}:host{display:block}.sky-selection-box-grid{display:flex;flex-flow:row wrap;padding:0 var(--sky-override-selection-box-grid-padding-horizontal, calc(var(--sky-space-gap-action_group-l) / 2));margin:0 auto var(--sky-override-selection-box-grid-margin-bottom, calc(var(--sky-space-stacked-m) * -1))}.sky-selection-box-grid.sky-selection-box-grid-align-center{justify-content:center}.sky-selection-box-grid.sky-selection-box-grid-align-left{justify-content:flex-start}.sky-selection-box-grid>sky-selection-box{margin:0 var(--sky-override-selection-box-margin-horizontal, calc(var(--sky-space-gap-action_group-l) / 2)) var(--sky-override-selection-box-margin-bottom, var(--sky-space-stacked-m));height:100%}.sky-selection-box-grid.sky-selection-box-container-xs{max-width:374px}.sky-selection-box-grid.sky-selection-box-container-xs>sky-selection-box{flex:0 1 344px}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box{padding:var(--sky-override-selection-box-padding-responsive, var(--sky-comp-selection_box-collapsed-space-inset-top) var(--sky-comp-selection_box-collapsed-space-inset-right) var(--sky-comp-selection_box-collapsed-space-inset-bottom) var(--sky-comp-selection_box-collapsed-space-inset-left))}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box .sky-selection-box-icon{display:none}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box .sky-selection-box-header{font-family:var(--sky-override-selection-box-header-heading-3-font-family, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon-sm, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon-sm, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-sm{max-width:733px}.sky-selection-box-grid.sky-selection-box-container-sm>sky-selection-box{flex:0 1 344px}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box{padding:var(--sky-override-selection-box-padding-responsive, var(--sky-comp-selection_box-expanded-space-inset-top) var(--sky-comp-selection_box-expanded-space-inset-right) var(--sky-comp-selection_box-expanded-space-inset-bottom) var(--sky-comp-selection_box-expanded-space-inset-left))}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box .sky-selection-box-icon{display:none}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box .sky-selection-box-header{font-family:var(--sky-override-selection-box-header-heading-3-font-family, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon-sm, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon-sm, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-md{max-width:937px}.sky-selection-box-grid.sky-selection-box-container-md>sky-selection-box{flex:0 1 446px}.sky-selection-box-grid.sky-selection-box-container-md .sky-selection-box .sky-selection-box-header{font-size:var(--sky-override-selection-box-header-heading-2-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-2-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-2-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-md .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-lg{max-width:1398px}.sky-selection-box-grid.sky-selection-box-container-lg>sky-selection-box{flex:0 1 446px}.sky-selection-box-grid.sky-selection-box-container-lg .sky-selection-box .sky-selection-box-header{font-size:var(--sky-override-selection-box-header-heading-2-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-2-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-2-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-lg .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxGridComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-selection-box-grid', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: false, template: \"<div\\n #container\\n class=\\\"sky-selection-box-grid\\\"\\n [ngClass]=\\\"'sky-selection-box-grid-align-' + alignItems\\\"\\n>\\n <ng-content select=\\\"sky-selection-box\\\" />\\n</div>\\n\", styles: [\".sky-selection-box-grid:not(.sky-theme-modern *){--sky-override-selection-box-grid-margin-bottom: -15px;--sky-override-selection-box-grid-padding-horizontal: 7.5px;--sky-override-selection-box-margin-horizontal: 7.5px;--sky-override-selection-box-margin-bottom: 15px;--sky-override-selection-box-padding-responsive: 15px 15px 15px 15px;--sky-override-selection-box-header-heading-2-font-size: 26px;--sky-override-selection-box-header-heading-2-font-weight: 300;--sky-override-selection-box-header-heading-2-line-height: calc(20 / 14);--sky-override-selection-box-header-heading-3-color-no-icon: var( --sky-text-color-deemphasized );--sky-override-selection-box-header-heading-3-font-family: BLKB Sans Condensed, Helvetica Neue Condensed, Arial Narrow;--sky-override-selection-box-header-heading-3-font-family-no-icon: BLKB Sans, Helvetica Neue, Arial, sans-serif;--sky-override-selection-box-header-heading-3-font-size: 20px;--sky-override-selection-box-header-heading-3-font-size-no-icon: 19px;--sky-override-selection-box-header-heading-3-font-size-no-icon-sm: 20px;--sky-override-selection-box-header-heading-3-font-weight: 400;--sky-override-selection-box-header-heading-3-font-weight-no-icon: 300;--sky-override-selection-box-header-heading-3-font-weight-no-icon-sm: 400;--sky-override-selection-box-header-heading-3-line-height: calc(20 / 14)}:host{display:block}.sky-selection-box-grid{display:flex;flex-flow:row wrap;padding:0 var(--sky-override-selection-box-grid-padding-horizontal, calc(var(--sky-space-gap-action_group-l) / 2));margin:0 auto var(--sky-override-selection-box-grid-margin-bottom, calc(var(--sky-space-stacked-m) * -1))}.sky-selection-box-grid.sky-selection-box-grid-align-center{justify-content:center}.sky-selection-box-grid.sky-selection-box-grid-align-left{justify-content:flex-start}.sky-selection-box-grid>sky-selection-box{margin:0 var(--sky-override-selection-box-margin-horizontal, calc(var(--sky-space-gap-action_group-l) / 2)) var(--sky-override-selection-box-margin-bottom, var(--sky-space-stacked-m));height:100%}.sky-selection-box-grid.sky-selection-box-container-xs{max-width:374px}.sky-selection-box-grid.sky-selection-box-container-xs>sky-selection-box{flex:0 1 344px}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box{padding:var(--sky-override-selection-box-padding-responsive, var(--sky-comp-selection_box-collapsed-space-inset-top) var(--sky-comp-selection_box-collapsed-space-inset-right) var(--sky-comp-selection_box-collapsed-space-inset-bottom) var(--sky-comp-selection_box-collapsed-space-inset-left))}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box .sky-selection-box-icon{display:none}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box .sky-selection-box-header{font-family:var(--sky-override-selection-box-header-heading-3-font-family, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-xs .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon-sm, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon-sm, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-sm{max-width:733px}.sky-selection-box-grid.sky-selection-box-container-sm>sky-selection-box{flex:0 1 344px}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box{padding:var(--sky-override-selection-box-padding-responsive, var(--sky-comp-selection_box-expanded-space-inset-top) var(--sky-comp-selection_box-expanded-space-inset-right) var(--sky-comp-selection_box-expanded-space-inset-bottom) var(--sky-comp-selection_box-expanded-space-inset-left))}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box .sky-selection-box-icon{display:none}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box .sky-selection-box-header{font-family:var(--sky-override-selection-box-header-heading-3-font-family, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-sm .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon-sm, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon-sm, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-md{max-width:937px}.sky-selection-box-grid.sky-selection-box-container-md>sky-selection-box{flex:0 1 446px}.sky-selection-box-grid.sky-selection-box-container-md .sky-selection-box .sky-selection-box-header{font-size:var(--sky-override-selection-box-header-heading-2-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-2-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-2-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-md .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-lg{max-width:1398px}.sky-selection-box-grid.sky-selection-box-container-lg>sky-selection-box{flex:0 1 446px}.sky-selection-box-grid.sky-selection-box-container-lg .sky-selection-box .sky-selection-box-header{font-size:var(--sky-override-selection-box-header-heading-2-font-size, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-2-font-weight, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-2-line-height, var(--sky-font-line_height-display-2))}.sky-selection-box-grid.sky-selection-box-container-lg .sky-selection-box .sky-selection-box-icon-hidden+.sky-selection-box-content .sky-selection-box-header{color:var(--sky-override-selection-box-header-heading-3-color-no-icon, var(--sky-color-text-default));font-family:var(--sky-override-selection-box-header-heading-3-font-family-no-icon, var(--sky-font-family-primary));font-size:var(--sky-override-selection-box-header-heading-3-font-size-no-icon, var(--sky-font-size-display-2));font-weight:var(--sky-override-selection-box-header-heading-3-font-weight-no-icon, var(--sky-font-style-display-2));line-height:var(--sky-override-selection-box-header-heading-3-line-height, var(--sky-font-line_height-display-2))}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyCoreAdapterService }, { type: i2.SkySelectionBoxAdapterService }, { type: i0.ElementRef }, { type: i1.SkyMutationObserverService }, { type: i0.NgZone }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }], propDecorators: { alignItems: [{\n type: Input\n }], selectionBoxes: [{\n type: ContentChildren,\n args: [SkySelectionBoxComponent, {\n read: SkySelectionBoxComponent,\n }]\n }], containerElementRef: [{\n type: ViewChild,\n args: ['container', {\n read: ElementRef,\n static: true,\n }]\n }], onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvc2VsZWN0aW9uLWJveC9zZWxlY3Rpb24tYm94LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9zZWxlY3Rpb24tYm94L3NlbGVjdGlvbi1ib3gtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUVSLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQUdyRSxNQUFNLDRCQUE0QixHQUFHLG9CQUFvQixDQUFDO0FBRTFEOztHQUVHO0FBU0gsTUFBTSxPQUFPLDRCQUE0QjtJQUN2Qzs7OztPQUlHO0lBQ0gsSUFDVyxVQUFVLENBQUMsS0FBb0Q7UUFDeEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFPRCxJQUlX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QUFDLFdBQVcsRUFBRTt3QkFDdEIsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiOztzQkErREEsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSwgU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbkJveEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24tYm94LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdGlvbi1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IFNreVNlbGVjdGlvbkJveEdyaWRBbGlnbkl0ZW1zVHlwZSB9IGZyb20gJy4vdHlwZXMvc2VsZWN0aW9uLWJveC1ncmlkLWFsaWduLWl0ZW1zLXR5cGUnO1xuXG5jb25zdCBTS1lfU0VMRUNUSU9OX0JPWF9DTEFTU19OQU1FID0gJy5za3ktc2VsZWN0aW9uLWJveCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGdyaWQgbGF5b3V0IGZvciBhbiBhcnJheSBvZiBzZWxlY3Rpb24gYm94ZXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1zZWxlY3Rpb24tYm94LWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0aW9uLWJveC1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0aW9uLWJveC1ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VsZWN0aW9uQm94R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBIb3cgdG8gZGlzcGxheSB0aGUgc2VsZWN0aW9uIGJveGVzIGluIHRoZSBncmlkLlxuICAgKiBAZGVmYXVsdCAnY2VudGVyJ1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGlnbkl0ZW1zKHZhbHVlOiBTa3lTZWxlY3Rpb25Cb3hHcmlkQWxpZ25JdGVtc1R5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19hbGlnbkl0ZW1zID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19hbGlnbkl0ZW1zID0gJ2NlbnRlcic7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhbGlnbkl0ZW1zKCk6IFNreVNlbGVjdGlvbkJveEdyaWRBbGlnbkl0ZW1zVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19hbGlnbkl0ZW1zO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lTZWxlY3Rpb25Cb3hDb21wb25lbnQsIHtcbiAgICByZWFkOiBTa3lTZWxlY3Rpb25Cb3hDb21wb25lbnQsXG4gIH0pXG4gIHB1YmxpYyBzZWxlY3Rpb25Cb3hlczogUXVlcnlMaXN0PFNreVNlbGVjdGlvbkJveENvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2V0IGNvbnRhaW5lckVsZW1lbnRSZWYodmFsdWU6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfY29udGFpbmVyRWxlbWVudFJlZiA9IHZhbHVlO1xuICAgIHRoaXMuI2Rlc3Ryb3lNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50Q2xhc3MoKTtcbiAgICAgIHRoaXMuI2luaXRNdXRhdGlvbk9ic2VydmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjb250YWluZXJFbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfY29udGFpbmVyRWxlbWVudFJlZjtcbiAgfVxuXG4gICNtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2FsaWduSXRlbXM6IFNreVNlbGVjdGlvbkJveEdyaWRBbGlnbkl0ZW1zVHlwZSA9ICdjZW50ZXInO1xuXG4gICNfY29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gICNzZWxlY3Rpb25Cb3hBZGFwdGVyOiBTa3lTZWxlY3Rpb25Cb3hBZGFwdGVyU2VydmljZTtcbiAgI2hvc3RFbFJlZjogRWxlbWVudFJlZjtcbiAgI211dGF0aW9uT2JzZXJ2ZXJTdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlO1xuICAjbmdab25lOiBOZ1pvbmU7XG4gICN0aGVtZVN2YzogU2t5VGhlbWVTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvcmVBZGFwdGVyU2VydmljZTogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHNlbGVjdGlvbkJveEFkYXB0ZXI6IFNreVNlbGVjdGlvbkJveEFkYXB0ZXJTZXJ2aWNlLFxuICAgIGhvc3RFbFJlZjogRWxlbWVudFJlZixcbiAgICBtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlID0gY29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI3NlbGVjdGlvbkJveEFkYXB0ZXIgPSBzZWxlY3Rpb25Cb3hBZGFwdGVyO1xuICAgIHRoaXMuI2hvc3RFbFJlZiA9IGhvc3RFbFJlZjtcbiAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjID0gbXV0YXRpb25PYnNlcnZlclN2YztcbiAgICB0aGlzLiNuZ1pvbmUgPSBuZ1pvbmU7XG4gICAgdGhpcy4jdGhlbWVTdmMgPSB0aGVtZVN2YztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiN0aGVtZVN2Yykge1xuICAgICAgdGhpcy4jdGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVCcmVha3BvaW50Q2xhc3MoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIHRoaXMuI2Rlc3Ryb3lNdXRhdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZUJyZWFrcG9pbnRDbGFzcygpO1xuICB9XG5cbiAgI2luaXRNdXRhdGlvbk9ic2VydmVyKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLiNtdXRhdGlvbk9ic2VydmVyICYmIHRoaXMuY29udGFpbmVyRWxlbWVudFJlZikge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLmNvbnRhaW5lckVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgLy8gTXV0YXRpb25PYnNlcnZlciBpcyBwYXRjaGVkIGJ5IFpvbmUuanMgYW5kIHRoZXJlZm9yZSBiZWNvbWVzIHBhcnQgb2YgdGhlXG4gICAgICAvLyBBbmd1bGFyIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUsIGJ1dCB0aGlzIGNhbiBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHNvbWVcbiAgICAgIC8vIHNjZW5hcmlvcy4gVGhpcyB3aWxsIGtlZXAgTXV0YXRpb25PYnNlcnZlciBmcm9tIHRyaWdnZXJpbmcgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgIHRoaXMuI25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlQ2hpbGRyZW5IZWlnaHRzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShlbCwge1xuICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsXG4gICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjZGVzdHJveU11dGF0aW9uT2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jbXV0YXRpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVCcmVha3BvaW50Q2xhc3MoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50V2lkdGggPSB0aGlzLiNzZWxlY3Rpb25Cb3hBZGFwdGVyLmdldFBhcmVudFdpZHRoKFxuICAgICAgdGhpcy4jaG9zdEVsUmVmLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5jb250YWluZXJFbGVtZW50UmVmKSB7XG4gICAgICB0aGlzLiNzZWxlY3Rpb25Cb3hBZGFwdGVyLnNldFJlc3BvbnNpdmVDbGFzcyhcbiAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50UmVmLFxuICAgICAgICB0aGlzLiNzZWxlY3Rpb25Cb3hBZGFwdGVyLmdldEJyZWFrcG9pbnRGb3JXaWR0aChwYXJlbnRXaWR0aCksXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLiN1cGRhdGVDaGlsZHJlbkhlaWdodHMoKTtcbiAgfVxuXG4gICN1cGRhdGVDaGlsZHJlbkhlaWdodHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyRWxlbWVudFJlZikge1xuICAgICAgdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLnJlc2V0SGVpZ2h0KFxuICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnRSZWYsXG4gICAgICAgIFNLWV9TRUxFQ1RJT05fQk9YX0NMQVNTX05BTUUsXG4gICAgICApO1xuICAgICAgdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLnN5bmNNYXhIZWlnaHQoXG4gICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudFJlZixcbiAgICAgICAgU0tZX1NFTEVDVElPTl9CT1hfQ0xBU1NfTkFNRSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJcbiAgY2xhc3M9XCJza3ktc2VsZWN0aW9uLWJveC1ncmlkXCJcbiAgW25nQ2xhc3NdPVwiJ3NreS1zZWxlY3Rpb24tYm94LWdyaWQtYWxpZ24tJyArIGFsaWduSXRlbXNcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktc2VsZWN0aW9uLWJveFwiIC8+XG48L2Rpdj5cbiJdfQ==","import { Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Specifies the header to display in a selection box.\n */\nexport class SkySelectionBoxHeaderComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkySelectionBoxHeaderComponent, isStandalone: false, selector: \"sky-selection-box-header\", ngImport: i0, template: \"<ng-content />\\n\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxHeaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-selection-box-header', standalone: false, template: \"<ng-content />\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9zZWxlY3Rpb24tYm94L3NlbGVjdGlvbi1ib3gtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvc2VsZWN0aW9uLWJveC9zZWxlY3Rpb24tYm94LWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQzs7R0FFRztBQU1ILE1BQU0sT0FBTyw4QkFBOEI7K0dBQTlCLDhCQUE4QjttR0FBOUIsOEJBQThCLHFGQ1YzQyxrQkFDQTs7NEZEU2EsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLDBCQUEwQixjQUV4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgdG8gZGlzcGxheSBpbiBhIHNlbGVjdGlvbiBib3guXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1zZWxlY3Rpb24tYm94LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rpb24tYm94LWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Cb3hIZWFkZXJDb21wb25lbnQge31cbiIsIjxuZy1jb250ZW50IC8+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\nimport { SkySelectionBoxDescriptionComponent } from './selection-box-description.component';\nimport { SkySelectionBoxGridComponent } from './selection-box-grid.component';\nimport { SkySelectionBoxHeaderComponent } from './selection-box-header.component';\nimport { SkySelectionBoxComponent } from './selection-box.component';\nimport * as i0 from \"@angular/core\";\nexport class SkySelectionBoxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxModule, declarations: [SkySelectionBoxGridComponent,\n SkySelectionBoxComponent,\n SkySelectionBoxDescriptionComponent,\n SkySelectionBoxHeaderComponent], imports: [CommonModule, SkyThemeModule], exports: [SkySelectionBoxGridComponent,\n SkySelectionBoxComponent,\n SkySelectionBoxDescriptionComponent,\n SkySelectionBoxHeaderComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxModule, providers: [SkySelectionBoxAdapterService], imports: [CommonModule, SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkySelectionBoxModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n SkySelectionBoxGridComponent,\n SkySelectionBoxComponent,\n SkySelectionBoxDescriptionComponent,\n SkySelectionBoxHeaderComponent,\n ],\n imports: [CommonModule, SkyThemeModule],\n exports: [\n SkySelectionBoxGridComponent,\n SkySelectionBoxComponent,\n SkySelectionBoxDescriptionComponent,\n SkySelectionBoxHeaderComponent,\n ],\n providers: [SkySelectionBoxAdapterService],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJveC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdGlvbi1ib3gvc2VsZWN0aW9uLWJveC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFrQnJFLE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLGlCQWQ5Qiw0QkFBNEI7WUFDNUIsd0JBQXdCO1lBQ3hCLG1DQUFtQztZQUNuQyw4QkFBOEIsYUFFdEIsWUFBWSxFQUFFLGNBQWMsYUFFcEMsNEJBQTRCO1lBQzVCLHdCQUF3QjtZQUN4QixtQ0FBbUM7WUFDbkMsOEJBQThCO2dIQUlyQixxQkFBcUIsYUFGckIsQ0FBQyw2QkFBNkIsQ0FBQyxZQVBoQyxZQUFZLEVBQUUsY0FBYzs7NEZBUzNCLHFCQUFxQjtrQkFoQmpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDRCQUE0Qjt3QkFDNUIsd0JBQXdCO3dCQUN4QixtQ0FBbUM7d0JBQ25DLDhCQUE4QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQztvQkFDdkMsT0FBTyxFQUFFO3dCQUNQLDRCQUE0Qjt3QkFDNUIsd0JBQXdCO3dCQUN4QixtQ0FBbUM7d0JBQ25DLDhCQUE4QjtxQkFDL0I7b0JBQ0QsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbkJveEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZWxlY3Rpb24tYm94LWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hEZXNjcmlwdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0aW9uLWJveC1kZXNjcmlwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5U2VsZWN0aW9uQm94R3JpZENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0aW9uLWJveC1ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdGlvbi1ib3gtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Cb3hDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdGlvbi1ib3guY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2t5U2VsZWN0aW9uQm94R3JpZENvbXBvbmVudCxcbiAgICBTa3lTZWxlY3Rpb25Cb3hDb21wb25lbnQsXG4gICAgU2t5U2VsZWN0aW9uQm94RGVzY3JpcHRpb25Db21wb25lbnQsXG4gICAgU2t5U2VsZWN0aW9uQm94SGVhZGVyQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lUaGVtZU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBTa3lTZWxlY3Rpb25Cb3hHcmlkQ29tcG9uZW50LFxuICAgIFNreVNlbGVjdGlvbkJveENvbXBvbmVudCxcbiAgICBTa3lTZWxlY3Rpb25Cb3hEZXNjcmlwdGlvbkNvbXBvbmVudCxcbiAgICBTa3lTZWxlY3Rpb25Cb3hIZWFkZXJDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1NreVNlbGVjdGlvbkJveEFkYXB0ZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2VsZWN0aW9uQm94TW9kdWxlIHt9XG4iXX0=","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\n/**\n * Specifies the label to display beside the toggle switch. To display a help button beside the label, include a help\n * button element, such as `sky-help-inline`, in the `sky-toggle-switch` element and a `sky-control-help` CSS class on\n * that help button element.\n * @deprecated Use the `labelText` input on the toggle switch component instead.\n */\nexport class SkyToggleSwitchLabelComponent {\n constructor() {\n inject(SkyLogService).deprecated('SkyToggleSwitchLabelComponent', {\n deprecationMajorVersion: 9,\n replacementRecommendation: 'To add a label to toggle switch, use the `labelText` input on the toggle switch component instead.',\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.15\", type: SkyToggleSwitchLabelComponent, isStandalone: false, selector: \"sky-toggle-switch-label\", ngImport: i0, template: \"<span skyTrim><ng-content /></span>\\n\", dependencies: [{ kind: \"directive\", type: i1.λ4, selector: \"[skyTrim]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchLabelComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-toggle-switch-label', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<span skyTrim><ng-content /></span>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLXN3aXRjaC1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3RvZ2dsZS1zd2l0Y2gvdG9nZ2xlLXN3aXRjaC1sYWJlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3RvZ2dsZS1zd2l0Y2gvdG9nZ2xlLXN3aXRjaC1sYWJlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFFNUM7Ozs7O0dBS0c7QUFPSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDO1FBQ0UsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsRUFBRTtZQUNoRSx1QkFBdUIsRUFBRSxDQUFDO1lBQzFCLHlCQUF5QixFQUN2QixvR0FBb0c7U0FDdkcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FQVSw2QkFBNkI7bUdBQTdCLDZCQUE2QixvRkNmMUMsdUNBQ0E7OzRGRGNhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBRWxCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGxhYmVsIHRvIGRpc3BsYXkgYmVzaWRlIHRoZSB0b2dnbGUgc3dpdGNoLiBUbyBkaXNwbGF5IGEgaGVscCBidXR0b24gYmVzaWRlIHRoZSBsYWJlbCwgaW5jbHVkZSBhIGhlbHBcbiAqIGJ1dHRvbiBlbGVtZW50LCBzdWNoIGFzIGBza3ktaGVscC1pbmxpbmVgLCBpbiB0aGUgYHNreS10b2dnbGUtc3dpdGNoYCBlbGVtZW50IGFuZCBhIGBza3ktY29udHJvbC1oZWxwYCBDU1MgY2xhc3Mgb25cbiAqIHRoYXQgaGVscCBidXR0b24gZWxlbWVudC5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgb24gdGhlIHRvZ2dsZSBzd2l0Y2ggY29tcG9uZW50IGluc3RlYWQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10b2dnbGUtc3dpdGNoLWxhYmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS1zd2l0Y2gtbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRvZ2dsZVN3aXRjaExhYmVsQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KFNreUxvZ1NlcnZpY2UpLmRlcHJlY2F0ZWQoJ1NreVRvZ2dsZVN3aXRjaExhYmVsQ29tcG9uZW50Jywge1xuICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDksXG4gICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOlxuICAgICAgICAnVG8gYWRkIGEgbGFiZWwgdG8gdG9nZ2xlIHN3aXRjaCwgdXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBvbiB0aGUgdG9nZ2xlIHN3aXRjaCBjb21wb25lbnQgaW5zdGVhZC4nLFxuICAgIH0pO1xuICB9XG59XG4iLCI8c3BhbiBza3lUcmltPjxuZy1jb250ZW50IC8+PC9zcGFuPlxuIl19","import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, booleanAttribute, forwardRef, inject, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { SkyLogService } from '@skyux/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyToggleSwitchLabelComponent } from './toggle-switch-label.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@skyux/help-inline\";\nconst SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyToggleSwitchComponent),\n multi: true,\n};\nconst SKY_TOGGLE_SWITCH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyToggleSwitchComponent),\n multi: true,\n};\nexport class SkyToggleSwitchComponent {\n /**\n * The ARIA label for the toggle switch. This sets the `aria-label`\n * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * Use a context-sensitive label, such as \"Activate annual fundraiser\" for a toggle switch that activates and deactivates an annual fundraiser. Context is especially important if multiple toggle switches are in close proximity.\n * When the `sky-toggle-switch-label` component displays a visible label, this property is only necessary if that label requires extra context.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use the `labelText` input instead.\n */\n set ariaLabel(value) {\n this.#_ariaLabel = value;\n if (value !== undefined) {\n this.#logSvc.deprecated('SkyToggleSwitchComponent.ariaLabel', {\n deprecationMajorVersion: 9,\n replacementRecommendation: 'To add an ARIA label to the toggle switch, use the `labelText` input instead',\n });\n }\n }\n get ariaLabel() {\n return this.#_ariaLabel;\n }\n /**\n * Whether the toggle switch is selected.\n * @default false\n */\n set checked(value) {\n const checked = !!value;\n if (checked !== this.#_checked) {\n this.#_checked = checked;\n this.#onChange(checked);\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isFirstChange && this.#control) {\n this.#control.markAsPristine();\n this.#isFirstChange = false;\n }\n }\n }\n get checked() {\n return this.#_checked;\n }\n #control;\n #isFirstChange;\n #logSvc;\n #ngUnsubscribe;\n #_ariaLabel;\n #_checked;\n #changeDetector;\n constructor(changeDetector, idService) {\n /**\n * Whether to disable the toggle switch on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n */\n this.disabled = false;\n /**\n * The tab index for the toggle switch. If not defined, the index is set to the position\n * of the toggle switch on load.\n */\n this.tabIndex = 0;\n /**\n * Whether to hide `labelText` from view.\n */\n this.labelHidden = false;\n /**\n * Fires when the checked state of a toggle switch changes.\n */\n this.toggleChange = new EventEmitter();\n this.hasLabelComponent = false;\n this.enableIndicatorAnimation = false;\n this.#isFirstChange = true;\n this.#logSvc = inject(SkyLogService);\n this.#ngUnsubscribe = new Subject();\n this.#_checked = false;\n /* istanbul ignore next */\n this.#onTouched = () => { };\n /* istanbul ignore next */\n this.#onChange = () => { };\n this.#changeDetector = changeDetector;\n this.labelId = idService.generateId();\n }\n ngAfterContentInit() {\n /* istanbul ignore else */\n if (this.labelComponents) {\n this.hasLabelComponent = this.labelComponents.length > 0;\n this.labelComponents.changes\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newLabelComponents) => {\n this.hasLabelComponent = newLabelComponents.length > 0;\n // Allow the template to reload any ARIA attributes that are relying on the\n // label component existing in the DOM.\n this.#changeDetector.markForCheck();\n });\n }\n // Wait for the view to render before applying animation effects.\n // (Some browsers, such as Firefox, apply the animation too early.)\n setTimeout(() => {\n this.enableIndicatorAnimation = true;\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n writeValue(value) {\n this.checked = !!value;\n this.#changeDetector.markForCheck();\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n return null;\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#onTouched = fn;\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.#changeDetector.markForCheck();\n }\n onButtonClick(event) {\n event.stopPropagation();\n this.#toggleChecked();\n this.#emitChangeEvent();\n }\n onButtonBlur() {\n this.#onTouched();\n }\n /* istanbul ignore next */\n #onTouched;\n /* istanbul ignore next */\n #onChange;\n #emitChangeEvent() {\n this.#onChange(this.#_checked);\n this.toggleChange.emit({\n checked: this.#_checked,\n });\n }\n #toggleChecked() {\n this.checked = !this.checked;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyIdService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: SkyToggleSwitchComponent, isStandalone: false, selector: \"sky-toggle-switch\", inputs: { ariaLabel: \"ariaLabel\", checked: \"checked\", disabled: \"disabled\", helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", tabIndex: \"tabIndex\", labelText: \"labelText\", labelHidden: [\"labelHidden\", \"labelHidden\", booleanAttribute], helpKey: \"helpKey\" }, outputs: { toggleChange: \"toggleChange\" }, providers: [\n SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR,\n SKY_TOGGLE_SWITCH_VALIDATOR,\n ], queries: [{ propertyName: \"labelComponents\", predicate: SkyToggleSwitchLabelComponent }], ngImport: i0, template: \"<span\\n class=\\\"sky-toggle-switch\\\"\\n [ngClass]=\\\"{\\n 'sky-toggle-switch-with-label': hasLabelComponent || labelText\\n }\\\"\\n>\\n <button\\n #toggle=\\\"skyId\\\"\\n class=\\\"sky-toggle-switch-button\\\"\\n role=\\\"switch\\\"\\n type=\\\"button\\\"\\n skyId\\n [attr.aria-checked]=\\\"checked\\\"\\n [attr.aria-label]=\\\"labelText || ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"\\n !ariaLabel && (hasLabelComponent || labelText) ? labelId : null\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"{\\n 'sky-toggle-switch-checked': checked,\\n 'sky-toggle-switch-disabled': disabled\\n }\\\"\\n [tabIndex]=\\\"tabIndex\\\"\\n (blur)=\\\"onButtonBlur()\\\"\\n (click)=\\\"onButtonClick($event)\\\"\\n >\\n <div aria-hidden=\\\"true\\\" class=\\\"sky-toggle-switch-switch\\\">\\n <i\\n class=\\\"sky-toggle-switch-indicator\\\"\\n [ngClass]=\\\"{\\n 'sky-toggle-switch-transition': enableIndicatorAnimation\\n }\\\"\\n >&nbsp;</i\\n >\\n </div>\\n </button>\\n <span>\\n @if (hasLabelComponent || labelText) {\\n <label\\n class=\\\"sky-toggle-switch-label\\\"\\n [for]=\\\"toggle.id\\\"\\n [attr.id]=\\\"labelId\\\"\\n >\\n @if (labelText) {\\n @if (!labelHidden) {\\n <span class=\\\"sky-toggle-switch-label-text\\\">{{ labelText }}</span>\\n }\\n } @else {\\n <ng-content select=\\\"sky-toggle-switch-label\\\" />\\n }\\n </label>\\n }\\n <span class=\\\"sky-control-help-container\\\">\\n @if (labelText && (helpPopoverContent || helpKey)) {\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n }\\n <ng-content select=\\\".sky-control-help\\\" />\\n </span>\\n </span>\\n</span>\\n\", styles: [\".sky-toggle-switch:not(.sky-theme-modern *){--sky-override-toggle-switch-background-color: #eeeeef;--sky-override-toggle-switch-background-color-disabled: #cdcfd2;--sky-override-toggle-switch-background-color-selected: #c1e8fb;--sky-override-toggle-switch-border: 1px solid #cdcfd2;--sky-override-toggle-switch-border-color-active: #00b4f1;--sky-override-toggle-switch-border-color-disabled: transparent;--sky-override-toggle-switch-border-color-focus: #1870B8;--sky-override-toggle-switch-border-color-hover: #00b4f1;--sky-override-toggle-switch-border-color-selected: #00b4f1;--sky-override-toggle-switch-border-radius: 24px;--sky-override-toggle-switch-border-width-active: 2px;--sky-override-toggle-switch-border-width-disabled: 2px;--sky-override-toggle-switch-border-width-focus: 2px;--sky-override-toggle-switch-border-width-hover: 2px;--sky-override-toggle-switch-border-width-selected: 2px;--sky-override-toggle-switch-indicator-background-color: #ffffff;--sky-override-toggle-switch-indicator-background-color-disabled: #eeeeef;--sky-override-toggle-switch-indicator-border-radius: 100%;--sky-override-toggle-switch-indicator-box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, .75);--sky-override-toggle-switch-indicator-height: 22px;--sky-override-toggle-switch-indicator-left: 22px;--sky-override-toggle-switch-indicator-margin-left: -22px;--sky-override-toggle-switch-indicator-width: 22px;--sky-override-toggle-switch-label-color-disabled: var( --sky-text-color-default );--sky-override-toggle-switch-label-gap: 10px;--sky-override-toggle-switch-line-height: calc(20 / 14);--sky-override-toggle-switch-padding: 1px;--sky-override-toggle-switch-padding-active: 0;--sky-override-toggle-switch-padding-disabled: 0;--sky-override-toggle-switch-padding-focus: 0;--sky-override-toggle-switch-padding-hover: 0;--sky-override-toggle-switch-padding-selected: 0;--sky-override-toggle-switch-pointer-disabled: default;--sky-override-toggle-switch-transition: none;--sky-override-toggle-switch-width: 46px}.sky-toggle-switch{display:inline-flex;align-items:baseline}.sky-toggle-switch.sky-toggle-switch-with-label{gap:var(--sky-override-toggle-switch-label-gap, var(--sky-space-gap-label-m))}.sky-toggle-switch .sky-toggle-switch-button{border:none;background:none;margin:0;padding:0;outline:none}.sky-toggle-switch .sky-toggle-switch-button .sky-toggle-switch-switch{border:var(--sky-override-toggle-switch-border, var(--sky-border-width-input-base) solid var(--sky-color-border-switch-base));background-color:var(--sky-override-toggle-switch-background-color, var(--sky-color-background-input-base));padding:var(--sky-override-toggle-switch-padding, var(--sky-border-width-input-base));border-radius:var(--sky-override-toggle-switch-border-radius, calc(var(--sky-border-radius-thumb) + var(--sky-space-inset-thumb) * 2)/100%);flex:none;line-height:var(--sky-override-toggle-switch-line-height, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));width:var(--sky-override-toggle-switch-width, calc(var(--sky-size-switch) * 2 - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));display:inline-block;transition:var(--sky-override-toggle-switch-transition, border-color .15s, box-shadow .15s)}.sky-toggle-switch .sky-toggle-switch-button:focus-visible .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-focus, var(--sky-border-width-input-focus));border-color:var(--sky-override-toggle-switch-border-color-focus, var(--sky-color-border-switch-focus));padding:var(--sky-override-toggle-switch-padding-focus, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-focus)))}.sky-toggle-switch .sky-toggle-switch-button:focus-visible:not(:active,.sky-toggle-switch-disabled) .sky-toggle-switch-switch{box-shadow:none}.sky-toggle-switch .sky-toggle-switch-button:active .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-active, var(--sky-border-width-input-active));border-color:var(--sky-override-toggle-switch-border-color-active, var(--sky-color-border-switch-active));padding:var(--sky-override-toggle-switch-padding-active, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-active)))}.sky-toggle-switch .sky-toggle-switch-button:hover:not(.sky-toggle-switch-disabled){cursor:pointer}.sky-toggle-switch .sky-toggle-switch-button:hover:not(.sky-toggle-switch-disabled):not(:focus-visible):not(:active) .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-hover, var(--sky-border-width-input-hover));border-color:var(--sky-override-toggle-switch-border-color-hover, var(--sky-color-border-switch-hover));padding:var(--sky-override-toggle-switch-padding-hover, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-base)))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked .sky-toggle-switch-switch{background:var(--sky-override-toggle-switch-background-color-selected, var(--sky-color-background-selected-switch-base));background-origin:border-box}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:not(:focus-visible,:active,.sky-toggle-switch-disabled) .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-selected, var(--sky-border-width-selected-s));border-color:var(--sky-override-toggle-switch-border-color-selected, var(--sky-color-border-switch-selected-base));padding:var(--sky-override-toggle-switch-padding-selected, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-base)))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:focus-visible:not(:active) .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-focus, var(--sky-color-border-switch-selected-focus))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:active .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-active, var(--sky-color-border-switch-selected-active))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:hover:not(:focus-visible,.sky-toggle-switch-disabled) .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-hover, var(--sky-color-border-switch-selected-hover))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked.sky-toggle-switch-disabled .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-disabled, var(--sky-color-border-switch-selected-disabled))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked .sky-toggle-switch-indicator{left:100%}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled{color:var(--sky-color-text-default)}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled .sky-toggle-switch-switch{background:var(--sky-override-toggle-switch-background-color-disabled, var(--sky-color-background-selected-switch-disabled));border-color:var(--sky-override-toggle-switch-border-color-disabled, var(--sky-color-border-switch-disabled));border-width:var(--sky-override-toggle-switch-border-width-disabled, var(--sky-border-width-input-disabled));padding:var(--sky-override-toggle-switch-padding-disabled, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-disabled)));cursor:var(--sky-override-toggle-switch-pointer-disabled, not-allowed)}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled+span .sky-toggle-switch-label{color:var(--sky-override-toggle-switch-label-color-disabled, var(--sky-color-text-deemphasized))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled .sky-toggle-switch-indicator{background-color:var(--sky-override-toggle-switch-indicator-background-color-disabled, var(--sky-color-background-thumb-disabled))}.sky-toggle-switch .sky-toggle-switch-button .sky-toggle-switch-indicator{height:var(--sky-override-toggle-switch-indicator-height, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));width:var(--sky-override-toggle-switch-indicator-width, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));display:block;position:relative;top:0;left:var(--sky-override-toggle-switch-indicator-left, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));margin-left:var(--sky-override-toggle-switch-indicator-margin-left, calc((var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)) * -1));border-radius:var(--sky-override-toggle-switch-indicator-border-radius, var(--sky-border-radius-thumb));box-shadow:var(--sky-override-toggle-switch-indicator-box-shadow, var(--sky-elevation-raised-100));background-color:var(--sky-override-toggle-switch-indicator-background-color, var(--sky-color-background-thumb-base))}.sky-toggle-switch .sky-toggle-switch-button .sky-toggle-switch-indicator.sky-toggle-switch-transition{transition:left .15s}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"component\", type: i3.λ1, selector: \"sky-help-inline\", inputs: [\"ariaControls\", \"ariaExpanded\", \"ariaLabel\", \"helpKey\", \"labelledBy\", \"labelText\", \"popoverContent\", \"popoverTitle\"], outputs: [\"actionClick\"] }, { kind: \"directive\", type: i1.λ2, selector: \"[skyId]\", exportAs: [\"skyId\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-toggle-switch', providers: [\n SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR,\n SKY_TOGGLE_SWITCH_VALIDATOR,\n ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<span\\n class=\\\"sky-toggle-switch\\\"\\n [ngClass]=\\\"{\\n 'sky-toggle-switch-with-label': hasLabelComponent || labelText\\n }\\\"\\n>\\n <button\\n #toggle=\\\"skyId\\\"\\n class=\\\"sky-toggle-switch-button\\\"\\n role=\\\"switch\\\"\\n type=\\\"button\\\"\\n skyId\\n [attr.aria-checked]=\\\"checked\\\"\\n [attr.aria-label]=\\\"labelText || ariaLabel || null\\\"\\n [attr.aria-labelledby]=\\\"\\n !ariaLabel && (hasLabelComponent || labelText) ? labelId : null\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n [ngClass]=\\\"{\\n 'sky-toggle-switch-checked': checked,\\n 'sky-toggle-switch-disabled': disabled\\n }\\\"\\n [tabIndex]=\\\"tabIndex\\\"\\n (blur)=\\\"onButtonBlur()\\\"\\n (click)=\\\"onButtonClick($event)\\\"\\n >\\n <div aria-hidden=\\\"true\\\" class=\\\"sky-toggle-switch-switch\\\">\\n <i\\n class=\\\"sky-toggle-switch-indicator\\\"\\n [ngClass]=\\\"{\\n 'sky-toggle-switch-transition': enableIndicatorAnimation\\n }\\\"\\n >&nbsp;</i\\n >\\n </div>\\n </button>\\n <span>\\n @if (hasLabelComponent || labelText) {\\n <label\\n class=\\\"sky-toggle-switch-label\\\"\\n [for]=\\\"toggle.id\\\"\\n [attr.id]=\\\"labelId\\\"\\n >\\n @if (labelText) {\\n @if (!labelHidden) {\\n <span class=\\\"sky-toggle-switch-label-text\\\">{{ labelText }}</span>\\n }\\n } @else {\\n <ng-content select=\\\"sky-toggle-switch-label\\\" />\\n }\\n </label>\\n }\\n <span class=\\\"sky-control-help-container\\\">\\n @if (labelText && (helpPopoverContent || helpKey)) {\\n <sky-help-inline\\n [helpKey]=\\\"helpKey\\\"\\n [labelText]=\\\"labelText\\\"\\n [popoverTitle]=\\\"helpPopoverTitle\\\"\\n [popoverContent]=\\\"helpPopoverContent\\\"\\n />\\n }\\n <ng-content select=\\\".sky-control-help\\\" />\\n </span>\\n </span>\\n</span>\\n\", styles: [\".sky-toggle-switch:not(.sky-theme-modern *){--sky-override-toggle-switch-background-color: #eeeeef;--sky-override-toggle-switch-background-color-disabled: #cdcfd2;--sky-override-toggle-switch-background-color-selected: #c1e8fb;--sky-override-toggle-switch-border: 1px solid #cdcfd2;--sky-override-toggle-switch-border-color-active: #00b4f1;--sky-override-toggle-switch-border-color-disabled: transparent;--sky-override-toggle-switch-border-color-focus: #1870B8;--sky-override-toggle-switch-border-color-hover: #00b4f1;--sky-override-toggle-switch-border-color-selected: #00b4f1;--sky-override-toggle-switch-border-radius: 24px;--sky-override-toggle-switch-border-width-active: 2px;--sky-override-toggle-switch-border-width-disabled: 2px;--sky-override-toggle-switch-border-width-focus: 2px;--sky-override-toggle-switch-border-width-hover: 2px;--sky-override-toggle-switch-border-width-selected: 2px;--sky-override-toggle-switch-indicator-background-color: #ffffff;--sky-override-toggle-switch-indicator-background-color-disabled: #eeeeef;--sky-override-toggle-switch-indicator-border-radius: 100%;--sky-override-toggle-switch-indicator-box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, .75);--sky-override-toggle-switch-indicator-height: 22px;--sky-override-toggle-switch-indicator-left: 22px;--sky-override-toggle-switch-indicator-margin-left: -22px;--sky-override-toggle-switch-indicator-width: 22px;--sky-override-toggle-switch-label-color-disabled: var( --sky-text-color-default );--sky-override-toggle-switch-label-gap: 10px;--sky-override-toggle-switch-line-height: calc(20 / 14);--sky-override-toggle-switch-padding: 1px;--sky-override-toggle-switch-padding-active: 0;--sky-override-toggle-switch-padding-disabled: 0;--sky-override-toggle-switch-padding-focus: 0;--sky-override-toggle-switch-padding-hover: 0;--sky-override-toggle-switch-padding-selected: 0;--sky-override-toggle-switch-pointer-disabled: default;--sky-override-toggle-switch-transition: none;--sky-override-toggle-switch-width: 46px}.sky-toggle-switch{display:inline-flex;align-items:baseline}.sky-toggle-switch.sky-toggle-switch-with-label{gap:var(--sky-override-toggle-switch-label-gap, var(--sky-space-gap-label-m))}.sky-toggle-switch .sky-toggle-switch-button{border:none;background:none;margin:0;padding:0;outline:none}.sky-toggle-switch .sky-toggle-switch-button .sky-toggle-switch-switch{border:var(--sky-override-toggle-switch-border, var(--sky-border-width-input-base) solid var(--sky-color-border-switch-base));background-color:var(--sky-override-toggle-switch-background-color, var(--sky-color-background-input-base));padding:var(--sky-override-toggle-switch-padding, var(--sky-border-width-input-base));border-radius:var(--sky-override-toggle-switch-border-radius, calc(var(--sky-border-radius-thumb) + var(--sky-space-inset-thumb) * 2)/100%);flex:none;line-height:var(--sky-override-toggle-switch-line-height, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));width:var(--sky-override-toggle-switch-width, calc(var(--sky-size-switch) * 2 - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));display:inline-block;transition:var(--sky-override-toggle-switch-transition, border-color .15s, box-shadow .15s)}.sky-toggle-switch .sky-toggle-switch-button:focus-visible .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-focus, var(--sky-border-width-input-focus));border-color:var(--sky-override-toggle-switch-border-color-focus, var(--sky-color-border-switch-focus));padding:var(--sky-override-toggle-switch-padding-focus, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-focus)))}.sky-toggle-switch .sky-toggle-switch-button:focus-visible:not(:active,.sky-toggle-switch-disabled) .sky-toggle-switch-switch{box-shadow:none}.sky-toggle-switch .sky-toggle-switch-button:active .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-active, var(--sky-border-width-input-active));border-color:var(--sky-override-toggle-switch-border-color-active, var(--sky-color-border-switch-active));padding:var(--sky-override-toggle-switch-padding-active, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-active)))}.sky-toggle-switch .sky-toggle-switch-button:hover:not(.sky-toggle-switch-disabled){cursor:pointer}.sky-toggle-switch .sky-toggle-switch-button:hover:not(.sky-toggle-switch-disabled):not(:focus-visible):not(:active) .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-hover, var(--sky-border-width-input-hover));border-color:var(--sky-override-toggle-switch-border-color-hover, var(--sky-color-border-switch-hover));padding:var(--sky-override-toggle-switch-padding-hover, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-base)))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked .sky-toggle-switch-switch{background:var(--sky-override-toggle-switch-background-color-selected, var(--sky-color-background-selected-switch-base));background-origin:border-box}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:not(:focus-visible,:active,.sky-toggle-switch-disabled) .sky-toggle-switch-switch{border-width:var(--sky-override-toggle-switch-border-width-selected, var(--sky-border-width-selected-s));border-color:var(--sky-override-toggle-switch-border-color-selected, var(--sky-color-border-switch-selected-base));padding:var(--sky-override-toggle-switch-padding-selected, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-base)))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:focus-visible:not(:active) .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-focus, var(--sky-color-border-switch-selected-focus))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:active .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-active, var(--sky-color-border-switch-selected-active))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked:hover:not(:focus-visible,.sky-toggle-switch-disabled) .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-hover, var(--sky-color-border-switch-selected-hover))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked.sky-toggle-switch-disabled .sky-toggle-switch-switch{border-color:var(--sky-override-toggle-switch-border-color-disabled, var(--sky-color-border-switch-selected-disabled))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-checked .sky-toggle-switch-indicator{left:100%}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled{color:var(--sky-color-text-default)}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled .sky-toggle-switch-switch{background:var(--sky-override-toggle-switch-background-color-disabled, var(--sky-color-background-selected-switch-disabled));border-color:var(--sky-override-toggle-switch-border-color-disabled, var(--sky-color-border-switch-disabled));border-width:var(--sky-override-toggle-switch-border-width-disabled, var(--sky-border-width-input-disabled));padding:var(--sky-override-toggle-switch-padding-disabled, calc(var(--sky-space-inset-thumb) * 2 - var(--sky-border-width-input-disabled)));cursor:var(--sky-override-toggle-switch-pointer-disabled, not-allowed)}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled+span .sky-toggle-switch-label{color:var(--sky-override-toggle-switch-label-color-disabled, var(--sky-color-text-deemphasized))}.sky-toggle-switch .sky-toggle-switch-button.sky-toggle-switch-disabled .sky-toggle-switch-indicator{background-color:var(--sky-override-toggle-switch-indicator-background-color-disabled, var(--sky-color-background-thumb-disabled))}.sky-toggle-switch .sky-toggle-switch-button .sky-toggle-switch-indicator{height:var(--sky-override-toggle-switch-indicator-height, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));width:var(--sky-override-toggle-switch-indicator-width, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));display:block;position:relative;top:0;left:var(--sky-override-toggle-switch-indicator-left, calc(var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)));margin-left:var(--sky-override-toggle-switch-indicator-margin-left, calc((var(--sky-size-switch) - (var(--sky-border-width-input-base) * 2 + var(--sky-space-inset-thumb) * 2)) * -1));border-radius:var(--sky-override-toggle-switch-indicator-border-radius, var(--sky-border-radius-thumb));box-shadow:var(--sky-override-toggle-switch-indicator-box-shadow, var(--sky-elevation-raised-100));background-color:var(--sky-override-toggle-switch-indicator-background-color, var(--sky-color-background-thumb-base))}.sky-toggle-switch .sky-toggle-switch-button .sky-toggle-switch-indicator.sky-toggle-switch-transition{transition:left .15s}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyIdService }], propDecorators: { ariaLabel: [{\n type: Input\n }], checked: [{\n type: Input\n }], disabled: [{\n type: Input\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], labelText: [{\n type: Input\n }], labelHidden: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], helpKey: [{\n type: Input\n }], toggleChange: [{\n type: Output\n }], labelComponents: [{\n type: ContentChildren,\n args: [SkyToggleSwitchLabelComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3RvZ2dsZS1zd2l0Y2gvdG9nZ2xlLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3RvZ2dsZS1zd2l0Y2gvdG9nZ2xlLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7QUFHaEYsTUFBTSx3Q0FBd0MsR0FBUTtJQUNwRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7SUFDdkQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBQ0YsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO0lBQ3ZE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Q0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsVUFBVSxDQUF1QjtJQUNqQywwQkFBMEI7SUFDMUIsU0FBUyxDQUFrQztJQUUzQyxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDOytHQS9NVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw0U0EwRmYsZ0JBQWdCLCtFQWpHekI7WUFDVCx3Q0FBd0M7WUFDeEMsMkJBQTJCO1NBQzVCLDBEQW9IZ0IsNkJBQTZCLDZCQ3RLaEQsZzBEQWlFQTs7NEZEWGEsd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNFLG1CQUFtQixhQUdsQjt3QkFDVCx3Q0FBd0M7d0JBQ3hDLDJCQUEyQjtxQkFDNUIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsS0FBSzs7c0JBYWhCLEtBQUs7O3NCQXFCTCxLQUFLOztzQkF3QkwsS0FBSzs7c0JBUUwsS0FBSzs7c0JBT0wsS0FBSzs7c0JBT0wsS0FBSzs7c0JBTUwsS0FBSzs7c0JBTUwsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBUXJDLEtBQUs7O3NCQU1MLE1BQU07O3NCQVFOLGVBQWU7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UsIFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VG9nZ2xlU3dpdGNoTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL3RvZ2dsZS1zd2l0Y2gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRvZ2dsZVN3aXRjaENoYW5nZSB9IGZyb20gJy4vdHlwZXMvdG9nZ2xlLXN3aXRjaC1jaGFuZ2UnO1xuXG5jb25zdCBTS1lfVE9HR0xFX1NXSVRDSF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lUb2dnbGVTd2l0Y2hDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5jb25zdCBTS1lfVE9HR0xFX1NXSVRDSF9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreVRvZ2dsZVN3aXRjaENvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRvZ2dsZS1zd2l0Y2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9nZ2xlLXN3aXRjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvZ2dsZS1zd2l0Y2guY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU0tZX1RPR0dMRV9TV0lUQ0hfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUixcbiAgICBTS1lfVE9HR0xFX1NXSVRDSF9WQUxJREFUT1IsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VG9nZ2xlU3dpdGNoQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHRvZ2dsZSBzd2l0Y2guIFRoaXMgc2V0cyB0aGUgYGFyaWEtbGFiZWxgXG4gICAqIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVycyBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBVc2UgYSBjb250ZXh0LXNlbnNpdGl2ZSBsYWJlbCwgc3VjaCBhcyBcIkFjdGl2YXRlIGFubnVhbCBmdW5kcmFpc2VyXCIgZm9yIGEgdG9nZ2xlIHN3aXRjaCB0aGF0IGFjdGl2YXRlcyBhbmQgZGVhY3RpdmF0ZXMgYW4gYW5udWFsIGZ1bmRyYWlzZXIuIENvbnRleHQgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgbXVsdGlwbGUgdG9nZ2xlIHN3aXRjaGVzIGFyZSBpbiBjbG9zZSBwcm94aW1pdHkuXG4gICAqIFdoZW4gdGhlIGBza3ktdG9nZ2xlLXN3aXRjaC1sYWJlbGAgY29tcG9uZW50IGRpc3BsYXlzIGEgdmlzaWJsZSBsYWJlbCwgdGhpcyBwcm9wZXJ0eSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGF0IGxhYmVsIHJlcXVpcmVzIGV4dHJhIGNvbnRleHQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2FyaWFMYWJlbCA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2xvZ1N2Yy5kZXByZWNhdGVkKCdTa3lUb2dnbGVTd2l0Y2hDb21wb25lbnQuYXJpYUxhYmVsJywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjpcbiAgICAgICAgICAnVG8gYWRkIGFuIEFSSUEgbGFiZWwgdG8gdGhlIHRvZ2dsZSBzd2l0Y2gsIHVzZSB0aGUgYGxhYmVsVGV4dGAgaW5wdXQgaW5zdGVhZCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFyaWFMYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXJpYUxhYmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRvZ2dsZSBzd2l0Y2ggaXMgc2VsZWN0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBjaGVja2VkID0gISF2YWx1ZTtcbiAgICBpZiAoY2hlY2tlZCAhPT0gdGhpcy4jX2NoZWNrZWQpIHtcbiAgICAgIHRoaXMuI19jaGVja2VkID0gY2hlY2tlZDtcbiAgICAgIHRoaXMuI29uQ2hhbmdlKGNoZWNrZWQpO1xuXG4gICAgICAvLyBEbyBub3QgbWFyayB0aGUgZmllbGQgYXMgXCJkaXJ0eVwiXG4gICAgICAvLyBpZiB0aGUgZmllbGQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aCBhIHZhbHVlLlxuICAgICAgaWYgKHRoaXMuI2lzRmlyc3RDaGFuZ2UgJiYgdGhpcy4jY29udHJvbCkge1xuICAgICAgICB0aGlzLiNjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIHRoaXMuI2lzRmlyc3RDaGFuZ2UgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19jaGVja2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdG9nZ2xlIHN3aXRjaCBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0b2dnbGUgc3dpdGNoLiBUaGUgaGVscCBpbmxpbmUgYnV0dG9uIGRpc3BsYXlzIGEgW3BvcG92ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wb3BvdmVyKVxuICAgKiB3aGVuIGNsaWNrZWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IGFuZCBvcHRpb25hbCB0aXRsZS4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgcG9wb3Zlci4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgaGVscFBvcG92ZXJDb250ZW50YCBpc1xuICAgKiBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwUG9wb3ZlclRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgaW5kZXggZm9yIHRoZSB0b2dnbGUgc3dpdGNoLiBJZiBub3QgZGVmaW5lZCwgdGhlIGluZGV4IGlzIHNldCB0byB0aGUgcG9zaXRpb25cbiAgICogb2YgdGhlIHRvZ2dsZSBzd2l0Y2ggb24gbG9hZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcblxuICAvKipcbiAgICogVGhlIHRleHQgdG8gZGlzcGxheSBhcyB0aGUgdG9nZ2xlIHN3aXRjaCdzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGhpZGUgYGxhYmVsVGV4dGAgZnJvbSB2aWV3LlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBsYWJlbEhpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgdG9nZ2xlIHN3aXRjaCBsYWJlbC4gQ2xpY2tpbmcgdGhlIGJ1dHRvbiBpbnZva2VzIFtnbG9iYWwgaGVscF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9kZXZlbG9wL2dsb2JhbC1oZWxwKVxuICAgKiBhcyBjb25maWd1cmVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgd2hlbiBgbGFiZWxUZXh0YCBpcyBhbHNvIHNwZWNpZmllZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWxwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgb2YgYSB0b2dnbGUgc3dpdGNoIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHRvZ2dsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5VG9nZ2xlU3dpdGNoQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBoYXNMYWJlbENvbXBvbmVudCA9IGZhbHNlO1xuICBwdWJsaWMgbGFiZWxJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBlbmFibGVJbmRpY2F0b3JBbmltYXRpb24gPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkcmVuKFNreVRvZ2dsZVN3aXRjaExhYmVsQ29tcG9uZW50KVxuICBwdWJsaWMgbGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8U2t5VG9nZ2xlU3dpdGNoTGFiZWxDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG4gICNpc0ZpcnN0Q2hhbmdlID0gdHJ1ZTtcbiAgcmVhZG9ubHkgI2xvZ1N2YyA9IGluamVjdChTa3lMb2dTZXJ2aWNlKTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfY2hlY2tlZCA9IGZhbHNlO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBpZFNlcnZpY2U6IFNreUlkU2VydmljZSkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy5sYWJlbElkID0gaWRTZXJ2aWNlLmdlbmVyYXRlSWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5sYWJlbENvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMuaGFzTGFiZWxDb21wb25lbnQgPSB0aGlzLmxhYmVsQ29tcG9uZW50cy5sZW5ndGggPiAwO1xuXG4gICAgICB0aGlzLmxhYmVsQ29tcG9uZW50cy5jaGFuZ2VzXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgobmV3TGFiZWxDb21wb25lbnRzKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYXNMYWJlbENvbXBvbmVudCA9IG5ld0xhYmVsQ29tcG9uZW50cy5sZW5ndGggPiAwO1xuICAgICAgICAgIC8vIEFsbG93IHRoZSB0ZW1wbGF0ZSB0byByZWxvYWQgYW55IEFSSUEgYXR0cmlidXRlcyB0aGF0IGFyZSByZWx5aW5nIG9uIHRoZVxuICAgICAgICAgIC8vIGxhYmVsIGNvbXBvbmVudCBleGlzdGluZyBpbiB0aGUgRE9NLlxuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0aGUgdmlldyB0byByZW5kZXIgYmVmb3JlIGFwcGx5aW5nIGFuaW1hdGlvbiBlZmZlY3RzLlxuICAgIC8vIChTb21lIGJyb3dzZXJzLCBzdWNoIGFzIEZpcmVmb3gsIGFwcGx5IHRoZSBhbmltYXRpb24gdG9vIGVhcmx5LilcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZW5hYmxlSW5kaWNhdG9yQW5pbWF0aW9uID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy4jY29udHJvbCkge1xuICAgICAgdGhpcy4jY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNvbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNvblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uQnV0dG9uQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuI3RvZ2dsZUNoZWNrZWQoKTtcbiAgICB0aGlzLiNlbWl0Q2hhbmdlRXZlbnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkJ1dHRvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAjb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICNlbWl0Q2hhbmdlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jb25DaGFuZ2UodGhpcy4jX2NoZWNrZWQpO1xuICAgIHRoaXMudG9nZ2xlQ2hhbmdlLmVtaXQoe1xuICAgICAgY2hlY2tlZDogdGhpcy4jX2NoZWNrZWQsXG4gICAgfSk7XG4gIH1cblxuICAjdG9nZ2xlQ2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICB9XG59XG4iLCI8c3BhblxuICBjbGFzcz1cInNreS10b2dnbGUtc3dpdGNoXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktdG9nZ2xlLXN3aXRjaC13aXRoLWxhYmVsJzogaGFzTGFiZWxDb21wb25lbnQgfHwgbGFiZWxUZXh0XG4gIH1cIlxuPlxuICA8YnV0dG9uXG4gICAgI3RvZ2dsZT1cInNreUlkXCJcbiAgICBjbGFzcz1cInNreS10b2dnbGUtc3dpdGNoLWJ1dHRvblwiXG4gICAgcm9sZT1cInN3aXRjaFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgc2t5SWRcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFRleHQgfHwgYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICFhcmlhTGFiZWwgJiYgKGhhc0xhYmVsQ29tcG9uZW50IHx8IGxhYmVsVGV4dCkgPyBsYWJlbElkIDogbnVsbFxuICAgIFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXRvZ2dsZS1zd2l0Y2gtY2hlY2tlZCc6IGNoZWNrZWQsXG4gICAgICAnc2t5LXRvZ2dsZS1zd2l0Y2gtZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXG4gICAgKGJsdXIpPVwib25CdXR0b25CbHVyKClcIlxuICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIlxuICA+XG4gICAgPGRpdiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cInNreS10b2dnbGUtc3dpdGNoLXN3aXRjaFwiPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJza3ktdG9nZ2xlLXN3aXRjaC1pbmRpY2F0b3JcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS10b2dnbGUtc3dpdGNoLXRyYW5zaXRpb24nOiBlbmFibGVJbmRpY2F0b3JBbmltYXRpb25cbiAgICAgICAgfVwiXG4gICAgICAgID4mbmJzcDs8L2lcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG4gIDxzcGFuPlxuICAgIEBpZiAoaGFzTGFiZWxDb21wb25lbnQgfHwgbGFiZWxUZXh0KSB7XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJza3ktdG9nZ2xlLXN3aXRjaC1sYWJlbFwiXG4gICAgICAgIFtmb3JdPVwidG9nZ2xlLmlkXCJcbiAgICAgICAgW2F0dHIuaWRdPVwibGFiZWxJZFwiXG4gICAgICA+XG4gICAgICAgIEBpZiAobGFiZWxUZXh0KSB7XG4gICAgICAgICAgQGlmICghbGFiZWxIaWRkZW4pIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2t5LXRvZ2dsZS1zd2l0Y2gtbGFiZWwtdGV4dFwiPnt7IGxhYmVsVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS10b2dnbGUtc3dpdGNoLWxhYmVsXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cbiAgICB9XG4gICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgQGlmIChsYWJlbFRleHQgJiYgKGhlbHBQb3BvdmVyQ29udGVudCB8fCBoZWxwS2V5KSkge1xuICAgICAgICA8c2t5LWhlbHAtaW5saW5lXG4gICAgICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgICAgIFtwb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICAgICAgW3BvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiIC8+XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG48L3NwYW4+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyToggleSwitchLabelComponent } from './toggle-switch-label.component';\nimport { SkyToggleSwitchComponent } from './toggle-switch.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyToggleSwitchModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchModule, declarations: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent], imports: [CommonModule,\n FormsModule,\n SkyHelpInlineModule,\n SkyIdModule,\n SkyTrimModule], exports: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchModule, imports: [CommonModule,\n FormsModule,\n SkyHelpInlineModule,\n SkyIdModule,\n SkyTrimModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: SkyToggleSwitchModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent],\n imports: [\n CommonModule,\n FormsModule,\n SkyHelpInlineModule,\n SkyIdModule,\n SkyTrimModule,\n ],\n exports: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLXN3aXRjaC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3RvZ2dsZS1zd2l0Y2gvdG9nZ2xlLXN3aXRjaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXpELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQWFyRSxNQUFNLE9BQU8scUJBQXFCOytHQUFyQixxQkFBcUI7Z0hBQXJCLHFCQUFxQixpQkFWakIsNkJBQTZCLEVBQUUsd0JBQXdCLGFBRXBFLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFdBQVc7WUFDWCxhQUFhLGFBRUwsNkJBQTZCLEVBQUUsd0JBQXdCO2dIQUV0RCxxQkFBcUIsWUFSOUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsV0FBVztZQUNYLGFBQWE7OzRGQUlKLHFCQUFxQjtrQkFYakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQztvQkFDdkUsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsYUFBYTtxQkFDZDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQztpQkFDbkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRNb2R1bGUsIFNreVRyaW1Nb2R1bGUgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcblxuaW1wb3J0IHsgU2t5VG9nZ2xlU3dpdGNoTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL3RvZ2dsZS1zd2l0Y2gtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRvZ2dsZVN3aXRjaENvbXBvbmVudCB9IGZyb20gJy4vdG9nZ2xlLXN3aXRjaC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lUb2dnbGVTd2l0Y2hMYWJlbENvbXBvbmVudCwgU2t5VG9nZ2xlU3dpdGNoQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUlkTW9kdWxlLFxuICAgIFNreVRyaW1Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTa3lUb2dnbGVTd2l0Y2hMYWJlbENvbXBvbmVudCwgU2t5VG9nZ2xlU3dpdGNoQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VG9nZ2xlU3dpdGNoTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL3NreXV4LWZvcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i2.SkyCharacterCounterScreenReaderPipe","i3","i1","numberAttribute4","i2","i3.SkyFormErrorsComponent","i5","i6","i7.SkyCheckboxLabelTextLabelComponent","i4","MAX_FILE_SIZE_DEFAULT","MIN_FILE_SIZE_DEFAULT","i1.SkyFileAttachmentService","i2.SkyFileItemService","i7","i8","i9","takeUntil","i2.SkyCharacterCounterIndicatorComponent","i7.SkyInputBoxHintTextPipe","i6.SkyInputBoxComponent","i7.SkyInputBoxControlDirective","i1.SkyFileItemService","i1.SkyRadioGroupIdService","i5.SkyFormErrorsComponent","i1.SkySelectionBoxAdapterService","i2.SkySelectionBoxAdapterService"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-forms.mjs","sources":["../../../../../libs/components/forms/src/lib/modules/shared/sky-forms-resources.module.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter-screen-reader.pipe.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter-indicator.component.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter-indicator.component.html","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter.directive.ts","../../../../../libs/components/forms/src/lib/modules/character-counter/character-counter.module.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors-enabled-token.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-error.component.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-error.module.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors.component.ts","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors.component.html","../../../../../libs/components/forms/src/lib/modules/form-error/form-errors.module.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-group.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-group.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label-text-label.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label-text-label.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox-label.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox.component.ts","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox.component.html","../../../../../libs/components/forms/src/lib/modules/checkbox/checkbox.module.ts","../../../../../libs/components/forms/src/lib/modules/field-group/field-group.component.ts","../../../../../libs/components/forms/src/lib/modules/field-group/field-group.component.html","../../../../../libs/components/forms/src/lib/modules/field-group/field-group.module.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment-label.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment-label.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/shared/file-size.pipe.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.service.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/shared/file-item.service.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachment/file-attachment.module.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-host.service.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-control.directive.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-hint-text.pipe.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box-adapter.service.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box.component.ts","../../../../../libs/components/forms/src/lib/modules/input-box/input-box.component.html","../../../../../libs/components/forms/src/lib/modules/input-box/input-box.module.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-item.component.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-item.component.html","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-drop/file-drop.module.ts","../../../../../libs/components/forms/src/lib/modules/file-attachment/file-attachments.module.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio-group-id.service.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio.component.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio.component.html","../../../../../libs/components/forms/src/lib/modules/radio/radio-group.component.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio-group.component.html","../../../../../libs/components/forms/src/lib/modules/radio/radio-label.component.ts","../../../../../libs/components/forms/src/lib/modules/radio/radio-label.component.html","../../../../../libs/components/forms/src/lib/modules/radio/radio.module.ts","../../../../../libs/components/forms/src/lib/modules/required-state/required-state.directive.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-adapter.service.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-description.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-description.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-grid.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-grid.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-header.component.ts","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box-header.component.html","../../../../../libs/components/forms/src/lib/modules/selection-box/selection-box.module.ts","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch-label.component.ts","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch-label.component.html","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch.component.ts","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch.component.html","../../../../../libs/components/forms/src/lib/modules/toggle-switch/toggle-switch.module.ts","../../../../../libs/components/forms/src/skyux-forms.ts"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-forms' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesService,\n} from '@skyux/i18n';\n\nconst RESOURCES: Record<string, SkyLibResources> = {\n 'EN-US': {\n skyux_character_count_message: { message: '{0} characters out of {1}' },\n skyux_character_count_over_limit: {\n message: 'You are over the character limit.',\n },\n skyux_form_error_character_count: {\n message: 'Limit {0} to {1} characters.',\n },\n skyux_form_error_date: { message: 'Select or enter a valid date.' },\n skyux_form_error_date_max: {\n message: 'Select or enter a date on or before {0}.',\n },\n skyux_form_error_date_min: {\n message: 'Select or enter a date on or after {0}.',\n },\n skyux_form_error_fuzzy_date_future_disabled: {\n message: 'Future dates are disabled. Select or enter a date in the past.',\n },\n skyux_form_error_fuzzy_date_invalid: {\n message: 'Select or enter a valid date.',\n },\n skyux_form_error_fuzzy_date_max_date: {\n message: 'Select or enter a date on or before {0}.',\n },\n skyux_form_error_fuzzy_date_min_date: {\n message: 'Select or enter a date on or after {0}.',\n },\n skyux_form_error_fuzzy_date_year_required: { message: 'Year is required.' },\n skyux_form_error_email: {\n message: 'Enter an email address with a valid format.',\n },\n skyux_form_error_maxlength: { message: 'Limit {0} to {1} characters.' },\n skyux_form_error_minlength: {\n message: '{0} must be at least {1} characters.',\n },\n skyux_form_error_phone: {\n message:\n 'Enter a phone number matching the format for the selected country.',\n },\n skyux_form_error_required: { message: '{0} is required.' },\n skyux_form_error_time: { message: 'Select or enter a valid time.' },\n skyux_form_error_url: { message: 'Enter a URL with a valid format.' },\n skyux_form_group_required: { message: 'Required' },\n skyux_file_attachment_button_label_choose_file: { message: 'Attach file' },\n skyux_file_attachment_button_label_choose_file_label: {\n message: 'Attach file for',\n },\n skyux_file_attachment_button_label_replace_file: {\n message: 'Replace file',\n },\n skyux_file_attachment_button_label_replace_file_label: {\n message: 'Replace file {0} for',\n },\n skyux_file_attachment_file_item_delete: { message: 'Delete {0}' },\n skyux_file_attachment_file_item_remove: { message: 'Remove file {0} for' },\n skyux_file_attachment_file_size_b_plural: { message: '{0} bytes' },\n skyux_file_attachment_file_size_b_singular: { message: '{0} byte' },\n skyux_file_attachment_file_size_gb: { message: '{0} GB' },\n skyux_file_attachment_file_size_kb: { message: '{0} KB' },\n skyux_file_attachment_file_size_mb: { message: '{0} MB' },\n skyux_file_attachment_file_upload_drag_file_here: {\n message: 'Drag a file here',\n },\n skyux_file_attachment_file_upload_drag_or_click: {\n message: 'Drag a file here or click to browse',\n },\n skyux_file_attachment_file_upload_drop_files_here: {\n message: 'Drop files here',\n },\n skyux_file_attachment_file_upload_file_added: { message: '{0} added.' },\n skyux_file_attachment_file_upload_file_replaced: {\n message: '{0} removed. {1} added.',\n },\n skyux_file_attachment_file_upload_file_removed: { message: '{0} removed.' },\n skyux_file_attachment_file_upload_image_preview_alt_text: {\n message: 'Image preview',\n },\n skyux_file_attachment_file_upload_invalid_file: {\n message: 'This file type is invalid',\n },\n skyux_file_attachment_file_upload_link_label: { message: 'Link to a file' },\n skyux_file_attachment_file_upload_or_click_to_browse: {\n message: 'or click to browse',\n },\n skyux_file_attachment_file_upload_link_done: { message: 'Done' },\n skyux_file_attachment_file_upload_link_added: {\n message: 'Link to {0} added.',\n },\n skyux_file_attachment_file_upload_link_removed: {\n message: 'Link to {0} removed.',\n },\n skyux_file_attachment_file_type_error_label_text: {\n message: 'Upload one of these file types: {0}.',\n },\n skyux_file_attachment_file_type_error_label_text_with_name: {\n message: '{0}: Upload one of these file types: {1}.',\n },\n skyux_file_attachment_max_file_size_error_label_text: {\n message: 'Upload a file under {0}.',\n },\n skyux_file_attachment_max_file_size_error_label_text_with_name: {\n message: '{0}: Upload a file under {1}.',\n },\n skyux_file_attachment_min_file_size_error_label_text: {\n message: 'Upload a file over {0}.',\n },\n skyux_file_attachment_min_file_size_error_label_text_with_name: {\n message: '{0}: Upload a file over {1}.',\n },\n skyux_file_attachment_label_no_file_chosen: { message: 'No file chosen.' },\n skyux_file_attachment_required: { message: 'Required' },\n skyux_input_box_help_inline_aria_label: {\n message: 'Show help content for {0}',\n },\n },\n 'FR-CA': {\n skyux_character_count_message: { message: '{0} caractères de {1}' },\n skyux_character_count_over_limit: {\n message: 'Vous avez dépassé la limite de caractères.',\n },\n skyux_form_error_character_count: {\n message: 'Limite {0} de {1} caractère(s).',\n },\n skyux_form_error_date: {\n message: 'Sélectionnez ou entrez une date valide.',\n },\n skyux_form_error_date_max: {\n message: 'Sélectionnez ou entrez une date le ou avant le {0}.',\n },\n skyux_form_error_date_min: {\n message: 'Sélectionnez ou entrez une date le ou après le {0}.',\n },\n skyux_form_error_fuzzy_date_future_disabled: {\n message:\n 'Les dates futures sont désactivées. Sélectionnez ou entrez une date dans le passé.',\n },\n skyux_form_error_fuzzy_date_invalid: {\n message: 'Sélectionnez ou entrez une date valide.',\n },\n skyux_form_error_fuzzy_date_max_date: {\n message: 'Sélectionnez ou entrez une date le ou avant le {0}.',\n },\n skyux_form_error_fuzzy_date_min_date: {\n message: 'Sélectionnez ou entrez une date le ou après le {0}.',\n },\n skyux_form_error_fuzzy_date_year_required: {\n message: 'L’année est requise.',\n },\n skyux_form_error_email: {\n message: 'Entrez une adresse courriel avec un format valide.',\n },\n skyux_form_error_maxlength: { message: 'Limite {0} de {1} caractère(s).' },\n skyux_form_error_minlength: {\n message: '{0} doit avoir au moins {1} caractère(s).',\n },\n skyux_form_error_phone: {\n message:\n 'Entrez un numéro de téléphone correspondant au format du pays sélectionné.',\n },\n skyux_form_error_required: { message: '{0} est requis.' },\n skyux_form_error_time: {\n message: 'Sélectionnez ou entrez une heure valide.',\n },\n skyux_form_error_url: { message: 'Entrez une URL avec un format valide.' },\n skyux_form_group_required: { message: 'Requis' },\n skyux_file_attachment_button_label_choose_file: {\n message: 'Joindre un fichier',\n },\n skyux_file_attachment_button_label_choose_file_label: {\n message: 'Joindre un fichier pour',\n },\n skyux_file_attachment_button_label_replace_file: {\n message: 'Remplacer le fichier',\n },\n skyux_file_attachment_button_label_replace_file_label: {\n message: 'Remplacer le fichier {0} pour',\n },\n skyux_file_attachment_file_item_delete: { message: 'Supprimer {0}' },\n skyux_file_attachment_file_item_remove: {\n message: 'Retirer le fichier {0} pour',\n },\n skyux_file_attachment_file_size_b_plural: { message: '{0} octets' },\n skyux_file_attachment_file_size_b_singular: { message: '{0} octet' },\n skyux_file_attachment_file_size_gb: { message: '{0} Go' },\n skyux_file_attachment_file_size_kb: { message: '{0} Ko' },\n skyux_file_attachment_file_size_mb: { message: '{0} Mo' },\n skyux_file_attachment_file_upload_drag_file_here: {\n message: 'Faites glisser un fichier ici',\n },\n skyux_file_attachment_file_upload_drag_or_click: {\n message: 'Faites glisser un fichier ici ou cliquez pour naviguer',\n },\n skyux_file_attachment_file_upload_drop_files_here: {\n message: 'Déplacez les fichiers ici',\n },\n skyux_file_attachment_file_upload_file_added: {\n message: '{0} a été ajouté.',\n },\n skyux_file_attachment_file_upload_file_replaced: {\n message: '{0} a été retiré. {1} a été ajouté.',\n },\n skyux_file_attachment_file_upload_file_removed: {\n message: '{0} a été retiré.',\n },\n skyux_file_attachment_file_upload_image_preview_alt_text: {\n message: 'Aperçu de l’image',\n },\n skyux_file_attachment_file_upload_invalid_file: {\n message: 'Ce type de fichier n’est pas valide',\n },\n skyux_file_attachment_file_upload_link_label: {\n message: 'Liens vers un fichier',\n },\n skyux_file_attachment_file_upload_or_click_to_browse: {\n message: 'ou cliquez pour naviguer',\n },\n skyux_file_attachment_file_upload_link_done: { message: 'Terminé' },\n skyux_file_attachment_file_upload_link_added: {\n message: 'Le lien vers {0} a été ajouté.',\n },\n skyux_file_attachment_file_upload_link_removed: {\n message: 'Le lien vers {0} a été retiré.',\n },\n skyux_file_attachment_file_type_error_label_text: {\n message: 'Téléversez l’un de ces types de fichier : {0}.',\n },\n skyux_file_attachment_file_type_error_label_text_with_name: {\n message: '{0} : Téléversez l’un de ces types de fichier : {1}.',\n },\n skyux_file_attachment_max_file_size_error_label_text: {\n message: 'Téléversez un fichier de moins de {0}.',\n },\n skyux_file_attachment_max_file_size_error_label_text_with_name: {\n message: '{0} : Téléversez un fichier de moins de {1}.',\n },\n skyux_file_attachment_min_file_size_error_label_text: {\n message: 'Téléversez un fichier de plus de {0}.',\n },\n skyux_file_attachment_min_file_size_error_label_text_with_name: {\n message: '{0} : Téléversez un fichier de plus de {1}.',\n },\n skyux_file_attachment_label_no_file_chosen: {\n message: 'Aucun fichier choisi.',\n },\n skyux_file_attachment_required: { message: 'Requis' },\n skyux_input_box_help_inline_aria_label: {\n message: 'Afficher le contenu de l’aide pour {0}',\n },\n },\n};\n\nSkyLibResourcesService.addResources(RESOURCES);\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n})\nexport class SkyFormsResourcesModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'skyCharacterCounterScreenReader',\n})\nexport class SkyCharacterCounterScreenReaderPipe implements PipeTransform {\n #previousAnnouncementPoint: number | undefined;\n\n public transform(\n characterCount: number | undefined,\n characterCountLimit: number | undefined,\n ): string {\n /* Safety check */\n /* istanbul ignore if */\n if (characterCount === undefined || characterCountLimit === undefined) {\n return '';\n }\n\n // We want to announce every 10 characters if we are within 50 of the limit or every 50 otherwise.\n const modulus =\n characterCountLimit - Math.floor(characterCount / 10) * 10 <= 50\n ? 10\n : 50;\n\n if (\n characterCount === characterCountLimit ||\n characterCount % modulus === 0 ||\n this.#previousAnnouncementPoint === undefined\n ) {\n this.#previousAnnouncementPoint = characterCount;\n } else {\n // We want the floor of the previous announcement and modulus in case the previous announcement wasn't an announcement point.\n const previousAnnouncementQuotient = Math.floor(\n this.#previousAnnouncementPoint / modulus,\n );\n // Lower limit of what announcement should have been made for the current count\n const currentAnnouncementQuotient = Math.floor(characterCount / modulus);\n // Next announcement that would be made if the current count increases\n const currentAnnouncementNextAnnouncement = Math.ceil(\n characterCount / modulus,\n );\n\n // Jump to the appropriate announcement point if the count jumps. For example, if going from 43 of 50 characters to 21 of 50 characters.\n if (\n currentAnnouncementQuotient !== previousAnnouncementQuotient &&\n currentAnnouncementNextAnnouncement !== previousAnnouncementQuotient\n ) {\n this.#previousAnnouncementPoint =\n Math.floor(characterCount / modulus) * modulus;\n }\n }\n\n return this.#previousAnnouncementPoint.toLocaleString();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'sky-character-counter-indicator',\n templateUrl: './character-counter-indicator.component.html',\n styleUrls: ['./character-counter-indicator.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyCharacterCounterIndicatorComponent {\n #_characterCountLimit = 0;\n #_characterCount = 0;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef) {\n this.#changeDetector = changeDetector;\n }\n\n public get characterCount(): number {\n return this.#_characterCount;\n }\n\n @Input()\n public set characterCount(count: number) {\n this.#_characterCount = count;\n this.#changeDetector.markForCheck();\n }\n\n public get characterCountLimit(): number {\n return this.#_characterCountLimit;\n }\n\n @Input()\n public set characterCountLimit(limit: number) {\n this.#_characterCountLimit = limit;\n this.#changeDetector.markForCheck();\n }\n}\n","<span\n class=\"sky-character-count-label sky-font-deemphasized\"\n [ngClass]=\"{ 'sky-error-label': characterCount > characterCountLimit }\"\n>\n {{ characterCount + '/' + characterCountLimit }}\n</span>\n<span aria-live=\"polite\" class=\"sky-screen-reader-only\">\n @if (characterCount > characterCountLimit) {\n <ng-container>{{\n 'skyux_character_count_over_limit' | skyLibResources\n }}</ng-container>\n } @else {\n @if (\n characterCount | skyCharacterCounterScreenReader: characterCountLimit;\n as screenReaderCount\n ) {\n <ng-container>{{\n 'skyux_character_count_message'\n | skyLibResources: screenReaderCount : characterCountLimit\n }}</ng-container>\n }\n }\n</span>\n","import { Directive, Input } from '@angular/core';\nimport {\n AbstractControl,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { SkyCharacterCounterIndicatorComponent } from './character-counter-indicator.component';\n\n/**\n * Creates an input field that validates the number of characters. Place this directive on\n * an `input` or `textarea` element. If users enter more characters than allowed, then the\n * input field is invalid and the component displays an error indicator.\n * @required\n */\n@Directive({\n selector: '[skyCharacterCounter]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyCharacterCounterInputDirective,\n multi: true,\n },\n ],\n standalone: false,\n})\nexport class SkyCharacterCounterInputDirective implements Validator {\n /**\n * The character count indicator component that displays the character count,\n * character limit, and over-the-limit indicator. Place this directive on an `input` or\n * `textarea` element.\n */\n @Input()\n public get skyCharacterCounterIndicator():\n | SkyCharacterCounterIndicatorComponent\n | undefined {\n return this.#_skyCharacterCounterIndicator;\n }\n public set skyCharacterCounterIndicator(\n value: SkyCharacterCounterIndicatorComponent | undefined,\n ) {\n this.#_skyCharacterCounterIndicator = value;\n this.#updateIndicatorLimit();\n }\n\n /**\n * The maximum number of characters allowed in the input field. Place this directive\n * on an `input` or `textarea` element. This property accepts `number` values.\n * @required\n */\n @Input()\n public set skyCharacterCounterLimit(value: number | undefined) {\n this.#skyCharacterCounterLimitOrDefault = value ?? 0;\n this.#updateIndicatorLimit();\n }\n\n #_skyCharacterCounterIndicator:\n | SkyCharacterCounterIndicatorComponent\n | undefined;\n\n #skyCharacterCounterLimitOrDefault = 0;\n\n public validate(control: AbstractControl): ValidationErrors | null {\n const value = control.value;\n\n this.#updateIndicatorCount((value && value.length) || 0);\n\n if (!value) {\n return null;\n }\n\n const limit = this.#skyCharacterCounterLimitOrDefault;\n\n if (value.length > this.#skyCharacterCounterLimitOrDefault) {\n // This is needed to apply the appropriate error styles to the input.\n control.markAsTouched();\n\n return {\n skyCharacterCounter: {\n invalid: value,\n limit,\n },\n };\n }\n\n return null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.#validatorChange = fn;\n }\n\n #updateIndicatorCount(count: number): void {\n if (this.skyCharacterCounterIndicator) {\n this.skyCharacterCounterIndicator.characterCount = count;\n }\n }\n\n #updateIndicatorLimit(): void {\n if (this.skyCharacterCounterIndicator) {\n this.skyCharacterCounterIndicator.characterCountLimit =\n this.#skyCharacterCounterLimitOrDefault;\n }\n\n this.#validatorChange();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #validatorChange = (): void => {};\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyCharacterCounterIndicatorComponent } from './character-counter-indicator.component';\nimport { SkyCharacterCounterScreenReaderPipe } from './character-counter-screen-reader.pipe';\nimport { SkyCharacterCounterInputDirective } from './character-counter.directive';\n\n@NgModule({\n declarations: [\n SkyCharacterCounterInputDirective,\n SkyCharacterCounterIndicatorComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCharacterCounterScreenReaderPipe,\n SkyFormsResourcesModule,\n ],\n exports: [\n SkyCharacterCounterInputDirective,\n SkyCharacterCounterIndicatorComponent,\n ],\n})\nexport class SkyCharacterCounterModule {}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * @internal\n */\nexport const SKY_FORM_ERRORS_ENABLED = new InjectionToken<boolean>(\n 'SKY_FORM_ERRORS_ENABLED',\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n inject,\n} from '@angular/core';\nimport { SkyStatusIndicatorModule } from '@skyux/indicators';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { SKY_FORM_ERRORS_ENABLED } from './form-errors-enabled-token';\n\n/**\n * Displays default and custom form field error messages for form field components.\n * Set `labelText` on the `SkyInputBoxComponent` to automatically display required,\n * maximum length, minimum length, date, email, phone number, time, and URL errors.\n * To display custom errors, include `sky-form-error` elements in the `SkyInputBoxComponent`.\n */\n@Component({\n selector: 'sky-form-error',\n imports: [SkyStatusIndicatorModule],\n template: `\n @if (formErrors) {\n <sky-status-indicator\n class=\"sky-form-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n >\n {{ errorText }}\n </sky-status-indicator>\n }\n `,\n styleUrl: './form-error.component.scss',\n hostDirectives: [SkyThemeComponentClassDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyFormErrorComponent {\n /**\n * The name of the error.\n * @required\n */\n @Input({ required: true })\n public errorName!: string;\n\n /**\n * The error message to display.\n * @required\n */\n @Input({ required: true })\n public errorText!: string;\n\n @HostBinding('attr.data-error-name') public get dataErrorName(): string {\n return this.errorName;\n }\n\n protected readonly formErrors = inject(SKY_FORM_ERRORS_ENABLED, {\n optional: true,\n });\n\n constructor() {\n if (!this.formErrors) {\n throw new Error(\n 'The `sky-form-error` component is not supported in the provided context.',\n );\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorComponent } from './form-error.component';\n\n@NgModule({\n imports: [SkyFormErrorComponent],\n exports: [SkyFormErrorComponent],\n})\nexport class SkyFormErrorModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n booleanAttribute,\n} from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { SkyIdModule } from '@skyux/core';\n\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyFormErrorComponent } from './form-error.component';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-form-errors',\n imports: [SkyIdModule, SkyFormErrorComponent, SkyFormsResourcesModule],\n templateUrl: './form-errors.component.html',\n styleUrls: ['./form-errors.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyFormErrorsComponent {\n /**\n * The validation errors from the form control.\n */\n @Input()\n public errors: ValidationErrors | null | undefined;\n\n /**\n * Input label text to display in the error messages.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * Indicates whether the parent component's control is touched\n */\n @Input({ transform: booleanAttribute })\n public touched = false;\n\n /**\n * Indicates whether the parent component's control is dirty\n */\n @Input({ transform: booleanAttribute })\n public dirty = false;\n\n @HostBinding('attr.aria-atomic')\n protected readonly ariaAtomic = 'true';\n\n @HostBinding('attr.aria-live')\n protected readonly ariaLive = 'assertive';\n\n @HostBinding('attr.aria-relevant')\n protected readonly ariaRelevant = 'all';\n}\n","@if (labelText) {\n @if (touched) {\n @if (errors?.['required']) {\n <sky-form-error\n errorName=\"required\"\n [errorText]=\"'skyux_form_error_required' | skyLibResources: labelText\"\n />\n }\n\n @if (errors?.['minlength']; as minLengthError) {\n <sky-form-error\n errorName=\"minlength\"\n [errorText]=\"\n 'skyux_form_error_minlength'\n | skyLibResources: labelText : minLengthError.requiredLength\n \"\n />\n }\n\n @if (errors?.['skyDate'] && errors?.['skyDate']['invalid']) {\n <sky-form-error\n errorName=\"invalidDate\"\n [errorText]=\"'skyux_form_error_date' | skyLibResources\"\n />\n }\n\n @if (errors?.['skyDate'] && errors?.['skyDate']['minDate']) {\n <sky-form-error\n errorName=\"minDate\"\n [errorText]=\"\n 'skyux_form_error_date_min'\n | skyLibResources: errors?.['skyDate']['minDateFormatted']\n \"\n />\n }\n\n @if (errors?.['skyDate'] && errors?.['skyDate']['maxDate']) {\n <sky-form-error\n errorName=\"maxDate\"\n [errorText]=\"\n 'skyux_form_error_date_max'\n | skyLibResources: errors?.['skyDate']['maxDateFormatted']\n \"\n />\n }\n\n @if (\n errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['futureDisabled']\n ) {\n <sky-form-error\n errorName=\"fuzzyFutureDisabled\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_future_disabled' | skyLibResources\n \"\n />\n }\n\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['invalid']) {\n <sky-form-error\n errorName=\"fuzzyInvalidDate\"\n [errorText]=\"'skyux_form_error_fuzzy_date_invalid' | skyLibResources\"\n />\n }\n\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['maxDate']) {\n <sky-form-error\n errorName=\"fuzzyMaxDate\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_max_date'\n | skyLibResources: errors?.['skyFuzzyDate']['maxDateFormatted']\n \"\n />\n }\n\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['minDate']) {\n <sky-form-error\n errorName=\"fuzzyMinDate\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_min_date'\n | skyLibResources\n : errors?.['skyFuzzyDate'] &&\n errors?.['skyFuzzyDate']['minDateFormatted']\n \"\n />\n }\n\n @if (errors?.['skyFuzzyDate'] && errors?.['skyFuzzyDate']['yearRequired']) {\n <sky-form-error\n errorName=\"fuzzyYearRequired\"\n [errorText]=\"\n 'skyux_form_error_fuzzy_date_year_required' | skyLibResources\n \"\n />\n }\n\n @if (errors?.['skyEmail']) {\n <sky-form-error\n errorName=\"email\"\n [errorText]=\"'skyux_form_error_email' | skyLibResources\"\n />\n }\n\n @if (errors?.['skyPhoneField']) {\n <sky-form-error\n errorName=\"phone\"\n [errorText]=\"'skyux_form_error_phone' | skyLibResources\"\n />\n }\n\n @if (errors?.['skyTime']) {\n <sky-form-error\n errorName=\"time\"\n [errorText]=\"'skyux_form_error_time' | skyLibResources\"\n />\n }\n\n @if (errors?.['skyUrl']) {\n <sky-form-error\n errorName=\"url\"\n [errorText]=\"'skyux_form_error_url' | skyLibResources\"\n />\n }\n }\n\n @if (touched || dirty) {\n @if (errors?.['maxlength']; as maxLengthError) {\n <sky-form-error\n errorName=\"maxlength\"\n [errorText]=\"\n 'skyux_form_error_maxlength'\n | skyLibResources: labelText : maxLengthError.requiredLength\n \"\n />\n }\n <ng-content />\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorComponent } from './form-error.component';\nimport { SkyFormErrorsComponent } from './form-errors.component';\n\n/**\n * @internal\n */\n@NgModule({\n imports: [SkyFormErrorsComponent, SkyFormErrorComponent],\n exports: [SkyFormErrorsComponent],\n})\nexport class SkyFormErrorsModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n HostBinding,\n Input,\n TemplateRef,\n booleanAttribute,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport {\n FormGroup,\n NG_VALIDATORS,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { SkyIdModule, SkyIdService } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeComponentClassDirective, SkyThemeModule } from '@skyux/theme';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyCheckboxGroupHeadingLevel } from './checkbox-group-heading-level';\nimport { SkyCheckboxGroupHeadingStyle } from './checkbox-group-heading-style';\n\nfunction numberAttribute4(value: unknown): number {\n return numberAttribute(value, 4);\n}\n\n/**\n * Organizes checkboxes into a group.\n */\n@Component({\n selector: 'sky-checkbox-group',\n templateUrl: './checkbox-group.component.html',\n styleUrl: './checkbox-group.component.scss',\n imports: [\n CommonModule,\n SkyFormErrorsModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIdModule,\n SkyThemeModule,\n ],\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyCheckboxGroupComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ],\n hostDirectives: [SkyThemeComponentClassDirective],\n})\nexport class SkyCheckboxGroupComponent implements Validator {\n /**\n * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the checkbox group fieldset legend. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * The text to display as the checkbox group's heading.\n */\n @Input({ required: true })\n public headingText!: string;\n\n /**\n * Indicates whether to hide the `headingText`.\n */\n @Input({ transform: booleanAttribute })\n public headingHidden = false;\n\n /**\n * The semantic heading level in the document structure. By default, the heading text is not wrapped in a heading element.\n */\n @Input({ transform: numberAttribute })\n public set headingLevel(value: SkyCheckboxGroupHeadingLevel | undefined) {\n this.#_headingLevel = value && !isNaN(value) ? value : undefined;\n this.#updateStackedClasses();\n }\n\n public get headingLevel(): SkyCheckboxGroupHeadingLevel | undefined {\n return this.#_headingLevel;\n }\n\n /**\n * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n * @default 4\n */\n @Input({ transform: numberAttribute4 })\n public set headingStyle(value: SkyCheckboxGroupHeadingStyle) {\n this.headingClass = `sky-font-heading-${value}`;\n }\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * Whether the checkbox group is required.\n */\n @Input({ transform: booleanAttribute })\n public required = false;\n\n /**\n * Whether the checkbox group is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the checkbox group.\n */\n @Input({ transform: booleanAttribute })\n public set stacked(value: boolean) {\n this.#_stacked = value;\n this.#updateStackedClasses();\n }\n\n public get stacked(): boolean {\n return this.#_stacked;\n }\n\n /**\n * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the checkbox group heading. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `headingText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n @HostBinding('class.sky-form-field-stacked')\n public stackedLg = false;\n\n @HostBinding('class.sky-field-group-stacked')\n public stackedXL = false;\n\n readonly #idSvc = inject(SkyIdService);\n protected errorId = this.#idSvc.generateId();\n protected headingClass = 'sky-font-heading-4';\n protected formErrorsDataId = 'checkbox-group-form-errors';\n protected formGroup: FormGroup | null | undefined;\n\n #_headingLevel: SkyCheckboxGroupHeadingLevel | undefined;\n #_stacked = false;\n\n public validate(formGroup: FormGroup): ValidationErrors | null {\n this.formGroup ??= formGroup;\n\n if (!this.required) {\n return null;\n }\n\n const controlNames = Object.keys(formGroup.controls);\n let atLeastOneSelected = false;\n\n controlNames.forEach((controlName) => {\n const control = formGroup.get(controlName);\n if (control?.value) {\n atLeastOneSelected = true;\n }\n });\n\n if (!atLeastOneSelected) {\n return { required: true };\n } else {\n return null;\n }\n }\n\n #updateStackedClasses(): void {\n this.stackedLg = !this.headingLevel && this.stacked;\n this.stackedXL = !!this.headingLevel && this.stacked;\n }\n}\n","<fieldset\n class=\"sky-checkbox-group\"\n [attr.aria-invalid]=\"!!formGroup?.errors\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-errormessage]=\"\n headingText && formGroup?.errors ? errorId : undefined\n \"\n>\n <legend\n class=\"sky-checkbox-group-legend\"\n [ngClass]=\"{\n 'sky-screen-reader-only': headingHidden\n }\"\n >\n <span\n class=\"sky-checkbox-group-heading\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >\n @switch (headingLevel) {\n @case (3) {\n <h3 [class]=\"headingClass\">{{ headingText }}</h3>\n }\n @case (4) {\n <h4 [class]=\"headingClass\">{{ headingText }}</h4>\n }\n @case (5) {\n <h5 [class]=\"headingClass\">{{ headingText }}</h5>\n }\n @default {\n <span [class]=\"'sky-checkbox-group-heading-text ' + headingClass\">{{\n headingText\n }}</span>\n }\n }\n </span>\n @if (required) {\n <span class=\"sky-screen-reader-only\">{{\n 'skyux_form_group_required' | skyLibResources\n }}</span>\n }\n @if (helpPopoverContent || helpKey) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </legend>\n <div\n #hintTextEl=\"skyId\"\n skyId\n [ngClass]=\"{\n 'sky-checkbox-group-hint-text': !!hintText\n }\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n <span class=\"sky-checkbox-group-inline sky-switch-icon-group\">\n <ng-content select=\"sky-checkbox[iconName]\" />\n </span>\n <span class=\"sky-checkbox-group-stacked\">\n <ng-content select=\"sky-checkbox\" />\n </span>\n</fieldset>\n<sky-form-errors\n [id]=\"errorId\"\n [attr.data-sky-id]=\"formErrorsDataId\"\n [errors]=\"formGroup?.errors\"\n [labelText]=\"headingText\"\n [touched]=\"formGroup?.touched\"\n [dirty]=\"formGroup?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n","import { Component, Input } from '@angular/core';\n\n/**\n@internal\n */\n@Component({\n selector: 'sky-checkbox-label-text-label',\n styleUrls: [\n './checkbox-label-text-label.default.component.scss',\n './checkbox-label-text-label.modern.component.scss',\n ],\n templateUrl: './checkbox-label-text-label.component.html',\n standalone: false,\n})\nexport class SkyCheckboxLabelTextLabelComponent {\n @Input()\n public labelHidden = false;\n\n @Input()\n public set labelText(value: string) {\n this.#_labelText = value.trim();\n }\n\n public get labelText(): string {\n return this.#_labelText;\n }\n\n #_labelText = '';\n}\n","@if (!labelHidden) {\n <span class=\"sky-switch-label\">{{ labelText }}</span>\n}\n","import { Component } from '@angular/core';\n\n/**\n * Specifies a label for the checkbox. To display a help button beside the label, include a help button element, such as\n * `sky-help-inline`, in the `sky-checkbox-label` element and a `sky-control-help` CSS class on that help button\n * element.\n * @deprecated Use `labelText` input on `sky-checkbox-component` instead.\n */\n@Component({\n selector: 'sky-checkbox-label',\n templateUrl: './checkbox-label.component.html',\n standalone: false,\n})\nexport class SkyCheckboxLabelComponent {}\n","<span class=\"sky-switch-label\"\n ><span skyTrim><ng-content /></span\n ><span class=\"sky-control-help-container\"\n ><ng-content select=\".sky-control-help\" /></span\n></span>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\n\nimport { SkyCheckboxChange } from './checkbox-change';\n\n/**\n * Replaces the HTML input element with `type=\"checkbox\"`. When users select a checkbox, its value\n * is driven through an `ngModel` attribute that you specify on the `sky-checkbox` element.\n */\n@Component({\n selector: 'sky-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: [\n './checkbox.default.component.scss',\n './checkbox.modern.component.scss',\n ],\n hostDirectives: [SkyThemeComponentClassDirective],\n providers: [\n { provide: NG_VALIDATORS, useExisting: SkyCheckboxComponent, multi: true },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyCheckboxComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ],\n standalone: false,\n})\nexport class SkyCheckboxComponent\n implements AfterViewInit, ControlValueAccessor, Validator\n{\n /**\n * The ARIA label for the checkbox. This sets the checkbox's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/components/checkbox#accessibility)\n * when the checkbox does not include a visible label. You must set this property for icon\n * checkboxes. If the checkbox includes a visible label, use `labelledBy` instead.\n * @deprecated Use `labelText` instead.\n */\n @Input()\n public set label(value: string | undefined) {\n this.#_label = value;\n\n if (value) {\n this.#logger.deprecated('SkyCheckboxComponent.label', {\n deprecationMajorVersion: 9,\n });\n }\n }\n\n public get label(): string | undefined {\n return this.#_label;\n }\n\n /**\n * The HTML element ID of the element that labels the\n * checkbox. This sets the checkbox's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/components/checkbox#accessibility).\n * If the checkbox does not include a visible label, use `label` instead.\n * @deprecated Use `labelText` instead.\n */\n @Input()\n public set labelledBy(value: string | undefined) {\n this.#_labelledBy = value;\n\n if (value) {\n this.#logger.deprecated('SkyCheckboxComponent.labelledBy', {\n deprecationMajorVersion: 9,\n });\n }\n }\n\n public get labelledBy(): string | undefined {\n return this.#_labelledBy;\n }\n\n /**\n * The ID for the checkbox.\n * If a value is not provided, an autogenerated ID is used.\n */\n @Input()\n public set id(value: string | undefined) {\n if (value) {\n this.inputId = `sky-checkbox-${value}-input`;\n } else {\n this.inputId = `sky-checkbox-${this.#defaultId}-input`;\n }\n }\n\n /**\n * Whether to disable the checkbox on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n if (value !== this.#_disabled) {\n this.#_disabled = value;\n this.#disabledChange.next(value);\n }\n }\n\n /**\n * Whether the checkbox is disabled.\n */\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The index for the checkbox. If not defined, the index is set to the position of the\n * checkbox on load.\n */\n @Input()\n public tabindex: number | undefined = 0;\n\n /**\n * The name for the checkbox.\n * If a value is not provided, an autogenerated ID is used.\n */\n @Input()\n public set name(value: string | undefined) {\n if (value && value !== this.#defaultId) {\n this.#_name = value;\n } else {\n this.#_name = `sky-checkbox-${this.#defaultId}`;\n }\n }\n\n public get name(): string {\n return this.#_name;\n }\n\n /**\n * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the checkbox label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * Fires when the selected value changes.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public change = new EventEmitter<SkyCheckboxChange>();\n\n /**\n * The SVG icon to display in place of the checkbox. To group icon checkboxes\n * like in the demo, place the checkboxes within a `sky-checkbox-group`.\n */\n @Input()\n public iconName: string | undefined;\n\n /**\n * The background color type after users select a checkbox where the\n * `icon` property displays an icon in place of the checkbox. The valid options correspond to\n * [the label component's](https://developer.blackbaud.com/skyux/components/label)\n * label types. `\"info\"` creates a blue background, `\"success\"` creates a green\n * background, `\"warning\"` creates an orange background, and `\"danger\"` creates a red background.\n * @default \"info\"\n * @deprecated The `checkboxType` input is no longer supported.\n */\n @Input()\n public set checkboxType(value: string | undefined) {\n if (value) {\n this.#logger.deprecated('SkyCheckboxComponent.checkboxType', {\n deprecationMajorVersion: 7,\n });\n }\n\n this.#_checkboxType = value ? value.toLowerCase() : 'info';\n }\n\n public get checkboxType(): string {\n return this.#_checkboxType;\n }\n\n /**\n * Whether the checkbox is selected.\n * @default false\n */\n @Input()\n public set checked(value: boolean | undefined) {\n const checked = !!value;\n if (checked !== this.#_checked) {\n this.#_checked = checked;\n this.#checkedChange.next(checked);\n }\n }\n\n /**\n * Whether the checkbox is selected.\n */\n public get checked(): boolean {\n return this.#_checked;\n }\n\n /**\n * Whether the checkbox is in the indeterminate state. This has no visual effect for icon checkboxes.\n * @internal\n */\n @Input()\n public set indeterminate(value: boolean | undefined) {\n if (value !== this.#_indeterminate) {\n this.#_indeterminate = !!value;\n this.#indeterminateChange.next(this.#_indeterminate);\n if (this.inputEl) {\n this.inputEl.nativeElement.indeterminate = this.#_indeterminate;\n this.#changeDetector.markForCheck();\n }\n }\n }\n\n public get indeterminate(): boolean {\n return this.#_indeterminate;\n }\n\n /**\n * Whether the input is required for form validation.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input element so that forms display an invalid state until the input element\n * is complete.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public required = false;\n\n /**\n * The text to display as the checkbox's label. Use this instead of the `sky-checkbox-label` when the label is text-only.\n * Specifying `labelText` also enables automatic error message handling for checkbox.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * Indicates whether to hide the `labelText`.\n */\n @Input({ transform: booleanAttribute })\n public labelHidden = false;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * Whether the checkbox is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the checkbox. If the checkbox is within a checkbox group,\n * set `stacked` on the checkbox group component instead.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.sky-form-field-stacked')\n public stacked = false;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the checkbox label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * Fires when users select or deselect the checkbox.\n */\n @Output()\n public get checkedChange(): Observable<boolean> {\n return this.#checkedChangeObs;\n }\n\n /**\n * Fires when the selected value changes.\n */\n @Output()\n public get disabledChange(): Observable<boolean> {\n return this.#disabledChangeObs;\n }\n\n /**\n * Fires when the indeterminate state changes.\n * @internal\n */\n @Output()\n public get indeterminateChange(): Observable<boolean> {\n return this.#indeterminateChangeObs;\n }\n\n @ViewChild('inputEl', { read: ElementRef })\n public set inputEl(el: ElementRef | undefined) {\n this.#_inputEl = el;\n if (el && this.indeterminate) {\n el.nativeElement.indeterminate = this.indeterminate;\n }\n }\n\n public get inputEl(): ElementRef | undefined {\n return this.#_inputEl;\n }\n\n protected get isCheckboxRequired(): boolean {\n return !!(\n this.required ||\n this.control?.hasValidator(Validators.requiredTrue) ||\n this.control?.hasValidator(Validators.required)\n );\n }\n\n protected control: AbstractControl | undefined;\n protected inputId = '';\n\n #checkedChange: Subject<boolean>;\n #checkedChangeObs: Observable<boolean>;\n #disabledChange: Subject<boolean>;\n #disabledChangeObs: Observable<boolean>;\n #indeterminateChange: Subject<boolean>;\n #indeterminateChangeObs: Observable<boolean>;\n\n #_checked = false;\n #_checkboxType = 'info';\n #_disabled = false;\n #_indeterminate = false;\n #_inputEl: ElementRef | undefined;\n #_name = '';\n #_label: string | undefined;\n #_labelledBy: string | undefined;\n\n #changeDetector = inject(ChangeDetectorRef);\n #idSvc = inject(SkyIdService);\n #defaultId = this.#idSvc.generateId();\n #logger = inject(SkyLogService);\n\n protected readonly errorId = this.#idSvc.generateId();\n\n constructor() {\n this.#checkedChange = new Subject<boolean>();\n this.#disabledChange = new Subject<boolean>();\n this.#indeterminateChange = new Subject<boolean>();\n\n this.#checkedChangeObs = this.#checkedChange.asObservable();\n this.#disabledChangeObs = this.#disabledChange.asObservable();\n this.#indeterminateChangeObs = this.#indeterminateChange.asObservable();\n this.id = this.#defaultId;\n this.name = this.#defaultId;\n }\n\n public ngAfterViewInit(): void {\n this.#checkedChange.next(this.checked);\n this.#disabledChange.next(this.disabled);\n this.#indeterminateChange.next(this.indeterminate);\n }\n\n public validate(control: AbstractControl<boolean>): ValidationErrors | null {\n this.control ||= control;\n\n // In template-driven forms, Angular's native 'required' attribute directive only works\n // on `input[type=\"checkbox\"]` selectors, so we need to write the validation logic ourselves.\n // Also, we're treating Validators.required the same as Validators.requiredTrue internally, so\n // we need to account for that decision in our custom validator.\n return this.isCheckboxRequired && control.value !== true\n ? { required: true }\n : null;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n public writeValue(value: any): void {\n this.checked = !!value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n public registerOnChange(fn: (value: any) => void): void {\n this.#controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n public registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /**\n * Event handler for checkbox input element.\n * Toggles checked state if element is not disabled.\n */\n public onInteractionEvent(event: Event): void {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the `change` output.\n event.stopPropagation();\n\n if (!this.disabled) {\n this.indeterminate = false;\n this.#toggle();\n this.#controlValueAccessorChangeFn(this.checked);\n this.#emitChangeEvent();\n }\n }\n\n public onInputBlur(): void {\n this.onTouched();\n }\n\n /** Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor. */\n\n // istanbul ignore next\n public onTouched: () => any = () => {};\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #controlValueAccessorChangeFn: (value: any) => void = (value) => {};\n\n #emitChangeEvent(): void {\n this.change.emit({ checked: this.checked });\n }\n\n /**\n * Toggles the `checked` value between true and false\n */\n #toggle(): void {\n this.checked = !this.checked;\n }\n}\n","<span class=\"sky-checkbox-outer-wrapper\">\n <label\n class=\"sky-checkbox-wrapper sky-switch\"\n [ngClass]=\"{\n 'sky-control-label-required': isCheckboxRequired,\n 'sky-switch-disabled': disabled\n }\"\n >\n <input\n #inputEl\n class=\"sky-checkbox-input sky-switch-input\"\n type=\"checkbox\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n [required]=\"isCheckboxRequired\"\n [tabIndex]=\"tabindex\"\n [attr.aria-label]=\"labelText || label\"\n [attr.aria-labelledby]=\"labelText ? undefined : labelledBy\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-required]=\"isCheckboxRequired ? true : null\"\n [attr.aria-invalid]=\"!!control?.errors\"\n [attr.aria-errormessage]=\"\n labelText && control?.errors ? errorId : undefined\n \"\n [ngClass]=\"{\n 'sky-switch-invalid':\n (control?.touched || control?.dirty) && control?.errors\n }\"\n (blur)=\"onInputBlur()\"\n (change)=\"onInteractionEvent($event)\"\n />\n <span\n class=\"sky-switch-control\"\n [ngClass]=\"{\n 'sky-switch-control-icon': iconName,\n 'sky-switch-control-info': checkboxType === 'info',\n 'sky-switch-control-success': checkboxType === 'success',\n 'sky-switch-control-warning': checkboxType === 'warning',\n 'sky-switch-control-danger': checkboxType === 'danger'\n }\"\n [skyThemeClass]=\"{\n 'sky-rounded-corners': 'default'\n }\"\n >\n @if (iconName) {\n <sky-icon variant=\"solid\" [iconName]=\"iconName\" />\n } @else {\n @if (indeterminate) {\n <sky-icon\n class=\"sky-checkbox-icon-indeterminate sky-checkbox-icon-modern-indeterminate\"\n iconName=\"square\"\n variant=\"solid\"\n iconSize=\"s\"\n />\n } @else if (checked) {\n <sky-icon\n class=\"sky-checkbox-icon-modern-checked\"\n iconName=\"checkmark\"\n iconSize=\"s\"\n />\n }\n }\n </span>\n\n @if (labelText) {\n <sky-checkbox-label-text-label\n [labelText]=\"labelText\"\n [labelHidden]=\"labelHidden\"\n />\n } @else {\n <ng-content select=\"sky-checkbox-label\" />\n }\n </label>\n @if ((helpPopoverContent || helpKey) && labelText) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n class=\"sky-checkbox-help-inline\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n</span>\n<span #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-checkbox-hint-text sky-checkbox-form-margin\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n</span>\n<sky-form-errors\n [class.sky-checkbox-form-margin]=\"labelText && control?.errors\"\n [id]=\"errorId\"\n [errors]=\"control?.errors\"\n [labelText]=\"labelText\"\n [touched]=\"control?.touched\"\n [dirty]=\"control?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyCheckboxGroupComponent } from './checkbox-group.component';\nimport { SkyCheckboxLabelTextLabelComponent } from './checkbox-label-text-label.component';\nimport { SkyCheckboxLabelComponent } from './checkbox-label.component';\nimport { SkyCheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [\n SkyCheckboxComponent,\n SkyCheckboxLabelComponent,\n SkyCheckboxLabelTextLabelComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyTrimModule,\n SkyThemeModule,\n ],\n exports: [\n SkyCheckboxComponent,\n SkyCheckboxLabelComponent,\n SkyCheckboxGroupComponent,\n SkyFormErrorModule,\n ],\n})\nexport class SkyCheckboxModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n HostBinding,\n Input,\n TemplateRef,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core';\nimport { SkyIdModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFieldGroupHeadingLevel } from './field-group-heading-level';\nimport { SkyFieldGroupHeadingStyle } from './field-group-heading-style';\n\nfunction numberAttribute3(value: unknown): number {\n return numberAttribute(value, 3);\n}\n\n/**\n * Organizes form fields into a group.\n */\n@Component({\n selector: 'sky-field-group',\n templateUrl: './field-group.component.html',\n styleUrl: './field-group.component.scss',\n imports: [CommonModule, SkyHelpInlineModule, SkyIdModule, SkyThemeModule],\n})\nexport class SkyFieldGroupComponent {\n /**\n * The text to display as the field group's heading.\n */\n @Input({ required: true })\n public headingText!: string;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * Indicates whether to hide the `headingText`.\n */\n @Input({ transform: booleanAttribute })\n public headingHidden = false;\n\n /**\n * Whether the field group is stacked on another field group. When specified, the appropriate\n * vertical spacing is automatically added to the field group.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.sky-field-group-stacked')\n public stacked = false;\n\n /**\n * The semantic heading level in the document structure.\n * @default 3\n */\n @Input({ transform: numberAttribute3 })\n public headingLevel: SkyFieldGroupHeadingLevel = 3;\n\n /**\n * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n * @default 3\n */\n @Input({ transform: numberAttribute3 })\n public set headingStyle(value: SkyFieldGroupHeadingStyle) {\n this.headingClass = `sky-font-heading-${value}`;\n }\n\n /**\n * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the field group heading. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the field group heading. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `headingText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n protected headingClass = 'sky-font-heading-3';\n}\n","<fieldset\n class=\"sky-field-group\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n>\n <legend\n class=\"sky-field-group-legend\"\n [ngClass]=\"{\n 'sky-screen-reader-only': headingHidden\n }\"\n >\n <span class=\"sky-field-group-heading\">\n @switch (headingLevel) {\n @case (4) {\n <h4 [class]=\"headingClass\">{{ headingText }}</h4>\n }\n @default {\n <h3 [class]=\"headingClass\">{{ headingText }}</h3>\n }\n }\n </span>\n @if (helpPopoverContent || helpKey) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n class=\"sky-field-group-help-inline\"\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </legend>\n <div #hintTextEl=\"skyId\" skyId class=\"sky-field-group-hint-text-wrapper\">\n @if (hintText) {\n <div\n class=\"sky-field-group-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n </div>\n <div class=\"sky-field-group-content\">\n <ng-content />\n </div>\n</fieldset>\n","import { NgModule } from '@angular/core';\n\nimport { SkyFieldGroupComponent } from './field-group.component';\n\n@NgModule({\n imports: [SkyFieldGroupComponent],\n exports: [SkyFieldGroupComponent],\n})\nexport class SkyFieldGroupModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewChild,\n inject,\n} from '@angular/core';\nimport { SkyIdModule, SkyLogService, SkyTrimModule } from '@skyux/core';\n\n/**\n * Displays a label above the file attachment element. To display a help button\n * beside the label, include a help button element, such as `sky-help-inline`,\n * in the `sky-file-attachment-label` element and a `sky-control-help` CSS class\n * on that help button element.\n * @deprecated Use the `labelText` input on the single file attachment component\n * instead.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkyIdModule, SkyTrimModule],\n selector: 'sky-file-attachment-label',\n styleUrl: 'file-attachment-label.component.scss',\n templateUrl: './file-attachment-label.component.html',\n})\nexport class SkyFileAttachmentLabelComponent {\n @ViewChild('labelContentId')\n public labelContentId: { id: string } | undefined;\n\n constructor() {\n inject(SkyLogService).deprecated('SkyFileAttachmentLabelComponent', {\n deprecationMajorVersion: 9,\n replacementRecommendation:\n 'To add a label to single file attachment, use the `labelText` input ' +\n 'on the `sky-file-attachment` component instead.',\n });\n }\n}\n","<span class=\"sky-control-label\"\n ><span #labelContentId=\"skyId\" skyId skyTrim><ng-content /></span\n ><span class=\"sky-control-help-container\"\n ><ng-content select=\".sky-control-help\" /></span\n></span>\n","import { formatNumber } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyFileSize',\n})\nexport class SkyFileSizePipe implements PipeTransform {\n readonly #resourcesService: SkyLibResourcesService;\n readonly #defaultLocale = 'en-US';\n\n constructor(resourcesService: SkyLibResourcesService) {\n this.#resourcesService = resourcesService;\n }\n\n public transform(input?: number | string | null): string {\n let decimalPlaces = 0,\n dividend = 1,\n template: string;\n\n if (input === null || input === undefined) {\n return '';\n }\n\n if (typeof input === 'string') {\n input = Number.parseInt(input);\n }\n\n if (Math.abs(input) === 1) {\n template = 'skyux_file_attachment_file_size_b_singular';\n } else if (input < 1024) {\n template = 'skyux_file_attachment_file_size_b_plural';\n } else if (input < Math.pow(1024, 2)) {\n template = 'skyux_file_attachment_file_size_kb';\n dividend = 1024;\n } else if (input < Math.pow(1024, 3)) {\n template = 'skyux_file_attachment_file_size_mb';\n dividend = Math.pow(1024, 2);\n decimalPlaces = 1;\n } else {\n template = 'skyux_file_attachment_file_size_gb';\n dividend = Math.pow(1024, 3);\n decimalPlaces = 1;\n }\n\n const roundedSize =\n Math.floor(input / (dividend / Math.pow(10, decimalPlaces))) /\n Math.pow(10, decimalPlaces);\n\n const formattedSize = formatNumber(\n roundedSize,\n this.#defaultLocale,\n '.0-3',\n );\n\n return this.#getString(template, formattedSize);\n }\n\n #getString(key: string, ...args: unknown[]): string {\n // TODO: Need to implement the async `getString` method in a breaking change.\n return this.#resourcesService.getStringForLocale(\n { locale: this.#defaultLocale },\n key,\n ...args,\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Joins an array of IDs with a single space.\n * @internal\n */\n@Pipe({\n name: 'skyFileAttachmentJoinIds',\n})\nexport class SkyFileAttachmentJoinIdsPipe implements PipeTransform {\n public transform(...ids: (string | null | undefined)[]): string | null {\n // Remove undefined values and join with a \" \".\n return ids && ids.filter((id) => id).join(' ');\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileValidateFn } from '../shared/file-validate-function';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyFileAttachmentService {\n public checkFiles(\n files: SkyFileItem[],\n minFileSize: number,\n maxFileSize: number,\n acceptedTypes?: string,\n validateFn?: SkyFileValidateFn,\n ): SkyFileItem[] {\n const fileResults: SkyFileItem[] = [];\n\n files.forEach((fileItem) => {\n if (fileItem.file.size < minFileSize) {\n fileItem.errorType = 'minFileSize';\n fileItem.errorParam = minFileSize.toString();\n fileResults.push(fileItem);\n } else if (fileItem.file.size > maxFileSize) {\n fileItem.errorType = 'maxFileSize';\n fileItem.errorParam = maxFileSize.toString();\n fileResults.push(fileItem);\n } else if (this.fileTypeRejected(fileItem.file.type, acceptedTypes)) {\n fileItem.errorType = 'fileType';\n fileItem.errorParam = this.#getAcceptedTypesList(acceptedTypes);\n fileResults.push(fileItem);\n } else if (validateFn) {\n const errorParam = validateFn(fileItem);\n\n if (errorParam) {\n fileItem.errorType = 'validate';\n fileItem.errorParam = errorParam;\n }\n fileResults.push(fileItem);\n } else {\n fileResults.push(fileItem);\n }\n });\n return fileResults;\n }\n\n /**\n * Returns `true` if a directory is found in the provided `files` parameter.\n */\n public hasDirectory(files: FileList): boolean {\n for (let index = 0; index < files.length; index++) {\n const file: any = files.item(index);\n if (\n file.webkitGetAsEntry &&\n file.webkitGetAsEntry() &&\n file.webkitGetAsEntry().isDirectory\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n public fileTypeRejected(fileType: string, acceptedTypes?: string): boolean {\n if (!acceptedTypes) {\n return false;\n }\n\n if (!fileType) {\n return true;\n }\n\n const acceptedTypesUpper = acceptedTypes.toUpperCase();\n const typeArray = acceptedTypesUpper.split(',');\n\n return !this.#fileTypeInArray(typeArray, fileType.toUpperCase());\n }\n\n #fileTypeInArray(typeArray: string[], fileType: string): boolean {\n if (typeArray.indexOf(fileType) !== -1) {\n return true;\n }\n\n for (const type of typeArray) {\n const validSubtype = this.#getMimeSubtype(type);\n\n if (validSubtype === '*') {\n if (this.#getMimeMainType(type) === this.#getMimeMainType(fileType)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n #getAcceptedTypesList(rawTypes: string | undefined): string | undefined {\n return rawTypes\n ?.toUpperCase()\n .split(',')\n .map((type) => {\n const subType = this.#getMimeSubtype(type);\n return subType.startsWith('X-') ? subType.substr(2) : subType;\n })\n .join(', ');\n }\n\n #getMimeSubtype(type: string): string {\n return type.substr(type.indexOf('/') + 1, type.length);\n }\n\n #getMimeMainType(type: string): string {\n return type.substr(0, type.indexOf('/'));\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SkyFileItem } from './file-item';\n\n/**\n * @internal\n */\n@Injectable({ providedIn: 'root' })\nexport class SkyFileItemService {\n public isFile(fileItem: SkyFileItem): boolean {\n const file = fileItem.file;\n\n return !!(\n file &&\n file !== undefined &&\n file !== null &&\n file.size !== undefined &&\n file.size !== null\n );\n }\n\n public isImage(fileItem: SkyFileItem): boolean {\n const fileTypeUpper = this.getFileTypeUpper(fileItem);\n const slashIndex = fileTypeUpper.indexOf('/');\n\n if (slashIndex >= 0) {\n switch (fileTypeUpper.substr(fileTypeUpper.indexOf('/') + 1)) {\n case 'BMP':\n case 'GIF':\n case 'JPEG':\n case 'PNG':\n return true;\n default:\n break;\n }\n }\n\n return false;\n }\n\n public getFileExtensionUpper(fileItem: SkyFileItem): string {\n let extension = '',\n name: string;\n\n /* istanbul ignore else */\n /* sanity check */\n if (fileItem) {\n const file = fileItem.file;\n if (file) {\n /* istanbul ignore next */\n name = file.name || '';\n /* istanbul ignore next */\n extension = name.substr(name.lastIndexOf('.')) || '';\n } else {\n extension = '';\n }\n }\n\n return extension.toUpperCase();\n }\n\n public getFileTypeUpper(fileItem: SkyFileItem): string {\n let fileType = '';\n /* istanbul ignore else */\n /* sanity check */\n if (fileItem) {\n const file = fileItem.file;\n if (file) {\n fileType = file.type || '';\n } else {\n fileType = '';\n }\n }\n\n return fileType.toUpperCase();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DOCUMENT,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n Self,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {\n SkyFileReaderService,\n SkyIdModule,\n SkyIdService,\n SkyLiveAnnouncerService,\n} from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport {\n SkyThemeComponentClassDirective,\n SkyThemeModule,\n SkyThemeService,\n} from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { SkyFormErrorComponent } from '../../form-error/form-error.component';\nimport { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsComponent } from '../../form-error/form-errors.component';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileItemErrorType } from '../shared/file-item-error-type';\nimport { SkyFileItemService } from '../shared/file-item.service';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport { SkyFileValidateFn } from '../shared/file-validate-function';\n\nimport { SkyFileAttachmentChange } from './file-attachment-change';\nimport { SkyFileAttachmentClick } from './file-attachment-click';\nimport { SkyFileAttachmentJoinIdsPipe } from './file-attachment-join-ids.pipe';\nimport { SkyFileAttachmentLabelComponent } from './file-attachment-label.component';\nimport { SkyFileAttachmentService } from './file-attachment.service';\n\nconst MAX_FILE_SIZE_DEFAULT = 500000;\nconst MIN_FILE_SIZE_DEFAULT = 0;\n\n/**\n * Provides an element to attach a single local file.\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n SkyFileAttachmentJoinIdsPipe,\n SkyFileSizePipe,\n SkyFormErrorComponent,\n SkyFormErrorsComponent,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyThemeModule,\n SkyThemeComponentClassDirective,\n ],\n providers: [\n SkyFileAttachmentService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ],\n hostDirectives: [SkyThemeComponentClassDirective],\n selector: 'sky-file-attachment',\n styleUrl: './file-attachment.component.scss',\n templateUrl: './file-attachment.component.html',\n})\nexport class SkyFileAttachmentComponent\n implements\n AfterViewInit,\n AfterContentInit,\n ControlValueAccessor,\n OnInit,\n OnDestroy\n{\n readonly #document = inject(DOCUMENT);\n\n readonly #fileReaderSvc = inject(SkyFileReaderService);\n\n /**\n * The comma-delimited string literal of MIME types that users can attach.\n * By default, all file types are allowed.\n */\n @Input()\n public acceptedTypes: string | undefined;\n\n /**\n * A custom error message to display when a file doesn't match the accepted types.\n * This replaces a default error message that lists all accepted types.\n */\n @Input()\n public acceptedTypesErrorMessage: string | undefined;\n\n /**\n * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n */\n @Input({ transform: booleanAttribute })\n public disabled = false;\n\n /**\n * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the single file attachment label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the single file attachment label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * The text to display as the file attachment's label.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * Whether to hide `labelText` from view.\n */\n @Input({ transform: booleanAttribute })\n public labelHidden = false;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * The maximum size in bytes for valid files.\n * @default 500000\n */\n @Input()\n public set maxFileSize(value: number | undefined) {\n this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;\n }\n\n public get maxFileSize(): number {\n return this.#_maxFileSize;\n }\n\n /**\n * The minimum size in bytes for valid files.\n * @default 0\n */\n @Input()\n public set minFileSize(value: number | undefined) {\n this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;\n }\n\n public get minFileSize(): number {\n return this.#_minFileSize;\n }\n\n /**\n * Whether the single file attachment is stacked on another form component. When specified,\n * the appropriate vertical spacing is automatically added to the single file attachment.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.sky-form-field-stacked')\n public stacked = false;\n\n /**\n * The custom validation function. This validation runs alongside the internal\n * file validation. This function takes a `SkyFileItem` object as a parameter.\n * @deprecated Add a custom Angular `Validator` function to the `FormControl` instead.\n */\n @Input()\n public validateFn: SkyFileValidateFn | undefined;\n\n /**\n * Fires when users add or remove files.\n * @deprecated Subscribe to the form control's `valueChanges` event instead.\n */\n @Output()\n public fileChange = new EventEmitter<SkyFileAttachmentChange>();\n\n /**\n * Fires when users select the file name link. Make sure to bind the event.\n * If you do not, the file name link will be a dead link.\n */\n @Output()\n public fileClick = new EventEmitter<SkyFileAttachmentClick>();\n\n public acceptedOver = false;\n\n public hasLabelComponent = false;\n\n public rejectedOver = false;\n\n /**\n * Whether the input is required for form validation.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input element so that forms display an invalid state until the input element\n * is complete.\n * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n */\n @Input({ transform: booleanAttribute })\n public required = false;\n\n public set value(value: SkyFileItem | undefined | null) {\n // The null check is needed to address a bug in Angular 4.\n // writeValue is being called twice, first time with a phantom null value\n // See: https://github.com/angular/angular/issues/14988\n const isNewValue = value !== this.value && value !== null;\n\n if (isNewValue) {\n if (value) {\n this.isImage = this.#fileItemService.isImage(value);\n } else {\n this.isImage = false;\n }\n this.#setFileName(value);\n\n this.#_value = value;\n this.#onChange(value);\n this.#updateFileAttachmentButton();\n }\n }\n\n public get value(): SkyFileItem | undefined {\n return this.#_value;\n }\n\n public currentThemeName: string | undefined;\n\n public fileName = '';\n\n public showFileAttachmentButton = true;\n\n public truncatedFileName = '';\n\n @ViewChild('fileInputRef')\n public inputEl: ElementRef | undefined;\n\n @ContentChildren(SkyFileAttachmentLabelComponent)\n public labelComponents:\n | QueryList<SkyFileAttachmentLabelComponent>\n | undefined;\n\n public isImage = false;\n\n protected get isRequired(): boolean {\n return (\n this.required ||\n (this.ngControl?.control?.hasValidator(Validators.required) ?? false)\n );\n }\n\n #enterEventTarget: EventTarget | undefined | null;\n\n #ngUnsubscribe = new Subject<void>();\n\n #_maxFileSize = MAX_FILE_SIZE_DEFAULT;\n\n #_minFileSize = MIN_FILE_SIZE_DEFAULT;\n\n #_value: SkyFileItem | undefined;\n\n #changeDetector: ChangeDetectorRef;\n #fileAttachmentService: SkyFileAttachmentService;\n #fileItemService: SkyFileItemService;\n #themeSvc: SkyThemeService | undefined;\n\n readonly #idSvc = inject(SkyIdService);\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n protected ngControl: NgControl | undefined;\n protected errorId = this.#idSvc.generateId();\n protected labelId = this.#idSvc.generateId();\n\n protected fileErrorName: SkyFileItemErrorType | undefined;\n protected fileErrorParam: string | undefined;\n protected fileErrorValidation: ValidationErrors | null | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n fileAttachmentService: SkyFileAttachmentService,\n fileItemService: SkyFileItemService,\n @Self() @Optional() ngControl?: NgControl,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#changeDetector = changeDetector;\n this.#fileAttachmentService = fileAttachmentService;\n this.#fileItemService = fileItemService;\n this.ngControl = ngControl;\n this.#themeSvc = themeSvc;\n\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnInit(): void {\n if (this.#themeSvc) {\n this.#themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((themeSettings) => {\n this.currentThemeName = themeSettings.currentSettings.theme.name;\n this.#updateFileAttachmentButton();\n });\n }\n }\n\n public ngAfterViewInit(): void {\n // This is needed to address a bug in Angular 7.\n // When a control value is set initially, its value is not represented on the view.\n // See: https://github.com/angular/angular/issues/13792\n // Of note is the parent check which allows us to determine if the form is reactive.\n // Without this check there is a changed before checked error\n /* istanbul ignore else */\n if (this.ngControl) {\n setTimeout(() => {\n this.ngControl?.control?.setValue(this.value, {\n emitEvent: false,\n });\n this.#changeDetector.markForCheck();\n });\n\n // There is some disconnect between the host control and the form control.\n // This handles that by running change detection whenever the host control\n // has any changes. This is a workaround for this existing bug and will be\n // addressed in a future story that refactors file attachment.\n this.ngControl.control?.events.subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n }\n\n public ngAfterContentInit(): void {\n if (this.labelComponents) {\n this.hasLabelComponent = this.labelComponents.length > 0;\n this.#changeDetector.detectChanges();\n\n // Handles updating classes when label changes\n this.labelComponents.changes\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(\n (newLabelComponents: QueryList<SkyFileAttachmentLabelComponent>) => {\n this.hasLabelComponent = newLabelComponents.length > 0;\n this.#changeDetector.markForCheck();\n },\n );\n }\n }\n\n public onButtonBlur(): void {\n // Only mark the field as touched on blur when the document still has focus. This\n // prevents validation from occurring while the user has the file dialog open,\n // since focus moves away from the document and onto the file dialog before this\n // event fires.\n if (this.#document.hasFocus()) {\n this.#onTouched();\n }\n }\n\n public onFileCancel(): void {\n this.#onTouched();\n }\n\n public onDropClicked(): void {\n /* istanbul ignore else */\n if (this.inputEl) {\n this.inputEl.nativeElement.click();\n }\n }\n\n public fileChangeEvent(fileChangeEvent: Event): void {\n /** Set a timeout here to allow the browser to regain context from the system dialog. Without this, error messages do not read out correctly to screen readers. */\n setTimeout(() => {\n this.#handleFiles(\n (fileChangeEvent.target as HTMLInputElement | undefined)?.files,\n );\n }, 500);\n }\n\n public fileDragEnter(dragEnterEvent: DragEvent): void {\n // Save this target to know when the drag event leaves\n this.#enterEventTarget = dragEnterEvent.target;\n dragEnterEvent.stopPropagation();\n dragEnterEvent.preventDefault();\n }\n\n public fileDragOver(dragOverEvent: DragEvent): void {\n const transfer = dragOverEvent.dataTransfer;\n\n dragOverEvent.stopPropagation();\n dragOverEvent.preventDefault();\n\n if (transfer) {\n if (transfer.items) {\n const files = Array.from(transfer.items);\n\n for (const file of files) {\n if (\n file.type &&\n this.#fileAttachmentService.fileTypeRejected(\n file.type,\n this.acceptedTypes,\n )\n ) {\n this.rejectedOver = true;\n this.acceptedOver = false;\n return;\n }\n }\n\n if (files.length > 0 && !this.acceptedOver) {\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n } else if (transfer.files) {\n // If the browser does not support DataTransfer.items,\n // defer file-type checking to drop handler.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n }\n }\n\n public fileDrop(dropEvent: DragEvent): void {\n dropEvent.stopPropagation();\n dropEvent.preventDefault();\n\n this.#enterEventTarget = undefined;\n this.rejectedOver = false;\n this.acceptedOver = false;\n\n if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {\n if (dropEvent.dataTransfer.files.length > 1) {\n return;\n }\n\n if (\n this.#fileAttachmentService.hasDirectory(dropEvent.dataTransfer.files)\n ) {\n return;\n }\n\n this.#handleFiles(dropEvent.dataTransfer.files);\n }\n }\n\n public fileDragLeave(dragLeaveEvent: DragEvent): void {\n if (this.#enterEventTarget === dragLeaveEvent.target) {\n this.rejectedOver = false;\n this.acceptedOver = false;\n }\n }\n\n public deleteFileAttachment(): void {\n const fileName = this.value?.file.name;\n this.value = undefined;\n this.#emitFileChangeEvent(this.value);\n\n /* istanbul ignore else: safety check */\n if (fileName) {\n this.#announceState(\n 'skyux_file_attachment_file_upload_file_removed',\n fileName,\n );\n }\n\n this.#changeDetector.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this.fileChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public registerOnChange(fn: (value: any) => any): void {\n this.#onChange = fn;\n }\n public registerOnTouched(fn: () => any): void {\n this.#onTouched = fn;\n }\n\n public writeValue(value: any): void {\n this.value = value;\n this.#changeDetector.markForCheck();\n }\n\n /**\n * @internal\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.#changeDetector.markForCheck();\n }\n\n public emitClick(): void {\n /* istanbul ignore else */\n if (this.value) {\n this.fileClick.emit({\n file: this.value,\n });\n }\n }\n\n #announceState(resourceString: string, ...args: any[]): void {\n this.#resourcesSvc\n .getString(resourceString, ...args)\n .pipe(take(1))\n .subscribe((internationalizedString) => {\n this.#liveAnnouncerSvc.announce(internationalizedString);\n });\n }\n\n #emitFileChangeEvent(currentFile?: SkyFileItem): void {\n if (currentFile && !currentFile.errorType) {\n this.writeValue(currentFile);\n this.fileErrorName = undefined;\n this.fileErrorParam = undefined;\n this.fileErrorValidation = undefined;\n } else {\n this.writeValue(undefined);\n // Makes sure value accessor is marked as dirty even if current file is undefined\n this.#onChange(undefined);\n this.fileErrorValidation = { fileError: true };\n this.fileErrorName = currentFile?.errorType;\n this.fileErrorParam = currentFile?.errorParam;\n }\n this.fileChange.emit({\n file: currentFile,\n } as SkyFileAttachmentChange);\n\n /* istanbul ignore else */\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n }\n\n async #loadFile(file: SkyFileItem): Promise<void> {\n if (file.file) {\n try {\n const previousFileName = this.value?.file.name;\n\n if (previousFileName) {\n this.#announceState(\n 'skyux_file_attachment_file_upload_file_replaced',\n previousFileName,\n file.file.name,\n );\n } else {\n this.#announceState(\n 'skyux_file_attachment_file_upload_file_added',\n file.file.name,\n );\n }\n\n file.url = await this.#fileReaderSvc.readAsDataURL(file.file);\n\n this.#emitFileChangeEvent(file);\n } catch {\n this.#emitFileChangeEvent(file);\n }\n }\n }\n\n #handleFiles(fileList?: FileList | null): void {\n this.#onTouched();\n\n if (fileList) {\n const files: SkyFileItem[] = [];\n\n if ('item' in fileList) {\n for (let index = 0; index < fileList.length; index++) {\n files.push({\n file: fileList.item(index),\n } as SkyFileItem);\n }\n }\n\n const processedFiles = this.#fileAttachmentService.checkFiles(\n files,\n this.minFileSize,\n this.maxFileSize,\n this.acceptedTypes,\n this.validateFn,\n );\n\n for (const file of processedFiles) {\n if (file.errorType) {\n this.#emitFileChangeEvent(file);\n } else {\n void this.#loadFile(file);\n }\n }\n }\n }\n\n #setFileName(file?: SkyFileItem): void {\n if (file) {\n const dropName =\n this.#fileItemService.isFile(file) && file.file.name\n ? file.file.name\n : file.url;\n\n this.fileName = dropName;\n\n if (dropName.length > 26) {\n this.truncatedFileName = dropName.slice(0, 26) + '...';\n } else {\n this.truncatedFileName = dropName;\n }\n } else {\n this.fileName = '';\n this.truncatedFileName = '';\n }\n }\n\n #updateFileAttachmentButton(): void {\n this.showFileAttachmentButton = !(\n this.value && this.currentThemeName === 'modern'\n );\n this.#changeDetector.markForCheck();\n }\n\n // istanbul ignore next\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n #onChange = (_: any): void => {\n return;\n };\n // istanbul ignore next\n #onTouched = (): void => {\n return;\n };\n}\n","<div class=\"sky-file-attachment-wrapper\">\n <div\n class=\"sky-file-attachment-label-wrapper\"\n [ngClass]=\"{\n 'sky-control-label-required':\n !labelText && isRequired && hasLabelComponent\n }\"\n >\n @if (labelText) {\n @if (!labelHidden) {\n <span\n class=\"sky-control-label\"\n [attr.id]=\"labelId\"\n [ngClass]=\"{\n 'sky-control-label-required': isRequired\n }\"\n >{{ labelText }}</span\n >\n }\n } @else {\n <ng-content select=\"sky-file-attachment-label\" />\n }\n @if (isRequired && (hasLabelComponent || labelText)) {\n <span class=\"sky-screen-reader-only\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span>\n }\n @if (labelText && (helpPopoverContent || helpKey)) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n [labelText]=\"labelText\"\n [helpKey]=\"helpKey\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </div>\n <div\n class=\"sky-file-attachment-upload sky-file-attachment sky-file-attachment-target\"\n [ngClass]=\"{\n 'sky-file-attachment-accept': acceptedOver,\n 'sky-file-attachment-reject': rejectedOver\n }\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragover)=\"fileDragOver($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n >\n <div\n #fileDropDescriptionRef=\"skyId\"\n aria-hidden=\"true\"\n class=\"sky-screen-reader-only\"\n role=\"tooltip\"\n skyId\n >\n {{ 'skyux_file_attachment_file_upload_drag_or_click' | skyLibResources }}\n </div>\n <input\n #fileInputRef\n hidden\n tabindex=\"-1\"\n type=\"file\"\n [attr.accept]=\"acceptedTypes || null\"\n [disabled]=\"disabled\"\n [required]=\"isRequired\"\n (change)=\"fileChangeEvent($event)\"\n (cancel)=\"onFileCancel()\"\n />\n @if (showFileAttachmentButton) {\n <button\n class=\"sky-file-attachment-btn sky-btn sky-btn-default\"\n type=\"button\"\n [attr.aria-describedby]=\"\n hintText && hintTextEl.id\n | skyFileAttachmentJoinIds: fileDropDescriptionRef.id\n \"\n [attr.aria-labelledby]=\"\n attachButtonLabelRef.id\n | skyFileAttachmentJoinIds\n : (labelText\n ? labelId\n : labelComponents?.get(0)?.labelContentId?.id)\n \"\n [attr.aria-invalid]=\"!!(ngControl?.errors ?? fileErrorValidation)\"\n [attr.aria-errormessage]=\"\n !!(ngControl?.errors ?? fileErrorValidation) ? errorId : undefined\n \"\n [disabled]=\"disabled\"\n (click)=\"onDropClicked()\"\n (blur)=\"onButtonBlur()\"\n >\n <sky-icon iconName=\"folder-open\" />\n {{\n value\n ? ('skyux_file_attachment_button_label_replace_file'\n | skyLibResources)\n : ('skyux_file_attachment_button_label_choose_file'\n | skyLibResources)\n }}\n </button>\n }\n @if (value && !isImage && currentThemeName === 'modern') {\n <sky-icon\n class=\"sky-file-attachment-icon\"\n iconName=\"document\"\n iconSize=\"xl\"\n />\n }\n @if (value || currentThemeName === 'default') {\n <span class=\"sky-file-attachment-file-link\">\n @if (value) {\n <a\n class=\"sky-btn sky-btn-link-inline\"\n [attr.title]=\"fileName\"\n (click)=\"emitClick()\"\n >\n {{ truncatedFileName }}\n </a>\n } @else {\n <span class=\"sky-file-attachment-none sky-font-deemphasized\">\n {{ 'skyux_file_attachment_label_no_file_chosen' | skyLibResources }}\n </span>\n }\n </span>\n }\n\n @if (value) {\n <button\n class=\"sky-btn sky-btn-icon-borderless sky-file-attachment-delete\"\n type=\"button\"\n [attr.aria-labelledby]=\"\n deleteButtonLabelRef.id\n | skyFileAttachmentJoinIds\n : (labelText\n ? labelId\n : labelComponents?.get(0)?.labelContentId?.id)\n \"\n [disabled]=\"disabled\"\n (click)=\"deleteFileAttachment()\"\n >\n <sky-icon iconName=\"delete\" />\n </button>\n }\n </div>\n\n @if (value && isImage) {\n <img\n class=\"sky-file-attachment-preview-img\"\n [alt]=\"\n 'skyux_file_attachment_file_upload_image_preview_alt_text'\n | skyLibResources\n \"\n [src]=\"value.url\"\n />\n }\n</div>\n<div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-file-attachment-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n</div>\n\n<sky-form-errors\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"labelText\"\n [touched]=\"ngControl?.touched\"\n [dirty]=\"ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n @if (ngControl?.touched) {\n @if (fileErrorName === 'fileType') {\n <sky-form-error\n errorName=\"fileType\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_file_type_error_label_text'\n | skyLibResources: fileErrorParam\n \"\n />\n } @else if (fileErrorName === 'maxFileSize') {\n <sky-form-error\n errorName=\"maxFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_max_file_size_error_label_text'\n | skyLibResources: (fileErrorParam | skyFileSize)\n \"\n />\n } @else if (fileErrorName === 'minFileSize') {\n <sky-form-error\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text'\n | skyLibResources: (fileErrorParam | skyFileSize)\n \"\n />\n }\n }\n</sky-form-errors>\n\n<span\n #attachButtonLabelRef=\"skyId\"\n aria-hidden=\"true\"\n class=\"sky-screen-reader-only\"\n skyId\n>\n {{\n value\n ? ('skyux_file_attachment_button_label_replace_file_label'\n | skyLibResources: fileName)\n : ('skyux_file_attachment_button_label_choose_file_label'\n | skyLibResources)\n }}\n</span>\n\n<span\n #deleteButtonLabelRef=\"skyId\"\n aria-hidden=\"true\"\n class=\"sky-screen-reader-only\"\n skyId\n>\n {{ 'skyux_file_attachment_file_item_remove' | skyLibResources: fileName }}\n</span>\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorModule } from '../../form-error/form-error.module';\n\nimport { SkyFileAttachmentLabelComponent } from './file-attachment-label.component';\nimport { SkyFileAttachmentComponent } from './file-attachment.component';\n\n@NgModule({\n exports: [\n SkyFileAttachmentComponent,\n SkyFileAttachmentLabelComponent,\n SkyFormErrorModule,\n ],\n imports: [SkyFileAttachmentComponent, SkyFileAttachmentLabelComponent],\n})\nexport class SkyFileAttachmentModule {}\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyInputBoxPopulateArgs } from './input-box-populate-args';\nimport { SkyInputBoxComponent } from './input-box.component';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyInputBoxHostService implements OnDestroy {\n #host: SkyInputBoxComponent | undefined;\n #requiredSubject = new BehaviorSubject<boolean>(false);\n\n public required = this.#requiredSubject.asObservable();\n\n public get controlId(): string {\n return this.#host?.controlId ?? '';\n }\n\n public get labelId(): string {\n return this.#host?.labelText ? this.#host.labelId : '';\n }\n\n public get labelText(): string {\n return this.#host?.labelText ?? '';\n }\n\n public get ariaDescribedBy(): Observable<string | undefined> | undefined {\n return this.#ariaDescribedBy;\n }\n\n #ariaDescribedBy: Observable<string | undefined> | undefined;\n\n public init(host: SkyInputBoxComponent): void {\n this.#host = host;\n this.#ariaDescribedBy = host.ariaDescribedBy.asObservable();\n }\n\n public ngOnDestroy(): void {\n this.#requiredSubject.complete();\n }\n\n public populate(args: SkyInputBoxPopulateArgs): void {\n if (!this.#host) {\n throw new Error(\n 'Cannot populate the input box because `SkyInputBoxHostService` has not yet been initialized. Try running the `populate` method within an Angular lifecycle hook, such as `ngOnInit`.',\n );\n }\n\n this.#host.populate(args);\n }\n\n public setHintText(hintText: string | undefined): void {\n if (!this.#host) {\n throw new Error(\n 'Cannot set hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.',\n );\n }\n\n this.#host.setHostHintText(hintText);\n }\n\n public setHintTextHidden(hide: boolean): void {\n if (!this.#host) {\n throw new Error(\n 'Cannot hide hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.',\n );\n }\n\n this.#host.setHintTextHidden(hide);\n }\n\n public setHintTextScreenReaderOnly(hide: boolean): void {\n if (!this.#host) {\n throw new Error(\n 'Cannot remove hint text on the input box because `SkyInputBoxHostService` has not yet been initialized.',\n );\n }\n\n this.#host.setHintTextScreenReaderOnly(hide);\n }\n\n /**\n * Set required so that input box displays the label correctly. When the input is supplied by the consumer it is a content\n * child that input box can read required from and this is unnecessary. When the input is supplied internally by the\n * component the input box does not have a ref to it, so the component needs to inform the input box of its required state.\n */\n public setRequired(required: boolean): void {\n this.#requiredSubject.next(required);\n }\n\n /**\n * Whether the focused element is inside the input box.\n * @internal\n */\n public focusIsInInput(el: EventTarget): boolean {\n if (!this.#host) {\n throw new Error(\n 'Cannot get whether the focus is in the input box because `SkyInputBoxHostService` has not yet been initialized.',\n );\n }\n return this.#host.containsElement(el);\n }\n\n /**\n * Returns an html element that is inside the input box.\n * @internal\n */\n public queryHost(query: string): HTMLElement | undefined {\n if (!this.#host) {\n throw new Error(\n 'Cannot query input box host because `SkyInputBoxHostService` has not yet been initialized.',\n );\n }\n return this.#host.queryPopulatedElement(query);\n }\n}\n","import { Directive, HostBinding, Input, inject } from '@angular/core';\n\nimport { SkyInputBoxHostService } from './input-box-host.service';\n\n/**\n * @internal\n */\n@Directive({\n selector:\n // eslint-disable-next-line @angular-eslint/directive-selector\n 'input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)',\n})\nexport class SkyInputBoxControlDirective {\n @HostBinding('autocomplete')\n @Input()\n public set autocomplete(value: string | undefined) {\n this.#_autocomplete = value;\n }\n\n public get autocomplete(): string | undefined {\n return this.#_autocomplete || (this.#hostSvc ? 'off' : undefined);\n }\n\n #_autocomplete: string | undefined;\n #hostSvc = inject(SkyInputBoxHostService, { optional: true });\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @internal\n */\n@Pipe({\n name: 'skyInputBoxHintText',\n})\nexport class SkyInputBoxHintTextPipe implements PipeTransform {\n public transform(\n hintText?: string,\n hostHintText?: string,\n ): string | undefined {\n if (hintText && hostHintText) {\n return `${hintText} ${hostHintText}`;\n }\n\n return hintText || hostHintText;\n }\n}\n","import {\n ElementRef,\n Injectable,\n RendererFactory2,\n inject,\n} from '@angular/core';\n\nconst ARIA_DESCRIBEDBY_ATTR = 'aria-describedby';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyInputBoxAdapterService {\n #renderer = inject(RendererFactory2).createRenderer(undefined, null);\n\n /**\n * Returns whether the provided input box contains the focus event target.\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n public containsElement(inputRef: ElementRef, el: EventTarget): boolean {\n return inputRef.nativeElement.contains(el);\n }\n\n public focusControl(elRef: ElementRef): void {\n const control = elRef.nativeElement.querySelector('.sky-form-control');\n /* istanbul ignore else */\n if (control) {\n control.focus();\n }\n }\n\n /**\n * Returns the inline help element.\n */\n public getInlineHelpElement(elRef: ElementRef): HTMLElement {\n return elRef.nativeElement.querySelector('.sky-control-help');\n }\n\n /**\n * Returns true if the provided element contains the focused element.\n */\n public isFocusInElement(el: HTMLElement): boolean {\n if (el) {\n return (\n el === document.activeElement || el.contains(document.activeElement)\n );\n }\n return false;\n }\n\n public updateDescribedBy(\n inputRef: ElementRef,\n hintTextId: string,\n hintText: string | undefined,\n ): void {\n const inputEl = inputRef.nativeElement as HTMLElement;\n\n const describedByIds =\n inputEl\n .getAttribute(ARIA_DESCRIBEDBY_ATTR)\n ?.split(' ')\n .map((id) => id.trim()) ?? [];\n\n const hintTextIdIndex = describedByIds.indexOf(hintTextId);\n const previousCount = describedByIds.length;\n\n if (hintText && hintTextIdIndex < 0) {\n describedByIds.push(hintTextId);\n } else if (!hintText && hintTextIdIndex >= 0) {\n describedByIds.splice(hintTextIdIndex, 1);\n }\n\n if (describedByIds.length !== previousCount) {\n this.#setDescribedByIds(inputEl, describedByIds);\n }\n }\n\n /**\n * Queries the provided input box with the query string.\n */\n // TODO: remove this if no longer needed after a scalable focus monitor service is implemented\n public queryElement(inputRef: ElementRef, query: string): HTMLElement {\n return inputRef.nativeElement.querySelector(query);\n }\n\n #setDescribedByIds(inputEl: HTMLElement, describedByIds: string[]): void {\n if (describedByIds.length === 0) {\n this.#renderer.removeAttribute(inputEl, ARIA_DESCRIBEDBY_ATTR);\n } else {\n this.#renderer.setAttribute(\n inputEl,\n ARIA_DESCRIBEDBY_ATTR,\n describedByIds.join(' '),\n );\n }\n }\n}\n","import {\n BooleanInput,\n NumberInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n} from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {\n AbstractControlDirective,\n FormControlDirective,\n FormControlName,\n NgModel,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { SkyContentInfoProvider, SkyIdService } from '@skyux/core';\n\nimport { ReplaySubject, Subject, takeUntil } from 'rxjs';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\n\nimport { SkyInputBoxAdapterService } from './input-box-adapter.service';\nimport { SkyInputBoxControlDirective } from './input-box-control.directive';\nimport { SkyInputBoxHostService } from './input-box-host.service';\nimport { SkyInputBoxPopulateArgs } from './input-box-populate-args';\n\n/**\n * A wrapper component that provides styling and accessibility to form elements.\n */\n@Component({\n selector: 'sky-input-box',\n templateUrl: './input-box.component.html',\n styleUrls: ['./input-box.component.scss'],\n providers: [\n SkyContentInfoProvider,\n SkyInputBoxAdapterService,\n SkyInputBoxHostService,\n {\n provide: SKY_FORM_ERRORS_ENABLED,\n useValue: true,\n },\n ],\n // Note that change detection is not set to OnPush; default change detection allows the\n // invalid CSS class to be added when the content control's invalid/dirty state changes.\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkyInputBoxComponent\n implements OnInit, AfterContentChecked, OnDestroy\n{\n #changeRef = inject(ChangeDetectorRef);\n #inputBoxHostSvc = inject(SkyInputBoxHostService);\n #adapterService = inject(SkyInputBoxAdapterService);\n #idSvc = inject(SkyIdService);\n #elementRef = inject(ElementRef);\n #renderer = inject(Renderer2);\n\n /**\n * Whether to visually highlight the input box in an error state. If not specified, the input box\n * displays in an error state when either the `ngModel` or the Angular `FormControl` contains an error.\n * @default undefined\n */\n @Input()\n public hasErrors: boolean | undefined;\n\n /**\n * Whether to visually highlight the input box as disabled. To disable the input box's\n * input element, use the HTML `disabled` attribute or the Angular `FormControl.disabled`\n * property. If the input element is mapped to an Angular form control\n * (e.g. `formControlName`, `ngModel`, etc.), \"disabled\" styles are applied automatically;\n * if the input element is not associated with an Angular form control, the `disabled`\n * property on the input box must be set to `true` to visually indicate\n * the disabled state on the input box.\n * @default false\n */\n @Input()\n public disabled: boolean | undefined;\n\n /**\n * The text to display as the input's label and in known validation error messages. The label\n * will automatically be associated with the `input`, `select`, `textarea`, or compatible SKY UX\n * component included in the input box.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * The maximum number of characters to allow in the input box. This property places a\n * [SKY UX character count](https://developer.blackbaud.com/skyux/components/character-count)\n * on the input element with the appropriate validator, so don't use it with inputs where\n * users are unlikely to exceed character limits. Instead, use\n * [Angular's max length validator](https://angular.io/api/forms/MaxLengthValidator) and a\n * `maxLength` attribute on the input element to handle maximum length validation.\n *\n */\n @Input()\n public set characterLimit(value: NumberInput) {\n this.#_characterLimit =\n value === undefined ? undefined : coerceNumberProperty(value, undefined);\n\n this.#updateMaxLengthValidator();\n }\n\n public get characterLimit(): number | undefined {\n return this.#_characterLimit;\n }\n\n /**\n * Whether the input box is stacked on another input box. When specified, the appropriate\n * vertical spacing is automatically added to the input box.\n */\n @Input()\n public set stacked(value: BooleanInput) {\n this.#_stacked = coerceBooleanProperty(value);\n this.cssClass = this.#_stacked ? 'sky-form-field-stacked' : '';\n }\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the input box label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the input box label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public set hintText(value: string | undefined) {\n this.#_hintText = value;\n\n this.ariaDescribedBy.next(value ? this.hintTextId : undefined);\n }\n\n public get hintText(): string | undefined {\n return this.#_hintText;\n }\n\n public hostInputTemplate: TemplateRef<unknown> | undefined;\n\n public hostButtonsTemplate: TemplateRef<unknown> | undefined;\n\n public hostButtonsInsetTemplate: TemplateRef<unknown> | undefined;\n\n public hostButtonsLeftTemplate: TemplateRef<unknown> | undefined;\n\n public formControlHasFocus = false;\n\n public hostIconsInsetTemplate: TemplateRef<unknown> | undefined;\n\n public hostIconsInsetLeftTemplate: TemplateRef<unknown> | undefined;\n\n protected hintTextHidden = false;\n\n protected hintTextScreenReaderOnly = false;\n\n protected hostHintText: string | undefined;\n\n public readonly controlId = this.#idSvc.generateId();\n public readonly labelId = this.#idSvc.generateId();\n public readonly errorId = this.#idSvc.generateId();\n public readonly hintTextId = this.#idSvc.generateId();\n public readonly ariaDescribedBy = new ReplaySubject<string | undefined>(1);\n\n #requiredByFormField: boolean | undefined;\n\n @HostBinding('class')\n public cssClass = '';\n\n @ContentChild(FormControlDirective)\n public formControl: FormControlDirective | undefined;\n\n @ContentChild(FormControlName)\n public formControlByName: FormControlName | undefined;\n\n @ContentChild(NgModel)\n public ngModel: NgModel | undefined;\n\n @ContentChild(SkyInputBoxControlDirective, {\n read: ElementRef,\n })\n public inputRef: ElementRef | undefined;\n\n protected controlDir: AbstractControlDirective | undefined;\n\n protected get isDisabled(): boolean {\n return !!(\n this.disabled ||\n this.controlDir?.control?.disabled ||\n this.inputRef?.nativeElement?.disabled\n );\n }\n\n protected get hasErrorsComputed(): boolean {\n if (this.hasErrors === undefined) {\n return this.#controlHasErrors(this.controlDir);\n }\n\n return this.hasErrors;\n }\n\n protected get required(): boolean {\n return (\n this.#hasRequiredValidator() ||\n this.inputRef?.nativeElement.required ||\n this.#requiredByFormField\n );\n }\n\n protected characterCountScreenReader = 0;\n\n #_stacked = false;\n #_characterLimit: number | undefined;\n #_hintText: string | undefined;\n\n #previousInputRef: ElementRef | undefined;\n #previousMaxLengthValidator: ValidatorFn | undefined;\n #ngUnsubscribe = new Subject<void>();\n\n public ngOnInit(): void {\n this.#inputBoxHostSvc.init(this);\n\n this.#inputBoxHostSvc.required\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((required) => {\n this.#requiredByFormField = required;\n this.#changeRef.markForCheck();\n });\n }\n\n public ngAfterContentChecked(): void {\n this.controlDir =\n this.formControl || this.formControlByName || this.ngModel;\n\n if (!this.formControlHasFocus) {\n this.characterCountScreenReader = this.controlDir?.value?.length || 0;\n }\n\n this.#updateInputRef();\n }\n\n public ngOnDestroy(): void {\n this.ariaDescribedBy.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n /**\n * Whether the input box component contains the focused element.\n * @internal\n */\n public containsElement(el: EventTarget): boolean {\n return this.#adapterService.containsElement(this.#elementRef, el);\n }\n\n public formControlFocusIn(): void {\n const inlineHelpEl = this.#adapterService.getInlineHelpElement(\n this.#elementRef,\n );\n if (!this.#adapterService.isFocusInElement(inlineHelpEl)) {\n this.#updateHasFocus(true);\n }\n }\n\n public formControlFocusOut(): void {\n this.characterCountScreenReader = this.controlDir?.value?.length || 0;\n this.#updateHasFocus(false);\n }\n\n public onInsetIconClick(): void {\n if (!this.isDisabled) {\n this.#adapterService.focusControl(this.#elementRef);\n }\n }\n\n public populate(args: SkyInputBoxPopulateArgs): void {\n this.hostInputTemplate = args.inputTemplate;\n this.hostButtonsTemplate = args.buttonsTemplate;\n this.hostButtonsLeftTemplate = args.buttonsLeftTemplate;\n this.hostButtonsInsetTemplate = args.buttonsInsetTemplate;\n this.hostIconsInsetTemplate = args.iconsInsetTemplate;\n this.hostIconsInsetLeftTemplate = args.iconsInsetLeftTemplate;\n this.#changeRef.markForCheck();\n }\n\n /**\n * Returns an element inside the input box.\n * This can be used to query parts of a input box\n * that was populated through the `SkyInputBoxHostService`\n * @internal\n */\n public queryPopulatedElement(query: string): HTMLElement {\n return this.#adapterService.queryElement(this.#elementRef, query);\n }\n\n public setHintTextHidden(hide: boolean): void {\n this.hintTextHidden = hide;\n this.#changeRef.markForCheck();\n }\n\n public setHostHintText(value: string | undefined): void {\n this.hostHintText = value;\n this.#changeRef.markForCheck();\n }\n\n public setHintTextScreenReaderOnly(hide: boolean): void {\n this.hintTextScreenReaderOnly = hide;\n this.#changeRef.markForCheck();\n }\n\n #hasRequiredValidator(): boolean {\n return !!this.controlDir?.control?.hasValidator(Validators.required);\n }\n\n #updateHasFocus(hasFocus: boolean): void {\n // Some components manipulate the focus of elements inside an input box programmatically,\n // which can cause an `ExpressionChangedAfterItHasBeenCheckedError` if focus was set after\n // initial change detection. Using `setTimeout()` here fixes it.\n setTimeout(() => {\n this.formControlHasFocus = hasFocus;\n this.#changeRef.markForCheck();\n });\n }\n\n #controlHasErrors(control: AbstractControlDirective | undefined): boolean {\n return !!(control && control.invalid && (control.dirty || control.touched));\n }\n\n #updateInputRef(): void {\n if (!this.inputRef) {\n return;\n }\n\n const inputEl = this.inputRef.nativeElement as HTMLElement;\n\n // Check for the Angular required validator and add an aria-required attribute\n // to match. For template-driven forms, the input will have a `required` attribute\n // so the aria-required attribute is unnecessary.\n const hasRequiredValidator = this.#hasRequiredValidator();\n const ariaRequired = inputEl.ariaRequired;\n\n if (hasRequiredValidator && ariaRequired !== 'true') {\n inputEl.ariaRequired = 'true';\n } else if (!hasRequiredValidator && ariaRequired === 'true') {\n inputEl.ariaRequired = null;\n }\n\n if (this.hasErrorsComputed) {\n this.#renderer.setAttribute(inputEl, 'aria-invalid', 'true');\n this.#renderer.setAttribute(inputEl, 'aria-errormessage', this.errorId);\n } else {\n this.#renderer.removeAttribute(inputEl, 'aria-invalid');\n this.#renderer.removeAttribute(inputEl, 'aria-errormessage');\n }\n\n this.#adapterService.updateDescribedBy(\n this.inputRef,\n this.hintTextId,\n this.hintText ?? this.hostHintText,\n );\n\n if (this.inputRef !== this.#previousInputRef) {\n this.#renderer.addClass(inputEl, 'sky-form-control');\n this.#renderer.setAttribute(inputEl, 'id', this.controlId);\n\n this.#updateMaxLengthValidator();\n\n this.#previousInputRef = this.inputRef;\n }\n }\n\n #updateMaxLengthValidator(): void {\n const control = this.controlDir?.control;\n\n if (this.#previousMaxLengthValidator) {\n control?.removeValidators(this.#previousMaxLengthValidator);\n this.#previousMaxLengthValidator = undefined;\n }\n\n if (control && this.characterLimit !== undefined) {\n this.#previousMaxLengthValidator = Validators.maxLength(\n this.characterLimit,\n );\n\n control.addValidators([this.#previousMaxLengthValidator]);\n }\n }\n}\n","<div\n *skyThemeIf=\"'default'\"\n class=\"sky-input-box\"\n [ngClass]=\"{\n 'sky-input-box-disabled': isDisabled\n }\"\n>\n <div class=\"sky-form-group\">\n <div class=\"sky-input-box-label-wrapper\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" /><ng-container\n *ngTemplateOutlet=\"inlineHelpTemplate\"\n />\n <ng-container *ngTemplateOutlet=\"characterCountTemplate\" />\n </div>\n <div class=\"sky-input-group\">\n <ng-container *ngTemplateOutlet=\"buttonsLeftTemplate\" />\n <div\n class=\"sky-input-box-input-group-inner\"\n [ngClass]=\"{\n 'sky-field-status-active': formControlHasFocus,\n 'sky-field-status-invalid': hasErrorsComputed\n }\"\n (focusin)=\"formControlFocusIn()\"\n (focusout)=\"formControlFocusOut()\"\n >\n <ng-container *ngTemplateOutlet=\"iconsInsetLeftTemplate\" />\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n <ng-container *ngTemplateOutlet=\"buttonsInsetTemplate\" />\n <ng-container *ngTemplateOutlet=\"iconsInsetTemplate\" />\n </div>\n <ng-container *ngTemplateOutlet=\"buttonsTemplate\" />\n </div>\n <ng-container *ngTemplateOutlet=\"hintTextTemplate\" />\n <ng-container *ngTemplateOutlet=\"errorLabelTemplate\" />\n </div>\n</div>\n\n<div\n *skyThemeIf=\"'modern'\"\n class=\"sky-input-box\"\n [ngClass]=\"{\n 'sky-input-box-disabled': isDisabled\n }\"\n>\n <div class=\"sky-input-box-group\">\n <ng-container *ngTemplateOutlet=\"buttonsLeftTemplate\" />\n <div\n class=\"sky-input-box-group-form-control\"\n [ngClass]=\"{\n 'sky-input-box-group-form-control-focus': formControlHasFocus,\n 'sky-input-box-group-form-control-invalid': hasErrorsComputed\n }\"\n (focusin)=\"formControlFocusIn()\"\n (focusout)=\"formControlFocusOut()\"\n >\n <div class=\"sky-form-group\">\n <ng-container *ngTemplateOutlet=\"iconsInsetLeftTemplate\" />\n <div class=\"sky-input-box-form-group-inner\">\n <div class=\"sky-input-box-label-wrapper\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\" /><ng-container\n *ngTemplateOutlet=\"inlineHelpTemplate\"\n />\n <ng-container *ngTemplateOutlet=\"characterCountTemplate\" />\n </div>\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </div>\n <ng-container *ngTemplateOutlet=\"buttonsInsetTemplate\" />\n <ng-container *ngTemplateOutlet=\"iconsInsetTemplate\" />\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"buttonsTemplate\" />\n </div>\n <ng-container *ngTemplateOutlet=\"hintTextTemplate\" />\n <ng-container *ngTemplateOutlet=\"errorLabelTemplate\" />\n</div>\n\n<ng-template #labelTemplate>\n <ng-content select=\".sky-control-label\" />\n @if (labelText) {\n <label\n class=\"sky-control-label\"\n [attr.aria-label]=\"\n characterLimit !== undefined\n ? labelText +\n ' ' +\n ('skyux_character_count_message'\n | skyLibResources: characterCountScreenReader : characterLimit)\n : null\n \"\n [for]=\"controlId\"\n [id]=\"labelId\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</label\n >\n }\n</ng-template>\n\n<ng-template #inlineHelpTemplate>\n @if ((helpPopoverContent || helpKey) && labelText) {\n <sky-help-inline\n class=\"sky-control-help\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverContent]=\"helpPopoverContent\"\n [popoverTitle]=\"helpPopoverTitle\"\n />\n }\n <ng-content select=\".sky-control-help\" />\n</ng-template>\n\n<ng-template #characterCountTemplate>\n @if (characterLimit !== undefined) {\n <sky-character-counter-indicator\n [characterCount]=\"controlDir?.value?.length || 0\"\n [characterCountLimit]=\"characterLimit\"\n />\n }\n <ng-content select=\"sky-character-counter-indicator\" />\n</ng-template>\n\n<ng-template #inputTemplate>\n <ng-content\n select=\"input,select,.sky-form-control:not(textarea),sky-autocomplete,sky-text-editor\"\n />\n @if (hostInputTemplate) {\n <ng-container [ngTemplateOutlet]=\"hostInputTemplate\" />\n }\n <ng-content select=\"textarea\" />\n</ng-template>\n\n<ng-template #buttonsLeftTemplate>\n <ng-content select=\".sky-input-group-btn.sky-input-box-btn-left\" />\n @if (hostButtonsLeftTemplate) {\n <ng-container [ngTemplateOutlet]=\"hostButtonsLeftTemplate\" />\n }\n</ng-template>\n\n<ng-template #buttonsTemplate>\n <ng-content\n select=\".sky-input-group-btn:not(.sky-input-box-btn-left):not(.sky-input-box-btn-inset)\"\n />\n @if (hostButtonsTemplate) {\n <ng-container [ngTemplateOutlet]=\"hostButtonsTemplate\" />\n }\n</ng-template>\n\n<ng-template #buttonsInsetTemplate>\n <ng-content select=\".sky-input-group-btn.sky-input-box-btn-inset\" />\n @if (hostButtonsInsetTemplate) {\n <ng-container [ngTemplateOutlet]=\"hostButtonsInsetTemplate\" />\n }\n</ng-template>\n\n<ng-template #iconsInsetTemplate>\n <div class=\"sky-input-box-icon-inset-wrapper\" (click)=\"onInsetIconClick()\">\n <ng-content select=\".sky-input-group-icon.sky-input-box-icon-inset\" />\n @if (hostIconsInsetTemplate) {\n <ng-container [ngTemplateOutlet]=\"hostIconsInsetTemplate\" />\n }\n </div>\n</ng-template>\n\n<ng-template #iconsInsetLeftTemplate>\n <div\n class=\"sky-input-box-icon-inset-left-wrapper\"\n (click)=\"onInsetIconClick()\"\n >\n <ng-content select=\".sky-input-group-icon.sky-input-box-icon-inset-left\" />\n @if (hostIconsInsetLeftTemplate) {\n <ng-container [ngTemplateOutlet]=\"hostIconsInsetLeftTemplate\" />\n }\n </div>\n</ng-template>\n\n<ng-template #errorLabelTemplate>\n <sky-form-errors\n [id]=\"errorId\"\n [errors]=\"controlDir?.errors\"\n [labelText]=\"labelText\"\n [touched]=\"controlDir?.touched\"\n [dirty]=\"controlDir?.dirty\"\n >\n <ng-content\n select=\"sky-form-error,span.sky-input-box-descendent-form-error\"\n />\n </sky-form-errors>\n <ng-content select=\".sky-error-label,.sky-error-indicator\" />\n</ng-template>\n\n<ng-template #hintTextTemplate>\n @if (hintText || hostHintText) {\n <div\n class=\"sky-input-box-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n [ngClass]=\"{\n 'sky-input-box-hint-text-hidden': hintTextHidden,\n 'sky-screen-reader-only': hintTextScreenReaderOnly\n }\"\n [id]=\"hintTextId\"\n >\n {{ hintText | skyInputBoxHintText: hostHintText }}\n </div>\n }\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyCharacterCounterModule } from '../character-counter/character-counter.module';\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyInputBoxControlDirective } from './input-box-control.directive';\nimport { SkyInputBoxHintTextPipe } from './input-box-hint-text.pipe';\nimport { SkyInputBoxComponent } from './input-box.component';\n\n@NgModule({\n declarations: [SkyInputBoxComponent],\n imports: [\n CommonModule,\n SkyCharacterCounterModule,\n SkyFormErrorsModule,\n SkyFormErrorModule,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyInputBoxControlDirective,\n SkyInputBoxHintTextPipe,\n SkyThemeModule,\n ],\n exports: [\n SkyInputBoxHintTextPipe,\n SkyInputBoxComponent,\n SkyInputBoxControlDirective,\n SkyFormErrorModule,\n ],\n})\nexport class SkyInputBoxModule {}\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormsModule,\n NgControl,\n Validators,\n} from '@angular/forms';\nimport {\n SkyFileReaderService,\n SkyIdModule,\n SkyLiveAnnouncerService,\n} from '@skyux/core';\nimport { SkyIdService } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { take } from 'rxjs/operators';\n\nimport { SkyFormErrorComponent } from '../../form-error/form-error.component';\nimport { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';\nimport { SkyFormErrorsComponent } from '../../form-error/form-errors.component';\nimport { SkyInputBoxModule } from '../../input-box/input-box.module';\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileAttachmentService } from '../file-attachment/file-attachment.service';\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\nimport { SkyFileValidateFn } from '../shared/file-validate-function';\n\nimport { SkyFileDropChange } from './file-drop-change';\nimport { SkyFileLink } from './file-link';\n\nconst MAX_FILE_SIZE_DEFAULT = 500000;\nconst MIN_FILE_SIZE_DEFAULT = 0;\n\n/**\n * Provides an element to attach multiple files where users can browse or drag and drop local files\n * or provide hyperlinks to external files. You can leave the contents of the component\n * blank to display the drop zone's default UI, or you can specify custom content to\n * display instead. When the module initializes, it disables the ability to drag and\n * drop files for the entire window to prevent the browser from opening files that are\n * accidentally dropped outside the target zone. If you implement your own file drop functionality\n * outside of the file drop component, you can place the `sky-file-drop-target` CSS class\n * on the element that receives drop events to exempt it from the drop exclusion rule.\n */\n@Component({\n selector: 'sky-file-drop',\n templateUrl: './file-drop.component.html',\n styleUrls: ['./file-drop.component.scss'],\n providers: [\n SkyFileAttachmentService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyFileSizePipe,\n SkyFormErrorComponent,\n SkyFormErrorsComponent,\n SkyFormsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyThemeModule,\n ],\n})\nexport class SkyFileDropComponent implements OnDestroy, ControlValueAccessor {\n /**\n * Fires when users add or remove files.\n */\n @Output()\n public filesChanged = new EventEmitter<SkyFileDropChange>();\n\n /**\n * Fires when the link input box triggers a blur event.\n */\n @Output()\n public linkInputBlur = new EventEmitter<void>();\n\n /**\n * Fires when users add or remove links.\n */\n @Output()\n public linkChanged = new EventEmitter<SkyFileLink>();\n\n /**\n * The ARIA label for the file upload button. This provides a text equivalent for\n * screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @default \"Drag a file here or click to browse\"\n */\n @Input()\n public fileUploadAriaLabel: string | undefined;\n\n /**\n * The ARIA label for the link upload input. This sets the button's `aria-label` attribute to provide a text equivalent for\n * screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @default \"Link to a file\"\n */\n @Input()\n public linkUploadAriaLabel: string | undefined;\n\n /**\n * The hint text for the link upload input.\n */\n @Input()\n public linkUploadHintText: string | undefined;\n\n /**\n * The minimum size in bytes for valid files.\n * @default 0\n */\n @Input()\n public set minFileSize(value: number | undefined) {\n this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;\n }\n\n public get minFileSize(): number {\n return this.#_minFileSize;\n }\n\n /**\n * The maximum size in bytes for valid files.\n * @default 500000\n */\n @Input()\n public set maxFileSize(value: number | undefined) {\n this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;\n }\n\n public get maxFileSize(): number {\n return this.#_maxFileSize;\n }\n\n /**\n * Whether users can drag and drop multiple files at the same time.\n */\n @Input()\n public multiple: boolean | undefined = true;\n\n /**\n * The custom validation function. This validation runs alongside the internal\n * file validation. This function takes a `SkyFileItem` object as a parameter.\n * The string returned is used as the error message in multi-file attachment.\n */\n @Input()\n public validateFn: SkyFileValidateFn | undefined;\n\n /**\n * The comma-delimited string literal of MIME types that users can attach.\n * By default, all file types are allowed.\n * @required\n */\n @Input()\n public acceptedTypes: string | undefined;\n\n /**\n * A custom error message to display when a file doesn't match the accepted types.\n * This replaces a default error message that lists all accepted types.\n */\n @Input()\n public acceptedTypesErrorMessage: string | undefined;\n\n /**\n * Whether to disable the option to browse for files to attach.\n */\n @Input()\n public noClick: boolean | undefined = false;\n\n /**\n * Whether to display the option to attach files from URLs rather than from local devices.\n */\n @Input()\n public allowLinks: boolean | undefined = false;\n\n /**\n * The text to display as the file attachment's label.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * Whether to hide `labelText` from view.\n */\n @Input({ transform: booleanAttribute })\n public labelHidden = false;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * Whether uploading a file or link is required.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input elements so that screen readers announce an invalid state until the input element\n * is complete.\n * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n */\n @Input({ transform: booleanAttribute })\n public required = false;\n\n /**\n * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the file attachment label. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * Whether the file attachment is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the file attachment.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.sky-form-field-stacked')\n public stacked = false;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the file attachment label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n @ViewChild('fileInput')\n public inputEl: ElementRef | undefined;\n\n public rejectedOver = false;\n public acceptedOver = false;\n public linkUrl: string | undefined;\n\n #enterEventTarget: any;\n\n #_maxFileSize = MAX_FILE_SIZE_DEFAULT;\n\n #_minFileSize = MIN_FILE_SIZE_DEFAULT;\n\n #notifyTouched: (() => void) | undefined;\n #notifyChange:\n | ((_: (SkyFileItem | SkyFileLink)[] | undefined | null) => void)\n | undefined;\n #_uploadedFiles: (SkyFileItem | SkyFileLink)[] = [];\n\n readonly #fileAttachmentService = inject(SkyFileAttachmentService);\n readonly #fileReaderSvc = inject(SkyFileReaderService);\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n readonly #idSvc = inject(SkyIdService);\n\n protected errorId = this.#idSvc.generateId();\n\n protected ngControl = inject(NgControl, { optional: true });\n\n protected rejectedFiles: SkyFileItem[] = [];\n\n constructor() {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n public ngOnDestroy(): void {\n this.filesChanged.complete();\n this.linkChanged.complete();\n this.linkInputBlur.complete();\n }\n\n public writeValue(value: unknown): void {\n if (Array.isArray(value)) {\n const linkUploads: SkyFileLink[] = [];\n const fileUploads: SkyFileItem[] = [];\n\n value.forEach((file) => {\n if ('url' in file && file.url !== undefined) {\n if (!('file' in file)) {\n linkUploads.push(file);\n } else if ('file' in file && file.file !== undefined) {\n fileUploads.push(file);\n }\n }\n });\n\n if (!(linkUploads.length > 0) && !(fileUploads.length > 0)) {\n this.#notifyChange?.(null);\n } else {\n this.#_uploadedFiles = [];\n\n if (linkUploads.length > 0) {\n linkUploads.forEach((file) => {\n this.uploadLink(file);\n });\n }\n if (fileUploads.length > 0) {\n // this prevents FormControl from setting an invalid value before the async\n // processes in #handleFile is complete\n this.#notifyChange?.(null);\n this.#handleFiles(fileUploads);\n }\n }\n } else {\n this.#notifyChange?.(null);\n }\n }\n\n public registerOnChange(fn: any): void {\n this.#notifyChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.#notifyTouched = fn;\n }\n\n public dropClicked(): void {\n if (!this.noClick && this.inputEl) {\n this.#notifyTouched?.();\n this.inputEl.nativeElement.click();\n }\n }\n\n public fileChangeEvent(fileChangeEvent: Event): void {\n /** Set a timeout here to allow the browser to regain context from the system dialog. Without this, error messages do not read out correctly to screen readers. */\n setTimeout(() => {\n this.#handleFiles(\n (fileChangeEvent.target as HTMLInputElement | undefined)?.files,\n );\n }, 500);\n }\n\n public fileDragEnter(dragEnterEvent: DragEvent): void {\n // Save this target to know when the drag event leaves\n this.#enterEventTarget = dragEnterEvent.target;\n dragEnterEvent.stopPropagation();\n dragEnterEvent.preventDefault();\n }\n\n public fileDragOver(dragOverEvent: DragEvent): void {\n const transfer = dragOverEvent.dataTransfer;\n\n dragOverEvent.stopPropagation();\n dragOverEvent.preventDefault();\n\n if (transfer) {\n if (transfer.items) {\n const files = Array.from(transfer.items);\n\n for (const file of files) {\n if (\n file.type &&\n this.#fileAttachmentService.fileTypeRejected(\n file.type,\n this.acceptedTypes,\n )\n ) {\n this.rejectedOver = true;\n this.acceptedOver = false;\n return;\n }\n }\n\n if (files.length > 0 && !this.acceptedOver) {\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n } /* istanbul ignore next: untestable */ else if (transfer.files) {\n // If the browser does not support DataTransfer.items,\n // defer file-type checking to drop handler.\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility\n this.rejectedOver = false;\n this.acceptedOver = true;\n }\n }\n }\n\n public fileDrop(dropEvent: DragEvent): void {\n dropEvent.stopPropagation();\n dropEvent.preventDefault();\n\n this.#notifyTouched?.();\n\n this.#enterEventTarget = undefined;\n this.rejectedOver = false;\n this.acceptedOver = false;\n\n if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {\n const hasDirectory = this.#fileAttachmentService.hasDirectory(\n dropEvent.dataTransfer.files,\n );\n const invalidNumberOfFiles =\n !this.multiple && dropEvent.dataTransfer.files.length > 1;\n\n if (hasDirectory || invalidNumberOfFiles) {\n return;\n }\n\n this.#handleFiles(dropEvent.dataTransfer.files);\n }\n }\n\n public fileDragLeave(dragLeaveEvent: any): void {\n if (this.#enterEventTarget === dragLeaveEvent.target) {\n this.rejectedOver = false;\n this.acceptedOver = false;\n }\n }\n\n public addLinkEnter(event: KeyboardEvent): void {\n if (event.which === 13) {\n this.addLink(event);\n }\n }\n\n public addLink(event: Event): void {\n event.preventDefault();\n this.uploadLink({ url: this.linkUrl } as SkyFileLink);\n this.linkUrl = undefined;\n this.#notifyTouched?.();\n }\n\n protected uploadLink(file: SkyFileLink): void {\n this.linkChanged.emit(file);\n this.#_uploadedFiles?.push(file);\n this.#notifyChange?.(this.#_uploadedFiles);\n this.#announceState(\n 'skyux_file_attachment_file_upload_link_added',\n file.url,\n );\n }\n\n public onLinkBlur(): void {\n this.#notifyTouched?.();\n this.linkInputBlur.emit();\n }\n\n protected get isRequired(): boolean {\n return (\n this.required ||\n (this.ngControl?.control?.hasValidator(Validators.required) ?? false)\n );\n }\n\n #announceState(resourceString: string, ...args: any[]): void {\n this.#resourcesSvc\n .getString(resourceString, ...args)\n .pipe(take(1))\n .subscribe((internationalizedString) => {\n this.#liveAnnouncerSvc.announce(internationalizedString);\n });\n }\n\n #emitFileChangeEvent(\n totalFiles: number,\n rejectedFileArray: SkyFileItem[],\n validFileArray: SkyFileItem[],\n ): void {\n if (totalFiles === rejectedFileArray.length + validFileArray.length) {\n this.filesChanged.emit({\n files: validFileArray,\n rejectedFiles: rejectedFileArray,\n } as SkyFileDropChange);\n\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n }\n }\n\n #filesRejected(\n file: SkyFileItem,\n validFileArray: SkyFileItem[],\n rejectedFileArray: SkyFileItem[],\n totalFiles: number,\n ): void {\n rejectedFileArray.push(file);\n this.#notifyChange?.(\n this.#_uploadedFiles.length > 0 ? this.#_uploadedFiles : null,\n );\n this.#emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray);\n }\n\n async #loadFile(\n fileDrop: SkyFileDropComponent,\n file: SkyFileItem,\n validFileArray: SkyFileItem[],\n rejectedFileArray: SkyFileItem[],\n totalFiles: number,\n ): Promise<void> {\n try {\n file.url = await this.#fileReaderSvc.readAsDataURL(file.file);\n\n validFileArray.push(file);\n fileDrop.#emitFileChangeEvent(\n totalFiles,\n rejectedFileArray,\n validFileArray,\n );\n this.#announceState(\n 'skyux_file_attachment_file_upload_file_added',\n file.file.name,\n );\n this.#_uploadedFiles?.push(file);\n this.#notifyChange?.(this.#_uploadedFiles);\n } catch {\n fileDrop.#filesRejected(\n file,\n validFileArray,\n rejectedFileArray,\n totalFiles,\n );\n }\n }\n\n #handleFiles(fileList?: FileList | null | SkyFileItem[]): void {\n if (fileList) {\n const validFileArray: SkyFileItem[] = [];\n const rejectedFileArray: SkyFileItem[] = [];\n const totalFiles = fileList.length;\n\n let files: SkyFileItem[] = [];\n\n if ('item' in fileList) {\n for (let index = 0; index < fileList.length; index++) {\n files.push({\n file: fileList.item(index),\n } as SkyFileItem);\n }\n } else {\n files = fileList;\n }\n\n const processedFiles = this.#fileAttachmentService.checkFiles(\n files,\n this.minFileSize,\n this.maxFileSize,\n this.acceptedTypes,\n this.validateFn,\n );\n\n for (const file of processedFiles) {\n if (file.errorType) {\n this.#filesRejected(\n file,\n validFileArray,\n rejectedFileArray,\n totalFiles,\n );\n } else {\n void this.#loadFile(\n this,\n file,\n validFileArray,\n rejectedFileArray,\n totalFiles,\n );\n }\n }\n\n this.rejectedFiles = rejectedFileArray;\n }\n }\n}\n","<fieldset class=\"sky-file-drop-wrapper\">\n @if (labelText) {\n <legend\n class=\"sky-control-label sky-font-body-default\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-file-drop-label-text\"\n [ngClass]=\"{\n 'sky-control-label-required': isRequired\n }\"\n >{{ labelText }}</span\n >\n @if (isRequired) {\n <span class=\"sky-screen-reader-only\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span>\n }\n @if (helpPopoverContent || helpKey) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </legend>\n }\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n ></button>\n\n <input\n #fileInput\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n />\n\n @if (customEl.children.length === 0) {\n <div class=\"sky-file-drop-contents sky-file-drop-upload-contents\">\n <div class=\"sky-file-drop-contents-not-over\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon\n class=\"sky-file-upload-icon\"\n iconName=\"arrow-upload\"\n iconSize=\"xl\"\n />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon\n class=\"sky-file-upload-icon sky-file-upload-icon-target\"\n iconName=\"target\"\n iconSize=\"xl\"\n />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_invalid_file'\n | skyLibResources\n }}\n </div>\n <sky-icon\n class=\"sky-file-upload-icon sky-file-upload-icon-close\"\n iconName=\"prohibited\"\n iconSize=\"xl\"\n />\n </div>\n </div>\n }\n\n <div #customEl class=\"sky-file-drop-contents-custom\">\n <ng-content />\n </div>\n </div>\n @if (allowLinks) {\n <div class=\"sky-file-drop-col\">\n <div class=\"sky-file-drop-contents\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_label'\n | skyLibResources\n }}\n </div>\n </div>\n <sky-input-box [hintText]=\"linkUploadHintText\">\n <input\n type=\"text\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </sky-input-box>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n <div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-font-deemphasized sky-file-drop-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n </div>\n</fieldset>\n<sky-form-errors\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [touched]=\"ngControl ? ngControl.touched : rejectedFiles.length > 0\"\n [dirty]=\"ngControl?.dirty\"\n [errors]=\"ngControl?.errors\"\n>\n <ng-content select=\"sky-form-error\" />\n @for (rejectedFile of rejectedFiles; track rejectedFile.url) {\n <div>\n @if (rejectedFile.errorType === 'fileType') {\n <sky-form-error\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : rejectedFile.errorParam\n \"\n />\n } @else if (rejectedFile.errorType === 'maxFileSize') {\n <sky-form-error\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n } @else if (rejectedFile.errorType === 'minFileSize') {\n <sky-form-error\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n } @else if (\n rejectedFile.errorType === 'validate' && rejectedFile.errorParam\n ) {\n <sky-form-error\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n }\n </div>\n }\n</sky-form-errors>\n","import {\n Component,\n DoCheck,\n EventEmitter,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n Output,\n inject,\n} from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\n\nimport { take } from 'rxjs/operators';\n\nimport { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';\nimport { SkyFileItem } from '../shared/file-item';\nimport { SkyFileItemService } from '../shared/file-item.service';\nimport { SkyFileSizePipe } from '../shared/file-size.pipe';\n\nimport { SkyFileLink } from './file-link';\n\n@Component({\n imports: [SkyFileSizePipe, SkyFormsResourcesModule, SkyIconModule],\n selector: 'sky-file-item',\n styleUrl: './file-item.component.scss',\n templateUrl: './file-item.component.html',\n})\nexport class SkyFileItemComponent implements DoCheck {\n /**\n * The summary information to display about file attachments. For local files,\n * the default summary includes the file name, file size, file preview, and a delete button.\n * For external files, the default summary includes the URL and a delete button.\n * You can include additional inputs to display user-entered metadata.\n * @required\n */\n @Input()\n public set fileItem(value: SkyFileItem | SkyFileLink | undefined) {\n this.#_fileItem = value;\n if (value && 'file' in value) {\n this.isFile = this.#fileItemService.isFile(value);\n this.isImage = this.#fileItemService.isImage(value);\n this.fileName = value.file.name;\n this.fileSize = value.file.size;\n } else {\n this.isFile = this.isImage = false;\n this.fileName = '';\n this.fileSize = undefined;\n }\n this.url = value?.url ?? '';\n }\n\n public get fileItem(): SkyFileItem | SkyFileLink | undefined {\n return this.#_fileItem;\n }\n\n /**\n * Fires when users select the delete button for an item. The deleted item is passed to the\n * function.\n */\n @Output()\n public deleteFile = new EventEmitter<SkyFileLink | SkyFileItem>();\n\n public fileName = '';\n\n public fileSize: number | undefined;\n\n public url = '';\n\n public icon: string | undefined;\n\n public isFile = false;\n public isImage = false;\n\n #_fileItem: SkyFileItem | SkyFileLink | undefined;\n\n #differ: KeyValueDiffer<any, any>;\n #fileItemService: SkyFileItemService;\n\n readonly #liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n\n readonly #resourcesSvc = inject(SkyLibResourcesService);\n\n constructor(differs: KeyValueDiffers, fileItemService: SkyFileItemService) {\n this.#differ = differs.find({}).create();\n this.#fileItemService = fileItemService;\n }\n\n public ngDoCheck(): void {\n if (this.fileItem) {\n const changes = this.#differ.diff(this.fileItem);\n\n if (changes) {\n let cls: string | undefined;\n const extensionUpper = this.#fileItemService.getFileExtensionUpper(\n this.fileItem as SkyFileItem,\n );\n let fileTypeUpper: string;\n\n switch (extensionUpper) {\n case '.PDF':\n cls = 'pdf';\n break;\n case '.GZ':\n case '.RAR':\n case '.TGZ':\n case '.ZIP':\n cls = 'archive';\n break;\n case '.PPT':\n case '.PPTX':\n cls = 'ppt';\n break;\n case '.DOC':\n case '.DOCX':\n cls = 'doc';\n break;\n case '.XLS':\n case '.XLSX':\n cls = 'xls';\n break;\n case '.TXT':\n cls = 'text';\n break;\n case '.HTM':\n case '.HTML':\n cls = 'chevron-double';\n break;\n default:\n break;\n }\n\n if (!cls) {\n fileTypeUpper = this.#fileItemService.getFileTypeUpper(\n this.fileItem as SkyFileItem,\n );\n\n switch (fileTypeUpper.substr(0, fileTypeUpper.indexOf('/'))) {\n case 'AUDIO':\n cls = 'audio';\n break;\n case 'IMAGE':\n // Normally images are displayed as thumbnails, but if an image type is not recognized\n // as being widely supported by modern browsers (e.g. TIFF files) then an icon should\n // be displayed instead.\n cls = 'image';\n break;\n case 'TEXT':\n cls = 'text';\n break;\n case 'VIDEO':\n cls = 'video';\n break;\n default:\n break;\n }\n }\n this.icon = 'document' + (cls ? '-' + cls : '');\n }\n } else {\n this.icon = undefined;\n }\n }\n\n public itemDelete(): void {\n this.deleteFile.emit(this.fileItem);\n if (!this.isFile) {\n this.#resourcesSvc\n .getString('skyux_file_attachment_file_upload_link_removed', this.url)\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n } else {\n this.#resourcesSvc\n .getString(\n 'skyux_file_attachment_file_upload_file_removed',\n this.fileName,\n )\n .pipe(take(1))\n .subscribe((resourceString) => {\n this.#liveAnnouncerSvc.announce(resourceString);\n });\n }\n }\n}\n","@if (fileItem) {\n <div class=\"sky-file-item\">\n <div class=\"sky-file-item-title\">\n <div class=\"sky-file-item-name-container\">\n <div class=\"sky-file-item-name\">\n @if (isFile) {\n {{ fileName }}\n } @else {\n {{ url }}\n }\n </div>\n @if (isFile) {\n <div class=\"sky-file-item-size\">({{ fileSize | skyFileSize }})</div>\n }\n </div>\n <div class=\"sky-file-item-controls\">\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-default sky-file-item-btn-delete\"\n [attr.aria-label]=\"\n 'skyux_file_attachment_file_item_delete'\n | skyLibResources: (isFile ? fileName : url)\n \"\n (click)=\"itemDelete()\"\n >\n <sky-icon iconName=\"delete\" />\n </button>\n </div>\n </div>\n <div class=\"sky-file-item-content\">\n <div class=\"sky-file-item-preview\">\n @if (isImage) {\n <div class=\"sky-file-item-preview-img-container\">\n <img\n class=\"sky-file-item-preview-img\"\n [src]=\"url\"\n [alt]=\"\n 'skyux_file_attachment_file_upload_image_preview_alt_text'\n | skyLibResources\n \"\n />\n </div>\n } @else if (icon) {\n <div class=\"sky-file-item-preview-other\">\n <sky-icon iconSize=\"xxxl\" [iconName]=\"icon\" />\n </div>\n }\n </div>\n <div class=\"sky-file-item-content-custom\">\n <ng-content />\n </div>\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFormErrorModule } from '../../form-error/form-error.module';\n\nimport { SkyFileDropComponent } from './file-drop.component';\nimport { SkyFileItemComponent } from './file-item.component';\n\n@NgModule({\n exports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule],\n imports: [SkyFileDropComponent, SkyFileItemComponent],\n})\nexport class SkyFileDropModule {}\n","import { NgModule } from '@angular/core';\n\nimport { SkyFileAttachmentModule } from './file-attachment/file-attachment.module';\nimport { SkyFileDropModule } from './file-drop/file-drop.module';\n\n/**\n * @deprecated Import either `SkyFileAttachmentModule` or `SkyFileDropModule`.\n */\n@NgModule({\n exports: [SkyFileAttachmentModule, SkyFileDropModule],\n imports: [SkyFileAttachmentModule, SkyFileDropModule],\n})\nexport class SkyFileAttachmentsModule {}\n","import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * Tracks the element IDs for all radios within a radio group.\n * @internal\n */\n@Injectable()\nexport class SkyRadioGroupIdService {\n public get radioIds(): Observable<string[]> {\n return this.#radioIdsObs;\n }\n\n #radioIds: Map<string, string>;\n #radioIds$: BehaviorSubject<string[]>;\n #radioIdsObs: Observable<string[]>;\n\n constructor() {\n this.#radioIds = new Map();\n this.#radioIds$ = new BehaviorSubject<string[]>([]);\n this.#radioIdsObs = this.#radioIds$.asObservable();\n }\n\n /**\n * Associates a radio input's ID with its parent radio group.\n * @param {string} id A unique ID for the radio component.\n * @param {string} inputElementId The ID applied to the radio input element.\n */\n public register(id: string, inputElementId: string): void {\n if (!this.#radioIds.has(id) || this.#radioIds.get(id) !== inputElementId) {\n this.#radioIds.set(id, inputElementId);\n this.#emitRadioIds();\n }\n }\n\n /**\n * Disassociates a radio input's ID with its parent radio group.\n * @param {string} id The ID used to register the radio component.\n */\n public unregister(id: string): void {\n if (this.#radioIds.has(id)) {\n this.#radioIds.delete(id);\n this.#emitRadioIds();\n }\n }\n\n #emitRadioIds(): void {\n this.#radioIds$.next(Array.from(this.#radioIds.values()));\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Provider,\n TemplateRef,\n booleanAttribute,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\n\nimport { SkyRadioGroupIdService } from './radio-group-id.service';\nimport { SkyRadioChange } from './types/radio-change';\nimport { SkyRadioType } from './types/radio-type';\n\n/**\n * Provider Expression that allows sky-radio to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n */\nconst SKY_RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyRadioComponent),\n multi: true,\n};\n\n/**\n * Renders a SKY UX-themed replacement for an HTML `input` element\n * with `type=\"radio\"`. When users select a radio button, its value is driven through an\n * `ngModel` attribute that you specify on the `sky-radio` element or the parent `sky-radio-group` element.\n */\n@Component({\n selector: 'sky-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [SKY_RADIO_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [SkyThemeComponentClassDirective],\n standalone: false,\n})\nexport class SkyRadioComponent implements OnDestroy, ControlValueAccessor {\n /**\n * Fires when users focus off a radio button.\n */\n public blur = new Subject<void>();\n\n /**\n * Whether the radio button is selected.\n * @default false\n */\n @Input()\n public set checked(value: boolean | undefined) {\n const newCheckedState = !!value;\n\n if (this.#_checked !== newCheckedState) {\n this.#_checked = newCheckedState;\n this.checkedChange.next(newCheckedState);\n\n if (newCheckedState) {\n this.selectedValue = this.value;\n }\n }\n\n this.#changeDetector.markForCheck();\n }\n\n public get checked(): boolean {\n return this.#_checked;\n }\n\n /**\n * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n if (value !== this.disabled) {\n this.#_disabled = value;\n this.disabledChange.next(value);\n this.#changeDetector.markForCheck();\n }\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The ID for the radio button.\n * If a value is not provided, an autogenerated ID is used.\n */\n @Input()\n public set id(value: string | undefined) {\n if (value) {\n this.inputId = `sky-radio-${value}-input`;\n } else {\n this.inputId = `sky-radio-${this.#defaultId}-input`;\n }\n this.#radioGroupIdSvc?.register(this.#defaultId, this.inputId);\n }\n\n /**\n * The ARIA label for the radio button. This sets the radio button's `aria-label`\n * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)\n * when the radio button does not include a visible label. You must set this property for icon\n * radio buttons. If the radio button includes a visible label, use `labelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use `labelText` instead.\n */\n @Input()\n public set label(value: string | undefined) {\n this.#_label = value;\n\n if (value) {\n this.#logger.deprecated('SkyRadioComponent.label', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'Use the `labelText` input instead.',\n });\n }\n }\n\n public get label(): string | undefined {\n return this.#_label;\n }\n\n /**\n * The HTML element ID of the element that labels\n * the radio button. This sets the radio button's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the radio button does not include a visible label, use `label` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n * @deprecated Use `labelText` instead.\n */\n @Input()\n public set labelledBy(value: string | undefined) {\n this.#_labelledBy = value;\n\n if (value) {\n this.#logger.deprecated('SkyRadioComponent.labelledBy', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'Use the `labelText` input instead.',\n });\n }\n }\n\n public get labelledBy(): string | undefined {\n return this.#_labelledBy;\n }\n\n /**\n * This property is deprecated in favor of the `name` property on the `sky-radio-group element`.\n * We recommend using the `sky-radio-group` element with all radio buttons, but if you opt not to,\n * then this property specifies a name for a group of radio buttons.\n * @deprecated\n */\n @Input()\n public set name(value: string | undefined) {\n this.#_name = value;\n this.#changeDetector.markForCheck();\n }\n\n public get name(): string | undefined {\n return this.#_name;\n }\n\n /**\n * This property is deprecated in favor of\n * the `tabIndex` property on the `sky-radio-group` element. It specifies an index for the radio\n * button. If the index is not defined, it is set to the position of the radio button on load.\n * @deprecated\n */\n @Input()\n public set tabindex(value: number | undefined) {\n console.warn(\n 'The sky-radio `tabindex` property is deprecated. Please use the `tabindex` property on the sky-radio-group component.',\n );\n if (value) {\n this.#_tabindex = value;\n } else {\n this.#_tabindex = 0;\n }\n this.#changeDetector.markForCheck();\n }\n public get tabindex(): number {\n return this.#_tabindex;\n }\n\n // For setting the tabindex from the radio group\n public set groupTabIndex(value: number | undefined) {\n if (value) {\n this.#_tabindex = value;\n } else {\n this.#_tabindex = 0;\n }\n\n this.#changeDetector.markForCheck();\n }\n\n /**\n * The value bound to the radio button's `value` property. The value usually\n * corresponds to the radio button's label, which you specify with the `sky-radio-label`\n * component.\n * @required\n */\n @Input()\n public set value(value: any) {\n /* istanbul ignore else */\n if (this.#_value !== value) {\n if (this.selectedValue && this.selectedValue === this.#_value) {\n this.selectedValue = value;\n this.#onChangeCallback(this.selectedValue);\n this.#onTouchedCallback();\n }\n\n this.#_value = value;\n }\n\n this.#changeDetector.markForCheck();\n }\n\n public get value(): any {\n return this.#_value;\n }\n\n /**\n * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to radio button. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * The SVG icon to display in place of the radio button. To group radio buttons like in\n * the demo above, place the `sky-switch-icon-group` class on the direct parent element of the\n * radio buttons.\n */\n @Input()\n public iconName: string | undefined;\n\n /**\n * The background color type after users select an icon radio button.\n * The valid options correspond\n * [the label component's](https://developer.blackbaud.com/skyux/components/label)\n * label types. `danger` creates a red background, `info` creates a blue background,\n * `success` creates a green background, and `warning` creates an orange background.\n * @default \"info\"\n * @deprecated radioType is no longer supported\n */\n @Input()\n public get radioType(): SkyRadioType {\n return this.#_radioType;\n }\n public set radioType(value: SkyRadioType | undefined) {\n if (value) {\n this.#logger.deprecated('SkyRadioComponent.radioType', {\n deprecationMajorVersion: 7,\n });\n }\n\n this.#_radioType = value ?? 'info';\n }\n\n /**\n * The text to display as the radio button's label. Use this instead of the `sky-radio-label` when the label is text-only.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * Indicates whether to hide the `labelText`.\n */\n @Input({ transform: booleanAttribute })\n public labelHidden = false;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the radio button label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * Fires when users select a radio button.\n */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public change = new EventEmitter<SkyRadioChange>();\n\n /**\n * Fires when the selected value changes.\n */\n @Output()\n public checkedChange = new EventEmitter<boolean>();\n\n /**\n * Fires when the selected value changes.\n */\n @Output()\n public disabledChange = new EventEmitter<boolean>();\n\n public set selectedValue(value: any) {\n if (value !== this.#_selectedValue) {\n this.#_selectedValue = value;\n }\n }\n public get selectedValue(): any {\n return this.#_selectedValue;\n }\n\n public radioGroupDisabled = false;\n\n protected inputId = '';\n\n #_checked = false;\n #_disabled = false;\n #_name: string | undefined;\n #_radioType: SkyRadioType = 'info';\n #_selectedValue: unknown;\n #_tabindex = 0;\n #_value: any;\n #_label: string | undefined;\n #_labelledBy: string | undefined;\n\n #changeDetector = inject(ChangeDetectorRef);\n #defaultId = inject(SkyIdService).generateId();\n #radioGroupIdSvc = inject(SkyRadioGroupIdService, { optional: true });\n #logger = inject(SkyLogService);\n\n constructor() {\n this.id = this.#defaultId;\n }\n\n public ngOnDestroy(): void {\n this.#radioGroupIdSvc?.unregister(this.#defaultId);\n this.#removeUniqueSelectionListener();\n this.change.complete();\n this.checkedChange.complete();\n this.disabledChange.complete();\n }\n\n public writeValue(value: unknown): void {\n if (value === undefined) {\n return;\n }\n\n this.selectedValue = value;\n this.checked = this.value === this.selectedValue;\n\n this.#changeDetector.markForCheck();\n }\n\n /**\n * @internal\n * Whether to disable the control. Implemented as a part of ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public setGroupDisabledState(isDisabled: boolean): void {\n this.radioGroupDisabled = isDisabled;\n this.#changeDetector.markForCheck();\n }\n\n public registerOnChange(fn: any): void {\n this.#onChangeCallback = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.#onTouchedCallback = fn;\n }\n\n public onInputChange(event: Event): void {\n event.stopPropagation();\n\n if (!this.disabled) {\n this.checked = true;\n this.change.next({\n value: this.value,\n });\n\n this.onInputFocusChange();\n this.#onChangeCallback(this.value);\n }\n }\n\n public onInputFocusChange(): void {\n this.#onTouchedCallback();\n this.blur.next();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #removeUniqueSelectionListener = (): void => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onChangeCallback = (value: any): void => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onTouchedCallback = (): void => {};\n}\n","<span class=\"sky-radio-outer-wrapper\">\n <label\n class=\"sky-radio-wrapper sky-switch\"\n [ngClass]=\"{ 'sky-switch-disabled': disabled || radioGroupDisabled }\"\n >\n <input\n class=\"sky-radio-input sky-switch-input\"\n type=\"radio\"\n [attr.aria-label]=\"labelText || label\"\n [attr.aria-labelledby]=\"labelText ? undefined : labelledBy\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [checked]=\"checked\"\n [disabled]=\"disabled || radioGroupDisabled\"\n [id]=\"inputId\"\n [name]=\"name\"\n [tabIndex]=\"tabindex\"\n [value]=\"value\"\n (blur)=\"onInputFocusChange()\"\n (change)=\"onInputChange($event)\"\n />\n <span\n class=\"sky-switch-control\"\n [ngClass]=\"{\n 'sky-switch-control-icon': iconName,\n 'sky-rounded-circle': !iconName,\n 'sky-switch-control-info': iconName && radioType === 'info',\n 'sky-switch-control-success': iconName && radioType === 'success',\n 'sky-switch-control-warning': iconName && radioType === 'warning',\n 'sky-switch-control-danger': iconName && radioType === 'danger'\n }\"\n >\n @if (iconName) {\n <sky-icon [iconName]=\"iconName\" />\n }\n </span>\n @if (labelText) {\n <span\n class=\"sky-switch-label sky-radio-label-text\"\n [class.sky-screen-reader-only]=\"labelHidden\"\n >{{ labelText }}</span\n >\n } @else {\n <ng-content select=\"sky-radio-label\" />\n }\n </label>\n @if ((helpPopoverContent || helpKey) && labelText) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n class=\"sky-radio-help-inline\"\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n</span>\n<div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-radio-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n</div>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n HostBinding,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n Self,\n TemplateRef,\n booleanAttribute,\n inject,\n numberAttribute,\n} from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\nimport { SkyThemeComponentClassDirective } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SKY_FORM_ERRORS_ENABLED } from '../form-error/form-errors-enabled-token';\n\nimport { SkyRadioGroupIdService } from './radio-group-id.service';\nimport { SkyRadioComponent } from './radio.component';\nimport { SkyRadioChange } from './types/radio-change';\nimport { SkyRadioGroupHeadingLevel } from './types/radio-group-heading-level';\nimport { SkyRadioGroupHeadingStyle } from './types/radio-group-heading-style';\n\nlet nextUniqueId = 0;\n\nfunction numberAttribute4(value: unknown): number {\n return numberAttribute(value, 4);\n}\n\n/**\n * Organizes radio buttons into a group. It is required for radio\n * buttons on Angular reactive forms, and we recommend using it with all radio buttons.\n * On Angular forms, the component manages the selected values and keeps the forms up-to-date.\n * When users select a radio button, its value is driven through an `ngModel` attribute that you specify on the `sky-radio-group` element.\n */\n@Component({\n selector: 'sky-radio-group',\n templateUrl: './radio-group.component.html',\n styleUrls: ['./radio-group.component.scss'],\n providers: [\n SkyRadioGroupIdService,\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ],\n hostDirectives: [SkyThemeComponentClassDirective],\n standalone: false,\n})\nexport class SkyRadioGroupComponent implements AfterContentInit, OnDestroy {\n /**\n * The HTML element ID of the element that labels\n * the radio button group. This sets the radio button group's `aria-labelledby` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the radio button group does not include a visible label, use `ariaLabel` instead.\n * For more information about the `aria-labelledby` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-labelledby).\n * @deprecated Use `headingText` instead.\n */\n @Input()\n public set ariaLabelledBy(value: string | undefined) {\n this.#_ariaLabelledBy = value;\n\n if (value) {\n this.#logger.deprecated('SkyRadioGroupComponent.ariaLabelledBy', {\n deprecationMajorVersion: 9,\n });\n }\n }\n\n public get ariaLabelledBy(): string | undefined {\n return this.#_ariaLabelledBy;\n }\n\n /**\n * The ARIA label for the radio button group. This sets the\n * radio button group's `aria-label` attribute to provide a text equivalent for screen readers\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the radio button group includes a visible label, use `ariaLabelledBy` instead.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use `headingText` instead.\n */\n @Input()\n public set ariaLabel(value: string | undefined) {\n this.#_ariaLabel = value;\n\n if (value) {\n this.#logger.deprecated('SkyRadioGroupComponent.ariaLabel', {\n deprecationMajorVersion: 9,\n });\n }\n }\n\n public get ariaLabel(): string | undefined {\n return this.#_ariaLabel;\n }\n\n /**\n * Whether to disable the input on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public set disabled(value: boolean) {\n if (this.#_disabled !== value) {\n this.#_disabled = value;\n this.#updateRadioButtonDisabled();\n }\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n /**\n * The semantic heading level in the document structure. By default, the heading text is not wrapped in a heading element.\n */\n @Input({ transform: numberAttribute })\n public set headingLevel(value: SkyRadioGroupHeadingLevel | undefined) {\n this.#_headingLevel = value && !isNaN(value) ? value : undefined;\n this.#updateStackedClasses();\n }\n\n public get headingLevel(): SkyRadioGroupHeadingLevel | undefined {\n return this.#_headingLevel;\n }\n\n /**\n * The heading [font style](https://developer.blackbaud.com/skyux/design/styles/typography#headings).\n * @default 4\n */\n @Input({ transform: numberAttribute4 })\n public set headingStyle(value: SkyRadioGroupHeadingStyle) {\n this.headingClass = `sky-font-heading-${value}`;\n }\n\n /**\n * The name for the collection of radio buttons that the component groups together.\n * This property overwrites the deprecated `name` property on individual `sky-radio` elements,\n * and it is required unless the `name` property is set on individual `sky-radio` elements.\n * @required\n */\n @Input()\n public set name(value: string | undefined) {\n if (value) {\n this.#_name = value;\n } else {\n this.#_name = this.#defaultName;\n }\n this.#updateRadioButtonNames();\n }\n public get name(): string {\n return this.#_name;\n }\n\n /**\n * Whether the input is required for form validation.\n * When you set this property to `true`, the component adds `aria-required` and `required`\n * attributes to the input element so that forms display an invalid state until the input element\n * is complete.\n * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public required = false;\n\n /**\n * Whether the radio button group is stacked on another form component. When specified,\n * the appropriate vertical spacing is automatically added to the radio button group.\n */\n @Input({ transform: booleanAttribute })\n public set stacked(value: boolean) {\n this.#_stacked = value;\n this.#updateStackedClasses();\n }\n\n public get stacked(): boolean {\n return this.#_stacked;\n }\n\n /**\n * The value of the radio button to select by default when the group loads.\n * The value corresponds to the `value` property of an individual `sky-radio` element within the\n * group.\n */\n // TODO: Look into more strongly typing in a breaking change\n @Input()\n public set value(value: any) {\n const isNewValue = value !== this.#controlValue;\n\n /* istanbul ignore else */\n if (isNewValue) {\n this.#controlValue = value;\n this.#onChange(value);\n this.#updateCheckedRadioFromValue();\n }\n }\n\n /**\n * The index for all the radio buttons in the group. If the index is not defined,\n * the indices for individual radio buttons are set to their positions on load.\n * This property supports accessibility by placing focus on the currently selected radio\n * button. If no radio button is selected, it places focus on the first or last button\n * depending on how users navigate to the radio button group.\n */\n @Input()\n public set tabIndex(value: number | undefined) {\n if (this.#_tabIndex !== value) {\n this.#_tabIndex = value;\n this.#updateRadioButtonTabIndexes();\n }\n }\n public get tabIndex(): number | undefined {\n return this.#_tabIndex;\n }\n\n /**\n * The text to display as the radio group's heading.\n */\n @Input()\n public headingText: string | undefined;\n\n /**\n * Indicates whether to hide the `headingText`.\n */\n @Input({ transform: booleanAttribute })\n public headingHidden = false;\n\n /**\n * [Persistent inline help text](https://developer.blackbaud.com/skyux/design/guidelines/user-assistance#inline-help) that provides\n * additional context to the user.\n */\n @Input()\n public hintText: string | undefined;\n\n /**\n * The content of the help popover. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to radio group. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `headingText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `headingText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the radio group heading. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `headingText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * Our radio components are usually implemented using an unordered list. This is an\n * accessibility violation because the unordered list has an implicit role which\n * interrupts the 'radiogroup' and 'radio' relationship. To correct this, we can set the\n * radio group's 'aria-owns' attribute to a space-separated list of radio IDs.\n * For more information about the `aria-owns` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-owns), and for more information about the `radio` role, see [its definition](https://www.w3.org/TR/wai-aria/#radio).\n */\n public ariaOwns: string | undefined;\n\n @ContentChildren(SkyRadioComponent, { descendants: true })\n public radios: QueryList<SkyRadioComponent> | undefined;\n\n @HostBinding('class.sky-form-field-stacked')\n public stackedLg = false;\n\n @HostBinding('class.sky-field-group-stacked')\n public stackedXL = false;\n\n protected get isRequired(): boolean {\n return (\n this.required ||\n (this.ngControl?.control?.hasValidator(Validators.required) ?? false)\n );\n }\n\n protected headingClass = 'sky-font-heading-4';\n\n #controlValue: any;\n\n #defaultName = `sky-radio-group-${nextUniqueId++}`;\n\n #ngUnsubscribe = new Subject<void>();\n\n #_disabled = false;\n\n #_name = '';\n\n #_tabIndex: number | undefined;\n\n #_ariaLabel: string | undefined;\n\n #_ariaLabelledBy: string | undefined;\n\n #_headingLevel: SkyRadioGroupHeadingLevel | undefined;\n\n #_stacked = false;\n\n #changeDetector: ChangeDetectorRef;\n #radioGroupIdSvc: SkyRadioGroupIdService;\n\n readonly #logger = inject(SkyLogService);\n readonly #idService = inject(SkyIdService);\n\n protected errorId = this.#idService.generateId();\n protected ngControl: NgControl | undefined;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n radioGroupIdSvc: SkyRadioGroupIdService,\n @Self() @Optional() ngControl: NgControl,\n ) {\n if (ngControl) {\n ngControl.valueAccessor = this;\n }\n this.#changeDetector = changeDetector;\n this.#radioGroupIdSvc = radioGroupIdSvc;\n this.ngControl = ngControl;\n this.name = this.#defaultName;\n\n this.#radioGroupIdSvc.radioIds\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((ids) => {\n this.ariaOwns = ids.join(' ') || undefined;\n this.#changeDetector.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n // Let child radio components render before updating.\n setTimeout(() => {\n this.#resetRadioButtons();\n });\n\n // Watch for radio selections.\n this.watchForSelections();\n\n /* istanbul ignore else */\n if (this.radios) {\n this.radios.changes.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n // Wait for child radio components to finish any rendering updates.\n setTimeout(() => {\n this.#resetRadioButtons();\n });\n\n // Subscribe to the new radio buttons\n this.watchForSelections();\n });\n }\n }\n\n public watchForSelections(): void {\n /* istanbul ignore else */\n if (this.radios) {\n this.radios.forEach((radio) => {\n radio.change\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((change: SkyRadioChange) => {\n this.#onTouched();\n this.value = change.value;\n });\n radio.blur.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {\n this.#onTouched();\n this.#changeDetector.markForCheck();\n });\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public writeValue(value: unknown): void {\n const isNewValue = value !== this.#controlValue;\n\n /* istanbul ignore else */\n if (isNewValue) {\n this.#controlValue = value;\n this.#updateCheckedRadioFromValue();\n }\n }\n\n /**\n * @internal\n * Whether to disable the control. Implemented as a part of ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public registerOnChange(fn: (value: any) => void): void {\n this.#onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.#onTouched = fn;\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onChange: (value: any) => void = () => {};\n\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #onTouched: () => any = () => {};\n\n #updateRadioButtonDisabled(): void {\n if (this.radios) {\n this.radios.forEach((radio) =>\n radio.setGroupDisabledState(this.disabled),\n );\n }\n }\n\n #updateRadioButtonNames(): void {\n if (this.radios) {\n this.radios.forEach((radio) => {\n radio.name = this.name;\n });\n }\n }\n\n #updateRadioButtonTabIndexes(): void {\n if (this.radios) {\n this.radios.forEach((radio) => {\n radio.groupTabIndex = this.tabIndex;\n });\n }\n }\n\n #updateCheckedRadioFromValue(): void {\n if (!this.radios) {\n return;\n }\n\n this.radios.forEach((radio) => {\n radio.checked = this.#controlValue === radio.value;\n });\n }\n\n #resetRadioButtons(): void {\n this.#updateCheckedRadioFromValue();\n this.#updateRadioButtonNames();\n this.#updateRadioButtonTabIndexes();\n this.#updateRadioButtonDisabled();\n }\n\n #updateStackedClasses(): void {\n this.stackedLg = !this.headingLevel && this.stacked;\n this.stackedXL = !!this.headingLevel && this.stacked;\n }\n}\n","<fieldset\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"headingText ? undefined : ariaLabel\"\n [attr.aria-labelledby]=\"headingText ? undefined : ariaLabelledBy\"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"isRequired ? true : null\"\n [attr.required]=\"isRequired ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n headingText && ngControl?.errors ? errorId : undefined\n \"\n>\n @if (headingText) {\n <legend\n class=\"sky-radio-group-legend\"\n [ngClass]=\"{\n 'sky-screen-reader-only': headingHidden\n }\"\n >\n <span\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >\n @switch (headingLevel) {\n @case (3) {\n <h3 [class]=\"headingClass\">{{ headingText }}</h3>\n }\n @case (4) {\n <h4 [class]=\"headingClass\">{{ headingText }}</h4>\n }\n @case (5) {\n <h5 [class]=\"headingClass\">{{ headingText }}</h5>\n }\n @default {\n <span [class]=\"'sky-radio-group-heading-text ' + headingClass\">{{\n headingText\n }}</span>\n }\n }\n </span>\n @if (required) {\n <span class=\"sky-screen-reader-only\">{{\n 'skyux_form_group_required' | skyLibResources\n }}</span>\n }\n @if (helpPopoverContent || helpKey) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"headingText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </legend>\n }\n <div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-radio-group-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n </div>\n <div class=\"sky-radio-group-content\">\n <ng-content />\n </div>\n</fieldset>\n<sky-form-errors\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"headingText\"\n [touched]=\"ngControl?.touched\"\n [dirty]=\"ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n","import { Component, HostListener, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\n/**\n * Specifies a label for the radio button. To display a help button beside the label, include a help button element,\n * such as `sky-help-inline`, in the `sky-radio-label` element and a `sky-control-help` CSS class on that help button\n * element.\n * @deprecated Use `labelText` input on `sky-radio-component` instead.\n */\n@Component({\n selector: 'sky-radio-label',\n templateUrl: './radio-label.component.html',\n standalone: false,\n})\nexport class SkyRadioLabelComponent {\n // When clicking on a checkbox label, Angular registers two click events.\n // This handler ignores all events except for those that deal\n // with the checkbox input explicitly.\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n event.stopPropagation();\n }\n\n constructor() {\n inject(SkyLogService).deprecated('SkyToggleSwitchLabelComponent', {\n deprecationMajorVersion: 10,\n replacementRecommendation:\n 'To add a label to radio button, use the `labelText` input on the radio button component instead.',\n });\n }\n}\n","<span class=\"sky-switch-label\"\n ><span skyTrim><ng-content /></span\n ><span class=\"sky-control-help-container\"\n ><ng-content select=\".sky-control-help\" /></span\n></span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyFormErrorModule } from '../form-error/form-error.module';\nimport { SkyFormErrorsModule } from '../form-error/form-errors.module';\nimport { SkyFormsResourcesModule } from '../shared/sky-forms-resources.module';\n\nimport { SkyRadioGroupComponent } from './radio-group.component';\nimport { SkyRadioLabelComponent } from './radio-label.component';\nimport { SkyRadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [\n SkyRadioComponent,\n SkyRadioGroupComponent,\n SkyRadioLabelComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n SkyFormErrorModule,\n SkyFormErrorsModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyIdModule,\n SkyFormsResourcesModule,\n SkyTrimModule,\n SkyThemeModule,\n ],\n exports: [\n SkyFormErrorModule,\n SkyRadioComponent,\n SkyRadioGroupComponent,\n SkyRadioLabelComponent,\n ],\n})\nexport class SkyRadioModule {}\n","import { Directive, Input, booleanAttribute, inject } from '@angular/core';\nimport { NgControl, Validators } from '@angular/forms';\n\n/**\n * A host directive used to capture the \"required\" state of the host's form control.\n * @internal\n */\n@Directive({})\nexport class SkyRequiredStateDirective {\n @Input({ transform: booleanAttribute })\n public required = false;\n\n /**\n * Whether the `required` attribute is set to `true`, or the control includes\n * the `Validators.required` validator.\n */\n public isRequired(): boolean {\n return (\n this.required ||\n !!this.#ngControl?.control?.hasValidator(Validators.required)\n );\n }\n\n readonly #ngControl = inject(NgControl, { optional: true, self: true });\n}\n","import {\n ElementRef,\n Injectable,\n Renderer2,\n RendererFactory2,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyMediaBreakpoints } from '@skyux/core';\n\nconst RESPONSIVE_CLASS_XS = 'sky-selection-box-container-xs';\nconst RESPONSIVE_CLASS_SM = 'sky-selection-box-container-sm';\nconst RESPONSIVE_CLASS_MD = 'sky-selection-box-container-md';\nconst RESPONSIVE_CLASS_LG = 'sky-selection-box-container-lg';\n\nconst BREAKPOINT_XS_MAX_PIXELS = 767;\nconst BREAKPOINT_SM_MIN_PIXELS = 768;\nconst BREAKPOINT_SM_MAX_PIXELS = 991;\nconst BREAKPOINT_MD_MIN_PIXELS = 992;\nconst BREAKPOINT_MD_MAX_PIXELS = 1439;\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkySelectionBoxAdapterService {\n #coreAdapterService: SkyCoreAdapterService;\n #renderer: Renderer2;\n\n constructor(\n coreAdapterService: SkyCoreAdapterService,\n rendererFactory: RendererFactory2,\n ) {\n this.#coreAdapterService = coreAdapterService;\n this.#renderer = rendererFactory.createRenderer(undefined, null);\n }\n\n /**\n * Sets focus on the specified element.\n */\n public focus(el: ElementRef): void {\n el.nativeElement.focus();\n }\n\n /**\n * Returns a child element with the `.sky-switch` class.\n * Useful for getting SKY UX-themed radio buttons or checkboxes.\n */\n public getControl(el: ElementRef): HTMLElement {\n return el.nativeElement.querySelector('.sky-switch');\n }\n\n /**\n * Returns a breakpoint based on the width.\n * @param width Width of the element in pixels.\n */\n public getBreakpointForWidth(width: number | undefined): SkyMediaBreakpoints {\n if (!width) {\n return SkyMediaBreakpoints.lg;\n }\n\n if (width <= BREAKPOINT_XS_MAX_PIXELS) {\n return SkyMediaBreakpoints.xs;\n } else if (\n width >= BREAKPOINT_SM_MIN_PIXELS &&\n width <= BREAKPOINT_SM_MAX_PIXELS\n ) {\n return SkyMediaBreakpoints.sm;\n } else if (\n width >= BREAKPOINT_MD_MIN_PIXELS &&\n width <= BREAKPOINT_MD_MAX_PIXELS\n ) {\n return SkyMediaBreakpoints.md;\n } else {\n return SkyMediaBreakpoints.lg;\n }\n }\n\n /**\n * Returns the width of the `parentNode` of the provided `element`.\n */\n public getParentWidth(element: ElementRef): number | undefined {\n return (\n element.nativeElement as HTMLElement | undefined\n )?.parentElement?.getBoundingClientRect()?.width;\n }\n\n /**\n * Returns `true` if the `childEl` is a descendant of the `parentEl`.\n */\n public isDescendant(parentEl: ElementRef, childEl: HTMLElement): boolean {\n return parentEl.nativeElement.contains(childEl);\n }\n\n /**\n * Sets the `tabIndex` of all focusable children of the `element` to the provided `tabIndex`.\n */\n public setChildrenTabIndex(element: ElementRef, tabIndex: number): void {\n const el = element.nativeElement;\n const focusableEls = this.#coreAdapterService.getFocusableChildren(el, {\n ignoreVisibility: true,\n });\n let index = focusableEls.length;\n while (index--) {\n focusableEls[index].tabIndex = tabIndex;\n }\n }\n\n /**\n * Adds a responsive CSS class on the provided element based on its current width.\n */\n public setResponsiveClass(\n element: ElementRef,\n breakpoint: SkyMediaBreakpoints,\n ): void {\n const nativeEl: HTMLElement = element.nativeElement;\n\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_XS);\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_SM);\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_MD);\n this.#renderer.removeClass(nativeEl, RESPONSIVE_CLASS_LG);\n\n let newClass: string;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n newClass = RESPONSIVE_CLASS_XS;\n break;\n }\n case SkyMediaBreakpoints.sm: {\n newClass = RESPONSIVE_CLASS_SM;\n break;\n }\n case SkyMediaBreakpoints.md: {\n newClass = RESPONSIVE_CLASS_MD;\n break;\n }\n case SkyMediaBreakpoints.lg: {\n newClass = RESPONSIVE_CLASS_LG;\n break;\n }\n }\n\n this.#renderer.addClass(nativeEl, newClass);\n }\n\n /**\n * Sets the `tabIndex` of the `element` to the provided `tabIndex`.\n */\n public setTabIndex(element: ElementRef, tabIndex: number): void {\n const el = element.nativeElement;\n\n el.tabIndex = tabIndex;\n }\n}\n","import { Component } from '@angular/core';\n\n/**\n * Specifies the description to display in a selection box.\n */\n@Component({\n selector: 'sky-selection-box-description',\n templateUrl: './selection-box-description.component.html',\n standalone: false,\n})\nexport class SkySelectionBoxDescriptionComponent {}\n","<ng-content />\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyCheckboxComponent } from '../checkbox/checkbox.component';\nimport { SkyRadioComponent } from '../radio/radio.component';\n\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\n\n/**\n * Creates a button to present users with a choice or question before proceeding with a one-time process.\n */\n@Component({\n selector: 'sky-selection-box',\n styleUrls: ['./selection-box.component.scss'],\n templateUrl: './selection-box.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkySelectionBoxComponent implements OnDestroy {\n /**\n * The radio button or checkbox to display in the selection box.\n * @required\n */\n @Input()\n public set control(\n value: SkyCheckboxComponent | SkyRadioComponent | undefined,\n ) {\n this.#_control = value;\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#ngUnsubscribe = new Subject<void>();\n if (value) {\n this.#updateCheckedOnControlChange();\n this.#updateDisabledState();\n }\n }\n\n public get control(): SkyCheckboxComponent | SkyRadioComponent | undefined {\n return this.#_control;\n }\n\n public set checked(value: boolean) {\n this.#_checked = value;\n this.#changeDetector.markForCheck();\n }\n\n public get checked(): boolean {\n return this.#_checked;\n }\n\n public set disabled(value: boolean) {\n if (this.selectionBoxEl) {\n this.#selectionBoxAdapterService.setTabIndex(\n this.selectionBoxEl,\n value ? -1 : 0,\n );\n }\n this.#_disabled = value;\n this.#changeDetector.markForCheck();\n }\n\n public get disabled(): boolean {\n return this.#_disabled;\n }\n\n @ViewChild('control', {\n read: ElementRef,\n static: false,\n })\n public controlEl: ElementRef | undefined;\n\n @ViewChild('selectionBox', {\n read: ElementRef,\n static: false,\n })\n public set selectionBoxEl(value: ElementRef | undefined) {\n this.#_selectionBoxEl = value;\n if (value) {\n this.#selectionBoxAdapterService.setTabIndex(\n value,\n this.disabled ? -1 : 0,\n );\n\n // Wait for child elements to render before overriding tabIndex values.\n // TODO: This logic is brittle since the checkbox/radio can set its own tab index\n // value at any time. We need a way to enforce the tab index for the entire lifespan of the component.\n setTimeout(() => {\n this.#selectionBoxAdapterService.setChildrenTabIndex(value, -1);\n });\n }\n }\n\n public get selectionBoxEl(): ElementRef | undefined {\n return this.#_selectionBoxEl;\n }\n\n #ngUnsubscribe = new Subject<void>();\n\n #_checked = false;\n\n #_control: SkyCheckboxComponent | SkyRadioComponent | undefined;\n\n #_disabled = false;\n\n #_selectionBoxEl: ElementRef | undefined;\n\n #changeDetector: ChangeDetectorRef;\n #selectionBoxAdapterService: SkySelectionBoxAdapterService;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n selectionBoxAdapterService: SkySelectionBoxAdapterService,\n ) {\n this.#changeDetector = changeDetector;\n this.#selectionBoxAdapterService = selectionBoxAdapterService;\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public onKeydown(event: KeyboardEvent): void {\n /* istanbul ignore else */\n if (event.key === ' ') {\n this.#selectControl();\n event.preventDefault();\n }\n }\n\n #selectControl(): void {\n if (this.controlEl) {\n this.#selectionBoxAdapterService.getControl(this.controlEl).click();\n }\n\n if (this.selectionBoxEl) {\n this.#selectionBoxAdapterService.focus(this.selectionBoxEl);\n }\n }\n\n #updateCheckedOnControlChange(): void {\n /* istanbul ignore else */\n if (this.control) {\n this.control.checkedChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.checked = value;\n });\n }\n }\n\n #updateDisabledState(): void {\n /* istanbul ignore else */\n if (this.control) {\n this.control.disabledChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.disabled = value;\n });\n }\n }\n}\n","<label\n #selectionBox\n class=\"sky-selection-box sky-rounded-corners sky-btn sky-btn-default\"\n [attr.disabled]=\"disabled ? true : null\"\n [ngClass]=\"{\n 'sky-selection-box-selected': checked,\n 'sky-selection-box-disabled': disabled\n }\"\n (keydown)=\"onKeydown($event)\"\n>\n <div\n #icon\n class=\"sky-selection-box-icon\"\n [ngClass]=\"{\n 'sky-selection-box-icon-hidden': !icon.innerHTML.trim()\n }\"\n >\n <ng-content select=\"sky-icon\" />\n </div>\n\n <div class=\"sky-selection-box-content\">\n <div class=\"sky-selection-box-header sky-font-display-2\">\n <ng-content select=\"sky-selection-box-header\" />\n </div>\n <div class=\"sky-selection-box-description sky-font-deemphasized\">\n <ng-content select=\"sky-selection-box-description\" />\n </div>\n </div>\n\n <div #control class=\"sky-selection-box-control\">\n <ng-content select=\"sky-radio\" />\n <ng-content select=\"sky-checkbox\" />\n </div>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SkyCoreAdapterService, SkyMutationObserverService } from '@skyux/core';\nimport { SkyThemeService } from '@skyux/theme';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\nimport { SkySelectionBoxComponent } from './selection-box.component';\nimport { SkySelectionBoxGridAlignItemsType } from './types/selection-box-grid-align-items-type';\n\nconst SKY_SELECTION_BOX_CLASS_NAME = '.sky-selection-box';\n\n/**\n * Creates a grid layout for an array of selection boxes.\n */\n@Component({\n selector: 'sky-selection-box-grid',\n templateUrl: './selection-box-grid.component.html',\n styleUrls: ['./selection-box-grid.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class SkySelectionBoxGridComponent implements OnDestroy, OnInit {\n /**\n * @internal\n * How to display the selection boxes in the grid.\n * @default 'center'\n */\n @Input()\n public set alignItems(value: SkySelectionBoxGridAlignItemsType | undefined) {\n if (value) {\n this.#_alignItems = value;\n } else {\n this.#_alignItems = 'center';\n }\n }\n\n public get alignItems(): SkySelectionBoxGridAlignItemsType {\n return this.#_alignItems;\n }\n\n @ContentChildren(SkySelectionBoxComponent, {\n read: SkySelectionBoxComponent,\n })\n public selectionBoxes: QueryList<SkySelectionBoxComponent> | undefined;\n\n @ViewChild('container', {\n read: ElementRef,\n static: true,\n })\n public set containerElementRef(value: ElementRef | undefined) {\n this.#_containerElementRef = value;\n this.#destroyMutationObserver();\n if (value) {\n this.#updateBreakpointClass();\n this.#initMutationObserver();\n }\n }\n\n public get containerElementRef(): ElementRef | undefined {\n return this.#_containerElementRef;\n }\n\n #mutationObserver: MutationObserver | undefined;\n\n #ngUnsubscribe = new Subject<void>();\n\n #_alignItems: SkySelectionBoxGridAlignItemsType = 'center';\n\n #_containerElementRef: ElementRef | undefined;\n\n #coreAdapterService: SkyCoreAdapterService;\n #selectionBoxAdapter: SkySelectionBoxAdapterService;\n #hostElRef: ElementRef;\n #mutationObserverSvc: SkyMutationObserverService;\n #ngZone: NgZone;\n #themeSvc: SkyThemeService | undefined;\n\n constructor(\n coreAdapterService: SkyCoreAdapterService,\n selectionBoxAdapter: SkySelectionBoxAdapterService,\n hostElRef: ElementRef,\n mutationObserverSvc: SkyMutationObserverService,\n ngZone: NgZone,\n @Optional() themeSvc?: SkyThemeService,\n ) {\n this.#coreAdapterService = coreAdapterService;\n this.#selectionBoxAdapter = selectionBoxAdapter;\n this.#hostElRef = hostElRef;\n this.#mutationObserverSvc = mutationObserverSvc;\n this.#ngZone = ngZone;\n this.#themeSvc = themeSvc;\n }\n\n public ngOnInit(): void {\n /* istanbul ignore else */\n if (this.#themeSvc) {\n this.#themeSvc.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#updateBreakpointClass();\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n\n this.#destroyMutationObserver();\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.#updateBreakpointClass();\n }\n\n #initMutationObserver(): void {\n /* istanbul ignore else */\n if (!this.#mutationObserver && this.containerElementRef) {\n const el = this.containerElementRef.nativeElement;\n\n // MutationObserver is patched by Zone.js and therefore becomes part of the\n // Angular change detection cycle, but this can lead to infinite loops in some\n // scenarios. This will keep MutationObserver from triggering change detection.\n this.#ngZone.runOutsideAngular(() => {\n this.#mutationObserver = this.#mutationObserverSvc.create(() => {\n this.#updateChildrenHeights();\n });\n\n this.#mutationObserver.observe(el, {\n characterData: true,\n subtree: true,\n });\n });\n }\n }\n\n #destroyMutationObserver(): void {\n /* istanbul ignore else */\n if (this.#mutationObserver) {\n this.#mutationObserver.disconnect();\n this.#mutationObserver = undefined;\n }\n }\n\n #updateBreakpointClass(): void {\n const parentWidth = this.#selectionBoxAdapter.getParentWidth(\n this.#hostElRef,\n );\n\n if (this.containerElementRef) {\n this.#selectionBoxAdapter.setResponsiveClass(\n this.containerElementRef,\n this.#selectionBoxAdapter.getBreakpointForWidth(parentWidth),\n );\n }\n this.#updateChildrenHeights();\n }\n\n #updateChildrenHeights(): void {\n if (this.containerElementRef) {\n this.#coreAdapterService.resetHeight(\n this.containerElementRef,\n SKY_SELECTION_BOX_CLASS_NAME,\n );\n this.#coreAdapterService.syncMaxHeight(\n this.containerElementRef,\n SKY_SELECTION_BOX_CLASS_NAME,\n );\n }\n }\n}\n","<div\n #container\n class=\"sky-selection-box-grid\"\n [ngClass]=\"'sky-selection-box-grid-align-' + alignItems\"\n>\n <ng-content select=\"sky-selection-box\" />\n</div>\n","import { Component } from '@angular/core';\n\n/**\n * Specifies the header to display in a selection box.\n */\n@Component({\n selector: 'sky-selection-box-header',\n templateUrl: './selection-box-header.component.html',\n standalone: false,\n})\nexport class SkySelectionBoxHeaderComponent {}\n","<ng-content />\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkySelectionBoxAdapterService } from './selection-box-adapter.service';\nimport { SkySelectionBoxDescriptionComponent } from './selection-box-description.component';\nimport { SkySelectionBoxGridComponent } from './selection-box-grid.component';\nimport { SkySelectionBoxHeaderComponent } from './selection-box-header.component';\nimport { SkySelectionBoxComponent } from './selection-box.component';\n\n@NgModule({\n declarations: [\n SkySelectionBoxGridComponent,\n SkySelectionBoxComponent,\n SkySelectionBoxDescriptionComponent,\n SkySelectionBoxHeaderComponent,\n ],\n imports: [CommonModule, SkyThemeModule],\n exports: [\n SkySelectionBoxGridComponent,\n SkySelectionBoxComponent,\n SkySelectionBoxDescriptionComponent,\n SkySelectionBoxHeaderComponent,\n ],\n providers: [SkySelectionBoxAdapterService],\n})\nexport class SkySelectionBoxModule {}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { SkyLogService } from '@skyux/core';\n\n/**\n * Specifies the label to display beside the toggle switch. To display a help button beside the label, include a help\n * button element, such as `sky-help-inline`, in the `sky-toggle-switch` element and a `sky-control-help` CSS class on\n * that help button element.\n * @deprecated Use the `labelText` input on the toggle switch component instead.\n */\n@Component({\n selector: 'sky-toggle-switch-label',\n templateUrl: './toggle-switch-label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyToggleSwitchLabelComponent {\n constructor() {\n inject(SkyLogService).deprecated('SkyToggleSwitchLabelComponent', {\n deprecationMajorVersion: 9,\n replacementRecommendation:\n 'To add a label to toggle switch, use the `labelText` input on the toggle switch component instead.',\n });\n }\n}\n","<span skyTrim><ng-content /></span>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n booleanAttribute,\n forwardRef,\n inject,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { SkyIdService, SkyLogService } from '@skyux/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyToggleSwitchLabelComponent } from './toggle-switch-label.component';\nimport { SkyToggleSwitchChange } from './types/toggle-switch-change';\n\nconst SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyToggleSwitchComponent),\n multi: true,\n};\nconst SKY_TOGGLE_SWITCH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyToggleSwitchComponent),\n multi: true,\n};\n\n@Component({\n selector: 'sky-toggle-switch',\n templateUrl: './toggle-switch.component.html',\n styleUrls: ['./toggle-switch.component.scss'],\n providers: [\n SKY_TOGGLE_SWITCH_CONTROL_VALUE_ACCESSOR,\n SKY_TOGGLE_SWITCH_VALIDATOR,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class SkyToggleSwitchComponent\n implements AfterContentInit, OnDestroy, ControlValueAccessor, Validator\n{\n /**\n * The ARIA label for the toggle switch. This sets the `aria-label`\n * attribute to provide a text equivalent for screen readers [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * Use a context-sensitive label, such as \"Activate annual fundraiser\" for a toggle switch that activates and deactivates an annual fundraiser. Context is especially important if multiple toggle switches are in close proximity.\n * When the `sky-toggle-switch-label` component displays a visible label, this property is only necessary if that label requires extra context.\n * For more information about the `aria-label` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-label).\n * @deprecated Use the `labelText` input instead.\n */\n @Input()\n public set ariaLabel(value: string | undefined) {\n this.#_ariaLabel = value;\n\n if (value !== undefined) {\n this.#logSvc.deprecated('SkyToggleSwitchComponent.ariaLabel', {\n deprecationMajorVersion: 9,\n replacementRecommendation:\n 'To add an ARIA label to the toggle switch, use the `labelText` input instead',\n });\n }\n }\n\n public get ariaLabel(): string | undefined {\n return this.#_ariaLabel;\n }\n\n /**\n * Whether the toggle switch is selected.\n * @default false\n */\n @Input()\n public set checked(value: boolean | undefined) {\n const checked = !!value;\n if (checked !== this.#_checked) {\n this.#_checked = checked;\n this.#onChange(checked);\n\n // Do not mark the field as \"dirty\"\n // if the field has been initialized with a value.\n if (this.#isFirstChange && this.#control) {\n this.#control.markAsPristine();\n this.#isFirstChange = false;\n }\n }\n }\n\n public get checked(): boolean {\n return this.#_checked;\n }\n\n /**\n * Whether to disable the toggle switch on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n */\n @Input()\n public disabled: boolean | undefined = false;\n\n /**\n * The content of the help popover. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is added to the toggle switch. The help inline button displays a [popover](https://developer.blackbaud.com/skyux/components/popover)\n * when clicked using the specified content and optional title. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpPopoverContent: string | TemplateRef<unknown> | undefined;\n\n /**\n * The title of the help popover. This property only applies when `helpPopoverContent` is\n * also specified.\n */\n @Input()\n public helpPopoverTitle: string | undefined;\n\n /**\n * The tab index for the toggle switch. If not defined, the index is set to the position\n * of the toggle switch on load.\n */\n @Input()\n public tabIndex: number | undefined = 0;\n\n /**\n * The text to display as the toggle switch's label.\n */\n @Input()\n public labelText: string | undefined;\n\n /**\n * Whether to hide `labelText` from view.\n */\n @Input({ transform: booleanAttribute })\n public labelHidden = false;\n\n /**\n * A help key that identifies the global help content to display. When specified along with `labelText`, a [help inline](https://developer.blackbaud.com/skyux/components/help-inline)\n * button is placed beside the toggle switch label. Clicking the button invokes [global help](https://developer.blackbaud.com/skyux/learn/develop/global-help)\n * as configured by the application. This property only applies when `labelText` is also specified.\n */\n @Input()\n public helpKey: string | undefined;\n\n /**\n * Fires when the checked state of a toggle switch changes.\n */\n @Output()\n public toggleChange = new EventEmitter<SkyToggleSwitchChange>();\n\n public hasLabelComponent = false;\n public labelId: string;\n\n public enableIndicatorAnimation = false;\n\n @ContentChildren(SkyToggleSwitchLabelComponent)\n public labelComponents: QueryList<SkyToggleSwitchLabelComponent> | undefined;\n\n #control: AbstractControl | undefined;\n #isFirstChange = true;\n readonly #logSvc = inject(SkyLogService);\n #ngUnsubscribe = new Subject<void>();\n\n #_ariaLabel: string | undefined;\n #_checked = false;\n\n #changeDetector: ChangeDetectorRef;\n\n constructor(changeDetector: ChangeDetectorRef, idService: SkyIdService) {\n this.#changeDetector = changeDetector;\n this.labelId = idService.generateId();\n }\n\n public ngAfterContentInit(): void {\n /* istanbul ignore else */\n if (this.labelComponents) {\n this.hasLabelComponent = this.labelComponents.length > 0;\n\n this.labelComponents.changes\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((newLabelComponents) => {\n this.hasLabelComponent = newLabelComponents.length > 0;\n // Allow the template to reload any ARIA attributes that are relying on the\n // label component existing in the DOM.\n this.#changeDetector.markForCheck();\n });\n }\n\n // Wait for the view to render before applying animation effects.\n // (Some browsers, such as Firefox, apply the animation too early.)\n setTimeout(() => {\n this.enableIndicatorAnimation = true;\n });\n }\n\n public ngOnDestroy(): void {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n\n public writeValue(value: boolean): void {\n this.checked = !!value;\n this.#changeDetector.markForCheck();\n }\n\n public validate(control: AbstractControl): ValidationErrors | null {\n if (!this.#control) {\n this.#control = control;\n }\n\n return null;\n }\n\n public registerOnChange(fn: (value: any) => void): void {\n this.#onChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.#onTouched = fn;\n }\n\n public setDisabledState(disabled: boolean): void {\n this.disabled = disabled;\n this.#changeDetector.markForCheck();\n }\n\n public onButtonClick(event: any): void {\n event.stopPropagation();\n this.#toggleChecked();\n this.#emitChangeEvent();\n }\n\n public onButtonBlur(): void {\n this.#onTouched();\n }\n\n /* istanbul ignore next */\n #onTouched: () => any = () => {};\n /* istanbul ignore next */\n #onChange: (value: any) => void = () => {};\n\n #emitChangeEvent(): void {\n this.#onChange(this.#_checked);\n this.toggleChange.emit({\n checked: this.#_checked,\n });\n }\n\n #toggleChecked(): void {\n this.checked = !this.checked;\n }\n}\n","<span\n class=\"sky-toggle-switch\"\n [ngClass]=\"{\n 'sky-toggle-switch-with-label': hasLabelComponent || labelText\n }\"\n>\n <button\n #toggle=\"skyId\"\n class=\"sky-toggle-switch-button\"\n role=\"switch\"\n type=\"button\"\n skyId\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"labelText || ariaLabel || null\"\n [attr.aria-labelledby]=\"\n !ariaLabel && (hasLabelComponent || labelText) ? labelId : null\n \"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'sky-toggle-switch-checked': checked,\n 'sky-toggle-switch-disabled': disabled\n }\"\n [tabIndex]=\"tabIndex\"\n (blur)=\"onButtonBlur()\"\n (click)=\"onButtonClick($event)\"\n >\n <div aria-hidden=\"true\" class=\"sky-toggle-switch-switch\">\n <i\n class=\"sky-toggle-switch-indicator\"\n [ngClass]=\"{\n 'sky-toggle-switch-transition': enableIndicatorAnimation\n }\"\n >&nbsp;</i\n >\n </div>\n </button>\n <span>\n @if (hasLabelComponent || labelText) {\n <label\n class=\"sky-toggle-switch-label\"\n [for]=\"toggle.id\"\n [attr.id]=\"labelId\"\n >\n @if (labelText) {\n @if (!labelHidden) {\n <span class=\"sky-toggle-switch-label-text\">{{ labelText }}</span>\n }\n } @else {\n <ng-content select=\"sky-toggle-switch-label\" />\n }\n </label>\n }\n <span class=\"sky-control-help-container\">\n @if (labelText && (helpPopoverContent || helpKey)) {\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n }\n <ng-content select=\".sky-control-help\" />\n </span>\n </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyIdModule, SkyTrimModule } from '@skyux/core';\nimport { SkyHelpInlineModule } from '@skyux/help-inline';\n\nimport { SkyToggleSwitchLabelComponent } from './toggle-switch-label.component';\nimport { SkyToggleSwitchComponent } from './toggle-switch.component';\n\n@NgModule({\n declarations: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent],\n imports: [\n CommonModule,\n FormsModule,\n SkyHelpInlineModule,\n SkyIdModule,\n SkyTrimModule,\n ],\n exports: [SkyToggleSwitchLabelComponent, SkyToggleSwitchComponent],\n})\nexport class SkyToggleSwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.SkyCharacterCounterScreenReaderPipe","i3","i1","numberAttribute4","i2","i3.SkyFormErrorsComponent","i5","i6","i7.SkyCheckboxLabelTextLabelComponent","i4","MAX_FILE_SIZE_DEFAULT","MIN_FILE_SIZE_DEFAULT","i1.SkyFileAttachmentService","i2.SkyFileItemService","i7","i8","i9","takeUntil","i2.SkyCharacterCounterIndicatorComponent","i7.SkyInputBoxHintTextPipe","i6.SkyInputBoxComponent","i7.SkyInputBoxControlDirective","i1.SkyFileItemService","i1.SkyRadioGroupIdService","i5.SkyFormErrorsComponent","i1.SkySelectionBoxAdapterService","i2.SkySelectionBoxAdapterService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;;;;;AAKG;AAQH,MAAM,SAAS,GAAoC;AACjD,IAAA,OAAO,EAAE;AACP,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE;AACvE,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,mCAAmC;AAC7C,SAAA;AACD,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,8BAA8B;AACxC,SAAA;AACD,QAAA,qBAAqB,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE;AACnE,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,0CAA0C;AACpD,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,2CAA2C,EAAE;AAC3C,YAAA,OAAO,EAAE,gEAAgE;AAC1E,SAAA;AACD,QAAA,mCAAmC,EAAE;AACnC,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,0CAA0C;AACpD,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,yCAAyC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAC3E,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EAAE,6CAA6C;AACvD,SAAA;AACD,QAAA,0BAA0B,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE;AACvE,QAAA,0BAA0B,EAAE;AAC1B,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EACL,oEAAoE;AACvE,SAAA;AACD,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE;AAC1D,QAAA,qBAAqB,EAAE,EAAE,OAAO,EAAE,+BAA+B,EAAE;AACnE,QAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,kCAAkC,EAAE;AACrE,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AAClD,QAAA,8CAA8C,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;AAC1E,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,iBAAiB;AAC3B,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA;AACD,QAAA,qDAAqD,EAAE;AACrD,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACjE,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC1E,QAAA,wCAAwC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;AAClE,QAAA,0CAA0C,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AACnE,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,kBAAkB;AAC5B,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,qCAAqC;AAC/C,SAAA;AACD,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,iBAAiB;AAC3B,SAAA;AACD,QAAA,4CAA4C,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACvE,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,8CAA8C,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE;AAC3E,QAAA,wDAAwD,EAAE;AACxD,YAAA,OAAO,EAAE,eAAe;AACzB,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACD,QAAA,4CAA4C,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE;AAC3E,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACD,QAAA,2CAA2C,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAChE,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,sCAAsC;AAChD,SAAA;AACD,QAAA,0DAA0D,EAAE;AAC1D,YAAA,OAAO,EAAE,2CAA2C;AACrD,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,8BAA8B;AACxC,SAAA;AACD,QAAA,0CAA0C,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAC1E,QAAA,8BAA8B,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AACvD,QAAA,sCAAsC,EAAE;AACtC,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,6BAA6B,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE;AACnE,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,4CAA4C;AACtD,SAAA;AACD,QAAA,gCAAgC,EAAE;AAChC,YAAA,OAAO,EAAE,iCAAiC;AAC3C,SAAA;AACD,QAAA,qBAAqB,EAAE;AACrB,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,yBAAyB,EAAE;AACzB,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,2CAA2C,EAAE;AAC3C,YAAA,OAAO,EACL,oFAAoF;AACvF,SAAA;AACD,QAAA,mCAAmC,EAAE;AACnC,YAAA,OAAO,EAAE,yCAAyC;AACnD,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,oCAAoC,EAAE;AACpC,YAAA,OAAO,EAAE,qDAAqD;AAC/D,SAAA;AACD,QAAA,yCAAyC,EAAE;AACzC,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EAAE,oDAAoD;AAC9D,SAAA;AACD,QAAA,0BAA0B,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE;AAC1E,QAAA,0BAA0B,EAAE;AAC1B,YAAA,OAAO,EAAE,2CAA2C;AACrD,SAAA;AACD,QAAA,sBAAsB,EAAE;AACtB,YAAA,OAAO,EACL,4EAA4E;AAC/E,SAAA;AACD,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACzD,QAAA,qBAAqB,EAAE;AACrB,YAAA,OAAO,EAAE,0CAA0C;AACpD,SAAA;AACD,QAAA,oBAAoB,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE;AAC1E,QAAA,yBAAyB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AAChD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,oBAAoB;AAC9B,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,yBAAyB;AACnC,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,qDAAqD,EAAE;AACrD,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,sCAAsC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;AACpE,QAAA,sCAAsC,EAAE;AACtC,YAAA,OAAO,EAAE,6BAA6B;AACvC,SAAA;AACD,QAAA,wCAAwC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;AACnE,QAAA,0CAA0C,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;AACpE,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,kCAAkC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACzD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,+BAA+B;AACzC,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,wDAAwD;AAClE,SAAA;AACD,QAAA,iDAAiD,EAAE;AACjD,YAAA,OAAO,EAAE,2BAA2B;AACrC,SAAA;AACD,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,mBAAmB;AAC7B,SAAA;AACD,QAAA,+CAA+C,EAAE;AAC/C,YAAA,OAAO,EAAE,qCAAqC;AAC/C,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,mBAAmB;AAC7B,SAAA;AACD,QAAA,wDAAwD,EAAE;AACxD,YAAA,OAAO,EAAE,mBAAmB;AAC7B,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,qCAAqC;AAC/C,SAAA;AACD,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,uBAAuB;AACjC,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,0BAA0B;AACpC,SAAA;AACD,QAAA,2CAA2C,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;AACnE,QAAA,4CAA4C,EAAE;AAC5C,YAAA,OAAO,EAAE,gCAAgC;AAC1C,SAAA;AACD,QAAA,8CAA8C,EAAE;AAC9C,YAAA,OAAO,EAAE,gCAAgC;AAC1C,SAAA;AACD,QAAA,gDAAgD,EAAE;AAChD,YAAA,OAAO,EAAE,gDAAgD;AAC1D,SAAA;AACD,QAAA,0DAA0D,EAAE;AAC1D,YAAA,OAAO,EAAE,sDAAsD;AAChE,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,wCAAwC;AAClD,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,8CAA8C;AACxD,SAAA;AACD,QAAA,oDAAoD,EAAE;AACpD,YAAA,OAAO,EAAE,uCAAuC;AACjD,SAAA;AACD,QAAA,8DAA8D,EAAE;AAC9D,YAAA,OAAO,EAAE,6CAA6C;AACvD,SAAA;AACD,QAAA,0CAA0C,EAAE;AAC1C,YAAA,OAAO,EAAE,uBAAuB;AACjC,SAAA;AACD,QAAA,8BAA8B,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;AACrD,QAAA,sCAAsC,EAAE;AACtC,YAAA,OAAO,EAAE,wCAAwC;AAClD,SAAA;AACF,KAAA;CACF;AAED,sBAAsB,CAAC,YAAY,CAAC,SAAS,CAAC;AAE9C;;AAEG;MAIU,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,aAAa,CAAA,EAAA,CAAA,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,YAFxB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAEZ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;AACzB,iBAAA;;;MC5QY,mCAAmC,CAAA;AAC9C,IAAA,0BAA0B;IAEnB,SAAS,CACd,cAAkC,EAClC,mBAAuC,EAAA;;;QAIvC,IAAI,cAAc,KAAK,SAAS,IAAI,mBAAmB,KAAK,SAAS,EAAE;AACrE,YAAA,OAAO,EAAE;QACX;;AAGA,QAAA,MAAM,OAAO,GACX,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI;AAC5D,cAAE;cACA,EAAE;QAER,IACE,cAAc,KAAK,mBAAmB;YACtC,cAAc,GAAG,OAAO,KAAK,CAAC;AAC9B,YAAA,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAC7C;AACA,YAAA,IAAI,CAAC,0BAA0B,GAAG,cAAc;QAClD;aAAO;;AAEL,YAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAC7C,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAC1C;;YAED,MAAM,2BAA2B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;;YAExE,MAAM,mCAAmC,GAAG,IAAI,CAAC,IAAI,CACnD,cAAc,GAAG,OAAO,CACzB;;YAGD,IACE,2BAA2B,KAAK,4BAA4B;gBAC5D,mCAAmC,KAAK,4BAA4B,EACpE;AACA,gBAAA,IAAI,CAAC,0BAA0B;oBAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,OAAO;YAClD;QACF;AAEA,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE;IACzD;8GAhDW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iCAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAH/C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iCAAiC;AACxC,iBAAA;;;MCUY,qCAAqC,CAAA;IAChD,qBAAqB,GAAG,CAAC;IACzB,gBAAgB,GAAG,CAAC;AAEpB,IAAA,eAAe;AAEf,IAAA,WAAA,CAAY,cAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;IACvC;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEA,IACW,cAAc,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,qBAAqB;IACnC;IAEA,IACW,mBAAmB,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;8GA5BW,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,sLCdlD,0uBAuBA,EAAA,MAAA,EAAA,CAAA,0fAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,mCAAA,EAAA,IAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDTa,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAPjD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,eAAA,EAG1B,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,0uBAAA,EAAA,MAAA,EAAA,CAAA,0fAAA,CAAA,EAAA;;sBAgBhB;;sBAUA;;;AE5BH;;;;;AAKG;MAYU,iCAAiC,CAAA;AAC5C;;;;AAIG;AACH,IAAA,IACW,4BAA4B,GAAA;QAGrC,OAAO,IAAI,CAAC,8BAA8B;IAC5C;IACA,IAAW,4BAA4B,CACrC,KAAwD,EAAA;AAExD,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK;QAC3C,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA;;;;AAIG;IACH,IACW,wBAAwB,CAAC,KAAyB,EAAA;AAC3D,QAAA,IAAI,CAAC,kCAAkC,GAAG,KAAK,IAAI,CAAC;QACpD,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,8BAA8B;IAI9B,kCAAkC,GAAG,CAAC;AAE/B,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;AAE3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAExD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kCAAkC;QAErD,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,kCAAkC,EAAE;;YAE1D,OAAO,CAAC,aAAa,EAAE;YAEvB,OAAO;AACL,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,OAAO,EAAE,KAAK;oBACd,KAAK;AACN,iBAAA;aACF;QACH;AAEA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,yBAAyB,CAAC,EAAc,EAAA;AAC7C,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC5B;AAEA,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACrC,YAAA,IAAI,CAAC,4BAA4B,CAAC,cAAc,GAAG,KAAK;QAC1D;IACF;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE;YACrC,IAAI,CAAC,4BAA4B,CAAC,mBAAmB;gBACnD,IAAI,CAAC,kCAAkC;QAC3C;QAEA,IAAI,CAAC,gBAAgB,EAAE;IACzB;;AAGA,IAAA,gBAAgB,GAAG,MAAW,EAAE,CAAC;8GAlFtB,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EATjC;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,iCAAiC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGU,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAX7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAA,iCAAmC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;sBAOE;;sBAkBA;;;MCxBU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iBAflC,iCAAiC;AACjC,YAAA,qCAAqC,aAGrC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,mCAAmC;AACnC,YAAA,uBAAuB,aAGvB,iCAAiC;YACjC,qCAAqC,CAAA,EAAA,CAAA,CAAA;AAG5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YAXlC,YAAY;YACZ,WAAW;YACX,mBAAmB;YAEnB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAOd,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iCAAiC;wBACjC,qCAAqC;AACtC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,mCAAmC;wBACnC,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,iCAAiC;wBACjC,qCAAqC;AACtC,qBAAA;AACF,iBAAA;;;ACxBD;;AAEG;MACU,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;;ACM3B;;;;;AAKG;MAmBU,qBAAqB,CAAA;AAehC,IAAA,IAAgD,aAAa,GAAA;QAC3D,OAAO,IAAI,CAAC,SAAS;IACvB;AAMA,IAAA,WAAA,GAAA;AAJmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,uBAAuB,EAAE;AAC9D,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E;QACH;IACF;8GA7BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAftB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAXS,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAgBvB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB,CAAC,wBAAwB,CAAC,EAAA,QAAA,EACzB;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,cAAA,EAEe,CAAC,+BAA+B,CAAC,EAAA,eAAA,EAChC,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,uWAAA,CAAA,EAAA;;sBAO9C,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAOxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAGxB,WAAW;uBAAC,sBAAsB;;;MC3CxB,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAlB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAHnB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAGpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;ACOD;;AAEG;MAQU,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAoBE;;AAEG;QAEI,IAAA,CAAA,OAAO,GAAG,KAAK;AAEtB;;AAEG;QAEI,IAAA,CAAA,KAAK,GAAG,KAAK;QAGD,IAAA,CAAA,UAAU,GAAG,MAAM;QAGnB,IAAA,CAAA,QAAQ,GAAG,WAAW;QAGtB,IAAA,CAAA,YAAY,GAAG,KAAK;AACxC,IAAA;8GAjCY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAgBb,gBAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAMhB,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CtC,mvHAyIA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtHY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAK1D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAClB,CAAC,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,CAAC,EAAA,eAAA,EAGrD,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mvHAAA,EAAA,MAAA,EAAA,CAAA,0DAAA,CAAA,EAAA;;sBAM9C;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAMrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,WAAW;uBAAC,kBAAkB;;sBAG9B,WAAW;uBAAC,gBAAgB;;sBAG5B,WAAW;uBAAC,oBAAoB;;;AElDnC;;AAEG;MAKU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,EAAE,qBAAqB,aAC7C,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAErB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAG5C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,CAAC;oBACxD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACgBD,SAASC,kBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC;AAEA;;AAEG;MAuBU,yBAAyB,CAAA;AAtBtC,IAAA,WAAA,GAAA;AA4CE;;AAEG;QAEI,IAAA,CAAA,aAAa,GAAG,KAAK;AA+B5B;;AAEG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;QAyBhB,IAAA,CAAA,SAAS,GAAG,KAAK;QAGjB,IAAA,CAAA,SAAS,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAClC,IAAA,CAAA,YAAY,GAAG,oBAAoB;QACnC,IAAA,CAAA,gBAAgB,GAAG,4BAA4B;QAIzD,IAAA,CAAA,SAAS,GAAG,KAAK;AA8BlB,IAAA;AApGC;;AAEG;IACH,IACW,YAAY,CAAC,KAA+C,EAAA;AACrE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;QAChE,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;;AAGG;IACH,IACW,YAAY,CAAC,KAAmC,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,iBAAA,EAAoB,KAAK,EAAE;IACjD;AAeA;;;AAGG;IACH,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAgBS,IAAA,MAAM;AAMf,IAAA,cAAc;AACd,IAAA,SAAS;AAEF,IAAA,QAAQ,CAAC,SAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,KAAK,SAAS;AAE5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,IAAI,kBAAkB,GAAG,KAAK;AAE9B,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,KAAI;YACnC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AAC1C,YAAA,IAAI,OAAO,EAAE,KAAK,EAAE;gBAClB,kBAAkB,GAAG,IAAI;YAC3B;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;AACnD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;IACtD;8GA/HW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAyBhB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAMhB,eAAe,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EA5D5BA,kBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAyFH,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAOhB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EA7EzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,yBAAyB;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,SAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAD,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrDH,oxEAmFA,EAAA,MAAA,EAAA,CAAA,24CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5CI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAYL,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAtBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,WAAW;wBACX,cAAc;qBACf,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAA,yBAA2B;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;qBACrD,EAAA,cAAA,EACe,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,oxEAAA,EAAA,MAAA,EAAA,CAAA,24CAAA,CAAA,EAAA;;sBAQhD;;sBAOA;;sBAMA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAMxB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAMrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAcpC,KAAK;uBAAC,EAAE,SAAS,EAAEJ,kBAAgB,EAAE;;sBASrC;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAerC;;sBAGA,WAAW;uBAAC,8BAA8B;;sBAG1C,WAAW;uBAAC,+BAA+B;;;AE9I9C;;AAEG;MAUU,kCAAkC,CAAA;AAT/C,IAAA,WAAA,GAAA;QAWS,IAAA,CAAA,WAAW,GAAG,KAAK;QAW1B,IAAA,CAAA,WAAW,GAAG,EAAE;AACjB,IAAA;IAVC,IACW,SAAS,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE;IACjC;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA,IAAA,WAAW;8GAbA,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,0JCd/C,sFAGA,EAAA,MAAA,EAAA,CAAA,8DAAA,EAAA,sEAAA,CAAA,EAAA,CAAA,CAAA;;2FDWa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAT9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAM7B,KAAK,EAAA,QAAA,EAAA,sFAAA,EAAA,MAAA,EAAA,CAAA,8DAAA,EAAA,sEAAA,CAAA,EAAA;;sBAGhB;;sBAGA;;;AEhBH;;;;;AAKG;MAMU,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,+ECbtC,4LAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDQa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAElB,KAAK,EAAA,QAAA,EAAA,4LAAA,EAAA;;;AEqBnB;;;AAGG;MAoBU,oBAAoB,CAAA;AAG/B;;;;;;AAMG;IACH,IACW,KAAK,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,EAAE;AACpD,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;;;;AAMG;IACH,IACW,UAAU,CAAC,KAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iCAAiC,EAAE;AACzD,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA;;;AAGG;IACH,IACW,EAAE,CAAC,KAAyB,EAAA;QACrC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,aAAA,EAAgB,KAAK,QAAQ;QAC9C;aAAO;YACL,IAAI,CAAC,OAAO,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,QAAQ;QACxD;IACF;AAEA;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC;IACF;AAEA;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AASA;;;AAGG;IACH,IACW,IAAI,CAAC,KAAyB,EAAA;QACvC,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;aAAO;YACL,IAAI,CAAC,MAAM,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,EAAE;QACjD;IACF;AAEA,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AA+BA;;;;;;;;AAQG;IACH,IACW,YAAY,CAAC,KAAyB,EAAA;QAC/C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mCAAmC,EAAE;AAC3D,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM;IAC5D;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;;AAGG;IACH,IACW,OAAO,CAAC,KAA0B,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK;AACvB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC;IACF;AAEA;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;;AAGG;IACH,IACW,aAAa,CAAC,KAA0B,EAAA;AACjD,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK;YAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACpD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe;AAC/D,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;YACrC;QACF;IACF;AAEA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAiDA;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,iBAAiB;IAC/B;AAEA;;AAEG;AACH,IAAA,IACW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,kBAAkB;IAChC;AAEA;;;AAGG;AACH,IAAA,IACW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,uBAAuB;IACrC;IAEA,IACW,OAAO,CAAC,EAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;YAC5B,EAAE,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACrD;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAc,kBAAkB,GAAA;AAC9B,QAAA,OAAO,CAAC,EACN,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;YACnD,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAChD;IACH;AAKA,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,eAAe;AACf,IAAA,kBAAkB;AAClB,IAAA,oBAAoB;AACpB,IAAA,uBAAuB;AAEvB,IAAA,SAAS;AACT,IAAA,cAAc;AACd,IAAA,UAAU;AACV,IAAA,eAAe;AACf,IAAA,SAAS;AACT,IAAA,MAAM;AACN,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ,IAAA,eAAe;AACf,IAAA,MAAM;AACN,IAAA,UAAU;AACV,IAAA,OAAO;AAIP,IAAA,WAAA,GAAA;AA3OA;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAuB,CAAC;AAkCvC;;AAEG;AAGI,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAqB;AAyErD;;;;;;AAMG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AASvB;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAS1B;;;;AAIG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;QAwDZ,IAAA,CAAA,OAAO,GAAG,EAAE;QAStB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,cAAc,GAAG,MAAM;QACvB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,eAAe,GAAG,KAAK;QAEvB,IAAA,CAAA,MAAM,GAAG,EAAE;AAIX,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAEZ,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;;;AAqF9C,QAAA,IAAA,CAAA,SAAS,GAAc,MAAK,EAAE,CAAC;;AAGtC,QAAA,IAAA,CAAA,6BAA6B,GAAyB,CAAC,KAAK,KAAI,EAAE,CAAC;AArFjE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAW;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAW;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAW;QAElD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;QAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QAC7D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AACvE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU;IAC7B;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;IACpD;AAEO,IAAA,QAAQ,CAAC,OAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,KAAK,OAAO;;;;;QAMxB,OAAO,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,KAAK,KAAK;AAClD,cAAE,EAAE,QAAQ,EAAE,IAAI;cAChB,IAAI;IACV;AAEA;;AAEG;AACI,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;IACxB;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,6BAA6B,GAAG,EAAE;IACzC;AAEA;;AAEG;AACI,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA;;;AAGG;AACI,IAAA,kBAAkB,CAAC,KAAY,EAAA;;;;QAIpC,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC;YAChD,IAAI,CAAC,gBAAgB,EAAE;QACzB;IACF;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,SAAS,EAAE;IAClB;;AAQA,IAAA,6BAA6B;IAE7B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7C;AAEA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;IAC9B;8GA5ZW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAiEX,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA2IhB,gBAAgB,uEAahB,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAehB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAnPzB;YACT,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1E,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAgR6B,UAAU,oGCpU1C,40GA8GA,EAAA,MAAA,EAAA,CAAA,41BAAA,EAAA,i3CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,kCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDvDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,cAAA,EAMR,CAAC,+BAA+B,CAAC,EAAA,SAAA,EACtC;wBACT,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1E,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,oBAAsB;AACjC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,40GAAA,EAAA,MAAA,EAAA,CAAA,41BAAA,EAAA,i3CAAA,CAAA,EAAA;;sBAYhB;;sBAsBA;;sBAmBA;;sBAcA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC;;sBAOA;;sBAkBA;;sBAOA;;sBAMA;;sBAQA;;sBAYA;;sBAmBA;;sBAoBA;;sBAuBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAQA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAQ1C;;sBAMA;;sBAQA;;sBASA;;sBAKA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;MEzR/B,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAxB1B,oBAAoB;YACpB,yBAAyB;AACzB,YAAA,kCAAkC,aAGlC,YAAY;YACZ,WAAW;YACX,yBAAyB;YACzB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,aAAa;AACb,YAAA,cAAc,aAGd,oBAAoB;YACpB,yBAAyB;YACzB,yBAAyB;YACzB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAnB1B,YAAY;YACZ,WAAW;YACX,yBAAyB;YACzB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,aAAa;AACb,YAAA,cAAc,EAMd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1B7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,yBAAyB;wBACzB,kCAAkC;AACnC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,yBAAyB;wBACzB,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,aAAa;wBACb,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,yBAAyB;wBACzB,yBAAyB;wBACzB,kBAAkB;AACnB,qBAAA;AACF,iBAAA;;;AC1BD,SAAS,gBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC;AAEA;;AAEG;MAOU,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAoBE;;AAEG;QAEI,IAAA,CAAA,aAAa,GAAG,KAAK;AAE5B;;;AAGG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;AAEtB;;;AAGG;QAEI,IAAA,CAAA,YAAY,GAA8B,CAAC;QAkCxC,IAAA,CAAA,YAAY,GAAG,oBAAoB;AAC9C,IAAA;AAjCC;;;AAGG;IACH,IACW,YAAY,CAAC,KAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,iBAAA,EAAoB,KAAK,EAAE;IACjD;8GA1CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iKAiBb,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAOhB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EArC7B,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAhB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBzB,g1CAiDA,02BDtBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,8GAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE7D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAGlB,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,g1CAAA,EAAA,MAAA,EAAA,CAAA,mzBAAA,CAAA,EAAA;;sBAMxE,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAOxB;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,+BAA+B;;sBAO3C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAUrC;;sBAOA;;sBAQA;;;MErFU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAErB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAHpB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAGrB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACCD;;;;;;;AAOG;MAQU,+BAA+B,CAAA;AAI1C,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,iCAAiC,EAAE;AAClE,YAAA,uBAAuB,EAAE,CAAC;AAC1B,YAAA,yBAAyB,EACvB,sEAAsE;gBACtE,iDAAiD;AACpD,SAAA,CAAC;IACJ;8GAXW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB5C,6NAKA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,WAAW,8GAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKzB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,WAAW,EAAE,aAAa,CAAC,EAAA,QAAA,EAC3B,2BAA2B,EAAA,QAAA,EAAA,6NAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA;;sBAKpC,SAAS;uBAAC,gBAAgB;;;AEpB7B;;AAEG;MAIU,eAAe,CAAA;AACjB,IAAA,iBAAiB;IACjB,cAAc,GAAG,OAAO;AAEjC,IAAA,WAAA,CAAY,gBAAwC,EAAA;AAClD,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;IAC3C;AAEO,IAAA,SAAS,CAAC,KAA8B,EAAA;QAC7C,IAAI,aAAa,GAAG,CAAC,EACnB,QAAQ,GAAG,CAAC,EACZ,QAAgB;QAElB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC;QAEA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACzB,QAAQ,GAAG,4CAA4C;QACzD;AAAO,aAAA,IAAI,KAAK,GAAG,IAAI,EAAE;YACvB,QAAQ,GAAG,0CAA0C;QACvD;aAAO,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACpC,QAAQ,GAAG,oCAAoC;YAC/C,QAAQ,GAAG,IAAI;QACjB;aAAO,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;YACpC,QAAQ,GAAG,oCAAoC;YAC/C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,aAAa,GAAG,CAAC;QACnB;aAAO;YACL,QAAQ,GAAG,oCAAoC;YAC/C,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5B,aAAa,GAAG,CAAC;QACnB;QAEA,MAAM,WAAW,GACf,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC;AAE7B,QAAA,MAAM,aAAa,GAAG,YAAY,CAChC,WAAW,EACX,IAAI,CAAC,cAAc,EACnB,MAAM,CACP;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjD;AAEA,IAAA,UAAU,CAAC,GAAW,EAAE,GAAG,IAAe,EAAA;;AAExC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAC9C,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAC/B,GAAG,EACH,GAAG,IAAI,CACR;IACH;8GA1DW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACpB,iBAAA;;;ACPD;;;AAGG;MAIU,4BAA4B,CAAA;IAChC,SAAS,CAAC,GAAG,GAAkC,EAAA;;AAEpD,QAAA,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAChD;8GAJW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,0BAA0B;AACjC,iBAAA;;;ACHD;;AAEG;MAEU,wBAAwB,CAAA;IAC5B,UAAU,CACf,KAAoB,EACpB,WAAmB,EACnB,WAAmB,EACnB,aAAsB,EACtB,UAA8B,EAAA;QAE9B,MAAM,WAAW,GAAkB,EAAE;AAErC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YACzB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;AACpC,gBAAA,QAAQ,CAAC,SAAS,GAAG,aAAa;AAClC,gBAAA,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC5C,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;iBAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;AAC3C,gBAAA,QAAQ,CAAC,SAAS,GAAG,aAAa;AAClC,gBAAA,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC5C,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;AAAO,iBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE;AACnE,gBAAA,QAAQ,CAAC,SAAS,GAAG,UAAU;gBAC/B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;AAC/D,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;iBAAO,IAAI,UAAU,EAAE;AACrB,gBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;gBAEvC,IAAI,UAAU,EAAE;AACd,oBAAA,QAAQ,CAAC,SAAS,GAAG,UAAU;AAC/B,oBAAA,QAAQ,CAAC,UAAU,GAAG,UAAU;gBAClC;AACA,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;iBAAO;AACL,gBAAA,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,WAAW;IACpB;AAEA;;AAEG;AACI,IAAA,YAAY,CAAC,KAAe,EAAA;AACjC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACjD,MAAM,IAAI,GAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,IACE,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,EACnC;AACA,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEO,gBAAgB,CAAC,QAAgB,EAAE,aAAsB,EAAA;QAC9D,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,KAAK;QACd;QAEA,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,EAAE;QACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;AAE/C,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClE;IAEA,gBAAgB,CAAC,SAAmB,EAAE,QAAgB,EAAA;QACpD,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE/C,YAAA,IAAI,YAAY,KAAK,GAAG,EAAE;AACxB,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACnE,oBAAA,OAAO,IAAI;gBACb;YACF;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,qBAAqB,CAAC,QAA4B,EAAA;AAChD,QAAA,OAAO;AACL,cAAE,WAAW;aACZ,KAAK,CAAC,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1C,YAAA,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;AAC/D,QAAA,CAAC;aACA,IAAI,CAAC,IAAI,CAAC;IACf;AAEA,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACxD;AAEA,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C;8GA1GW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACJD;;AAEG;MAEU,kBAAkB,CAAA;AACtB,IAAA,MAAM,CAAC,QAAqB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;QAE1B,OAAO,CAAC,EACN,IAAI;AACJ,YAAA,IAAI,KAAK,SAAS;AAClB,YAAA,IAAI,KAAK,IAAI;YACb,IAAI,CAAC,IAAI,KAAK,SAAS;AACvB,YAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CACnB;IACH;AAEO,IAAA,OAAO,CAAC,QAAqB,EAAA;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QACrD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;AAE7C,QAAA,IAAI,UAAU,IAAI,CAAC,EAAE;AACnB,YAAA,QAAQ,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1D,gBAAA,KAAK,KAAK;AACV,gBAAA,KAAK,KAAK;AACV,gBAAA,KAAK,MAAM;AACX,gBAAA,KAAK,KAAK;AACR,oBAAA,OAAO,IAAI;AACb,gBAAA;oBACE;;QAEN;AAEA,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,qBAAqB,CAAC,QAAqB,EAAA;AAChD,QAAA,IAAI,SAAS,GAAG,EAAE,EAChB,IAAY;;;QAId,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,IAAI,EAAE;;AAER,gBAAA,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;;AAEtB,gBAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;YACtD;iBAAO;gBACL,SAAS,GAAG,EAAE;YAChB;QACF;AAEA,QAAA,OAAO,SAAS,CAAC,WAAW,EAAE;IAChC;AAEO,IAAA,gBAAgB,CAAC,QAAqB,EAAA;QAC3C,IAAI,QAAQ,GAAG,EAAE;;;QAGjB,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;YAC1B,IAAI,IAAI,EAAE;AACR,gBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;YAC5B;iBAAO;gBACL,QAAQ,GAAG,EAAE;YACf;QACF;AAEA,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE;IAC/B;8GAnEW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;2FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACyDlC,MAAMQ,uBAAqB,GAAG,MAAM;AACpC,MAAMC,uBAAqB,GAAG,CAAC;AAE/B;;AAEG;MAyBU,0BAA0B,CAAA;AAQ5B,IAAA,SAAS;AAET,IAAA,cAAc;AAiEvB;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAID,uBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAIC,uBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;IAgDA,IAAW,KAAK,CAAC,KAAqC,EAAA;;;;QAIpD,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI;QAEzD,IAAI,UAAU,EAAE;YACd,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;YACrD;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAExB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,2BAA2B,EAAE;QACpC;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAoBA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,QAAQ;AACb,aAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEzE;AAEA,IAAA,iBAAiB;AAEjB,IAAA,cAAc;AAEd,IAAA,aAAa;AAEb,IAAA,aAAa;AAEb,IAAA,OAAO;AAEP,IAAA,eAAe;AACf,IAAA,sBAAsB;AACtB,IAAA,gBAAgB;AAChB,IAAA,SAAS;AAEA,IAAA,MAAM;AACN,IAAA,iBAAiB;AACjB,IAAA,aAAa;IAUtB,WAAA,CACE,cAAiC,EACjC,qBAA+C,EAC/C,eAAmC,EACf,SAAqB,EAC7B,QAA0B,EAAA;AA5N/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAgBtD;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AA+BvB;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAmC1B;;;AAGG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;AAUtB;;;AAGG;AAEI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA2B;AAE/D;;;AAGG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA0B;QAEtD,IAAA,CAAA,YAAY,GAAG,KAAK;QAEpB,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAEzB,IAAA,CAAA,YAAY,GAAG,KAAK;AAE3B;;;;;;AAMG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;QA4BhB,IAAA,CAAA,QAAQ,GAAG,EAAE;QAEb,IAAA,CAAA,wBAAwB,GAAG,IAAI;QAE/B,IAAA,CAAA,iBAAiB,GAAG,EAAE;QAUtB,IAAA,CAAA,OAAO,GAAG,KAAK;AAWtB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAEpC,IAAA,CAAA,aAAa,GAAGD,uBAAqB;QAErC,IAAA,CAAA,aAAa,GAAGC,uBAAqB;AAS5B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAG7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;;;AAoW5C,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,CAAM,KAAU;YAC3B;AACF,QAAA,CAAC;;QAED,IAAA,CAAA,UAAU,GAAG,MAAW;YACtB;AACF,QAAA,CAAC;AA7VC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,sBAAsB,GAAG,qBAAqB;AACnD,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AAEzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC;AACZ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,aAAa,KAAI;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI;gBAChE,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,CAAC,CAAC;QACN;IACF;IAEO,eAAe,GAAA;;;;;;;AAOpB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;AAC5C,oBAAA,SAAS,EAAE,KAAK;AACjB,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CAAC;;;;;YAMF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAK;AAC5C,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;;YAGpC,IAAI,CAAC,eAAe,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CACR,CAAC,kBAA8D,KAAI;gBACjE,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC;AACtD,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CACF;QACL;IACF;IAEO,YAAY,GAAA;;;;;AAKjB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE;YAC7B,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,UAAU,EAAE;IACnB;IAEO,aAAa,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC;IACF;AAEO,IAAA,eAAe,CAAC,eAAsB,EAAA;;QAE3C,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CACd,eAAe,CAAC,MAAuC,EAAE,KAAK,CAChE;QACH,CAAC,EAAE,GAAG,CAAC;IACT;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;;AAE5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,MAAM;QAC9C,cAAc,CAAC,eAAe,EAAE;QAChC,cAAc,CAAC,cAAc,EAAE;IACjC;AAEO,IAAA,YAAY,CAAC,aAAwB,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY;QAE3C,aAAa,CAAC,eAAe,EAAE;QAC/B,aAAa,CAAC,cAAc,EAAE;QAE9B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAExC,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IACE,IAAI,CAAC,IAAI;AACT,wBAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,aAAa,CACnB,EACD;AACA,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;wBACzB;oBACF;gBACF;gBAEA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1C,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;YACF;AAAO,iBAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;;;;AAIzB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAC1B;QACF;IACF;AAEO,IAAA,QAAQ,CAAC,SAAoB,EAAA;QAClC,SAAS,CAAC,eAAe,EAAE;QAC3B,SAAS,CAAC,cAAc,EAAE;AAE1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;YAC1D,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C;YACF;AAEA,YAAA,IACE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EACtE;gBACA;YACF;YAEA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;QACjD;IACF;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;QAC5C,IAAI,IAAI,CAAC,iBAAiB,KAAK,cAAc,CAAC,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B;IACF;IAEO,oBAAoB,GAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;;QAGrC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,cAAc,CACjB,gDAAgD,EAChD,QAAQ,CACT;QACH;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACO,IAAA,iBAAiB,CAAC,EAAa,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;IAEO,SAAS,GAAA;;AAEd,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,IAAI,CAAC,KAAK;AACjB,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,cAAc,CAAC,cAAsB,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC;AACF,aAAA,SAAS,CAAC,cAAc,EAAE,GAAG,IAAI;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,uBAAuB,KAAI;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AAC1D,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,oBAAoB,CAAC,WAAyB,EAAA;AAC5C,QAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;QACtC;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;;AAE1B,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACzB,IAAI,CAAC,mBAAmB,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAC9C,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,EAAE,SAAS;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,WAAW,EAAE,UAAU;QAC/C;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,EAAE,WAAW;AACS,SAAA,CAAC;;AAG7B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACvC;IACF;IAEA,MAAM,SAAS,CAAC,IAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;gBAE9C,IAAI,gBAAgB,EAAE;AACpB,oBAAA,IAAI,CAAC,cAAc,CACjB,iDAAiD,EACjD,gBAAgB,EAChB,IAAI,CAAC,IAAI,CAAC,IAAI,CACf;gBACH;qBAAO;oBACL,IAAI,CAAC,cAAc,CACjB,8CAA8C,EAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CACf;gBACH;AAEA,gBAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAE7D,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACjC;AAAE,YAAA,MAAM;AACN,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YACjC;QACF;IACF;AAEA,IAAA,YAAY,CAAC,QAA0B,EAAA;QACrC,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,QAAQ,EAAE;YACZ,MAAM,KAAK,GAAkB,EAAE;AAE/B,YAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AACtB,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACpD,KAAK,CAAC,IAAI,CAAC;AACT,wBAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACZ,qBAAA,CAAC;gBACnB;YACF;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAC3D,KAAK,EACL,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,CAChB;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACjC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBACjC;qBAAO;AACL,oBAAA,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC3B;YACF;QACF;IACF;AAEA,IAAA,YAAY,CAAC,IAAkB,EAAA;QAC7B,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;AAC9C,kBAAE,IAAI,CAAC,IAAI,CAAC;AACZ,kBAAE,IAAI,CAAC,GAAG;AAEd,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAExB,YAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;AACxB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YACxD;iBAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;YACnC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAC7B;IACF;IAEA,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,wBAAwB,GAAG,EAC9B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CACjD;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;;;AAIA,IAAA,SAAS;;AAIT,IAAA,UAAU;8GAjkBC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EA8BjB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAmChB,gBAAgB,iHAwChB,gBAAgB,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAuChB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAzJzB;YACT,wBAAwB;AACxB,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EA4LgB,+BAA+B,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpRlD,4oNAwOA,EAAA,MAAA,EAAA,CAAA,o1JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/JI,YAAY,6HAGZ,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,cAAc,sIACd,+BAA+B,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAT/B,4BAA4B,EAAA,IAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAC5B,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAmBN,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAxBtC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,4BAA4B;wBAC5B,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,cAAc;wBACd,+BAA+B;qBAChC,EAAA,SAAA,EACU;wBACT,wBAAwB;AACxB,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,qBAAA,EAAA,cAAA,EACe,CAAC,+BAA+B,CAAC,EAAA,QAAA,EACvC,qBAAqB,EAAA,QAAA,EAAA,4oNAAA,EAAA,MAAA,EAAA,CAAA,o1JAAA,CAAA,EAAA;;0BAuO5B;;0BAAQ;;0BACR;;sBApNF;;sBAOA;;sBAOA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAOA;;sBAQA;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAOA;;sBAaA;;sBAaA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAQ1C;;sBAOA;;sBAOA;;sBAgBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmCrC,SAAS;uBAAC,cAAc;;sBAGxB,eAAe;uBAAC,+BAA+B;;;MErQrC,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,OAAA,EAAA,CAFxB,0BAA0B,EAAE,+BAA+B,aAJnE,0BAA0B;YAC1B,+BAA+B;YAC/B,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAIT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,OAAA,EAAA,CAFxB,0BAA0B,EAAE,+BAA+B,EAFnE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAIT,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,+BAA+B;wBAC/B,kBAAkB;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,0BAA0B,EAAE,+BAA+B,CAAC;AACvE,iBAAA;;;ACPD;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAGE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAE/C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAuGvD,IAAA;AA1GC,IAAA,KAAK;AACL,IAAA,gBAAgB;AAIhB,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;IACpC;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;IACxD;AAEA,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;IACpC;AAEA,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,gBAAgB;AAET,IAAA,IAAI,CAAC,IAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC7D;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;IAClC;AAEO,IAAA,QAAQ,CAAC,IAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,sLAAsL,CACvL;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC3B;AAEO,IAAA,WAAW,CAAC,QAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC;IACtC;AAEO,IAAA,iBAAiB,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACpC;AAEO,IAAA,2BAA2B,CAAC,IAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G;QACH;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC;IAC9C;AAEA;;;;AAIG;AACI,IAAA,WAAW,CAAC,QAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC;AAEA;;;AAGG;AACI,IAAA,cAAc,CAAC,EAAe,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH;QACH;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;IACvC;AAEA;;;AAGG;AACI,IAAA,SAAS,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F;QACH;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC;IAChD;8GA1GW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACND;;AAEG;MAMU,2BAA2B,CAAA;IACtC,IAEW,YAAY,CAAC,KAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAEA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACnE;AAEA,IAAA,cAAc;IACd,QAAQ,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8GAZlD,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,QAAQ;;oBAEN,mIAAmI;AACtI,iBAAA;;sBAEE,WAAW;uBAAC,cAAc;;sBAC1B;;;ACZH;;AAEG;MAIU,uBAAuB,CAAA;IAC3B,SAAS,CACd,QAAiB,EACjB,YAAqB,EAAA;AAErB,QAAA,IAAI,QAAQ,IAAI,YAAY,EAAE;AAC5B,YAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,YAAY,EAAE;QACtC;QAEA,OAAO,QAAQ,IAAI,YAAY;IACjC;8GAVW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,qBAAqB;AAC5B,iBAAA;;;ACAD,MAAM,qBAAqB,GAAG,kBAAkB;AAEhD;;AAEG;MAEU,yBAAyB,CAAA;AACpC,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC;AAEpE;;AAEG;;IAEI,eAAe,CAAC,QAAoB,EAAE,EAAe,EAAA;QAC1D,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5C;AAEO,IAAA,YAAY,CAAC,KAAiB,EAAA;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;;QAEtE,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE;QACjB;IACF;AAEA;;AAEG;AACI,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;IAC/D;AAEA;;AAEG;AACI,IAAA,gBAAgB,CAAC,EAAe,EAAA;QACrC,IAAI,EAAE,EAAE;AACN,YAAA,QACE,EAAE,KAAK,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;QAExE;AACA,QAAA,OAAO,KAAK;IACd;AAEO,IAAA,iBAAiB,CACtB,QAAoB,EACpB,UAAkB,EAClB,QAA4B,EAAA;AAE5B,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,aAA4B;QAErD,MAAM,cAAc,GAClB;aACG,YAAY,CAAC,qBAAqB;cACjC,KAAK,CAAC,GAAG;AACV,aAAA,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;QAEjC,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1D,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM;AAE3C,QAAA,IAAI,QAAQ,IAAI,eAAe,GAAG,CAAC,EAAE;AACnC,YAAA,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC;AAAO,aAAA,IAAI,CAAC,QAAQ,IAAI,eAAe,IAAI,CAAC,EAAE;AAC5C,YAAA,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3C;AAEA,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,aAAa,EAAE;AAC3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC;QAClD;IACF;AAEA;;AAEG;;IAEI,YAAY,CAAC,QAAoB,EAAE,KAAa,EAAA;QACrD,OAAO,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;IACpD;IAEA,kBAAkB,CAAC,OAAoB,EAAE,cAAwB,EAAA;AAC/D,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,qBAAqB,CAAC;QAChE;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CACzB,OAAO,EACP,qBAAqB,EACrB,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CACzB;QACH;IACF;8GAnFW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;AC4BD;;AAEG;MAmBU,oBAAoB,CAAA;AAlBjC,IAAA,WAAA,GAAA;AAqBE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACjD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACnD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QA4GtB,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAMxB,IAAA,CAAA,cAAc,GAAG,KAAK;QAEtB,IAAA,CAAA,wBAAwB,GAAG,KAAK;AAI1B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACrC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,aAAa,CAAqB,CAAC,CAAC;QAKnE,IAAA,CAAA,QAAQ,GAAG,EAAE;QA0CV,IAAA,CAAA,0BAA0B,GAAG,CAAC;QAExC,IAAA,CAAA,SAAS,GAAG,KAAK;AAMjB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;AA0KrC,IAAA;AAlWC,IAAA,UAAU;AACV,IAAA,gBAAgB;AAChB,IAAA,eAAe;AACf,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,SAAS;AA+BT;;;;;;;;AAQG;IACH,IACW,cAAc,CAAC,KAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB;AACnB,YAAA,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC;QAE1E,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA;;;AAGG;IACH,IACW,OAAO,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,wBAAwB,GAAG,EAAE;IAChE;AAyBA;;;AAGG;IACH,IACW,QAAQ,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChE;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AA4BA,IAAA,oBAAoB;AAqBpB,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,OAAO,CAAC,EACN,IAAI,CAAC,QAAQ;AACb,YAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ;AAClC,YAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CACvC;IACH;AAEA,IAAA,IAAc,iBAAiB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAChC,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;QAChD;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA,IAAA,IAAc,QAAQ,GAAA;AACpB,QAAA,QACE,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ;YACrC,IAAI,CAAC,oBAAoB;IAE7B;AAIA,IAAA,SAAS;AACT,IAAA,gBAAgB;AAChB,IAAA,UAAU;AAEV,IAAA,iBAAiB;AACjB,IAAA,2BAA2B;AAC3B,IAAA,cAAc;IAEP,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC,gBAAgB,CAAC;AACnB,aAAA,IAAI,CAACC,WAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAChC,QAAA,CAAC,CAAC;IACN;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO;AAE5D,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC7B,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;QACvE;QAEA,IAAI,CAAC,eAAe,EAAE;IACxB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEA;;;AAGG;AACI,IAAA,eAAe,CAAC,EAAe,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnE;IAEO,kBAAkB,GAAA;AACvB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAC5D,IAAI,CAAC,WAAW,CACjB;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC5B;IACF;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IAC7B;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QACrD;IACF;AAEO,IAAA,QAAQ,CAAC,IAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe;AAC/C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,mBAAmB;AACvD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,oBAAoB;AACzD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB;AACrD,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,sBAAsB;AAC7D,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;AAEA;;;;;AAKG;AACI,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;IACnE;AAEO,IAAA,iBAAiB,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;AAEO,IAAA,eAAe,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;AAEO,IAAA,2BAA2B,CAAC,IAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IAChC;IAEA,qBAAqB,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;IACtE;AAEA,IAAA,eAAe,CAAC,QAAiB,EAAA;;;;QAI/B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAChC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,OAA6C,EAAA;AAC7D,QAAA,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAA4B;;;;AAK1D,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACzD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;AAEzC,QAAA,IAAI,oBAAoB,IAAI,YAAY,KAAK,MAAM,EAAE;AACnD,YAAA,OAAO,CAAC,YAAY,GAAG,MAAM;QAC/B;AAAO,aAAA,IAAI,CAAC,oBAAoB,IAAI,YAAY,KAAK,MAAM,EAAE;AAC3D,YAAA,OAAO,CAAC,YAAY,GAAG,IAAI;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC;AAC5D,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC;QACzE;aAAO;YACL,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,CAAC;YACvD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC;QAC9D;QAEA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CACpC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CACnC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,iBAAiB,EAAE;YAC5C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAE1D,IAAI,CAAC,yBAAyB,EAAE;AAEhC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ;QACxC;IACF;IAEA,yBAAyB,GAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO;AAExC,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAC3D,YAAA,IAAI,CAAC,2BAA2B,GAAG,SAAS;QAC9C;QAEA,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YAChD,IAAI,CAAC,2BAA2B,GAAG,UAAU,CAAC,SAAS,CACrD,IAAI,CAAC,cAAc,CACpB;YAED,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3D;IACF;8GApWW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAdpB;YACT,sBAAsB;YACtB,yBAAyB;YACzB,sBAAsB;AACtB,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,IAAI;AACf,aAAA;SACF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiJa,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGpB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGf,OAAO,2EAGP,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACjC,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClNpB,4pNAiNA,EAAA,MAAA,EAAA,CAAA,2soBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,uBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDpJa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,SAAA,EAGd;wBACT,sBAAsB;wBACtB,yBAAyB;wBACzB,sBAAsB;AACtB,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,QAAQ,EAAE,IAAI;AACf,yBAAA;AACF,qBAAA,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,4pNAAA,EAAA,MAAA,EAAA,CAAA,2soBAAA,CAAA,EAAA;;sBAiBhB;;sBAaA;;sBAQA;;sBAYA;;sBAgBA;;sBAUA;;sBAQA;;sBAQA;;sBAOA;;sBAuCA,WAAW;uBAAC,OAAO;;sBAGnB,YAAY;uBAAC,oBAAoB;;sBAGjC,YAAY;uBAAC,eAAe;;sBAG5B,YAAY;uBAAC,OAAO;;sBAGpB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE;AACzC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;;;MEjLU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAnBb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,yBAAyB;YACzB,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,mBAAmB;YACnB,2BAA2B;YAC3B,uBAAuB;AACvB,YAAA,cAAc,aAGd,uBAAuB;YACvB,oBAAoB;YACpB,2BAA2B;YAC3B,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAjB1B,YAAY;YACZ,yBAAyB;YACzB,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,mBAAmB;AAGnB,YAAA,cAAc,EAMd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,yBAAyB;wBACzB,mBAAmB;wBACnB,kBAAkB;wBAClB,uBAAuB;wBACvB,mBAAmB;wBACnB,2BAA2B;wBAC3B,uBAAuB;wBACvB,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,uBAAuB;wBACvB,oBAAoB;wBACpB,2BAA2B;wBAC3B,kBAAkB;AACnB,qBAAA;AACF,iBAAA;;;ACaD,MAAM,qBAAqB,GAAG,MAAM;AACpC,MAAM,qBAAqB,GAAG,CAAC;AAE/B;;;;;;;;;AASG;MAuBU,oBAAoB,CAAA;AA2C/B;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,qBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA;;;AAGG;IACH,IACW,WAAW,CAAC,KAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,qBAAqB;IACrD;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,aAAa;IAC3B;AA8GA,IAAA,iBAAiB;AAEjB,IAAA,aAAa;AAEb,IAAA,aAAa;AAEb,IAAA,cAAc;AACd,IAAA,aAAa;AAGb,IAAA,eAAe;AAEN,IAAA,sBAAsB;AACtB,IAAA,cAAc;AACd,IAAA,iBAAiB;AACjB,IAAA,aAAa;AACb,IAAA,MAAM;AAQf,IAAA,WAAA,GAAA;AAxMA;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAqB;AAE3D;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;AAE/C;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAe;AAoDpD;;AAEG;QAEI,IAAA,CAAA,QAAQ,GAAwB,IAAI;AAyB3C;;AAEG;QAEI,IAAA,CAAA,OAAO,GAAwB,KAAK;AAE3C;;AAEG;QAEI,IAAA,CAAA,UAAU,GAAwB,KAAK;AAQ9C;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAS1B;;;;;;AAMG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AAiBvB;;;AAGG;QAGI,IAAA,CAAA,OAAO,GAAG,KAAK;QAaf,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,YAAY,GAAG,KAAK;QAK3B,IAAA,CAAA,aAAa,GAAG,qBAAqB;QAErC,IAAA,CAAA,aAAa,GAAG,qBAAqB;QAMrC,IAAA,CAAA,eAAe,GAAkC,EAAE;AAE1C,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAElC,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAEjD,IAAA,CAAA,aAAa,GAAkB,EAAE;AAGzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,MAAM,WAAW,GAAkB,EAAE;YACrC,MAAM,WAAW,GAAkB,EAAE;AAErC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACrB,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC3C,oBAAA,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,EAAE;AACrB,wBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB;yBAAO,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AACpD,wBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB;gBACF;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AAC1D,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC5B;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAEzB,gBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,oBAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC3B,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACvB,oBAAA,CAAC,CAAC;gBACJ;AACA,gBAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;;;AAG1B,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBAChC;YACF;QACF;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B;IACF;AAEO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACzB;AAEO,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC1B;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,IAAI;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC;IACF;AAEO,IAAA,eAAe,CAAC,eAAsB,EAAA;;QAE3C,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CACd,eAAe,CAAC,MAAuC,EAAE,KAAK,CAChE;QACH,CAAC,EAAE,GAAG,CAAC;IACT;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;;AAE5C,QAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,MAAM;QAC9C,cAAc,CAAC,eAAe,EAAE;QAChC,cAAc,CAAC,cAAc,EAAE;IACjC;AAEO,IAAA,YAAY,CAAC,aAAwB,EAAA;AAC1C,QAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY;QAE3C,aAAa,CAAC,eAAe,EAAE;QAC/B,aAAa,CAAC,cAAc,EAAE;QAE9B,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAExC,gBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,IACE,IAAI,CAAC,IAAI;AACT,wBAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAC1C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,aAAa,CACnB,EACD;AACA,wBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,wBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;wBACzB;oBACF;gBACF;gBAEA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1C,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;AACF,YAAA,CAAC;AAA6C,iBAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;;;;AAIhE,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YAC1B;QACF;IACF;AAEO,IAAA,QAAQ,CAAC,SAAoB,EAAA;QAClC,SAAS,CAAC,eAAe,EAAE;QAC3B,SAAS,CAAC,cAAc,EAAE;AAE1B,QAAA,IAAI,CAAC,cAAc,IAAI;AAEvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;AAC1D,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAC3D,SAAS,CAAC,YAAY,CAAC,KAAK,CAC7B;AACD,YAAA,MAAM,oBAAoB,GACxB,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AAE3D,YAAA,IAAI,YAAY,IAAI,oBAAoB,EAAE;gBACxC;YACF;YAEA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;QACjD;IACF;AAEO,IAAA,aAAa,CAAC,cAAmB,EAAA;QACtC,IAAI,IAAI,CAAC,iBAAiB,KAAK,cAAc,CAAC,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B;IACF;AAEO,IAAA,YAAY,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB;IACF;AAEO,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAiB,CAAC;AACrD,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,cAAc,IAAI;IACzB;AAEU,IAAA,UAAU,CAAC,IAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAC1C,IAAI,CAAC,cAAc,CACjB,8CAA8C,EAC9C,IAAI,CAAC,GAAG,CACT;IACH;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,IAAI;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AAEA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,QAAQ;AACb,aAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEzE;AAEA,IAAA,cAAc,CAAC,cAAsB,EAAE,GAAG,IAAW,EAAA;AACnD,QAAA,IAAI,CAAC;AACF,aAAA,SAAS,CAAC,cAAc,EAAE,GAAG,IAAI;AACjC,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,uBAAuB,KAAI;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AAC1D,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,oBAAoB,CAClB,UAAkB,EAClB,iBAAgC,EAChC,cAA6B,EAAA;QAE7B,IAAI,UAAU,KAAK,iBAAiB,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE;AACnE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,aAAa,EAAE,iBAAiB;AACZ,aAAA,CAAC;AAEvB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACvC;QACF;IACF;AAEA,IAAA,cAAc,CACZ,IAAiB,EACjB,cAA6B,EAC7B,iBAAgC,EAChC,UAAkB,EAAA;AAElB,QAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,GAChB,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAC9D;QACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,cAAc,CAAC;IAC1E;IAEA,MAAM,SAAS,CACb,QAA8B,EAC9B,IAAiB,EACjB,cAA6B,EAC7B,iBAAgC,EAChC,UAAkB,EAAA;AAElB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAE7D,YAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,QAAQ,CAAC,oBAAoB,CAC3B,UAAU,EACV,iBAAiB,EACjB,cAAc,CACf;YACD,IAAI,CAAC,cAAc,CACjB,8CAA8C,EAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CACf;AACD,YAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C;AAAE,QAAA,MAAM;YACN,QAAQ,CAAC,cAAc,CACrB,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;QACH;IACF;AAEA,IAAA,YAAY,CAAC,QAA0C,EAAA;QACrD,IAAI,QAAQ,EAAE;YACZ,MAAM,cAAc,GAAkB,EAAE;YACxC,MAAM,iBAAiB,GAAkB,EAAE;AAC3C,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM;YAElC,IAAI,KAAK,GAAkB,EAAE;AAE7B,YAAA,IAAI,MAAM,IAAI,QAAQ,EAAE;AACtB,gBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACpD,KAAK,CAAC,IAAI,CAAC;AACT,wBAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACZ,qBAAA,CAAC;gBACnB;YACF;iBAAO;gBACL,KAAK,GAAG,QAAQ;YAClB;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAC3D,KAAK,EACL,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,CAChB;AAED,YAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACjC,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,cAAc,CACjB,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;gBACH;qBAAO;AACL,oBAAA,KAAK,IAAI,CAAC,SAAS,CACjB,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,UAAU,CACX;gBACH;YACF;AAEA,YAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB;QACxC;IACF;8GAxfW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+eAuHX,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAiBhB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAsBhB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAhLzB;YACT,wBAAwB;AACxB,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClEH,g4QAqQA,kxUDjMI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEX,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,uBAAuB,8BACvB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,8GACX,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EARd,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAWN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,SAAA,EAGd;wBACT,wBAAwB;AACxB,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;qBACrD,EAAA,OAAA,EACQ;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,iBAAiB;wBACjB,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,g4QAAA,EAAA,MAAA,EAAA,CAAA,2tUAAA,CAAA,EAAA;;sBAMA;;sBAMA;;sBAMA;;sBASA;;sBASA;;sBAMA;;sBAOA;;sBAaA;;sBAYA;;sBAQA;;sBAQA;;sBAOA;;sBAMA;;sBAMA;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAUA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAOA;;sBAOA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,WAAW;uBAAC,8BAA8B;;sBAQ1C;;sBAGA,SAAS;uBAAC,WAAW;;;ME9NX,oBAAoB,CAAA;AAC/B;;;;;;AAMG;IACH,IACW,QAAQ,CAAC,KAA4C,EAAA;AAC9D,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;YAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC;YACnD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;YAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI;QACjC;aAAO;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;QAC3B;QACA,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE;IAC7B;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAoBA,IAAA,UAAU;AAEV,IAAA,OAAO;AACP,IAAA,gBAAgB;AAEP,IAAA,iBAAiB;AAEjB,IAAA,aAAa;IAEtB,WAAA,CAAY,OAAwB,EAAE,eAAmC,EAAA;AA3BzE;;;AAGG;AAEI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA6B;QAE1D,IAAA,CAAA,QAAQ,GAAG,EAAE;QAIb,IAAA,CAAA,GAAG,GAAG,EAAE;QAIR,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,OAAO,GAAG,KAAK;AAOb,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAEnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAGrD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;IACzC;IAEO,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAEhD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,GAAuB;AAC3B,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAChE,IAAI,CAAC,QAAuB,CAC7B;AACD,gBAAA,IAAI,aAAqB;gBAEzB,QAAQ,cAAc;AACpB,oBAAA,KAAK,MAAM;wBACT,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,KAAK;AACV,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,MAAM;wBACT,GAAG,GAAG,SAAS;wBACf;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,KAAK;wBACX;AACF,oBAAA,KAAK,MAAM;wBACT,GAAG,GAAG,MAAM;wBACZ;AACF,oBAAA,KAAK,MAAM;AACX,oBAAA,KAAK,OAAO;wBACV,GAAG,GAAG,gBAAgB;wBACtB;AACF,oBAAA;wBACE;;gBAGJ,IAAI,CAAC,GAAG,EAAE;oBACR,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CACpD,IAAI,CAAC,QAAuB,CAC7B;AAED,oBAAA,QAAQ,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzD,wBAAA,KAAK,OAAO;4BACV,GAAG,GAAG,OAAO;4BACb;AACF,wBAAA,KAAK,OAAO;;;;4BAIV,GAAG,GAAG,OAAO;4BACb;AACF,wBAAA,KAAK,MAAM;4BACT,GAAG,GAAG,MAAM;4BACZ;AACF,wBAAA,KAAK,OAAO;4BACV,GAAG,GAAG,OAAO;4BACb;AACF,wBAAA;4BACE;;gBAEN;AACA,gBAAA,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;YACjD;QACF;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS;QACvB;IACF;IAEO,UAAU,GAAA;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC;AACF,iBAAA,SAAS,CAAC,gDAAgD,EAAE,IAAI,CAAC,GAAG;AACpE,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,iBAAA,SAAS,CAAC,CAAC,cAAc,KAAI;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;AACjD,YAAA,CAAC,CAAC;QACN;aAAO;AACL,YAAA,IAAI,CAAC;AACF,iBAAA,SAAS,CACR,gDAAgD,EAChD,IAAI,CAAC,QAAQ;AAEd,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,iBAAA,SAAS,CAAC,CAAC,cAAc,KAAI;AAC5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;AACjD,YAAA,CAAC,CAAC;QACN;IACF;8GA5JW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,kJC7BjC,yoDAsDA,EAAA,MAAA,EAAA,CAAA,g8GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9B6B,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,mIAAvD,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKd,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,eAAe,EAAE,uBAAuB,EAAE,aAAa,CAAC,YACxD,eAAe,EAAA,QAAA,EAAA,yoDAAA,EAAA,MAAA,EAAA,CAAA,g8GAAA,CAAA,EAAA;;sBAYxB;;sBAwBA;;;MElDU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,OAAA,EAAA,CAFlB,oBAAoB,EAAE,oBAAoB,aAD1C,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAG7D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,OAAA,EAAA,CAFlB,oBAAoB,EAAE,oBAAoB,EADE,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAG7D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;AACzE,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;AACtD,iBAAA;;;ACLD;;AAEG;MAKU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,uBAAuB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAD1C,uBAAuB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAFzB,uBAAuB,EAAE,iBAAiB,EAD1C,uBAAuB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;;2FAGzC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;AACrD,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;AACtD,iBAAA;;;ACPD;;;AAGG;MAEU,sBAAsB,CAAA;AACjC,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA,IAAA,SAAS;AACT,IAAA,UAAU;AACV,IAAA,YAAY;AAEZ,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;IACpD;AAEA;;;;AAIG;IACI,QAAQ,CAAC,EAAU,EAAE,cAAsB,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,cAAc,EAAE;YACxE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC;YACtC,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,EAAU,EAAA;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D;8GAxCW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACgBD;;;AAGG;AACH,MAAM,gCAAgC,GAAa;AACjD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;CACZ;AAED;;;;AAIG;MAUU,iBAAiB,CAAA;AAM5B;;;AAGG;IACH,IACW,OAAO,CAAC,KAA0B,EAAA;AAC3C,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK;AAE/B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,EAAE;AACtC,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe;AAChC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;YAExC,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;YACjC;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QACrC;IACF;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;;AAGG;IACH,IACW,EAAE,CAAC,KAAyB,EAAA;QACrC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,UAAA,EAAa,KAAK,QAAQ;QAC3C;aAAO;YACL,IAAI,CAAC,OAAO,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,UAAU,QAAQ;QACrD;AACA,QAAA,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;IAChE;AAEA;;;;;;;AAOG;IACH,IACW,KAAK,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,EAAE;AACjD,gBAAA,uBAAuB,EAAE,EAAE;AAC3B,gBAAA,yBAAyB,EAAE,oCAAoC;AAChE,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAEA;;;;;;;AAOG;IACH,IACW,UAAU,CAAC,KAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,8BAA8B,EAAE;AACtD,gBAAA,uBAAuB,EAAE,EAAE;AAC3B,gBAAA,yBAAyB,EAAE,oCAAoC;AAChE,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA;;;;;AAKG;IACH,IACW,IAAI,CAAC,KAAyB,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAyB,EAAA;AAC3C,QAAA,OAAO,CAAC,IAAI,CACV,uHAAuH,CACxH;QACD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AACA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;;IAGA,IAAW,aAAa,CAAC,KAAyB,EAAA;QAChD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACrB;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA;;;;;AAKG;IACH,IACW,KAAK,CAAC,KAAU,EAAA;;AAEzB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;AAC7D,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC1C,IAAI,CAAC,kBAAkB,EAAE;YAC3B;AAEA,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO;IACrB;AAyBA;;;;;;;;AAQG;AACH,IAAA,IACW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;IACA,IAAW,SAAS,CAAC,KAA+B,EAAA;QAClD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,6BAA6B,EAAE;AACrD,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,MAAM;IACpC;IAgDA,IAAW,aAAa,CAAC,KAAU,EAAA;AACjC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B;IACF;AACA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe;IAC7B;AAMA,IAAA,SAAS;AACT,IAAA,UAAU;AACV,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,eAAe;AACf,IAAA,UAAU;AACV,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,YAAY;AAEZ,IAAA,eAAe;AACf,IAAA,UAAU;AACV,IAAA,gBAAgB;AAChB,IAAA,OAAO;AAEP,IAAA,WAAA,GAAA;AAhTA;;AAEG;AACI,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,OAAO,EAAQ;AAyOjC;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAiB1B;;AAEG;AAGI,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAkB;AAElD;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAElD;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;QAW5C,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAEvB,IAAA,CAAA,OAAO,GAAG,EAAE;QAEtB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,UAAU,GAAG,KAAK;QAElB,IAAA,CAAA,WAAW,GAAiB,MAAM;QAElC,IAAA,CAAA,UAAU,GAAG,CAAC;AAKd,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC3C,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE;QAC9C,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;;AAkE/B,QAAA,IAAA,CAAA,8BAA8B,GAAG,MAAW,EAAE,CAAC;;AAE/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAU,KAAU,EAAE,CAAC;;AAE5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAW,EAAE,CAAC;AAnEjC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU;IAC3B;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAClD,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa;AAEhD,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEO,IAAA,qBAAqB,CAAC,UAAmB,EAAA;AAC9C,QAAA,IAAI,CAAC,kBAAkB,GAAG,UAAU;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC7B;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;AAEO,IAAA,aAAa,CAAC,KAAY,EAAA;QAC/B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;YAEF,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC;IACF;IAEO,kBAAkB,GAAA;QACvB,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IAClB;;AAGA,IAAA,8BAA8B;;AAE9B,IAAA,iBAAiB;;AAEjB,IAAA,kBAAkB;8GArXP,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmCR,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EA6MhB,gBAAgB,2JArPzB,CAAC,gCAAgC,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,+BAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C/C,iqEAsEA,EAAA,MAAA,EAAA,CAAA,g9GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDtBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,SAAA,EAGV,CAAC,gCAAgC,CAAC,EAAA,eAAA,EAC5B,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B,CAAC,+BAA+B,CAAC,cACrC,KAAK,EAAA,QAAA,EAAA,iqEAAA,EAAA,MAAA,EAAA,CAAA,g9GAAA,CAAA,EAAA;;sBAYhB;;sBAyBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiBrC;;sBAkBA;;sBAwBA;;sBAsBA;;sBAgBA;;sBAiCA;;sBAyBA;;sBAOA;;sBAQA;;sBAYA;;sBAiBA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAQA;;sBAMA;;sBAOA;;sBAMA;;;AEnSH,IAAI,YAAY,GAAG,CAAC;AAEpB,SAAS,gBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,OAAO,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AAClC;AAEA;;;;;AAKG;MAYU,sBAAsB,CAAA;AACjC;;;;;;;AAOG;IACH,IACW,cAAc,CAAC,KAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAE7B,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,uCAAuC,EAAE;AAC/D,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA;;;;;;;AAOG;IACH,IACW,SAAS,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAExB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kCAAkC,EAAE;AAC1D,gBAAA,uBAAuB,EAAE,CAAC;AAC3B,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;;;AAIG;IACH,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,0BAA0B,EAAE;QACnC;IACF;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AAEA;;AAEG;IACH,IACW,YAAY,CAAC,KAA4C,EAAA;AAClE,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;QAChE,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA;;;AAGG;IACH,IACW,YAAY,CAAC,KAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,iBAAA,EAAoB,KAAK,EAAE;IACjD;AAEA;;;;;AAKG;IACH,IACW,IAAI,CAAC,KAAyB,EAAA;QACvC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY;QACjC;QACA,IAAI,CAAC,uBAAuB,EAAE;IAChC;AACA,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,MAAM;IACpB;AAaA;;;AAGG;IACH,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAEA;;;;AAIG;;IAEH,IACW,KAAK,CAAC,KAAU,EAAA;AACzB,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,aAAa;;QAG/C,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;AAEA;;;;;;AAMG;IACH,IACW,QAAQ,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;AACA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;AA8DA,IAAA,IAAc,UAAU,GAAA;QACtB,QACE,IAAI,CAAC,QAAQ;AACb,aAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEzE;AAIA,IAAA,aAAa;AAEb,IAAA,YAAY;AAEZ,IAAA,cAAc;AAEd,IAAA,UAAU;AAEV,IAAA,MAAM;AAEN,IAAA,UAAU;AAEV,IAAA,WAAW;AAEX,IAAA,gBAAgB;AAEhB,IAAA,cAAc;AAEd,IAAA,SAAS;AAET,IAAA,eAAe;AACf,IAAA,gBAAgB;AAEP,IAAA,OAAO;AACP,IAAA,UAAU;AAKnB,IAAA,WAAA,CACE,cAAiC,EACjC,eAAuC,EACnB,SAAoB,EAAA;AAlK1C;;;;;;;AAOG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;AA0DvB;;AAEG;QAEI,IAAA,CAAA,aAAa,GAAG,KAAK;QA6CrB,IAAA,CAAA,SAAS,GAAG,KAAK;QAGjB,IAAA,CAAA,SAAS,GAAG,KAAK;QASd,IAAA,CAAA,YAAY,GAAG,oBAAoB;AAI7C,QAAA,IAAA,CAAA,YAAY,GAAG,CAAA,gBAAA,EAAmB,YAAY,EAAE,EAAE;AAElD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAEpC,IAAA,CAAA,UAAU,GAAG,KAAK;QAElB,IAAA,CAAA,MAAM,GAAG,EAAE;QAUX,IAAA,CAAA,SAAS,GAAG,KAAK;AAKR,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AAEhC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;;;AAkGhD,QAAA,IAAA,CAAA,SAAS,GAAyB,MAAK,EAAE,CAAC;;;AAI1C,QAAA,IAAA,CAAA,UAAU,GAAc,MAAK,EAAE,CAAC;QA9F9B,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,aAAa,GAAG,IAAI;QAChC;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY;QAE7B,IAAI,CAAC,gBAAgB,CAAC;AACnB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;YACjB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,QAAA,CAAC,CAAC;IACN;IAEO,kBAAkB,GAAA;;QAEvB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,kBAAkB,EAAE;;AAGzB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;gBAEtE,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,gBAAA,CAAC,CAAC;;gBAGF,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,kBAAkB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC;AACH,qBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,qBAAA,SAAS,CAAC,CAAC,MAAsB,KAAI;oBACpC,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AAC3B,gBAAA,CAAC,CAAC;AACJ,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBAC7D,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,CAAC,aAAa;;QAG/C,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEO,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;;;AAIA,IAAA,SAAS;;;AAIT,IAAA,UAAU;IAEV,0BAA0B,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KACxB,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC3C;QACH;IACF;IAEA,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACxB,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,4BAA4B,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC5B,gBAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;AACrC,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,4BAA4B,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC5B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,KAAK;AACpD,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,4BAA4B,EAAE;QACnC,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;AACnD,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;IACtD;8GAzZW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAoDb,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAehB,eAAe,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAxF5B,gBAAgB,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAsIH,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAOhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAuDhB,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAtLzB;YACT,sBAAsB;AACtB,YAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrD,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EA6NgB,iBAAiB,uHC/QpC,08EAsFA,EAAA,MAAA,EAAA,CAAA,+kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDhCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAGhB;wBACT,sBAAsB;AACtB,wBAAA,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrD,qBAAA,EAAA,cAAA,EACe,CAAC,+BAA+B,CAAC,EAAA,UAAA,EACrC,KAAK,EAAA,QAAA,EAAA,08EAAA,EAAA,MAAA,EAAA,CAAA,+kCAAA,CAAA,EAAA;;0BA6Qd;;0BAAQ;;sBAlQV;;sBAuBA;;sBAoBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAerC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBAcpC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAqBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAgBrC;;sBAmBA;;sBAcA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAOrC;;sBAQA;;sBAOA;;sBAQA;;sBAYA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAGxD,WAAW;uBAAC,8BAA8B;;sBAG1C,WAAW;uBAAC,+BAA+B;;;AElR9C;;;;;AAKG;MAMU,sBAAsB,CAAA;;;;AAK1B,IAAA,OAAO,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,+BAA+B,EAAE;AAChE,YAAA,uBAAuB,EAAE,EAAE;AAC3B,YAAA,yBAAyB,EACvB,kGAAkG;AACrG,SAAA,CAAC;IACJ;8GAfW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,iICdnC,4LAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDSa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAEf,KAAK,EAAA,QAAA,EAAA,4LAAA,EAAA;;sBAMhB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MEuBtB,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAvBvB,iBAAiB;YACjB,sBAAsB;AACtB,YAAA,sBAAsB,aAGtB,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,uBAAuB;YACvB,aAAa;AACb,YAAA,cAAc,aAGd,kBAAkB;YAClB,iBAAiB;YACjB,sBAAsB;YACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlBvB,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,uBAAuB;YACvB,aAAa;AACb,YAAA,cAAc,EAGd,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAMT,cAAc,EAAA,UAAA,EAAA,CAAA;kBAzB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,sBAAsB;wBACtB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,kBAAkB;wBAClB,mBAAmB;wBACnB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,uBAAuB;wBACvB,aAAa;wBACb,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,iBAAiB;wBACjB,sBAAsB;wBACtB,sBAAsB;AACvB,qBAAA;AACF,iBAAA;;;ACrCD;;;AAGG;MAEU,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;QAGS,IAAA,CAAA,QAAQ,GAAG,KAAK;AAad,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxE,IAAA;AAZC;;;AAGG;IACI,UAAU,GAAA;QACf,QACE,IAAI,CAAC,QAAQ;AACb,YAAA,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;IAEjE;AAES,IAAA,UAAU;8GAfR,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,mEAChB,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FADzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE;;sBAEV,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;ACDxC,MAAM,mBAAmB,GAAG,gCAAgC;AAC5D,MAAM,mBAAmB,GAAG,gCAAgC;AAC5D,MAAM,mBAAmB,GAAG,gCAAgC;AAC5D,MAAM,mBAAmB,GAAG,gCAAgC;AAE5D,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,GAAG;AACpC,MAAM,wBAAwB,GAAG,IAAI;AAErC;;AAEG;MAEU,6BAA6B,CAAA;AACxC,IAAA,mBAAmB;AACnB,IAAA,SAAS;IAET,WAAA,CACE,kBAAyC,EACzC,eAAiC,EAAA;AAEjC,QAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;QAC7C,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC;IAClE;AAEA;;AAEG;AACI,IAAA,KAAK,CAAC,EAAc,EAAA;AACzB,QAAA,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC1B;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,EAAc,EAAA;QAC9B,OAAO,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC;IACtD;AAEA;;;AAGG;AACI,IAAA,qBAAqB,CAAC,KAAyB,EAAA;QACpD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,mBAAmB,CAAC,EAAE;QAC/B;AAEA,QAAA,IAAI,KAAK,IAAI,wBAAwB,EAAE;YACrC,OAAO,mBAAmB,CAAC,EAAE;QAC/B;aAAO,IACL,KAAK,IAAI,wBAAwB;YACjC,KAAK,IAAI,wBAAwB,EACjC;YACA,OAAO,mBAAmB,CAAC,EAAE;QAC/B;aAAO,IACL,KAAK,IAAI,wBAAwB;YACjC,KAAK,IAAI,wBAAwB,EACjC;YACA,OAAO,mBAAmB,CAAC,EAAE;QAC/B;aAAO;YACL,OAAO,mBAAmB,CAAC,EAAE;QAC/B;IACF;AAEA;;AAEG;AACI,IAAA,cAAc,CAAC,OAAmB,EAAA;QACvC,OACE,OAAO,CAAC,aACT,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,KAAK;IAClD;AAEA;;AAEG;IACI,YAAY,CAAC,QAAoB,EAAE,OAAoB,EAAA;QAC5D,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;IACjD;AAEA;;AAEG;IACI,mBAAmB,CAAC,OAAmB,EAAE,QAAgB,EAAA;AAC9D,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAE,EAAE;AACrE,YAAA,gBAAgB,EAAE,IAAI;AACvB,SAAA,CAAC;AACF,QAAA,IAAI,KAAK,GAAG,YAAY,CAAC,MAAM;QAC/B,OAAO,KAAK,EAAE,EAAE;AACd,YAAA,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,QAAQ;QACzC;IACF;AAEA;;AAEG;IACI,kBAAkB,CACvB,OAAmB,EACnB,UAA+B,EAAA;AAE/B,QAAA,MAAM,QAAQ,GAAgB,OAAO,CAAC,aAAa;QAEnD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AAEzD,QAAA,IAAI,QAAgB;QAEpB,QAAQ,UAAU;AAChB,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;AACA,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;AACA,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;AACA,YAAA,KAAK,mBAAmB,CAAC,EAAE,EAAE;gBAC3B,QAAQ,GAAG,mBAAmB;gBAC9B;YACF;;QAGF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7C;AAEA;;AAEG;IACI,WAAW,CAAC,OAAmB,EAAE,QAAgB,EAAA;AACtD,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa;AAEhC,QAAA,EAAE,CAAC,QAAQ,GAAG,QAAQ;IACxB;8GAhIW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;ACpBD;;AAEG;MAMU,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,0FCVhD,kBACA,EAAA,CAAA,CAAA;;2FDSa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAE7B,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA;;;AEWnB;;AAEG;MASU,wBAAwB,CAAA;AACnC;;;AAGG;IACH,IACW,OAAO,CAChB,KAA2D,EAAA;AAE3D,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAQ;QACzC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,6BAA6B,EAAE;YACpC,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAC1C,IAAI,CAAC,cAAc,EACnB,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CACf;QACH;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEA,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU;IACxB;IAQA,IAIW,cAAc,CAAC,KAA6B,EAAA;AACrD,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAC1C,KAAK,EACL,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CACvB;;;;YAKD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjE,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;AAEA,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAEpC,SAAS,GAAG,KAAK;AAEjB,IAAA,SAAS;IAET,UAAU,GAAG,KAAK;AAElB,IAAA,gBAAgB;AAEhB,IAAA,eAAe;AACf,IAAA,2BAA2B;IAE3B,WAAA,CACE,cAAiC,EACjC,0BAAyD,EAAA;AAEzD,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,2BAA2B,GAAG,0BAA0B;IAC/D;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAEnC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;QACrE;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;QAC7D;IACF;IAEA,6BAA6B,GAAA;;AAE3B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC;AACV,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,YAAA,CAAC,CAAC;QACN;IACF;IAEA,oBAAoB,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC;AACV,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACvB,YAAA,CAAC,CAAC;QACN;IACF;8GA9IW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAgD3B,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMV,UAAU,6BCpFpB,0+BAkCA,EAAA,MAAA,EAAA,CAAA,ktOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDJa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,0+BAAA,EAAA,MAAA,EAAA,CAAA,ktOAAA,CAAA,EAAA;;sBAOhB;;sBA0CA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE;AACpB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE;AACzB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA;;;AE7DH,MAAM,4BAA4B,GAAG,oBAAoB;AAEzD;;AAEG;MASU,4BAA4B,CAAA;AACvC;;;;AAIG;IACH,IACW,UAAU,CAAC,KAAoD,EAAA;QACxE,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAC3B;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;QAC9B;IACF;AAEA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY;IAC1B;IAOA,IAIW,mBAAmB,CAAC,KAA6B,EAAA;AAC1D,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;QAClC,IAAI,CAAC,wBAAwB,EAAE;QAC/B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,qBAAqB,EAAE;QAC9B;IACF;AAEA,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,qBAAqB;IACnC;AAEA,IAAA,iBAAiB;AAEjB,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAEpC,YAAY,GAAsC,QAAQ;AAE1D,IAAA,qBAAqB;AAErB,IAAA,mBAAmB;AACnB,IAAA,oBAAoB;AACpB,IAAA,UAAU;AACV,IAAA,oBAAoB;AACpB,IAAA,OAAO;AACP,IAAA,SAAS;IAET,WAAA,CACE,kBAAyC,EACzC,mBAAkD,EAClD,SAAqB,EACrB,mBAA+C,EAC/C,MAAc,EACF,QAA0B,EAAA;AAEtC,QAAA,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;IAC3B;IAEO,QAAQ,GAAA;;AAEb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC;AACZ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;iBACnC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,CAAC,CAAC;QACN;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAE9B,IAAI,CAAC,wBAAwB,EAAE;IACjC;IAGO,cAAc,GAAA;QACnB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,qBAAqB,GAAA;;QAEnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACvD,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;;;;AAKjD,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;gBAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAK;oBAC7D,IAAI,CAAC,sBAAsB,EAAE;AAC/B,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE;AACjC,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,wBAAwB,GAAA;;AAEtB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACpC;IACF;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAC1D,IAAI,CAAC,UAAU,CAChB;AAED,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAC1C,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAC7D;QACH;QACA,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,sBAAsB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAClC,IAAI,CAAC,mBAAmB,EACxB,4BAA4B,CAC7B;YACD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CACpC,IAAI,CAAC,mBAAmB,EACxB,4BAA4B,CAC7B;QACH;IACF;8GArJW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwB,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,IAAA,CAAA,0BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,sNAmBtB,wBAAwB,EAAA,IAAA,EACjC,wBAAwB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAKxB,UAAU,2CC/DpB,kLAOA,EAAA,MAAA,EAAA,CAAA,ivQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD+Ba,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;+BACE,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,KAAK,EAAA,QAAA,EAAA,kLAAA,EAAA,MAAA,EAAA,CAAA,ivQAAA,CAAA,EAAA;;0BAgEd;;sBAxDF;;sBAaA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE;AACzC,wBAAA,IAAI,EAAE,wBAAwB;AAC/B,qBAAA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE;AACtB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,MAAM,EAAE,IAAI;AACb,qBAAA;;sBA+DA,YAAY;uBAAC,eAAe;;;AE9H/B;;AAEG;MAMU,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,qFCV3C,kBACA,EAAA,CAAA,CAAA;;2FDSa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAL1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cAExB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA;;;MEkBN,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAd9B,4BAA4B;YAC5B,wBAAwB;YACxB,mCAAmC;AACnC,YAAA,8BAA8B,CAAA,EAAA,OAAA,EAAA,CAEtB,YAAY,EAAE,cAAc,aAEpC,4BAA4B;YAC5B,wBAAwB;YACxB,mCAAmC;YACnC,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAIrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,aAFrB,CAAC,6BAA6B,CAAC,EAAA,OAAA,EAAA,CAPhC,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;;2FAS3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,4BAA4B;wBAC5B,wBAAwB;wBACxB,mCAAmC;wBACnC,8BAA8B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,4BAA4B;wBAC5B,wBAAwB;wBACxB,mCAAmC;wBACnC,8BAA8B;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA;;;ACtBD;;;;;AAKG;MAOU,6BAA6B,CAAA;AACxC,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,+BAA+B,EAAE;AAChE,YAAA,uBAAuB,EAAE,CAAC;AAC1B,YAAA,yBAAyB,EACvB,oGAAoG;AACvG,SAAA,CAAC;IACJ;8GAPW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,oFCf1C,uCACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDca,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,eAAA,EAElB,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,uCAAA,EAAA;;;AEmBnB,MAAM,wCAAwC,GAAQ;AACpD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;CACZ;AACD,MAAM,2BAA2B,GAAG;AAClC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;CACZ;MAaY,wBAAwB,CAAA;AAGnC;;;;;;;AAOG;IACH,IACW,SAAS,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AAExB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,oCAAoC,EAAE;AAC5D,gBAAA,uBAAuB,EAAE,CAAC;AAC1B,gBAAA,yBAAyB,EACvB,8EAA8E;AACjF,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;;AAGG;IACH,IACW,OAAO,CAAC,KAA0B,EAAA;AAC3C,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK;AACvB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;;YAIvB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC7B;QACF;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,SAAS;IACvB;AAiEA,IAAA,QAAQ;AACR,IAAA,cAAc;AACL,IAAA,OAAO;AAChB,IAAA,cAAc;AAEd,IAAA,WAAW;AACX,IAAA,SAAS;AAET,IAAA,eAAe;IAEf,WAAA,CAAY,cAAiC,EAAE,SAAuB,EAAA;AAzEtE;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAwB,KAAK;AAiB5C;;;AAGG;QAEI,IAAA,CAAA,QAAQ,GAAuB,CAAC;AAQvC;;AAEG;QAEI,IAAA,CAAA,WAAW,GAAG,KAAK;AAU1B;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB;QAExD,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAGzB,IAAA,CAAA,wBAAwB,GAAG,KAAK;QAMvC,IAAA,CAAA,cAAc,GAAG,IAAI;AACZ,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;QAGpC,IAAA,CAAA,SAAS,GAAG,KAAK;;AAyEjB,QAAA,IAAA,CAAA,UAAU,GAAc,MAAK,EAAE,CAAC;;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAyB,MAAK,EAAE,CAAC;AAtExC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE;IACvC;IAEO,kBAAkB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YAExD,IAAI,CAAC,eAAe,CAAC;AAClB,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,iBAAA,SAAS,CAAC,CAAC,kBAAkB,KAAI;gBAChC,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC;;;AAGtD,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACrC,YAAA,CAAC,CAAC;QACN;;;QAIA,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACtC,QAAA,CAAC,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEO,IAAA,QAAQ,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACzB;AAEA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IACrC;AAEO,IAAA,aAAa,CAAC,KAAU,EAAA;QAC7B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEO,YAAY,GAAA;QACjB,IAAI,CAAC,UAAU,EAAE;IACnB;;AAGA,IAAA,UAAU;;AAEV,IAAA,SAAS;IAET,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS;AACxB,SAAA,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;IAC9B;8GA/MW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EA0Ff,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAjGzB;YACT,wCAAwC;YACxC,2BAA2B;SAC5B,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAoHgB,6BAA6B,6BCtKhD,g0DAiEA,EAAA,MAAA,EAAA,CAAA,44RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDXa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAGlB;wBACT,wCAAwC;wBACxC,2BAA2B;AAC5B,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,QAAA,EAAA,g0DAAA,EAAA,MAAA,EAAA,CAAA,44RAAA,CAAA,EAAA;;sBAahB;;sBAqBA;;sBAwBA;;sBAQA;;sBAOA;;sBAOA;;sBAMA;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;sBAMA;;sBAQA,eAAe;uBAAC,6BAA6B;;;MElJnC,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,CAVjB,6BAA6B,EAAE,wBAAwB,aAEpE,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,aAAa,CAAA,EAAA,OAAA,EAAA,CAEL,6BAA6B,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEtD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAR9B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,WAAW;YACX,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAIJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,wBAAwB,CAAC;AACvE,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,WAAW;wBACX,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,wBAAwB,CAAC;AACnE,iBAAA;;;ACnBD;;AAEG;;;;"}