# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
<dangogh@gmail.com> <daniel_kirkwood@cable.comcast.com>
<dangogh@gmail.com> <Daniel_Kirkwood@cable.comcast.com>
<dangogh@gmail.com> <dkirkw001c@cable.comcast.com>
<alficles@gmail.com> <Chris_Lemmons@comcast.com>
<hank.beatty@cox.com> <hbeatty@cts2-7.atl-mgmt.kabletown.test>
<hank.beatty@cox.com> <hbeatty@users.noreply.github.com>
<mtorluemke@apache.org> <mtorlu9137e@ip-eas-test.novalocal>
<mtorluemke@apache.org> <mtorlu9137e@markt-dev.cdnlab.comcast.net>
<mtorluemke@apache.org> <mark_torluemke@cable.comcast.com>
<smalenfant@apache.org> <smalenfant@users.noreply.github.com>
<smalenfant@apache.org> <steve.malenfant@cox.com>
<peter.w.ryder@gmail.com> <peryder@cisco.com>
<neuman@apache.org> <david_neuman2@cable.comcast.com>
<neuman@apache.org> <david.neuman64@gmail.com>
<mrdgelinas@gmail.com> <derek_gelinas@cable.comcast.com>
<mrdgelinas@gmail.com> <dgelin200@odol-dgtest-oswcdc-b.sys.comcast.net>
<dewrich@apache.org> <dewayne_richardson@cable.comcast.com>
<dewrich@apache.org> <dewrich@gmail.com>
<jvd@apache.org> <jvd@bigmac.local>
<jvd@apache.org> <jvd@knutsel.com>
<jvd@apache.org> <jan_vandoorn@cable.comcast.com>
<jeffrey_elsloo@cable.comcast.com> <elsloo@users.noreply.github.com>
<jrushford@apache.org> <John_Rushford@cable.comcast.com>
<mitchell852@gmail.com> <jeremy_mitchell2@cable.comcast.com>
<jackieheitzer@gmail.com> <jackie_heitzer@cable.comcast.com>
<friede@apache.org> <efriedri@cisco.com>
<friede@apache.org> <eric.friedrich84@gmail.com>
<friede@apache.org> <limited@users.noreply.github.com>
<nirsopher@gmail.com> <nirs@qwilt.com>
<lawrence_wickline@cable.comcast.com> <lwickline@users.noreply.github.com>
<yorma@cisco.com> <root@trafficstat1.x1.cdn.com>
<jhg03a@apache.org> <jhg03a@users.noreply.github.com>
<jhg03a@apache.org> <Jonathan_Gray@comcast.com>
<jhg03a@apache.org> <jonathan_gray@comcast.com>
<jhg03a@apache.org> <jhg03a@acu.edu>
