Browse Source

Merge branch 'master' into master

pull/3359/head
Tijana Vislavski Gradina 1 year ago
committed by GitHub
parent
commit
0bfe45c49d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
564 changed files with 85229 additions and 98076 deletions
  1. +64
    -0
      .github/dependabot.yml
  2. +40
    -0
      .github/workflows/cpp-unit-test.yml
  3. +0
    -0
      .github/workflows/java-unit-test.yml
  4. +54
    -0
      .github/workflows/osv-scanner-unified.yml
  5. +4
    -4
      .github/workflows/scorecards.yml
  6. +5
    -0
      .gitignore
  7. +1
    -1
      FALSEHOODS.md
  8. +1
    -12
      FAQ.md
  9. +3
    -2
      README.md
  10. +480
    -480
      cpp/src/phonenumbers/alternate_format.cc
  11. +6
    -1
      cpp/src/phonenumbers/asyoutypeformatter.h
  12. +4
    -2
      cpp/src/phonenumbers/base/synchronization/lock_posix.h
  13. +7
    -3
      cpp/src/phonenumbers/geocoding/area_code_map.h
  14. +9
    -5
      cpp/src/phonenumbers/geocoding/default_map_storage.h
  15. +4
    -2
      cpp/src/phonenumbers/geocoding/mapping_file_provider.h
  16. +5
    -1
      cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.h
  17. +12507
    -12039
      cpp/src/phonenumbers/lite_metadata.cc
  18. +12470
    -11996
      cpp/src/phonenumbers/metadata.cc
  19. +4
    -1
      cpp/src/phonenumbers/phonenumbermatch.h
  20. +22
    -7
      cpp/src/phonenumbers/phonenumberutil.cc
  21. +5
    -2
      cpp/src/phonenumbers/phonenumberutil.h
  22. +5
    -1
      cpp/src/phonenumbers/regex_based_matcher.h
  23. +9
    -3
      cpp/src/phonenumbers/regexp_adapter_icu.cc
  24. +4
    -1
      cpp/src/phonenumbers/regexp_cache.h
  25. +3620
    -3593
      cpp/src/phonenumbers/short_metadata.cc
  26. +5
    -2
      cpp/src/phonenumbers/shortnumberinfo.h
  27. +1
    -1
      cpp/src/phonenumbers/stringutil.cc
  28. +1
    -1
      cpp/src/phonenumbers/stringutil.h
  29. +5
    -2
      cpp/test/phonenumbers/asyoutypeformatter_test.cc
  30. +11
    -2
      cpp/test/phonenumbers/phonenumberutil_test.cc
  31. +5
    -2
      cpp/test/phonenumbers/shortnumberinfo_test.cc
  32. +2
    -1
      java/build.xml
  33. +21
    -13
      java/carrier/pom.xml
  34. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1441_en
  35. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1473_en
  36. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1671_en
  37. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/220_en
  38. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/221_en
  39. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/226_en
  40. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/228_en
  41. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/229_en
  42. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en
  43. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/231_en
  44. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/234_en
  45. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/235_en
  46. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/237_en
  47. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/243_en
  48. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/244_en
  49. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/255_en
  50. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/256_en
  51. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/262_en
  52. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/263_en
  53. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/27_en
  54. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/32_en
  55. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/33_en
  56. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/34_en
  57. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/351_en
  58. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/355_en
  59. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/372_en
  60. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_en
  61. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_ru
  62. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/376_en
  63. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/380_en
  64. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/380_uk
  65. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/385_en
  66. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/40_en
  67. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/41_en
  68. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/420_en
  69. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/423_en
  70. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/44_en
  71. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/45_en
  72. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/46_en
  73. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/47_en
  74. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/48_en
  75. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/508_en
  76. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/51_en
  77. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/57_en
  78. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/590_en
  79. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/591_en
  80. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/592_en
  81. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/594_en
  82. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/596_en
  83. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/61_en
  84. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/64_en
  85. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/65_en
  86. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/673_en
  87. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/675_en
  88. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/676_en
  89. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/677_en
  90. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/691_en
  91. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/692_en
  92. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/81_en
  93. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/84_en
  94. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_en
  95. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_zh
  96. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/856_en
  97. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/880_en
  98. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/963_en
  99. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/972_en
  100. BIN
      java/carrier/src/com/google/i18n/phonenumbers/carrier/data/977_en

+ 64
- 0
.github/dependabot.yml View File

@ -4,78 +4,142 @@ updates:
directory: /
schedule:
interval: monthly
groups:
github-actions:
patterns:
- "*"
- package-ecosystem: maven
directory: /java/carrier
schedule:
interval: monthly
groups:
java-carrier:
patterns:
- "*"
- package-ecosystem: maven
directory: /java/demo
schedule:
interval: monthly
groups:
java-demo:
patterns:
- "*"
- package-ecosystem: maven
directory: /java/geocoder
schedule:
interval: monthly
groups:
geocoder:
patterns:
- "*"
- package-ecosystem: maven
directory: /java/internal/prefixmapper
schedule:
interval: monthly
groups:
prefixmapper:
patterns:
- "*"
- package-ecosystem: maven
directory: /java/libphonenumber
schedule:
interval: monthly
groups:
java-libphonenumber:
patterns:
- "*"
- package-ecosystem: maven
directory: /java
schedule:
interval: monthly
groups:
java:
patterns:
- "*"
- package-ecosystem: maven
directory: /metadata
schedule:
interval: monthly
groups:
metadata:
patterns:
- "*"
- package-ecosystem: maven
directory: /migrator/migrator-servlet
schedule:
interval: monthly
groups:
migrator-servlet:
patterns:
- "*"
- package-ecosystem: maven
directory: /migrator
schedule:
interval: monthly
groups:
migrator:
patterns:
- "*"
- package-ecosystem: maven
directory: /
schedule:
interval: monthly
groups:
root:
patterns:
- "*"
- package-ecosystem: maven
directory: /tools/java/common
schedule:
interval: monthly
groups:
tools-java-common:
patterns:
- "*"
- package-ecosystem: maven
directory: /tools/java/cpp-build
schedule:
interval: monthly
groups:
tools-java-cpp-build:
patterns:
- "*"
- package-ecosystem: maven
directory: /tools/java/data
schedule:
interval: monthly
groups:
tools-java-data:
patterns:
- "*"
- package-ecosystem: maven
directory: /tools/java/java-build
schedule:
interval: monthly
groups:
java-build:
patterns:
- "*"
- package-ecosystem: maven
directory: /tools/java
schedule:
interval: monthly
groups:
tools-java:
patterns:
- "*"

+ 40
- 0
.github/workflows/cpp-unit-test.yml View File

@ -0,0 +1,40 @@
# This workflow builds and unit tests both main C++ API and also build/data tools for metadata generation.
name: Testing C++ API
on: pull_request
permissions:
contents: read
jobs:
cpp-test:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
- name: Set up C++ environment
run: |
sudo apt-get install \
cmake cmake-curses-gui libprotobuf-dev libgtest-dev libre2-dev \
libicu-dev libboost-dev libboost-thread-dev libboost-system-dev \
protobuf-compiler
- name: Build C++
run: |
cd cpp
mkdir build
cd build
cmake ..
make
- name: Test C++ Build Tools
run: |
./cpp/build/tools/generate_geocoding_data_test
- name: Test C++ API
run: |
./cpp/build/libphonenumber_test

.github/workflows/unit-test.yml → .github/workflows/java-unit-test.yml View File


+ 54
- 0
.github/workflows/osv-scanner-unified.yml View File

@ -0,0 +1,54 @@
# Copyright 2024 Google LLC
#
# 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.
name: OSV-Scanner
on:
pull_request:
branches: ["master"]
schedule:
- cron: "12 12 * * 1"
push:
branches: ["master"]
permissions:
# Required to upload SARIF file to CodeQL. See: https://github.com/github/codeql-action/issues/2117
actions: read
# Require writing security events to upload SARIF file to security tab
security-events: write
# Read commit contents
contents: read
jobs:
scan-scheduled:
if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
# If you want to copy this config, highly suggest pinning this version to a release rather than tracking the main branch
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@8bd1ce1c4be9d98053ffd9e6e14585276a36762c" # v1.9.1
with:
# Just scan the root directory and docs, since everything else is fixtures
scan-args: |-
-r
--skip-git
./
scan-pr:
if: ${{ github.event_name == 'pull_request' || github.event_name == 'merge_group' }}
# If you want to copy this config, highly suggest pinning this version to a release rather than tracking the main branch
uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable-pr.yml@8bd1ce1c4be9d98053ffd9e6e14585276a36762c" # v1.9.1
with:
# Just scan the root directory and docs, since everything else is fixtures
scan-args: |-
-r
--skip-git
./

+ 4
- 4
.github/workflows/scorecards.yml View File

@ -36,12 +36,12 @@ jobs:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: "Checkout code"
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@99c53751e09b9529366343771cc321ec74e9bd3d # v2.0.6
uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
with:
results_file: results.sarif
results_format: sarif
@ -63,7 +63,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: SARIF file
path: results.sarif
@ -71,6 +71,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@5b6282e01c62d02e720b81eb8a51204f527c3624 # v2.21.3
uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6
with:
sarif_file: results.sarif

+ 5
- 0
.gitignore View File

@ -0,0 +1,5 @@
target/
!tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
build/
lib/
generated/

+ 1
- 1
FALSEHOODS.md View File

@ -249,7 +249,7 @@ surprising how many false assumptions programmers continue to make about them.
countries a leading 0 is significant and forms part of the number itself
(see *A leading zero in numbers formatted for domestic usage can always be
discarded when dialing from abroad*). Moreover, a phone number may contain
other diallable characters (see *Phone numbers contain only digits*) or an
other dialable characters (see *Phone numbers contain only digits*) or an
extension portion, dialled after waiting for a tone.
**Tip:** Use the library to parse and format numbers to handle this


+ 1
- 12
FAQ.md View File

@ -362,20 +362,9 @@ right thing if the phone number object is as intended.
@Mexico,
Mexico used to have such additional prefixes (1, 02, 045, ...) for dialling
mobile numbers internationally, fixed-line to mobile nationally.. As these
dialling patterns were deprecated, we have continued to maintain mobile and
dialling patterns were deprecated, we removed them but still maintain mobile and
fixed-line ranges at higher level, returning type as [`FIXED_LINE_OR_MOBILE`](#fixed_line_or_mobile)
### <a href="#mx_legacy_formats">Why Mexico (MX) numbers in older dialling formats are accepted as valid ones?</a>
Though library has stopped supporting below older dialling codes in the canonical
form and formatting results, we are lenient in parsing the number, i.e removing
all older codes.
- 1 -> in E.164 international diallings
- 01, 02, 044 and 045 -> for local/national diallings
This is because we found the older dialling codes supported even after deprecation
period, so we decided to support them for longer time. However, we will stop this as
part of [this issue](https://issuetracker.google.com/issues/205606725). More details there.
### <a name="#unsupported_regions">Why are Bouvet Island (BV), Pitcairn Island (PN), Antarctica (AQ) etc. not supported?</a>
We only support a country if:


+ 3
- 2
README.md View File

@ -55,7 +55,7 @@ Cream Sandwich).
The [Java demo](https://libphonenumber.appspot.com/) is updated with a slight
delay after the GitHub release.
Last demo update: v8.13.27.
Last demo update: v8.13.51.
Note: Even though the library (main branch/[maven release](https://repo1.maven.org/maven2/com/googlecode/libphonenumber/libphonenumber/8.12.56/))
is at v8.12.57, because of some deployment issues, we were unable to update the
@ -246,7 +246,8 @@ maintenance processes.
* R: https://github.com/socialresearchcentre/dialr/
* Elixir: https://github.com/socialpaymentsbv/ex_phone_number
* Salesforce: https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000G12oJUAR
* Dart: https://github.com/superakabo/dlibphonenumber
Alternatives to our own versions:
* Android-optimized: Our Java version loads the metadata from


+ 480
- 480
cpp/src/phonenumbers/alternate_format.cc
File diff suppressed because it is too large
View File


+ 6
- 1
cpp/src/phonenumbers/asyoutypeformatter.h View File

@ -52,6 +52,11 @@ class PhoneNumberUtil;
class AsYouTypeFormatter {
public:
// This type is neither copyable nor movable.
AsYouTypeFormatter(const AsYouTypeFormatter&) = delete;
AsYouTypeFormatter& operator=(const AsYouTypeFormatter&) = delete;
~AsYouTypeFormatter() {}
// Formats a phone number on-the-fly as each digit is entered.
@ -233,7 +238,7 @@ class AsYouTypeFormatter {
// Disallow copy and assign since this class uses RegExpCache which can't be
// copied.
DISALLOW_COPY_AND_ASSIGN(AsYouTypeFormatter);
};
} // namespace phonenumbers


+ 4
- 2
cpp/src/phonenumbers/base/synchronization/lock_posix.h View File

@ -33,6 +33,10 @@ class Lock {
DCHECK_EQ(0, ret);
}
// This type is neither copyable nor movable.
Lock(const Lock&) = delete;
Lock& operator=(const Lock&) = delete;
~Lock() {
const int ret = pthread_mutex_destroy(&mutex_);
(void) ret;
@ -52,8 +56,6 @@ class Lock {
}
private:
DISALLOW_COPY_AND_ASSIGN(Lock);
mutable pthread_mutex_t mutex_;
};


+ 7
- 3
cpp/src/phonenumbers/geocoding/area_code_map.h View File

@ -17,6 +17,7 @@
#ifndef I18N_PHONENUMBERS_AREA_CODE_MAP_H_
#define I18N_PHONENUMBERS_AREA_CODE_MAP_H_
#include <cstdint>
#include <map>
#include <string>
@ -39,6 +40,11 @@ struct PrefixDescriptions;
class AreaCodeMap {
public:
AreaCodeMap();
// This type is neither copyable nor movable.
AreaCodeMap(const AreaCodeMap&) = delete;
AreaCodeMap& operator=(const AreaCodeMap&) = delete;
~AreaCodeMap();
// Returns the description of the geographical area the number corresponds
@ -61,12 +67,10 @@ class AreaCodeMap {
// (inclusive). Returns the position if {@code value} is found; otherwise,
// returns the position which has the largest value that is less than value.
// This means if value is the smallest, -1 will be returned.
int BinarySearch(int start, int end, int64 value) const;
int BinarySearch(int start, int end, int64_t value) const;
const PhoneNumberUtil& phone_util_;
scoped_ptr<const DefaultMapStorage> storage_;
DISALLOW_COPY_AND_ASSIGN(AreaCodeMap);
};
} // namespace phonenumbers


+ 9
- 5
cpp/src/phonenumbers/geocoding/default_map_storage.h View File

@ -19,6 +19,7 @@
#ifndef I18N_PHONENUMBERS_DEFAULT_MAP_STORAGE_H_
#define I18N_PHONENUMBERS_DEFAULT_MAP_STORAGE_H_
#include <cstdint>
#include "phonenumbers/base/basictypes.h"
namespace i18n {
@ -33,10 +34,15 @@ struct PrefixDescriptions;
class DefaultMapStorage {
public:
DefaultMapStorage();
// This type is neither copyable nor movable.
DefaultMapStorage(const DefaultMapStorage&) = delete;
DefaultMapStorage& operator=(const DefaultMapStorage&) = delete;
virtual ~DefaultMapStorage();
// Returns the phone number prefix located at the provided index.
int32 GetPrefix(int index) const;
int32_t GetPrefix(int index) const;
// Gets the description corresponding to the phone number prefix located
// at the provided index. If the description is not available in the current
@ -59,15 +65,13 @@ class DefaultMapStorage {
private:
// Sorted sequence of phone number prefixes.
const int32* prefixes_;
const int32_t* prefixes_;
int prefixes_size_;
// Sequence of prefix descriptions, in the same order than prefixes_.
const char** descriptions_;
// Sequence of unique possible lengths in ascending order.
const int32* possible_lengths_;
const int32_t* possible_lengths_;
int possible_lengths_size_;
DISALLOW_COPY_AND_ASSIGN(DefaultMapStorage);
};
} // namespace phonenumbers


+ 4
- 2
cpp/src/phonenumbers/geocoding/mapping_file_provider.h View File

@ -44,6 +44,10 @@ class MappingFileProvider {
int country_calling_code_size,
country_languages_getter get_country_languages);
// This type is neither copyable nor movable.
MappingFileProvider(const MappingFileProvider&) = delete;
MappingFileProvider& operator=(const MappingFileProvider&) = delete;
// Returns the name of the file that contains the mapping data for the
// country_calling_code in the language specified, or an empty string if no
// such file can be found.
@ -68,8 +72,6 @@ class MappingFileProvider {
const int* const country_calling_codes_;
const int country_calling_codes_size_;
const country_languages_getter get_country_languages_;
DISALLOW_COPY_AND_ASSIGN(MappingFileProvider);
};
} // namespace phonenumbers


+ 5
- 1
cpp/src/phonenumbers/geocoding/phonenumber_offline_geocoder.h View File

@ -61,6 +61,11 @@ class PhoneNumberOfflineGeocoder {
int prefix_language_code_pairs_size,
prefix_descriptions_getter get_prefix_descriptions);
// This type is neither copyable nor movable.
PhoneNumberOfflineGeocoder(const PhoneNumberOfflineGeocoder&) = delete;
PhoneNumberOfflineGeocoder& operator=(const PhoneNumberOfflineGeocoder&) =
delete;
virtual ~PhoneNumberOfflineGeocoder();
// Returns a text description for the given phone number, in the language
@ -164,7 +169,6 @@ class PhoneNumberOfflineGeocoder {
// phone prefix map that has been loaded.
mutable absl::Mutex mu_;
mutable AreaCodeMaps available_maps_ ABSL_GUARDED_BY(mu_);
DISALLOW_COPY_AND_ASSIGN(PhoneNumberOfflineGeocoder);
};
} // namespace phonenumbers


+ 12507
- 12039
cpp/src/phonenumbers/lite_metadata.cc
File diff suppressed because it is too large
View File


+ 12470
- 11996
cpp/src/phonenumbers/metadata.cc
File diff suppressed because it is too large
View File


+ 4
- 1
cpp/src/phonenumbers/phonenumbermatch.h View File

@ -74,6 +74,10 @@ class PhoneNumberMatch {
// Default constructor.
PhoneNumberMatch();
// This type is neither copyable nor movable.
PhoneNumberMatch(const PhoneNumberMatch&) = delete;
PhoneNumberMatch& operator=(const PhoneNumberMatch&) = delete;
~PhoneNumberMatch() {}
// Returns the phone number matched by the receiver.
@ -116,7 +120,6 @@ class PhoneNumberMatch {
// The matched phone number.
PhoneNumber number_;
DISALLOW_COPY_AND_ASSIGN(PhoneNumberMatch);
};
} // namespace phonenumbers


+ 22
- 7
cpp/src/phonenumbers/phonenumberutil.cc View File

@ -75,7 +75,7 @@ const char PhoneNumberUtil::kPlusChars[] = "+\xEF\xBC\x8B"; /* "++" */
// unicode character.
// static
const char PhoneNumberUtil::kValidPunctuation[] =
/* "-x‐-―−ー--/  ­<U+200B><U+2060> ()()[].\\[\\]/~⁓∼" */
/* "-x‐-―−ー--/ ­<U+200B><U+2060> ()()[].\\[\\]/~⁓∼" */
"-x\xE2\x80\x90-\xE2\x80\x95\xE2\x88\x92\xE3\x83\xBC\xEF\xBC\x8D-\xEF\xBC"
"\x8F \xC2\xA0\xC2\xAD\xE2\x80\x8B\xE2\x81\xA0\xE3\x80\x80()\xEF\xBC\x88"
"\xEF\xBC\x89\xEF\xBC\xBB\xEF\xBC\xBD.\\[\\]/~\xE2\x81\x93\xE2\x88\xBC";
@ -619,6 +619,7 @@ class PhoneNumberRegExpsAndMappings {
}
mobile_token_mappings_.insert(std::make_pair(54, '9'));
countries_without_national_prefix_with_area_codes_.insert(52); // Mexico
geo_mobile_countries_without_mobile_area_codes_.insert(86); // China
geo_mobile_countries_.insert(52); // Mexico
geo_mobile_countries_.insert(54); // Argentina
@ -689,6 +690,10 @@ class PhoneNumberRegExpsAndMappings {
// the length of the mobile token.
std::map<int, char> mobile_token_mappings_;
// Set of country codes that doesn't have national prefix, but it has area
// codes.
std::set<int> countries_without_national_prefix_with_area_codes_;
// Set of country codes that have geographically assigned mobile numbers (see
// geo_mobile_countries_ below) which are not based on *area codes*. For
// example, in China mobile numbers start with a carrier indicator, and beyond
@ -795,6 +800,7 @@ class PhoneNumberRegExpsAndMappings {
alpha_phone_mappings_(),
all_plus_number_grouping_symbols_(),
mobile_token_mappings_(),
countries_without_national_prefix_with_area_codes_(),
geo_mobile_countries_without_mobile_area_codes_(),
geo_mobile_countries_(),
single_international_prefix_(regexp_factory_->CreateRegExp(
@ -842,8 +848,10 @@ class PhoneNumberRegExpsAndMappings {
InitializeMapsAndSets();
}
private:
DISALLOW_COPY_AND_ASSIGN(PhoneNumberRegExpsAndMappings);
// This type is neither copyable nor movable.
PhoneNumberRegExpsAndMappings(const PhoneNumberRegExpsAndMappings&) = delete;
PhoneNumberRegExpsAndMappings& operator=(
const PhoneNumberRegExpsAndMappings&) = delete;
};
// Private constructor. Also takes care of initialisation.
@ -2674,15 +2682,22 @@ int PhoneNumberUtil::GetLengthOfGeographicalAreaCode(
if (!metadata) {
return 0;
}
PhoneNumberType type = GetNumberType(number);
int country_calling_code = number.country_code();
// If a country doesn't use a national prefix, and this number doesn't have an
// Italian leading zero, we assume it is a closed dialling plan with no area
// codes.
if (!metadata->has_national_prefix() && !number.italian_leading_zero()) {
// Note:this is our general assumption, but there are exceptions which are
// tracked in COUNTRIES_WITHOUT_NATIONAL_PREFIX_WITH_AREA_CODES.
if (!metadata->has_national_prefix() && !number.italian_leading_zero() &&
reg_exps_->countries_without_national_prefix_with_area_codes_.find(
country_calling_code) ==
reg_exps_->countries_without_national_prefix_with_area_codes_.end()) {
return 0;
}
PhoneNumberType type = GetNumberType(number);
int country_calling_code = number.country_code();
if (type == PhoneNumberUtil::MOBILE &&
reg_exps_->geo_mobile_countries_without_mobile_area_codes_.find(
country_calling_code) !=
@ -3270,4 +3285,4 @@ bool PhoneNumberUtil::CanBeInternationallyDialled(
}
} // namespace phonenumbers
} // namespace i18n
} // namespace i18n

+ 5
- 2
cpp/src/phonenumbers/phonenumberutil.h View File

@ -68,6 +68,10 @@ class PhoneNumberUtil : public Singleton<PhoneNumberUtil> {
friend class Singleton<PhoneNumberUtil>;
public:
// This type is neither copyable nor movable.
PhoneNumberUtil(const PhoneNumberUtil&) = delete;
PhoneNumberUtil& operator=(const PhoneNumberUtil&) = delete;
~PhoneNumberUtil();
static const char kRegionCodeForNonGeoEntity[];
@ -970,10 +974,9 @@ class PhoneNumberUtil : public Singleton<PhoneNumberUtil> {
bool IsShorterThanPossibleNormalNumber(const PhoneMetadata* country_metadata,
const string& number) const;
DISALLOW_COPY_AND_ASSIGN(PhoneNumberUtil);
};
} // namespace phonenumbers
} // namespace i18n
#endif // I18N_PHONENUMBERS_PHONENUMBERUTIL_H_
#endif // I18N_PHONENUMBERS_PHONENUMBERUTIL_H_

+ 5
- 1
cpp/src/phonenumbers/regex_based_matcher.h View File

@ -35,6 +35,11 @@ class RegExpCache;
class RegexBasedMatcher : public MatcherApi {
public:
RegexBasedMatcher();
// This type is neither copyable nor movable.
RegexBasedMatcher(const RegexBasedMatcher&) = delete;
RegexBasedMatcher& operator=(const RegexBasedMatcher&) = delete;
~RegexBasedMatcher();
bool MatchNationalNumber(const string& number,
@ -48,7 +53,6 @@ class RegexBasedMatcher : public MatcherApi {
const scoped_ptr<const AbstractRegExpFactory> regexp_factory_;
const scoped_ptr<RegExpCache> regexp_cache_;
DISALLOW_COPY_AND_ASSIGN(RegexBasedMatcher);
};
} // namespace phonenumbers


+ 9
- 3
cpp/src/phonenumbers/regexp_adapter_icu.cc View File

@ -69,6 +69,11 @@ class IcuRegExpInput : public RegExpInput {
: utf8_input_(Utf8StringToUnicodeString(utf8_input)),
position_(0) {}
// This type is neither copyable nor movable.
IcuRegExpInput(const IcuRegExpInput&) = delete;
IcuRegExpInput& operator=(const IcuRegExpInput&) = delete;
virtual ~IcuRegExpInput() {}
virtual string ToString() const {
@ -95,7 +100,6 @@ class IcuRegExpInput : public RegExpInput {
UnicodeString utf8_input_;
int position_;
DISALLOW_COPY_AND_ASSIGN(IcuRegExpInput);
};
// ICU implementation of the RegExp abstract class.
@ -113,6 +117,10 @@ class IcuRegExp : public RegExp {
}
}
// This type is neither copyable nor movable.
IcuRegExp(const IcuRegExp&) = delete;
IcuRegExp& operator=(const IcuRegExp&) = delete;
virtual ~IcuRegExp() {}
virtual bool Consume(RegExpInput* input_string,
@ -223,8 +231,6 @@ class IcuRegExp : public RegExp {
private:
scoped_ptr<RegexPattern> utf8_regexp_;
DISALLOW_COPY_AND_ASSIGN(IcuRegExp);
};
RegExpInput* ICURegExpFactory::CreateInput(const string& utf8_input) const {


+ 4
- 1
cpp/src/phonenumbers/regexp_cache.h View File

@ -59,6 +59,10 @@ class RegExpCache {
public:
explicit RegExpCache(const AbstractRegExpFactory& regexp_factory,
size_t min_items);
// This type is neither copyable nor movable.
RegExpCache(const RegExpCache&) = delete;
RegExpCache& operator=(const RegExpCache&) = delete;
~RegExpCache();
const RegExp& GetRegExp(const string& pattern);
@ -68,7 +72,6 @@ class RegExpCache {
Lock lock_; // protects cache_impl_
scoped_ptr<CacheImpl> cache_impl_; // protected by lock_
friend class RegExpCacheTest_CacheConstructor_Test;
DISALLOW_COPY_AND_ASSIGN(RegExpCache);
};
} // namespace phonenumbers


+ 3620
- 3593
cpp/src/phonenumbers/short_metadata.cc
File diff suppressed because it is too large
View File


+ 5
- 2
cpp/src/phonenumbers/shortnumberinfo.h View File

@ -45,6 +45,11 @@ class PhoneNumberUtil;
class ShortNumberInfo {
public:
ShortNumberInfo();
// This type is neither copyable nor movable.
ShortNumberInfo(const ShortNumberInfo&) = delete;
ShortNumberInfo& operator=(const ShortNumberInfo&) = delete;
~ShortNumberInfo();
// Cost categories of short numbers.
@ -206,8 +211,6 @@ class ShortNumberInfo {
bool MatchesEmergencyNumberHelper(const string& number,
const string& region_code,
bool allow_prefix_match) const;
DISALLOW_COPY_AND_ASSIGN(ShortNumberInfo);
};
} // namespace phonenumbers


+ 1
- 1
cpp/src/phonenumbers/stringutil.cc View File

@ -293,4 +293,4 @@ void StrAppend(string* dest, const StringHolder& s1, const StringHolder& s2,
}
} // namespace phonenumbers
} // namespace i18n
} // namespace i18n

+ 1
- 1
cpp/src/phonenumbers/stringutil.h View File

@ -199,4 +199,4 @@ void StrAppend(string* dest, const StringHolder& s1, const StringHolder& s2,
} // namespace phonenumbers
} // namespace i18n
#endif // I18N_PHONENUMBERS_STRINGUTIL_H_
#endif // I18N_PHONENUMBERS_STRINGUTIL_H_

+ 5
- 2
cpp/test/phonenumbers/asyoutypeformatter_test.cc View File

@ -34,6 +34,11 @@ namespace phonenumbers {
class PhoneMetadata;
class AsYouTypeFormatterTest : public testing::Test {
public:
// This type is neither copyable nor movable.
AsYouTypeFormatterTest(const AsYouTypeFormatterTest&) = delete;
AsYouTypeFormatterTest& operator=(const AsYouTypeFormatterTest&) = delete;
protected:
AsYouTypeFormatterTest() : phone_util_(*PhoneNumberUtil::GetInstance()) {
PhoneNumberUtil::GetInstance()->SetLogger(new StdoutLogger());
@ -55,8 +60,6 @@ class AsYouTypeFormatterTest : public testing::Test {
scoped_ptr<AsYouTypeFormatter> formatter_;
string result_;
private:
DISALLOW_COPY_AND_ASSIGN(AsYouTypeFormatterTest);
};
TEST_F(AsYouTypeFormatterTest, ConvertUnicodeStringPosition) {


+ 11
- 2
cpp/test/phonenumbers/phonenumberutil_test.cc View File

@ -49,6 +49,11 @@ using google::protobuf::RepeatedPtrField;
static const int kInvalidCountryCode = 2;
class PhoneNumberUtilTest : public testing::Test {
public:
// This type is neither copyable nor movable.
PhoneNumberUtilTest(const PhoneNumberUtilTest&) = delete;
PhoneNumberUtilTest& operator=(const PhoneNumberUtilTest&) = delete;
protected:
PhoneNumberUtilTest() : phone_util_(*PhoneNumberUtil::GetInstance()) {
PhoneNumberUtil::GetInstance()->SetLogger(new StdoutLogger());
@ -120,8 +125,6 @@ class PhoneNumberUtilTest : public testing::Test {
const PhoneNumberUtil& phone_util_;
private:
DISALLOW_COPY_AND_ASSIGN(PhoneNumberUtilTest);
};
TEST_F(PhoneNumberUtilTest, ContainsOnlyValidDigits) {
@ -1462,6 +1465,12 @@ TEST_F(PhoneNumberUtilTest, GetLengthOfGeographicalAreaCode) {
number.set_national_number(uint64{293744000});
EXPECT_EQ(1, phone_util_.GetLengthOfGeographicalAreaCode(number));
// Mexico numbers - there is no national prefix, but it still has an area
// code.
number.set_country_code(52);
number.set_national_number(uint64_t{3312345678});
EXPECT_EQ(2, phone_util_.GetLengthOfGeographicalAreaCode(number));
// Italian numbers - there is no national prefix, but it still has an area
// code.
number.set_country_code(39);


+ 5
- 2
cpp/test/phonenumbers/shortnumberinfo_test.cc View File

@ -31,6 +31,11 @@
namespace i18n {
namespace phonenumbers {
class ShortNumberInfoTest : public testing::Test {
public:
// This type is neither copyable nor movable.
ShortNumberInfoTest(const ShortNumberInfoTest&) = delete;
ShortNumberInfoTest& operator=(const ShortNumberInfoTest&) = delete;
protected:
PhoneNumber ParseNumberForTesting(const string& number,
const string& region_code) {
@ -49,8 +54,6 @@ class ShortNumberInfoTest : public testing::Test {
const PhoneNumberUtil phone_util_;
const ShortNumberInfo short_info_;
private:
DISALLOW_COPY_AND_ASSIGN(ShortNumberInfoTest);
};
TEST_F(ShortNumberInfoTest, IsPossibleShortNumber) {


+ 2
- 1
java/build.xml View File

@ -77,8 +77,9 @@
<arg value="--output-dir=${libphonenumber.test.dir}/com/google/i18n/phonenumbers"/>
<arg value="--data-prefix=data/PhoneNumberMetadataProtoForTesting"/>
<arg value="--mapping-class=CountryCodeToRegionCodeMapForTesting"/>
<arg value="--copyright=2010"/>
<arg value="--copyright=2011"/>
<arg value="--lite-build=false"/>
<arg value="--build-regioncode=true"/>
</exec>
</target>


+ 21
- 13
java/carrier/pom.xml View File

@ -1,16 +1,17 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>carrier</artifactId>
<version>1.212-SNAPSHOT</version>
<version>1.236-SNAPSHOT</version>
<packaging>jar</packaging>
<url>https://github.com/google/libphonenumber/</url>
<parent>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber-parent</artifactId>
<version>8.13.28-SNAPSHOT</version>
<version>8.13.52-SNAPSHOT</version>
</parent>
<build>
@ -24,8 +25,10 @@
</resources>
<testResources>
<testResource>
<directory>test/com/google/i18n/phonenumbers/carrier/testing_data</directory>
<targetPath>com/google/i18n/phonenumbers/carrier/testing_data</targetPath>
<directory>test/com/google/i18n/phonenumbers/carrier/testing_data
</directory>
<targetPath>com/google/i18n/phonenumbers/carrier/testing_data
</targetPath>
</testResource>
</testResources>
<plugins>
@ -35,24 +38,29 @@
<version>5.1.9</version>
<configuration>
<instructions>
<Fragment-Host>com.googlecode.libphonenumber</Fragment-Host>
<Fragment-Host>com.googlecode.libphonenumber</Fragment-Host>
</instructions>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>default-jar</id>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
<manifestFile>
${project.build.outputDirectory}/META-INF/MANIFEST.MF
</manifestFile>
<manifestEntries>
<Automatic-Module-Name>com.google.i18n.phonenumbers.carrier
</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</execution>
</executions>
</plugin>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
@ -79,12 +87,12 @@
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>8.13.28-SNAPSHOT</version>
<version>8.13.52-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>prefixmapper</artifactId>
<version>2.222-SNAPSHOT</version>
<version>2.246-SNAPSHOT</version>
</dependency>
</dependencies>


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1441_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1473_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1671_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/220_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/221_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/226_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/228_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/229_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/230_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/231_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/234_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/235_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/237_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/243_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/244_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/255_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/256_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/262_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/263_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/27_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/32_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/33_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/34_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/351_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/355_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/372_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_ru View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/376_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/380_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/380_uk View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/385_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/40_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/41_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/420_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/423_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/44_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/45_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/46_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/47_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/48_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/508_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/51_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/57_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/590_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/591_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/592_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/594_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/596_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/61_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/64_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/65_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/673_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/675_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/676_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/677_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/691_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/692_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/81_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/84_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/852_zh View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/856_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/880_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/963_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/972_en View File


BIN
java/carrier/src/com/google/i18n/phonenumbers/carrier/data/977_en View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save