# This is the list of Vello's significant contributors.
#
# This does not necessarily list everyone who has contributed code,
# especially since many employees of one corporation may be contributing.
# To see the full list of contributors, see the revision history in
# source control.
Google LLC
Raph Levien
Chad Brokaw
Arman Uguray
Elias Naur
Daniel McNab
Spencer C. Imbleau
Bruce Mitchener
Tatsuyuki Ishi
Markus Siglreithmaier
Rose Hudson
Brian Merchant
Matt Rice
Kaur Kuut
