This is the repository of the Dart programming language and its associated
tools, libraries, and samples.

For license information, please see LICENSE.

You can find more about Dart online at http://dartlang.org or
http://code.google.com/p/dart.

Here's a brief guide to what's in here:

editor/        Eclipse-based standalone Dart IDE.
lib/           Libraries that ship with the Dart runtime (core, html, etc.).
pkg/           Packages that are not shipped with the core runtime.
runtime/       Dart VM and code for running it as a standalone app.
samples/       Sample Dart programs. 
tests/         Automated tests.
third_party/   External dependencies.
tools/         Build scripts, text editor support files, etc.
utils/         Utilities for Dart applications.
