# Names should be added to this file with this pattern:
#
# For individuals:
#   Name <email address>
#
# For organizations:
#   Organization <fnmatch pattern>
#
# See python fnmatch module documentation for more information.

Google Inc. <*@google.com>
HyperConnect Inc. <*@hpcnt.com>
IBM Inc. <*@*.ibm.com>
Loongson Technology Corporation Limited. <*@loongson.cn>
MIPS Technologies, Inc. <*@mips.com>
NVIDIA Corporation <*@nvidia.com>
OpenAI <*@openai.com>
Opera Software ASA <*@opera.com>
Red Hat Inc. <*@redhat.com>
The Chromium Authors <*@chromium.org>
Vewd Software AS <*@vewd.com>
Vivaldi Technologies AS <*@vivaldi.com>
Yandex LLC <*@yandex-team.ru>

Aleksei Khoroshilov <akhoroshilov@brave.com>
Alexis Menard <alexis.menard@intel.com>
Alfredo Mazzinghi <mzz.lrd@gmail.com>
Andrew Boyarshin <andrew.boyarshin@gmail.com>
Anuj Kumar Sharma <anujk.sharma@samsung.com>
DanCraft99 <simputest@gmail.com>
Evangelos Foutras <evangelos@foutrelis.com>
Gergely Nagy <ngg@ngg.hu>
Ilia K <ki.stfu@gmail.com>
Ivan Naydonov <samogot@gmail.com>
Joe Armstrong <joearmstrong334@gmail.com>
Julien Brianceau <jbriance@cisco.com>
Kal Conley <kcconley@gmail.com>
Kamil Rytarowski <krytarowski@gmail.com>
Ma Aiguo <maaiguo@uniontech.com>
Martijn Croonen <martijn@martijnc.be>
Matej Knopp <matej.knopp@gmail.com>
Matt Jolly <kangie@gentoo.org>
Michael Gilbert <floppymaster@gmail.com>
Milko Leporis <milko.leporis@imgtec.com>
Mohan Reddy <mohan.reddy@samsung.com>
Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Riku Voipio <riku.voipio@linaro.org>
Saikrishna Arcot <saiarcot895@gmail.com>
Stephan Hartmann <stha09@googlemail.com>
Tim Niederhausen <tim@rnc-ag.de>
Tomas Popela <tomas.popela@gmail.com>
Tripta Gupta <tripta.g@samsung.com>
Wink Saville <wink@saville.com>
Yuriy Taraday <yorik.sar@gmail.com>
Zhongwei Wang <carolwolfking@gmail.com>
Oleksandr Motsok <boramaabak@gmail.com>
Ihor Karavan <ihorkaravan96@gmail.com>
