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

86130|China Unicom
86131|China Unicom
86132|China Unicom
86133|China Telcom
86134|China Mobile
86135|China Mobile
86136|China Mobile
86137|China Mobile
86138|China Mobile
86139|China Mobile
86150|China Mobile
86151|China Mobile
86153|China Telcom
86156|China Unicom
86157|China Mobile
86158|China Mobile
86159|China Mobile
86180|China Telcom
86185|China Unicom
86186|China Unicom
86187|China Mobile
86188|China Mobile
86189|China Telcom
