# Logs
logs
*.log

# Runtime data
pids
*.pid

# Pcap files
*.pcap

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directory
# Deployed apps should consider commenting this line out:
# see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git
node_modules

/.vagrant

# Potentially sensitive seed data
/seed/es
/seed/*.pcap

# temp files
/tmp
