From 945c01f6a15dbd64b7a7e867142ac896fb5327db Mon Sep 17 00:00:00 2001 From: penmetsaa Date: Wed, 4 Aug 2021 16:38:40 +0530 Subject: [PATCH] Fix AYTF to not format when input numbers are lost in the result. (#2636) Earlier, AYTF is adding additional CC when returning unformatted result - for cases where the input digits are dropped for formatting. Eg: MX case: "+5213314010666" => "+52 +5213314010666". b/183053929 Now we. are proactively ensuring that no formatting is applied, where a format is chosen that would otherwise have led to some digits being dropped. Why the input digits are dropped: - In MX, the mobile token (1) is no more used, so when it is present in input, the formatted result should not contain it. - However when AYTF, we should not be removing the input digits on the fly. - More details in cl/373115460 and b/183053929 --- cpp/src/phonenumbers/phonenumberutil.cc | 9 +- cpp/src/phonenumbers/test_metadata.cc | 648 +++++++++--------- .../phonenumbers/asyoutypeformatter_test.cc | 15 + .../i18n/phonenumbers/AsYouTypeFormatter.java | 6 +- .../phonenumbers/AsYouTypeFormatterTest.java | 14 + .../PhoneNumberMetadataProtoForTesting_MX | Bin 1091 -> 1182 bytes .../i18n/phonenumbers/asyoutypeformatter.js | 9 +- .../phonenumbers/asyoutypeformatter_test.js | 15 + .../i18n/phonenumbers/metadatafortesting.js | 4 + pending_code_changes.txt | 3 +- resources/PhoneNumberMetadataForTesting.xml | 7 + 11 files changed, 400 insertions(+), 330 deletions(-) diff --git a/cpp/src/phonenumbers/phonenumberutil.cc b/cpp/src/phonenumbers/phonenumberutil.cc index 74bd66345..0f4365d57 100644 --- a/cpp/src/phonenumbers/phonenumberutil.cc +++ b/cpp/src/phonenumbers/phonenumberutil.cc @@ -993,10 +993,13 @@ bool PhoneNumberUtil::IsFormatEligibleForAsYouTypeFormatter( // the format element under numberFormat contains groups of the dollar sign // followed by a single digit, separated by valid phone number punctuation. // This prevents invalid punctuation (such as the star sign in Israeli star - // numbers) getting into the output of the AYTF. + // numbers) getting into the output of the AYTF. We require that the first + // group is present in the output pattern to ensure no data is lost while + // formatting; when we format as you type, this should always be the case. const RegExp& eligible_format_pattern = reg_exps_->regexp_cache_->GetRegExp( - StrCat("[", kValidPunctuation, "]*", "(\\$\\d", "[", - kValidPunctuation, "]*)+")); + StrCat("[", kValidPunctuation, "]*", "\\$1", + "[", kValidPunctuation, "]*", "(\\$\\d", + "[", kValidPunctuation, "]*)*")); return eligible_format_pattern.FullMatch(format); } diff --git a/cpp/src/phonenumbers/test_metadata.cc b/cpp/src/phonenumbers/test_metadata.cc index 6643fbf7f..708609589 100644 --- a/cpp/src/phonenumbers/test_metadata.cc +++ b/cpp/src/phonenumbers/test_metadata.cc @@ -651,8 +651,8 @@ static const unsigned char data[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xBD, - 0x07, 0x0A, 0x15, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0x92, + 0x08, 0x0A, 0x15, 0x12, 0x0D, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x2C, 0x31, 0x30, 0x7D, 0x48, 0x0A, 0x48, 0x0B, 0x50, 0x07, 0x12, 0x1C, 0x12, 0x0A, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x0A, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x48, 0x0A, @@ -672,343 +672,349 @@ static const unsigned char data[] = { 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, - 0x31, 0x30, 0x01, 0x9A, 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, - 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, - 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, - 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x05, 0x30, - 0x31, 0x20, 0x24, 0x31, 0x30, 0x01, 0x9A, 0x01, 0x54, 0x0A, 0x15, 0x28, 0x5C, - 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, - 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, - 0x20, 0x24, 0x33, 0x1A, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, - 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, - 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, - 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, - 0x30, 0x01, 0x9A, 0x01, 0x3E, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, - 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, - 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, - 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, - 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0x22, 0x02, 0x24, 0x31, - 0x30, 0x01, 0x9A, 0x01, 0x5A, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, - 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, - 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, - 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, - 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, - 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, - 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x02, - 0x24, 0x31, 0x30, 0x01, 0xA2, 0x01, 0x32, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, - 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, - 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, - 0x33, 0x1A, 0x06, 0x5B, 0x38, 0x39, 0x5D, 0x30, 0x30, 0x22, 0x05, 0x30, 0x31, - 0x20, 0x24, 0x31, 0x30, 0x01, 0xA2, 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, - 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, - 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, - 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, - 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x30, 0x01, 0xA2, 0x01, 0x54, 0x0A, 0x15, - 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, - 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, - 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, - 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, - 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, - 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x22, 0x05, 0x30, 0x31, 0x20, - 0x24, 0x31, 0x30, 0x01, 0xA2, 0x01, 0x37, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, - 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, - 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, - 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, - 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x29, 0xA2, 0x01, 0x53, + 0x31, 0x30, 0x01, 0x9A, 0x01, 0x2C, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, + 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, + 0x35, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x39, + 0x30, 0x31, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x30, 0x01, 0x9A, 0x01, + 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, + 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, + 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, 0x7C, + 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x30, + 0x01, 0x9A, 0x01, 0x54, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, + 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, + 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x28, + 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, + 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, + 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, 0x39, + 0x5D, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x30, 0x01, 0x9A, 0x01, 0x3E, + 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, + 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, + 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, + 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, + 0x7C, 0x38, 0x31, 0x29, 0x22, 0x02, 0x24, 0x31, 0x30, 0x01, 0x9A, 0x01, 0x5A, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, - 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, - 0x34, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, - 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, - 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, - 0x32, 0x2D, 0x39, 0x5D, 0x29, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0x29, 0x12, 0x0C, 0x30, 0x34, 0x35, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, + 0x24, 0x34, 0x1A, 0x29, 0x31, 0x28, 0x3F, 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, + 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, + 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, + 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0x22, 0x02, 0x24, 0x31, 0x30, 0x01, 0xA2, + 0x01, 0x32, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, + 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, + 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x5B, 0x38, + 0x39, 0x5D, 0x30, 0x30, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x30, 0x01, + 0xA2, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, + 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, + 0x12, 0x05, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x39, 0x30, 0x31, 0xA2, + 0x01, 0x34, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, + 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, + 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x08, 0x33, 0x33, + 0x7C, 0x35, 0x35, 0x7C, 0x38, 0x31, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, + 0x30, 0x01, 0xA2, 0x01, 0x54, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, + 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, + 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, + 0x28, 0x5B, 0x32, 0x34, 0x36, 0x37, 0x5D, 0x7C, 0x33, 0x5B, 0x30, 0x2D, 0x32, + 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, 0x2D, 0x39, + 0x5D, 0x7C, 0x38, 0x5B, 0x32, 0x2D, 0x39, 0x5D, 0x7C, 0x39, 0x5B, 0x31, 0x2D, + 0x39, 0x5D, 0x22, 0x05, 0x30, 0x31, 0x20, 0x24, 0x31, 0x30, 0x01, 0xA2, 0x01, + 0x37, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, + 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, + 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, + 0x24, 0x34, 0x1A, 0x0D, 0x31, 0x28, 0x3F, 0x3A, 0x33, 0x33, 0x7C, 0x35, 0x35, + 0x7C, 0x38, 0x31, 0x29, 0xA2, 0x01, 0x53, 0x0A, 0x19, 0x28, 0x5C, 0x64, 0x29, + 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, + 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, + 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x29, 0x31, 0x28, 0x3F, + 0x3A, 0x5B, 0x31, 0x32, 0x34, 0x35, 0x37, 0x39, 0x5D, 0x7C, 0x33, 0x5B, 0x30, + 0x2D, 0x32, 0x34, 0x2D, 0x39, 0x5D, 0x7C, 0x35, 0x5B, 0x30, 0x2D, 0x34, 0x36, + 0x2D, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x30, 0x32, 0x2D, 0x39, 0x5D, 0x29, 0xAA, + 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x0A, 0x8B, 0x04, 0x0A, 0x21, 0x12, 0x17, 0x5B, 0x32, 0x38, + 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x39, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, + 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x48, 0x07, 0x48, 0x08, 0x48, 0x09, + 0x48, 0x0A, 0x12, 0x41, 0x12, 0x31, 0x32, 0x34, 0x30, 0x39, 0x39, 0x5C, 0x64, + 0x7B, 0x33, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, + 0x5D, 0x7C, 0x5B, 0x34, 0x37, 0x39, 0x5D, 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, + 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, + 0x7B, 0x36, 0x7D, 0x32, 0x08, 0x32, 0x34, 0x30, 0x39, 0x39, 0x31, 0x32, 0x33, + 0x48, 0x07, 0x48, 0x08, 0x1A, 0x65, 0x12, 0x52, 0x32, 0x28, 0x3F, 0x3A, 0x5B, + 0x30, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, + 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x31, 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, + 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, + 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, + 0x35, 0x7D, 0x29, 0x7C, 0x34, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, + 0x36, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x32, + 0x09, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x08, 0x48, + 0x09, 0x48, 0x0A, 0x22, 0x1C, 0x12, 0x0A, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, + 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, + 0x35, 0x36, 0x37, 0x48, 0x09, 0x48, 0x0A, 0x2A, 0x1C, 0x12, 0x0A, 0x39, 0x30, + 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x09, 0x48, 0x0A, 0x32, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, + 0x4E, 0x5A, 0x50, 0x40, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, + 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, + 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, + 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x0A, 0x32, 0x34, 0x7C, + 0x5B, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x9A, + 0x01, 0x2D, 0x0A, 0x14, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, + 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, + 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x06, 0x32, 0x5B, 0x31, + 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0x9A, 0x01, 0x2E, 0x0A, 0x17, + 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, + 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, + 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, + 0x22, 0x03, 0x30, 0x24, 0x31, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0x8B, 0x04, 0x0A, - 0x21, 0x12, 0x17, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, - 0x39, 0x7D, 0x7C, 0x5B, 0x33, 0x2D, 0x37, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, - 0x48, 0x07, 0x48, 0x08, 0x48, 0x09, 0x48, 0x0A, 0x12, 0x41, 0x12, 0x31, 0x32, - 0x34, 0x30, 0x39, 0x39, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x7C, 0x28, 0x3F, 0x3A, - 0x33, 0x5B, 0x32, 0x2D, 0x37, 0x39, 0x5D, 0x7C, 0x5B, 0x34, 0x37, 0x39, 0x5D, - 0x5B, 0x32, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x7C, 0x36, 0x5B, 0x32, 0x33, 0x35, - 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x08, 0x32, 0x34, - 0x30, 0x39, 0x39, 0x31, 0x32, 0x33, 0x48, 0x07, 0x48, 0x08, 0x1A, 0x65, 0x12, - 0x52, 0x32, 0x28, 0x3F, 0x3A, 0x5B, 0x30, 0x32, 0x37, 0x5D, 0x5C, 0x64, 0x7B, - 0x37, 0x7D, 0x7C, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x7C, 0x31, - 0x28, 0x3F, 0x3A, 0x30, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x37, 0x7D, 0x7C, 0x5B, - 0x31, 0x32, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x2C, 0x36, 0x7D, 0x7C, 0x5B, 0x33, - 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x29, 0x7C, 0x34, 0x5B, 0x31, - 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x7C, 0x38, 0x5C, 0x64, 0x7B, - 0x37, 0x2C, 0x38, 0x7D, 0x29, 0x32, 0x09, 0x32, 0x30, 0x31, 0x32, 0x33, 0x34, - 0x35, 0x36, 0x37, 0x48, 0x08, 0x48, 0x09, 0x48, 0x0A, 0x22, 0x1C, 0x12, 0x0A, - 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, 0x7D, 0x32, 0x0A, 0x38, - 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x09, 0x48, 0x0A, - 0x2A, 0x1C, 0x12, 0x0A, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x2C, 0x37, - 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x48, 0x09, 0x48, 0x0A, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x4E, 0x5A, 0x50, 0x40, 0x5A, 0x02, 0x30, - 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x2F, 0x0A, 0x12, 0x28, - 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, - 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, - 0x33, 0x1A, 0x0A, 0x32, 0x34, 0x7C, 0x5B, 0x33, 0x34, 0x36, 0x37, 0x39, 0x5D, - 0x22, 0x03, 0x30, 0x24, 0x31, 0x9A, 0x01, 0x2D, 0x0A, 0x14, 0x28, 0x5C, 0x64, - 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, - 0x2C, 0x35, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x2D, 0x24, 0x32, 0x20, 0x24, - 0x33, 0x1A, 0x06, 0x32, 0x5B, 0x31, 0x37, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, - 0x31, 0x9A, 0x01, 0x2E, 0x0A, 0x17, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, - 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x2C, - 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, - 0x1A, 0x04, 0x5B, 0x38, 0x39, 0x5D, 0x22, 0x03, 0x30, 0x24, 0x31, 0xAA, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0x9A, 0x02, 0x0A, + 0x0E, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, + 0x48, 0x09, 0x12, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x1A, 0x2C, 0x12, 0x1F, 0x28, 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, + 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x38, + 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, + 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x22, 0x15, 0x12, 0x08, + 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, 0x14, 0x12, 0x07, 0x37, 0x30, 0x5C, + 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x4A, 0x02, 0x50, 0x4C, 0x50, 0x30, 0x5A, 0x02, 0x30, 0x30, 0x62, + 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x1C, 0x28, 0x5C, 0x64, + 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, + 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, + 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, + 0x03, 0x30, 0x24, 0x31, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xCA, 0x02, 0x0A, 0x0E, + 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, + 0x09, 0x12, 0x15, 0x12, 0x08, 0x32, 0x36, 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, + 0x32, 0x09, 0x32, 0x36, 0x32, 0x31, 0x36, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1F, + 0x12, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, + 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x09, 0x36, 0x39, 0x32, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x14, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, + 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x2A, 0x31, 0x12, 0x24, 0x38, 0x28, 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, + 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, + 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, + 0x36, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x4A, 0x02, 0x52, 0x45, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, + 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, + 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, + 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, + 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, + 0x30, 0x24, 0x31, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x01, 0xBA, 0x01, 0x13, 0x32, 0x36, 0x32, 0x7C, 0x36, 0x28, + 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x38, + 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x0A, 0xCC, 0x01, 0x0A, 0x10, 0x12, 0x0C, 0x5B, 0x33, 0x34, + 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x48, 0x0A, 0x12, 0x18, + 0x12, 0x0A, 0x5B, 0x33, 0x34, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, + 0x0A, 0x33, 0x30, 0x31, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x1A, 0x14, + 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x52, 0x55, 0x50, 0x07, + 0x5A, 0x03, 0x38, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x01, 0x0A, 0x9A, 0x02, 0x0A, 0x0E, 0x12, 0x0A, 0x5B, 0x31, 0x2D, 0x39, - 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, 0x09, 0x12, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1A, 0x2C, 0x12, 0x1F, 0x28, - 0x3F, 0x3A, 0x35, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x36, 0x5B, 0x30, 0x36, 0x39, - 0x5D, 0x7C, 0x37, 0x5B, 0x32, 0x38, 0x39, 0x5D, 0x7C, 0x38, 0x38, 0x29, 0x5C, - 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x35, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, - 0x36, 0x37, 0x22, 0x15, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x36, - 0x7D, 0x32, 0x09, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x2A, - 0x14, 0x12, 0x07, 0x37, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x37, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x32, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x50, 0x4C, 0x50, - 0x30, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, - 0x30, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, - 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, - 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, - 0x24, 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0xAA, 0x01, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, - 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x01, 0x0A, 0xCA, 0x02, 0x0A, 0x0E, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, - 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, 0x09, 0x12, 0x15, 0x12, 0x08, 0x32, 0x36, - 0x32, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x32, 0x31, 0x36, - 0x31, 0x32, 0x33, 0x34, 0x1A, 0x1F, 0x12, 0x12, 0x36, 0x28, 0x3F, 0x3A, 0x39, - 0x5B, 0x32, 0x33, 0x5D, 0x7C, 0x34, 0x37, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, - 0x32, 0x09, 0x36, 0x39, 0x32, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x14, - 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x38, 0x30, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x31, 0x12, 0x24, 0x38, 0x28, - 0x3F, 0x3A, 0x31, 0x5B, 0x30, 0x31, 0x5D, 0x7C, 0x32, 0x5B, 0x30, 0x31, 0x35, - 0x36, 0x5D, 0x7C, 0x38, 0x34, 0x7C, 0x39, 0x5B, 0x30, 0x2D, 0x33, 0x37, 0x2D, - 0x39, 0x5D, 0x29, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x09, 0x38, 0x31, 0x30, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x52, 0x45, 0x50, 0x86, 0x02, - 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0x9A, 0x01, 0x30, - 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, - 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, - 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, - 0x33, 0x20, 0x24, 0x34, 0x22, 0x03, 0x30, 0x24, 0x31, 0xAA, 0x01, 0x0B, 0x48, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xBA, 0x01, 0x13, - 0x32, 0x36, 0x32, 0x7C, 0x36, 0x28, 0x3F, 0x3A, 0x39, 0x5B, 0x32, 0x33, 0x5D, - 0x7C, 0x34, 0x37, 0x29, 0x7C, 0x38, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xCC, 0x01, 0x0A, - 0x10, 0x12, 0x0C, 0x5B, 0x33, 0x34, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, - 0x39, 0x7D, 0x48, 0x0A, 0x12, 0x18, 0x12, 0x0A, 0x5B, 0x33, 0x34, 0x38, 0x5D, - 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x0A, 0x33, 0x30, 0x31, 0x31, 0x32, 0x33, - 0x34, 0x35, 0x36, 0x37, 0x1A, 0x14, 0x12, 0x06, 0x39, 0x5C, 0x64, 0x7B, 0x39, - 0x7D, 0x32, 0x0A, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, - 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0xFF, 0x01, 0x0A, 0xAB, 0x01, 0x0A, 0x09, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, + 0x7D, 0x48, 0x09, 0x12, 0x0B, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x1A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x53, 0x45, 0x50, 0x2E, 0x5A, 0x02, 0x30, 0x30, + 0x90, 0x01, 0x01, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xFB, 0x02, 0x0A, 0x17, 0x12, + 0x0F, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, + 0x31, 0x30, 0x7D, 0x48, 0x08, 0x48, 0x0A, 0x48, 0x0B, 0x12, 0x17, 0x12, 0x09, + 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x08, 0x33, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x08, 0x1A, 0x17, 0x12, 0x09, 0x5B, + 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x08, 0x22, 0x1C, 0x12, 0x0A, 0x31, 0x3F, + 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x0A, 0x48, 0x0B, 0x2A, 0x1A, + 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0B, + 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x0B, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x4A, 0x02, 0x52, 0x55, 0x50, 0x07, 0x5A, 0x03, 0x38, 0x31, 0x30, 0x62, 0x01, - 0x38, 0x7A, 0x01, 0x38, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xAB, 0x01, 0x0A, 0x09, - 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x48, 0x09, 0x12, 0x0B, 0x32, 0x09, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x1A, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x22, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x2A, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x53, 0x45, - 0x50, 0x2E, 0x5A, 0x02, 0x30, 0x30, 0x90, 0x01, 0x01, 0xAA, 0x01, 0x0B, 0x48, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, - 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x0A, 0xFB, 0x02, 0x0A, 0x17, 0x12, 0x0F, 0x5B, 0x31, 0x33, 0x36, 0x38, 0x39, - 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x2C, 0x31, 0x30, 0x7D, 0x48, 0x08, 0x48, 0x0A, - 0x48, 0x0B, 0x12, 0x17, 0x12, 0x09, 0x5B, 0x33, 0x36, 0x5D, 0x5C, 0x64, 0x7B, - 0x37, 0x7D, 0x32, 0x08, 0x33, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, - 0x08, 0x1A, 0x17, 0x12, 0x09, 0x5B, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, - 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x08, - 0x22, 0x1C, 0x12, 0x0A, 0x31, 0x3F, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, - 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x48, 0x0A, 0x48, 0x0B, 0x2A, 0x1A, 0x12, 0x09, 0x31, 0x39, 0x30, 0x30, 0x5C, - 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0B, 0x31, 0x39, 0x30, 0x30, 0x31, 0x32, 0x33, - 0x34, 0x35, 0x36, 0x37, 0x48, 0x0B, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x53, 0x47, 0x50, 0x41, 0x5A, - 0x0B, 0x30, 0x5B, 0x30, 0x2D, 0x33, 0x5D, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7A, - 0x06, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x9A, 0x01, 0x25, 0x0A, 0x0E, 0x28, - 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, - 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x1A, 0x0C, 0x5B, 0x33, 0x36, 0x39, - 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, 0x39, 0x5D, 0x9A, 0x01, 0x28, 0x0A, 0x15, - 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, - 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, - 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x05, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x9A, - 0x01, 0x26, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, - 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, - 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, - 0x30, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xC5, 0x01, 0x0A, 0x10, 0x12, 0x08, 0x38, - 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, 0x7D, 0x48, 0x04, 0x48, 0x06, 0x48, 0x08, - 0x12, 0x12, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x06, 0x38, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x48, 0x06, 0x1A, 0x10, 0x12, 0x06, 0x38, 0x5C, - 0x64, 0x7B, 0x33, 0x7D, 0x32, 0x04, 0x38, 0x31, 0x32, 0x33, 0x48, 0x04, 0x22, - 0x14, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x08, 0x38, 0x31, - 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x48, 0x08, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x54, 0x41, 0x50, - 0xA2, 0x02, 0x5A, 0x02, 0x30, 0x30, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xB0, 0x03, - 0x0A, 0x22, 0x12, 0x1C, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, - 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, - 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, 0x0A, 0x50, 0x07, 0x12, 0x2C, 0x12, - 0x1C, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, - 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, - 0x7B, 0x38, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, - 0x39, 0x30, 0x50, 0x07, 0x1A, 0x2C, 0x12, 0x1C, 0x5B, 0x31, 0x33, 0x2D, 0x36, + 0x4A, 0x02, 0x53, 0x47, 0x50, 0x41, 0x5A, 0x0B, 0x30, 0x5B, 0x30, 0x2D, 0x33, + 0x5D, 0x5B, 0x30, 0x2D, 0x39, 0x5D, 0x7A, 0x06, 0x37, 0x37, 0x37, 0x37, 0x37, + 0x37, 0x9A, 0x01, 0x25, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, + 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, + 0x32, 0x1A, 0x0C, 0x5B, 0x33, 0x36, 0x39, 0x5D, 0x7C, 0x38, 0x5B, 0x31, 0x2D, + 0x39, 0x5D, 0x9A, 0x01, 0x28, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, + 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, + 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x1A, + 0x05, 0x31, 0x5B, 0x38, 0x39, 0x5D, 0x9A, 0x01, 0x26, 0x0A, 0x15, 0x28, 0x5C, + 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, + 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, + 0x20, 0x24, 0x33, 0x1A, 0x03, 0x38, 0x30, 0x30, 0xAA, 0x01, 0x0B, 0x48, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, + 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, + 0xC5, 0x01, 0x0A, 0x10, 0x12, 0x08, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x2C, 0x37, + 0x7D, 0x48, 0x04, 0x48, 0x06, 0x48, 0x08, 0x12, 0x12, 0x12, 0x06, 0x38, 0x5C, + 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x06, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x48, + 0x06, 0x1A, 0x10, 0x12, 0x06, 0x38, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x32, 0x04, + 0x38, 0x31, 0x32, 0x33, 0x48, 0x04, 0x22, 0x14, 0x12, 0x06, 0x38, 0x5C, 0x64, + 0x7B, 0x37, 0x7D, 0x32, 0x08, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x48, 0x08, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x4A, 0x02, 0x54, 0x41, 0x50, 0xA2, 0x02, 0x5A, 0x02, 0x30, 0x30, + 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xB0, 0x03, 0x0A, 0x22, 0x12, 0x1C, 0x5B, 0x31, + 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, + 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, + 0x48, 0x0A, 0x50, 0x07, 0x12, 0x2C, 0x12, 0x1C, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x0A, 0x31, - 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x50, 0x07, 0x22, 0x23, - 0x12, 0x15, 0x38, 0x28, 0x3F, 0x3A, 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, - 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0A, 0x38, - 0x30, 0x30, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x2A, 0x16, 0x12, 0x08, - 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, - 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x50, 0x07, 0x1A, 0x2C, + 0x12, 0x1C, 0x5B, 0x31, 0x33, 0x2D, 0x36, 0x38, 0x39, 0x5D, 0x5C, 0x64, 0x7B, + 0x39, 0x7D, 0x7C, 0x32, 0x5B, 0x30, 0x2D, 0x33, 0x35, 0x2D, 0x39, 0x5D, 0x5C, + 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x0A, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x30, 0x50, 0x07, 0x22, 0x23, 0x12, 0x15, 0x38, 0x28, 0x3F, 0x3A, + 0x30, 0x30, 0x7C, 0x36, 0x36, 0x7C, 0x37, 0x37, 0x7C, 0x38, 0x38, 0x29, 0x5C, + 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x30, 0x2A, 0x16, 0x12, 0x08, 0x39, 0x30, 0x30, 0x5C, 0x64, 0x7B, + 0x37, 0x7D, 0x32, 0x0A, 0x39, 0x30, 0x30, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x30, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x4A, 0x02, 0x55, 0x53, 0x50, 0x01, 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, + 0x01, 0x31, 0x6A, 0x07, 0x20, 0x65, 0x78, 0x74, 0x6E, 0x2E, 0x20, 0x7A, 0x01, + 0x31, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x17, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, + 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, + 0x31, 0x20, 0x24, 0x32, 0x9A, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, + 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, + 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, + 0x33, 0x30, 0x01, 0xA2, 0x01, 0x23, 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, + 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, + 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, + 0x30, 0x01, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0xB0, 0x01, 0x01, 0xC2, 0x01, 0x16, 0x12, 0x08, 0x38, 0x30, + 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x0A, 0x38, 0x30, 0x30, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x30, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x02, 0x01, 0x0A, 0x95, 0x02, + 0x0A, 0x0F, 0x12, 0x09, 0x5B, 0x36, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, + 0x48, 0x09, 0x50, 0x07, 0x12, 0x18, 0x12, 0x09, 0x36, 0x31, 0x32, 0x32, 0x5C, + 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x09, 0x36, 0x36, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x50, 0x07, 0x1A, 0x1B, 0x12, 0x0E, 0x39, 0x5B, 0x30, 0x2D, 0x35, + 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x39, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x55, 0x53, 0x50, 0x01, - 0x5A, 0x03, 0x30, 0x31, 0x31, 0x62, 0x01, 0x31, 0x6A, 0x07, 0x20, 0x65, 0x78, - 0x74, 0x6E, 0x2E, 0x20, 0x7A, 0x01, 0x31, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x17, - 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, - 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0x9A, 0x01, 0x23, - 0x0A, 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, - 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, - 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x30, 0x01, 0xA2, 0x01, 0x23, 0x0A, - 0x15, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, - 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, - 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x30, 0x01, 0xAA, 0x01, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xB0, 0x01, 0x01, 0xC2, - 0x01, 0x16, 0x12, 0x08, 0x38, 0x30, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, - 0x0A, 0x38, 0x30, 0x30, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0xCA, 0x01, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, - 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x80, 0x02, 0x01, 0x0A, 0x95, 0x02, 0x0A, 0x0F, 0x12, 0x09, 0x5B, 0x36, 0x39, - 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, 0x09, 0x50, 0x07, 0x12, 0x18, 0x12, - 0x09, 0x36, 0x31, 0x32, 0x32, 0x5C, 0x64, 0x7B, 0x35, 0x7D, 0x32, 0x09, 0x36, - 0x36, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x50, 0x07, 0x1A, 0x1B, 0x12, - 0x0E, 0x39, 0x5B, 0x30, 0x2D, 0x35, 0x37, 0x2D, 0x39, 0x5D, 0x5C, 0x64, 0x7B, - 0x37, 0x7D, 0x32, 0x09, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, - 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x4A, 0x02, 0x55, 0x5A, 0x50, 0xE6, 0x07, 0x5A, 0x03, 0x38, 0x31, 0x30, 0x62, - 0x01, 0x38, 0x7A, 0x01, 0x38, 0x8A, 0x01, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x9A, - 0x01, 0x38, 0x0A, 0x1C, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, - 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, - 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, - 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, 0x1A, 0x05, 0x5B, 0x36, 0x37, 0x39, 0x5D, - 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xE1, 0x01, - 0x0A, 0x0E, 0x12, 0x0A, 0x5B, 0x32, 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, - 0x7D, 0x48, 0x09, 0x12, 0x1B, 0x12, 0x0E, 0x32, 0x36, 0x39, 0x36, 0x5B, 0x30, - 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x39, - 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, 0x1A, 0x15, 0x12, 0x08, 0x36, 0x33, 0x39, - 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, 0x09, 0x36, 0x33, 0x39, 0x31, 0x32, 0x33, - 0x34, 0x35, 0x36, 0x22, 0x14, 0x12, 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, - 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, - 0x02, 0x59, 0x54, 0x50, 0x86, 0x02, 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, - 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0xBA, 0x01, 0x07, 0x32, 0x36, 0x39, 0x7C, 0x36, 0x33, - 0x39, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x55, 0x5A, 0x50, 0xE6, + 0x07, 0x5A, 0x03, 0x38, 0x31, 0x30, 0x62, 0x01, 0x38, 0x7A, 0x01, 0x38, 0x8A, + 0x01, 0x04, 0x38, 0x7E, 0x31, 0x30, 0x9A, 0x01, 0x38, 0x0A, 0x1C, 0x28, 0x5C, + 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x33, 0x7D, 0x29, 0x28, + 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x32, 0x7D, 0x29, + 0x12, 0x0B, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0x20, 0x24, 0x34, + 0x1A, 0x05, 0x5B, 0x36, 0x37, 0x39, 0x5D, 0x22, 0x04, 0x38, 0x20, 0x24, 0x31, + 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xC9, 0x01, 0x0A, 0x09, 0x12, 0x05, 0x5C, 0x64, - 0x7B, 0x38, 0x7D, 0x48, 0x08, 0x12, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x22, 0x11, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x38, - 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x03, - 0x30, 0x30, 0x31, 0x50, 0xA0, 0x06, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x17, 0x0A, - 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, - 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, 0x20, 0x24, 0x32, 0xAA, 0x01, 0x0B, 0x48, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, - 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0x0A, 0xCE, 0x01, 0x0A, 0x09, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x48, - 0x09, 0x12, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x01, 0x1A, 0x12, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, - 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x22, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x03, 0x30, 0x30, 0x31, - 0x50, 0xF2, 0x06, 0x9A, 0x01, 0x1E, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, - 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, - 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0xAA, 0x01, 0x0B, - 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, - 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, - 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, - 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x01, 0x0A, 0xD1, 0x01, 0x0A, 0x09, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, - 0x48, 0x09, 0x12, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x01, 0x1A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x01, 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x01, 0x2A, 0x12, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x32, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x03, 0x30, 0x30, - 0x31, 0x50, 0xD3, 0x07, 0x90, 0x01, 0x01, 0x9A, 0x01, 0x1E, 0x0A, 0x12, 0x28, - 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, - 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, - 0x33, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x01 + 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xE1, 0x01, 0x0A, 0x0E, 0x12, 0x0A, 0x5B, 0x32, + 0x36, 0x38, 0x5D, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, 0x09, 0x12, 0x1B, 0x12, + 0x0E, 0x32, 0x36, 0x39, 0x36, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x5C, 0x64, 0x7B, + 0x34, 0x7D, 0x32, 0x09, 0x32, 0x36, 0x39, 0x36, 0x30, 0x31, 0x32, 0x33, 0x34, + 0x1A, 0x15, 0x12, 0x08, 0x36, 0x33, 0x39, 0x5C, 0x64, 0x7B, 0x36, 0x7D, 0x32, + 0x09, 0x36, 0x33, 0x39, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x22, 0x14, 0x12, + 0x07, 0x38, 0x30, 0x5C, 0x64, 0x7B, 0x37, 0x7D, 0x32, 0x09, 0x38, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x02, 0x59, 0x54, 0x50, 0x86, 0x02, + 0x5A, 0x02, 0x30, 0x30, 0x62, 0x01, 0x30, 0x7A, 0x01, 0x30, 0xAA, 0x01, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xBA, 0x01, + 0x07, 0x32, 0x36, 0x39, 0x7C, 0x36, 0x33, 0x39, 0xC2, 0x01, 0x0B, 0x48, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xC9, + 0x01, 0x0A, 0x09, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x48, 0x08, 0x12, + 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1A, + 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x22, + 0x11, 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x38, 0x7D, 0x32, 0x08, 0x31, 0x32, 0x33, + 0x34, 0x35, 0x36, 0x37, 0x38, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x4A, 0x03, 0x30, 0x30, 0x31, 0x50, 0xA0, 0x06, + 0x90, 0x01, 0x01, 0x9A, 0x01, 0x17, 0x0A, 0x0E, 0x28, 0x5C, 0x64, 0x7B, 0x34, + 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x05, 0x24, 0x31, + 0x20, 0x24, 0x32, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xCE, 0x01, 0x0A, 0x09, 0x12, + 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x48, 0x09, 0x12, 0x0B, 0x48, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1A, 0x12, 0x12, 0x05, 0x5C, + 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x22, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x2A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x01, 0x4A, 0x03, 0x30, 0x30, 0x31, 0x50, 0xF2, 0x06, 0x9A, 0x01, 0x1E, + 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, + 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, 0x24, 0x31, 0x20, 0x24, + 0x32, 0x20, 0x24, 0x33, 0xAA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, 0x0B, 0x48, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0xD1, 0x01, 0x0A, 0x09, + 0x12, 0x05, 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x48, 0x09, 0x12, 0x0B, 0x48, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1A, 0x0B, 0x48, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x22, 0x0B, 0x48, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x2A, 0x12, 0x12, 0x05, + 0x5C, 0x64, 0x7B, 0x39, 0x7D, 0x32, 0x09, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x32, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x3A, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x42, 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x01, 0x4A, 0x03, 0x30, 0x30, 0x31, 0x50, 0xD3, 0x07, 0x90, 0x01, + 0x01, 0x9A, 0x01, 0x1E, 0x0A, 0x12, 0x28, 0x5C, 0x64, 0x29, 0x28, 0x5C, 0x64, + 0x7B, 0x34, 0x7D, 0x29, 0x28, 0x5C, 0x64, 0x7B, 0x34, 0x7D, 0x29, 0x12, 0x08, + 0x24, 0x31, 0x20, 0x24, 0x32, 0x20, 0x24, 0x33, 0xAA, 0x01, 0x0B, 0x48, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xC2, 0x01, 0x0B, 0x48, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xCA, 0x01, 0x0B, + 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE2, 0x01, + 0x0B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01 }; } // namespace diff --git a/cpp/test/phonenumbers/asyoutypeformatter_test.cc b/cpp/test/phonenumbers/asyoutypeformatter_test.cc index bdd7f4e4e..b97ddd0ca 100644 --- a/cpp/test/phonenumbers/asyoutypeformatter_test.cc +++ b/cpp/test/phonenumbers/asyoutypeformatter_test.cc @@ -698,6 +698,21 @@ TEST_F(AsYouTypeFormatterTest, AYTF_MX) { EXPECT_EQ("+52 800 123 45", formatter_->InputDigit('5', &result_)); EXPECT_EQ("+52 800 123 456", formatter_->InputDigit('6', &result_)); EXPECT_EQ("+52 800 123 4567", formatter_->InputDigit('7', &result_)); + + // +529011234567, proactively ensuring that no formatting is applied, + // where a format is chosen that would otherwise have led to some digits + // being dropped. + formatter_->Clear(); + EXPECT_EQ("9", formatter_->InputDigit('9', &result_)); + EXPECT_EQ("90", formatter_->InputDigit('0', &result_)); + EXPECT_EQ("901", formatter_->InputDigit('1', &result_)); + EXPECT_EQ("9011", formatter_->InputDigit('1', &result_)); + EXPECT_EQ("90112", formatter_->InputDigit('2', &result_)); + EXPECT_EQ("901123", formatter_->InputDigit('3', &result_)); + EXPECT_EQ("9011234", formatter_->InputDigit('4', &result_)); + EXPECT_EQ("90112345", formatter_->InputDigit('5', &result_)); + EXPECT_EQ("901123456", formatter_->InputDigit('6', &result_)); + EXPECT_EQ("9011234567", formatter_->InputDigit('7', &result_)); // +52 55 1234 5678 formatter_->Clear(); diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java index c9a1f5c31..be11be57e 100644 --- a/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java +++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java @@ -70,10 +70,12 @@ public class AsYouTypeFormatter { // used by the AYTF. It is eligible when the format element under numberFormat contains groups of // the dollar sign followed by a single digit, separated by valid phone number punctuation. This // prevents invalid punctuation (such as the star sign in Israeli star numbers) getting into the - // output of the AYTF. + // output of the AYTF. We require that the first group is present in the output pattern to ensure + // no data is lost while formatting; when we format as you type, this should always be the case. private static final Pattern ELIGIBLE_FORMAT_PATTERN = Pattern.compile("[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*" - + "(\\$\\d" + "[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*)+"); + + "\\$1" + "[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*(\\$\\d" + + "[" + PhoneNumberUtil.VALID_PUNCTUATION + "]*)*"); // A set of characters that, if found in a national prefix formatting rules, are an indicator to // us that we should separate the national prefix from the number when formatting. private static final Pattern NATIONAL_PREFIX_SEPARATORS_PATTERN = Pattern.compile("[- ]"); diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java b/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java index 09a8a40b0..0bdd8b676 100644 --- a/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java +++ b/java/libphonenumber/test/com/google/i18n/phonenumbers/AsYouTypeFormatterTest.java @@ -638,6 +638,20 @@ public class AsYouTypeFormatterTest extends TestMetadataTestCase { assertEquals("+52 800 123 45", formatter.inputDigit('5')); assertEquals("+52 800 123 456", formatter.inputDigit('6')); assertEquals("+52 800 123 4567", formatter.inputDigit('7')); + + // +529011234567, proactively ensuring that no formatting is applied, where a format is chosen + // that would otherwise have led to some digits being dropped. + formatter.clear(); + assertEquals("9", formatter.inputDigit('9')); + assertEquals("90", formatter.inputDigit('0')); + assertEquals("901", formatter.inputDigit('1')); + assertEquals("9011", formatter.inputDigit('1')); + assertEquals("90112", formatter.inputDigit('2')); + assertEquals("901123", formatter.inputDigit('3')); + assertEquals("9011234", formatter.inputDigit('4')); + assertEquals("90112345", formatter.inputDigit('5')); + assertEquals("901123456", formatter.inputDigit('6')); + assertEquals("9011234567", formatter.inputDigit('7')); // +52 55 1234 5678 formatter.clear(); diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX b/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX index 74f5f2a9300edc5cd64c0da464c20e93d2f485b4..fa8d8c4f62e2e1b1035cb0aa5dd948a3f1098175 100644 GIT binary patch delta 118 zcmX@iF^_XY4kIJm[89]00 $1 $2 $3 + + + 901 + $2 $3 + $2 $3 + 33|55|81 $1 $2 $3