Grant of License
----------------

By contributing to this repository, you and the company you represent, if the
company holds any copyrights in the contribution, grant to the W3C a perpetual,
non-exclusive, royalty-free, world-wide right and license under all of your
copyrights in this contribution to copy, publish, use, and modify the
contribution and to distribute the contribution under a BSD License or one with
more restrictive terms, as well as a right and license of the same scope to any
derivative works prepared by the W3C and based on or incorporating all or part
of the contribution. You further agree that any derivative works of this
contribution prepared by the W3C shall be solely owned by the W3C.

You state, to the best of your knowledge, that you, or the company you
represent, have all rights necessary to contribute the materials.

W3C will retain attribution of initial authorship to you. The W3C makes no
a-priori commitment to support or distribute contributions.

Disclaimer
----------

All content from this repository is provided as is, and W3C makes no
representations or warranties, express or implied, including, but not limited
to, warranties of merchantability, fitness for a particular purpose,
non-infringement, or title; nor that the contents of this repository are
suitable for any purpose. We make no representations, express or implied, that
the content of this repository or the use thereof indicates conformance to a
specification. All content is provided as-is to help reach interoperability.

Documentation
-------------

See [web-platform-tests.org](http://web-platform-tests.org/).
