# eclipse conf file
.settings
.classpath
.project
.manager
.scala_dependencies
.cache

# idea conf files
.idea
*.iml
*.ipr
*.iws

# building
target
null
tmp
temp
dist
test-output
build.log
release
out
gen
local.properties

#Apache Flex Projects
lib/
libs/
in/
swfobject/
flex2/
thirdparty/
META-INF/
tempDoc/
air/

*.pbj
*.vms
*.ser
*.mxp
bundles.properties
css_*.properties
FXGException_*.properties
FXGLog_*.properties
FABridge.js
frameworks/projects/spark/manifest.xml
env.properties
local.properties
packages.dita
rat.report
airsdk.xml

#OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
ipch/
obj/
[Dd]ebug*/
!debugger/
modules/debugger/classes/
modules/asc/build/java/classes/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#CVS files
.svn
.git

# Office Temp Files
~$*

#Binaries
*.dll
*.bin
*.com
*.exe
*.class
*.jar
*.swf
*.swc

#Compressed Files
*.zip
*.rar
*.tar

/asdoc-output/

#mustellarunner
*.patch
*.reply
mailbody.txt
gitstatus.txt

#AIR SDK
frameworks/projects/air/
runtimes/
templates/air/
samples/badge/
samples/icons/
templates/air/
templates/extensions/
templates/sdk/
install/android
AIR SDK Readme.txt
AIR SDK license.pdf
air-sdk-description.xml
samples/descriptor-sample.xml
include/FlashRuntimeExtensions.h
visualcomps

#FlexUnit tests
test-reports
FlexUnitCompilerApplication.mxml