//** github.com/18f/e-qip-prototype@v1.0.15 **//

{{Types "CC0-1.0"}}

((
As a work of the United States government, this project is in the
public domain within the United States.

Additionally, we waive copyright and related rights in the work
worldwide through the CC0 1.0 Universal public domain dedication.
))??

((
	CC0 1.0 Universal summary
||
	CC0 1.0 Universal (CC0 1.0)
	Public Domain Dedication
))

This is a human-readable summary of the Legal Code.
((
	(read the full text)](https://creativecommons.org/publicdomain/zero/1.0/legalcode).
||
	For the full text, visit:
	http://creativecommons.org/publicdomain/zero/1.0/
))

### No copyright

The person who associated a work with this deed has dedicated the work to
the public domain by waiving all
((of his or her))??
rights to the work worldwide
under copyright law, including all related and neighboring rights, to the
extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial
purposes, all without asking permission.

(( See Other Information below. ))??


### Other information

In no way are the patent or trademark rights of any person affected by CC0,
nor are the rights that other persons may have in the work or in how the
work is used, such as publicity or privacy rights.

Unless expressly stated otherwise, the person who associated a work with
this deed makes no warranties about the work, and disclaims liability for
all uses of the work, to the fullest extent permitted by applicable law.
When using or citing the work, you should not imply endorsement by the
author or the affirmer.
