# Copyright (C) 2013 The Libphonenumber Authors

# Licensed 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.
#
# Source: Prefixes 60, 66 and 67 from Wikipedia, 69 from ITU.

22501|Moov
22502|Moov
22503|Moov
22504|MTN
22505|MTN
22506|MTN
22507|Orange
22508|Orange
22509|Orange
22540|Moov
22541|Moov
22542|Moov
22544|MTN
22545|MTN
22546|MTN
22547|Orange
22548|Orange
22549|Orange
22555|MTN
22557|Orange
22558|Orange
22559|Orange
22560|GreenN
22561|GreenN
22566|KoZ
22567|KoZ
22569|Aircom
