Additional IP Rights Grant (Patents)

"This implementation" means the copyrightable works distributed by
Google as part of the webkit_inspection_protocol.dart Project.

Google hereby grants to you a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable (except as stated in this
section) patent license to make, have made, use, offer to sell, sell,
import, transfer, and otherwise run, modify and propagate the contents
of this implementation of Spark, where such license applies only to
those patent claims, both currently owned by Google and acquired in
the future, licensable by Google that are necessarily infringed by
this implementation of Spark. This grant does not include claims that
would be infringed only as a consequence of further modification of
this implementation. If you or your agent or exclusive licensee
institute or order or agree to the institution of patent litigation
against any entity (including a cross-claim or counterclaim in a
lawsuit) alleging that this implementation of Spark or any code
incorporated within this implementation of Spark constitutes direct or
contributory patent infringement, or inducement of patent
infringement, then any patent rights granted to you under this License
for this implementation of Spark shall terminate as of the date such
litigation is filed.
