# This is the official list of Skia authors for copyright purposes.
#
# Names should be added to this file with one of the following patterns:
#
# For individual contributors:
# Name <email address>
#
# For corporate contributors:
# Organization <fnmatch pattern>
# See examples below or python fnmatch module documentation for more information.
#
# Please keep the list sorted alphabetically.

Aaron O'Mullan <aaron.omullan@gmail.com>
ACCESS CO., LTD. <*@access-company.com>
Amazon, Inc <*@amazon.com>
Anthony Catel <paraboul@gmail.com>
ARM <*@arm.com>
Bharat Ahuja <ahujabharat93@gmail.com>
Casey Banner <kcbanner@gmail.com>
Dawson Coleman <dawsonmcoleman@gmail.com>
Deepak Mohan <hop2deep@gmail.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Facebook, Inc. <*fb.com>
George Wright <george@mozilla.com>
GiWan Go <gogil@stealien.com>
Google Inc. <*@google.com>
Herb Derby <herbderby@gmail.com>
Igalia <*@igalia.com>
Intel <*@intel.com>
Ion Rosca <rosca@adobe.com>
Jacek Caban <cjacek@gmail.com>
James Clarke <james@clarkezone.io>
Jeff Muizelaar <jmuizelaar@mozilla.com>
Jongdeok Kim <jongdeok.kim@navercorp.com>
Lee Salzman <lsalzman@mozilla.com>
Marcin Kazmierczak <mar.kazmierczak@gmail.com>
Matthew Leibowitz <mattleibow@live.com>
Microsoft <*@microsoft.com>
MIPS <*@imgtec.com>
Ning Liu <ningliu@invisionapp.com>
Noah Lavine <noah.b.lavine@gmail.com>
NVIDIA <*@nvidia.com>
Opera Software ASA <*@opera.com>
Pavel Krajcevski <pavel@cs.unc.edu>
Petar Kirov <petar.p.kirov@gmail.com>
Raul Tambre <raul@tambre.ee>
Samsung <*@samsung.com>
Samsung Open Source Group <*@osg.samsung.com>
Sergey Melnikov <Melnikov.Sergey.V@gmail.com>
Shachar Langbeheim <nihohit@gmail.com>
Skia <*@skia.org>
Skia Buildbots <skia.buildbots@gmail.com>
Sony Mobile Communications Inc. <*@sonymobile.com>
Stephan Hartmann <stha09@googlemail.com>
Steve Singer <steve@ssinger.info>
Sylvestre Ledru <sylvestre.ledru@gmail.com>
The Chromium Authors <*@chromium.org>
Thiago Fransosi Farina <thiago.farina@gmail.com>
Jose Mayol <jei.mayol@gmail.com>
Linaro <*@linaro.org>
Christian Plesner Hansen <plesner@t.undra.org>
Marco Alesiani <marco.diiga@gmail.com>
Adobe Systems Incorporated <*@adobe.com>
Yandex LLC <*@yandex-team.ru>
Kaloyan Donev <kdonev@gmail.com>
Yong-Hwan Baek <meisterdevhwan@gmail.com>
Alexander Khovansky <alx.khovansky@gmail.com>
Zhuo Qingliang <zhuo.dev@gmail.com>
Mainframe North <*@mainframe.co.uk>
JetBrains <*@jetbrains.com>
Vibe Inc <*@vibe.us>
Scene Group Ltd. <*@scenegroup.co>