# 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.

# http://www.itu.int/oth/T0202000021/en

22660|Telmob
22661|Telmob
22662|Telmob
226630|Telmob
226631|Telmob
226632|Telmob
226633|Telmob
22664|Airtel
22665|Airtel
22666|Airtel
226680|Telecel Faso
226681|Telecel Faso
226682|Telecel Faso
226683|Telecel Faso
226684|Telecel Faso
226685|Telecel Faso
22670|Telmob
22671|Telmob
22672|Telmob
22673|Telmob
22674|Airtel
22675|Airtel
22676|Airtel
22677|Airtel
22678|Telecel Faso
22679|Telecel Faso
