/*******************************************************************************
 * Copyright (c) 2010, 2014 Andrew Gvozdev and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     Andrew Gvozdev - Initial API and implementation
 *     IBM Corporation
 *******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.ui;

import org.eclipse.osgi.util.NLS;

public class Messages extends NLS {
	public static String AbstractCWizard_0;
	public static String AbstractPrefPage_0;
	public static String ArtifactTab_0;
	public static String ArtifactTab_1;
	public static String ArtifactTab_2;
	public static String ArtifactTab_3;
	public static String BuildBehaviourTab_Build_arguments;
	public static String BuildBehaviourTab_Use_custom_build_arguments;
	public static String BuildBehaviourTab_Use_standard_build_arguments;
	public static String BuilderSettingsTab_0;
	public static String BuilderSettingsTab_1;
	public static String BuilderSettingsTab_10;
	public static String BuilderSettingsTab_EnableParallelBuild;
	public static String BuilderSettingsTab_UseOptimalJobs;
	public static String BuilderSettingsTab_UseUnlimitedJobs;
	public static String BuilderSettingsTab_UseParallelJobs;
	public static String BuilderSettingsTab_14;
	public static String BuilderSettingsTab_15;
	public static String BuilderSettingsTab_16;
	public static String BuilderSettingsTab_17;
	public static String BuilderSettingsTab_18;
	public static String BuilderSettingsTab_19;
	public static String BuilderSettingsTab_2;
	public static String BuilderSettingsTab_20;
	public static String BuilderSettingsTab_21;
	public static String BuilderSettingsTab_22;
	public static String BuilderSettingsTab_3;
	public static String BuilderSettingsTab_4;
	public static String BuilderSettingsTab_5;
	public static String BuilderSettingsTab_6;
	public static String BuilderSettingsTab_7;
	public static String BuilderSettingsTab_8;
	public static String BuilderSettingsTab_9;
	public static String BuilderSettingsTab_Configure_Build_Arguments_In_the_Behavior_tab;
	public static String BuildOptionSettingsUI_0;
	public static String BuildPropertyPage_error_Unknown_tree_element;
	public static String BuildStepsTab_0;
	public static String BuildStepsTab_1;
	public static String BuildStepsTab_2;
	public static String BuildStepsTab_3;
	public static String BuildStepsTab_4;
	public static String BuildStepsTab_5;
	public static String BuildStepsTab_6;
	public static String BuildToolSettingsPage_alloptions;
	public static String BuildToolSettingsPage_tool_advancedSettings;
	public static String BuildToolSettingsPage_tool_command;
	public static String BuildToolSettingsPage_tool_commandLinePattern;
	public static String BuiltinSpecsDetectorOptionPage_AllocateConsole;
	public static String BuiltinSpecsDetectorOptionPage_Browse;
	public static String BuiltinSpecsDetectorOptionPage_ChooseFile;
	public static String BuiltinSpecsDetectorOptionPage_CompilerSpecsCommand;
	public static String CConfigWizardPage_0;
	public static String CConfigWizardPage_1;
	public static String CConfigWizardPage_10;
	public static String CConfigWizardPage_11;
	public static String CConfigWizardPage_12;
	public static String CConfigWizardPage_13;
	public static String CConfigWizardPage_4;
	public static String CConfigWizardPage_5;
	public static String CConfigWizardPage_6;
	public static String CConfigWizardPage_7;
	public static String CConfigWizardPage_8;
	public static String CDTConfigWizardPage_0;
	public static String CMainWizardPage_0;
	public static String CMainWizardPage_1;
	public static String CNewWizard_0;
	public static String CPropertyVarsTab_0;
	public static String CPropertyVarsTab_Description;
	public static String CWizardHandler_0;
	public static String CWizardHandler_1;
	public static String CWizardHandler_2;
	public static String CWizardHandler_3;
	public static String CWizardHandler_4;
	public static String CWizardHandler_5;
	public static String CWizardHandler_6;
	public static String DiscoveryTab_0;
	public static String DiscoveryTab_1;
	public static String DiscoveryTab_2;
	public static String DiscoveryTab_3;
	public static String DiscoveryTab_5;
	public static String DiscoveryTab_6;
	public static String DiscoveryTab_7;
	public static String DiscoveryTab_8;
	public static String DiscoveryTab_Clear;
	public static String DiscoveryTab_ClearDisoveredEntries;
	public static String DiscoveryTab_ClearEntries;
	public static String DiscoveryTab_DiscoveredEntriesCleared;
	public static String DiscoveryTab_ErrorClearingEntries;
	public static String EnvironmentTab_15;
	public static String EnvironmentTab_23;
	public static String GCCBuildCommandParserOptionPage_CompilerPattern;
	public static String GCCBuildCommandParserOptionPage_ContainerForDiscoveredEntries;
	public static String GCCBuildCommandParserOptionPage_File;
	public static String GCCBuildCommandParserOptionPage_Folder;
	public static String GCCBuildCommandParserOptionPage_Project;
	public static String GCCBuildCommandParserOptionPage_ResolvePaths;
	public static String MacrosBlock_label_delete_all_confirm_message;
	public static String MacrosBlock_label_delete_all_confirm_title;
	public static String MacrosBlock_label_delete_confirm_message;
	public static String MacrosBlock_label_delete_confirm_title;
	public static String MacrosBlock_label_header_name;
	public static String MacrosBlock_label_header_type;
	public static String MacrosBlock_label_header_value;
	public static String MacrosBlock_label_type_path_any_list;
	public static String MacrosBlock_label_type_path_any;
	public static String MacrosBlock_label_type_path_dir_list;
	public static String MacrosBlock_label_type_path_dir;
	public static String MacrosBlock_label_type_path_file_list;
	public static String MacrosBlock_label_type_path_file;
	public static String MacrosBlock_label_type_text_list;
	public static String MacrosBlock_label_type_text;
	public static String MacrosBlock_label_value_eclipse_dynamic;
	public static String MBSCustomPageManager_error0;
	public static String MBSCustomPageManager_error1;
	public static String MBSCustomPageManager_error2;
	public static String MBSCustomPageManager_error3;
	public static String MBSCustomPageManager_error4;
	public static String MBSCustomPageManager_error5;
	public static String MBSCustomPageManager_error6;
	public static String MBSProjectConfiguration_No_configuration_selected_for_project;
	public static String MBSWizardHandler_0;
	public static String NewBuildConfigurationDialog_0;
	public static String NewBuildConfigurationDialog_1;
	public static String NewBuildMacroDialog_label_browse;
	public static String NewBuildMacroDialog_label_list_title;
	public static String NewBuildMacroDialog_label_title_edit;
	public static String NewBuildMacroDialog_label_title_new;
	public static String NewBuildMacroDialog_label_type_path_any_list;
	public static String NewBuildMacroDialog_label_type_path_any;
	public static String NewBuildMacroDialog_label_type_path_dir_list;
	public static String NewBuildMacroDialog_label_type_path_dir;
	public static String NewBuildMacroDialog_label_type_path_file_list;
	public static String NewBuildMacroDialog_label_type_path_file;
	public static String NewBuildMacroDialog_label_type_text_list;
	public static String NewBuildMacroDialog_label_type_text;
	public static String NewBuildMacroDialog_label_type;
	public static String NewBuildMacroDialog_label_value;
	public static String NewCfgDialog_0;
	public static String NewCfgDialog_1;
	public static String NewCfgDialog_2;
	public static String NewCfgDialog_3;
	public static String NewCfgDialog_4;
	public static String NewCfgDialog_5;
	public static String NewConfiguration_error_caseName;
	public static String NewConfiguration_error_duplicateName;
	public static String NewConfiguration_error_invalidName;
	public static String NewConfiguration_label_clone;
	public static String NewConfiguration_label_copy;
	public static String NewConfiguration_label_description;
	public static String NewConfiguration_label_group;
	public static String NewConfiguration_label_name;
	public static String NewConfiguration_label_warning;
	public static String NewMakeProjFromExisting_wizard_title;
	public static String NewMakeProjFromExistingPage_show_only_supported;
	public static String NewMakeProjFromExisting_1;
	public static String NewMakeProjFromExistingPage_0;
	public static String NewMakeProjFromExistingPage_1;
	public static String NewMakeProjFromExistingPage_10;
	public static String NewMakeProjFromExistingPage_11;
	public static String NewMakeProjFromExistingPage_2;
	public static String NewMakeProjFromExistingPage_3;
	public static String NewMakeProjFromExistingPage_4;
	public static String NewMakeProjFromExistingPage_5;
	public static String NewMakeProjFromExistingPage_6;
	public static String NewMakeProjFromExistingPage_7;
	public static String NewMakeProjFromExistingPage_8;
	public static String NewMakeProjFromExistingPage_9;
	public static String NewMakeProjFromExistingPage_DirReadOnlyError;
	public static String NewVarDialog_0;
	public static String NewVarDialog_1;
	public static String PreferredToolchainsTab_0;
	public static String PreferredToolchainsTab_1;
	public static String PreferredToolchainsTab_2;
	public static String PreferredToolchainsTab_3;
	public static String PrefPage_NewCDTWizard_0;
	public static String PrefPage_PropertyPage_0;
	public static String PropertyMultiCfgTab_10;
	public static String PropertyMultiCfgTab_11;
	public static String PropertyMultiCfgTab_3;
	public static String PropertyMultiCfgTab_4;
	public static String PropertyMultiCfgTab_6;
	public static String PropertyMultiCfgTab_7;
	public static String PropertyMultiCfgTab_8;
	public static String PropertyMultiCfgTab_9;
	public static String PropertyPageDefsTab_0;
	public static String PropertyPageDefsTab_1;
	public static String PropertyPageDefsTab_10;
	public static String PropertyPageDefsTab_11;
	public static String PropertyPageDefsTab_12;
	public static String PropertyPageDefsTab_13;
	public static String PropertyPageDefsTab_14;
	public static String PropertyPageDefsTab_16;
	public static String PropertyPageDefsTab_4;
	public static String PropertyPageDefsTab_5;
	public static String PropertyPageDefsTab_6;
	public static String PropertyPageDefsTab_7;
	public static String PropertyPageDefsTab_8;
	public static String PropertyPageDefsTab_9;
	public static String PropertyPageDefsTab_showIncludeFileTab;
	public static String PropertyPageDefsTab_showProvidersTab;
	public static String PropertyPageDefsTab_showScannerDiscoveryTab;
	public static String RefreshPolicyExceptionDialog_addDialogLabel;
	public static String RefreshPolicyExceptionDialog_AddExceptionInfoDialog_message;
	public static String RefreshPolicyExceptionDialog_AddExceptionInfoDialog_title;
	public static String RefreshPolicyExceptionDialog_editDialogLabel;
	public static String RefreshPolicyExceptionDialog_exceptionPropertiesGroupLabel;
	public static String RefreshPolicyExceptionDialog_exceptionTypeDropdownLabel;
	public static String RefreshPolicyTab_addExceptionButtonLabel;
	public static String RefreshPolicyTab_addResourceButtonLabel;
	public static String RefreshPolicyTab_addResourceDialogDescription;
	public static String RefreshPolicyTab_addResourceDialogTitle;
	public static String RefreshPolicyTab_deleteButtonLabel;
	public static String RefreshPolicyTab_deleteConfirmationDialog_question_exception;
	public static String RefreshPolicyTab_deleteConfirmationDialog_question_resource;
	public static String RefreshPolicyTab_deleteConfirmationDialog_title;
	public static String RefreshPolicyTab_editExceptionButtonLabel;
	public static String RefreshPolicyTab_exceptionsLabel;
	public static String RefreshPolicyTab_resourcesGroupLabel;
	public static String RefreshPolicyTab_tabLabel;
	public static String ResourceCustomBuildStepBlock_label_applicability_rule_after;
	public static String ResourceCustomBuildStepBlock_label_applicability_rule_before;
	public static String ResourceCustomBuildStepBlock_label_applicability_rule_disable;
	public static String ResourceCustomBuildStepBlock_label_applicability_rule_override;
	public static String ResourceCustomBuildStepBlock_label_applicability;
	public static String ScannerConfigOptionsDialog_scGroup_enabled_button;
	public static String ScannerConfigOptionsDialog_scGroup_label;
	public static String ScannerConfigOptionsDialog_scGroup_problemReporting_enabled_button;
	public static String ScannerConfigOptionsDialog_scGroup_selectedProfile_combo;
	public static String StdBuildWizard_0;
	public static String StdProjectTypeHandler_0;
	public static String StdProjectTypeHandler_2;
	public static String StdProjectTypeHandler_3;
	public static String ToolChainEditTab_0;
	public static String ToolChainEditTab_1;
	public static String ToolChainEditTab_10;
	public static String ToolChainEditTab_11;
	public static String ToolChainEditTab_12;
	public static String ToolChainEditTab_13;
	public static String ToolChainEditTab_14;
	public static String ToolChainEditTab_15;
	public static String ToolChainEditTab_16;
	public static String ToolChainEditTab_17;
	public static String ToolChainEditTab_2;
	public static String ToolChainEditTab_3;
	public static String ToolChainEditTab_4;
	public static String ToolChainEditTab_5;
	public static String ToolChainEditTab_6;
	public static String ToolChainEditTab_7;
	public static String ToolChainEditTab_8;
	public static String ToolChainEditTab_9;
	public static String ToolChainEditTab_OrphanedBuilder;
	public static String ToolChainEditTab_OrphanedToolchain;
	public static String ToolSelectionDialog_0;
	public static String ToolSelectionDialog_1;
	public static String ToolSelectionDialog_10;
	public static String ToolSelectionDialog_11;
	public static String ToolSelectionDialog_12;
	public static String ToolSelectionDialog_13;
	public static String ToolSelectionDialog_14;
	public static String ToolSelectionDialog_15;
	public static String ToolSelectionDialog_16;
	public static String ToolSelectionDialog_2;
	public static String ToolSelectionDialog_7;
	public static String ToolSelectionDialog_8;
	public static String ToolSelectionDialog_9;
	public static String ToolSettingsTab_0;
	public static String WizardDefaultsTab_0;
	public static String WizardDefaultsTab_1;
	public static String RefreshPolicyTab_resourcesTreeLabel;

	static {
		// Initialize resource bundle.
		NLS.initializeMessages(Messages.class.getName(), Messages.class);
	}

	private Messages() {
	}
}
