################################################################################
##
##  Licensed to the Apache Software Foundation (ASF) under one or more
##  contributor license agreements.  See the NOTICE file distributed with
##  this work for additional information regarding copyright ownership.
##  The ASF licenses this file to You under the Apache License, Version 2.0
##  (the "License"); you may not use this file except in compliance with
##  the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.
##
################################################################################
ASK_BLAZEDS=Apache Flex can optionally integrate with remoting providers like BlazeDS, GraniteDS, WebORB, Red5, AMFPHP, RubyAMF, PyAMF and others. This feature requires flex-messaging-common.jar from the Adobe Flex SDK. The Adobe SDK license agreement for Adobe Flex 4.6 applies to this jar. This license is not compatible with the Apache V2 license. Do you want to install this jar from the Adobe Flex SDK?
ASK_FONTSWF=Apache Flex can optionally integrate with Adobe's embedded font support. This feature requires a few font jars from the Adobe Flex SDK. The Adobe SDK license agreement for Adobe Flex 4.6 applies to these jars. This license is not compatible with the Apache V2 license. Do you want to install these jars from the Adobe Flex SDK?
ASK_OSMF=The Open Source Media Framework (OSMF) used by the video components is licensed under the Mozilla Public License Version 1.1.  Do you want to install the Open Source Media Framework (OSMF)?
ASK_TLF=The Adobe Text Layout Framework (TLF) used by the Spark text components is licensed under the Mozilla Public License Version 1.1.  Do you want to install the Adobe Text Layout Framework (TLF)?
ASK_APACHE_FLEX=The Apache License V2 applies to the Apache Flex SDK.  Do you want to install the Apache Flex SDK?
ASK_ADOBE_AIR_SDK=The Adobe SDK license agreement applies to the Adobe AIR SDK.  Do you want to install the Adobe AIR SDK?
ASK_ADOBE_FLASH_PLAYER_GLOBAL_SWC=The Adobe SDK license agreement applies to the Adobe Flash Player playerglobal.swc.  Do you want to install the Adobe Flash Player playerglobal.swc?
ASK_SWFOBJECT=The MIT License (MIT) applies to the SWFObject utility.  Do you want to install the SWFObject utility?
ASK_OFL_FONTS=The FlatSpark theme uses fonts licensed under the Open Font License.  Do you want to install the Font Awesome and Lato Fonts?
BTN_LABEL_ADOBE_LICENSE=SHOW ADOBE LICENSE
BTN_LABEL_BROWSE=BROWSE
BTN_LABEL_CLOSE=CLOSE
BTN_LABEL_COPY_LOG=COPY LOG
BTN_LABEL_INSTALL=INSTALL
BTN_LABEL_INSTALL_LOG=INSTALL LOG
BTN_LABEL_MPL_LICENSE=SHOW MPL LICENSE
BTN_LABEL_NEXT=NEXT
BTN_LABEL_BACK=BACK
BTN_DISCLAIMER=Disclaimer
BTN_LABEL_OPEN_APACHE_FLEX_FOLDER=OPEN APACHE FLEX FOLDER
ERROR_CONFIG_XML_LOAD=Error while trying to load XML configuration file: 
ERROR_DIR_NOT_EMPTY=The selected directory is not empty
ERROR_DIR_REQUIRE_ADMIN_RIGHTS=The selected directory requires Administrator rights to write files
ERROR_INVALID_AIR_SDK_URL_MAC=Adobe AIR SDK URL for Mac invalid in configuration file
ERROR_INVALID_AIR_SDK_URL_WINDOWS=Adobe AIR SDK URL for Windows invalid in configuration file
ERROR_INVALID_FLASH_PLAYER_SWC_URL=Flash Player swc URL invalid in configuration file
ERROR_INVALID_FLEX_SDK_DIRECTORY=Invalid Flex SDK directory selected
ERROR_INVALID_SDK_URL=Apache Flex SDK URL invalid in configuration file
ERROR_MIRROR_FETCH=Error while trying to fetch a mirror for downloading the Apache Flex SDK binaries: 
ERROR_NATIVE_PROCESS_ERROR=Native Process error unable to untar Adobe AIR SDK
ERROR_NATIVE_PROCESS_NOT_SUPPORTED=Native Process not supported. Unable to untar Adobe AIR SDK
ERROR_UNABLE_TO_COPY_FILE=Unable to copy file 
ERROR_UNABLE_TO_CREATE_TEMP_DIRECTORY=Unable to create temporary directory
ERROR_UNABLE_TO_DELETE_TEMP_DIRECTORY=Unable to clean up temporary installation directories
ERROR_UNABLE_TO_DOWNLOAD_AIR_SDK=Unable to download Adobe AIR Runtime Kit
ERROR_UNABLE_TO_DOWNLOAD_FILE=Unable to download {0}
ERROR_UNABLE_TO_DOWNLOAD_FLASH_PLAYER_SWC=Unable to download Flash Player swc
ERROR_UNABLE_TO_DOWNLOAD_FLEX_SDK=Unable to download Apache Flex SDK
ERROR_UNABLE_TO_INSTALL_CONFIG_FILES=Unable to install configuration files
ERROR_UNABLE_TO_UNZIP=Unable to unzip file: 
ERROR_UNABLE_TO_DOWNLOAD_SWF_OBJECT=Unable to download SWFObject
ERROR_UNSUPPORTED_OPERATING_SYSTEM=Unsupported operating system
ERROR_VERIFY_FLEX_SDK=The Apache Flex SDK MD5 Signature of the downloaded files does not match the reference value. The file is invalid, installation is aborted.
FETCH_GEO_IP=Trying to fetch the user's country code from the GeoIP service...
FETCH_GEO_IP_DONE=Fetched the user's country code from the GeoIP service.
FETCH_GEO_IP_ERROR=An error occurred while fetching the user's country code from the GeoIP service.
FETCH_MIRROR_CGI=Trying to fetch the SDK download mirror URL from the CGI...
FETCH_MIRROR_CGI_DONE=Fetched the SDK download mirror URL from the CGI.
FETCH_MIRROR_CGI_ERROR=Could not fetch the SDK download mirror URL from the CGI. Going to try the GeoIP route.
FETCH_MIRROR_LIST=Trying to fetch the mirror list from Apache.org...
FETCH_MIRROR_LIST_DONE=Fetched the mirror list from Apache.org.
FETCH_MIRROR_LIST_PARSED=Parsed the mirror list using the country code and got this domain: 
INFO_ABORT_INSTALLATION=Installation aborted
INFO_USER_ABORT_INSTALLATION=User closed the installer before installation was completed. Current step: 
INFO_APP_INVOKED=Invoked in command line mode with the following arguments: 
INFO_CREATING_FLEX_HOME=Creating Apache Flex home
INFO_CREATING_TEMP_DIR=Creating temporary directory
INFO_CURRENT_LANGUAGE=Select Language
INFO_DOWNLOADING_ADOBE_FLEX_SDK=Downloading Adobe Flex SDK from: 
INFO_DOWNLOADING_AIR_RUNTIME_KIT_MAC=Downloading Adobe AIR Runtime Kit for Mac from: 
INFO_DOWNLOADING_AIR_RUNTIME_KIT_WINDOWS=Downloading Adobe AIR Runtime Kit for Windows from: 
INFO_DOWNLOADING_FILE_FROM=Downloading {0} from: {1}
INFO_DOWNLOADING_FLEX_SDK=Downloading Apache Flex SDK from: 
INFO_DOWNLOADED=Download complete 
INFO_ENTER_VALID_FLEX_SDK_PATH=Please enter valid directory path for the Flex SDK
INFO_FINISHED_UNTARING=Finished untaring: 
INFO_FINISHED_UNZIPPING=Finished uncompressing: 
INFO_INSTALLATION_COMPLETE=Installation complete
INFO_INSTALLING=Installing...
INFO_INSTALLING_CONFIG_FILES=Installing frameworks configuration files configured for use with an IDE
INFO_INSTALLING_PLAYERGLOBAL_SWC=Installing Adobe Flash Player playerglobal.swc from: 
INFO_INVOKED_GUI_MODE=invoked in GUI mode
INFO_LICENSE_AGREEMENTS=License Agreements
INFO_NEED_TO_READ_AND_AGREE_TO_LICENSE=This installer will download software from multiple sites with various license agreements. Please click on each item on the left, read the license and confirm that you agree to the terms of each license by checking the checkbox next to it.
INFO_SELECT_AIR_FLASH_PLAYER=Select AIR and Flash Player versions.
INFO_SELECT_AIR=Select AIR version
INFO_SELECT_DIRECTORY=Select the directory where you want to install the Flex SDK
INFO_SELECT_DIRECTORY_INSTALL=Select installation directory
INFO_SELECT_FLASH=Select Flash Player version
INFO_SELECT_FLEX=Select Flex version
INFO_UNZIPPING=Uncompressing: 
INFO_VERIFY_FLEX_SDK_DONE=The Apache Flex SDK MD5 Signature of the downloaded files matches the reference. The file is valid.
INFO_WINDOW_TITLE=Install Apache Flex SDK {0} for use with your IDE
INSTALL_AGREE=I Agree, Install
INSTALL_AGREE_ALL=I agree to all options and licenses, Install
INSTALL_DISAGREE=I Disagree, Don't Install
SELECT_PATH_PROMPT=Where do you want to install the Apache Flex SDK?
STEP_SELECT_AIR_AND_FLASH_VERSION=Select AIR and Flash Player versions.
STEP_CREATE_DIRECTORIES=Create Directories
STEP_REQUIRED_INSTALL_APACHE_FLEX_SDK=Apache Flex SDK (Required)
STEP_REQUIRED_INSTALL_ADOBE_AIR_SDK=Adobe AIR SDK (Required)
STEP_REQUIRED_INSTALL_FLASH_PLAYER_GLOBAL_SWC=Adobe Flash Player playerglobal.swc (Required)
STEP_REQUIRED_INSTALL_SWFOBJECT=SWFObject (Required)
STEP_INSTALL_CONFIG_FILES=Install Framework Configuration Files
STEP_REQUIRED_INSTALL_OSMF=OSMF (Required)
STEP_REQUIRED_INSTALL_TLF=Adobe Text Layout Framework (Required)
STEP_REQUIRED_INSTALL_OFL_FONTS=Font Awesome and Lato Fonts (Required)
STEP_OPTIONAL_INSTALL_BLAZEDS=Remoting Support (Optional)
STEP_OPTIONAL_INSTALL_FONTSWF=Adobe Embedded Font Libraries and Utilities (Optional)
STEP_REQUIRED_UNZIP_AIR_RUNTIME_KIT=Uncompress Adobe AIR Runtime Kit
STEP_UNZIP_AIR_RUNTIME_KIT=Uncompress Adobe AIR Runtime Kit
STEP_UNZIP_FLEX_SDK=Uncompress Apache Flex SDK
STEP_VERIFY_FLEX_SDK=Verifying Apache Flex SDK MD5 Signature
LICENSE_APACHE_V2=Apache V2 License
LICENSE_URL_APACHE_V2=http://www.apache.org/licenses/LICENSE-2.0.html
LICENSE_ADOBE_SDK=Adobe Flex SDK License
LICENSE_URL_ADOBE_SDK=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
LICENSE_ADOBE_AIR_SDK=Adobe AIR SDK License
LICENSE_URL_ADOBE_AIR_SDK=http://www.adobe.com/products/air/sdk-eula.html
LICENSE_SWFOBJECT=MIT License
LICENSE_URL_SWFOBJECT=http://opensource.org/licenses/mit-license.php
LICENSE_OSMF=Mozilla Public License Version 1.1
LICENSE_URL_OSMF=http://www.mozilla.org/MPL/
LICENSE_TLF=Mozilla Public License Version 1.1
LICENSE_URL_TLF=http://www.mozilla.org/MPL/
LICENSE_FONTSWF=Adobe Flex SDK License
LICENSE_URL_FONTSWF=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
LICENSE_OFL_FONTS=SIL Open Font License
LICENSE_URL_OFL_FONTS=http://scripts.sil.org/OFL
LICENSE_BLAZEDS=Adobe Flex SDK License
LICENSE_URL_BLAZEDS=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
INFO_TRACKING=Anonymous usage statistics will be collected in accordance with our privacy policy.
INFO_VERSION=version
INFO_USING_CACHED_FILE=Using file from cache:
INFO_COULD_NOT_GRT_MD5=Unable to verify MD5 as MD5 is not valid. Trying to continue.