From fe053cac8d54e1e5558dd3b2fbe6dae8fdb6b25b Mon Sep 17 00:00:00 2001 From: Paween Itthipalkul <398585+paween@users.noreply.github.com> Date: Fri, 1 Dec 2017 13:55:40 -0800 Subject: [PATCH] Add support for short number and emegerncy number in libPhoneNumber-iOS This is a port of ShortNumberInfo class from Java version of libPhoneNumber into a category on NBPhoneNumberUtil class --- libPhoneNumber.xcodeproj/project.pbxproj | 96 +- libPhoneNumber/GeneratePhoneNumberHeader.sh | 22 +- .../Internal/NBPhoneNumberUtil+Category.h | 23 + libPhoneNumber/Internal/NBRegExMatcher.h | 28 + libPhoneNumber/Internal/NBRegExMatcher.m | 73 + .../Internal/NBRegularExpressionCache.h | 32 + .../Internal/NBRegularExpressionCache.m | 60 + .../NBGeneratedPhoneNumberMetaData.h | 1208 ++++++++++++++++- libPhoneNumber/NBMetadataHelper.h | 14 +- libPhoneNumber/NBMetadataHelper.m | 70 + libPhoneNumber/NBPhoneMetaData.h | 11 +- libPhoneNumber/NBPhoneMetaData.m | 7 + .../NBPhoneNumberUtil+ShortNumber.h | 198 +++ .../NBPhoneNumberUtil+ShortNumber.m | 323 +++++ libPhoneNumber/NBPhoneNumberUtil.m | 5 +- .../NBPhoneNumberUtil+ShortNumberTest.h | 29 + .../NBPhoneNumberUtil+ShortNumberTest.m | 53 + libPhoneNumberTests/NBShortNumberInfoTest.m | 495 +++++++ .../generatedJSON/ShortNumberMetadata.json | 1 + 19 files changed, 2742 insertions(+), 6 deletions(-) create mode 100644 libPhoneNumber/Internal/NBPhoneNumberUtil+Category.h create mode 100644 libPhoneNumber/Internal/NBRegExMatcher.h create mode 100644 libPhoneNumber/Internal/NBRegExMatcher.m create mode 100644 libPhoneNumber/Internal/NBRegularExpressionCache.h create mode 100644 libPhoneNumber/Internal/NBRegularExpressionCache.m create mode 100644 libPhoneNumber/NBPhoneNumberUtil+ShortNumber.h create mode 100644 libPhoneNumber/NBPhoneNumberUtil+ShortNumber.m create mode 100644 libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.h create mode 100644 libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.m create mode 100644 libPhoneNumberTests/NBShortNumberInfoTest.m create mode 100644 libPhoneNumberTests/generatedJSON/ShortNumberMetadata.json diff --git a/libPhoneNumber.xcodeproj/project.pbxproj b/libPhoneNumber.xcodeproj/project.pbxproj index 8885247..9566f37 100755 --- a/libPhoneNumber.xcodeproj/project.pbxproj +++ b/libPhoneNumber.xcodeproj/project.pbxproj @@ -7,6 +7,36 @@ objects = { /* Begin PBXBuildFile section */ + 0F2870931FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870911FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.h */; }; + 0F2870941FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */; }; + 0F2870981FCF8F13006230BF /* NBRegExMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870961FCF8F13006230BF /* NBRegExMatcher.h */; }; + 0F2870991FCF8F13006230BF /* NBRegExMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870961FCF8F13006230BF /* NBRegExMatcher.h */; }; + 0F28709A1FCF8F13006230BF /* NBRegExMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870961FCF8F13006230BF /* NBRegExMatcher.h */; }; + 0F28709B1FCF8F13006230BF /* NBRegExMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870961FCF8F13006230BF /* NBRegExMatcher.h */; }; + 0F28709C1FCF8F13006230BF /* NBRegExMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */; }; + 0F28709D1FCF8F13006230BF /* NBRegExMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */; }; + 0F28709E1FCF8F13006230BF /* NBRegExMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */; }; + 0F28709F1FCF8F13006230BF /* NBRegExMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */; }; + 0F2870A21FCF9368006230BF /* NBRegularExpressionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870A01FCF9368006230BF /* NBRegularExpressionCache.h */; }; + 0F2870A31FCF9368006230BF /* NBRegularExpressionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870A01FCF9368006230BF /* NBRegularExpressionCache.h */; }; + 0F2870A41FCF9368006230BF /* NBRegularExpressionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870A01FCF9368006230BF /* NBRegularExpressionCache.h */; }; + 0F2870A51FCF9368006230BF /* NBRegularExpressionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2870A01FCF9368006230BF /* NBRegularExpressionCache.h */; }; + 0F2870A61FCF9368006230BF /* NBRegularExpressionCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */; }; + 0F2870A71FCF9368006230BF /* NBRegularExpressionCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */; }; + 0F2870A81FCF9368006230BF /* NBRegularExpressionCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */; }; + 0F2870A91FCF9368006230BF /* NBRegularExpressionCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */; }; + 0F2870AA1FCF9612006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */; }; + 0F2870AB1FCF9612006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */; }; + 0F2870AC1FCF9612006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */; }; + 0F2870AD1FCF9617006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */; }; + 0F2870AE1FCF9617006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */; }; + 0F2870AF1FCF961C006230BF /* NBRegExMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */; }; + 0F2870B01FCF961D006230BF /* NBRegExMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */; }; + 0F2870B11FCF9620006230BF /* NBRegularExpressionCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */; }; + 0F2870B21FCF9620006230BF /* NBRegularExpressionCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */; }; + 0F4D824C1FCF60A5009F9C17 /* NBShortNumberInfoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F4D824B1FCF60A5009F9C17 /* NBShortNumberInfoTest.m */; }; + 0F58330B1FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5833091FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.h */; }; + 0F58330D1FD1FD1400F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F58330A1FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.m */; }; 1485C5271E06F4890092F541 /* NBAsYouTypeFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1485C5231E06F4890092F541 /* NBAsYouTypeFormatterTest.m */; }; 1485C5291E06F4890092F541 /* NBPhoneNumberUtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1485C5251E06F4890092F541 /* NBPhoneNumberUtilTest.m */; }; 14B7A2AB1DE9BF160051AED7 /* NBMetadataHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = FD12C2691A87401B00B53856 /* NBMetadataHelper.m */; }; @@ -141,6 +171,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0F2870911FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NBPhoneNumberUtil+ShortNumber.h"; sourceTree = ""; }; + 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NBPhoneNumberUtil+ShortNumber.m"; sourceTree = ""; }; + 0F2870961FCF8F13006230BF /* NBRegExMatcher.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NBRegExMatcher.h; sourceTree = ""; }; + 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NBRegExMatcher.m; sourceTree = ""; }; + 0F2870A01FCF9368006230BF /* NBRegularExpressionCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NBRegularExpressionCache.h; sourceTree = ""; }; + 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NBRegularExpressionCache.m; sourceTree = ""; }; + 0F4D82491FCF5CFB009F9C17 /* ShortNumberMetadata.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = ShortNumberMetadata.json; path = libPhoneNumberTests/generatedJSON/ShortNumberMetadata.json; sourceTree = ""; }; + 0F4D824B1FCF60A5009F9C17 /* NBShortNumberInfoTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NBShortNumberInfoTest.m; sourceTree = ""; }; + 0F5833091FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NBPhoneNumberUtil+ShortNumberTest.h"; sourceTree = ""; }; + 0F58330A1FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NBPhoneNumberUtil+ShortNumberTest.m"; sourceTree = ""; }; + 0F58330E1FD2004A00F26ED4 /* NBPhoneNumberUtil+Category.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NBPhoneNumberUtil+Category.h"; sourceTree = ""; }; 1485C5231E06F4890092F541 /* NBAsYouTypeFormatterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NBAsYouTypeFormatterTest.m; path = libPhoneNumberTests/NBAsYouTypeFormatterTest.m; sourceTree = SOURCE_ROOT; }; 1485C5251E06F4890092F541 /* NBPhoneNumberUtilTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NBPhoneNumberUtilTest.m; path = libPhoneNumberTests/NBPhoneNumberUtilTest.m; sourceTree = SOURCE_ROOT; }; 1485C52B1E06F4930092F541 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = libPhoneNumberTests/Info.plist; sourceTree = SOURCE_ROOT; }; @@ -270,12 +311,25 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0F2870951FCF8EDE006230BF /* Internal */ = { + isa = PBXGroup; + children = ( + 0F2870961FCF8F13006230BF /* NBRegExMatcher.h */, + 0F2870971FCF8F13006230BF /* NBRegExMatcher.m */, + 0F2870A01FCF9368006230BF /* NBRegularExpressionCache.h */, + 0F2870A11FCF9368006230BF /* NBRegularExpressionCache.m */, + 0F58330E1FD2004A00F26ED4 /* NBPhoneNumberUtil+Category.h */, + ); + path = Internal; + sourceTree = ""; + }; 14B7A2681DE9AC4B0051AED7 /* libPhoneNumber.generator */ = { isa = PBXGroup; children = ( FD2014DC169A8A82003491D9 /* index.php */, FD2014DD169A8A82003491D9 /* libPhoneNumberGenerator.php */, 187A618A1A25DF04000D8BB6 /* PhoneNumberMetaData.json */, + 0F4D82491FCF5CFB009F9C17 /* ShortNumberMetadata.json */, 187A618B1A25DF04000D8BB6 /* PhoneNumberMetaDataForTesting.json */, ); name = libPhoneNumber.generator; @@ -295,6 +349,9 @@ 1485C52B1E06F4930092F541 /* Info.plist */, 1485C5231E06F4890092F541 /* NBAsYouTypeFormatterTest.m */, 1485C5251E06F4890092F541 /* NBPhoneNumberUtilTest.m */, + 0F4D824B1FCF60A5009F9C17 /* NBShortNumberInfoTest.m */, + 0F5833091FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.h */, + 0F58330A1FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.m */, ); name = libPhoneNumber.tests; path = libPhoneNumberTests; @@ -456,6 +513,7 @@ FD7A0626167715A0004BBEB6 /* libPhoneNumber.core */ = { isa = PBXGroup; children = ( + 0F2870951FCF8EDE006230BF /* Internal */, 8B0FD2E61E4A846F0049DF81 /* GeneratePhoneNumberHeader.sh */, 14B7A26A1DE9ACCD0051AED7 /* Extensions */, FDBCFA121A87ADAB00297F21 /* Metadata */, @@ -468,6 +526,8 @@ FD8B84271934C35F00C350EB /* NBAsYouTypeFormatter.m */, 8B0FD2F91E4A88AC0049DF81 /* NSArray+NBAdditions.h */, 8B0FD2FA1E4A88AC0049DF81 /* NSArray+NBAdditions.m */, + 0F2870911FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.h */, + 0F2870921FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m */, ); name = libPhoneNumber.core; path = libPhoneNumber; @@ -498,10 +558,12 @@ 8B0FD2FC1E4A88AC0049DF81 /* NSArray+NBAdditions.h in Headers */, 1F31D53B1DDD46ED00257818 /* NBPhoneNumberUtil.h in Headers */, 1F31D52E1DDD46B100257818 /* libPhoneNumberwatchOS.h in Headers */, + 0F2870991FCF8F13006230BF /* NBRegExMatcher.h in Headers */, 1F31D53D1DDD46F300257818 /* NBAsYouTypeFormatter.h in Headers */, 1F31D5321DDD46B900257818 /* NBMetadataHelper.h in Headers */, 1F31D5391DDD46E600257818 /* NBPhoneNumberDefines.h in Headers */, 1F31D5441DDD477D00257818 /* NBPhoneNumberDesc.h in Headers */, + 0F2870A31FCF9368006230BF /* NBRegularExpressionCache.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -516,10 +578,12 @@ 8B0FD2FD1E4A88AC0049DF81 /* NSArray+NBAdditions.h in Headers */, 1F31D5601DDD482600257818 /* NBPhoneNumberDesc.h in Headers */, 1F31D5661DDD483700257818 /* NBPhoneNumberUtil.h in Headers */, + 0F28709A1FCF8F13006230BF /* NBRegExMatcher.h in Headers */, 1F31D5681DDD483C00257818 /* NBAsYouTypeFormatter.h in Headers */, 1F31D55E1DDD482000257818 /* NBNumberFormat.h in Headers */, 1F31D5641DDD483200257818 /* NBPhoneNumberDefines.h in Headers */, 1F31D55C1DDD481B00257818 /* NBPhoneNumber.h in Headers */, + 0F2870A41FCF9368006230BF /* NBRegularExpressionCache.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -528,6 +592,8 @@ buildActionMask = 2147483647; files = ( 8B1FEFA01EB7BFC500FBDE87 /* NBGeneratedPhoneNumberMetaData.h in Headers */, + 0F58330B1FD1FC9500F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.h in Headers */, + 0F2870981FCF8F13006230BF /* NBRegExMatcher.h in Headers */, 34ACBBB61B7124AB0064B3BD /* NBPhoneNumberDefines.h in Headers */, 34ACBBBD1B7125450064B3BD /* NBAsYouTypeFormatter.h in Headers */, 34ACBBBA1B7124E40064B3BD /* NBPhoneMetaData.h in Headers */, @@ -537,6 +603,8 @@ 34ACBB8A1B7122AC0064B3BD /* libPhoneNumberiOS.h in Headers */, 34ACBBB71B7124BE0064B3BD /* NBPhoneNumber.h in Headers */, 34ACBBBB1B7124EF0064B3BD /* NBPhoneNumberUtil.h in Headers */, + 0F2870931FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.h in Headers */, + 0F2870A21FCF9368006230BF /* NBRegularExpressionCache.h in Headers */, 34ACBBB91B7124DB0064B3BD /* NBPhoneNumberDesc.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -552,10 +620,12 @@ 8B0FD2FE1E4A88AC0049DF81 /* NSArray+NBAdditions.h in Headers */, 7C7250931E0EC06900F916ED /* NBPhoneNumberDesc.h in Headers */, 7C7250961E0EC06900F916ED /* NBPhoneNumberUtil.h in Headers */, + 0F28709B1FCF8F13006230BF /* NBRegExMatcher.h in Headers */, 7C7250971E0EC06900F916ED /* NBAsYouTypeFormatter.h in Headers */, 7C7250921E0EC06900F916ED /* NBNumberFormat.h in Headers */, 7C7250951E0EC06900F916ED /* NBPhoneNumberDefines.h in Headers */, 7C7250911E0EC06900F916ED /* NBPhoneNumber.h in Headers */, + 0F2870A51FCF9368006230BF /* NBRegularExpressionCache.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -816,14 +886,19 @@ 1485C5291E06F4890092F541 /* NBPhoneNumberUtilTest.m in Sources */, 14B7A2AB1DE9BF160051AED7 /* NBMetadataHelper.m in Sources */, 14B7A2B01DE9BF160051AED7 /* NBPhoneNumber.m in Sources */, + 0F4D824C1FCF60A5009F9C17 /* NBShortNumberInfoTest.m in Sources */, 14B7A2B11DE9BF160051AED7 /* NBNumberFormat.m in Sources */, + 0F2870AD1FCF9617006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */, 8B0FD3031E4A88AC0049DF81 /* NSArray+NBAdditions.m in Sources */, 14B7A2B21DE9BF160051AED7 /* NBPhoneNumberDesc.m in Sources */, 14B7A2B31DE9BF160051AED7 /* NBPhoneMetaData.m in Sources */, 14B7A2B41DE9BF160051AED7 /* NBPhoneNumberDefines.m in Sources */, 1485C5271E06F4890092F541 /* NBAsYouTypeFormatterTest.m in Sources */, + 0F58330D1FD1FD1400F26ED4 /* NBPhoneNumberUtil+ShortNumberTest.m in Sources */, 14B7A2B51DE9BF160051AED7 /* NBPhoneNumberUtil.m in Sources */, + 0F2870AF1FCF961C006230BF /* NBRegExMatcher.m in Sources */, 14B7A2B61DE9BF160051AED7 /* NBAsYouTypeFormatter.m in Sources */, + 0F2870B11FCF9620006230BF /* NBRegularExpressionCache.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -836,13 +911,16 @@ 14B7A2DA1DE9D8B30051AED7 /* NBPhoneNumber.m in Sources */, 14B7A2DB1DE9D8B30051AED7 /* NBNumberFormat.m in Sources */, 14B7A2DC1DE9D8B30051AED7 /* NBPhoneNumberDesc.m in Sources */, + 0F2870AE1FCF9617006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */, 14B7A2DD1DE9D8B30051AED7 /* NBPhoneMetaData.m in Sources */, 14B7A2DE1DE9D8B30051AED7 /* NBPhoneNumberDefines.m in Sources */, 14B7A2DF1DE9D8B30051AED7 /* NBPhoneNumberUtil.m in Sources */, 14B7A2E01DE9D8B30051AED7 /* NBAsYouTypeFormatter.m in Sources */, 14B7A2C81DE9D7F70051AED7 /* ViewController.m in Sources */, 14B7A2C51DE9D7F70051AED7 /* AppDelegate.m in Sources */, + 0F2870B01FCF961D006230BF /* NBRegExMatcher.m in Sources */, 14B7A2C21DE9D7F70051AED7 /* main.m in Sources */, + 0F2870B21FCF9620006230BF /* NBRegularExpressionCache.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -855,7 +933,10 @@ 1F31D53E1DDD46F700257818 /* NBAsYouTypeFormatter.m in Sources */, 1F31D5451DDD478100257818 /* NBPhoneNumberDesc.m in Sources */, 1F31D53C1DDD46F000257818 /* NBPhoneNumberUtil.m in Sources */, + 0F2870A71FCF9368006230BF /* NBRegularExpressionCache.m in Sources */, 1F31D5431DDD477B00257818 /* NBNumberFormat.m in Sources */, + 0F2870AA1FCF9612006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */, + 0F28709D1FCF8F13006230BF /* NBRegExMatcher.m in Sources */, 1F31D5471DDD478600257818 /* NBPhoneMetaData.m in Sources */, 1F31D5411DDD477600257818 /* NBPhoneNumber.m in Sources */, 1F31D53A1DDD46EA00257818 /* NBPhoneNumberDefines.m in Sources */, @@ -871,7 +952,10 @@ 1F31D5611DDD482900257818 /* NBPhoneNumberDesc.m in Sources */, 1F31D5651DDD483500257818 /* NBPhoneNumberDefines.m in Sources */, 1F31D5561DDD47F000257818 /* NBMetadataHelper.m in Sources */, + 0F2870A81FCF9368006230BF /* NBRegularExpressionCache.m in Sources */, 1F31D55D1DDD481D00257818 /* NBPhoneNumber.m in Sources */, + 0F2870AB1FCF9612006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */, + 0F28709E1FCF8F13006230BF /* NBRegExMatcher.m in Sources */, 1F31D5691DDD484000257818 /* NBAsYouTypeFormatter.m in Sources */, 1F31D5671DDD483A00257818 /* NBPhoneNumberUtil.m in Sources */, 1F31D55F1DDD482300257818 /* NBNumberFormat.m in Sources */, @@ -885,12 +969,15 @@ 34ACBBAF1B71230B0064B3BD /* NBMetadataHelper.m in Sources */, 8B0FD2FF1E4A88AC0049DF81 /* NSArray+NBAdditions.m in Sources */, 34ACBBAC1B7122FF0064B3BD /* NBPhoneNumberDesc.m in Sources */, + 0F2870941FCF7936006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */, 34ACBBAA1B7122F80064B3BD /* NBPhoneNumber.m in Sources */, + 0F28709C1FCF8F13006230BF /* NBRegExMatcher.m in Sources */, 34ACBBAE1B7123090064B3BD /* NBPhoneNumberUtil.m in Sources */, 34ACBBAB1B7122FD0064B3BD /* NBNumberFormat.m in Sources */, 34ACBBAD1B7123020064B3BD /* NBPhoneMetaData.m in Sources */, 34ACBBB01B71230E0064B3BD /* NBAsYouTypeFormatter.m in Sources */, A81D6A2B1BECC44600F68F34 /* NBPhoneNumberDefines.m in Sources */, + 0F2870A61FCF9368006230BF /* NBRegularExpressionCache.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -903,7 +990,10 @@ 7C7250891E0EC03400F916ED /* NBPhoneNumberDesc.m in Sources */, 7C72508B1E0EC03A00F916ED /* NBPhoneNumberDefines.m in Sources */, 7C7250841E0EC01E00F916ED /* NBMetadataHelper.m in Sources */, + 0F2870A91FCF9368006230BF /* NBRegularExpressionCache.m in Sources */, 7C7250871E0EC03400F916ED /* NBPhoneNumber.m in Sources */, + 0F2870AC1FCF9612006230BF /* NBPhoneNumberUtil+ShortNumber.m in Sources */, + 0F28709F1FCF8F13006230BF /* NBRegExMatcher.m in Sources */, 7C72508D1E0EC03A00F916ED /* NBAsYouTypeFormatter.m in Sources */, 7C72508C1E0EC03A00F916ED /* NBPhoneNumberUtil.m in Sources */, 7C7250881E0EC03400F916ED /* NBNumberFormat.m in Sources */, @@ -983,6 +1073,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "TESTING=1", + SHORT_NUMBER_SUPPORT, ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; @@ -1011,7 +1102,10 @@ ENABLE_NS_ASSERTIONS = NO; GCC_GENERATE_TEST_COVERAGE_FILES = NO; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; - GCC_PREPROCESSOR_DEFINITIONS = "TESTING=1"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "TESTING=1", + SHORT_NUMBER_SUPPORT, + ); GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = libPhoneNumberTests/Info.plist; diff --git a/libPhoneNumber/GeneratePhoneNumberHeader.sh b/libPhoneNumber/GeneratePhoneNumberHeader.sh index 8e03a42..2744036 100755 --- a/libPhoneNumber/GeneratePhoneNumberHeader.sh +++ b/libPhoneNumber/GeneratePhoneNumberHeader.sh @@ -22,11 +22,12 @@ cd "${BASH_SOURCE%/*}" || exit TEMPDIR=$(mktemp -d) gzip -c "../libPhoneNumberTests/generatedJSON/PhoneNumberMetaDataForTesting.json" > "$TEMPDIR/PhoneNumberMetaDataForTesting.zip" gzip -c "../libPhoneNumberTests/generatedJSON/PhoneNumberMetaData.json" > "$TEMPDIR/PhoneNumberMetaData.zip" +gzip -c "../libPhoneNumberTests/generatedJSON/ShortNumberMetaData.json" > "$TEMPDIR/ShortNumberMetaData.zip" cat > "NBGeneratedPhoneNumberMetaData.h" <<'EOF' /***** * Data Generated from GeneratePhoneNumberHeader.sh - * Off of PhoneNumberMetaDataForTesting.json and PhoneNumberMetaData.json + * Off of PhoneNumberMetaDataForTesting.json, PhoneNumberMetaData.json, and ShortNumberMetaData.json */ #include @@ -70,6 +71,25 @@ LIB_SIZE=$(stat -f%z "../libPhoneNumberTests/generatedJSON/PhoneNumberMetaData.j echo "z_const size_t kPhoneNumberMetaDataExpandedLength = $LIB_SIZE;" >> "NBGeneratedPhoneNumberMetaData.h" echo "#endif // TESTING" >> "NBGeneratedPhoneNumberMetaData.h" +# ShortNumberMetadata +cat >> "NBGeneratedPhoneNumberMetaData.h" <<'EOF' + +#if SHORT_NUMBER_SUPPORT + +z_const Bytef kShortNumberMetaData[] = { +EOF + +cat "$TEMPDIR/ShortNumberMetaData.zip" | xxd -i >> "NBGeneratedPhoneNumberMetaData.h" + +cat >> "NBGeneratedPhoneNumberMetaData.h" <<'EOF' +}; +z_const size_t kShortNumberMetaDataCompressedLength = sizeof(kShortNumberMetaData); +EOF +LIB_SIZE=$(stat -f%z "../libPhoneNumberTests/generatedJSON/ShortNumberMetaData.json") +echo "z_const size_t kShortNumberMetaDataExpandedLength = $LIB_SIZE;" >> "NBGeneratedPhoneNumberMetaData.h" +echo "#endif // SHORT_NUMBER_SUPPORT" >> "NBGeneratedPhoneNumberMetaData.h" + rm "$TEMPDIR/PhoneNumberMetaDataForTesting.zip" rm "$TEMPDIR/PhoneNumberMetaData.zip" +rm "$TEMPDIR/ShortNumberMetaData.zip" rmdir "$TEMPDIR" diff --git a/libPhoneNumber/Internal/NBPhoneNumberUtil+Category.h b/libPhoneNumber/Internal/NBPhoneNumberUtil+Category.h new file mode 100644 index 0000000..457a48f --- /dev/null +++ b/libPhoneNumber/Internal/NBPhoneNumberUtil+Category.h @@ -0,0 +1,23 @@ +// +// NBPhoneNumberUtil+Category.h +// libPhoneNumber +// +// Created by Paween Itthipalkul on 12/1/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import + +#import "NBPhoneNumberUtil.h" + +@class NBMetadataHelper, NBRegExMatcher; + +/** + This interface exposes properties used in NBPhoneNumberUtil categories. + */ +@interface NBPhoneNumberUtil() + +@property (nonatomic, strong, readonly) NBMetadataHelper *helper; +@property (nonatomic, strong, readonly) NBRegExMatcher *matcher; + +@end diff --git a/libPhoneNumber/Internal/NBRegExMatcher.h b/libPhoneNumber/Internal/NBRegExMatcher.h new file mode 100644 index 0000000..6c2373c --- /dev/null +++ b/libPhoneNumber/Internal/NBRegExMatcher.h @@ -0,0 +1,28 @@ +// +// NBRegExMatcher.h +// libPhoneNumber +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import + +@class NBPhoneNumberDesc; + +@interface NBRegExMatcher : NSObject + +/** + Returns whether the given national number (a string containing only decimal digits) matches + the national number pattern defined in the given {@code PhoneNumberDesc} message. + + @param string National number string ot match. + @param numberDesc Phone number description. + @param allowsPrefixMatch Whether to allow prefix match or not. + @return Whether the given national number matches the pattern. + */ +- (BOOL)matchNationalNumber:(NSString *)string + phoneNumberDesc:(NBPhoneNumberDesc *)numberDesc + allowsPrefixMatch:(BOOL)allowsPrefixMatch; + +@end diff --git a/libPhoneNumber/Internal/NBRegExMatcher.m b/libPhoneNumber/Internal/NBRegExMatcher.m new file mode 100644 index 0000000..c560314 --- /dev/null +++ b/libPhoneNumber/Internal/NBRegExMatcher.m @@ -0,0 +1,73 @@ +// +// NBRegExMatcher.m +// libPhoneNumber +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import "NBRegExMatcher.h" +#import "NBPhoneNumberDesc.h" +#import "NBRegularExpressionCache.h" +#import "NBPhoneNumberUtil.h" + +// Expose this method to get a modified RegEx to cover the entire RegEx. +// Though all RegEx methods and functionalities should be moved to either this class, or a separate +// class rather than in NBPhoneNumberUtil. +@interface NBPhoneNumberUtil() +- (NSRegularExpression *)entireRegularExpressionWithPattern:(NSString *)regexPattern + options:(NSRegularExpressionOptions)options + error:(NSError **)error; + +@end + +@implementation NBRegExMatcher + +- (BOOL)matchNationalNumber:(NSString *)string + phoneNumberDesc:(NBPhoneNumberDesc *)numberDesc + allowsPrefixMatch:(BOOL)allowsPrefixMatch { + NSString *nationalNumberPattern = numberDesc.nationalNumberPattern; + + // We don't want to consider it a prefix match when matching non-empty input against an empty + // pattern. + if (nationalNumberPattern.length == 0) { + return NO; + } + + NSRegularExpression *regEx = + [[NBPhoneNumberUtil sharedInstance] entireRegularExpressionWithPattern:nationalNumberPattern + options:kNilOptions + error:nil]; + + if (regEx == nil) { + NSAssert(true, @"Regular expression shouldn't be nil"); + return NO; + } + + NSRange wholeStringRange = NSMakeRange(0, string.length); + + // Prefix match (lookingAt()) search + NSRegularExpression *prefixRegEx = + [[NBRegularExpressionCache sharedInstance] regularExpressionForPattern:nationalNumberPattern]; + NSTextCheckingResult *prefixResult = [prefixRegEx firstMatchInString:string + options:NSMatchingAnchored + range:wholeStringRange]; + if (prefixResult.numberOfRanges < 1) { + // No prefix match found. + return NO; + } else { + // Found prefix match, but need to see if exact match works as well. + // Exact match (matches()) search. + NSTextCheckingResult *exactResult = [regEx firstMatchInString:string + options:NSMatchingAnchored + range:wholeStringRange]; + + if (exactResult.numberOfRanges > 0) { + return YES; + } else { + return allowsPrefixMatch; + } + } +} + +@end diff --git a/libPhoneNumber/Internal/NBRegularExpressionCache.h b/libPhoneNumber/Internal/NBRegularExpressionCache.h new file mode 100644 index 0000000..6898a3f --- /dev/null +++ b/libPhoneNumber/Internal/NBRegularExpressionCache.h @@ -0,0 +1,32 @@ +// +// NBRegularExpressionCache.h +// libPhoneNumber +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NBRegularExpressionCache : NSObject + +/** + Returns a singleton instance of the regular expression cache. + + @return An instance of NBRegularExpressionCache + */ ++ (instancetype)sharedInstance; + +/** + Returns compiled regular expression for a given pattern. + + @param pattern Regular expression pattern. + @return A regular expression. + */ +- (nullable NSRegularExpression *)regularExpressionForPattern:(NSString *)pattern; + +@end + +NS_ASSUME_NONNULL_END diff --git a/libPhoneNumber/Internal/NBRegularExpressionCache.m b/libPhoneNumber/Internal/NBRegularExpressionCache.m new file mode 100644 index 0000000..39cae81 --- /dev/null +++ b/libPhoneNumber/Internal/NBRegularExpressionCache.m @@ -0,0 +1,60 @@ +// +// NBRegularExpressionCache.m +// libPhoneNumber +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import "NBRegularExpressionCache.h" + +@interface NBRegularExpressionCache() + +@property (nonatomic, strong) NSCache *cache; + +@end + +@implementation NBRegularExpressionCache + ++ (instancetype)sharedInstance { + static NBRegularExpressionCache *instance; + static dispatch_once_t token; + dispatch_once(&token, ^{ + instance = [[NBRegularExpressionCache alloc] init]; + }); + + return instance; +} + +- (instancetype)init { + self = [super init]; + if (self != nil) { + _cache = [[NSCache alloc] init]; + } + + return self; +} + +- (NSRegularExpression *)regularExpressionForPattern:(NSString *)pattern { + @synchronized(self) { + NSRegularExpression *cachedObject = [self.cache objectForKey:pattern]; + if (cachedObject != nil) { + return cachedObject; + } + + NSError *error = nil; + NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:pattern + options:kNilOptions + error:&error]; + if (regEx == nil && error != nil) { + NSLog(@"An error parsing a regular expression: %@", error); + return nil; + } + + [self.cache setObject:regEx forKey:pattern]; + + return regEx; + } +} + +@end diff --git a/libPhoneNumber/NBGeneratedPhoneNumberMetaData.h b/libPhoneNumber/NBGeneratedPhoneNumberMetaData.h index cbd0e35..f38f909 100644 --- a/libPhoneNumber/NBGeneratedPhoneNumberMetaData.h +++ b/libPhoneNumber/NBGeneratedPhoneNumberMetaData.h @@ -1,6 +1,6 @@ /***** * Data Generated from GeneratePhoneNumberHeader.sh - * Off of PhoneNumberMetaDataForTesting.json and PhoneNumberMetaData.json + * Off of PhoneNumberMetaDataForTesting.json, PhoneNumberMetaData.json, and ShortNumberMetaData.json */ #include @@ -4070,3 +4070,1209 @@ z_const Bytef kPhoneNumberMetaData[] = { z_const size_t kPhoneNumberMetaDataCompressedLength = sizeof(kPhoneNumberMetaData); z_const size_t kPhoneNumberMetaDataExpandedLength = 308642; #endif // TESTING + +#if SHORT_NUMBER_SUPPORT + +z_const Bytef kShortNumberMetaData[] = { + 0x1f, 0x8b, 0x08, 0x08, 0x0a, 0x3e, 0x1f, 0x5a, 0x00, 0x03, 0x53, 0x68, + 0x6f, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x6a, 0x73, 0x6f, 0x6e, 0x00, 0xed, + 0x7d, 0x5d, 0x6f, 0xdc, 0x48, 0x96, 0xe5, 0x7f, 0xd1, 0x93, 0x13, 0x90, + 0x00, 0xc6, 0x27, 0xc9, 0x7e, 0x11, 0x5a, 0xb2, 0x2d, 0xbb, 0x6c, 0xa9, + 0x54, 0x96, 0xec, 0xea, 0x2a, 0x4e, 0x3e, 0x34, 0xb6, 0x1b, 0x8b, 0x05, + 0x06, 0xdd, 0x8b, 0x45, 0xcf, 0xc3, 0xa2, 0xa3, 0xfe, 0xfb, 0xc4, 0xb9, + 0x11, 0x64, 0x66, 0x92, 0x37, 0x98, 0x4c, 0x89, 0x0a, 0x91, 0xf6, 0xec, + 0x6c, 0x67, 0x59, 0x4c, 0xc6, 0x47, 0x06, 0x2f, 0x23, 0xee, 0xc7, 0xb9, + 0xe7, 0xfe, 0xfb, 0xec, 0x7f, 0xfd, 0xf3, 0xbf, 0xfe, 0xf1, 0xaf, 0xff, + 0xf7, 0xff, 0xaf, 0xff, 0xf9, 0xb7, 0xbf, 0x3f, 0xfe, 0xf3, 0xcb, 0xdf, + 0xff, 0xf7, 0xff, 0xf9, 0xe7, 0x3f, 0xf0, 0xef, 0xdb, 0xbf, 0xfe, 0xdf, + 0xb3, 0x3f, 0xfd, 0xfb, 0xac, 0x38, 0xfb, 0x53, 0x73, 0xf6, 0xe7, 0xeb, + 0xb3, 0xf3, 0xb3, 0x3f, 0xbf, 0xc5, 0xc7, 0x3b, 0x7c, 0xbc, 0xc7, 0xc7, + 0x0d, 0x3e, 0x3e, 0xe2, 0xe3, 0x33, 0x3e, 0x6e, 0xf1, 0xf1, 0x33, 0x3e, + 0xbe, 0xe0, 0xe3, 0x01, 0x1f, 0x8f, 0xf8, 0xf8, 0x8a, 0x8f, 0x5f, 0xf1, + 0xf1, 0x17, 0x7c, 0xfc, 0xee, 0x3f, 0xae, 0xfe, 0x8c, 0x8f, 0x2b, 0x7c, + 0xa0, 0xd3, 0x2b, 0x74, 0x7a, 0x85, 0x4e, 0xaf, 0xd0, 0xe9, 0xd5, 0x07, + 0x7c, 0xa0, 0xe7, 0xab, 0x9f, 0xf0, 0x81, 0xee, 0xaf, 0xd0, 0xfd, 0xd5, + 0x1d, 0x3e, 0x30, 0xc6, 0xd5, 0x2f, 0xf8, 0xc0, 0x40, 0x57, 0x18, 0xe8, + 0x0a, 0x03, 0x5d, 0x61, 0x8c, 0xab, 0xdf, 0xf0, 0x81, 0x31, 0xae, 0x31, + 0xc6, 0x35, 0x26, 0x7e, 0x8d, 0x31, 0xae, 0xd1, 0xfd, 0x35, 0xba, 0xbf, + 0x46, 0xf7, 0xd7, 0xe8, 0xfe, 0xfa, 0x13, 0x3e, 0xd0, 0xfd, 0x35, 0xba, + 0xbf, 0x46, 0xf7, 0xd7, 0xe8, 0xfe, 0x1a, 0x3d, 0x5f, 0x63, 0xe2, 0xd7, + 0xdf, 0xf0, 0x81, 0x9e, 0xaf, 0x31, 0xfb, 0x6b, 0x74, 0x7f, 0x8d, 0xee, + 0xdf, 0x62, 0xce, 0x6f, 0x31, 0xbf, 0xb7, 0xe8, 0xe5, 0x2d, 0x3a, 0x78, + 0x8b, 0xb6, 0x6f, 0xf1, 0xed, 0x3b, 0x8c, 0xfb, 0x0e, 0xb7, 0xbc, 0xc3, + 0x90, 0xef, 0x30, 0xe4, 0x3b, 0x74, 0xfa, 0x0e, 0xd3, 0x7d, 0x87, 0xe9, + 0xbe, 0xc7, 0x0c, 0xde, 0xa3, 0x83, 0xf7, 0xe8, 0xe0, 0x3d, 0x3a, 0x78, + 0x8f, 0x0e, 0xde, 0xe3, 0xbe, 0x1b, 0xcc, 0xfe, 0x06, 0x2b, 0x74, 0x83, + 0xd9, 0xdf, 0xa0, 0xab, 0x1b, 0xfc, 0x84, 0x1b, 0xf4, 0x77, 0x83, 0xfe, + 0x6e, 0xd0, 0xc1, 0x0d, 0x66, 0x7f, 0x83, 0xb6, 0x37, 0x98, 0xfd, 0xcd, + 0x3d, 0x3e, 0xa8, 0x03, 0x8c, 0x71, 0x83, 0x9f, 0x70, 0x83, 0xd9, 0xdf, + 0x60, 0xe2, 0x1f, 0x30, 0xd0, 0x07, 0xdc, 0xf7, 0x01, 0xb7, 0x7c, 0xc0, + 0x2d, 0x1f, 0x70, 0xcb, 0x47, 0x8c, 0xf1, 0x11, 0x63, 0x7c, 0x44, 0x7f, + 0x1f, 0xd1, 0xdf, 0x47, 0xdc, 0xf7, 0x11, 0xeb, 0xfc, 0x11, 0x37, 0x7f, + 0xc4, 0xc4, 0x3f, 0xa2, 0xc5, 0x4f, 0xb8, 0xef, 0x27, 0xdc, 0xf2, 0x13, + 0xa6, 0xfb, 0x13, 0x86, 0xfc, 0x84, 0x6b, 0x9f, 0x30, 0xb5, 0x4f, 0x98, + 0xda, 0x27, 0x4c, 0xed, 0x13, 0x6e, 0xf9, 0x84, 0x5e, 0x3e, 0xd1, 0x2d, + 0xe8, 0xe5, 0x13, 0xe6, 0xf2, 0x09, 0x73, 0xf9, 0x84, 0x65, 0xfa, 0x8c, + 0x5f, 0xf9, 0x19, 0xbf, 0xf2, 0x33, 0x16, 0xec, 0x33, 0x9a, 0x7d, 0xc6, + 0x24, 0x3f, 0xe3, 0xe6, 0xcf, 0x18, 0xf2, 0x33, 0x86, 0xfc, 0x8c, 0x49, + 0x7e, 0xc6, 0xa3, 0xf8, 0x8c, 0xb6, 0xb7, 0x68, 0x76, 0x8b, 0x16, 0xb7, + 0x98, 0xf8, 0x2d, 0x06, 0xbf, 0xc5, 0xe2, 0xdc, 0x62, 0x06, 0xb7, 0x98, + 0xc1, 0x2d, 0x7a, 0xb9, 0xc5, 0x8f, 0xb9, 0xc5, 0x34, 0x6e, 0x31, 0x8d, + 0x5b, 0x4c, 0xf7, 0x16, 0x73, 0xb9, 0xc5, 0xcf, 0xba, 0xc5, 0x18, 0xb7, + 0x18, 0xe3, 0x16, 0x63, 0xdc, 0x62, 0x8c, 0x5b, 0x8c, 0x71, 0x8b, 0x49, + 0xde, 0xe2, 0x71, 0xdf, 0xd2, 0x68, 0x98, 0xe9, 0x1d, 0x86, 0xbc, 0xc3, + 0x90, 0x77, 0x18, 0xed, 0x0e, 0xa3, 0xdd, 0x61, 0xb4, 0x3b, 0xcc, 0xf9, + 0x0e, 0x03, 0xdd, 0xa1, 0xfb, 0x3b, 0x74, 0x7f, 0x87, 0x9e, 0xef, 0xd0, + 0xdf, 0x1d, 0xda, 0xfe, 0x8c, 0x19, 0xdc, 0xa3, 0x83, 0x7b, 0xb4, 0xbd, + 0x47, 0xdb, 0x7b, 0xb4, 0xbd, 0xc7, 0x4c, 0xef, 0x31, 0xd3, 0x7b, 0x74, + 0x70, 0x4f, 0xf7, 0x61, 0x42, 0xf7, 0xe8, 0xe0, 0x1e, 0xb3, 0xba, 0xc7, + 0x5c, 0xee, 0x31, 0x8d, 0x5f, 0xd0, 0xc1, 0x17, 0x74, 0xf0, 0x05, 0x03, + 0x7d, 0xc1, 0x7d, 0x5f, 0x30, 0xc6, 0x17, 0xdc, 0xf2, 0x80, 0x6f, 0x1f, + 0xb0, 0x92, 0x0f, 0x98, 0xe4, 0x03, 0xd6, 0xe5, 0x01, 0x37, 0x3f, 0x60, + 0xa0, 0x07, 0x0c, 0xf4, 0x80, 0x99, 0x3e, 0x40, 0xe0, 0x1e, 0x30, 0xe4, + 0x03, 0x86, 0x7c, 0xc0, 0x90, 0x0f, 0x58, 0x9c, 0x07, 0x74, 0xfa, 0x80, + 0x71, 0x1f, 0x30, 0xee, 0x03, 0x16, 0xe2, 0x01, 0x6b, 0xf0, 0x80, 0xc1, + 0x1f, 0xf0, 0x3b, 0x1e, 0xd1, 0xf3, 0x23, 0x7a, 0x7e, 0x44, 0xa7, 0x8f, + 0xe8, 0xf4, 0x11, 0xfd, 0x3d, 0xa2, 0xab, 0x47, 0x74, 0xf5, 0x88, 0xae, + 0x1e, 0xd1, 0xd5, 0x23, 0xba, 0x7a, 0x44, 0x57, 0x8f, 0xe8, 0xea, 0x11, + 0x93, 0x7c, 0x44, 0x2f, 0x5f, 0x31, 0xd3, 0xaf, 0xe8, 0xe0, 0x2b, 0x7e, + 0xc2, 0x57, 0x74, 0xff, 0x15, 0x5f, 0x7c, 0xc3, 0x17, 0xdf, 0x30, 0xc6, + 0x37, 0x4c, 0xfc, 0x1b, 0x6e, 0xf9, 0x86, 0x39, 0x7f, 0x43, 0xa7, 0xdf, + 0xf0, 0x53, 0x7f, 0xc5, 0xd2, 0xfd, 0x8a, 0x66, 0xbf, 0xe1, 0x96, 0xdf, + 0xd0, 0xfd, 0xef, 0x68, 0xf6, 0x3b, 0x06, 0xff, 0xfd, 0xd7, 0xb3, 0xed, + 0x1f, 0xe7, 0xed, 0x7e, 0xf6, 0xf8, 0xcf, 0xdb, 0xbf, 0xff, 0xeb, 0xaf, + 0x7f, 0xfb, 0xeb, 0xbf, 0xfe, 0x8a, 0x6d, 0xcc, 0xef, 0x60, 0x7f, 0x6a, + 0xfe, 0xf1, 0x5f, 0xff, 0xf9, 0x9f, 0xe7, 0xe1, 0x93, 0x3e, 0xce, 0xea, + 0xff, 0xf8, 0x8f, 0xbf, 0xfd, 0x5b, 0xfe, 0x71, 0x76, 0xbe, 0xbb, 0xc6, + 0x7d, 0x34, 0x6a, 0xbb, 0xdd, 0xff, 0x73, 0xfc, 0xee, 0x7e, 0xe3, 0x0b, + 0xe1, 0x5b, 0x3f, 0xa5, 0x4d, 0xef, 0x22, 0xed, 0xc2, 0x27, 0x75, 0x33, + 0x79, 0xb8, 0xfd, 0x25, 0x11, 0x62, 0x30, 0x0a, 0x5d, 0xdc, 0x9e, 0x74, + 0x6f, 0xae, 0x35, 0x7a, 0x42, 0x9b, 0x2d, 0x1d, 0x65, 0x8c, 0x34, 0x88, + 0x75, 0x49, 0xc3, 0xdb, 0x0c, 0xd2, 0x20, 0x44, 0x53, 0x48, 0x5b, 0x6d, + 0x87, 0x8f, 0x59, 0x08, 0xc9, 0x89, 0xc4, 0xb1, 0x06, 0x0b, 0x97, 0x8b, + 0x77, 0x9c, 0x5c, 0x34, 0x42, 0xd7, 0x5b, 0x92, 0x8d, 0x73, 0x35, 0x41, + 0x3a, 0xce, 0xf5, 0x32, 0xe4, 0xe3, 0x5d, 0x16, 0xf9, 0x90, 0xae, 0xae, + 0x9b, 0xb2, 0xaa, 0x13, 0x4f, 0x9c, 0x7d, 0x6f, 0xfa, 0x3d, 0x68, 0x6d, + 0x1a, 0x61, 0xb7, 0xe3, 0x3d, 0xbd, 0x8a, 0xec, 0x9c, 0xc5, 0xa9, 0x0d, + 0xa7, 0xe4, 0xbf, 0x38, 0xd8, 0xfc, 0x1a, 0x1d, 0x24, 0xe8, 0x7d, 0x42, + 0x82, 0xa2, 0x00, 0xe9, 0x29, 0x02, 0x64, 0x96, 0x21, 0x40, 0xef, 0x73, + 0x08, 0xd0, 0x9b, 0xcb, 0x3f, 0x15, 0xd2, 0x89, 0x7a, 0xc3, 0x3d, 0xf5, + 0x7a, 0x82, 0xfc, 0x74, 0x1d, 0x38, 0x5d, 0xf8, 0xff, 0xe3, 0xbb, 0x99, + 0x41, 0x10, 0xf8, 0xce, 0x07, 0x97, 0x1b, 0xf3, 0x8c, 0x86, 0x5b, 0x32, + 0xab, 0x58, 0x01, 0x8a, 0x3b, 0xd0, 0x6a, 0x4e, 0xa7, 0x9b, 0x1c, 0xba, + 0x8a, 0x7f, 0xf6, 0x42, 0xf8, 0x6d, 0x83, 0x11, 0x9e, 0x84, 0xca, 0x22, + 0x4a, 0xeb, 0x8e, 0x37, 0x7b, 0xae, 0xb0, 0xf8, 0x51, 0x18, 0x39, 0xf4, + 0x17, 0xa7, 0xde, 0xb6, 0x25, 0xd3, 0xfa, 0xbb, 0x10, 0x84, 0x8f, 0x3f, + 0x8c, 0xd2, 0x3a, 0xcf, 0x63, 0xff, 0xcc, 0x3f, 0x76, 0x13, 0x0f, 0x10, + 0x33, 0xe9, 0x00, 0x39, 0xb7, 0xcb, 0x78, 0xf8, 0x9f, 0x33, 0x1d, 0x21, + 0x5e, 0x89, 0x90, 0xa4, 0x3b, 0x70, 0xc7, 0x88, 0x9c, 0x78, 0x8c, 0xe0, + 0x7f, 0xd2, 0x59, 0x1c, 0x28, 0x45, 0xe1, 0xe8, 0x60, 0xb1, 0xce, 0x6f, + 0x14, 0x52, 0x6d, 0x36, 0x1b, 0xdf, 0xbf, 0xb9, 0xf0, 0xfd, 0x3b, 0x83, + 0xe7, 0xc0, 0x1c, 0xe3, 0x34, 0xce, 0xeb, 0x28, 0x29, 0xc9, 0x29, 0x19, + 0x21, 0x15, 0x7b, 0xc8, 0xdc, 0x26, 0xb4, 0x94, 0xea, 0x14, 0x35, 0x45, + 0x2f, 0x45, 0x51, 0xb9, 0xcd, 0x21, 0x65, 0x45, 0xe3, 0x17, 0x93, 0xd3, + 0x4d, 0x8b, 0x29, 0x5a, 0x6e, 0xd8, 0xb3, 0x83, 0x8a, 0xe2, 0xaa, 0x46, + 0x5c, 0x94, 0xa9, 0x6d, 0xfc, 0xac, 0x2a, 0x67, 0xd9, 0x8c, 0xb2, 0x29, + 0x2c, 0x3f, 0x7f, 0x07, 0xb6, 0xf4, 0xcf, 0x79, 0x6c, 0x69, 0xa9, 0x0c, + 0x6b, 0xdd, 0xa8, 0x84, 0x29, 0x3d, 0x76, 0xff, 0xc2, 0x2d, 0xe9, 0x2f, + 0xec, 0x0e, 0x53, 0x08, 0x55, 0x05, 0x05, 0x46, 0x4c, 0xd9, 0x63, 0xbc, + 0xc1, 0x3d, 0xb6, 0xcb, 0xf8, 0xfe, 0x5a, 0x6d, 0x88, 0xb6, 0xeb, 0xa6, + 0x90, 0x17, 0x74, 0xe1, 0xd2, 0x89, 0xa6, 0xb8, 0x90, 0xda, 0xff, 0x75, + 0xc9, 0x1a, 0x16, 0x87, 0xa6, 0x9b, 0x1f, 0x66, 0x2e, 0x41, 0xfa, 0x92, + 0x67, 0x2b, 0x2a, 0x44, 0xe9, 0xcd, 0x65, 0x4e, 0x93, 0x11, 0x85, 0x38, + 0xbe, 0x1d, 0x75, 0xe7, 0x9b, 0x5f, 0x25, 0x65, 0xfc, 0x5e, 0x84, 0xf5, + 0x92, 0x17, 0x66, 0xeb, 0x4f, 0x39, 0xaf, 0x69, 0x38, 0x6f, 0x4c, 0x29, + 0x55, 0x4a, 0x57, 0xd5, 0x4a, 0x55, 0x89, 0x71, 0xe4, 0x1c, 0x9b, 0xd4, + 0xc8, 0x00, 0xf4, 0xd5, 0xe1, 0x4f, 0x39, 0xef, 0x6f, 0x55, 0xbb, 0x49, + 0x0e, 0xdb, 0xe3, 0xbb, 0x43, 0x03, 0xfd, 0x3c, 0x6e, 0x58, 0x0f, 0xac, + 0x68, 0x76, 0x3e, 0x9e, 0x35, 0x99, 0xe8, 0x0f, 0xaf, 0xa9, 0x5c, 0x1f, + 0x15, 0xb3, 0x70, 0xda, 0x2d, 0xcb, 0x4b, 0x7c, 0xf2, 0xf1, 0xf6, 0x98, + 0x3e, 0xde, 0xa6, 0x29, 0xe3, 0x49, 0x55, 0xdc, 0xef, 0x43, 0x41, 0xd9, + 0x6c, 0x0a, 0xbb, 0xa5, 0xf7, 0x51, 0x94, 0xa4, 0x6c, 0x72, 0x3b, 0x96, + 0xf5, 0xef, 0xec, 0xc1, 0xf4, 0xec, 0x5c, 0x32, 0xf4, 0x98, 0x49, 0x47, + 0xf7, 0xfa, 0xd3, 0x56, 0xfa, 0x7d, 0xc5, 0x69, 0xcd, 0xfe, 0xc2, 0x29, + 0x6a, 0x54, 0x4f, 0x4b, 0xef, 0x2f, 0x9c, 0xd7, 0xd2, 0xc7, 0x47, 0x58, + 0xfc, 0xb1, 0xf9, 0x95, 0x3f, 0x36, 0x65, 0xd9, 0x9d, 0x73, 0x41, 0xf2, + 0xca, 0x89, 0x0a, 0xfa, 0xb9, 0x3d, 0x2f, 0xcf, 0xab, 0xb4, 0x04, 0x62, + 0x31, 0x4d, 0x55, 0x55, 0xc6, 0x19, 0x63, 0x36, 0xae, 0x54, 0x6a, 0xb8, + 0x70, 0xbd, 0x8b, 0xd4, 0x71, 0xd9, 0x37, 0x7d, 0xd1, 0x91, 0xff, 0x9f, + 0xd2, 0x4e, 0x1b, 0xbb, 0x71, 0x75, 0x30, 0x49, 0xb8, 0xc7, 0xe0, 0x5f, + 0x7d, 0xa9, 0xfa, 0x3b, 0x73, 0xef, 0x2d, 0x89, 0xa2, 0xf9, 0x35, 0x83, + 0x68, 0xee, 0xdb, 0x7a, 0xf2, 0xa9, 0x82, 0xb9, 0xdf, 0x09, 0x49, 0xa6, + 0x93, 0xae, 0x6e, 0xb4, 0xf5, 0xf6, 0x22, 0x56, 0xc5, 0x2b, 0x72, 0x78, + 0x7e, 0x4e, 0xb7, 0x51, 0x84, 0x60, 0x45, 0xfa, 0x85, 0xfc, 0xc3, 0x55, + 0x24, 0xcf, 0xd0, 0x8c, 0x82, 0xee, 0xe2, 0x85, 0xd8, 0x3f, 0x0a, 0xdf, + 0xda, 0x5f, 0x08, 0x46, 0xbf, 0xfa, 0x03, 0x72, 0x6d, 0x5c, 0x89, 0xf5, + 0x55, 0xce, 0x96, 0x53, 0x84, 0x3b, 0xbc, 0x2b, 0x51, 0x68, 0xa4, 0xf6, + 0xcf, 0x30, 0x76, 0x62, 0xcb, 0x61, 0x6b, 0xff, 0xc5, 0xe0, 0x09, 0x5b, + 0xee, 0x09, 0xef, 0x44, 0x85, 0x99, 0x82, 0xbf, 0xdc, 0x7b, 0xac, 0x03, + 0x29, 0x09, 0x62, 0x71, 0x6e, 0x39, 0xf3, 0x79, 0x28, 0x17, 0x51, 0x76, + 0xb7, 0x84, 0x1f, 0xf9, 0x2e, 0x9c, 0x61, 0xbf, 0x66, 0x51, 0x0f, 0x8b, + 0xb1, 0x33, 0x97, 0xdd, 0x03, 0x7c, 0x93, 0x12, 0x6f, 0xed, 0xc2, 0x7d, + 0x63, 0x7f, 0x19, 0x31, 0x35, 0x5d, 0x69, 0x70, 0xc2, 0x4c, 0x95, 0x87, + 0xa5, 0x68, 0x70, 0x7f, 0xc9, 0x13, 0xa5, 0x7b, 0x46, 0x74, 0x6e, 0x74, + 0x5d, 0xd7, 0x71, 0xaa, 0xfe, 0x7e, 0xc4, 0xdd, 0xb5, 0xa6, 0xb0, 0xee, + 0xef, 0xb9, 0xa2, 0x72, 0xe4, 0xef, 0x4a, 0x9c, 0x89, 0x53, 0x8c, 0xcc, + 0xc3, 0x4e, 0xc8, 0xf5, 0xe5, 0xaa, 0xea, 0x50, 0x8b, 0xdd, 0x75, 0x37, + 0x8f, 0x62, 0x9f, 0x18, 0x00, 0x5f, 0xf5, 0x83, 0xb5, 0xcf, 0x69, 0xbb, + 0x25, 0x08, 0xe3, 0x33, 0xed, 0x82, 0xa1, 0xd6, 0xd3, 0xb3, 0x0d, 0xc2, + 0xd9, 0x9f, 0xd5, 0x18, 0x00, 0x30, 0xf3, 0xe5, 0xa5, 0x4b, 0x36, 0xf2, + 0x42, 0x73, 0x8e, 0x2d, 0x79, 0x82, 0x0d, 0xd0, 0xb7, 0x00, 0x1a, 0xb8, + 0x44, 0x60, 0x04, 0xb8, 0x2a, 0xf8, 0x97, 0xe4, 0x1f, 0x41, 0xf9, 0x82, + 0x93, 0xc3, 0x7f, 0xd5, 0x90, 0x7f, 0xc3, 0xc2, 0x2f, 0xe4, 0x9b, 0x34, + 0x65, 0xb5, 0xdd, 0xdd, 0xd6, 0xb4, 0xaa, 0x16, 0x8e, 0x91, 0xa8, 0x72, + 0xf1, 0xd3, 0x5b, 0xfa, 0x56, 0x77, 0x75, 0xc5, 0x6e, 0x75, 0xf2, 0xc2, + 0x56, 0x2b, 0xd3, 0x95, 0x00, 0x0f, 0x7e, 0x71, 0x51, 0x84, 0x87, 0xb5, + 0xde, 0x72, 0x5a, 0x8f, 0xe4, 0x95, 0xa5, 0xb8, 0x92, 0xe9, 0x16, 0x0b, + 0x17, 0x0f, 0x16, 0xf8, 0xd6, 0xe9, 0xd1, 0xeb, 0x8a, 0xfb, 0x5c, 0x65, + 0x41, 0xc0, 0x61, 0xfb, 0x90, 0xc0, 0x26, 0xd5, 0x8c, 0x6a, 0x5c, 0x4f, + 0x45, 0xa8, 0x90, 0x77, 0xfa, 0x42, 0xd5, 0x5b, 0x67, 0xf0, 0x27, 0x8c, + 0xc1, 0x46, 0xf8, 0x4d, 0x70, 0xe3, 0x6c, 0xbb, 0xef, 0xf8, 0xef, 0xf5, + 0xd6, 0x55, 0x18, 0x0e, 0x71, 0x46, 0xd1, 0x58, 0x6f, 0x10, 0xd2, 0x0e, + 0x26, 0xfd, 0x35, 0xbf, 0x77, 0x35, 0x0a, 0xf7, 0xab, 0x68, 0xd7, 0x5d, + 0x3a, 0x85, 0x5e, 0xac, 0xdf, 0xbb, 0x60, 0x66, 0xea, 0xb6, 0xdb, 0xa8, + 0x0e, 0x7b, 0x2b, 0xb2, 0x91, 0x14, 0xb0, 0x04, 0xdc, 0xc1, 0xd4, 0x9a, + 0xc7, 0x3b, 0x88, 0x62, 0x86, 0x58, 0xc2, 0x59, 0xed, 0xfb, 0x67, 0x56, + 0xa7, 0x77, 0x75, 0x70, 0xea, 0x4e, 0x6f, 0xb6, 0xa5, 0x24, 0x81, 0xb1, + 0x03, 0xd7, 0x35, 0xd1, 0xf7, 0xcf, 0x1d, 0x99, 0x9c, 0x0c, 0x8f, 0x1c, + 0xbd, 0x74, 0x68, 0x48, 0x73, 0x51, 0x85, 0xa3, 0xa5, 0x70, 0xb6, 0x35, + 0xc3, 0xcb, 0x10, 0x6b, 0x2e, 0x4b, 0x7f, 0xca, 0x08, 0x15, 0x8f, 0x9a, + 0x91, 0x33, 0x9a, 0x77, 0x92, 0xf8, 0x1e, 0x94, 0x0e, 0x4f, 0xb2, 0x28, + 0x1d, 0xfa, 0xd1, 0x42, 0x3b, 0xdf, 0x55, 0xe1, 0xaf, 0xfa, 0xdf, 0x51, + 0x26, 0x7f, 0xc8, 0x59, 0x29, 0x7b, 0x6a, 0xbb, 0xe6, 0x5e, 0x8c, 0x2c, + 0xd0, 0xbf, 0x70, 0xb4, 0x8a, 0x94, 0x8a, 0x38, 0xd5, 0x9f, 0x87, 0xf7, + 0x2b, 0x2e, 0x34, 0xf9, 0xb9, 0x76, 0x01, 0x78, 0x51, 0x6e, 0xda, 0x13, + 0x5c, 0x23, 0x44, 0xe1, 0x57, 0x8d, 0xa2, 0x3a, 0x78, 0x19, 0xe3, 0xea, + 0x85, 0x2f, 0x14, 0x5d, 0xd0, 0xbb, 0x0b, 0xda, 0x99, 0x82, 0xae, 0x95, + 0xc1, 0xb6, 0x15, 0x8d, 0x2c, 0xf1, 0x32, 0xc1, 0x7b, 0x62, 0xfc, 0x9b, + 0x06, 0x55, 0xa1, 0xaa, 0xf1, 0x0c, 0x1b, 0x85, 0x57, 0x64, 0x4c, 0x76, + 0x5e, 0x11, 0x7c, 0x38, 0x3a, 0x2d, 0x59, 0x56, 0x25, 0xf7, 0x9a, 0xb0, + 0x00, 0x44, 0xbc, 0x26, 0xc7, 0xa3, 0x6d, 0xcb, 0xd8, 0xd5, 0xb3, 0xc0, + 0x0e, 0xa1, 0xff, 0x71, 0x8e, 0x06, 0xd6, 0x41, 0x32, 0x72, 0xf3, 0xc2, + 0x8f, 0x7b, 0x16, 0x4c, 0x38, 0x6f, 0xf0, 0x02, 0x2f, 0xaa, 0xc8, 0x1b, + 0xb2, 0xb8, 0xca, 0x01, 0x2e, 0x8c, 0xb0, 0x22, 0xbf, 0x91, 0x58, 0x18, + 0x19, 0x73, 0x85, 0x2c, 0xc2, 0x72, 0x6d, 0x8e, 0xf5, 0xbb, 0x78, 0xc9, + 0xfa, 0x90, 0x88, 0xef, 0x57, 0xf3, 0x84, 0x51, 0xcf, 0x82, 0xf3, 0xc0, + 0x62, 0xa3, 0x16, 0x9b, 0xd4, 0x1e, 0x58, 0x94, 0x7d, 0x97, 0x71, 0x3f, + 0x42, 0x5c, 0x77, 0x5e, 0x1e, 0xae, 0x7d, 0xad, 0xb9, 0xf6, 0x03, 0x71, + 0xfb, 0x90, 0xc3, 0x12, 0xf1, 0x3a, 0xf8, 0x93, 0x55, 0xcc, 0xb0, 0x52, + 0xe1, 0x57, 0xb6, 0x27, 0x29, 0x05, 0x1c, 0x00, 0xae, 0xa7, 0x33, 0xda, + 0x08, 0xa0, 0x8e, 0xfc, 0x39, 0xeb, 0x17, 0xc4, 0xe2, 0xc8, 0xf3, 0x7f, + 0x99, 0x76, 0x61, 0x48, 0x45, 0xdc, 0x5b, 0x28, 0x7f, 0x53, 0x21, 0x35, + 0x8f, 0xa6, 0xc3, 0x7c, 0x9e, 0x7f, 0xb2, 0x15, 0xcd, 0x6e, 0xbe, 0x70, + 0xbb, 0xf8, 0xd3, 0xba, 0xea, 0x85, 0x0f, 0xc2, 0x8d, 0xf4, 0xe5, 0xe8, + 0x13, 0x3e, 0xbd, 0xf9, 0x96, 0xb2, 0x4b, 0x59, 0x3b, 0xc8, 0x5e, 0xcc, + 0x93, 0xe9, 0x71, 0x66, 0x39, 0x0b, 0xd1, 0x32, 0x41, 0xf3, 0x59, 0xf6, + 0xc3, 0x1c, 0x18, 0x5b, 0x82, 0x23, 0x95, 0x2c, 0x1c, 0xa9, 0x9c, 0xb8, + 0x0d, 0x42, 0x22, 0x83, 0x55, 0x12, 0xfc, 0x30, 0x06, 0x86, 0x8b, 0x5f, + 0x94, 0xa0, 0x56, 0x17, 0x5e, 0xad, 0x76, 0x75, 0x09, 0xb5, 0xac, 0x91, + 0xd5, 0xb6, 0x72, 0x35, 0xeb, 0x2b, 0x9c, 0xe3, 0xd8, 0x3d, 0x3b, 0x18, + 0xd4, 0x0f, 0x58, 0x25, 0x46, 0x3b, 0xf2, 0xc4, 0xce, 0x4a, 0xdf, 0x01, + 0xdb, 0xb0, 0x77, 0x11, 0x0d, 0xb7, 0x94, 0xcf, 0xcc, 0x8a, 0x5d, 0x39, + 0x8f, 0xd0, 0x95, 0x7b, 0x7e, 0x2c, 0x2e, 0x8c, 0xcb, 0x98, 0x0e, 0xb3, + 0x88, 0xdf, 0x4f, 0x79, 0xc4, 0x8f, 0xd7, 0xc2, 0x26, 0x4b, 0x1f, 0xda, + 0x3b, 0x19, 0x71, 0x4e, 0xb6, 0xd8, 0x90, 0xc5, 0x9d, 0x5e, 0xae, 0x79, + 0x04, 0x4d, 0x48, 0x4e, 0xf3, 0x66, 0x3d, 0x9d, 0x4f, 0x3c, 0x88, 0x59, + 0xbc, 0xf8, 0x9a, 0xf4, 0xfd, 0x2c, 0x18, 0x71, 0x06, 0x20, 0xe6, 0xaf, + 0x71, 0xa2, 0x92, 0xba, 0x73, 0xe1, 0xfa, 0x58, 0x02, 0xd1, 0xbd, 0x36, + 0xa7, 0x6f, 0x0e, 0x28, 0xf7, 0x49, 0xc1, 0x71, 0xe4, 0x0b, 0x2d, 0x3b, + 0x2a, 0x7e, 0x75, 0xb7, 0xfe, 0xd4, 0x76, 0x30, 0x7b, 0xbc, 0xfc, 0x73, + 0x07, 0xa6, 0x86, 0x03, 0x54, 0xd7, 0x35, 0x9f, 0x29, 0x34, 0x7e, 0xff, + 0xc2, 0x37, 0x04, 0x16, 0x96, 0xbf, 0xca, 0x44, 0xd4, 0xab, 0x4c, 0xe8, + 0xfc, 0x22, 0x91, 0x7b, 0x3c, 0xd0, 0xe4, 0x92, 0xad, 0xd3, 0x29, 0xa8, + 0xc5, 0x3a, 0xd0, 0xae, 0x57, 0xbf, 0x7c, 0x1f, 0xc7, 0xc8, 0x2f, 0x79, + 0x50, 0x35, 0x09, 0x68, 0x7c, 0x82, 0x1a, 0x21, 0xc6, 0x0e, 0x52, 0x38, + 0xab, 0x59, 0xdc, 0x3e, 0xf3, 0x9c, 0x28, 0x7c, 0xf2, 0x86, 0x90, 0xda, + 0xb6, 0xe6, 0xf1, 0x1c, 0x08, 0x87, 0xe0, 0x9b, 0x6f, 0x82, 0xc7, 0x28, + 0xf8, 0xef, 0x4d, 0xe9, 0x2a, 0x59, 0x71, 0x3e, 0xb1, 0xaa, 0x67, 0x88, + 0x9d, 0xcf, 0x66, 0xbd, 0x64, 0x49, 0xd9, 0x88, 0x39, 0x8a, 0x15, 0xb9, + 0x56, 0xd4, 0x36, 0x25, 0x02, 0xf5, 0x94, 0xbd, 0xa6, 0x8b, 0x27, 0xca, + 0x6d, 0x88, 0x06, 0x02, 0xda, 0x50, 0xd6, 0x94, 0xbc, 0xa1, 0x28, 0xcc, + 0x81, 0x47, 0x85, 0x7f, 0xe8, 0x46, 0x5c, 0x28, 0x03, 0xbb, 0xc7, 0x20, + 0xda, 0x68, 0x2b, 0x18, 0xde, 0x02, 0x51, 0xc8, 0x8a, 0x48, 0x2d, 0xc8, + 0x1b, 0x54, 0x21, 0xa9, 0x31, 0x24, 0x82, 0xd4, 0x31, 0xfa, 0x42, 0xe9, + 0x33, 0x0a, 0x01, 0xb0, 0x4b, 0x58, 0x4c, 0x42, 0x1b, 0x74, 0x5a, 0x08, + 0x6f, 0xff, 0x5f, 0xfa, 0x4e, 0x15, 0x82, 0x29, 0x97, 0xb1, 0x11, 0xd9, + 0xf2, 0xc2, 0xfa, 0xbf, 0xcb, 0x26, 0xdc, 0x50, 0x35, 0x14, 0x3a, 0xa3, + 0xd3, 0xb3, 0xde, 0x6e, 0x10, 0xca, 0x0c, 0xc1, 0x34, 0xd9, 0x60, 0x32, + 0x75, 0x98, 0x35, 0x5c, 0x4c, 0x06, 0x33, 0xc2, 0x6c, 0x11, 0xc0, 0xf4, + 0xff, 0xa1, 0xbf, 0x4d, 0x08, 0x6b, 0x52, 0x54, 0xa8, 0xf2, 0x5d, 0x23, + 0x1f, 0x05, 0xb1, 0x51, 0x4a, 0xef, 0xa4, 0x78, 0x50, 0x00, 0xc2, 0x16, + 0xae, 0x2a, 0x2b, 0x6f, 0xbb, 0x9b, 0xda, 0xd4, 0x97, 0x31, 0xfc, 0xe3, + 0x77, 0xb5, 0x4b, 0xe7, 0x37, 0x63, 0xdf, 0xa3, 0x8b, 0xb2, 0x04, 0xb4, + 0xaa, 0x31, 0xe1, 0x77, 0x05, 0x50, 0xb2, 0x13, 0x85, 0xff, 0x7f, 0xa9, + 0x47, 0x60, 0xab, 0xfe, 0xab, 0x52, 0xf8, 0x07, 0x57, 0xfa, 0xf1, 0xb8, + 0x18, 0x4c, 0xef, 0x32, 0x93, 0xa3, 0x22, 0x8c, 0x70, 0x88, 0xd5, 0x54, + 0xdc, 0x0c, 0xe3, 0xec, 0xf8, 0xe8, 0x4e, 0x3f, 0xfb, 0x45, 0x0f, 0xfa, + 0x3e, 0xba, 0x18, 0x61, 0x05, 0x86, 0xbf, 0x7d, 0xca, 0x80, 0xf1, 0xed, + 0xdd, 0x12, 0xc7, 0xda, 0xfa, 0x35, 0xcc, 0x3c, 0xa9, 0x32, 0x38, 0x2a, + 0x27, 0x1b, 0x17, 0xe3, 0xb7, 0x2f, 0x5c, 0xbf, 0x64, 0xf3, 0x62, 0xd6, + 0xa9, 0x5f, 0x66, 0xc9, 0x80, 0x11, 0xb4, 0xf1, 0x73, 0xc7, 0xbe, 0x9a, + 0xa6, 0x5f, 0x5e, 0xd8, 0x11, 0xfd, 0xf2, 0x95, 0x32, 0x42, 0x4f, 0xd6, + 0x2f, 0xc7, 0x71, 0xfc, 0xab, 0x92, 0x9a, 0x1c, 0x58, 0xfe, 0x24, 0x23, + 0xd2, 0x34, 0xe4, 0x91, 0x12, 0x52, 0xa5, 0x59, 0x95, 0xe6, 0x09, 0xe5, + 0xd0, 0x20, 0x8c, 0x48, 0xf6, 0x2f, 0x0f, 0x02, 0x37, 0xa7, 0x34, 0xdc, + 0x12, 0xb3, 0xe7, 0xea, 0xf3, 0xcc, 0xc1, 0x4e, 0xfa, 0xe2, 0x32, 0x73, + 0x14, 0xbc, 0x9d, 0x36, 0x4f, 0x0a, 0x10, 0x13, 0xd4, 0xc8, 0x06, 0xf6, + 0xaa, 0xbe, 0xd7, 0xcc, 0x0c, 0xf4, 0x46, 0x19, 0x74, 0x3c, 0xe8, 0x6d, + 0x65, 0x43, 0xc9, 0xc2, 0x5e, 0xc1, 0x0b, 0xfa, 0x9d, 0xff, 0x63, 0xad, + 0xf1, 0x6b, 0x36, 0x25, 0xa0, 0x6e, 0x21, 0xc1, 0xc7, 0x7d, 0xe7, 0xe7, + 0x0b, 0x91, 0xa8, 0x1c, 0xe9, 0x00, 0x75, 0xb0, 0x09, 0x38, 0x94, 0x47, + 0x4a, 0xb3, 0x39, 0xd6, 0x62, 0xd9, 0xd2, 0x71, 0xcd, 0x82, 0xfb, 0xa3, + 0x55, 0xd5, 0x21, 0x0e, 0x61, 0xc5, 0x74, 0x7f, 0xe0, 0x1f, 0x25, 0x83, + 0x1a, 0xef, 0x8f, 0x40, 0xe4, 0x3c, 0x23, 0x19, 0x99, 0x32, 0x05, 0x2d, + 0x3e, 0xe8, 0x64, 0x26, 0xe9, 0xb9, 0xce, 0x02, 0xf7, 0x4f, 0xf9, 0x49, + 0x26, 0xe5, 0x90, 0x47, 0xcb, 0x39, 0xe4, 0x0d, 0x1a, 0x60, 0xf5, 0x25, + 0xec, 0xd4, 0x40, 0xe1, 0xb5, 0xbb, 0xda, 0x3e, 0x0b, 0xfc, 0xe5, 0x60, + 0xe2, 0xb4, 0x60, 0x08, 0x01, 0x70, 0x25, 0xcb, 0x5f, 0xa0, 0xb4, 0x99, + 0xe1, 0xf8, 0x03, 0x82, 0xdc, 0x96, 0x2c, 0x20, 0xfc, 0x58, 0xf0, 0x18, + 0x06, 0x6f, 0x94, 0x27, 0xbd, 0x2f, 0x4f, 0xbd, 0xdf, 0xc0, 0xbc, 0x43, + 0xca, 0x7f, 0x79, 0xd8, 0x77, 0x14, 0xaa, 0x2d, 0x51, 0x5e, 0xf3, 0xc8, + 0x9c, 0x75, 0xb9, 0xf0, 0xae, 0x73, 0x90, 0xdd, 0x06, 0x38, 0x56, 0x22, + 0x39, 0x2e, 0x95, 0xe6, 0x9b, 0xbe, 0x7f, 0xe1, 0x9b, 0x5a, 0x02, 0xfb, + 0xbf, 0x42, 0x8b, 0xed, 0x3a, 0x0b, 0xf2, 0x9f, 0x5c, 0x6b, 0x4a, 0x7b, + 0x55, 0xa7, 0x2c, 0x5d, 0xc5, 0x7a, 0x25, 0x27, 0xd9, 0x6e, 0xbb, 0x7e, + 0xbc, 0x36, 0x1e, 0xba, 0x4a, 0x19, 0x72, 0xe1, 0xf2, 0x7a, 0xc8, 0x9f, + 0xae, 0x93, 0x68, 0xe3, 0x75, 0x65, 0x55, 0x5e, 0xe7, 0xe2, 0x3a, 0x8d, + 0x28, 0x14, 0xc9, 0xb9, 0xe0, 0x84, 0xbf, 0x9c, 0x0c, 0x1c, 0x34, 0x7a, + 0xa4, 0xe1, 0x0a, 0xa0, 0xc8, 0xd7, 0x3c, 0x14, 0x79, 0x12, 0x50, 0x25, + 0x79, 0x22, 0xf5, 0x99, 0x9c, 0x76, 0x17, 0x67, 0x12, 0x8b, 0x2c, 0x40, + 0xe3, 0x11, 0x64, 0x13, 0xef, 0x0a, 0x12, 0xd2, 0x8e, 0xb4, 0x58, 0xb8, + 0x1c, 0xf0, 0xc0, 0x61, 0x71, 0x31, 0x73, 0x64, 0xa9, 0x4d, 0x9f, 0x75, + 0x1a, 0x4e, 0x76, 0xc9, 0x43, 0x09, 0x07, 0x08, 0xf5, 0x14, 0xf1, 0x85, + 0xd0, 0x26, 0xe4, 0xfa, 0x50, 0x62, 0x95, 0x56, 0xae, 0x52, 0xac, 0xe8, + 0xf9, 0xaf, 0x58, 0xa7, 0xfd, 0x40, 0xb0, 0x72, 0x40, 0x8a, 0xc3, 0xbe, + 0x21, 0xb1, 0x6f, 0x3c, 0x8f, 0x72, 0xa7, 0x68, 0xb3, 0x65, 0x5b, 0x9e, + 0xb5, 0xd0, 0xa7, 0xe9, 0x41, 0xda, 0x35, 0x45, 0x75, 0xbc, 0x5a, 0x4d, + 0x7c, 0x62, 0xda, 0x6c, 0x63, 0xe4, 0xa1, 0xa0, 0x54, 0x37, 0x60, 0x3d, + 0xab, 0x48, 0xd6, 0xdc, 0x00, 0x26, 0x0e, 0x08, 0x7c, 0x89, 0x08, 0x4f, + 0x45, 0x09, 0x3d, 0x7b, 0x59, 0x38, 0xac, 0x2e, 0x72, 0x26, 0x74, 0xd9, + 0x8f, 0xcc, 0xf8, 0xee, 0xe2, 0xa0, 0x66, 0x4b, 0x89, 0x6f, 0x31, 0x9d, + 0x8e, 0xb2, 0x7a, 0xb9, 0xd8, 0xce, 0xf0, 0x71, 0xf7, 0x1e, 0x36, 0xb2, + 0xf3, 0xbc, 0xb0, 0x38, 0xc5, 0x31, 0x9c, 0x18, 0x35, 0xa0, 0x49, 0x19, + 0x58, 0x03, 0xa3, 0x3f, 0x81, 0x19, 0x3f, 0x92, 0x92, 0x5d, 0x27, 0x00, + 0xc9, 0x7a, 0x16, 0x64, 0xe8, 0x8b, 0xee, 0x03, 0x03, 0xd9, 0xce, 0x82, + 0x46, 0x26, 0xd9, 0x06, 0xb2, 0x1d, 0xb2, 0xc9, 0x1f, 0x8a, 0x13, 0x63, + 0xa9, 0xfb, 0xdd, 0xf8, 0x17, 0x45, 0x73, 0x3e, 0xc9, 0x39, 0xf0, 0x1b, + 0x67, 0x7c, 0xdf, 0xfd, 0xab, 0x43, 0x6e, 0x82, 0xc9, 0xcd, 0xb6, 0x54, + 0xd2, 0x68, 0xf5, 0xa1, 0x3a, 0x94, 0x65, 0x7a, 0x71, 0x01, 0xaa, 0xeb, + 0xc6, 0x26, 0xbc, 0xe2, 0x2c, 0x2e, 0xf4, 0xc8, 0xfd, 0x0b, 0x3f, 0x74, + 0x13, 0xa4, 0xd2, 0x63, 0x9b, 0xd5, 0x40, 0x36, 0x46, 0x99, 0x38, 0x85, + 0x14, 0xca, 0x69, 0xa5, 0x19, 0xdb, 0xb8, 0x7f, 0x75, 0x20, 0xe0, 0x81, + 0x38, 0xab, 0x70, 0x52, 0x88, 0x80, 0x67, 0x50, 0x8e, 0xcc, 0xa5, 0x02, + 0x08, 0x03, 0x01, 0x68, 0x80, 0x28, 0x9d, 0xf1, 0x37, 0x54, 0xa2, 0x0a, + 0xe4, 0xed, 0xb5, 0xab, 0x8a, 0x36, 0x37, 0xd4, 0x6b, 0xcd, 0x5e, 0x2d, + 0xa6, 0xbc, 0x4f, 0x45, 0xf6, 0x15, 0x0c, 0x2c, 0x19, 0xf3, 0x43, 0x01, + 0x29, 0x21, 0xa6, 0x77, 0x27, 0x94, 0xa4, 0x4b, 0xb2, 0xa6, 0x34, 0x03, + 0xff, 0xaa, 0x5b, 0x6b, 0xc2, 0x99, 0x25, 0xb4, 0xef, 0xc1, 0x9f, 0xe9, + 0xca, 0x1a, 0x1b, 0x22, 0xe7, 0xfe, 0x88, 0x32, 0x94, 0x18, 0x60, 0x8c, + 0xde, 0x84, 0x8c, 0xed, 0x42, 0xfb, 0x69, 0x18, 0x4d, 0x7f, 0x58, 0x4b, + 0x5f, 0xd6, 0xb5, 0x89, 0x27, 0x5c, 0x89, 0x33, 0x50, 0x09, 0x3f, 0x8f, + 0x30, 0x88, 0xff, 0xd3, 0x5a, 0xe4, 0x78, 0xf9, 0xff, 0x52, 0x1a, 0x2a, + 0xc2, 0xff, 0x74, 0xf8, 0xf9, 0x9f, 0x88, 0x44, 0x0a, 0x1c, 0x9f, 0x95, + 0xf4, 0x13, 0xad, 0x43, 0x7e, 0x36, 0xae, 0x03, 0x12, 0x80, 0x93, 0x47, + 0xb1, 0xe1, 0x79, 0x29, 0x7b, 0x49, 0xd1, 0xbc, 0x5e, 0x91, 0x05, 0x4c, + 0xad, 0x42, 0x74, 0x81, 0xc7, 0x4f, 0xf4, 0xc9, 0xe2, 0x92, 0x4a, 0x85, + 0xbd, 0xc4, 0x23, 0x6f, 0x84, 0xea, 0xf0, 0x20, 0x96, 0x62, 0x0f, 0xea, + 0x32, 0x3e, 0xfe, 0xcb, 0xf0, 0xfc, 0x5b, 0x38, 0x03, 0x90, 0xfb, 0x20, + 0xfb, 0x28, 0xfd, 0xd7, 0x25, 0x31, 0x71, 0xa7, 0x44, 0x82, 0x16, 0xd4, + 0x79, 0xc1, 0xd8, 0x9c, 0x28, 0x19, 0xaa, 0x4c, 0x0b, 0x07, 0x74, 0x0d, + 0xe9, 0x2c, 0xc8, 0xed, 0x5e, 0x4f, 0x46, 0xe8, 0xbc, 0x72, 0x00, 0xaf, + 0xc8, 0xa4, 0xa8, 0x08, 0xd5, 0x0b, 0xeb, 0x9d, 0xf9, 0x7b, 0xfd, 0x9b, + 0xa5, 0x14, 0xc3, 0xfc, 0xd6, 0xbf, 0xfa, 0xe4, 0xa4, 0x90, 0xfd, 0xf1, + 0x28, 0x9b, 0x8c, 0x40, 0x42, 0x5e, 0xa7, 0xd3, 0xc6, 0x12, 0x25, 0x6f, + 0x32, 0x89, 0xcf, 0x98, 0xb2, 0x1c, 0x8a, 0xf6, 0x96, 0x8a, 0xf2, 0xb1, + 0xbb, 0x56, 0xcb, 0xdc, 0x32, 0x41, 0x27, 0x22, 0x02, 0xe1, 0x65, 0x1c, + 0x6a, 0x59, 0x48, 0xca, 0x2f, 0x45, 0x93, 0xc8, 0xd1, 0x3a, 0x7c, 0x2b, + 0xf7, 0xc2, 0x57, 0x4c, 0x7b, 0x47, 0x14, 0xe4, 0x6c, 0x27, 0xcf, 0x17, + 0x0e, 0xbe, 0xef, 0xfe, 0xd5, 0xc1, 0x21, 0x31, 0xbd, 0xd9, 0x96, 0x2a, + 0x39, 0x8e, 0xc2, 0x0c, 0x56, 0x55, 0x44, 0xe1, 0x3a, 0x07, 0x36, 0x3e, + 0x2a, 0xc2, 0x00, 0x11, 0xf2, 0xca, 0xf4, 0x54, 0xa2, 0x93, 0xa2, 0xb5, + 0x13, 0xdb, 0xce, 0x5c, 0xdd, 0x71, 0x5d, 0xf2, 0xfd, 0xf6, 0xd1, 0x76, + 0x6d, 0x0f, 0x63, 0xed, 0x6a, 0x63, 0xec, 0x01, 0x80, 0xb5, 0x31, 0x7d, + 0xbb, 0xfd, 0x25, 0x9f, 0xd1, 0x96, 0xea, 0x84, 0xce, 0x50, 0x42, 0x61, + 0x21, 0xee, 0xf4, 0x2c, 0x00, 0xfb, 0xe0, 0x8d, 0xa8, 0xc9, 0x0b, 0xee, + 0x8f, 0x5c, 0x7f, 0x90, 0x3e, 0xc7, 0x25, 0x61, 0x09, 0x55, 0x6a, 0xeb, + 0x88, 0x2a, 0x05, 0x8c, 0x14, 0xe4, 0x21, 0xba, 0xd1, 0xc8, 0x19, 0x37, + 0x8d, 0xb2, 0x00, 0x2d, 0x00, 0xb8, 0x8a, 0x13, 0x38, 0xd6, 0x5d, 0x30, + 0x5a, 0xbd, 0x54, 0xf0, 0xe6, 0x6c, 0x74, 0x88, 0x89, 0x8e, 0xf7, 0x93, + 0x9a, 0x6f, 0xa9, 0x4e, 0x2d, 0x2b, 0x84, 0xc0, 0xdd, 0xae, 0xcf, 0x6f, + 0x90, 0x05, 0x88, 0xfd, 0xec, 0x60, 0x74, 0x11, 0x29, 0x65, 0x8c, 0x23, + 0x1a, 0x3b, 0x4b, 0xaa, 0x68, 0xdc, 0x3e, 0x23, 0x86, 0x5a, 0x42, 0x91, + 0x04, 0xfb, 0xaf, 0x05, 0x62, 0x86, 0x00, 0x33, 0x65, 0x1d, 0x50, 0xcc, + 0x41, 0x73, 0x95, 0xad, 0x5b, 0x8c, 0x18, 0xb1, 0xbd, 0xc2, 0x68, 0x82, + 0x56, 0x2a, 0xa1, 0xa6, 0x75, 0xea, 0xae, 0x25, 0x37, 0x1a, 0xb1, 0x3b, + 0x41, 0xa3, 0x14, 0x84, 0xc6, 0x21, 0xaf, 0x5a, 0xad, 0x76, 0xcc, 0x36, + 0x04, 0xa8, 0x96, 0x04, 0x06, 0x47, 0x52, 0x3d, 0x74, 0xce, 0x12, 0xdd, + 0x55, 0xc6, 0x04, 0xad, 0x14, 0xf8, 0xe0, 0xc2, 0x69, 0xaf, 0x45, 0x1a, + 0x91, 0x44, 0x3d, 0x17, 0xaf, 0xc5, 0x6d, 0x77, 0x96, 0x9a, 0x28, 0xa3, + 0xab, 0x56, 0x7d, 0x82, 0xe1, 0xf0, 0x12, 0xb0, 0x9c, 0xd9, 0xb3, 0x90, + 0x9c, 0xe4, 0x95, 0xff, 0x1c, 0x6c, 0xd7, 0xa2, 0x68, 0xa0, 0x90, 0x73, + 0x12, 0x60, 0x27, 0xca, 0x3f, 0x75, 0x40, 0x12, 0x6f, 0x85, 0x37, 0x49, + 0x28, 0x98, 0xc9, 0x6d, 0xe5, 0xfa, 0x95, 0x72, 0x9e, 0xa6, 0xb6, 0xd9, + 0x52, 0x75, 0xef, 0xd5, 0x63, 0x0a, 0x51, 0xa1, 0xfc, 0xe5, 0xc5, 0x06, + 0xd9, 0x1f, 0x92, 0x13, 0x1b, 0xc5, 0x83, 0x09, 0xc7, 0xef, 0x5f, 0xb8, + 0x54, 0x7c, 0x1f, 0x64, 0xe3, 0xd7, 0x59, 0xc8, 0xc6, 0xbf, 0xdb, 0x24, + 0xb8, 0x6b, 0x96, 0x6c, 0x7c, 0x7d, 0x38, 0xaa, 0x1c, 0x04, 0xe3, 0x3f, + 0x16, 0x8e, 0x6a, 0x04, 0x88, 0xbe, 0x62, 0x52, 0xb5, 0xeb, 0x5c, 0xd8, + 0x74, 0x2a, 0x19, 0x3d, 0x37, 0x9d, 0x5a, 0xb2, 0xc7, 0xc5, 0x4b, 0x13, + 0x0b, 0x44, 0x9f, 0x95, 0x47, 0xfc, 0xcd, 0x8e, 0x28, 0x1b, 0x2e, 0x64, + 0xa9, 0x32, 0x0b, 0x56, 0x2e, 0xc6, 0x7a, 0xb0, 0xf5, 0x35, 0x05, 0x72, + 0x48, 0x67, 0x90, 0xae, 0x96, 0x9c, 0x8c, 0x40, 0x05, 0xb2, 0xab, 0xdb, + 0xa2, 0xba, 0xba, 0x2d, 0x3a, 0xde, 0x11, 0x87, 0x4c, 0x49, 0xa0, 0x45, + 0x36, 0xcb, 0xd2, 0x85, 0xf0, 0xed, 0x38, 0xb7, 0xee, 0x73, 0xb7, 0xb4, + 0x57, 0x20, 0xb2, 0x7f, 0x9b, 0x85, 0x02, 0x17, 0x39, 0x7d, 0x4f, 0x2f, + 0x7c, 0x1f, 0x82, 0x5e, 0x66, 0x3b, 0x28, 0x66, 0xd5, 0x51, 0xd9, 0xb3, + 0x12, 0x35, 0x03, 0x6a, 0xfd, 0xa5, 0xc5, 0x89, 0xa5, 0x39, 0x5b, 0x11, + 0x27, 0xd5, 0xdb, 0x2c, 0x8c, 0x66, 0x3f, 0x06, 0x07, 0xed, 0x5b, 0x16, + 0x91, 0x72, 0xda, 0x01, 0x37, 0xfd, 0x78, 0xcb, 0x7b, 0xb4, 0xbd, 0xcd, + 0x81, 0x54, 0x41, 0x2c, 0x98, 0xad, 0x96, 0x71, 0xca, 0x89, 0x06, 0x57, + 0x65, 0x75, 0xb8, 0xd3, 0x90, 0xde, 0x54, 0xc5, 0x58, 0x39, 0x92, 0x93, + 0x81, 0x2f, 0xae, 0x9c, 0x02, 0xec, 0x02, 0x41, 0xf9, 0x4a, 0xf0, 0xfb, + 0xcf, 0xf2, 0x75, 0xaa, 0xb7, 0x7c, 0xe0, 0x58, 0xad, 0xcc, 0x80, 0x7f, + 0x9b, 0x23, 0x64, 0xac, 0x94, 0x0a, 0x00, 0x0a, 0xc1, 0x6b, 0x30, 0x21, + 0x49, 0xf8, 0x89, 0xcd, 0x16, 0x2e, 0x26, 0x89, 0x10, 0xde, 0xda, 0xc4, + 0x24, 0x0f, 0x3d, 0xd6, 0x89, 0x7e, 0x9e, 0xb1, 0x38, 0xcb, 0xe2, 0x05, + 0x23, 0x51, 0x2f, 0xac, 0xec, 0x4a, 0x06, 0x4d, 0x01, 0x9e, 0x2c, 0x43, + 0x38, 0xb2, 0x18, 0x5f, 0xc0, 0x58, 0xb1, 0xca, 0xc9, 0xc1, 0x92, 0xb0, + 0xe7, 0x13, 0xc1, 0xb3, 0x4a, 0x8e, 0x5c, 0x67, 0x16, 0xfe, 0x55, 0xb6, + 0xe7, 0xb2, 0x4f, 0xda, 0xf3, 0xc4, 0x46, 0x5e, 0x54, 0xde, 0xf1, 0xd9, + 0x96, 0x6b, 0xdb, 0x43, 0xde, 0xe5, 0xc8, 0xb6, 0x6c, 0x89, 0x09, 0x42, + 0x3d, 0xb8, 0x93, 0x4b, 0x54, 0x4e, 0x69, 0xb9, 0xec, 0x7d, 0xe5, 0xdd, + 0xb3, 0xcd, 0xec, 0x09, 0x79, 0x2f, 0x2d, 0x33, 0xd8, 0xa1, 0x7f, 0xac, + 0xc5, 0x45, 0x0a, 0xeb, 0xcc, 0x06, 0x6a, 0x9e, 0x31, 0x78, 0xf3, 0x22, + 0x18, 0x52, 0x68, 0x27, 0x75, 0x1b, 0x81, 0x06, 0x60, 0x11, 0xf4, 0xc8, + 0xba, 0x96, 0x21, 0xee, 0xdc, 0x14, 0x5e, 0x1b, 0xd4, 0xc2, 0xeb, 0x85, + 0x5e, 0x53, 0xac, 0x81, 0x6a, 0xb4, 0x74, 0xf2, 0xa3, 0xd4, 0xb2, 0x72, + 0x56, 0xeb, 0x58, 0x67, 0xc5, 0x5f, 0x10, 0xb2, 0x0c, 0x85, 0x55, 0xde, + 0x10, 0xb7, 0x76, 0x85, 0xe8, 0x77, 0x44, 0x2f, 0x06, 0x50, 0x20, 0x8a, + 0xb7, 0xf8, 0xbe, 0x85, 0x1e, 0xa9, 0x72, 0xcd, 0xa4, 0xdf, 0x54, 0xd4, + 0x5a, 0x6a, 0xf0, 0x4e, 0x10, 0xfa, 0xb1, 0xed, 0xb1, 0x40, 0x08, 0x9e, + 0xea, 0xc7, 0x20, 0xb8, 0x6e, 0x63, 0x28, 0x3e, 0x94, 0x52, 0x0a, 0xf5, + 0x15, 0x42, 0x01, 0x5e, 0xba, 0x60, 0x1a, 0x89, 0xf0, 0x79, 0xa3, 0x00, + 0x11, 0x89, 0x41, 0x76, 0x7f, 0x99, 0x04, 0x4b, 0x43, 0xc9, 0x76, 0x46, + 0x6f, 0x8c, 0xa1, 0x81, 0xba, 0xb5, 0x69, 0xd7, 0x13, 0x48, 0x55, 0xa2, + 0x52, 0x53, 0x8d, 0x22, 0xe2, 0x72, 0x5c, 0xc0, 0xe6, 0xd5, 0x52, 0x4a, + 0x07, 0x10, 0xeb, 0xee, 0x1a, 0x54, 0xe8, 0x2a, 0x66, 0xc5, 0x20, 0x3f, + 0x45, 0x87, 0xfa, 0x4d, 0x58, 0x52, 0x15, 0x56, 0xc2, 0x50, 0xe2, 0x0a, + 0x96, 0x3b, 0x82, 0x4a, 0x23, 0x2e, 0x40, 0x77, 0x10, 0x00, 0x3f, 0x64, + 0xf8, 0x6d, 0x34, 0xb9, 0xc2, 0x21, 0xba, 0x8f, 0xdf, 0x6f, 0xc2, 0xd7, + 0x44, 0xbf, 0x16, 0x6b, 0x6b, 0x07, 0xd8, 0x0b, 0x95, 0xba, 0x03, 0xc8, + 0x35, 0xfc, 0x6a, 0x01, 0xf8, 0x80, 0x03, 0x10, 0x16, 0x14, 0x61, 0xbb, + 0xa9, 0x74, 0x88, 0x55, 0xa4, 0xe6, 0xd8, 0xb6, 0x4a, 0x54, 0x23, 0x0c, + 0x20, 0x9b, 0x0a, 0xd0, 0xeb, 0x12, 0xc5, 0x77, 0x6c, 0x14, 0x28, 0x02, + 0x1a, 0x08, 0xfa, 0xce, 0xd8, 0x8b, 0x16, 0xc1, 0x20, 0x1b, 0xaa, 0xa4, + 0x47, 0x04, 0x72, 0x24, 0x3b, 0x5e, 0x20, 0x2c, 0x0a, 0x52, 0x11, 0x62, + 0x81, 0x1a, 0xd3, 0x14, 0xeb, 0xae, 0xec, 0x5e, 0x57, 0x90, 0xc7, 0x18, + 0x4a, 0xfd, 0xa9, 0xda, 0x91, 0x31, 0x80, 0xb3, 0x48, 0x02, 0x2a, 0x77, + 0x6b, 0xae, 0xe8, 0x97, 0x63, 0xcd, 0x37, 0x5d, 0x55, 0x65, 0xe4, 0x17, + 0xf9, 0x31, 0x75, 0x37, 0x89, 0xa6, 0xc0, 0x72, 0x17, 0xae, 0x95, 0x42, + 0x70, 0x7a, 0x97, 0xc0, 0x5a, 0x10, 0xd0, 0xa2, 0x0a, 0xeb, 0x04, 0xcb, + 0x86, 0xb8, 0xe4, 0xa8, 0xaf, 0x38, 0x60, 0x5d, 0x46, 0xfb, 0x07, 0x09, + 0x75, 0x04, 0xd2, 0xf0, 0x8b, 0x48, 0xbc, 0x26, 0xb2, 0x5b, 0x91, 0xee, + 0xe9, 0xdb, 0x9a, 0x98, 0xfb, 0x6c, 0xa8, 0xcc, 0x25, 0xa4, 0xb2, 0x04, + 0xbb, 0x48, 0x98, 0x48, 0x55, 0xcf, 0x32, 0x4b, 0x64, 0x81, 0xbd, 0x5b, + 0xbe, 0x93, 0x6a, 0xb7, 0xa3, 0x04, 0x8a, 0xc1, 0xfd, 0x5d, 0x85, 0x16, + 0x0f, 0x30, 0xbf, 0x58, 0xcd, 0xac, 0xda, 0x6e, 0xba, 0xb7, 0xcd, 0xbf, + 0x41, 0x9d, 0xb2, 0x84, 0x17, 0x8e, 0x9e, 0x57, 0x78, 0x43, 0x2e, 0xec, + 0xde, 0x37, 0x25, 0x7d, 0x41, 0x82, 0x29, 0x2e, 0x74, 0x2c, 0x1e, 0x12, + 0xbe, 0x2a, 0xc0, 0x35, 0x13, 0xe4, 0x14, 0x0f, 0x75, 0xff, 0x2b, 0xbc, + 0xf1, 0x9b, 0x28, 0x60, 0x28, 0x8c, 0x86, 0xf4, 0xb2, 0x8b, 0xdd, 0x0d, + 0x9d, 0x24, 0x50, 0xd5, 0xa7, 0xbd, 0x69, 0x5c, 0xb4, 0x49, 0x68, 0xf8, + 0x3d, 0xa8, 0x09, 0x29, 0xaa, 0xfd, 0x56, 0x75, 0x6c, 0x75, 0xd0, 0x04, + 0x0c, 0x86, 0x0b, 0x72, 0xc3, 0xc5, 0xfd, 0x10, 0xdc, 0x11, 0xd5, 0xb6, + 0xdb, 0xd5, 0xfd, 0x6b, 0x81, 0x57, 0x91, 0x92, 0xec, 0x84, 0xb5, 0x5e, + 0x30, 0xf7, 0xf6, 0x37, 0xbf, 0xa5, 0x87, 0xbd, 0x1e, 0xf8, 0xa0, 0xdd, + 0xae, 0x26, 0xa8, 0xc2, 0x38, 0x65, 0x15, 0xfb, 0x3d, 0xad, 0xdd, 0xd2, + 0x0c, 0x6d, 0x5e, 0xba, 0xdd, 0xcf, 0xe0, 0x08, 0x00, 0xad, 0x24, 0x1e, + 0x92, 0x6a, 0xf7, 0x0c, 0xd5, 0xd0, 0xee, 0x85, 0x5a, 0x9b, 0x7a, 0xb7, + 0x51, 0xb5, 0x75, 0xb7, 0xca, 0xb8, 0xb7, 0x98, 0x76, 0x67, 0x22, 0xf6, + 0x49, 0x22, 0x14, 0xaa, 0x02, 0xd5, 0x63, 0xdc, 0x9b, 0xe2, 0xc6, 0xd4, + 0xf6, 0x59, 0xa8, 0x28, 0x09, 0x00, 0x3a, 0x05, 0x60, 0x3c, 0x95, 0xae, + 0xa3, 0x94, 0xf9, 0xa2, 0xdd, 0x8d, 0x1a, 0x15, 0xa8, 0x24, 0xa5, 0xed, + 0xf6, 0x9c, 0x80, 0xf5, 0xf3, 0x5b, 0xa8, 0x3f, 0x8a, 0xda, 0x0d, 0x26, + 0x1c, 0x43, 0xf1, 0x4d, 0xdf, 0x6d, 0x2c, 0xc0, 0x0c, 0xb6, 0x55, 0xdd, + 0xb0, 0xf7, 0x99, 0x38, 0x1b, 0x34, 0x8c, 0xbb, 0x05, 0x98, 0x14, 0x5d, + 0xbd, 0xb7, 0x35, 0x10, 0x0d, 0x25, 0x20, 0x2f, 0x24, 0x1e, 0xd8, 0xf2, + 0x68, 0x6f, 0xac, 0x8b, 0x10, 0x28, 0xf0, 0x1b, 0x83, 0x64, 0x25, 0x44, + 0x99, 0x9e, 0xd7, 0xa9, 0xc5, 0xb5, 0xbf, 0x63, 0x53, 0xa1, 0xb1, 0xc8, + 0xab, 0x43, 0x8e, 0xbe, 0xcb, 0x55, 0x89, 0xc9, 0x9f, 0x35, 0x38, 0x4f, + 0x13, 0x69, 0xf3, 0xd3, 0x36, 0xb2, 0xd0, 0x47, 0x63, 0xdb, 0x9a, 0x6a, + 0xe8, 0xce, 0x29, 0xad, 0xd9, 0xdc, 0xe0, 0x39, 0xf0, 0x70, 0x67, 0x89, + 0xce, 0x07, 0x97, 0x07, 0x68, 0xd0, 0x53, 0x1a, 0x42, 0xa2, 0xd8, 0xa4, + 0x6a, 0xb1, 0x3a, 0x6b, 0xf5, 0x5d, 0xae, 0xb4, 0xe8, 0x06, 0x4a, 0x89, + 0x7f, 0x8d, 0x99, 0x07, 0x6f, 0x52, 0x06, 0xc8, 0x91, 0x36, 0x0b, 0x37, + 0x3d, 0x52, 0x94, 0xce, 0xa7, 0x64, 0x44, 0x2c, 0x03, 0x27, 0xf9, 0x2e, + 0x1b, 0x61, 0x33, 0xe1, 0x7b, 0xb7, 0xf1, 0x80, 0x90, 0x28, 0xfb, 0x49, + 0x79, 0xea, 0xdd, 0xa9, 0x0b, 0x08, 0x64, 0x81, 0xfa, 0x10, 0x65, 0xbc, + 0x58, 0xfb, 0xc3, 0x00, 0xa6, 0x4d, 0x82, 0x2a, 0x26, 0x99, 0x80, 0x4c, + 0x89, 0x6d, 0x33, 0x0d, 0x33, 0x03, 0x7d, 0xcc, 0x4b, 0xcb, 0x22, 0x4b, + 0x27, 0x1c, 0xc1, 0xd1, 0xb3, 0x19, 0xc3, 0xd1, 0xda, 0xb5, 0x01, 0x80, + 0x5d, 0xb5, 0x26, 0x84, 0x75, 0x1d, 0x33, 0x84, 0x57, 0xee, 0x62, 0xe1, + 0x25, 0x54, 0x0a, 0x8f, 0x04, 0xc9, 0x7c, 0x0c, 0xbf, 0x0f, 0x0e, 0x4f, + 0xd1, 0x44, 0x44, 0x8e, 0x88, 0x00, 0x18, 0x10, 0xfe, 0x24, 0x8f, 0x96, + 0x52, 0xfb, 0x67, 0x50, 0x28, 0x5b, 0x0c, 0xc1, 0xce, 0xc6, 0x88, 0x36, + 0x27, 0xa8, 0x86, 0x36, 0xfb, 0x5c, 0x67, 0xaa, 0xec, 0xe8, 0xc1, 0x86, + 0x13, 0x03, 0x83, 0x99, 0x3d, 0x63, 0x5e, 0x90, 0x1c, 0x54, 0xc7, 0x45, + 0x20, 0x81, 0x4c, 0xa2, 0xb8, 0x0e, 0x96, 0x8b, 0x3b, 0x91, 0xa3, 0xde, + 0x4a, 0xd5, 0xd8, 0x43, 0x35, 0x30, 0xb2, 0xc1, 0x8a, 0x48, 0x2d, 0x29, + 0x5b, 0xa3, 0xcf, 0xeb, 0x85, 0xb0, 0xe8, 0xda, 0x94, 0x3f, 0x37, 0x44, + 0xff, 0xec, 0x98, 0x39, 0x76, 0xeb, 0x4c, 0xca, 0x2b, 0xb4, 0xd4, 0xf6, + 0x2b, 0xa8, 0x7f, 0x65, 0xf7, 0x17, 0x60, 0xf5, 0x5d, 0x41, 0xf4, 0x9d, + 0x42, 0x1a, 0x39, 0xb2, 0xf7, 0x1f, 0x97, 0xd9, 0xd5, 0xa9, 0x2b, 0xda, + 0xdb, 0xd5, 0xfe, 0xe5, 0xb2, 0x6e, 0x76, 0x7f, 0xb0, 0xcf, 0x73, 0xef, + 0x06, 0xe6, 0x8d, 0x2d, 0xfa, 0xdc, 0x02, 0x67, 0xc1, 0x55, 0x62, 0xb7, + 0xa1, 0xf0, 0x74, 0x55, 0xb4, 0xcb, 0x21, 0x45, 0x4a, 0x44, 0xa5, 0x00, + 0x9d, 0x5d, 0x4f, 0x44, 0x39, 0x01, 0xdd, 0x5b, 0x20, 0x5a, 0x1d, 0x38, + 0x73, 0x64, 0x77, 0x91, 0x53, 0x83, 0x7a, 0xe0, 0x15, 0xf0, 0xdd, 0x95, + 0xf5, 0x51, 0xa1, 0xdc, 0x9f, 0x49, 0xcb, 0x22, 0xfe, 0x8e, 0x65, 0x8c, + 0x5e, 0x1f, 0xe5, 0xe6, 0xbb, 0x1c, 0x74, 0xd1, 0x21, 0xb6, 0x76, 0xe9, + 0x48, 0x65, 0xad, 0x11, 0x7a, 0x60, 0x83, 0x6c, 0x49, 0xf2, 0xcd, 0x89, + 0x6d, 0x97, 0x7d, 0x50, 0xbc, 0x67, 0x49, 0x51, 0x76, 0x25, 0xbf, 0x4b, + 0xd3, 0x29, 0x30, 0xcf, 0x4c, 0xe8, 0x64, 0x36, 0xf9, 0xd4, 0xf5, 0xd9, + 0xc0, 0x03, 0xef, 0xf3, 0x54, 0x6d, 0x7c, 0xea, 0xfe, 0x2c, 0xe2, 0x46, + 0x4b, 0x3b, 0xec, 0xe8, 0x4a, 0xaf, 0x02, 0x13, 0xf0, 0x9e, 0x2f, 0xbd, + 0x58, 0x90, 0x5b, 0x2b, 0xb9, 0x01, 0xf6, 0x3b, 0x43, 0x3e, 0xf9, 0x32, + 0x2c, 0xef, 0xf7, 0x39, 0x20, 0x4a, 0x35, 0x41, 0xd1, 0xf8, 0x60, 0xcb, + 0x51, 0x01, 0x0a, 0x07, 0x3c, 0x4e, 0x99, 0x0a, 0x0e, 0xba, 0xee, 0x3c, + 0x17, 0x17, 0xb0, 0xc2, 0xa5, 0xd9, 0xd6, 0x1b, 0xa4, 0xd0, 0x51, 0x3d, + 0x90, 0x62, 0x57, 0xb1, 0x02, 0xae, 0x69, 0xed, 0x05, 0xce, 0x61, 0x70, + 0x36, 0x99, 0xfd, 0xd5, 0x52, 0xd5, 0x4e, 0x24, 0x47, 0x7c, 0xcf, 0x22, + 0x9f, 0x56, 0x17, 0x1b, 0x7c, 0x9f, 0x87, 0x8e, 0x27, 0x51, 0xfb, 0x98, + 0xdb, 0x99, 0xda, 0x04, 0x71, 0xae, 0xcd, 0x1a, 0xe0, 0xb6, 0xef, 0x59, + 0x7c, 0x12, 0x41, 0x8b, 0xfd, 0xa9, 0x36, 0x99, 0xac, 0x69, 0x21, 0xf6, + 0xf8, 0xfb, 0x2c, 0x30, 0x25, 0x59, 0x48, 0x29, 0x4e, 0x0a, 0x1a, 0x1f, + 0x6f, 0xb2, 0x70, 0x29, 0x61, 0xe1, 0x49, 0xeb, 0xe3, 0x56, 0x7d, 0x9f, + 0xa9, 0x7c, 0xdf, 0x33, 0x41, 0x92, 0xbe, 0x7d, 0x45, 0x15, 0xb3, 0x24, + 0x71, 0xee, 0xb9, 0x92, 0xca, 0x55, 0x57, 0x4d, 0x0c, 0x21, 0xad, 0xd4, + 0xd7, 0xf2, 0x9e, 0xf5, 0xfb, 0x45, 0xcf, 0xb0, 0xdf, 0x6c, 0x1a, 0x69, + 0xcb, 0x2e, 0xec, 0xb0, 0x97, 0xdd, 0xd0, 0xe8, 0x58, 0x1d, 0x7e, 0xa2, + 0x52, 0x34, 0xa1, 0xd4, 0x1b, 0xfe, 0x57, 0x3a, 0xa1, 0xda, 0x10, 0xbd, + 0xa6, 0xc0, 0x70, 0x6b, 0x5c, 0x97, 0x22, 0x04, 0x80, 0x6a, 0x2a, 0x65, + 0x0f, 0xab, 0x54, 0xb7, 0x11, 0xf5, 0x96, 0x7a, 0x52, 0x95, 0x08, 0x7d, + 0x97, 0x9a, 0x73, 0x8c, 0x17, 0x7d, 0xb6, 0xbf, 0x6e, 0x46, 0x87, 0x52, + 0x52, 0xc5, 0x10, 0x64, 0xc7, 0x67, 0x49, 0x61, 0x21, 0x3c, 0x69, 0x41, + 0x74, 0x68, 0x1d, 0x09, 0xe5, 0xc6, 0x9b, 0xf9, 0xd6, 0x5a, 0x03, 0x57, + 0x41, 0x72, 0x25, 0xce, 0xb4, 0x1c, 0xd4, 0x97, 0xef, 0x2d, 0x43, 0x7c, + 0x07, 0x72, 0xf9, 0x2c, 0x1b, 0x72, 0x3a, 0x24, 0xeb, 0x7e, 0xf4, 0x1e, + 0x5b, 0xea, 0x65, 0xe8, 0x48, 0x5c, 0xde, 0xc4, 0x3a, 0x6d, 0x83, 0xc8, + 0x6f, 0x74, 0x67, 0xc4, 0xc7, 0xe5, 0x9a, 0x10, 0xa5, 0xef, 0xd8, 0xb7, + 0x10, 0xaa, 0x07, 0x4c, 0xc3, 0x2b, 0x73, 0x3b, 0x99, 0x0a, 0xf1, 0x3b, + 0xe1, 0x15, 0x42, 0xa5, 0x83, 0x93, 0x2b, 0xfa, 0x65, 0x02, 0x20, 0x59, + 0x4a, 0xa7, 0x8b, 0xee, 0xfa, 0x98, 0x00, 0x9e, 0x89, 0xa1, 0xd3, 0x44, + 0x90, 0xba, 0xa9, 0x5d, 0x08, 0xf2, 0xf8, 0x01, 0x2c, 0x8d, 0x04, 0x66, + 0x2d, 0x7f, 0x0e, 0x14, 0x24, 0x4b, 0x56, 0x5b, 0x44, 0xf1, 0x4b, 0x10, + 0x3d, 0xee, 0x4f, 0xc6, 0xcf, 0x82, 0xa6, 0xc0, 0x0d, 0x24, 0x07, 0x84, + 0xae, 0x43, 0x99, 0x02, 0xb3, 0x18, 0xf7, 0xd3, 0x7b, 0x63, 0xa4, 0xcd, + 0x27, 0xf4, 0x30, 0x41, 0x7c, 0xc9, 0xae, 0xd7, 0xf0, 0x21, 0xb6, 0x4b, + 0xc3, 0xb1, 0x24, 0xe0, 0x35, 0xe9, 0x75, 0x16, 0xf4, 0xd1, 0x1b, 0xb6, + 0xaa, 0x85, 0x38, 0x81, 0x4c, 0x6b, 0x19, 0x07, 0xca, 0x4d, 0x96, 0xaa, + 0x15, 0xf0, 0x17, 0xa2, 0xac, 0x5e, 0x10, 0x60, 0x9e, 0x4f, 0x16, 0x98, + 0xc0, 0xc4, 0x2b, 0x34, 0xb1, 0xed, 0xb2, 0x4f, 0x8f, 0x9b, 0xab, 0x04, + 0x6f, 0xa4, 0xb6, 0xe5, 0x8b, 0x11, 0x36, 0x97, 0x08, 0xb6, 0xfb, 0xc5, + 0x2b, 0x5a, 0xa0, 0x97, 0x7f, 0x7f, 0x9d, 0xae, 0x88, 0x9b, 0x95, 0xad, + 0x7d, 0x36, 0x04, 0x8d, 0x3d, 0x5d, 0xb4, 0xae, 0x72, 0x61, 0xa9, 0x59, + 0xdb, 0x65, 0x3a, 0x21, 0x33, 0xd0, 0x13, 0x1d, 0xbc, 0xa2, 0xdb, 0x9a, + 0x69, 0x83, 0xa0, 0xcc, 0xb1, 0xdd, 0x0e, 0x2d, 0xc3, 0x5d, 0x0a, 0xf8, + 0x31, 0xc0, 0xc0, 0x02, 0xc4, 0x82, 0x76, 0xa3, 0x00, 0xd4, 0x08, 0xca, + 0xce, 0x66, 0x77, 0x12, 0xd2, 0xfa, 0x6f, 0xf0, 0x00, 0xf0, 0x57, 0xbd, + 0x43, 0x49, 0x14, 0xe1, 0x63, 0x73, 0xe9, 0x4f, 0x71, 0x6c, 0x73, 0x6f, + 0x02, 0x0d, 0xa2, 0x1f, 0x31, 0xc2, 0x38, 0x80, 0x08, 0xb4, 0x4e, 0x47, + 0xea, 0x44, 0x69, 0x5c, 0x85, 0x63, 0x14, 0xc8, 0x06, 0xd5, 0x71, 0x38, + 0xa2, 0xac, 0x14, 0x4d, 0x5f, 0x6b, 0xa2, 0x67, 0x32, 0x81, 0xb6, 0x19, + 0x4e, 0xf3, 0xe2, 0xf0, 0x54, 0x68, 0x55, 0x03, 0xff, 0xef, 0xda, 0x75, + 0x07, 0x4e, 0xfb, 0x8f, 0x2a, 0x3a, 0xeb, 0x03, 0x35, 0x62, 0x22, 0xfd, + 0xd2, 0xcc, 0xc1, 0xdb, 0x4b, 0x8e, 0x30, 0x3f, 0x39, 0x53, 0x8a, 0x28, + 0x9c, 0xec, 0x72, 0x28, 0xfa, 0xed, 0x51, 0x4e, 0x5d, 0x5d, 0x70, 0xde, + 0x44, 0xdf, 0x05, 0x8b, 0x0c, 0x3b, 0x18, 0x0e, 0x63, 0x85, 0xae, 0xb1, + 0xba, 0x8a, 0x94, 0x9e, 0xf8, 0x63, 0xab, 0x56, 0x1d, 0xe2, 0xd2, 0x29, + 0x71, 0xce, 0xf5, 0x98, 0x56, 0xdb, 0x9d, 0x3f, 0x51, 0xfa, 0x63, 0x65, + 0x9e, 0x88, 0x9b, 0x1c, 0x65, 0x3f, 0x4e, 0x31, 0x31, 0x5f, 0xce, 0xb6, + 0x9c, 0x85, 0xc2, 0xe2, 0x86, 0xc5, 0x1b, 0x7b, 0xcd, 0x5b, 0xac, 0x0f, + 0x69, 0x74, 0x93, 0x03, 0x2b, 0x59, 0xc4, 0x0d, 0x54, 0x12, 0x0d, 0x57, + 0xcc, 0xc5, 0xc5, 0xd6, 0x29, 0xa7, 0x28, 0xd4, 0x69, 0x2f, 0x68, 0xa2, + 0xcb, 0x74, 0x39, 0xcf, 0xd9, 0x08, 0xe9, 0x26, 0x7a, 0x2b, 0x9f, 0xe3, + 0xe6, 0xbc, 0x49, 0xd6, 0x80, 0x39, 0xae, 0x51, 0x2e, 0x43, 0xb4, 0xb2, + 0x14, 0x7f, 0x21, 0x13, 0x69, 0x32, 0xde, 0x68, 0xec, 0xee, 0x85, 0xeb, + 0x8c, 0x09, 0x74, 0xe3, 0x7c, 0xea, 0x62, 0x5e, 0xe1, 0xc8, 0x53, 0x02, + 0x26, 0xa1, 0x11, 0x4e, 0x2b, 0xf3, 0x3a, 0xd4, 0x08, 0x9b, 0xe8, 0xe0, + 0x20, 0x05, 0xb0, 0xa7, 0xf2, 0x99, 0x4e, 0xb3, 0x33, 0x9b, 0x84, 0x1e, + 0x6a, 0x56, 0x20, 0x66, 0x89, 0x3a, 0x32, 0xda, 0x54, 0x73, 0x91, 0xda, + 0xe7, 0x95, 0xb3, 0x2c, 0xd0, 0xc7, 0x3a, 0x32, 0xb7, 0x3f, 0x5d, 0xd6, + 0x62, 0x0f, 0x81, 0xae, 0x14, 0x4a, 0xbb, 0x76, 0x95, 0xda, 0x00, 0xab, + 0x9d, 0x8e, 0xe0, 0xcc, 0x72, 0x92, 0xed, 0x0f, 0x36, 0x1c, 0xc8, 0xf4, + 0x81, 0xb1, 0x43, 0xbd, 0xfa, 0xc9, 0xbd, 0x40, 0xda, 0x12, 0xe5, 0x59, + 0x4c, 0x35, 0xaf, 0x11, 0x0c, 0x23, 0xae, 0xb5, 0x83, 0xfb, 0xef, 0x2d, + 0x61, 0xf3, 0x6b, 0x60, 0x12, 0x91, 0x15, 0x41, 0xaf, 0x71, 0xd2, 0xa3, + 0x34, 0xa1, 0xac, 0x51, 0x15, 0x32, 0x7f, 0x52, 0x5d, 0x54, 0x7d, 0xed, + 0x46, 0x73, 0x42, 0x9b, 0xad, 0xd4, 0x8b, 0x84, 0xe3, 0xae, 0x7e, 0x16, + 0xb1, 0x4f, 0x34, 0x90, 0x65, 0x9a, 0x6e, 0x65, 0x0f, 0x48, 0xd6, 0xad, + 0x3d, 0x72, 0xa8, 0xb0, 0xde, 0xfe, 0xbf, 0xb4, 0xfc, 0x85, 0x54, 0xba, + 0x6e, 0x1f, 0x40, 0xeb, 0xf3, 0xdb, 0xe1, 0xca, 0x04, 0x28, 0x60, 0x5b, + 0x18, 0xe3, 0x1f, 0xb1, 0x24, 0x12, 0x60, 0x5c, 0xed, 0x1d, 0x58, 0x76, + 0x6c, 0x51, 0x93, 0xd3, 0xdf, 0x0c, 0x12, 0x12, 0x92, 0x0f, 0xda, 0x1c, + 0x2b, 0x68, 0x74, 0x08, 0x4b, 0x54, 0x0e, 0x45, 0x0f, 0xf6, 0x65, 0x28, + 0xa6, 0x3c, 0xb0, 0xd5, 0x0d, 0x07, 0xbe, 0x4f, 0xf3, 0xf4, 0xed, 0x9a, + 0xad, 0x40, 0xb2, 0x2e, 0xa6, 0xcd, 0x9b, 0x2c, 0xc5, 0x35, 0x4e, 0xa0, + 0xd1, 0x5b, 0x2d, 0x85, 0xde, 0x0d, 0x1b, 0x00, 0x5f, 0x5f, 0xbe, 0xc2, + 0x4d, 0xae, 0xa2, 0x0e, 0x63, 0xf5, 0xfe, 0x4e, 0x6e, 0xb0, 0x70, 0xd9, + 0x60, 0x6b, 0x37, 0xe8, 0x89, 0xb1, 0xc8, 0x85, 0x28, 0x73, 0x19, 0x4a, + 0x36, 0x9c, 0x36, 0xb9, 0xc9, 0xf6, 0xfd, 0x0b, 0xfb, 0x1d, 0x4e, 0xb9, + 0x15, 0xc2, 0x70, 0xbf, 0x76, 0xdf, 0xc2, 0xfd, 0x6b, 0xfa, 0x16, 0xd8, + 0x4a, 0x66, 0xa3, 0x77, 0x2f, 0x7c, 0x6f, 0x48, 0xa3, 0x19, 0x56, 0xca, + 0x53, 0x78, 0x93, 0x0b, 0x18, 0x00, 0xed, 0xd7, 0xab, 0xbe, 0xf6, 0x99, + 0xdc, 0xab, 0x3d, 0x25, 0xfa, 0x20, 0xe6, 0xb4, 0x19, 0xed, 0x7e, 0xf1, + 0xb2, 0xc5, 0xa6, 0x27, 0x9c, 0x58, 0x1e, 0x7d, 0x31, 0xde, 0x84, 0x1c, + 0x39, 0x0a, 0xf4, 0xe8, 0x03, 0x27, 0x03, 0x6f, 0xce, 0x4c, 0x2d, 0xc0, + 0x59, 0x50, 0xc6, 0x8d, 0x6b, 0xd3, 0x64, 0x60, 0x26, 0xa5, 0x3c, 0xe3, + 0x73, 0xa0, 0x3b, 0xf3, 0x79, 0xc6, 0xd9, 0xca, 0x14, 0xeb, 0x2a, 0xc6, + 0x79, 0x93, 0xa3, 0x2a, 0xc5, 0x32, 0x62, 0x6e, 0x2f, 0xd9, 0x06, 0xd2, + 0xc0, 0x96, 0x15, 0x58, 0x99, 0x09, 0x9c, 0xa7, 0xa6, 0x40, 0xa3, 0x12, + 0xe6, 0x0b, 0x9f, 0x43, 0x3b, 0x7e, 0xff, 0xc2, 0xa5, 0x82, 0x65, 0x93, + 0x6f, 0x0a, 0xb1, 0xc2, 0x0a, 0x4e, 0x37, 0x39, 0x28, 0xe4, 0xeb, 0x10, + 0x3f, 0xe5, 0xf7, 0x00, 0xf6, 0x8d, 0xe9, 0x87, 0x63, 0x81, 0xaa, 0x28, + 0x05, 0x60, 0x1a, 0x81, 0x27, 0x06, 0x55, 0x93, 0x1c, 0x48, 0xab, 0x00, + 0x23, 0x79, 0x13, 0xcb, 0x9d, 0x03, 0x08, 0x0a, 0xd2, 0x94, 0x10, 0xb3, + 0xd5, 0x20, 0x3f, 0x69, 0x88, 0x5a, 0xdc, 0x25, 0x27, 0x50, 0xf8, 0x0e, + 0xe6, 0x88, 0xfc, 0xf3, 0x25, 0xa8, 0x8f, 0x95, 0x89, 0x9e, 0xde, 0xcc, + 0x4b, 0xdd, 0x87, 0xf1, 0xd4, 0x94, 0x73, 0x3b, 0xd9, 0x9d, 0x7d, 0x5e, + 0x2e, 0x42, 0xf4, 0x3e, 0xe4, 0x61, 0xe2, 0x45, 0x98, 0x0e, 0x35, 0xec, + 0x9e, 0x13, 0xa9, 0x0b, 0xa0, 0x66, 0x15, 0x58, 0x90, 0x0a, 0x00, 0x63, + 0x65, 0xab, 0x65, 0x16, 0x48, 0x70, 0xae, 0x1a, 0x01, 0x2a, 0x5e, 0x54, + 0xa6, 0x95, 0x2d, 0x9d, 0x92, 0xda, 0xdd, 0x6c, 0xaa, 0x83, 0x3b, 0xbb, + 0x76, 0x91, 0xf4, 0x48, 0x50, 0x09, 0xb2, 0x5d, 0xd7, 0xa2, 0xa9, 0xda, + 0x3f, 0xe1, 0x8f, 0x0e, 0x39, 0xc4, 0x05, 0xd1, 0x1d, 0xb5, 0xee, 0xeb, + 0xd8, 0x8b, 0xb3, 0x2d, 0xec, 0xb7, 0x4d, 0x96, 0x27, 0xa5, 0x4c, 0x5e, + 0xb4, 0xc8, 0x5e, 0x51, 0x49, 0xa7, 0x88, 0xc3, 0x87, 0x18, 0xbf, 0x22, + 0x24, 0x49, 0x07, 0x17, 0x3a, 0x18, 0xd0, 0x00, 0xbd, 0x15, 0x00, 0xde, + 0x22, 0x5b, 0xd9, 0x14, 0xe1, 0x77, 0xec, 0x1b, 0x0a, 0x18, 0x49, 0xb8, + 0xca, 0x6e, 0x30, 0x04, 0xa6, 0x2b, 0x14, 0x7e, 0xfc, 0x85, 0x42, 0x12, + 0x58, 0x05, 0xdf, 0x3a, 0xd5, 0x4f, 0xab, 0xd5, 0xa6, 0x9d, 0x49, 0x40, + 0x62, 0x8f, 0x2d, 0xfa, 0x3c, 0xf8, 0x2e, 0xac, 0x43, 0x45, 0x41, 0x51, + 0x3f, 0x37, 0x53, 0x24, 0x00, 0xff, 0x45, 0x55, 0x1d, 0x83, 0x6f, 0x4d, + 0x9d, 0x01, 0x5e, 0xc2, 0x44, 0x95, 0xd2, 0x93, 0x2c, 0x8e, 0x65, 0xd8, + 0x1b, 0x1f, 0xb2, 0xd4, 0x28, 0x65, 0x63, 0xd5, 0xd3, 0xa2, 0x96, 0x75, + 0xd2, 0xa2, 0x98, 0x2f, 0x42, 0x99, 0xc1, 0xa2, 0xf8, 0x90, 0xa0, 0x71, + 0x69, 0x53, 0x58, 0x27, 0xf8, 0x40, 0xa6, 0x65, 0x6b, 0x74, 0x51, 0x48, + 0x55, 0xf3, 0x94, 0x37, 0x43, 0x97, 0x08, 0x9b, 0x6e, 0x31, 0x82, 0x79, + 0xef, 0xb9, 0x1c, 0x38, 0x82, 0xbc, 0x0f, 0xd9, 0xa8, 0x5e, 0x64, 0x17, + 0x15, 0xab, 0x91, 0xb2, 0x7a, 0xdc, 0x43, 0x32, 0x92, 0x3d, 0x31, 0x39, + 0xca, 0x88, 0xb5, 0x8d, 0xac, 0x62, 0xd8, 0x3e, 0x2b, 0xa2, 0x15, 0x4b, + 0x0f, 0x3f, 0xc3, 0x4e, 0x87, 0x11, 0x99, 0xce, 0xfb, 0x97, 0x07, 0x62, + 0x7a, 0x4a, 0x43, 0x88, 0xe9, 0x1c, 0xbe, 0x94, 0x85, 0xec, 0x6c, 0x59, + 0x3c, 0x29, 0xa2, 0xd1, 0xbc, 0x01, 0x53, 0x4d, 0xd8, 0xdc, 0xa8, 0x71, + 0x1a, 0x4b, 0xf8, 0xe2, 0x3e, 0xfd, 0x31, 0xc1, 0x39, 0x75, 0x7f, 0x7b, + 0xb9, 0x5a, 0x9e, 0xfb, 0xb5, 0xb5, 0x76, 0x3e, 0xcb, 0xac, 0xce, 0xde, + 0x0f, 0x59, 0x2a, 0x7c, 0xbe, 0x09, 0x35, 0x3a, 0xcb, 0x89, 0x69, 0x60, + 0xa3, 0x85, 0x3e, 0xcb, 0xed, 0x88, 0xbb, 0x77, 0xa5, 0x8e, 0xde, 0x8f, + 0x09, 0x30, 0x7c, 0xb9, 0xc2, 0xca, 0xdd, 0x1f, 0x73, 0x20, 0xe2, 0x45, + 0xa8, 0x0e, 0xc2, 0x29, 0xe0, 0x27, 0xa4, 0xd7, 0x86, 0x2e, 0xfc, 0x36, + 0xd5, 0x31, 0x32, 0x09, 0x0d, 0xe4, 0x49, 0x5d, 0x55, 0xdc, 0xc9, 0x32, + 0xcb, 0x79, 0x37, 0x3a, 0x04, 0x7d, 0x39, 0xba, 0x79, 0x0d, 0xee, 0x18, + 0x69, 0x08, 0xc1, 0xe2, 0xe1, 0xf6, 0xc2, 0xcc, 0x99, 0x29, 0xf5, 0x9c, + 0x28, 0xd5, 0x99, 0x69, 0x09, 0xc5, 0xb8, 0xf6, 0x46, 0x15, 0x13, 0x54, + 0xb2, 0x8f, 0x79, 0x38, 0x8b, 0x9f, 0x9b, 0x21, 0x35, 0x59, 0x07, 0xab, + 0xdb, 0x7f, 0x00, 0xe1, 0xa5, 0x76, 0x44, 0x5e, 0xa9, 0xd1, 0x7b, 0x0b, + 0x2a, 0x92, 0xab, 0x29, 0xb8, 0xd5, 0x3c, 0x6c, 0x2b, 0x05, 0x87, 0x41, + 0xec, 0x5f, 0x1e, 0x2a, 0x63, 0x1d, 0x9e, 0x2b, 0x70, 0x23, 0xef, 0x66, + 0x8d, 0xa6, 0xcc, 0xae, 0xcc, 0x76, 0x09, 0x81, 0x1d, 0x01, 0x65, 0xad, + 0x2b, 0xde, 0xf5, 0x31, 0x0b, 0x34, 0x2b, 0xe2, 0xac, 0xe5, 0xb3, 0x4f, + 0xd6, 0xe0, 0x02, 0x02, 0xeb, 0x3c, 0x92, 0xbb, 0x44, 0xf4, 0x08, 0x05, + 0xbf, 0x0d, 0x92, 0xe9, 0xda, 0x24, 0xf4, 0x44, 0xea, 0xa8, 0x9e, 0x03, + 0x9f, 0x7d, 0x26, 0x0a, 0x9e, 0xf9, 0xb6, 0x7f, 0x79, 0x28, 0x7f, 0x27, + 0x34, 0x84, 0x94, 0xf1, 0xd5, 0x98, 0x44, 0x75, 0xd2, 0xb6, 0xb8, 0x94, + 0x7c, 0x80, 0x8f, 0x39, 0x20, 0x5f, 0xcf, 0xc0, 0x67, 0x07, 0xa9, 0x09, + 0x69, 0x9d, 0x80, 0xff, 0x5f, 0x92, 0x9b, 0xcf, 0x52, 0x4a, 0xa2, 0x3f, + 0x06, 0x93, 0x88, 0xff, 0x57, 0x4a, 0x46, 0x3e, 0x3b, 0x9c, 0xdd, 0x70, + 0x66, 0x95, 0xed, 0x65, 0xfd, 0xb6, 0x52, 0x95, 0x70, 0x9e, 0x49, 0x13, + 0xa5, 0xaa, 0x3c, 0xc1, 0x85, 0x7d, 0x5e, 0xa5, 0x0f, 0xdc, 0xa4, 0x8c, + 0x7a, 0x81, 0x37, 0x53, 0x69, 0x27, 0x10, 0x63, 0xe8, 0x98, 0xe5, 0x51, + 0x34, 0xd4, 0x0a, 0x2b, 0xfc, 0x07, 0x7f, 0x8a, 0x9b, 0x5e, 0xa9, 0x99, + 0xfe, 0xfc, 0xa2, 0x24, 0x66, 0xf1, 0xb9, 0xb5, 0x7b, 0x1e, 0xb1, 0x4a, + 0x38, 0x59, 0x57, 0x1b, 0x27, 0x2d, 0xcb, 0x94, 0x57, 0x0c, 0x7c, 0xa3, + 0xc7, 0xf6, 0x3f, 0x98, 0xad, 0x44, 0x15, 0x2f, 0x0a, 0x67, 0x5d, 0x5d, + 0xc8, 0x96, 0xb8, 0xbf, 0x24, 0xaa, 0x6f, 0xa0, 0xad, 0x05, 0x15, 0xe2, + 0x08, 0x15, 0xec, 0xa0, 0x3e, 0xf6, 0x16, 0x32, 0x3a, 0xa6, 0x1d, 0xa6, + 0xa5, 0x6a, 0xa7, 0x29, 0x0b, 0xc6, 0x18, 0x38, 0xa2, 0x5b, 0x7e, 0x8f, + 0x22, 0xf2, 0xc8, 0x17, 0x14, 0x53, 0x73, 0xba, 0x04, 0x47, 0xbd, 0x8d, + 0xb5, 0x3b, 0xa8, 0x02, 0x45, 0xf8, 0x45, 0xa1, 0xd6, 0x09, 0xe5, 0x2d, + 0x37, 0xe4, 0x85, 0x86, 0x23, 0x86, 0x90, 0xf7, 0x0a, 0x5d, 0xe0, 0x81, + 0xe1, 0x86, 0x12, 0x4d, 0xf0, 0xfc, 0x40, 0x8a, 0x57, 0x1a, 0x63, 0x78, + 0x3f, 0x71, 0x5f, 0x4f, 0x48, 0xf5, 0x9d, 0xec, 0xc3, 0x84, 0x6f, 0x7a, + 0x1e, 0xb6, 0x92, 0x43, 0x77, 0xc7, 0x18, 0xd6, 0xbe, 0x7c, 0x85, 0xca, + 0x1a, 0xa8, 0x02, 0x10, 0x57, 0x04, 0xe5, 0x3f, 0xca, 0x56, 0xb7, 0x41, + 0x03, 0xfc, 0x8a, 0x02, 0x34, 0xc3, 0x54, 0x8f, 0x84, 0xff, 0x85, 0xdc, + 0xb4, 0x14, 0x5f, 0xa1, 0xc5, 0x2f, 0x7e, 0x1d, 0x56, 0x78, 0x93, 0x5e, + 0xc8, 0x53, 0xd6, 0xd0, 0x08, 0xad, 0x98, 0x5c, 0xe9, 0xf0, 0xae, 0xe2, + 0xfd, 0xff, 0x25, 0xe1, 0x62, 0x2a, 0x57, 0x99, 0xfe, 0xe3, 0x7f, 0x4e, + 0xb6, 0x97, 0x19, 0x25, 0x21, 0x4c, 0x22, 0xa5, 0x75, 0x2a, 0x97, 0xfe, + 0x7e, 0x37, 0x4e, 0x6b, 0x25, 0xbd, 0x39, 0x27, 0x44, 0xe9, 0x4f, 0x97, + 0xc3, 0x10, 0x49, 0x68, 0x81, 0x1b, 0xe6, 0xf0, 0x42, 0x4d, 0x1a, 0x67, + 0xbf, 0x0b, 0x26, 0x0b, 0xe8, 0x69, 0x7d, 0x40, 0xe2, 0x78, 0xdf, 0xbb, + 0x7f, 0xeb, 0xe6, 0xb4, 0xef, 0xfc, 0x09, 0x46, 0xdd, 0x71, 0xcf, 0x46, + 0x0d, 0x9e, 0xcd, 0x2c, 0xa2, 0x97, 0x8f, 0x4f, 0x9d, 0xaa, 0x1d, 0x4b, + 0x93, 0x28, 0xe1, 0x35, 0x2d, 0x9f, 0xba, 0x26, 0xa3, 0x8e, 0xb2, 0x1c, + 0x65, 0x23, 0xa8, 0xf6, 0x13, 0x71, 0x4f, 0x54, 0x0e, 0xfe, 0x65, 0x13, + 0x58, 0x6f, 0xdb, 0x82, 0x4a, 0x05, 0x9d, 0x23, 0x81, 0x6f, 0xc2, 0xd2, + 0xae, 0x53, 0x81, 0x02, 0x88, 0xb6, 0xa9, 0x38, 0x25, 0x70, 0x41, 0x01, + 0xc3, 0x86, 0x0a, 0x33, 0xc4, 0x8a, 0x4c, 0x5d, 0x86, 0xc4, 0x1d, 0x41, + 0x67, 0x04, 0x0e, 0x9e, 0xae, 0xe6, 0x12, 0xd8, 0x7c, 0xa8, 0x1e, 0x13, + 0xaa, 0xe1, 0x48, 0x0a, 0xcd, 0xe2, 0xe4, 0x69, 0xb4, 0xbf, 0xc7, 0x59, + 0x13, 0xab, 0xd2, 0x08, 0xbb, 0xb5, 0xbe, 0x61, 0x19, 0xaa, 0x5d, 0x51, + 0xa0, 0x55, 0x81, 0x61, 0x8a, 0x2a, 0x97, 0x60, 0x94, 0x92, 0x2a, 0x4e, + 0xa1, 0xb4, 0x48, 0x45, 0x1c, 0x45, 0x75, 0x64, 0x22, 0x05, 0x5b, 0xd1, + 0x0e, 0x66, 0xe9, 0x6d, 0xbb, 0x50, 0xfe, 0x89, 0x06, 0xc3, 0xcc, 0xa9, + 0x00, 0x91, 0xa4, 0xdf, 0x83, 0x9e, 0xdb, 0x12, 0x9c, 0xa0, 0xc8, 0x28, + 0x9c, 0xdf, 0x9a, 0xeb, 0x49, 0x5e, 0x39, 0x30, 0x09, 0xf9, 0x85, 0xf4, + 0x3d, 0x9b, 0x6a, 0xbb, 0x49, 0xc5, 0x68, 0xfc, 0x1d, 0xfd, 0x1c, 0xb0, + 0x21, 0x59, 0x45, 0x63, 0x3a, 0x2a, 0xad, 0x7a, 0x7f, 0x1a, 0xac, 0xfe, + 0xda, 0x4f, 0xae, 0xeb, 0x2b, 0x4a, 0xfe, 0x0e, 0xdf, 0x96, 0x6b, 0xda, + 0xbf, 0xde, 0x04, 0x4e, 0xe9, 0x8f, 0x2c, 0x95, 0xfc, 0x6c, 0xc5, 0x85, + 0x4b, 0xc1, 0xb9, 0xa6, 0x7a, 0x57, 0x87, 0x48, 0x8c, 0x4a, 0x33, 0xfb, + 0x4a, 0xff, 0x2a, 0x9b, 0x50, 0xf7, 0x31, 0x07, 0x75, 0xfb, 0x33, 0x38, + 0x81, 0x5b, 0x75, 0x43, 0xc6, 0xc0, 0x3e, 0xb9, 0x59, 0xbc, 0x64, 0x5b, + 0xa0, 0x7f, 0xf5, 0x9b, 0xb6, 0x52, 0x98, 0xa6, 0x72, 0x67, 0xfe, 0xf5, + 0xa1, 0x4a, 0x60, 0xa6, 0x2d, 0xca, 0xe3, 0xf7, 0xdc, 0xd2, 0xcb, 0xf2, + 0xc5, 0x61, 0x65, 0x2e, 0x2f, 0xde, 0x02, 0xd5, 0x9b, 0xa8, 0x8a, 0x57, + 0x45, 0x14, 0x27, 0x04, 0xb3, 0x29, 0xd8, 0x62, 0x2f, 0xf3, 0xc4, 0xc1, + 0xb4, 0xe6, 0xf6, 0x9f, 0xde, 0xd5, 0xe1, 0x83, 0x05, 0x12, 0xc8, 0x9f, + 0x79, 0xfe, 0x49, 0xa6, 0xa6, 0xe7, 0xbf, 0xee, 0x77, 0x01, 0x31, 0x3d, + 0x12, 0x0f, 0x9b, 0x03, 0x6e, 0x73, 0x18, 0xb6, 0x65, 0x6d, 0x29, 0x51, + 0xf5, 0x59, 0xc6, 0x38, 0x86, 0x31, 0x19, 0x36, 0x3f, 0x1d, 0xfd, 0xe1, + 0x44, 0xba, 0xef, 0x55, 0xb4, 0xe4, 0x36, 0xe1, 0x4d, 0x2e, 0xdd, 0xdf, + 0x25, 0x06, 0x13, 0x8d, 0xe2, 0x9d, 0x29, 0x98, 0x26, 0x51, 0x36, 0xef, + 0x39, 0x0e, 0x9a, 0x16, 0x7a, 0x17, 0x2d, 0x0f, 0x94, 0xc9, 0xaa, 0x07, + 0x25, 0x15, 0x5b, 0x5a, 0x42, 0x14, 0x96, 0xa6, 0x35, 0xab, 0xa4, 0xab, + 0xdb, 0x25, 0xeb, 0x0a, 0xec, 0xd1, 0x0e, 0x09, 0x5a, 0x3a, 0x94, 0xd4, + 0x0a, 0xa5, 0x14, 0xb5, 0x43, 0x2d, 0x19, 0x7f, 0x54, 0xa0, 0x42, 0x22, + 0xe8, 0xf3, 0x42, 0xe1, 0x31, 0xb1, 0x3d, 0x28, 0x44, 0x80, 0xf2, 0x63, + 0x32, 0x94, 0x47, 0x23, 0x74, 0x4e, 0x6d, 0xe3, 0x3b, 0x26, 0x95, 0x7f, + 0xe5, 0x5a, 0x6e, 0x44, 0x10, 0xe5, 0xb5, 0xae, 0xa2, 0xb6, 0x15, 0x1e, + 0xdd, 0x9b, 0xb6, 0xe8, 0x61, 0x63, 0x76, 0xbe, 0xa4, 0x3d, 0xb7, 0x61, + 0xa1, 0x0d, 0x51, 0x2f, 0xe1, 0xf2, 0x92, 0xb8, 0x2d, 0xcf, 0x74, 0x13, + 0xaa, 0x92, 0x05, 0xda, 0x40, 0xce, 0xee, 0xd6, 0x8a, 0x81, 0x1e, 0x40, + 0xde, 0xfc, 0x9b, 0xf6, 0x53, 0xc2, 0x07, 0x7f, 0xaa, 0x8e, 0xb6, 0x0c, + 0x67, 0xd3, 0x4f, 0xaf, 0xea, 0x6c, 0x9f, 0x0e, 0x69, 0x6b, 0x93, 0x42, + 0x76, 0xa4, 0x63, 0x2a, 0xd6, 0xf4, 0xd3, 0x54, 0x53, 0x3e, 0x66, 0xb0, + 0x13, 0xd3, 0x58, 0xa7, 0xbd, 0x85, 0xd2, 0x6a, 0xca, 0x5c, 0x02, 0x79, + 0x59, 0x41, 0x2b, 0xa3, 0x62, 0x98, 0x52, 0xf9, 0xd7, 0x57, 0x27, 0x38, + 0x0a, 0x5e, 0xcd, 0x4f, 0x35, 0xb5, 0x0d, 0x44, 0x30, 0xe1, 0xef, 0x5c, + 0x19, 0xd9, 0xd6, 0x4f, 0x59, 0x72, 0x5b, 0xa1, 0x4a, 0x03, 0xf1, 0x77, + 0x4a, 0x69, 0xf1, 0x68, 0x4a, 0xa0, 0x1a, 0x97, 0x7d, 0xc9, 0x6a, 0xc0, + 0xb3, 0x70, 0x70, 0xfd, 0x34, 0x5e, 0x64, 0x7e, 0x4d, 0xc1, 0xe6, 0x9f, + 0xb2, 0x10, 0x39, 0xb7, 0x68, 0x2c, 0xd4, 0x64, 0x7d, 0x8e, 0xa1, 0x48, + 0x1b, 0x53, 0x4d, 0x75, 0x81, 0x25, 0x11, 0x37, 0x5c, 0x48, 0x7d, 0x51, + 0x76, 0x85, 0x5d, 0x6b, 0x18, 0x64, 0xc2, 0xeb, 0x49, 0x3c, 0xf5, 0xc1, + 0x2c, 0xf2, 0xd3, 0x0d, 0x94, 0x18, 0xa5, 0xc6, 0x97, 0xa3, 0xa1, 0x96, + 0x27, 0xf5, 0x00, 0xa9, 0x4b, 0xe6, 0xcd, 0xae, 0x68, 0x03, 0xca, 0x92, + 0x3a, 0x2b, 0x40, 0x2b, 0xc2, 0x09, 0x00, 0xcf, 0xec, 0x3a, 0x7a, 0xfb, + 0xb2, 0xcf, 0xa5, 0x4f, 0x09, 0xd5, 0xe8, 0x62, 0x2e, 0x87, 0x69, 0x67, + 0x1e, 0x5a, 0x52, 0x83, 0xa3, 0x06, 0x2c, 0xe0, 0xa6, 0x81, 0x27, 0x04, + 0xda, 0xb3, 0xac, 0x9d, 0xa5, 0x2a, 0xb4, 0xac, 0xce, 0x69, 0x8a, 0x9e, + 0xfd, 0x35, 0x70, 0x37, 0x78, 0x79, 0x4f, 0x99, 0x21, 0xfe, 0xab, 0x09, + 0xf0, 0x85, 0x4f, 0xb9, 0x34, 0x2a, 0x10, 0x35, 0x3f, 0x53, 0xab, 0x0a, + 0xa1, 0x10, 0x58, 0xc6, 0xb4, 0x89, 0x99, 0x83, 0x70, 0xb1, 0xd4, 0x54, + 0x92, 0x76, 0xe7, 0x36, 0x0a, 0xbc, 0x4c, 0x2a, 0x50, 0xab, 0x92, 0xe2, + 0x65, 0xa2, 0x89, 0x10, 0x2c, 0x8b, 0x6e, 0x03, 0x24, 0x0e, 0x58, 0xaa, + 0x9b, 0x6c, 0x9a, 0x1d, 0xb1, 0xb7, 0xdb, 0x3d, 0x1a, 0x94, 0x63, 0x53, + 0xa6, 0xb3, 0x41, 0x82, 0x2e, 0x1e, 0x6d, 0x94, 0x5d, 0x60, 0xda, 0x09, + 0x44, 0x0f, 0xc8, 0xcb, 0x5f, 0x84, 0x6e, 0x83, 0x2b, 0x14, 0x7d, 0x03, + 0x48, 0xdb, 0x46, 0xba, 0x82, 0x21, 0x52, 0x86, 0x3e, 0xea, 0xd6, 0x04, + 0x81, 0x94, 0xc0, 0x4c, 0xf3, 0x72, 0x51, 0x86, 0x76, 0x6d, 0x83, 0xc8, + 0xd0, 0xde, 0x15, 0x69, 0xad, 0x51, 0xbb, 0x2f, 0xec, 0x83, 0x9d, 0x9f, + 0x89, 0x87, 0xed, 0xcd, 0x95, 0x0a, 0xa0, 0x43, 0x39, 0xe2, 0x83, 0x75, + 0x14, 0x71, 0x11, 0xa9, 0x80, 0xbc, 0x6d, 0xba, 0xe5, 0x79, 0xa9, 0x15, + 0xf0, 0xbf, 0xda, 0xed, 0xad, 0x02, 0xdc, 0x21, 0x47, 0x24, 0x3f, 0xf1, + 0x43, 0x76, 0x3f, 0xc1, 0xbf, 0x89, 0xc6, 0xf4, 0xde, 0xc2, 0x83, 0x47, + 0x1d, 0xb3, 0x6e, 0x09, 0x2f, 0x35, 0x36, 0x1e, 0xbe, 0x27, 0xdd, 0xe6, + 0x53, 0x82, 0xea, 0xaf, 0x75, 0x6b, 0xac, 0x28, 0x75, 0xed, 0x53, 0x16, + 0x9a, 0xbf, 0x22, 0x91, 0x39, 0x26, 0x8a, 0x09, 0xa9, 0x6b, 0xb1, 0x35, + 0x3d, 0x24, 0xbe, 0x8b, 0x79, 0x70, 0xbe, 0x8c, 0xc1, 0xdd, 0xbb, 0x3a, + 0x70, 0x8c, 0x4d, 0x6f, 0x06, 0xa9, 0x49, 0x31, 0xf7, 0xd9, 0xf5, 0xa9, + 0xc4, 0x9f, 0xb2, 0xb0, 0xf6, 0x89, 0x26, 0xb8, 0x9f, 0x2c, 0x67, 0x67, + 0xf4, 0x9c, 0xd1, 0x29, 0x88, 0x78, 0x19, 0xc0, 0x97, 0x78, 0xbf, 0x93, + 0xfd, 0xac, 0x07, 0x27, 0xfe, 0x29, 0xc1, 0xc7, 0x57, 0xae, 0x30, 0x6b, + 0xf6, 0x53, 0x16, 0x12, 0xbd, 0x3a, 0xe4, 0x98, 0x20, 0x93, 0x0e, 0x04, + 0x76, 0x8c, 0x00, 0xd4, 0x27, 0xa1, 0xd7, 0x10, 0x24, 0x43, 0x5c, 0x4d, + 0x92, 0x27, 0x13, 0x07, 0x06, 0x0d, 0xb0, 0x71, 0x28, 0x86, 0x31, 0x32, + 0xca, 0x10, 0x3d, 0x50, 0x70, 0x69, 0xab, 0xc5, 0x3c, 0xb1, 0xce, 0x27, + 0x6a, 0xca, 0x49, 0x7a, 0xb2, 0xa3, 0x42, 0xb5, 0x0c, 0xd6, 0xa1, 0x4f, + 0x59, 0x7c, 0x37, 0x0d, 0x9f, 0x74, 0xcf, 0x73, 0x92, 0x8d, 0xdc, 0xbc, + 0x70, 0xb3, 0x89, 0x07, 0x9a, 0xa9, 0x95, 0xb9, 0xf3, 0x3e, 0xe5, 0x40, + 0x8b, 0x29, 0x6f, 0x5a, 0xb4, 0x21, 0xe9, 0x44, 0x08, 0x98, 0xad, 0xd4, + 0x36, 0xa9, 0xd9, 0xc2, 0xc5, 0x84, 0xf5, 0xb8, 0x20, 0xe2, 0xbf, 0x2e, + 0x31, 0xc9, 0xe2, 0x74, 0x09, 0x3e, 0x3e, 0x81, 0x5c, 0x6b, 0x91, 0xc4, + 0xd9, 0x3f, 0xb1, 0xd9, 0xc2, 0xc5, 0x64, 0x8c, 0xc1, 0x6c, 0x1e, 0x07, + 0x0c, 0xb1, 0x57, 0xc8, 0xca, 0x01, 0xf2, 0x57, 0xf1, 0x38, 0x75, 0x0e, + 0xa9, 0x39, 0x8b, 0xf4, 0x64, 0x81, 0x12, 0x09, 0x9e, 0x0c, 0xe0, 0x54, + 0xf8, 0x3d, 0x8a, 0xd7, 0xeb, 0x9d, 0x3b, 0x25, 0x38, 0x5a, 0x70, 0x05, + 0xf0, 0x1a, 0xca, 0x55, 0x52, 0x14, 0xd4, 0x42, 0xd0, 0x16, 0xba, 0xb3, + 0x01, 0xbd, 0x19, 0x29, 0x3a, 0x84, 0x4f, 0xf0, 0x06, 0x74, 0xbd, 0x85, + 0x97, 0xa7, 0x7a, 0x13, 0xca, 0x72, 0xc9, 0x17, 0x4b, 0x88, 0x4b, 0xcc, + 0x1a, 0x83, 0x6a, 0x4c, 0xe4, 0x82, 0x26, 0xc2, 0x02, 0x51, 0x99, 0x4a, + 0x60, 0x4f, 0x95, 0x5c, 0x96, 0xbe, 0xa8, 0xdb, 0xe0, 0x56, 0x65, 0xb5, + 0xe5, 0x61, 0x31, 0x7a, 0x32, 0xca, 0xa6, 0xf3, 0x16, 0xa5, 0x92, 0xe3, + 0xca, 0x39, 0x6c, 0xb5, 0x44, 0xe7, 0x83, 0xcb, 0x7d, 0x5b, 0xed, 0x14, + 0x99, 0x61, 0xc9, 0x8d, 0xd6, 0x45, 0x80, 0xf6, 0x29, 0x0f, 0xa9, 0xd1, + 0x0f, 0x40, 0x80, 0xf6, 0xe9, 0x77, 0x7e, 0x07, 0x51, 0xab, 0xa4, 0x58, + 0xf4, 0xbf, 0xe6, 0xe5, 0xe5, 0x22, 0x56, 0x4c, 0x87, 0xdb, 0xef, 0xb9, + 0xc9, 0xdc, 0x28, 0xc1, 0x8e, 0x4e, 0x9c, 0x0a, 0x7e, 0x61, 0xde, 0x8b, + 0x38, 0xcb, 0x71, 0x35, 0x36, 0x82, 0x1a, 0x64, 0x89, 0x0d, 0xa3, 0x3c, + 0x4f, 0x68, 0xef, 0xc5, 0xeb, 0x73, 0xba, 0xbc, 0xe5, 0x6a, 0x36, 0x9b, + 0xcf, 0x59, 0x4a, 0x5b, 0x52, 0x5e, 0x0d, 0xeb, 0x02, 0xe2, 0x83, 0x9e, + 0xe3, 0xf7, 0x2f, 0x7b, 0xd3, 0xf9, 0x9c, 0x28, 0x61, 0xb9, 0x32, 0xf3, + 0xfd, 0x73, 0x96, 0xc2, 0x94, 0x11, 0xfe, 0x59, 0xb8, 0x32, 0x59, 0x1a, + 0x68, 0xd4, 0x34, 0x3b, 0xde, 0x72, 0xe1, 0xc2, 0x72, 0xbd, 0x7e, 0x7d, + 0xc5, 0xff, 0x86, 0x97, 0x97, 0x94, 0x51, 0x6f, 0x4d, 0x42, 0x6d, 0x39, + 0xda, 0x64, 0xe1, 0xb2, 0xc1, 0x86, 0x1c, 0xc4, 0xea, 0xc2, 0x0d, 0x9f, + 0xb3, 0xd5, 0xec, 0x69, 0x24, 0x3c, 0x11, 0x9a, 0x35, 0x4c, 0x4f, 0xcb, + 0x36, 0xa0, 0x7e, 0x50, 0x55, 0x96, 0xb0, 0xc1, 0xa8, 0x64, 0xeb, 0xf7, + 0x19, 0x57, 0x51, 0x42, 0x0d, 0x0f, 0x5e, 0x5e, 0x7e, 0x01, 0xb3, 0xcf, + 0x2c, 0x05, 0xe7, 0xca, 0xd4, 0x95, 0x3c, 0xac, 0x9b, 0x4d, 0x21, 0x6d, + 0x82, 0x7e, 0x86, 0xf5, 0x27, 0x53, 0x0b, 0x7d, 0x91, 0x6e, 0xb1, 0x70, + 0xc9, 0xe0, 0x13, 0x0d, 0x95, 0xae, 0x56, 0x18, 0xdd, 0xfc, 0x9c, 0xc3, + 0x25, 0xa8, 0x8c, 0x49, 0xe3, 0x80, 0xd9, 0xd7, 0xa6, 0xdf, 0x1a, 0xc6, + 0x06, 0x79, 0xf2, 0x60, 0x79, 0xd4, 0x28, 0xd5, 0xfa, 0x82, 0xb8, 0xe2, + 0xc1, 0x60, 0x8c, 0x17, 0x66, 0x60, 0xe5, 0xcc, 0xd3, 0x07, 0xc4, 0x6b, + 0x24, 0x67, 0x6e, 0x35, 0x1b, 0x4f, 0x9e, 0x3c, 0xb9, 0x46, 0xfa, 0xd3, + 0x66, 0xba, 0x12, 0x3c, 0x7e, 0xff, 0xc2, 0x37, 0x1d, 0x3e, 0x45, 0x2d, + 0xe6, 0x22, 0x4d, 0x66, 0x16, 0x5d, 0x5a, 0x7d, 0x95, 0xcf, 0x39, 0x32, + 0xce, 0x42, 0x8d, 0xe7, 0x4b, 0x27, 0xe5, 0xa5, 0x53, 0xea, 0x32, 0xb2, + 0x27, 0x9f, 0xe0, 0xb6, 0x49, 0x90, 0x89, 0x8e, 0xf6, 0xfb, 0xe6, 0x3b, + 0xa3, 0xe5, 0xfb, 0xfc, 0x6c, 0xea, 0xc7, 0x17, 0xe3, 0x4d, 0x7b, 0xba, + 0xf4, 0x65, 0x21, 0x7c, 0x44, 0xbe, 0xe3, 0xb3, 0xb8, 0xf9, 0x48, 0xc7, + 0x56, 0x6c, 0x7e, 0xa3, 0x62, 0x09, 0xa8, 0xe4, 0x2c, 0x75, 0x58, 0x5e, + 0x5a, 0xa0, 0xbe, 0x71, 0x02, 0x45, 0xa4, 0xe6, 0xa2, 0x4d, 0xbb, 0x8d, + 0x19, 0x6b, 0x53, 0x3c, 0xcf, 0x13, 0x78, 0x93, 0x9f, 0xc5, 0xcd, 0x27, + 0x44, 0x15, 0x0e, 0x74, 0xb9, 0xc7, 0xe1, 0x92, 0xe6, 0x00, 0xf3, 0x77, + 0x33, 0x5e, 0xd4, 0x81, 0x00, 0x7e, 0xcb, 0xb1, 0xfd, 0xc5, 0x1d, 0x89, + 0x38, 0x1e, 0x9f, 0x4e, 0x9d, 0xdc, 0xba, 0xa8, 0x5b, 0x89, 0x2c, 0xc0, + 0xc7, 0x7c, 0x20, 0x93, 0x21, 0x37, 0x3c, 0x54, 0x5f, 0x75, 0x16, 0x79, + 0xe5, 0xa5, 0xbf, 0x26, 0x51, 0xd0, 0x6c, 0xcb, 0x52, 0xdf, 0x0e, 0x50, + 0xd1, 0xa2, 0x62, 0xd3, 0x89, 0xaa, 0x23, 0x79, 0xdf, 0x36, 0x99, 0xfb, + 0x6c, 0xcd, 0x20, 0xdf, 0xfb, 0xa9, 0xe2, 0xca, 0xc6, 0xca, 0x56, 0xa6, + 0x96, 0xe5, 0x88, 0x95, 0x91, 0x3b, 0x9a, 0x95, 0xb3, 0x9a, 0x2f, 0x0f, + 0x33, 0x7e, 0xff, 0xb2, 0x37, 0xb1, 0xdb, 0x74, 0x50, 0x63, 0x55, 0x95, + 0x52, 0x6f, 0xb3, 0x04, 0x36, 0xb0, 0x6d, 0x20, 0xa5, 0x85, 0xa7, 0xac, + 0x37, 0x29, 0xcf, 0xf5, 0x91, 0x36, 0x0b, 0x97, 0x10, 0xd6, 0x67, 0xbd, + 0x42, 0x09, 0xc9, 0xe1, 0xb7, 0x8e, 0x71, 0x0a, 0xaa, 0x80, 0x99, 0xd4, + 0x93, 0x53, 0xad, 0xb4, 0x38, 0xd2, 0x70, 0xe1, 0x82, 0x92, 0xe0, 0xbd, + 0x5e, 0x0a, 0x3b, 0xf1, 0xd3, 0x25, 0x27, 0x0f, 0x09, 0xb6, 0x04, 0xc3, + 0x9d, 0xb8, 0x78, 0xb6, 0xaa, 0xcd, 0x5a, 0x6d, 0x41, 0x11, 0xc5, 0x0b, + 0x4b, 0x74, 0x50, 0x3a, 0xea, 0x80, 0x16, 0x04, 0x53, 0x41, 0x0f, 0x6c, + 0x49, 0x0c, 0x35, 0x51, 0xea, 0x41, 0x55, 0x8a, 0xb5, 0x71, 0xd2, 0x93, + 0x1a, 0x96, 0x93, 0x5f, 0xa2, 0x58, 0xb2, 0x69, 0xa9, 0xa7, 0x51, 0x38, + 0x2d, 0x85, 0x1c, 0xf6, 0x36, 0x4b, 0x76, 0x69, 0xd8, 0x8d, 0x24, 0xd1, + 0x64, 0x3c, 0x27, 0xb6, 0xb2, 0x9f, 0xe5, 0xd9, 0x71, 0x10, 0x9b, 0xb2, + 0xa5, 0x21, 0x76, 0xb6, 0x63, 0xf3, 0xe8, 0x64, 0x53, 0x77, 0xc4, 0x38, + 0x75, 0xda, 0x3a, 0x2c, 0x56, 0x10, 0xcd, 0xbb, 0x7d, 0xbf, 0xf2, 0x14, + 0x0f, 0xff, 0x03, 0x32, 0x88, 0xda, 0x8f, 0x52, 0x58, 0xfa, 0x96, 0xcd, + 0x64, 0x5d, 0xa1, 0x12, 0x95, 0x25, 0x8d, 0x55, 0x5c, 0x26, 0xb2, 0x79, + 0x12, 0xb9, 0x3f, 0xe3, 0xf7, 0x2f, 0x5c, 0x32, 0xd8, 0x6c, 0xd5, 0x75, + 0x41, 0x42, 0x6e, 0x73, 0x64, 0xa9, 0xfe, 0x10, 0x10, 0xd6, 0xdb, 0xef, + 0x20, 0x68, 0x7f, 0x9b, 0x25, 0x68, 0xdf, 0xd2, 0xf8, 0x8c, 0x28, 0x29, + 0x69, 0x4b, 0xeb, 0x48, 0xb3, 0x85, 0xcb, 0x08, 0x5b, 0x55, 0xa3, 0x11, + 0xca, 0x76, 0x8c, 0x8a, 0xd3, 0xdd, 0xcd, 0x49, 0x53, 0x4b, 0x19, 0x09, + 0xce, 0xee, 0xc8, 0xac, 0x09, 0x47, 0x68, 0x49, 0xfc, 0x9b, 0x12, 0x80, + 0x1b, 0x57, 0x79, 0xcd, 0x1f, 0x24, 0x6b, 0x0c, 0x7e, 0x16, 0xed, 0x8e, + 0xe0, 0x6f, 0x85, 0x94, 0xa8, 0xd4, 0x49, 0xf9, 0x2f, 0x46, 0x46, 0x23, + 0xa5, 0x29, 0x24, 0x31, 0x5c, 0xe8, 0x0b, 0xf0, 0x8e, 0xd4, 0x44, 0xdd, + 0x1d, 0x46, 0x92, 0xc9, 0x91, 0x04, 0xc7, 0xe7, 0x32, 0x90, 0xc7, 0x2c, + 0xb5, 0x3b, 0x52, 0xba, 0xc9, 0x61, 0xaa, 0x83, 0x4c, 0xe9, 0xca, 0xc1, + 0x70, 0xdb, 0x55, 0xe9, 0x88, 0xc4, 0xf3, 0xe4, 0xa4, 0xb6, 0xc4, 0x04, + 0xec, 0x17, 0x6c, 0x13, 0xfd, 0x03, 0x61, 0xe1, 0x62, 0xce, 0x8e, 0x32, + 0xce, 0x94, 0x1d, 0x5b, 0x24, 0xe5, 0x0d, 0x75, 0xa4, 0x1e, 0xe1, 0xf1, + 0x81, 0x52, 0xc8, 0x99, 0xda, 0x3f, 0x44, 0x57, 0x11, 0x47, 0x31, 0xad, + 0xae, 0x0e, 0x5f, 0x49, 0xe2, 0x8b, 0x34, 0x86, 0x56, 0x9a, 0x8a, 0x86, + 0xf0, 0xab, 0x4d, 0x25, 0x5e, 0x7a, 0x30, 0x6a, 0xf4, 0xae, 0x95, 0xf2, + 0xe3, 0x1b, 0x74, 0x88, 0x52, 0x48, 0x45, 0x21, 0xf8, 0xf6, 0xe5, 0x04, + 0x58, 0x36, 0x7e, 0x95, 0xb7, 0x19, 0x0e, 0x7e, 0xc2, 0xf8, 0xac, 0x14, + 0xee, 0x1f, 0x4b, 0x26, 0xa1, 0x4e, 0x5b, 0xd2, 0x52, 0x9a, 0x2f, 0xfd, + 0x6c, 0xd9, 0x5a, 0xb9, 0x71, 0xb1, 0x3b, 0xa6, 0x4a, 0xd7, 0x9f, 0x67, + 0xfb, 0x53, 0xfd, 0x6f, 0x64, 0x51, 0xe1, 0xb7, 0xc9, 0x5c, 0xee, 0x15, + 0xed, 0xd8, 0x59, 0xd2, 0xb9, 0x53, 0xd5, 0x55, 0x59, 0x97, 0x7a, 0xf2, + 0xde, 0x85, 0xef, 0xcd, 0x6c, 0x32, 0xf7, 0xca, 0xa4, 0x21, 0x4b, 0xdd, + 0x8f, 0x82, 0xa8, 0xcd, 0x39, 0xeb, 0x9e, 0x3f, 0xb8, 0xc7, 0xef, 0x5f, + 0xb8, 0x54, 0xb0, 0x1c, 0x8d, 0x2b, 0xd3, 0xf1, 0x73, 0x90, 0x33, 0x26, + 0x09, 0xcd, 0x38, 0x1d, 0x3f, 0x7d, 0xef, 0xc2, 0xa5, 0x81, 0xcd, 0xe4, + 0x5f, 0x99, 0x34, 0xe4, 0x48, 0xe3, 0xff, 0x31, 0x2c, 0x3e, 0xb6, 0xce, + 0xcc, 0x0a, 0x3d, 0x43, 0xb9, 0x0a, 0xcc, 0x8c, 0x85, 0xd7, 0x92, 0x11, + 0xd8, 0x63, 0x8d, 0x16, 0x2e, 0x23, 0x49, 0x52, 0x87, 0xb5, 0x38, 0x93, + 0xb3, 0xf0, 0x36, 0xfc, 0x18, 0x7c, 0x41, 0xb7, 0x2c, 0xbc, 0x7a, 0x65, + 0xc7, 0x47, 0x0e, 0x78, 0xf5, 0x0f, 0x98, 0x43, 0x76, 0xcb, 0x82, 0xac, + 0xbf, 0x97, 0xf2, 0xe6, 0xb7, 0x79, 0xaa, 0x7b, 0x3c, 0x99, 0x56, 0x23, + 0x0d, 0x99, 0x5e, 0xa9, 0xa3, 0x91, 0x45, 0x4c, 0xef, 0x15, 0x56, 0x5d, + 0x15, 0x9f, 0xc2, 0x6d, 0x26, 0xac, 0xb4, 0x0e, 0x2c, 0x88, 0x86, 0xcb, + 0x0e, 0x3b, 0xa1, 0xc4, 0xaa, 0x5f, 0xdc, 0xb6, 0xdc, 0x85, 0xef, 0x8e, + 0x2d, 0xd8, 0x56, 0xd7, 0x2b, 0x50, 0x5d, 0x58, 0x90, 0xf4, 0x2a, 0x29, + 0x7c, 0x6f, 0x73, 0x60, 0x9d, 0x45, 0xf0, 0xb1, 0x0b, 0x2a, 0xb0, 0xc9, + 0x7b, 0x3b, 0x8e, 0x0b, 0x50, 0x20, 0xd0, 0x54, 0x2d, 0xd2, 0x02, 0x22, + 0x89, 0xcd, 0xc8, 0xb5, 0x2e, 0x62, 0xbb, 0xcf, 0xc7, 0xcc, 0xb9, 0x7a, + 0x67, 0xc0, 0xad, 0x9e, 0xd1, 0x9b, 0xc0, 0x56, 0xc1, 0x1a, 0xa6, 0xcc, + 0x3d, 0x51, 0xb6, 0x52, 0x8c, 0x51, 0x2b, 0xac, 0x7d, 0x71, 0x9b, 0x85, + 0x32, 0xaa, 0xae, 0xb1, 0x35, 0x95, 0x6c, 0xae, 0x6b, 0x5d, 0x4f, 0x21, + 0xfa, 0xf5, 0x3d, 0x54, 0xc4, 0x9e, 0x32, 0xda, 0xcf, 0xf3, 0xa5, 0xa7, + 0xe2, 0x6b, 0x80, 0x0f, 0x2e, 0x0f, 0xfc, 0xfd, 0xa7, 0x34, 0x84, 0x0c, + 0xfd, 0x85, 0x4f, 0x4b, 0x33, 0xaf, 0x5a, 0xe6, 0x15, 0x65, 0x70, 0x8d, + 0x72, 0x65, 0xc9, 0x31, 0x29, 0xf7, 0xaf, 0xa6, 0xc2, 0x5e, 0x7f, 0xc9, + 0x91, 0x9a, 0x41, 0x2c, 0xf3, 0x85, 0x41, 0x8d, 0x4b, 0xaa, 0xa8, 0xcc, + 0xb9, 0x61, 0x8a, 0xde, 0x7c, 0x93, 0xb9, 0x68, 0x8d, 0xa4, 0x2a, 0x97, + 0x81, 0x1b, 0xdf, 0x10, 0x29, 0x0c, 0x10, 0x8a, 0x82, 0xba, 0x2f, 0xa9, + 0x14, 0x01, 0xc6, 0x69, 0x8a, 0x90, 0xa3, 0xd1, 0xad, 0x51, 0x62, 0x58, + 0xb5, 0x02, 0x70, 0x22, 0x9b, 0x94, 0xd1, 0x08, 0xb5, 0x4e, 0x15, 0x2b, + 0x4b, 0x7a, 0xc6, 0xf3, 0xcb, 0x89, 0x45, 0x2c, 0x22, 0xca, 0x83, 0x37, + 0xc6, 0xc6, 0x10, 0x60, 0xcc, 0x09, 0x42, 0x31, 0x8c, 0x50, 0x38, 0x0c, + 0x09, 0x41, 0x32, 0x26, 0x44, 0x1a, 0x04, 0x0b, 0x15, 0x22, 0xd3, 0x14, + 0x67, 0x2d, 0xce, 0x71, 0x7a, 0xaa, 0xb6, 0x68, 0x04, 0x02, 0x89, 0xf1, + 0x89, 0x11, 0x8a, 0xd1, 0xa2, 0x28, 0x5e, 0x08, 0x61, 0x86, 0x3b, 0xa9, + 0x44, 0x83, 0xa0, 0xea, 0xd9, 0x4e, 0x1b, 0x1d, 0xc2, 0x8d, 0x74, 0x2b, + 0x62, 0xb2, 0x54, 0xa2, 0xb5, 0xbe, 0x8c, 0xc5, 0xc9, 0x85, 0xb2, 0x7b, + 0xe7, 0x76, 0x7b, 0x63, 0x28, 0x68, 0x29, 0xaa, 0x4b, 0x27, 0xfd, 0x0b, + 0x10, 0x0a, 0x58, 0x06, 0x88, 0x65, 0xb8, 0x55, 0x48, 0xd2, 0xa8, 0x2e, + 0x9d, 0xad, 0x5c, 0x29, 0x50, 0xb7, 0x03, 0xf4, 0x91, 0x1b, 0x3f, 0xc9, + 0x46, 0x2a, 0x5b, 0xee, 0xaa, 0x5d, 0xd4, 0x80, 0xf6, 0xda, 0x94, 0x72, + 0xfa, 0x2a, 0xef, 0xcb, 0xd9, 0xe1, 0x1c, 0x99, 0xe8, 0xeb, 0xc0, 0xa4, + 0x8c, 0x9b, 0x37, 0x4b, 0xf8, 0xb6, 0x3e, 0xca, 0x94, 0xdb, 0x5c, 0x54, + 0x6f, 0xa2, 0x41, 0x19, 0x11, 0x9c, 0xdc, 0x3c, 0xf8, 0x65, 0xe2, 0x0b, + 0x04, 0x54, 0xc2, 0x0e, 0xd9, 0x3b, 0xde, 0xe7, 0x1a, 0xc0, 0xba, 0x77, + 0x6c, 0x12, 0xd4, 0x89, 0x35, 0xd4, 0x96, 0xb2, 0x09, 0xdf, 0x65, 0xc9, + 0x84, 0x2a, 0x04, 0x5b, 0x38, 0xad, 0x7f, 0x79, 0x57, 0x23, 0x69, 0xb0, + 0x09, 0xfb, 0x3b, 0x5d, 0x57, 0x7c, 0x06, 0x38, 0x96, 0xf6, 0x02, 0x9b, + 0x8f, 0x5a, 0xab, 0x59, 0x4a, 0xa6, 0xbd, 0xb4, 0x20, 0x8d, 0xe5, 0x4a, + 0xf9, 0xdd, 0x57, 0xb5, 0x25, 0x7b, 0x26, 0x7a, 0x6b, 0x09, 0xa4, 0x95, + 0xf6, 0xc8, 0xb5, 0x95, 0xbc, 0x9b, 0x58, 0x99, 0x09, 0x85, 0xe8, 0x50, + 0xcd, 0x48, 0x59, 0x25, 0x9c, 0x29, 0x39, 0x66, 0xd7, 0xfe, 0x46, 0x3a, + 0x1f, 0x37, 0xf3, 0x5d, 0x96, 0xfc, 0x2a, 0x7f, 0xb0, 0xb2, 0x7e, 0xfb, + 0x43, 0x70, 0x4e, 0x12, 0x66, 0x55, 0x04, 0xd0, 0x93, 0x0d, 0x35, 0xd6, + 0xfd, 0x41, 0x48, 0x55, 0xa1, 0x15, 0xd5, 0x99, 0xd8, 0x3a, 0x2d, 0xa1, + 0x75, 0xa2, 0x9c, 0x2e, 0x1d, 0xcb, 0x80, 0x5b, 0x5d, 0x10, 0xdc, 0x8a, + 0xd6, 0xb3, 0x41, 0xe1, 0x76, 0xd6, 0x11, 0x23, 0x06, 0x79, 0x30, 0x67, + 0x38, 0xf1, 0x2d, 0x75, 0x32, 0xbc, 0xdd, 0xd8, 0xa1, 0xa5, 0x95, 0x51, + 0x46, 0x53, 0x65, 0xda, 0x94, 0xa9, 0x76, 0x2a, 0x4c, 0x29, 0x95, 0x60, + 0x6a, 0x58, 0x73, 0x02, 0xba, 0x8c, 0xd4, 0x98, 0xbb, 0x2c, 0xa9, 0x31, + 0x14, 0x44, 0x4c, 0x2d, 0xce, 0x00, 0xec, 0xb7, 0x5b, 0x9a, 0x81, 0x1c, + 0x06, 0xa6, 0x6d, 0xaa, 0x53, 0x2b, 0xbd, 0x12, 0xa7, 0x43, 0x65, 0x35, + 0xaa, 0xbe, 0xe4, 0x8c, 0xb9, 0x44, 0xe9, 0x66, 0x2f, 0x3d, 0x5e, 0x01, + 0x95, 0xd2, 0xa1, 0x7c, 0x81, 0x41, 0x36, 0x3a, 0x0d, 0x0b, 0x7d, 0xf1, + 0x85, 0xfc, 0xc9, 0x53, 0xa6, 0xe6, 0x67, 0x76, 0x38, 0x2b, 0x7e, 0x3a, + 0xfd, 0x6d, 0xe6, 0xe9, 0xe2, 0xca, 0x26, 0xd2, 0xac, 0x2b, 0xdc, 0x75, + 0x97, 0x23, 0x97, 0x26, 0xc6, 0xae, 0x02, 0x6b, 0xc1, 0xa9, 0x11, 0xaf, + 0xf1, 0x56, 0x0b, 0x3f, 0x74, 0x8f, 0x54, 0x89, 0x5b, 0x91, 0x17, 0xf0, + 0x2e, 0x4b, 0x7a, 0x4d, 0x0a, 0x5c, 0xc9, 0xbe, 0x38, 0x7d, 0xef, 0x9f, + 0x2e, 0x4a, 0xce, 0xbf, 0x36, 0x0b, 0x38, 0xf3, 0x2c, 0xd1, 0xf9, 0xe0, + 0x32, 0x53, 0xde, 0x6b, 0x7a, 0x43, 0x88, 0x4c, 0xa2, 0xbc, 0x97, 0xd4, + 0x11, 0x79, 0xfc, 0x5c, 0xf3, 0xf1, 0xac, 0x54, 0x25, 0x53, 0x76, 0xaa, + 0x7f, 0xf5, 0xa9, 0x74, 0x1e, 0x43, 0xc1, 0xc9, 0x47, 0xba, 0x09, 0xf5, + 0xc8, 0x9f, 0x0b, 0x09, 0x0b, 0xb2, 0x9a, 0x20, 0x45, 0xbb, 0x6e, 0xc8, + 0xdf, 0x81, 0x7f, 0x15, 0xc5, 0x25, 0x32, 0x8d, 0x71, 0xb4, 0x08, 0x50, + 0x73, 0x57, 0x65, 0xe5, 0x2c, 0xfe, 0x45, 0x00, 0x76, 0xe1, 0x75, 0x5c, + 0xd4, 0xcc, 0x2c, 0x39, 0x16, 0x3a, 0xb1, 0x82, 0xf4, 0xbf, 0xbb, 0x54, + 0xca, 0x86, 0x3e, 0x31, 0x39, 0xfe, 0x78, 0x78, 0x3e, 0x28, 0xb7, 0xaf, + 0x14, 0xa1, 0xbf, 0xcb, 0x92, 0x6a, 0x01, 0x07, 0xe0, 0xb3, 0xca, 0x76, + 0xef, 0x07, 0xea, 0xfb, 0xeb, 0xd5, 0xfa, 0xfc, 0x50, 0x61, 0xd5, 0x2b, + 0x3e, 0x50, 0x7f, 0x90, 0xf0, 0x82, 0x22, 0x2d, 0xd1, 0x2d, 0x47, 0x79, + 0x0e, 0x6f, 0xf6, 0x8a, 0xd5, 0x52, 0xf9, 0xdc, 0xe0, 0x6d, 0xc3, 0xfd, + 0x08, 0xfe, 0xf3, 0xf3, 0xab, 0xd4, 0x2c, 0x81, 0x35, 0x19, 0x66, 0xc7, + 0x05, 0xee, 0x7a, 0xe1, 0xc1, 0x3e, 0xd1, 0x50, 0x9c, 0x1e, 0xb7, 0x51, + 0xb2, 0x54, 0x8e, 0x77, 0x2c, 0x70, 0xf9, 0xb4, 0xdc, 0xf9, 0x51, 0x91, + 0x0d, 0x7b, 0x81, 0x28, 0xb7, 0x58, 0x7b, 0x56, 0x54, 0xfb, 0xf5, 0x27, + 0x67, 0x13, 0xd5, 0x2c, 0xc5, 0xe6, 0xa7, 0x52, 0x56, 0x8d, 0x73, 0xa7, + 0xf9, 0x3e, 0x50, 0x9e, 0xf3, 0x60, 0xb1, 0xa8, 0x8c, 0x10, 0x3c, 0xd8, + 0xba, 0x85, 0x37, 0x22, 0x26, 0x52, 0x82, 0xaa, 0xca, 0x6f, 0xa4, 0x2b, + 0x45, 0x9c, 0xdc, 0x7d, 0x07, 0x65, 0xe5, 0xef, 0x72, 0x55, 0x38, 0x0b, + 0x19, 0x11, 0x69, 0x02, 0xc8, 0xb4, 0xe9, 0x79, 0xa4, 0xd9, 0xc2, 0x65, + 0x64, 0xa4, 0xc2, 0xd9, 0x6a, 0x64, 0x24, 0x53, 0x1d, 0x33, 0x78, 0x04, + 0xb9, 0xa7, 0xcc, 0x97, 0xe1, 0x08, 0x09, 0x87, 0x70, 0x22, 0x4a, 0xe5, + 0x6a, 0x5e, 0x3e, 0x96, 0x1f, 0x52, 0xbd, 0x63, 0x51, 0x6b, 0x2b, 0x73, + 0x18, 0xe4, 0xc0, 0xaa, 0xfd, 0x10, 0xc9, 0x36, 0x77, 0x89, 0x9a, 0x50, + 0x2b, 0xc4, 0x9f, 0xdd, 0x65, 0x89, 0x12, 0xf2, 0x8a, 0xf5, 0x94, 0xf2, + 0xf1, 0x5e, 0x81, 0xd6, 0x45, 0xcd, 0xfa, 0x26, 0x5f, 0xc9, 0x89, 0x74, + 0xc6, 0xcf, 0xa7, 0x7f, 0x35, 0x2a, 0xbb, 0x3f, 0xb3, 0x99, 0xbc, 0x75, + 0x22, 0x28, 0xdd, 0x1f, 0x7b, 0x19, 0x32, 0xf2, 0x73, 0x8e, 0x4c, 0xde, + 0x3a, 0xb5, 0x1b, 0xa4, 0xb6, 0x8e, 0xf4, 0xdd, 0xcb, 0xde, 0x3c, 0xee, + 0xc7, 0xe3, 0xc2, 0x6b, 0x39, 0x4d, 0xee, 0x73, 0x44, 0x84, 0x4f, 0x49, + 0xd6, 0x13, 0x45, 0x43, 0xdc, 0xbb, 0xbc, 0x95, 0xbc, 0x82, 0x84, 0xde, + 0xfb, 0x11, 0x4e, 0xb9, 0xd5, 0x48, 0x45, 0x2e, 0x2e, 0xb9, 0xc2, 0x38, + 0x01, 0x46, 0x07, 0x16, 0x1d, 0x92, 0xcc, 0xd8, 0x3b, 0xda, 0x6a, 0xe1, + 0x12, 0xb2, 0x76, 0xfe, 0xb7, 0xfb, 0x57, 0xe5, 0x7f, 0xe3, 0xc5, 0x62, + 0xec, 0xee, 0x85, 0x8b, 0x03, 0x1b, 0xa3, 0x2a, 0x5a, 0x08, 0x55, 0x4b, + 0x17, 0x3f, 0x0d, 0x66, 0x74, 0x6e, 0xcf, 0xcb, 0x65, 0xc8, 0x48, 0x8e, + 0x70, 0x55, 0x20, 0x67, 0x47, 0x50, 0x9a, 0x81, 0xf8, 0x32, 0x61, 0x66, + 0xbe, 0x83, 0x60, 0xdb, 0x02, 0x56, 0x1c, 0xd7, 0xdc, 0xb6, 0x4e, 0x4c, + 0x66, 0x83, 0x79, 0x35, 0x5a, 0xd3, 0x96, 0x09, 0x9e, 0xf3, 0xad, 0xfa, + 0xef, 0x7a, 0x4e, 0xc3, 0x4e, 0x14, 0x20, 0x60, 0x2c, 0x8d, 0xdc, 0xfa, + 0x54, 0x95, 0x1c, 0x4c, 0x72, 0x28, 0x68, 0x51, 0xa6, 0xb4, 0x8f, 0x14, + 0xc5, 0xe0, 0x58, 0x93, 0x15, 0x28, 0x2c, 0x69, 0x5e, 0x39, 0x31, 0xc5, + 0x06, 0x1e, 0x05, 0xa2, 0xe5, 0x95, 0x90, 0x6c, 0xec, 0x72, 0x08, 0x12, + 0xc9, 0x4b, 0x67, 0x00, 0x03, 0xb3, 0xa7, 0x72, 0xcc, 0x4d, 0x6c, 0xbc, + 0x70, 0xa9, 0x61, 0xc3, 0x96, 0x51, 0xcd, 0xf5, 0xbf, 0xb0, 0x75, 0xa1, + 0x6c, 0x2e, 0xdd, 0x64, 0xff, 0xda, 0x02, 0xf9, 0xbd, 0xef, 0xb3, 0x45, + 0x2d, 0x53, 0x39, 0x53, 0x73, 0xf0, 0x7b, 0xc7, 0x6b, 0x35, 0xa1, 0x41, + 0xc1, 0xdb, 0xbd, 0x0f, 0xae, 0xad, 0x1a, 0x7d, 0x81, 0xfd, 0x8b, 0x18, + 0xcf, 0xd6, 0x2a, 0x8d, 0x49, 0xa6, 0xb5, 0xb5, 0xa8, 0xd4, 0x59, 0x68, + 0xd6, 0xd2, 0x44, 0x84, 0xa7, 0xa8, 0xd4, 0xcb, 0xe7, 0xc1, 0xb8, 0x7f, + 0x99, 0x32, 0x83, 0x5e, 0xcd, 0x62, 0x72, 0xee, 0x70, 0x71, 0x26, 0x21, + 0xc8, 0x52, 0x59, 0xb0, 0x48, 0x85, 0x7e, 0x8a, 0x64, 0xe8, 0x27, 0x34, + 0x01, 0x19, 0x24, 0x12, 0xea, 0x38, 0x06, 0x8c, 0x35, 0x10, 0xf0, 0xdd, + 0xb3, 0xd1, 0xc1, 0x75, 0x45, 0x7f, 0xee, 0x73, 0x44, 0x07, 0x7f, 0x08, + 0x72, 0xad, 0xfb, 0x3c, 0x7c, 0x28, 0x42, 0xe4, 0x85, 0x59, 0xdd, 0xe7, + 0x21, 0x42, 0x69, 0xa4, 0x79, 0xb2, 0xae, 0x12, 0x6a, 0xfe, 0x11, 0x5a, + 0xfe, 0xa0, 0xea, 0xdf, 0x4a, 0x55, 0x0f, 0x96, 0x69, 0x60, 0x65, 0xbb, + 0x4a, 0x0e, 0x86, 0x81, 0x1f, 0x63, 0x57, 0x49, 0x24, 0x6d, 0xaf, 0xcd, + 0xd7, 0x92, 0x25, 0x5b, 0x5b, 0x56, 0x63, 0x95, 0xae, 0x87, 0xf7, 0xb7, + 0x95, 0x87, 0x12, 0xbe, 0x96, 0x15, 0xd4, 0x05, 0xfd, 0x25, 0x11, 0x35, + 0x94, 0xab, 0x4c, 0x27, 0xfd, 0x25, 0x4b, 0xf0, 0xf0, 0xc9, 0xf9, 0xfc, + 0xc4, 0x6b, 0x23, 0x0b, 0x30, 0xfa, 0x13, 0x72, 0x7f, 0x13, 0xdd, 0xbb, + 0x6c, 0x8f, 0xb2, 0x58, 0xc1, 0x59, 0xf3, 0x25, 0x1d, 0x5b, 0x5c, 0x15, + 0x21, 0xe8, 0x97, 0x8c, 0xb5, 0xaa, 0x7e, 0x34, 0x42, 0xd0, 0x2f, 0x2c, + 0x2e, 0x1b, 0xb4, 0x10, 0x33, 0x67, 0x13, 0x3c, 0x5d, 0xb9, 0x3d, 0x8b, + 0xde, 0x2a, 0x01, 0xc7, 0x94, 0x82, 0x63, 0x4a, 0xc9, 0x8d, 0x6b, 0xa4, + 0x6e, 0x6b, 0x0e, 0xbb, 0xaa, 0xd1, 0x55, 0xba, 0x00, 0x71, 0x55, 0xe9, + 0x83, 0x92, 0xbb, 0x4d, 0x7f, 0xba, 0x51, 0xca, 0xf2, 0xc0, 0xb8, 0x9f, + 0xcc, 0x09, 0x38, 0xf4, 0xd9, 0x51, 0x9d, 0xe1, 0xbd, 0x35, 0xd9, 0x5f, + 0x14, 0xf2, 0xd5, 0x49, 0x81, 0x6c, 0x03, 0x09, 0x06, 0x1c, 0x01, 0x09, + 0x3d, 0x58, 0xa9, 0x05, 0xe9, 0xcf, 0xf4, 0x84, 0x31, 0xf7, 0x30, 0xbf, + 0x4d, 0x6a, 0x82, 0xc3, 0x27, 0x19, 0x64, 0x98, 0xf5, 0xdf, 0xb4, 0x5a, + 0x94, 0x98, 0x22, 0xc3, 0x47, 0x4b, 0x66, 0xbf, 0xe8, 0x52, 0x0c, 0x44, + 0x31, 0x8b, 0x67, 0xa7, 0xab, 0x5e, 0x73, 0x5c, 0x22, 0x13, 0x75, 0xb0, + 0x45, 0xc7, 0x90, 0x86, 0x42, 0x31, 0xa3, 0xbd, 0x2d, 0x7e, 0x1f, 0xe4, + 0x19, 0x2a, 0x0b, 0xb1, 0x5d, 0xdf, 0x71, 0x99, 0x03, 0xf2, 0x1b, 0x4a, + 0x79, 0xba, 0xe0, 0xee, 0x13, 0xa7, 0x66, 0x0f, 0xec, 0x15, 0x50, 0x6f, + 0xff, 0xb9, 0xd6, 0x24, 0x82, 0x2f, 0xac, 0x41, 0xbf, 0x2e, 0x00, 0xd7, + 0x97, 0x2c, 0x94, 0x81, 0xa9, 0xa3, 0x8f, 0x75, 0xfa, 0x24, 0xef, 0x5d, + 0xb6, 0x34, 0x3c, 0x1c, 0xe1, 0xff, 0x99, 0xa7, 0x72, 0x31, 0x00, 0xd2, + 0xb5, 0x2a, 0xbd, 0x69, 0xc2, 0x62, 0xa4, 0xed, 0x00, 0x65, 0x7d, 0x3e, + 0x97, 0xbf, 0xf0, 0x21, 0x0b, 0x25, 0x10, 0x4e, 0xa6, 0xc8, 0x9f, 0x0d, + 0x4a, 0x28, 0x8e, 0x4d, 0x60, 0x2a, 0x43, 0x9b, 0x08, 0xc4, 0x36, 0x5e, + 0x6b, 0x22, 0x75, 0x49, 0x8b, 0x22, 0x54, 0x27, 0x2e, 0x02, 0x31, 0x6a, + 0xf8, 0xa3, 0xae, 0x9d, 0x44, 0x26, 0x28, 0x72, 0x36, 0xeb, 0xb6, 0xaa, + 0x13, 0xb8, 0xa8, 0x04, 0x14, 0x28, 0x85, 0x7f, 0xe9, 0x02, 0xc1, 0x8c, + 0xaa, 0x31, 0x17, 0x44, 0x51, 0x45, 0x09, 0x9b, 0x2c, 0xb9, 0x50, 0x2f, + 0xdc, 0x05, 0x92, 0x52, 0x2e, 0xc9, 0xbd, 0x77, 0x75, 0x90, 0x5f, 0x49, + 0x73, 0x47, 0xfe, 0xb2, 0x28, 0xa8, 0x70, 0x32, 0xf2, 0xc9, 0x59, 0xaa, + 0xb5, 0x3e, 0x8d, 0xeb, 0x53, 0x59, 0x78, 0x20, 0xbc, 0x57, 0x09, 0x77, + 0x43, 0xa4, 0x7f, 0x5d, 0xcf, 0x86, 0xe6, 0x7f, 0xc9, 0xcb, 0x8b, 0xe9, + 0x29, 0x59, 0x2f, 0x2d, 0x25, 0x60, 0xc8, 0xf1, 0x05, 0x21, 0x4a, 0xa3, + 0xcc, 0x96, 0x60, 0x64, 0x8d, 0xae, 0xb7, 0x14, 0x4c, 0x77, 0xb6, 0x81, + 0x54, 0xb9, 0xb2, 0xc1, 0x7a, 0x83, 0x9c, 0x92, 0x28, 0x83, 0xa4, 0x45, + 0xbd, 0xb5, 0xd2, 0x55, 0xca, 0x44, 0xa2, 0x3e, 0xb1, 0x15, 0x8e, 0x68, + 0x53, 0x02, 0xd9, 0x86, 0x23, 0xd6, 0x3f, 0x16, 0xdd, 0xba, 0xfc, 0x1c, + 0xab, 0x07, 0x96, 0xe7, 0x6a, 0xb7, 0x61, 0xae, 0x28, 0xab, 0xe6, 0x21, + 0x07, 0x6d, 0xd5, 0x33, 0xf9, 0x2a, 0x63, 0x8e, 0x39, 0x10, 0x68, 0x92, + 0xe4, 0xcb, 0xef, 0x6f, 0x44, 0xc8, 0x13, 0x42, 0xb6, 0x48, 0xfd, 0x6d, + 0x02, 0x57, 0xaa, 0x08, 0xa2, 0x28, 0x24, 0x55, 0x51, 0xac, 0x88, 0x5c, + 0x21, 0xec, 0x8e, 0xb6, 0x73, 0x8c, 0xad, 0x55, 0xe6, 0xde, 0xae, 0x3f, + 0x06, 0xe3, 0x7f, 0xc3, 0x2b, 0x0a, 0xdb, 0xf7, 0x94, 0xd7, 0xf7, 0x90, + 0x64, 0x31, 0xeb, 0x8e, 0xbd, 0x99, 0xd4, 0xb6, 0xa7, 0x03, 0xd2, 0x40, + 0x4d, 0x22, 0x82, 0xc2, 0x52, 0xca, 0x74, 0x37, 0x55, 0x9f, 0x35, 0xa5, + 0x3f, 0xa1, 0x28, 0x3b, 0x59, 0xfc, 0xa9, 0x50, 0xe2, 0x0a, 0x96, 0x22, + 0x62, 0xe0, 0xef, 0x3a, 0xe7, 0xb9, 0x1d, 0x63, 0xe4, 0x17, 0x04, 0xba, + 0xca, 0xe9, 0x16, 0x6d, 0xbd, 0xc7, 0xb5, 0x11, 0x28, 0x0c, 0x84, 0x54, + 0x1b, 0xe2, 0x74, 0x06, 0xa3, 0xf3, 0x8e, 0xe8, 0x60, 0xc7, 0xa8, 0x41, + 0x95, 0x50, 0x37, 0x2e, 0xd0, 0xf4, 0x75, 0xaa, 0x4c, 0xe4, 0xe7, 0x40, + 0xb5, 0x58, 0xf0, 0xd5, 0xe1, 0x38, 0xd5, 0x01, 0xd7, 0x5d, 0xd0, 0xf6, + 0xa7, 0x41, 0xd7, 0x17, 0xaa, 0xcb, 0x96, 0x68, 0x81, 0x2a, 0x0a, 0x84, + 0xc5, 0x24, 0x3e, 0xbf, 0xba, 0xa5, 0x00, 0x8c, 0xe0, 0x39, 0x76, 0x40, + 0x79, 0xd1, 0xb9, 0xe3, 0x0c, 0xf4, 0xb8, 0x84, 0x91, 0xeb, 0x7f, 0xde, + 0x0c, 0x64, 0x1e, 0x53, 0x7f, 0xcc, 0xfe, 0x8f, 0xe0, 0xcc, 0x2c, 0x29, + 0x87, 0xde, 0xc8, 0xfd, 0x71, 0xe2, 0x62, 0x0c, 0x1b, 0x96, 0x12, 0x31, + 0xb5, 0x03, 0xf1, 0x0b, 0x2f, 0x58, 0x82, 0x55, 0xeb, 0x55, 0x79, 0xd1, + 0x27, 0xb7, 0x19, 0xbc, 0x3c, 0x39, 0x32, 0x15, 0xea, 0xda, 0xab, 0x87, + 0x4f, 0x2f, 0xfb, 0x11, 0x59, 0xa9, 0x6d, 0x2b, 0x7c, 0xd8, 0x38, 0x88, + 0x20, 0x29, 0x8a, 0x68, 0x11, 0xc0, 0x9b, 0x88, 0x5b, 0x74, 0x6a, 0x96, + 0x7f, 0x85, 0x4a, 0x90, 0xf1, 0xd5, 0xd1, 0xb8, 0x61, 0x04, 0x55, 0xbd, + 0x9a, 0x7f, 0x98, 0xa6, 0xc6, 0x48, 0x5c, 0xff, 0x72, 0x2b, 0x71, 0xe3, + 0x29, 0x0c, 0xab, 0x52, 0x2a, 0x73, 0xa4, 0x31, 0x8c, 0x16, 0xab, 0x3a, + 0xa1, 0xd0, 0x8c, 0xfa, 0xc3, 0x8d, 0x75, 0xe5, 0xb7, 0x07, 0xbd, 0x7c, + 0x75, 0x80, 0x25, 0x74, 0xfb, 0x5e, 0x0a, 0x5f, 0x3d, 0x64, 0x61, 0x77, + 0x23, 0xe0, 0xf8, 0xf3, 0xf0, 0x5e, 0x6a, 0xfb, 0x1d, 0x95, 0xbf, 0x7a, + 0xf8, 0x69, 0xfd, 0x3e, 0x62, 0xff, 0x1b, 0xb2, 0x48, 0x4e, 0x9a, 0xe5, + 0x8a, 0x4f, 0xa6, 0x1a, 0xbb, 0x7f, 0xe1, 0x52, 0x91, 0xce, 0xa4, 0x7a, + 0x7d, 0x8b, 0xe3, 0xe9, 0x72, 0x92, 0x2d, 0xab, 0xaa, 0xa5, 0xd8, 0x4e, + 0x6c, 0x0a, 0xec, 0x2b, 0x34, 0x25, 0xa2, 0x1e, 0xfd, 0x6e, 0x6d, 0x2c, + 0x1d, 0x24, 0xeb, 0x18, 0x07, 0x2e, 0xb9, 0x98, 0x08, 0xb3, 0x52, 0x79, + 0xe3, 0xa9, 0x23, 0x0b, 0xbb, 0xc2, 0x22, 0x57, 0x0f, 0x39, 0x12, 0xad, + 0x88, 0x30, 0x14, 0xaa, 0xcc, 0x33, 0x20, 0x65, 0xb1, 0x03, 0x67, 0xf9, + 0x62, 0x52, 0xb3, 0x38, 0x48, 0xce, 0x12, 0x9d, 0x0f, 0x2e, 0x0f, 0xc8, + 0x6e, 0x4f, 0x69, 0x08, 0x09, 0x4a, 0xe6, 0x4d, 0xad, 0xe8, 0x1c, 0xcb, + 0x92, 0x3a, 0x25, 0x1a, 0x98, 0xe1, 0xac, 0xb1, 0x9f, 0x38, 0xc7, 0xc6, + 0xee, 0x5f, 0xf8, 0xbe, 0x72, 0x97, 0x08, 0x1b, 0xcd, 0x08, 0xbf, 0x39, + 0x13, 0x46, 0x98, 0xc0, 0xa7, 0xea, 0xb7, 0xe9, 0x4d, 0xea, 0x5c, 0x93, + 0x85, 0x37, 0x7b, 0x7b, 0xbc, 0xc8, 0xb1, 0xdb, 0xbe, 0xab, 0x84, 0x42, + 0x6a, 0x88, 0xbe, 0xd8, 0x08, 0x38, 0xe2, 0xfb, 0x93, 0x03, 0x0b, 0x93, + 0x77, 0xa9, 0xdd, 0xe5, 0x90, 0xaa, 0x64, 0xa5, 0xe9, 0x83, 0xb5, 0x4c, + 0x9e, 0x75, 0x8d, 0xdf, 0xe9, 0x69, 0x0d, 0xa3, 0x03, 0xec, 0x12, 0xbf, + 0x7e, 0xe7, 0xa0, 0xa2, 0xea, 0x4f, 0x25, 0x85, 0x9c, 0xda, 0x24, 0x2e, + 0x5a, 0x21, 0x70, 0x59, 0x8f, 0xac, 0x51, 0x3f, 0xc1, 0x2f, 0xac, 0xae, + 0xd7, 0xd7, 0x47, 0x56, 0x75, 0x40, 0x2f, 0x3b, 0x7c, 0x46, 0x62, 0x37, + 0x37, 0x36, 0x7c, 0x7a, 0x58, 0xa6, 0xa3, 0x1f, 0x3e, 0x95, 0xf4, 0x5c, + 0x93, 0x13, 0xd0, 0x09, 0x4f, 0x15, 0x0f, 0x86, 0x34, 0x65, 0xb5, 0xb6, + 0xf8, 0x67, 0x0e, 0x2c, 0x63, 0x2c, 0xd9, 0xc0, 0x03, 0xa4, 0xfd, 0x97, + 0xdc, 0x46, 0x47, 0xc5, 0x27, 0x76, 0x95, 0xca, 0x38, 0x97, 0xce, 0xf2, + 0xf3, 0x45, 0x1f, 0x46, 0x78, 0x43, 0x57, 0xe5, 0x5b, 0xca, 0xc3, 0x1d, + 0x6a, 0xb8, 0x63, 0xcd, 0x1c, 0xd7, 0x9e, 0xd2, 0x0b, 0xba, 0x12, 0x4f, + 0xd2, 0x48, 0xca, 0xe0, 0x6a, 0x36, 0x92, 0x57, 0x2d, 0x94, 0xfe, 0x5d, + 0x21, 0xc3, 0xf8, 0xf2, 0xd5, 0x7a, 0x8d, 0xc6, 0x57, 0x8e, 0xf2, 0xd5, + 0xc9, 0x54, 0x2f, 0xf6, 0x25, 0xd9, 0x6f, 0x89, 0x52, 0xd4, 0x7a, 0x2c, + 0x55, 0xec, 0xb9, 0xe6, 0x16, 0x0d, 0x30, 0xec, 0x7c, 0x70, 0x99, 0xa9, + 0x2d, 0x32, 0xbd, 0x21, 0x44, 0x86, 0xad, 0x28, 0xbc, 0x32, 0x9c, 0x42, + 0x8e, 0xda, 0xc1, 0xb5, 0xe0, 0x2c, 0x74, 0xc1, 0xe3, 0x14, 0xd2, 0xf7, + 0x2e, 0x7c, 0x03, 0x61, 0x73, 0x45, 0x57, 0x76, 0x9c, 0xe4, 0x29, 0xeb, + 0xfb, 0x23, 0x39, 0x91, 0x59, 0x56, 0xea, 0x95, 0xed, 0x11, 0x39, 0xe8, + 0xa8, 0x7f, 0x08, 0x2c, 0xd3, 0x23, 0x8b, 0xa6, 0x5c, 0x97, 0x34, 0x3c, + 0x66, 0x81, 0x51, 0x8e, 0x45, 0xbc, 0x47, 0xeb, 0xdb, 0x8d, 0x34, 0x59, + 0xb8, 0x6c, 0xb0, 0xa8, 0xc7, 0x15, 0x91, 0x5e, 0x3d, 0xe6, 0x80, 0x3c, + 0xa6, 0x7d, 0x6c, 0x6c, 0xfe, 0xdb, 0x5a, 0x29, 0xaf, 0x1e, 0x59, 0x4c, + 0xd6, 0xfa, 0x5c, 0x18, 0x8f, 0x59, 0xca, 0x1c, 0x86, 0x7a, 0xe7, 0x55, + 0xc0, 0x43, 0xf3, 0x44, 0xd2, 0x62, 0x58, 0x88, 0x97, 0xed, 0xa7, 0xf0, + 0x5b, 0x88, 0xd7, 0x37, 0x8e, 0x76, 0xb6, 0x78, 0x01, 0x62, 0x21, 0x56, + 0xb3, 0x08, 0xd0, 0x41, 0xde, 0x4e, 0x53, 0xa8, 0x50, 0x3c, 0x0d, 0x49, + 0x38, 0x70, 0x1e, 0x82, 0xc9, 0x9b, 0x12, 0x70, 0xb4, 0xdd, 0x6e, 0x1c, + 0x8a, 0x23, 0xe3, 0x6a, 0xb5, 0xa1, 0x20, 0x2e, 0x28, 0xc7, 0xa8, 0x88, + 0x3c, 0xdc, 0x8b, 0x8d, 0xc0, 0x1d, 0x15, 0x5b, 0x38, 0x59, 0x58, 0x7b, + 0x18, 0xbf, 0x63, 0xf3, 0x6f, 0x84, 0x0a, 0x10, 0x51, 0xe9, 0x67, 0x50, + 0xd5, 0x71, 0xb8, 0xa2, 0x76, 0xc6, 0xb2, 0x48, 0x14, 0x53, 0x0c, 0xfb, + 0x1c, 0x08, 0x6c, 0x16, 0x5a, 0x5a, 0xa0, 0xf4, 0x6d, 0x8d, 0x25, 0xe0, + 0x39, 0x1a, 0x6b, 0x9e, 0x31, 0x65, 0xc7, 0xdd, 0x16, 0xff, 0xa9, 0xa8, + 0x7c, 0xef, 0x85, 0x32, 0xa1, 0x80, 0x2f, 0x21, 0x4b, 0x51, 0xbe, 0x8e, + 0x32, 0xa2, 0x08, 0x4f, 0x8b, 0xb0, 0xb8, 0x69, 0x0a, 0x1d, 0xf2, 0x57, + 0x8a, 0x90, 0x36, 0x55, 0x86, 0x12, 0x77, 0x08, 0xa5, 0x53, 0xee, 0x50, + 0x48, 0x98, 0x42, 0x26, 0x57, 0x6f, 0x3d, 0x15, 0xa5, 0xf5, 0xfb, 0xbe, + 0x63, 0xd9, 0x71, 0xe0, 0x53, 0x0d, 0x68, 0x4e, 0x7d, 0x5f, 0xda, 0x0f, + 0x5a, 0xaa, 0x8d, 0xd3, 0x65, 0x19, 0xd6, 0x9d, 0x2a, 0xe6, 0xa1, 0xe4, + 0x14, 0x75, 0x69, 0xfc, 0xbc, 0x2a, 0x1a, 0x53, 0xd8, 0x32, 0xa6, 0x2a, + 0x18, 0x5b, 0x85, 0xbc, 0x19, 0xa9, 0x29, 0x5e, 0x5f, 0xa3, 0x47, 0x43, + 0x23, 0xd9, 0xf6, 0xb7, 0xd5, 0x54, 0xa7, 0x5b, 0x37, 0xea, 0xc2, 0xee, + 0xa5, 0x39, 0x14, 0xd2, 0xb4, 0x49, 0x37, 0x54, 0x45, 0x12, 0x2d, 0x35, + 0x61, 0x24, 0x51, 0x36, 0x52, 0xd4, 0xfe, 0x16, 0x19, 0xca, 0xa1, 0x05, + 0xd7, 0xf5, 0xe8, 0xc2, 0xb2, 0xb2, 0xac, 0xb0, 0x92, 0xb4, 0x8e, 0x71, + 0x15, 0xf1, 0x2b, 0xc3, 0x1a, 0xc6, 0x25, 0xb4, 0xc3, 0x35, 0x0c, 0xa8, + 0x03, 0xac, 0x62, 0xf8, 0x39, 0xa6, 0x4c, 0xaf, 0x1a, 0xf2, 0x34, 0xa2, + 0x84, 0x06, 0x2c, 0x74, 0x58, 0xab, 0x2a, 0x2c, 0x95, 0x2e, 0x7b, 0x8b, + 0x65, 0xec, 0xf4, 0xa5, 0x32, 0x71, 0xa9, 0x2c, 0xed, 0x5a, 0x05, 0xc5, + 0x43, 0xc2, 0x52, 0x51, 0x43, 0x4d, 0x6b, 0x77, 0xb8, 0x54, 0x3c, 0x54, + 0x4b, 0x1f, 0x79, 0xe9, 0x84, 0x6e, 0x12, 0xac, 0xa6, 0x7a, 0x50, 0x67, + 0xe5, 0xa9, 0x1b, 0xd7, 0x77, 0x80, 0xc5, 0x7a, 0xcc, 0x82, 0xc5, 0x7a, + 0x5a, 0x6a, 0xf7, 0xb4, 0x66, 0x0b, 0x3f, 0xdc, 0xc6, 0xd8, 0x8a, 0xd7, + 0x22, 0x23, 0x79, 0xa8, 0x88, 0xd3, 0xcc, 0x7e, 0xe9, 0x03, 0x06, 0xe7, + 0x0b, 0xe5, 0x75, 0x48, 0x6c, 0x3a, 0xd8, 0x53, 0xc0, 0x44, 0x51, 0x24, + 0x2a, 0x74, 0xac, 0x40, 0x5c, 0x58, 0x58, 0x4c, 0xb1, 0x22, 0xcb, 0x2a, + 0x07, 0x26, 0x26, 0x6c, 0x0a, 0xc3, 0x27, 0x5c, 0xb0, 0x88, 0x98, 0xd1, + 0xbb, 0x17, 0x2e, 0x0e, 0x2c, 0x1e, 0x66, 0x65, 0xbb, 0x47, 0x16, 0x3c, + 0x4b, 0x4d, 0x86, 0x10, 0xa7, 0x46, 0xf1, 0xe6, 0xf6, 0xf8, 0xfd, 0x0b, + 0x97, 0x0a, 0x16, 0x5b, 0xb2, 0x32, 0xd7, 0x5c, 0x0e, 0x58, 0x49, 0xf4, + 0xb3, 0x85, 0x04, 0xf7, 0x27, 0x38, 0xe8, 0x8e, 0x36, 0x5c, 0xb8, 0x9c, + 0xb0, 0xe0, 0x92, 0x36, 0x75, 0x6b, 0x86, 0x6c, 0x39, 0x3a, 0x85, 0xbd, + 0xa1, 0x6c, 0x2a, 0x57, 0xb1, 0x95, 0xb2, 0xab, 0x43, 0x68, 0x94, 0x9a, + 0x4b, 0x78, 0xb2, 0xa0, 0x4d, 0x42, 0x75, 0x1e, 0x50, 0x9e, 0x99, 0xe7, + 0xe2, 0xc2, 0x63, 0xb1, 0xec, 0x0a, 0xa0, 0x70, 0x09, 0x67, 0x02, 0x19, + 0x5e, 0xaa, 0xbc, 0x74, 0x30, 0xe1, 0xac, 0xb3, 0x66, 0x43, 0x25, 0xb3, + 0x51, 0x02, 0xd4, 0x95, 0x22, 0xd8, 0x5e, 0x30, 0x96, 0xbc, 0x46, 0x53, + 0x94, 0x9d, 0x4f, 0x02, 0xb3, 0xb1, 0xae, 0x51, 0x64, 0x65, 0xd5, 0x21, + 0x53, 0x95, 0x5c, 0x14, 0x01, 0x88, 0xe7, 0xac, 0x17, 0x56, 0xd3, 0x16, + 0x8b, 0xf7, 0xb6, 0xae, 0xb4, 0x55, 0xa8, 0xc4, 0x5d, 0x22, 0xe5, 0x85, + 0x3a, 0xf5, 0x16, 0x15, 0xac, 0x35, 0xb9, 0x81, 0x15, 0xa6, 0xb7, 0x3a, + 0x00, 0xd1, 0x23, 0xc9, 0x9b, 0x2a, 0x5c, 0x55, 0x6f, 0x82, 0x55, 0x58, + 0x84, 0x72, 0x67, 0xa5, 0xbf, 0x53, 0x19, 0x45, 0xdd, 0x14, 0xd6, 0xf9, + 0x3b, 0xac, 0xf6, 0x3d, 0x15, 0xd2, 0xd9, 0x52, 0xbb, 0x52, 0x97, 0xae, + 0x32, 0x22, 0xa4, 0x6a, 0x35, 0xb0, 0xf2, 0x6c, 0xb1, 0x09, 0x3f, 0x05, + 0xed, 0xa5, 0x01, 0x27, 0x00, 0xc8, 0x00, 0x74, 0xb9, 0x95, 0xa1, 0xdf, + 0x40, 0x12, 0x00, 0xdb, 0x0c, 0x1c, 0x2a, 0xaa, 0xa6, 0x59, 0x69, 0xf0, + 0x4f, 0xf8, 0xdf, 0x23, 0xc0, 0x4d, 0x21, 0xc3, 0x4c, 0x85, 0x36, 0x4e, + 0xd6, 0x85, 0x23, 0x6b, 0x34, 0x4e, 0xb2, 0xf4, 0xea, 0x5d, 0x85, 0x57, + 0x92, 0x16, 0xc3, 0x6e, 0x05, 0x2a, 0x02, 0x87, 0xb5, 0x91, 0xca, 0xd2, + 0x7f, 0x85, 0x7f, 0x67, 0x6b, 0xb0, 0xab, 0x90, 0x19, 0x69, 0xb1, 0x4a, + 0x95, 0xef, 0x05, 0x4b, 0x64, 0xbd, 0xb9, 0x0d, 0xc3, 0x52, 0x56, 0xb4, + 0xe0, 0x95, 0x41, 0x17, 0x21, 0xff, 0x56, 0x98, 0x1a, 0x83, 0x4d, 0x31, + 0x32, 0xce, 0x64, 0x65, 0x0a, 0x67, 0xb4, 0x64, 0xd0, 0xce, 0xfd, 0xab, + 0x4f, 0x35, 0x2e, 0x07, 0x42, 0x14, 0xc4, 0xa5, 0x27, 0x2d, 0xba, 0x13, + 0x95, 0x81, 0x8c, 0x40, 0x3a, 0x88, 0xcf, 0xef, 0x7f, 0x64, 0xe2, 0x05, + 0x64, 0x62, 0xf0, 0x98, 0xc9, 0x05, 0x89, 0x1d, 0x97, 0xc5, 0x69, 0xad, + 0xec, 0x64, 0xce, 0x81, 0xd3, 0x42, 0x6a, 0x70, 0x2a, 0x29, 0x99, 0x8d, + 0xa2, 0x8e, 0xdd, 0xbe, 0xf0, 0x53, 0x98, 0x47, 0x6b, 0xad, 0x8d, 0x98, + 0xfb, 0xf1, 0x55, 0x91, 0x5a, 0x49, 0x4c, 0xe7, 0x1f, 0x2f, 0x88, 0xce, + 0x7a, 0x69, 0xc1, 0xf8, 0x0e, 0xe8, 0xfe, 0x1e, 0xf3, 0xd0, 0xfd, 0xf9, + 0x43, 0x8d, 0xf7, 0xe5, 0xf2, 0x85, 0x63, 0xc6, 0xef, 0x5f, 0xb8, 0x54, + 0xa4, 0x6a, 0xc3, 0xaf, 0x10, 0xdd, 0xf9, 0x98, 0xa7, 0x38, 0x3c, 0xa9, + 0x13, 0x2c, 0xd0, 0x66, 0x62, 0x8d, 0x78, 0xea, 0x40, 0x5b, 0x0d, 0xf2, + 0xe3, 0x54, 0x37, 0x33, 0x60, 0x3d, 0x2d, 0x9b, 0x21, 0x37, 0xb8, 0x3c, + 0xc4, 0x7a, 0x9e, 0xd0, 0xd0, 0x4b, 0xd0, 0x57, 0x96, 0x38, 0x72, 0x5d, + 0xfb, 0xca, 0xd7, 0x2c, 0xe4, 0x90, 0x21, 0xbe, 0x20, 0x9f, 0x16, 0x96, + 0x38, 0xd2, 0x6c, 0xd9, 0xbb, 0xcc, 0x57, 0x16, 0xb4, 0xb1, 0x2e, 0x45, + 0xf5, 0x6b, 0x1e, 0xfa, 0x9c, 0x1f, 0x00, 0xeb, 0xf7, 0x35, 0xc1, 0x7a, + 0x3e, 0x27, 0x69, 0x99, 0xe5, 0xd4, 0x34, 0xcb, 0xec, 0xcf, 0x07, 0xa6, + 0x36, 0xec, 0x40, 0x59, 0x79, 0x73, 0x5b, 0x16, 0x35, 0xd9, 0x69, 0x5a, + 0xd7, 0xce, 0x5a, 0x15, 0x0d, 0x52, 0xa9, 0x74, 0xe1, 0x54, 0x59, 0x59, + 0x6f, 0x2a, 0x5a, 0x1d, 0x28, 0xbb, 0x94, 0x37, 0x11, 0x8d, 0x8e, 0x16, + 0x27, 0xd9, 0xce, 0xd6, 0xfa, 0xcd, 0xdd, 0xdb, 0xba, 0x4a, 0x19, 0x13, + 0xec, 0x41, 0x53, 0x3a, 0x25, 0x4b, 0x6f, 0x06, 0x1a, 0x6f, 0xc6, 0x06, + 0x16, 0x2b, 0xe1, 0x64, 0x59, 0x6e, 0x82, 0x99, 0x29, 0x6b, 0xad, 0x9d, + 0xae, 0x6a, 0xe9, 0x4c, 0x8d, 0x52, 0x31, 0x14, 0x24, 0xf7, 0x4d, 0x34, + 0x19, 0x96, 0xb5, 0x6a, 0x6d, 0x46, 0x32, 0xa9, 0x2b, 0x57, 0x54, 0x65, + 0x9c, 0x0e, 0xe2, 0xf9, 0x85, 0x37, 0x2f, 0xad, 0x96, 0x36, 0x18, 0xe0, + 0xd6, 0x4f, 0xd1, 0xd5, 0x56, 0xd8, 0x60, 0x53, 0x1a, 0x59, 0x97, 0x21, + 0x2a, 0xee, 0x27, 0x5e, 0x29, 0x13, 0x22, 0xdd, 0x7e, 0x3c, 0x67, 0x5b, + 0x2a, 0x30, 0x5b, 0xf9, 0x5f, 0x5a, 0xb3, 0xb0, 0x10, 0x89, 0xb5, 0x18, + 0x1c, 0x15, 0x83, 0xf7, 0x22, 0x1b, 0xe5, 0xfb, 0x93, 0xf3, 0x2a, 0x76, + 0x7c, 0x09, 0x01, 0x50, 0xe0, 0x8d, 0xff, 0x90, 0x63, 0x49, 0x2e, 0x2d, + 0x03, 0x78, 0x44, 0x45, 0x35, 0x08, 0x2e, 0x88, 0x6d, 0x4a, 0x08, 0x47, + 0xf9, 0x97, 0x7c, 0x61, 0xec, 0x81, 0xae, 0x4f, 0x62, 0xa3, 0x14, 0x88, + 0xcb, 0xa4, 0x5f, 0x32, 0xe7, 0x45, 0x43, 0xfb, 0x55, 0x27, 0x53, 0xdf, + 0x58, 0x19, 0x9d, 0x0e, 0xa2, 0x10, 0x85, 0x93, 0xd6, 0x1a, 0x57, 0xea, + 0x42, 0x7b, 0x71, 0xa1, 0x5c, 0x0f, 0x63, 0x0b, 0xff, 0xff, 0x23, 0x8d, + 0x83, 0xff, 0x87, 0x94, 0x16, 0xfe, 0x08, 0xa9, 0xad, 0x2b, 0xa9, 0x69, + 0x49, 0x0f, 0xbd, 0x10, 0x4e, 0x55, 0x52, 0x7a, 0xb9, 0xb2, 0xf1, 0x41, + 0xfb, 0x3f, 0xbd, 0x74, 0xe9, 0x4a, 0xf8, 0x1b, 0x7d, 0x23, 0xff, 0x64, + 0x6b, 0x2f, 0x0a, 0x5c, 0x5a, 0x22, 0x1a, 0x1e, 0x3e, 0xc4, 0x41, 0xc6, + 0x6a, 0x13, 0x19, 0xe0, 0xc0, 0x18, 0xa1, 0x14, 0xf0, 0x37, 0x8d, 0x04, + 0x74, 0x82, 0x5b, 0x70, 0xfa, 0xbe, 0xef, 0x8d, 0x38, 0xef, 0xeb, 0x10, + 0x5d, 0x8f, 0x9a, 0x2d, 0xe3, 0x2d, 0xfd, 0xaf, 0xb6, 0xc3, 0x49, 0x61, + 0x6f, 0x18, 0xaf, 0x2b, 0xb5, 0x26, 0x84, 0xdf, 0xd7, 0x57, 0xaf, 0x2d, + 0x35, 0xe9, 0xc5, 0x28, 0x1a, 0x82, 0x40, 0x81, 0xf9, 0x08, 0xfe, 0x5f, + 0x90, 0xab, 0x06, 0x4f, 0x70, 0x89, 0x7d, 0x86, 0xaf, 0x40, 0x55, 0xe8, + 0x3e, 0x58, 0xc8, 0xdf, 0xcc, 0xc1, 0x49, 0x0f, 0xaf, 0xce, 0xe1, 0x9f, + 0x9c, 0xda, 0x06, 0xb2, 0xc4, 0xdb, 0x36, 0x85, 0xee, 0x0a, 0x3f, 0x1c, + 0x8f, 0x72, 0x9f, 0x2f, 0xc5, 0xb8, 0xf9, 0x9a, 0xc3, 0xb8, 0x29, 0x76, + 0xba, 0x66, 0xf8, 0x34, 0x9c, 0x3f, 0xb2, 0x38, 0x94, 0xac, 0x44, 0x89, + 0x0d, 0xae, 0x2f, 0xa7, 0x0d, 0x6b, 0x5b, 0x14, 0xb3, 0x18, 0x3c, 0x7c, + 0xdf, 0x83, 0xcb, 0x43, 0x83, 0xe7, 0x84, 0x86, 0x5e, 0xac, 0xbe, 0x7d, + 0x07, 0x06, 0xcf, 0xb7, 0x3c, 0x6c, 0xf8, 0x8d, 0x3c, 0x95, 0x4c, 0x64, + 0xb4, 0xc1, 0xb2, 0xd5, 0xda, 0x6f, 0xdf, 0x41, 0x0a, 0xcb, 0xb7, 0xff, + 0x49, 0x61, 0x79, 0x19, 0xd9, 0x48, 0x50, 0x35, 0xaf, 0xcc, 0x2b, 0xff, + 0x2d, 0x63, 0x3d, 0x3b, 0x04, 0x1b, 0x79, 0xed, 0xa3, 0x4c, 0x62, 0xc0, + 0x8f, 0x37, 0x5b, 0xb8, 0x98, 0x7c, 0x07, 0x7e, 0x92, 0x6f, 0x59, 0xfc, + 0x24, 0x3f, 0xe0, 0x16, 0xc2, 0xd2, 0xbb, 0xae, 0x4c, 0x36, 0x72, 0x90, + 0xb8, 0xfe, 0x10, 0xf5, 0x97, 0xbf, 0x7d, 0x07, 0x50, 0xcd, 0x6f, 0x59, + 0xa0, 0x9a, 0xa2, 0x51, 0x9a, 0x47, 0x7a, 0x27, 0x09, 0xed, 0x46, 0xee, + 0x5f, 0xb8, 0x54, 0xb0, 0xb5, 0x00, 0x57, 0x26, 0x15, 0x39, 0x8a, 0x00, + 0xfe, 0x10, 0xc4, 0x3d, 0xbf, 0xbe, 0x5f, 0x79, 0xde, 0xb4, 0xff, 0x01, + 0x19, 0x44, 0x81, 0x6a, 0x20, 0x33, 0x4f, 0x98, 0xaf, 0x9b, 0x3c, 0x76, + 0xf7, 0xc2, 0xc5, 0x81, 0x0d, 0xbb, 0xac, 0x4b, 0x81, 0xf8, 0x35, 0x47, + 0xb0, 0xa1, 0xae, 0x09, 0xf0, 0xc7, 0x05, 0xd7, 0x74, 0x02, 0x2e, 0x36, + 0x76, 0xff, 0xb2, 0xa5, 0xe2, 0xb7, 0x74, 0xa9, 0xf5, 0xd5, 0x48, 0xc5, + 0x6f, 0x59, 0xcc, 0xd2, 0xba, 0x11, 0x9a, 0x2d, 0x6d, 0x92, 0x4a, 0x4a, + 0x3e, 0xd2, 0x60, 0xe1, 0x72, 0x91, 0xe6, 0x00, 0x5c, 0x55, 0x4d, 0xe1, + 0xdf, 0xb2, 0xf0, 0x00, 0x06, 0xdf, 0x03, 0x0b, 0xdc, 0xe7, 0x8f, 0x91, + 0x91, 0x06, 0x2b, 0xd0, 0x2c, 0x7e, 0x4f, 0x14, 0x8b, 0x55, 0xfa, 0x15, + 0x0b, 0x23, 0x9d, 0x69, 0x0a, 0xbf, 0xeb, 0x0a, 0x78, 0x70, 0x66, 0x61, + 0xb5, 0xf0, 0xd7, 0x8f, 0x86, 0xb3, 0x7f, 0xcf, 0x06, 0x05, 0x8a, 0x41, + 0x69, 0x21, 0x5c, 0x09, 0x6c, 0x40, 0xaa, 0xc8, 0x56, 0x31, 0xac, 0x89, + 0xcb, 0x17, 0x1d, 0x1b, 0xf6, 0x29, 0x0b, 0xea, 0x96, 0xf0, 0x66, 0x65, + 0x49, 0xc8, 0x77, 0xa9, 0x10, 0xfd, 0xf6, 0x06, 0x4e, 0x89, 0xa2, 0x9d, + 0x25, 0xe5, 0xcf, 0x4b, 0xbb, 0x45, 0xf4, 0x3b, 0x3e, 0x3c, 0xae, 0x40, + 0x56, 0x98, 0xc4, 0xe1, 0x6a, 0x23, 0xa8, 0x4d, 0xd1, 0x69, 0x8b, 0x30, + 0xb6, 0x1f, 0xa7, 0x12, 0x40, 0x21, 0xe8, 0x98, 0x3e, 0x60, 0xeb, 0xda, + 0xd5, 0xda, 0xa2, 0x38, 0x13, 0xff, 0x34, 0x70, 0x7d, 0x34, 0x2c, 0x23, + 0x42, 0xa6, 0x81, 0xe0, 0x5a, 0x73, 0x48, 0xbb, 0x03, 0x51, 0x1c, 0xf9, + 0x31, 0xec, 0xc8, 0x10, 0x6a, 0x36, 0x19, 0x76, 0x75, 0x3e, 0xda, 0xdf, + 0x73, 0xa4, 0xc4, 0x92, 0x8c, 0x51, 0xc9, 0x2d, 0xa1, 0x92, 0x65, 0x8e, + 0xf9, 0xba, 0x02, 0x53, 0xda, 0x2d, 0x7c, 0xf7, 0x63, 0x91, 0xd4, 0xeb, + 0x13, 0x94, 0x1c, 0x60, 0x6a, 0x7a, 0xe0, 0x28, 0x48, 0x82, 0x67, 0xae, + 0x2e, 0xcc, 0xc9, 0xc2, 0xe2, 0xdb, 0xd6, 0x13, 0x1a, 0x2f, 0x59, 0x62, + 0xfe, 0xf8, 0xe3, 0xbf, 0x01, 0x05, 0xa8, 0x01, 0x77, 0x01, 0x42, 0x02, + 0x00 +}; +z_const size_t kShortNumberMetaDataCompressedLength = sizeof(kShortNumberMetaData); +z_const size_t kShortNumberMetaDataExpandedLength = 147969; +#endif // SHORT_NUMBER_SUPPORT diff --git a/libPhoneNumber/NBMetadataHelper.h b/libPhoneNumber/NBMetadataHelper.h index 43e58c6..26d1971 100644 --- a/libPhoneNumber/NBMetadataHelper.h +++ b/libPhoneNumber/NBMetadataHelper.h @@ -9,7 +9,6 @@ #import #import "NBPhoneNumberDefines.h" - @class NBPhoneMetaData; @interface NBMetadataHelper : NSObject @@ -26,4 +25,17 @@ + (NSArray *)regionCodeFromCountryCode:(NSNumber *)countryCodeNumber; + (NSString *)countryCodeFromRegionCode:(NSString *)regionCode; +#if SHORT_NUMBER_SUPPORT + +/** + * Returns the short number metadata for the given region code or {@code nil} if the region + * code is invalid or unknown. + * + * @param regionCode regionCode + * @return {i18n.phonenumbers.PhoneMetadata} + */ +- (NBPhoneMetaData *)shortNumberMetadataForRegion:(NSString *)regionCode; + +#endif // SHORT_NUMBER_SUPPORT + @end diff --git a/libPhoneNumber/NBMetadataHelper.m b/libPhoneNumber/NBMetadataHelper.m index eab2bb7..7dd16ea 100644 --- a/libPhoneNumber/NBMetadataHelper.m +++ b/libPhoneNumber/NBMetadataHelper.m @@ -17,6 +17,13 @@ @property(nonatomic, strong) NBPhoneMetaData *cachedMetaData; @property(nonatomic, strong) NSString *cachedMetaDataKey; +#if SHORT_NUMBER_SUPPORT + +@property (nonatomic, strong) NSString *cachedShortNumberMetaDataKey; +@property (nonatomic, strong) NBPhoneMetaData *cachedShortNumberMetadata; + +#endif //SHORT_NUMBER_SUPPORT + @end static NSString *StringByTrimming(NSString *aString) { @@ -193,4 +200,67 @@ static NSString *StringByTrimming(NSString *aString) { return string.length != 0; } +#if SHORT_NUMBER_SUPPORT + ++ (NSDictionary *)shortNumberDataMap { + static NSDictionary *shortNumberDataDictionary; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + // Data is a gzipped JSON file that is embedded in the binary. + // See GeneratePhoneNumberHeader.sh and PhoneNumberMetaData.h for details. + NSMutableData* gunzippedData = + [NSMutableData dataWithLength:kShortNumberMetaDataExpandedLength]; + + z_stream zStream; + memset(&zStream, 0, sizeof(zStream)); + __attribute((unused)) int err = inflateInit2(&zStream, 16); + NSAssert(err == Z_OK, @"Unable to init stream. err = %d", err); + + zStream.next_in = kShortNumberMetaData; + zStream.avail_in = (uint)kShortNumberMetaDataCompressedLength; + zStream.next_out = (Bytef *)gunzippedData.bytes; + zStream.avail_out = (uint)gunzippedData.length; + + err = inflate(&zStream, Z_FINISH); + NSAssert(err == Z_STREAM_END, @"Unable to inflate compressed data. err = %d", err); + + err = inflateEnd(&zStream); + NSAssert(err == Z_OK, @"Unable to inflate compressed data. err = %d", err); + + NSError *error = nil; + shortNumberDataDictionary = [NSJSONSerialization JSONObjectWithData:gunzippedData + options:0 + error:&error]; + NSAssert(error == nil, @"Unable to convert JSON - %@", error); + }); + return shortNumberDataDictionary; +} + +- (NBPhoneMetaData *)shortNumberMetadataForRegion:(NSString *)regionCode +{ + regionCode = StringByTrimming(regionCode); + if (regionCode.length == 0) { + return nil; + } + + regionCode = [regionCode uppercaseString]; + + if ([_cachedShortNumberMetaDataKey isEqualToString:regionCode]) { + return _cachedShortNumberMetadata; + } + + NSDictionary *dict = [[self class] shortNumberDataMap][@"countryToMetadata"]; + NSArray *entry = dict[regionCode]; + if (entry) { + NBPhoneMetaData *metadata = [[NBPhoneMetaData alloc] initWithEntry:entry]; + _cachedShortNumberMetadata = metadata; + _cachedShortNumberMetaDataKey = regionCode; + return metadata; + } + + return nil; +} + +#endif // SHORT_NUMBER_SUPPORT + @end diff --git a/libPhoneNumber/NBPhoneMetaData.h b/libPhoneNumber/NBPhoneMetaData.h index 43dd777..3703c7e 100755 --- a/libPhoneNumber/NBPhoneMetaData.h +++ b/libPhoneNumber/NBPhoneMetaData.h @@ -11,7 +11,7 @@ @interface NBPhoneMetaData : NSObject -// from phonemetadata.pb.js +// from phonemetadata.proto /* 1 */ @property (nonatomic, strong) NBPhoneNumberDesc *generalDesc; /* 2 */ @property (nonatomic, strong) NBPhoneNumberDesc *fixedLine; /* 3 */ @property (nonatomic, strong) NBPhoneNumberDesc *mobile; @@ -40,5 +40,14 @@ /* 23 */ @property (nonatomic, strong) NSString *leadingDigits; /* 26 */ @property (nonatomic, assign) BOOL leadingZeroPossible; +#if SHORT_NUMBER_SUPPORT + +/* 29 */ @property (nonatomic, strong) NBPhoneNumberDesc *shortCode; +/* 30 */ @property (nonatomic, strong) NBPhoneNumberDesc *standardRate; +/* 31 */ @property (nonatomic, strong) NBPhoneNumberDesc *carrierSpecific; +/* 33 */ @property (nonatomic, strong) NBPhoneNumberDesc *smsServices; + +#endif // SHORT_NUMBER_SUPPORT + - (instancetype)initWithEntry:(NSArray *)entry; @end diff --git a/libPhoneNumber/NBPhoneMetaData.m b/libPhoneNumber/NBPhoneMetaData.m index af0a8d6..16b5164 100755 --- a/libPhoneNumber/NBPhoneMetaData.m +++ b/libPhoneNumber/NBPhoneMetaData.m @@ -60,6 +60,13 @@ _mainCountryForCode = [[entry nb_safeNumberAtIndex:22] boolValue]; _leadingDigits = [entry nb_safeStringAtIndex:23]; _leadingZeroPossible = [[entry nb_safeNumberAtIndex:26] boolValue]; + +#if SHORT_NUMBER_SUPPORT + _shortCode = [[NBPhoneNumberDesc alloc] initWithEntry:[entry nb_safeArrayAtIndex:29]]; + _standardRate = [[NBPhoneNumberDesc alloc] initWithEntry:[entry nb_safeArrayAtIndex:30]]; + _carrierSpecific = [[NBPhoneNumberDesc alloc] initWithEntry:[entry nb_safeArrayAtIndex:31]]; + _smsServices = [[NBPhoneNumberDesc alloc] initWithEntry:[entry nb_safeArrayAtIndex:33]]; +#endif // SHORT_NUMBER_SUPPORT } return self; diff --git a/libPhoneNumber/NBPhoneNumberUtil+ShortNumber.h b/libPhoneNumber/NBPhoneNumberUtil+ShortNumber.h new file mode 100644 index 0000000..a056e10 --- /dev/null +++ b/libPhoneNumber/NBPhoneNumberUtil+ShortNumber.h @@ -0,0 +1,198 @@ +// +// NBPhoneNumberUtil+ShortNumber.h +// libPhoneNumberiOS +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import +#import "NBPhoneNumberUtil.h" + +@class NBPhoneNumber; + +NS_ASSUME_NONNULL_BEGIN + +#if SHORT_NUMBER_SUPPORT + +typedef NS_ENUM(NSUInteger, NBEShortNumberCost) { + NBEShortNumberCostUnknown = 0, + NBEShortNumberCostTollFree = 1, + NBEShortNumberCostStandardRate = 2, + NBEShortNumberCostPremiumRate = 3, +}; + +@interface NBPhoneNumberUtil (ShortNumber) + +// Short number related methods +/** + * Check whether a short number is a possible number when dialed from the given region. This + * provides a more lenient check than {@link #isValidShortNumberForRegion}. + * + * @param phoneNumber the short number to check + * @param regionDialingFrom the region from which the number is dialed + * @return whether the number is a possible short number + */ +- (BOOL)isPossibleShortNumber:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionDialingFrom; + +/** + * Check whether a short number is a possible number. If a country calling code is shared by + * multiple regions, this returns true if it's possible in any of them. This provides a more + * lenient check than {@link #isValidShortNumber}. See {@link + * #isPossibleShortNumberForRegion(PhoneNumber, String)} for details. + * + * @param phoneNumber the short number to check + * @return whether the number is a possible short number + */ +- (BOOL)isPossibleShortNumber:(NBPhoneNumber *)phoneNumber; + +/** + * Tests whether a short number matches a valid pattern in a region. Note that this doesn't verify + * the number is actually in use, which is impossible to tell by just looking at the number + * itself. + * + * @param phoneNumber the short number for which we want to test the validity + * @param regionDialingFrom the region from which the number is dialed + * @return whether the short number matches a valid pattern + */ +- (BOOL)isValidShortNumber:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionDialingFrom; + +/** + * Tests whether a short number matches a valid pattern. If a country calling code is shared by + * multiple regions, this returns true if it's valid in any of them. Note that this doesn't verify + * the number is actually in use, which is impossible to tell by just looking at the number + * itself. See {@link #isValidShortNumberForRegion(PhoneNumber, String)} for details. + * + * @param phoneNumber the short number for which we want to test the validity + * @return whether the short number matches a valid pattern + */ +- (BOOL)isValidShortNumber:(NBPhoneNumber *)phoneNumber; + +/** + * Gets the expected cost category of a short number when dialed from a region (however, nothing + * is implied about its validity). If it is important that the number is valid, then its validity + * must first be checked using {@link #isValidShortNumberForRegion}. Note that emergency numbers + * are always considered toll-free. Example usage: + *
{@code
+ * // The region for which the number was parsed and the region we subsequently check against
+ * // need not be the same. Here we parse the number in the US and check it for Canada.
+ * PhoneNumber number = phoneUtil.parse("110", "US");
+ * ...
+ * String regionCode = "CA";
+ * ShortNumberInfo shortInfo = ShortNumberInfo.getInstance();
+ * if (shortInfo.isValidShortNumberForRegion(shortNumber, regionCode)) {
+ *   ShortNumberCost cost = shortInfo.getExpectedCostForRegion(number, regionCode);
+ *   // Do something with the cost information here.
+ * }}
+ * + * @param phoneNumber the short number for which we want to know the expected cost category + * @param regionDialingFrom the region from which the number is dialed + * @return the expected cost category for that region of the short number. Returns UNKNOWN_COST if + * the number does not match a cost category. Note that an invalid number may match any cost + * category. + */ +- (NBEShortNumberCost)expectedCostOfPhoneNumber:(NBPhoneNumber *)phoneNumber + forRegion:(NSString *)regionDialingFrom; + +/** + * Gets the expected cost category of a short number (however, nothing is implied about its + * validity). If the country calling code is unique to a region, this method behaves exactly the + * same as {@link #getExpectedCostForRegion(PhoneNumber, String)}. However, if the country + * calling code is shared by multiple regions, then it returns the highest cost in the sequence + * PREMIUM_RATE, UNKNOWN_COST, STANDARD_RATE, TOLL_FREE. The reason for the position of + * UNKNOWN_COST in this order is that if a number is UNKNOWN_COST in one region but STANDARD_RATE + * or TOLL_FREE in another, its expected cost cannot be estimated as one of the latter since it + * might be a PREMIUM_RATE number. + *

+ * For example, if a number is STANDARD_RATE in the US, but TOLL_FREE in Canada, the expected + * cost returned by this method will be STANDARD_RATE, since the NANPA countries share the same + * country calling code. + *

+ * Note: If the region from which the number is dialed is known, it is highly preferable to call + * {@link #getExpectedCostForRegion(PhoneNumber, String)} instead. + * + * @param phoneNumber the short number for which we want to know the expected cost category + * @return the highest expected cost category of the short number in the region(s) with the given + * country calling code + */ +- (NBEShortNumberCost)expectedCostOfPhoneNumber:(NBPhoneNumber *)phoneNumber; + +/** + * Given a valid short number, determines whether it is carrier-specific (however, nothing is + * implied about its validity). Carrier-specific numbers may connect to a different end-point, or + * not connect at all, depending on the user's carrier. If it is important that the number is + * valid, then its validity must first be checked using {@link #isValidShortNumber} or + * {@link #isValidShortNumberForRegion}. + * + * @param phoneNumber the valid short number to check + * @return whether the short number is carrier-specific, assuming the input was a valid short + * number + */ +- (BOOL)isPhoneNumberCarrierSpecific:(NBPhoneNumber *)phoneNumber; + +/** + * Given a valid short number, determines whether it is carrier-specific when dialed from the + * given region (however, nothing is implied about its validity). Carrier-specific numbers may + * connect to a different end-point, or not connect at all, depending on the user's carrier. If + * it is important that the number is valid, then its validity must first be checked using + * {@link #isValidShortNumber} or {@link #isValidShortNumberForRegion}. Returns false if the + * number doesn't match the region provided. + * + * @param phoneNumber the valid short number to check + * @param regionDialingFrom the region from which the number is dialed + * @return whether the short number is carrier-specific in the provided region, assuming the + * input was a valid short number + */ +- (BOOL)isPhoneNumberCarrierSpecific:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionCode; + +/** + * Given a valid short number, determines whether it is an SMS service (however, nothing is + * implied about its validity). An SMS service is where the primary or only intended usage is to + * receive and/or send text messages (SMSs). This includes MMS as MMS numbers downgrade to SMS if + * the other party isn't MMS-capable. If it is important that the number is valid, then its + * validity must first be checked using {@link #isValidShortNumber} or {@link + * #isValidShortNumberForRegion}. Returns false if the number doesn't match the region provided. + * + * @param phoneNumber the valid short number to check + * @param regionDialingFrom the region from which the number is dialed + * @return whether the short number is an SMS service in the provided region, assuming the input + * was a valid short number + */ +- (BOOL)isPhoneNumberSMSService:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionCode; + +/** + * Returns true if the given number, exactly as dialed, might be used to connect to an emergency + * service in the given region. + *

+ * This method accepts a string, rather than a PhoneNumber, because it needs to distinguish + * cases such as "+1 911" and "911", where the former may not connect to an emergency service in + * all cases but the latter would. This method takes into account cases where the number might + * contain formatting, or might have additional digits appended (when it is okay to do that in + * the specified region). + * + * @param number the phone number to test + * @param regionCode the region where the phone number is being dialed + * @return whether the number might be used to connect to an emergency service in the given region + */ +- (BOOL)connectsToEmergencyNumberFromString:(NSString *)number forRegion:(NSString *)regionCode; + +/** + * Returns true if the given number exactly matches an emergency service number in the given + * region. + *

+ * This method takes into account cases where the number might contain formatting, but doesn't + * allow additional digits to be appended. Note that {@code isEmergencyNumber(number, region)} + * implies {@code connectsToEmergencyNumber(number, region)}. + * + * @param number the phone number to test + * @param regionCode the region where the phone number is being dialed + * @return whether the number exactly matches an emergency services number in the given region + */ +- (BOOL)isEmergencyNumber:(NSString *)number forRegion:(NSString *)regionCode; + +@end + +#endif // SHORT_NUMBER_SUPPORT + +NS_ASSUME_NONNULL_END + diff --git a/libPhoneNumber/NBPhoneNumberUtil+ShortNumber.m b/libPhoneNumber/NBPhoneNumberUtil+ShortNumber.m new file mode 100644 index 0000000..8bc1db2 --- /dev/null +++ b/libPhoneNumber/NBPhoneNumberUtil+ShortNumber.m @@ -0,0 +1,323 @@ +// +// NBPhoneNumberUtil+ShortNumber.m +// libPhoneNumberiOS +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import "NBPhoneNumberUtil+ShortNumber.h" + +#import + +#import "NBMetadataHelper.h" +#import "NBPhoneMetaData.h" +#import "NBPhoneNumber.h" +#import "NBPhoneNumberDesc.h" +#import "NBPhoneNumberUtil+Category.h" +#import "NBRegExMatcher.h" +#import "NBRegularExpressionCache.h" + +#if SHORT_NUMBER_SUPPORT + +static NSString * const PLUS_CHARS_PATTERN = @"[+\uFF0B]+"; + +@interface NBPhoneNumberUtil() + +@property (nonatomic) NSDictionary *> *countryToRegionCodeMap; + +@end + +@implementation NBPhoneNumberUtil (ShortNumber) + +- (BOOL)isPossibleShortNumber:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionDialingFrom { + if (![self doesPhoneNumber:phoneNumber matchesRegion:regionDialingFrom]) { + return NO; + } + + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionDialingFrom]; + if (metadata == nil) { + return NO; + } + + NSUInteger length = [[self getNationalSignificantNumber:phoneNumber] length]; + return [metadata.generalDesc.possibleLength containsObject:@(length)]; +} + +- (BOOL)isPossibleShortNumber:(NBPhoneNumber *)phoneNumber { + NSArray *regionCodes = [self getRegionCodesForCountryCode:phoneNumber.countryCode]; + NSUInteger shortNumberLength = [[self getNationalSignificantNumber:phoneNumber] length]; + for (NSString *region in regionCodes) { + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:region]; + if (metadata == nil) { + continue; + } + + if ([metadata.generalDesc.possibleLength containsObject:@(shortNumberLength)]) { + return YES; + } + } + + return NO; +} + +- (BOOL)isValidShortNumber:(NBPhoneNumber *)phoneNumber + forRegion:(NSString *)regionDialingFrom { + if (![self doesPhoneNumber:phoneNumber matchesRegion:regionDialingFrom]) { + return NO; + } + + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionDialingFrom]; + if (metadata == nil) { + return NO; + } + + NSString *shortNumber = [self getNationalSignificantNumber:phoneNumber]; + NBPhoneNumberDesc *generalDesc = metadata.generalDesc; + if (![self matchesPossibleNumber:shortNumber andNationalNumber:generalDesc]) { + return NO; + } + + NBPhoneNumberDesc *shortNumberDesc = metadata.shortCode; + return [self matchesPossibleNumber:shortNumber andNationalNumber:shortNumberDesc]; +} + +- (BOOL)isValidShortNumber:(NBPhoneNumber *)phoneNumber { + NSArray *regionCodes = [self getRegionCodesForCountryCode:phoneNumber.countryCode]; + NSString *regionCode = [self regionCodeForShortNumber:phoneNumber fromRegionList:regionCodes]; + if (regionCodes.count > 1 && regionCode != nil) { + // If a matching region had been found for the phone number from among two or more regions, + // then we have already implicitly verified its validity for that region. + return YES; + } + + return [self isValidShortNumber:phoneNumber forRegion:regionCode]; +} + +- (NBEShortNumberCost)expectedCostOfPhoneNumber:(NBPhoneNumber *)phoneNumber + forRegion:(NSString *)regionDialingFrom { + if (![self doesRegionDialingFrom:regionDialingFrom matchesPhoneNumber:phoneNumber]) { + return NBEShortNumberCostUnknown; + } + + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionDialingFrom]; + if (metadata == nil) { + return NBEShortNumberCostUnknown; + } + + NSString *shortNumber = [self getNationalSignificantNumber:phoneNumber]; + + // The possible lengths are not present for a particular sub-type if they match the general + // description; for this reason, we check the possible lengths against the general description + // first to allow an early exit if possible. + if (![metadata.generalDesc.possibleLength containsObject:@(shortNumber.length)]) { + return NBEShortNumberCostUnknown; + } + + // The cost categories are tested in order of decreasing expense, since if for some reason the + // patterns overlap the most expensive matching cost category should be returned. + if ([self matchesPossibleNumber:shortNumber andNationalNumber:metadata.premiumRate]) { + return NBEShortNumberCostPremiumRate; + } else if ([self matchesPossibleNumber:shortNumber andNationalNumber:metadata.standardRate]) { + return NBEShortNumberCostStandardRate; + } else if ([self matchesPossibleNumber:shortNumber andNationalNumber:metadata.tollFree]) { + return NBEShortNumberCostTollFree; + } + + if ([self isEmergencyNumber:shortNumber forRegion:regionDialingFrom]) { + // Emergency numbers are implicitly toll-free. + return NBEShortNumberCostTollFree; + } + + return NBEShortNumberCostUnknown; +} + +- (NBEShortNumberCost)expectedCostOfPhoneNumber:(NBPhoneNumber *)phoneNumber { + NSArray *regionCodes = [self getRegionCodesForCountryCode:phoneNumber.countryCode]; + if (regionCodes.count == 0) { + return NBEShortNumberCostUnknown; + } + if (regionCodes.count == 1) { + return [self expectedCostOfPhoneNumber:phoneNumber forRegion:regionCodes[0]]; + } + + NBEShortNumberCost cost = NBEShortNumberCostTollFree; + for (NSString *regionCode in regionCodes) { + NBEShortNumberCost costForRegion = [self expectedCostOfPhoneNumber:phoneNumber + forRegion:regionCode]; + switch (costForRegion) { + case NBEShortNumberCostPremiumRate: + return NBEShortNumberCostPremiumRate; + case NBEShortNumberCostUnknown: + cost = NBEShortNumberCostUnknown; + break; + case NBEShortNumberCostStandardRate: + if (cost != NBEShortNumberCostUnknown) { + cost = NBEShortNumberCostStandardRate; + } + break; + case NBEShortNumberCostTollFree: + // Do nothing. + break; + } + } + + return cost; +} + +- (BOOL)isPhoneNumberCarrierSpecific:(NBPhoneNumber *)phoneNumber { + NSArray *regionCodes = [self getRegionCodesForCountryCode:phoneNumber.countryCode]; + NSString *regionCode = [self regionCodeForShortNumber:phoneNumber fromRegionList:regionCodes]; + NSString *nationalNumber = [self getNationalSignificantNumber:phoneNumber]; + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + return (metadata != nil && + ([self matchesPossibleNumber:nationalNumber andNationalNumber:metadata.carrierSpecific])); +} + +- (BOOL)isPhoneNumberCarrierSpecific:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionCode { + if (![self doesRegionDialingFrom:regionCode matchesPhoneNumber:phoneNumber]) { + return NO; + } + + NSString *nationalNumber = [self getNationalSignificantNumber:phoneNumber]; + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + return (metadata != nil + && ([self matchesPossibleNumber:nationalNumber andNationalNumber:metadata.carrierSpecific])); +} + +- (BOOL)isPhoneNumberSMSService:(NBPhoneNumber *)phoneNumber forRegion:(NSString *)regionCode { + if (![self doesRegionDialingFrom:regionCode matchesPhoneNumber:phoneNumber]) { + return NO; + } + + NSString *nationalNumber = [self getNationalSignificantNumber:phoneNumber]; + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + return (metadata != nil + && ([self matchesPossibleNumber:nationalNumber andNationalNumber:metadata.smsServices])); +} + +- (BOOL)connectsToEmergencyNumberFromString:(NSString *)number forRegion:(NSString *)regionCode { + return [self matchesEmergencyNumberHelper:number regionCode:regionCode allowsPrefixMatch:YES]; +} + +- (BOOL)isEmergencyNumber:(NSString *)number forRegion:(NSString *)regionCode { + return [self matchesEmergencyNumberHelper:number regionCode:regionCode allowsPrefixMatch:NO]; +} + +// MARK: - Private + +// In these countries, if extra digits are added to an emergency number, it no longer connects +// to the emergency service. ++ (NSSet *)regionsWhereEmergencyNumbersMustBeExact { + static NSSet *regions; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + regions = [NSSet setWithObjects:@"BR", @"CL", @"NI", nil]; + }); + return regions; +} + +/** + * Helper method to check that the country calling code of the number matches the region it's + * being dialed from. + */ +- (BOOL)doesPhoneNumber:(NBPhoneNumber *)phoneNumber matchesRegion:(NSString *)regionCode { + NSArray *regionCodes = [self getRegionCodesForCountryCode:phoneNumber.countryCode]; + return [regionCodes containsObject:regionCode]; +} + +/** + * Gets the national significant number of the a phone number. Note a national significant number + * doesn't contain a national prefix or any formatting. + *

+ * This is a temporary duplicate of the {@code getNationalSignificantNumber} method from + * {@code PhoneNumberUtil}. Ultimately a canonical static version should exist in a separate + * utility class (to prevent {@code ShortNumberInfo} needing to depend on PhoneNumberUtil). + * + * @param number the phone number for which the national significant number is needed + * @return the national significant number of the PhoneNumber object passed in + */ ++ (NSString *)nationalSignificantNumberFromPhoneNumber:(NBPhoneNumber *)phoneNumber { + // If leading zero(s) have been set, we prefix this now. Note this is not a national prefix. + NSMutableString *nationalNumber = [[NSMutableString alloc] init]; + if (phoneNumber.italianLeadingZero) { + [nationalNumber appendFormat:@"%*d", [phoneNumber.numberOfLeadingZeros intValue], 0]; + } + [nationalNumber appendString:[phoneNumber.nationalNumber stringValue]]; + + return [nationalNumber copy]; +} + +- (BOOL)matchesPossibleNumber:(NSString *)number andNationalNumber:(NBPhoneNumberDesc *)numberDesc { + if (numberDesc.possibleLength.count > 0 + && ![numberDesc.possibleLength containsObject:@(number.length)]) { + return NO; + } + + return [self.matcher matchNationalNumber:number phoneNumberDesc:numberDesc allowsPrefixMatch:NO]; +} + +// Helper method to get the region code for a given phone number, from a list of possible region +// codes. If the list contains more than one region, the first region for which the number is +// valid is returned. +- (NSString *)regionCodeForShortNumber:(NBPhoneNumber *)number + fromRegionList:(NSArray *)regionCodes { + if (regionCodes.count == 0) { + return nil; + } else if (regionCodes.count == 1) { + return regionCodes[0]; + } + + NSString *nationalNumber = [self getNationalSignificantNumber:number]; + for (NSString *regionCode in regionCodes) { + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + if (metadata != nil && [self matchesPossibleNumber:nationalNumber + andNationalNumber:metadata.shortCode]) { + // The number is valid for this region. + return regionCode; + } + } + + return nil; +} + +- (BOOL)doesRegionDialingFrom:(NSString *)regionCode + matchesPhoneNumber:(NBPhoneNumber *)phoneNumber { + NSArray *regionCodes = [self getRegionCodesForCountryCode:phoneNumber.countryCode]; + return [regionCodes containsObject:regionCode]; +} + +- (BOOL)matchesEmergencyNumberHelper:(NSString *)number regionCode:(NSString *)regionCode + allowsPrefixMatch:(BOOL)allowsPrefixMatch { + NSString *possibleNumber = [self extractPossibleNumber:number]; + NSRegularExpression *regex = + [[NBRegularExpressionCache sharedInstance] regularExpressionForPattern:PLUS_CHARS_PATTERN]; + + NSTextCheckingResult *result = [regex firstMatchInString:possibleNumber + options:kNilOptions + range:NSMakeRange(0, possibleNumber.length)]; + if (result != nil) { + // Returns false if the number starts with a plus sign. We don't believe dialing the country + // code before emergency numbers (e.g. +1911) works, but later, if that proves to work, we can + // add additional logic here to handle it. + return NO; + } + + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + if (metadata == nil || metadata.emergency == nil) { + return NO; + } + + NSString *normalizedNumber = [self normalizeDigitsOnly:possibleNumber]; + NSSet *exactRegions = [NBPhoneNumberUtil regionsWhereEmergencyNumbersMustBeExact]; + + BOOL allowsPrefixMatchForRegion = allowsPrefixMatch && ![exactRegions containsObject:regionCode]; + + return [self.matcher matchNationalNumber:normalizedNumber + phoneNumberDesc:metadata.emergency + allowsPrefixMatch:allowsPrefixMatchForRegion]; +} + +@end + +#endif // SHORT_NUMBER_SUPPORT diff --git a/libPhoneNumber/NBPhoneNumberUtil.m b/libPhoneNumber/NBPhoneNumberUtil.m index 554491b..79ef342 100755 --- a/libPhoneNumber/NBPhoneNumberUtil.m +++ b/libPhoneNumber/NBPhoneNumberUtil.m @@ -14,6 +14,7 @@ #import "NBPhoneMetaData.h" #import "NBMetadataHelper.h" #import +#import "NBRegExMatcher.h" #if TARGET_OS_IOS #import @@ -38,7 +39,8 @@ static NSString *NormalizeNonBreakingSpace(NSString *aString) { @property (nonatomic, strong) NSRegularExpression *CAPTURING_DIGIT_PATTERN; @property (nonatomic, strong) NSRegularExpression *VALID_ALPHA_PHONE_PATTERN; -@property (nonatomic, strong) NBMetadataHelper *helper; +@property (nonatomic, strong, readwrite) NBMetadataHelper *helper; +@property (nonatomic, strong, readwrite) NBRegExMatcher *matcher; #if TARGET_OS_IOS @property (nonatomic, readonly) CTTelephonyNetworkInfo *telephonyNetworkInfo; @@ -405,6 +407,7 @@ static NSArray *GEO_MOBILE_COUNTRIES; _lockPatternCache = [[NSLock alloc] init]; _entireStringCacheLock = [[NSLock alloc] init]; _helper = [[NBMetadataHelper alloc] init]; + _matcher = [[NBRegExMatcher alloc] init]; [self initRegularExpressionSet]; [self initNormalizationMappings]; } diff --git a/libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.h b/libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.h new file mode 100644 index 0000000..da4fda9 --- /dev/null +++ b/libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.h @@ -0,0 +1,29 @@ +// +// NBPhoneNumberUtil+ShortNumberTest.h +// libPhoneNumber +// +// Created by Paween Itthipalkul on 12/1/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import +#import "NBPhoneNumberUtil.h" +#import "NBPhoneNumberUtil+ShortNumber.h" + +#if SHORT_NUMBER_SUPPORT + +NS_ASSUME_NONNULL_BEGIN + +/** + Includes methods used only for testing NBPhoneNumberUtil+ShortNumber. + */ +@interface NBPhoneNumberUtil(ShortNumberTest) + +- (NSString *)exampleShortNumberForCost:(NBEShortNumberCost)cost regionCode:(NSString *)regionCode; +- (NSString *)exampleShortNumberWithRegionCode:(NSString *)regionCode; + +@end + +NS_ASSUME_NONNULL_END + +#endif // SHORT_NUMBER_SUPPORT diff --git a/libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.m b/libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.m new file mode 100644 index 0000000..530ea40 --- /dev/null +++ b/libPhoneNumberTests/NBPhoneNumberUtil+ShortNumberTest.m @@ -0,0 +1,53 @@ +// +// NBPhoneNumberUtil+ShortNumberTest.m +// libPhoneNumber +// +// Created by Paween Itthipalkul on 12/1/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import "NBPhoneNumberUtil+ShortNumberTest.h" + +#import "NBMetadataHelper.h" +#import "NBPhoneMetadata.h" +#import "NBPhoneNumberDesc.h" +#import "NBPhoneNumberUtil+Category.h" + +#if SHORT_NUMBER_SUPPORT + +@implementation NBPhoneNumberUtil(ShortNumberTest) + +- (NSString *)exampleShortNumberForCost:(NBEShortNumberCost)cost regionCode:(NSString *)regionCode { + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + if (metadata == nil) { + return @""; + } + + NBPhoneNumberDesc *desc = nil; + switch (cost) { + case NBEShortNumberCostTollFree: + desc = metadata.tollFree; + break; + case NBEShortNumberCostPremiumRate: + desc = metadata.premiumRate; + break; + case NBEShortNumberCostStandardRate: + desc = metadata.standardRate; + break; + case NBEShortNumberCostUnknown: + // UNKNOWN_COST numbers are computed by the process of elimination from the other cost + // categories. + break; + } + + return desc.exampleNumber ?: @""; +} + +- (NSString *)exampleShortNumberWithRegionCode:(NSString *)regionCode { + NBPhoneMetaData *metadata = [self.helper shortNumberMetadataForRegion:regionCode]; + return metadata.shortCode.exampleNumber ?: @""; +} + +@end + +#endif // SHORT_NUMBER_SUPPORT diff --git a/libPhoneNumberTests/NBShortNumberInfoTest.m b/libPhoneNumberTests/NBShortNumberInfoTest.m new file mode 100644 index 0000000..40d60d5 --- /dev/null +++ b/libPhoneNumberTests/NBShortNumberInfoTest.m @@ -0,0 +1,495 @@ +// +// NBShortNumberInfoTest.m +// libPhoneNumber +// +// Created by Paween Itthipalkul on 11/29/17. +// Copyright © 2017 Google LLC. All rights reserved. +// + +#import + +#import "NBMetadataHelper.h" +#import "NBPhoneMetaData.h" +#import "NBPhoneNumber.h" +#import "NBPhoneNumberDesc.h" +#import "NBPhoneNumberUtil+ShortNumber.h" +#import "NBPhoneNumberUtil+ShortNumberTest.h" + +#if SHORT_NUMBER_SUPPORT + +@interface NBShortNumberInfoTest: XCTestCase +@end + +@implementation NBShortNumberInfoTest + +- (void)testMetadataParsing_US { + NBMetadataHelper *metadataHelper = [[NBMetadataHelper alloc] init]; + + NBPhoneMetaData *metadata = [metadataHelper shortNumberMetadataForRegion:@"US"]; + XCTAssertNotNil(metadata.shortCode); + XCTAssertNotNil(metadata.standardRate); + XCTAssertNotNil(metadata.carrierSpecific); + XCTAssertNotNil(metadata.smsServices); +} + +- (void)testIsPossibleShortNumber { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + NBPhoneNumber *possibleNumber = [[NBPhoneNumber alloc] init]; + possibleNumber.countryCode = @33; + possibleNumber.nationalNumber = @123456; + XCTAssertTrue([util isPossibleShortNumber:possibleNumber]); + + NBPhoneNumber *impossibleNumber = [[NBPhoneNumber alloc] init]; + impossibleNumber.countryCode = @33; + impossibleNumber.nationalNumber = @9; + XCTAssertFalse([util isPossibleShortNumber:impossibleNumber]); + + // Note that GB and GG share the country calling code 44, and that this number is possible but + // not valid. + NBPhoneNumber *possibleButInvalid = [[NBPhoneNumber alloc] init]; + possibleButInvalid.countryCode = @44; + possibleButInvalid.nationalNumber = @11001; + XCTAssertTrue([util isPossibleShortNumber:possibleButInvalid]); +} + +- (void)testIsValidShortNumber { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + NBPhoneNumber *valid = [[NBPhoneNumber alloc] init]; + valid.countryCode = @33; + valid.nationalNumber = @1010; + XCTAssertTrue([util isValidShortNumber:valid]); + + NBPhoneNumber *validWithRegion = [util parse:@"1010" defaultRegion:@"FR" error:nil]; + XCTAssertNotNil(validWithRegion); + XCTAssertTrue([util isValidShortNumber:validWithRegion forRegion:@"FR"]); + + NBPhoneNumber *invalid = [[NBPhoneNumber alloc] init]; + invalid.countryCode = @33; + invalid.nationalNumber = @123456; + XCTAssertFalse([util isValidShortNumber:invalid]); + + NBPhoneNumber *invalidWithRegion = [util parse:@"123456" defaultRegion:@"FR" error:nil]; + XCTAssertNotNil(invalidWithRegion); + XCTAssertFalse([util isValidShortNumber:invalidWithRegion forRegion:@"FR"]); + + // Note that GB and GG share the country calling code 44. + NBPhoneNumber *valid2 = [[NBPhoneNumber alloc] init]; + valid2.countryCode = @44; + valid2.nationalNumber = @18001; + XCTAssertTrue([util isValidShortNumber:valid2]); +} + +- (void)testIsCarrierSpecific { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + NBPhoneNumber *carrierSpecificNumber = [[NBPhoneNumber alloc] init]; + carrierSpecificNumber.countryCode = @1; + carrierSpecificNumber.nationalNumber = @33669; + XCTAssertTrue([util isPhoneNumberCarrierSpecific:carrierSpecificNumber]); + // TODO(paween): Fix this -- should be 33669 + XCTAssertTrue([util isPhoneNumberCarrierSpecific:[util parse:@"33669" + defaultRegion:@"US" + error:nil] forRegion:@"US"]); + + NBPhoneNumber *notCarrierSpecific = [[NBPhoneNumber alloc] init]; + notCarrierSpecific.countryCode = @1; + notCarrierSpecific.nationalNumber = @911; + XCTAssertFalse([util isPhoneNumberCarrierSpecific:notCarrierSpecific]); + XCTAssertFalse([util isPhoneNumberCarrierSpecific:[util parse:@"911" + defaultRegion:@"US" + error:nil] forRegion:@"US"]); + + NBPhoneNumber *carrierSpecificForSomeRegion = [[NBPhoneNumber alloc] init]; + carrierSpecificForSomeRegion.countryCode = @1; + carrierSpecificForSomeRegion.nationalNumber = @211; + XCTAssertTrue([util isPhoneNumberCarrierSpecific:carrierSpecificForSomeRegion]); + XCTAssertTrue([util isPhoneNumberCarrierSpecific:carrierSpecificForSomeRegion forRegion:@"US"]); + XCTAssertFalse([util isPhoneNumberCarrierSpecific:carrierSpecificForSomeRegion forRegion:@"BB"]); +} + +- (void)testExpectedCost { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Premium rate. + NSString *premiumRateSample = [util exampleShortNumberForCost:NBEShortNumberCostPremiumRate + regionCode:@"FR"]; + XCTAssertEqual(NBEShortNumberCostPremiumRate, + [util expectedCostOfPhoneNumber:[util parse:premiumRateSample defaultRegion:@"FR" error:nil] + forRegion:@"FR"]); + + NBPhoneNumber *premiumRateNumber = [[NBPhoneNumber alloc] init]; + premiumRateNumber.countryCode = @33; + premiumRateNumber.nationalNumber = @([premiumRateSample integerValue]); + XCTAssertEqual(NBEShortNumberCostPremiumRate, + [util expectedCostOfPhoneNumber:premiumRateNumber forRegion:@"FR"]); + + // Standard rate. + NSString *standardRateSample = [util exampleShortNumberForCost:NBEShortNumberCostStandardRate + regionCode:@"FR"]; + XCTAssertEqual(NBEShortNumberCostStandardRate, + [util expectedCostOfPhoneNumber:[util parse:standardRateSample defaultRegion:@"FR" error:nil] + forRegion:@"FR"]); + + NBPhoneNumber *standardRateNumber = [[NBPhoneNumber alloc] init]; + standardRateNumber.countryCode = @33; + standardRateNumber.nationalNumber = @([standardRateSample integerValue]); + XCTAssertEqual(NBEShortNumberCostStandardRate, [util expectedCostOfPhoneNumber:standardRateNumber + forRegion:@"FR"]); + + // Toll free. + NSString *tollFreeSample = [util exampleShortNumberForCost:NBEShortNumberCostTollFree + regionCode:@"FR"]; + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:[util parse:tollFreeSample defaultRegion:@"FR" error:nil] + forRegion:@"FR"]); + + NBPhoneNumber *tollFreeNumber = [[NBPhoneNumber alloc] init]; + tollFreeNumber.countryCode = @33; + tollFreeNumber.nationalNumber = @([tollFreeSample integerValue]); + XCTAssertEqual(NBEShortNumberCostTollFree, [util expectedCostOfPhoneNumber:tollFreeNumber + forRegion:@"FR"]); + + // Unknown cost. + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:[util parse:@"12345" defaultRegion:@"FR" error:nil] + forRegion:@"FR"]); + NBPhoneNumber *unknownCostNumber = [[NBPhoneNumber alloc] init]; + unknownCostNumber.countryCode = @33; + unknownCostNumber.nationalNumber = @12345; + XCTAssertEqual(NBEShortNumberCostUnknown, [util expectedCostOfPhoneNumber:unknownCostNumber + forRegion:@"FR"]); + + // Test that an invalid number may nevertheless have a cost other than UNKNOWN_COST. + NBPhoneNumber *invalidShortNumber = [util parse:@"116123" defaultRegion:@"FR" error:nil]; + XCTAssertFalse([util isValidShortNumber:invalidShortNumber forRegion:@"FR"]); + XCTAssertEqual(NBEShortNumberCostTollFree, [util expectedCostOfPhoneNumber:invalidShortNumber + forRegion:@"FR"]); + + NBPhoneNumber *invalidShortNumber2 = [[NBPhoneNumber alloc] init]; + invalidShortNumber2.countryCode = @33; + invalidShortNumber2.nationalNumber = @116123; + XCTAssertFalse([util isValidShortNumber:invalidShortNumber2 forRegion:@"FR"]); + XCTAssertEqual(NBEShortNumberCostTollFree, [util expectedCostOfPhoneNumber:invalidShortNumber2 + forRegion:@"FR"]); + + // Test a nonexistent country code. + NBPhoneNumber *usNumber = [util parse:@"911" defaultRegion:@"US" error:nil]; + XCTAssertEqual(NBEShortNumberCostUnknown, [util expectedCostOfPhoneNumber:usNumber + forRegion:@"ZZ"]); + NBPhoneNumber *unknownNumber2 = [[NBPhoneNumber alloc] init]; + unknownNumber2.countryCode = @123; + unknownNumber2.nationalNumber = @911; + XCTAssertEqual(NBEShortNumberCostUnknown, [util expectedCostOfPhoneNumber:unknownNumber2]); +} + +- (void)testExpectedCostForSharedCountryCallingCode { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + NSString *ambiguousPremiumRateString = @"1234"; + NBPhoneNumber *ambiguousPremiumRateNumber = [[NBPhoneNumber alloc] init]; + ambiguousPremiumRateNumber.countryCode = @61; + ambiguousPremiumRateNumber.nationalNumber = @1234; + + NSString *ambiguousStandardRateString = @"1194"; + NBPhoneNumber *ambiguousStandardRateNumber = [[NBPhoneNumber alloc] init]; + ambiguousStandardRateNumber.countryCode = @61; + ambiguousStandardRateNumber.nationalNumber = @1194; + + NSString *ambiguousTollFreeString = @"733"; + NBPhoneNumber *ambiguousTollFreeNumber = [[NBPhoneNumber alloc] init]; + ambiguousTollFreeNumber.countryCode = @61; + ambiguousTollFreeNumber.nationalNumber = @733; + + XCTAssertTrue([util isValidShortNumber:ambiguousPremiumRateNumber]); + XCTAssertTrue([util isValidShortNumber:ambiguousStandardRateNumber]); + XCTAssertTrue([util isValidShortNumber:ambiguousTollFreeNumber]); + + XCTAssertTrue([util isValidShortNumber:[util parse:ambiguousPremiumRateString + defaultRegion:@"AU" + error:nil] forRegion:@"AU"]); + XCTAssertEqual(NBEShortNumberCostPremiumRate, + [util expectedCostOfPhoneNumber:[util parse:ambiguousPremiumRateString + defaultRegion:@"AU" + error:nil] forRegion:@"AU"]); + XCTAssertFalse([util isValidShortNumber:[util parse:ambiguousPremiumRateString + defaultRegion:@"CX" + error:nil] forRegion:@"CX"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:[util parse:ambiguousPremiumRateString + defaultRegion:@"CX" + error:nil] forRegion:@"CX"]); + // PREMIUM_RATE takes precedence over UNKNOWN_COST. + XCTAssertEqual(NBEShortNumberCostPremiumRate, + [util expectedCostOfPhoneNumber:ambiguousPremiumRateNumber]); + + XCTAssertTrue([util isValidShortNumber:[util parse:ambiguousStandardRateString + defaultRegion:@"AU" + error:nil] forRegion:@"AU"]); + XCTAssertEqual(NBEShortNumberCostStandardRate, + [util expectedCostOfPhoneNumber:[util parse:ambiguousStandardRateString + defaultRegion:@"AU" + error:nil] forRegion:@"AU"]); + XCTAssertFalse([util isValidShortNumber:[util parse:ambiguousStandardRateString + defaultRegion:@"CX" + error:nil] forRegion:@"CX"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:[util parse:ambiguousStandardRateString + defaultRegion:@"CX" + error:nil] forRegion:@"CX"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:ambiguousStandardRateNumber]); + + XCTAssertTrue([util isValidShortNumber:[util parse:ambiguousTollFreeString + defaultRegion:@"AU" + error:nil] forRegion:@"AU"]); + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:[util parse:ambiguousTollFreeString + defaultRegion:@"AU" + error:nil] forRegion:@"AU"]); + XCTAssertFalse([util isValidShortNumber:[util parse:ambiguousTollFreeString + defaultRegion:@"CX" + error:nil] forRegion:@"CX"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:[util parse:ambiguousTollFreeString + defaultRegion:@"CX" + error:nil] forRegion:@"CX"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:ambiguousTollFreeNumber]); +} + +- (void)testGetExampleShortNumber { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertEqualObjects(@"8711", [util exampleShortNumberWithRegionCode:@"AM"]); + XCTAssertEqualObjects(@"1010", [util exampleShortNumberWithRegionCode:@"FR"]); + XCTAssertEqualObjects(@"", [util exampleShortNumberWithRegionCode:@"UN001"]); +} + +- (void)testGetExampleShortNumberForCost { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertEqualObjects(@"3010", [util exampleShortNumberForCost:NBEShortNumberCostTollFree + regionCode:@"FR"]); + XCTAssertEqualObjects(@"1023", [util exampleShortNumberForCost:NBEShortNumberCostStandardRate + regionCode:@"FR"]); + XCTAssertEqualObjects(@"42000", [util exampleShortNumberForCost:NBEShortNumberCostPremiumRate + regionCode:@"FR"]); + XCTAssertEqualObjects(@"", [util exampleShortNumberForCost:NBEShortNumberCostUnknown + regionCode:@"FR"]); +} + +- (void)testConnectsToEmergencyNumber_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"911" forRegion:@"US"]); + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"112" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"999" forRegion:@"US"]); +} + +- (void)testConnectsToEmergencyNumberLongNumber_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"9116666666" forRegion:@"US"]); + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"1126666666" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"9996666666" forRegion:@"US"]); +} + +- (void)testConnectsToEmergencyNumberWithFormatting_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"9-1-1" forRegion:@"US"]); + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"1-1-2" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"9-9-9" forRegion:@"US"]); +} + +- (void)testConnectsToEmergencyNumberWithPlusSign_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"+911" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"\uFF0B911" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@" +911" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"+112" forRegion:@"US"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"+999" forRegion:@"US"]); +} + +- (void)testConnectsToEmergencyNumber_BR { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"911" forRegion:@"BR"]); + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"190" forRegion:@"BR"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"999" forRegion:@"BR"]); +} + +- (void)testConnectsToEmergencyNumberLongNumber_BR { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Brazilian emergency numbers don't work when additional digits are appended. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"9111" forRegion:@"BR"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"1900" forRegion:@"BR"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"9996" forRegion:@"BR"]); +} + +- (void)testConnectsToEmergencyNumber_CL { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"131" forRegion:@"CL"]); + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"133" forRegion:@"CL"]); +} + +- (void)testConnectsToEmergencyNumberLongNumber_CL { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Chilean emergency numbers don't work when additional digits are appended. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"1313" forRegion:@"CL"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"1330" forRegion:@"CL"]); +} + +- (void)testConnectsToEmergencyNumber_AO { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Angola doesn't have any metadata for emergency numbers. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"911" forRegion:@"AO"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"222123456" forRegion:@"AO"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"923123456" forRegion:@"AO"]); +} + +- (void)testConnectsToEmergencyNumber_ZW { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Zimbabwe doesn't have any metadata. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"911" forRegion:@"ZW"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"01312345" forRegion:@"ZW"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"0711234567" forRegion:@"ZW"]); +} + +- (void)testIsEmergencyNumber_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util isEmergencyNumber:@"911" forRegion:@"US"]); + XCTAssertTrue([util isEmergencyNumber:@"112" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"999" forRegion:@"US"]); +} + +- (void)testIsEmergencyNumberLongNumber_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertFalse([util isEmergencyNumber:@"9116666666" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"1126666666" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"9996666666" forRegion:@"US"]); +} + +- (void)testIsEmergencyNumberWithFormatting_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util isEmergencyNumber:@"9-1-1" forRegion:@"US"]); + XCTAssertTrue([util isEmergencyNumber:@"*911" forRegion:@"US"]); + XCTAssertTrue([util isEmergencyNumber:@"1-1-2" forRegion:@"US"]); + XCTAssertTrue([util isEmergencyNumber:@"*112" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"9-9-9" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"*999" forRegion:@"US"]); +} + +- (void)testIsEmergencyNumberWithPlusSign_US { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertFalse([util isEmergencyNumber:@"+911" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"\uFF0B911" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@" +911" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"+112" forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"+999" forRegion:@"US"]); +} + +- (void)testIsEmergencyNumber_BR { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"911" forRegion:@"BR"]); + XCTAssertTrue([util connectsToEmergencyNumberFromString:@"190" forRegion:@"BR"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"999" forRegion:@"BR"]); +} + +- (void)testIsEmergencyNumberLongNumber_BR { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Brazilian emergency numbers don't work when additional digits are appended. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"9111" forRegion:@"BR"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"1900" forRegion:@"BR"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"9996" forRegion:@"BR"]); +} + +- (void)testIsEmergencyNumber_AO { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Angola doesn't have any metadata for emergency numbers. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"911" forRegion:@"AO"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"222123456" forRegion:@"AO"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"923123456" forRegion:@"AO"]); +} + +- (void)testIsEmergencyNumber_ZW { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Zimbabwe doesn't have any metadata. + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"911" forRegion:@"ZW"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"01312345" forRegion:@"ZW"]); + XCTAssertFalse([util connectsToEmergencyNumberFromString:@"0711234567" forRegion:@"ZW"]); +} + +- (void)testEmergencyNumberForSharedCountryCallingCode { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // Test the emergency number 112, which is valid in both Australia and the Christmas Islands. + NBPhoneNumber *auEmergencyNumber = [util parse:@"112" defaultRegion:@"AU" error:nil]; + XCTAssertTrue([util isEmergencyNumber:@"112" forRegion:@"AU"]); + XCTAssertTrue([util isValidShortNumber:auEmergencyNumber forRegion:@"AU"]); + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:auEmergencyNumber forRegion:@"AU"]); + + XCTAssertTrue([util isEmergencyNumber:@"112" forRegion:@"CX"]); + XCTAssertTrue([util isValidShortNumber:auEmergencyNumber forRegion:@"CX"]); + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:auEmergencyNumber forRegion:@"CX"]); + + NBPhoneNumber *sharedEmergencyNumber = [[NBPhoneNumber alloc] init]; + sharedEmergencyNumber.countryCode = @61; + sharedEmergencyNumber.nationalNumber = @112; + XCTAssertTrue([util isValidShortNumber:sharedEmergencyNumber]); + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:sharedEmergencyNumber]); +} + +- (void)testOverlappingNANPANumber { + // 211 is an emergency number in Barbados, while it is a toll-free information line in Canada + // and the USA. + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + NBPhoneNumber *bb211 = [util parse:@"211" defaultRegion:@"BB" error:nil]; + NBPhoneNumber *us211 = [util parse:@"211" defaultRegion:@"US" error:nil]; + NBPhoneNumber *ca211 = [util parse:@"211" defaultRegion:@"CA" error:nil]; + + XCTAssertTrue([util isEmergencyNumber:@"211" forRegion:@"BB"]); + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:bb211 forRegion:@"BB"]); + XCTAssertFalse([util isEmergencyNumber:@"211" forRegion:@"US"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:us211 forRegion:@"US"]); + XCTAssertFalse([util isEmergencyNumber:@"211" forRegion:@"CA"]); + XCTAssertEqual(NBEShortNumberCostTollFree, + [util expectedCostOfPhoneNumber:ca211 forRegion:@"CA"]); +} + +- (void)testCountryCallingCodeIsNotIgnored { + NBPhoneNumberUtil *util = [[NBPhoneNumberUtil alloc] init]; + + // +46 is the country calling code for Sweden (SE), and 40404 is a valid short number in the US. + NBPhoneNumber *seNumber = [util parse:@"+4640404" defaultRegion:@"SE" error:nil]; + XCTAssertFalse([util isPossibleShortNumber:seNumber forRegion:@"US"]); + XCTAssertFalse([util isValidShortNumber:seNumber forRegion:@"US"]); + XCTAssertEqual(NBEShortNumberCostUnknown, + [util expectedCostOfPhoneNumber:seNumber forRegion:@"US"]); +} + +@end + +#endif // SHORT_NUMBER_SUPPORT diff --git a/libPhoneNumberTests/generatedJSON/ShortNumberMetadata.json b/libPhoneNumberTests/generatedJSON/ShortNumberMetadata.json new file mode 100644 index 0000000..7757d90 --- /dev/null +++ b/libPhoneNumberTests/generatedJSON/ShortNumberMetadata.json @@ -0,0 +1 @@ +{"countryCodeToRegionCodeMap":{"0":["AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PS","PR","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SX","SY","SZ","TC","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]},"countryToMetadata":{"AC":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"AD":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[0268]",null,null,null,"112"],null,[null,null,"11[0268]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"AE":[null,[null,null,"[149]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|99[789]",null,null,null,"112",null,null,[3]],null,[null,null,"112|445[16]|99[789]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"445[16]",null,null,null,"4451",null,null,[4]]],"AF":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:02|19)",null,null,null,"119",null,null,[3]],null,[null,null,"1(?:02|19)|40404",null,null,null,"119"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"AG":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"911"],null,[null,null,"176|9(?:11|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"AI":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"AL":[null,[null,null,"[15]\\d{2,5}",null,null,null,null,null,null,[3,5,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|2[789])",null,null,null,"129",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|1(?:06|11|23)))|2[5-9])|5\\d{4}",null,null,null,"129"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"5\\d{4}",null,null,null,"51234",null,null,[5]]],"AM":[null,[null,null,"[148]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[123]",null,null,null,"102",null,null,[3]],null,[null,null,"1\\d{2}|40404|8[1-7]\\d{2}",null,null,null,"8711"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"AO":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[235]",null,null,null,"113"],null,[null,null,"11[235]",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"AR":[null,[null,null,"[01389]\\d{1,4}",null,null,null,null,null,null,[2,3,4,5]],null,null,[null,null,"[09]\\d{2}|1(?:[02-9]\\d?|1[0-24-9]?)",null,null,null,"111",null,null,[2,3]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[017]|911",null,null,null,"101",null,null,[3]],null,[null,null,"000|1(?:0[0-35-7]|1[02-5]|2[15]|9)|3372|89338|911",null,null,null,"121"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"89338|911",null,null,null,"89338",null,null,[3,5]],[null,null,"3372|89338",null,null,null,"3372",null,null,[4,5]]],"AS":[null,[null,null,"[49]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911",null,null,[3]],null,[null,null,"40404|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"AT":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:00[06]|1(?:17|23))",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:[12]2|33|44)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:00[06]|1(?:17|23)))|22|33|44)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"AU":[null,[null,null,"[027]\\d{2}|1\\d{2,7}",null,null,null,null,null,null,[3,4,5,6,7,8]],null,null,[null,null,"1(?:258885|555)|733",null,null,null,"733",null,null,[3,4,7]],[null,null,"1(?:2(?:34|456)|9\\d{4})",null,null,null,"191123",null,null,[4,5,6]],null,null,null,"AU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"000|1(?:06|12)",null,null,null,"112",null,null,[3]],null,[null,null,"000|1(?:06|1(?:00|2|9[46])|2(?:[23]\\d|4\\d{2,3}|5\\d{3,4}|8(?:2|[013-9]\\d))|555|9[13-5]\\d{3})|225|7(?:33|67)",null,null,null,"112"],[null,null,"1(?:1\\d{2}|24733)|225|767",null,null,null,"225",null,null,[3,4,6]],[null,null,"1(?:258885|555)",null,null,null,"1555",null,null,[4,7]],[null,null,"19\\d{4,6}",null,null,null,"191123",null,null,[6,7,8]]],"AW":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"100|911",null,null,null,"911"],null,[null,null,"1(?:00|76)|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"AX":[null,[null,null,"1\\d{2}|75[12]\\d{2}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AX",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112",null,null,[3]],null,[null,null,"112|75[12]\\d{2}",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"AZ":[null,[null,null,"[148]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"AZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[123]|12)",null,null,null,"101",null,null,[3]],null,[null,null,"1(?:0[123]|12)|4040|8800",null,null,null,"101"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4040|8800",null,null,null,"4040",null,null,[4]],[null,null,"4040|8800",null,null,null,"4040",null,null,[4]]],"BA":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"12[2-4]",null,null,null,"122",null,null,[3]],null,[null,null,"1(?:1(?:6(?:00[06]|1(?:1[17]|23))|8\\d{1,2})|2(?:0[0-7]|[2-5]|6[0-26]|[78]\\d{1,2})|[3-5]\\d{2}|7\\d{3})",null,null,null,"122"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BB":[null,[null,null,"[2-689]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BB",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"[2359]11",null,null,null,"211"],null,[null,null,"[2-689]11",null,null,null,"211"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BD":[null,[null,null,"[19]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[0-2]|999",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:0(?:[0-39]|5(?:0\\d|[1-4])|6\\d{2}|7[0-4]|8[0-29])|1[6-9]|2(?:2[0-5]|[34])|3(?:1\\d?|3\\d|6[3-6])|4(?:0\\d|1\\d{2})|5[2-9])|9(?:594|99)",null,null,null,"103"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"9594",null,null,null,"9594",null,null,[4]],[null,null,"9594",null,null,null,"9594",null,null,[4]]],"BE":[null,[null,null,"1\\d{2,5}|[2-9]\\d{3}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,"1(?:0[25-8]|1(?:0|6\\d{3})|7(?:12|77)|813)|8\\d{3}",null,null,null,"116000"],[null,null,"1(?:2(?:12|34)|3(?:07|13)|414|\\d04)|[2-79]\\d{3}",null,null,null,"7212",null,null,[4]],null,null,null,"BE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[01]|12)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0[0-8]|1(?:[027]|6(?:000|117))|2(?:0[47]|12|3[0-24]|99)|3(?:0[47]|13|99)|4(?:0[47]|14|50|99)|7(?:00|1[27-9]|33|65|7[17]|89)|81[39])|[2-9]\\d{3}",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"[2-9]\\d{3}",null,null,null,"2787",null,null,[4]]],"BF":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[78]",null,null,null,"17"],null,[null,null,"1[78]",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BG":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:000|111)",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|50|6[06])",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|111))|50|6[06])",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BH":[null,[null,null,"[0189]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,"(?:0[167]|81)\\d{3}",null,null,null,"07123",null,null,[5]],[null,null,"9[148]\\d{3}",null,null,null,"94123",null,null,[5]],null,null,null,"BH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"[19]99",null,null,null,"999",null,null,[3]],null,[null,null,"0[167]\\d{3}|1(?:[02]\\d|12|4[01]|51|8[18]|9[169])|8[158]\\d{3}|9(?:[148]\\d{3}|9[02489])",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"0[67]\\d{3}|88000|98555",null,null,null,"88000",null,null,[5]],[null,null,"88000|98555",null,null,null,"88000",null,null,[5]]],"BI":[null,[null,null,"[16-9]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,"611",null,null,null,"611",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[237]",null,null,null,"117",null,null,[3]],null,[null,null,"1(?:1\\d|5[2-9]|6[0-256])|611|7(?:10|77|979)|8[28]8|900",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"611|7(?:10|77)|888|900",null,null,null,"611",null,null,[3]],[null,null,"710|900",null,null,null,"900",null,null,[3]]],"BJ":[null,[null,null,"[17]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,"7[3-5]\\d{2}",null,null,null,"7312",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BJ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[78]",null,null,null,"117",null,null,[3]],null,[null,null,"1(?:1[78]|2[02-5]|60)|7[0-5]\\d{2}",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"12\\d",null,null,null,"122",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]]],"BL":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"18",null,null,null,"18"],null,[null,null,"18",null,null,null,"18"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BM":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"176|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"BN":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"99[135]",null,null,null,"991"],null,[null,null,"99[135]",null,null,null,"991"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BO":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[089]",null,null,null,"110",null,null,[3]],null,[null,null,"11[089]|40404",null,null,null,"110"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"BQ":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BQ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"112"],null,[null,null,"1(?:12|76)|911",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"BR":[null,[null,null,"[12469]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"1(?:00|[89]\\d)|4(?:57|828)",null,null,null,"181",null,null,[3,4]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|28|9[023])|911",null,null,null,"190",null,null,[3]],null,[null,null,"1(?:0(?:[02]|3(?:1[2-579]|2[13-9]|3[124-9]|4[1-3578]|5[1-468]|6[139]|8[149]|9[168])|5[0-35-9]|6(?:0|1[0-35-8]?|2[0145]|3[0137]?|4[37-9]?|5[0-35]|6[016]?|7[137]?|8[5-8]|9[1359]))|1[25-8]|2[35789]|3(?:[024568]|3[12])|4[12568]|5\\d|6[0-8]|8[015]|9[0-4789])|2(?:7(?:330|878)|85959?)|4(?:0404?|11[12]|57|828)|55555|6(?:0\\d{4}|10000)|911",null,null,null,"168"],[null,null,"102|27330",null,null,null,"27330",null,null,[3,5]],[null,null,"151|27878|4(?:0404?|11[12]|57)|55555",null,null,null,"27878",null,null,[3,4,5]],[null,null,"2(?:7(?:330|878)|85959?)|4(?:0404|828)|6(?:0\\d{4}|10000)",null,null,null,"27878",null,null,[4,5,6]]],"BS":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"91[19]",null,null,null,"911"],null,[null,null,"91[19]",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BT":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[023]",null,null,null,"113",null,null,[3]],null,[null,null,"11[0-6]|40404",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"BW":[null,[null,null,"[19]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"99[789]",null,null,null,"999",null,null,[3]],null,[null,null,"13123|99[789]",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"13123",null,null,null,"13123",null,null,[5]],[null,null,"13123",null,null,null,"13123",null,null,[5]]],"BY":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[123]|12)",null,null,null,"112"],null,[null,null,"1(?:0[1-79]|1[246]|35|5[1235]|6[89]|7[5-7]|8[58]|9[1-7])",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"BZ":[null,[null,null,"9\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"BZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:0|11)",null,null,null,"911"],null,[null,null,"9(?:0|11)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CA":[null,[null,null,"[124-9]\\d{2,5}|3(?:\\d{2,5}|\\d{7})",null,null,null,null,null,null,[3,5,6,8]],null,null,[null,null,"211",null,null,null,"211",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"911",null,null,[3]],null,[null,null,"1(?:12|\\d{4,5})|[25-9](?:11|\\d{4,5})|3(?:\\d{4,5}|0000\\d{3}|11)|411",null,null,null,"12345"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"[23567]11",null,null,null,"611",null,null,[3]],[null,null,"[125-9]\\d{4,5}|3(?:\\d{4,5}|0000\\d{3})",null,null,null,"30001",null,null,[5,6,8]]],"CC":[null,[null,null,"[01]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"000|112",null,null,null,"112"],null,[null,null,"000|112",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CD":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[348]|77|88)",null,null,null,"113",null,null,[3]],null,[null,null,"1(?:1[348]|23|77|88)|40404",null,null,null,"40404"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"CF":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[78]|220)",null,null,null,"1220"],null,[null,null,"1(?:1[478]|220)",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CG":[null,[null,null,"11\\d",null,null,null,null,null,null,[3]],null,null,[null,null,"111",null,null,null,"111"],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[78]",null,null,null,"117"],null,[null,null,"11[12678]",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CH":[null,[null,null,"[1-9]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"1(?:16\\d{3}|47)|5200",null,null,null,"116000",null,null,[3,4,6]],[null,null,"1(?:145|8\\d{2})|543|83111",null,null,null,"543",null,null,[3,4,5]],null,null,null,"CH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[278]|44)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0[78]\\d{2}|1(?:[278]|45|6(?:000|111))|4(?:[03457]|1[45])|6(?:00|[1-46])|8(?:02|1[189]|50|7|8[08]|99))|[2-9]\\d{2,4}",null,null,null,"147"],[null,null,"1(?:4(?:[035]|1\\d)|6\\d{1,2})",null,null,null,"1600",null,null,[3,4]],[null,null,"5(?:200|35)",null,null,null,"535",null,null,[3,4]],[null,null,"[2-9]\\d{2,4}",null,null,null,"600",null,null,[3,4,5]]],"CI":[null,[null,null,"[14]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[01]|[78]0)",null,null,null,"110",null,null,[3]],null,[null,null,"1(?:1[01]|[78]0)|4443",null,null,null,"110"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4443",null,null,null,"4443",null,null,[4]],[null,null,"4443",null,null,null,"4443",null,null,[4]]],"CK":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"99[689]",null,null,null,"998"],null,[null,null,"99[689]",null,null,null,"998"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CL":[null,[null,null,"[1-9]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,"1213|4342",null,null,null,"4342",null,null,[4]],[null,null,"1(?:060|211|3(?:13|[348]0|5[01])|417|560|818|9(?:19|80))|2(?:0122|22[47]|323|777|882)|3(?:0(?:51|99)|132|3(?:29|77|90)|665)|4(?:142|243|3656|4(?:02|15|77)|554)|5(?:004|4154|5(?:66|77)|995)|6(?:0700|131|222|3(?:00|66)|500|699)|7878|8(?:011|11[28]|482|889)|9(?:011|[12]00|330)",null,null,null,"2224",null,null,[4,5]],null,null,null,"CL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"13[123]|911",null,null,null,"133",null,null,[3]],null,[null,null,"1(?:06?0|21[13]|3(?:[02679]|13?|[348]0?|5[01]?)|4(?:0[02-6]|17|[379])|560|818|9(?:19|80))|2(?:0(?:01|122)|22[47]|323|777|882)|3(?:0(?:51|99)|132|3(?:29|37|77|90)|665)|4(?:142|243|3(?:42|656)|4(?:02|15|77)|554)|5(?:004|4154|5(?:66|77)|995)|6(?:0700|131|222|3(?:00|66)|500|699)|7878|8(?:011|11[28]|482|889)|9(?:011|1(?:1|00)|200|330)",null,null,null,"139"],[null,null,"2001|3337",null,null,null,"3337",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"(?:[137-9]|[2456]\\d?)\\d{3}",null,null,null,"5577",null,null,[4,5]]],"CM":[null,[null,null,"[18]\\d{1,3}",null,null,null,null,null,null,[2,3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1?1[37]",null,null,null,"113",null,null,[2,3]],null,[null,null,"1?1[37]|8711",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"8711",null,null,null,"8711",null,null,[4]],[null,null,"8711",null,null,null,"8711",null,null,[4]]],"CN":[null,[null,null,"[19]\\d{2,5}",null,null,null,null,null,null,[3,5,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[09]|20)",null,null,null,"119",null,null,[3]],null,[null,null,"1(?:00\\d{2}|1[09]|20)|95\\d{3,4}",null,null,null,"119"],[null,null,"100\\d{2}|95\\d{3,4}",null,null,null,"95566",null,null,[5,6]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CO":[null,[null,null,"[148]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[29]|23|32|56)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:06|1[2569]|2[357]|3[27]|4[467]|5[36]|6[45]|95)|40404|85432",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404|85432",null,null,null,"40404",null,null,[5]],[null,null,"40404|85432",null,null,null,"40404",null,null,[5]]],"CR":[null,[null,null,"[1359]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"911",null,null,[3]],null,[null,null,"1(?:0(?:00|15|2[2-4679])|1(?:1[0-35-9]|2|37|[46]6|7[57]|8[79]|9[0-379])|2(?:00|[12]2|34|55)|3(?:21|33)|4(?:0[06]|1[4-6])|5(?:15|5[15])|693|7(?:00|1[789]|2[02]|[67]7)|975)|3855|5(?:0(?:30|49)|510)|911",null,null,null,"1022"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"3855|5(?:0(?:30|49)|510)",null,null,null,"3855",null,null,[4]]],"CU":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[456]",null,null,null,"106",null,null,[3]],null,[null,null,"1(?:0[456]|1(?:6111|8)|40)",null,null,null,"140"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CV":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CV",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"13[012]",null,null,null,"132"],null,[null,null,"13[012]",null,null,null,"132"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CW":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"112"],null,[null,null,"1(?:12|76)|911",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"CX":[null,[null,null,"[01]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CX",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"000|112",null,null,null,"112"],null,[null,null,"000|112",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CY":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:000|111)",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|99)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|111))|99)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"CZ":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116(?:00[06]|111|123)",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"CZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|5[0568])",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6\\d{3}|8\\d)|2\\d{2,3}|3\\d{3,4}|4\\d{3}|5[0568]|99)",null,null,null,"116123"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"DE":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"DE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[02]",null,null,null,"112",null,null,[3]],null,[null,null,"11(?:[025]|6(?:00[06]|1(?:1[17]|23)))",null,null,null,"115"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"DJ":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"DJ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[78]",null,null,null,"17"],null,[null,null,"1[78]",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"DK":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,"116(?:00[06]|111)",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"DK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[24]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[2-48]|6(?:00[06]|111))|8(?:01|1[0238]|28|30|5[13]|81))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"DM":[null,[null,null,"[39]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"DM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"333|9(?:11|99)",null,null,null,"999"],null,[null,null,"333|9(?:11|99)",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"DO":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"DO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"112"],null,[null,null,"112|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"DZ":[null,[null,null,"[17]\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"DZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[47]",null,null,null,"17",null,null,[2]],null,[null,null,"1[47]|730",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"730",null,null,null,"730",null,null,[3]],[null,null,"730",null,null,null,"730",null,null,[3]]],"EC":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"EC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[12]|12)|911",null,null,null,"911"],null,[null,null,"1(?:0[12]|12)|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"EE":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"1(?:1(?:[02]|6(?:000|111))|2(?:0(?:16|5)|28|55[47])|3(?:014|24|3(?:21|5)|660)|492|5(?:1[03]|410|501|977)|6(?:112|333|644)|7(?:012|127|89)|8(?:10|8[57])|9(?:0(?:[134]|90)|14))",null,null,null,"116000"],[null,null,"1(?:18(?:[12458]|00)|2(?:0(?:[02-46-8]|1[0-36])|1(?:[0-4]|6[06])|2(?:[0-4]|5[25])|[367]|4(?:0[04]|[12]|4[24]|54)55[12457])|3(?:0(?:[02]|1[13578]|3[356])|1[1347]|2[02-5]|3(?:[01347]|2[023]|88)|4(?:[35]|4[34])|5(?:3[134]|5[035])|666)|4(?:2(?:00|4)|4(?:0[01358]|1[024]|50|7)|900)|5(?:0[0-35]|1(?:[1267]|5[0-7]|82)|2(?:[014-6]|22)|330|4(?:[35]|44)|5(?:00|[1-69])|9(?:[159]|[38]0|77))|6(?:1(?:00|1[19]|[356-9])|2(?:2[26]|[68])|3(?:22|36|6[36])|5|6(?:[0-359]|6[0-26])|7(?:00|55|7|8[89])|9(?:00|1|69))|7(?:0(?:[023]|1[0578])|1(?:00|2[034]|[4-9])|2(?:[07]|20|44)|7(?:[0-57]|9[79])|8(?:0[08]|2|8[0178])|9(?:00|97))|8(?:1[127]|8[1268]|9[269])|9(?:0(?:[02]|69|9[0269])|1[123689]|21))",null,null,null,"1182",null,null,[3,4,5]],null,null,null,"EE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[02]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[02-579]|6(?:000|111)|8(?:[09]\\d|[1-8]))|2(?:[0-245]\\d{1,2}|[36-9])|3(?:[0-6]\\d{1,2}|[7-9])|4(?:[1-489]\\d{1,2}|[05-7])|5(?:[0-59]\\d{1,2}|[6-8])|6(?:[05]|[1-46-9]\\d{1,2})|7(?:[0-27-9]\\d{1,2}|[3-6])|8(?:[02-7]|[189]\\d{1,2})|9(?:[0-2]\\d{1,2}|[3-9]))",null,null,null,"115"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:18[1258]2(?:0(?:1[036]|[46])|166|21|4(?:0[04]|1|5[47])|[67])|3(?:0(?:1[13-578]|2|3[56])|1[15]|2[045]|3(?:[13]|2[13])|43|5(?:00|3[34]|53))|44(?:0[0135]|14|50|7)|5(?:05|1(?:[12]|5[1246]|8[12])|2(?:[01]|22)|3(?:00|3[03])|4(?:15|5)|500|9(?:5|77|80))|6(?:1[35-8]|226|3(?:22|3[36]|66)|644|7(?:00|7|89)|9(?:00|69))|7(?:01[258]|1(?:00|[15])|2(?:44|7)|8(?:00|87|9))|8(?:1[128]|8[56]|9(?:[26]|77))|90(?:2|69|92))",null,null,null,"13500",null,null,[4,5]]],"EG":[null,[null,null,"[13]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"EG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:2[23]|80)",null,null,null,"122",null,null,[3]],null,[null,null,"1(?:2[23]|[69]\\d{3}|80)|34400",null,null,null,"122"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"34400",null,null,null,"34400",null,null,[5]],[null,null,"34400",null,null,null,"34400",null,null,[5]]],"EH":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"EH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:[59]|77)",null,null,null,"15"],null,[null,null,"1(?:[59]|77)",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ER":[null,[null,null,"[12]\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ER",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[2-46]|2(?:4422|7799))|2(?:0(?:1(?:606|917)|2(?:099|914)))",null,null,null,"113"],null,[null,null,"1(?:1[2-6]|2(?:4422|7799))|2(?:0(?:1(?:606|917)|2(?:099|914)))",null,null,null,"114"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ES":[null,[null,null,"[0-379]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"0(?:16|6[57]|88)|1(?:006|16\\d{3}|[3-7]\\d{2})|20\\d{4}",null,null,null,"116111",null,null,[3,4,6]],[null,null,"1(?:18\\d{2}|2\\d{1,4})|2(?:2\\d{1,4}|[3-9]\\d{3,4})|9(?:0(?:5[124578]|7)|\\d{4,5})|[37]\\d{4,5}",null,null,null,"23456"],null,null,null,"ES",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"08[58]|112",null,null,null,"112",null,null,[3]],null,[null,null,"0(?:1[0-26]|6[0-257]|8[058]|9[12])|1(?:0[03-57]\\d{1,3}|1(?:2|6(?:000|111)|8\\d{2})|2\\d{1,4}|3(?:[34]|\\d{2})|7(?:7|\\d{2})|[4-689]\\d{2})|2(?:[01]\\d{4}|2\\d{1,4}|[357]\\d{3}|80\\d{2})|3[357]\\d{3}|79[57]\\d{3}|9(?:0(?:5[124578]|7)|9[57]\\d{3})",null,null,null,"010"],[null,null,"0(?:[16][0-2]|80|9[12])|21\\d{4}",null,null,null,"211234",null,null,[3,6]],[null,null,"1(?:2\\d{1,4}|3[34]|77)|22\\d{1,4}",null,null,null,"123"],[null,null,"[2379]\\d{4,5}",null,null,null,"23456",null,null,[5,6]]],"ET":[null,[null,null,"9\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ET",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11?|[23]|9[17])",null,null,null,"991"],null,[null,null,"9(?:11?|[23]|9[17])",null,null,null,"991"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"FI":[null,[null,null,"1\\d{2,5}|75[12]\\d{2}",null,null,null,null,null,null,[3,5,6]],null,null,[null,null,"116111",null,null,null,"116111",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"FI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112",null,null,[3]],null,[null,null,"11(?:2|6111)|75[12]\\d{2}",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"FJ":[null,[null,null,"[0-579]\\d{1,4}",null,null,null,null,null,null,[2,3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"FJ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"91[17]",null,null,null,"911",null,null,[3]],null,[null,null,"0(?:1[34]|8[1-4])|1(?:0[1-3]|[25]9)|2[289]|30|4(?:0404|4)|54|75|91[137]",null,null,null,"22"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"FK":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"FK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"1\\d{2}|999",null,null,null,"123"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"FM":[null,[null,null,"3\\d{5}|9\\d{2}",null,null,null,null,null,null,[3,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"FM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"320221|911",null,null,null,"911"],null,[null,null,"320221|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"FO":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"FO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[24]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1[248]|4[124]\\d|71\\d|8[7-9]\\d)",null,null,null,"114"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"FR":[null,[null,null,"1\\d{1,5}|[267]\\d{2,4}|3\\d{3,4}|[458]\\d{4}",null,null,null,null,null,null,[2,3,4,5,6]],null,null,[null,null,"1(?:0(?:07|13)|1(?:[0459]|6\\d{3}|871[03])|9[167])|224|3(?:[01]\\d{2}|3700)|740",null,null,null,"3010",null,null,[3,4,5,6]],[null,null,"118(?:[0-68]\\d{2}|7(?:0\\d|1[1-9]|[2-9]\\d))|36665|[4-8]\\d{4}",null,null,null,"42000",null,null,[5,6]],null,null,null,"FR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:[578]|12)",null,null,null,"112",null,null,[2,3]],null,[null,null,"1(?:0\\d{2}|1(?:[02459]|6(?:000|111)|8\\d{3})|9[167]|[578])|2(?:0(?:000|20)|24)|3\\d{3,4}|6(?:1[14]|34|\\d{4})|7(?:0[06]|22|40|\\d{4})|[458]\\d{4}",null,null,null,"1010"],[null,null,"10(?:14|2[23]|34|6[14]|99)|2020|3(?:646|9[07]0)|6(?:1[14]|34)|70[06]",null,null,null,"1023",null,null,[3,4]],[null,null,"118777|2(?:0(?:000|20)|24)|6(?:1[14]|34)|7\\d{2}",null,null,null,"118777",null,null,[3,4,5,6]],[null,null,"(?:114|[3-8]\\d{4})",null,null,null,"33700",null,null,[3,5]]],"GA":[null,[null,null,"1\\d{1,3}",null,null,null,null,null,null,[2,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:730|8|3\\d{2})",null,null,null,"1730"],null,[null,null,"1(?:730|8|3\\d{2})",null,null,null,"1730"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GB":[null,[null,null,"[1-467-9]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"1(?:16\\d{3}|7[56]0|8000)|2(?:202|48)|4444",null,null,null,"116000"],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GB",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|999",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0[01]|1(?:[12]|6(?:000|1(?:11|23))|8\\d{3})|2(?:[123]|50)|33|4(?:1|7\\d)|5(?:\\d|71)|7(?:0\\d|[56]0)|800\\d|9[15])|2(?:02(?:02)?|1300|2(?:02|11|2)|3(?:02|336|45)|4(?:25|8))|3[13]3|4(?:0[02]|35[01]|44[45]|5\\d)|6(?:50|\\d{4})|7(?:0\\d{3}|8(?:9|\\d{3})|9\\d{3})|8\\d{4}|9(?:01|99)",null,null,null,"150"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:250|571|7[56]0)|2(?:02(?:02)?|1300|3336|48)|4444|901",null,null,null,"1571",null,null,[3,4,5]],[null,null,"1250|2(?:0202|1300)|7\\d{4}|8[01]\\d{3}",null,null,null,"20202",null,null,[4,5]]],"GD":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"GE":[null,[null,null,"[041]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0(?:11|22|33)|1(?:1[123]|22)",null,null,null,"112",null,null,[3]],null,[null,null,"0(?:11|22|33)|1(?:1[123]|22)|40404",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"GF":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"15"],null,[null,null,"1[578]",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GG":[null,[null,null,"[19]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|999",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:0[01]|1(?:[12]|[68]\\d{3})|23|4(?:1|7\\d)|55|800\\d|95)|999",null,null,null,"155"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GH":[null,[null,null,"[14589]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"19[123]|999",null,null,null,"999",null,null,[3]],null,[null,null,"19[123]|40404|(?:54|83)00|999",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404|(?:54|83)00",null,null,null,"5400",null,null,[4,5]],[null,null,"40404|(?:54|83)00",null,null,null,"5400",null,null,[4,5]]],"GI":[null,[null,null,"[158]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"1(?:00|16\\d{3}|23|4(?:1|7\\d)|5[15]|9[2-4])|555|80\\d{2}",null,null,null,"100",null,null,[3,4,6]],[null,null,"8[1-69]\\d{2}",null,null,null,"8112",null,null,[4]],null,null,null,"GI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|9[09])",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:00|1(?:2|6(?:00[06]|1(?:1[17]|23))|8\\d{2})|23|4(?:1|7[014])|5[015]|9[02349])|555|8(?:0(?:0|\\d{2})|[1-35-79]\\d{2}|4(?:[0-2]|\\d{2})|8[1-589])",null,null,null,"116000"],[null,null,"150|87\\d{2}",null,null,null,"150",null,null,[3,4]],[null,null,"1(?:18\\d{2}|23|51|9[2-4])|555|8(?:00|88)",null,null,null,"123",null,null,[3,5]],[null,null,null,null,null,null,null,null,null,[-1]]],"GL":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112"],null,[null,null,"112",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GM":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1?1[678]",null,null,null,"117"],null,[null,null,"1?1[678]",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GN":[null,[null,null,"4\\d{4}",null,null,null,null,null,null,[5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,null,null,null,null,null,null,null,[-1]],null,[null,null,"40404",null,null,null,"40404"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404"],[null,null,"40404",null,null,null,"40404"]],"GP":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GP",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"18"],null,[null,null,"1[578]",null,null,null,"18"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GR":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:00|12|66|99)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:00|1(?:2|6(?:000|1(?:11|23)))|66|99)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GT":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:10|2[03])",null,null,null,"110",null,null,[3]],null,[null,null,"1(?:10|2\\d|[57]\\d{2})|40404",null,null,null,"123"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"GU":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GW":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[378]",null,null,null,"113"],null,[null,null,"11[378]",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"GY":[null,[null,null,"[019]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"GY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"91[123]",null,null,null,"911",null,null,[3]],null,[null,null,"0(?:02|171|444|7(?:[67]7|9)|801|9(?:0[78]|[2-47]))|1(?:443|5[568])|91[123]",null,null,null,"0801"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1443",null,null,null,"1443",null,null,[4]],[null,null,"1443",null,null,null,"1443",null,null,[4]]],"HK":[null,[null,null,"[19]\\d{2,6}",null,null,null,null,null,null,[3,4,5,6,7]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"HK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|99[29]",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:0(?:[0136]\\d{0,4}|2[14]\\d{0,3}|8[138]|9)|12|2(?:[0-3]\\d{0,4}|58\\d{0,3}|8[13]\\d{0,3})|7(?:[135-9]\\d{0,4}|21[89]\\d{0,2}|421\\d{0,2})|8(?:0(?:[13]\\d|60\\d{2}|8)|1(?:0\\d|[2-8])|2(?:182|3|8[128])|3\\d{4}|4(?:1[1-5]|[23]1|6[12])|50[138]|6(?:000|1(?:[13]1|86)|8)|7(?:13|2[1-389]|8[0235-9]|93)\\d{2}|8\\d))|99[29]",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:0(?:8\\d|9)|850\\d)",null,null,null,"1088",null,null,[3,4,5]],[null,null,null,null,null,null,null,null,null,[-1]]],"HN":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"HN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"199",null,null,null,"199",null,null,[3]],null,[null,null,"199|40404",null,null,null,"199"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"HR":[null,[null,null,"[19]\\d{1,5}",null,null,null,null,null,null,[2,3,4,5,6]],null,null,[null,null,"1(?:16\\d{3}|3977)",null,null,null,"116000",null,null,[5,6]],[null,null,"118\\d{2}",null,null,null,"11812",null,null,[5]],null,null,null,"HR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|9[2-4])|9[34]",null,null,null,"112",null,null,[2,3]],null,[null,null,"1(?:1(?:2|6(?:00[06]|1(?:1[17]|23))|8\\d{2})|3977|9(?:[2-5]|87))|9[34]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"13977",null,null,null,"13977",null,null,[5]],[null,null,"13977",null,null,null,"13977",null,null,[5]]],"HT":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"HT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[48]",null,null,null,"118",null,null,[3]],null,[null,null,"11[48]|40404",null,null,null,"114"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"HU":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:000|1(?:11|23))",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"HU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[457]|12)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0[457]|1(?:2|6(?:000|1(?:11|23))))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ID":[null,[null,null,"[178]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ID",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[02389]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1[02389]|40\\d{2})|71400|89887",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"71400|89887",null,null,null,"71400",null,null,[5]],[null,null,"71400",null,null,null,"71400",null,null,[5]]],"IE":[null,[null,null,"[159]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,"5[37]\\d{3}",null,null,null,"53012",null,null,[5]],null,null,null,"IE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|999",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:00[06]|1(?:1[17]|23))|8\\d{2})|9\\d{2})|5[0137]\\d{3}|999",null,null,null,"112"],[null,null,"51\\d{3}",null,null,null,"51012",null,null,[5]],[null,null,"51210",null,null,null,"51210",null,null,[5]],[null,null,"118\\d{2}|5(?:[037]\\d{3}|1210)",null,null,null,"51210",null,null,[5]]],"IL":[null,[null,null,"1\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"IL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[012]|12)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0(?:[012]|400)|1(?:[013-9]\\d|2)|[2-9]\\d{2})",null,null,null,"1455"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"10400",null,null,null,"10400",null,null,[5]],[null,null,"10400",null,null,null,"10400",null,null,[5]]],"IM":[null,[null,null,"[189]\\d{2,5}",null,null,null,null,null,null,[3,5,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"IM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999",null,null,[3]],null,[null,null,"1\\d{2}(?:\\d{3})?|8(?:6444|9887)|999",null,null,null,"150"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"8(?:6444|9887)",null,null,null,"86444",null,null,[5]]],"IN":[null,[null,null,"[125]\\d{2,7}",null,null,null,null,null,null,[3,4,5,6,7,8]],null,null,[null,null,"1\\d{2,5}",null,null,null,"105010",null,null,[3,4,5,6]],[null,null,"11[67][0-2]\\d{3}|56161561",null,null,null,"1160530",null,null,[7,8]],null,null,null,"IN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[0128]|12|298)|2611",null,null,null,"108",null,null,[3,4]],null,[null,null,"1(?:0(?:[01248]|5(?:010|6|902)|7(?:[07]|80)|9[0157])|1(?:[289]|[67][0-2]\\d{3})|2(?:1|98)|39|4[01]|55[23]\\d{2}|7000|9(?:0[019]|47|50|6[1347]|[89]))|2611|5(?:14(?:2[5-9]|[34]\\d)|3000|6161(?:17[89]|561)|757555)",null,null,null,"108"],[null,null,"5(?:14(?:2[5-9]|[34]\\d)|757555)",null,null,null,"5757555",null,null,[5,7]],[null,null,"1(?:1(?:[67][0-2]\\d{3}|[89])|21|4[01]|55330|7\\d{3}|9(?:[89]|09))|5(?:3000|6161(?:17[89]|561))",null,null,null,"53000"],[null,null,"1(?:39|90[019])|5(?:14(?:2[5-9]|[34]\\d)|6161(?:17[89]|561)|757555)",null,null,null,"51431",null,null,[3,4,5,7,8]]],"IQ":[null,[null,null,"[1479]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"IQ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[04]|15|22)",null,null,null,"122",null,null,[3]],null,[null,null,"1(?:0[04]|15|22)|4432|71117|9988",null,null,null,"4432"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4432|71117|9988",null,null,null,"4432",null,null,[4,5]],[null,null,"4432|71117|9988",null,null,null,"4432",null,null,[4,5]]],"IR":[null,[null,null,"[0-29]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"1[129]\\d",null,null,null,"123",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"IR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[025]|25)|911",null,null,null,"112",null,null,[3]],null,[null,null,"096(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])|1(?:1[0-68]|2[0-59]|3[346-8]|4(?:[0147]|[289]0)|5(?:0[14]|1[02479]|2[0-3]|39|[49]0|65)|6(?:[16]6|[27]|90)|8(?:03|1[18]|22|3[37]|4[28]|88|99)|9[0-579])|20(?:00|1(?:[038]|1[079]|26|9[69])|2[01]|90)|9(?:11|9(?:90|0009))",null,null,null,"112"],[null,null,"(?:096|1[58])\\d{2}",null,null,null,"09612",null,null,[4,5]],[null,null,"1[58]\\d{2}|99(?:90|0009)",null,null,null,"9990",null,null,[4,6]],[null,null,"990009",null,null,null,"990009",null,null,[6]]],"IS":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,"1717",null,null,null,"1717",null,null,[4]],[null,null,"1848",null,null,null,"1848",null,null,[4]],null,null,null,"IS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[28]|6(?:1(?:23|16)))|4(?:00|1[145]|4[0146])|55|7(?:00|17|7[07-9])|8(?:0[08]|1[016-9]|20|48|8[018])|900)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1441",null,null,null,"1441",null,null,[4]],[null,null,"1(?:415|848|900)",null,null,null,"1415",null,null,[4]]],"IT":[null,[null,null,"[14]\\d{2,6}",null,null,null,null,null,null,[3,4,5,6,7]],null,null,[null,null,"1(?:16\\d{3}|87)",null,null,null,"187",null,null,[3,6]],[null,null,"(?:12|4(?:[478]\\d{1,3}|55))\\d{2}",null,null,null,"1254",null,null,[4,5,6,7]],null,null,null,"IT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[2358]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0\\d{2,3}|1(?:[2-5789]|6(?:000|111))|2\\d{2}|3[39]|4(?:82|9\\d{1,3})|5(?:00|1[58]|2[25]|3[03]|44|[59])|60|8[67]|9(?:[01]|2(?:[01]\\d{2}|[2-9])|4\\d|696))|4(?:2323|3(?:[01]|[45]\\d{2})\\d{2}|[478](?:[0-4]|[5-9]\\d{2})\\d{2}|5(?:045|5\\d{2}))",null,null,null,"114"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4[3-578]\\d{3,5}",null,null,null,"43000",null,null,[5,6,7]]],"JE":[null,[null,null,"[129]\\d{2,5}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"JE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|999",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:00|1(?:2|8\\d{3})|23|4(?:[14]|28|7\\d)|5\\d|7(?:0[12]|[128]|35?)|808|9[135])|23[234]|999",null,null,null,"150"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"JM":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"JM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[029]|911",null,null,null,"112"],null,[null,null,"1(?:1[029]|76)|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"176",null,null,null,"176"],[null,null,"176",null,null,null,"176"]],"JO":[null,[null,null,"[19]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"JO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|9[127])|911",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:09|1[0-2]|9[0-24-79])|9(?:0903|11|8788)",null,null,null,"111"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"9(?:0903|8788)",null,null,null,"90903",null,null,[5]],[null,null,"9(?:0903|8788)",null,null,null,"90903",null,null,[5]]],"JP":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"JP",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[09]",null,null,null,"110"],null,[null,null,"11[09]",null,null,null,"110"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"KE":[null,[null,null,"[1-9]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,"1(?:1(?:6|9\\d)|5(?:01|2[127]|6(?:29|6[67])))",null,null,null,"1501",null,null,[4,5]],[null,null,"909\\d{2}",null,null,null,"90912",null,null,[5]],null,null,null,"KE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|114|999",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:0(?:[07-9]|1[0-25]|400)|1(?:[02456]|9[0-579])|2[123]|3[01]|4[14]|5(?:[01][01]|2[0-24-79]|33|4[05]|5[59]|6(?:00|29|6[67]))|6[035]\\d{2}|[78]\\d|9(?:[02-9]\\d{2}|19))|(?:2[0-79]|3[0-29]|4[0-4])\\d{3}|5(?:[0-7]\\d|99)\\d{2}|(?:6[2357]|7[0-29])\\d{3}|8(?:[0-9]\\d{3}|988)|9(?:09\\d{2}|99)",null,null,null,"116"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:0400|3[01]|4[14]|5(?:1[01]|2[25])|6[35]\\d{2})|(?:2[0-79]|3[0-29]|4[0-4])\\d{3}|5(?:[0-7]\\d|99)\\d{2}|(?:6[2357]|7[0-29])\\d{3}|8(?:988|[0-9]\\d{3})|909\\d{2}",null,null,null,"90912"],[null,null,"1(?:0400|4[14]|5(?:01|55|6(?:29|6[67]))|6[035]\\d{2})|40404|8988|909\\d{2}",null,null,null,"8988"]],"KG":[null,[null,null,"[14]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[123]",null,null,null,"101",null,null,[3]],null,[null,null,"10[123]|4040",null,null,null,"101"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4040",null,null,null,"4040",null,null,[4]],[null,null,"4040",null,null,null,"4040",null,null,[4]]],"KH":[null,[null,null,"[146]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[789]|666",null,null,null,"117",null,null,[3]],null,[null,null,"11[789]|40404|666",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"KI":[null,[null,null,"[179]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"19[2-5]|99[2349]",null,null,null,"192",null,null,[3]],null,[null,null,"1(?:0(?:[0-8]|5[01259])|88|9[2-5])|777|99[2349]",null,null,null,"100"],[null,null,"103",null,null,null,"103",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"KM":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[78]",null,null,null,"17"],null,[null,null,"1[78]",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"KN":[null,[null,null,"[39]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"333|9(?:11|99)",null,null,null,"999"],null,[null,null,"333|9(?:11|99)",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"KP":[null,[null,null,"[18]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KP",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|19)|819",null,null,null,"112"],null,[null,null,"1(?:12|19)|819",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"KR":[null,[null,null,"1\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,"1(?:1[78]|28|330|82)",null,null,null,"118",null,null,[3,4]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[29]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0(?:[01]|114)|1(?:[0247-9]|114)|2[01389]|3(?:2|3[039]|45|66|88|9[18])|[679]114|8(?:114|2))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:0(?:[01]|114)|1(?:114|4)|[6-9]114)",null,null,null,"100",null,null,[3,5]],[null,null,null,null,null,null,null,null,null,[-1]]],"KW":[null,[null,null,"[18]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112",null,null,[3]],null,[null,null,"1[0-7]\\d|89887",null,null,null,"177"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"89887",null,null,null,"89887",null,null,[5]],[null,null,null,null,null,null,null,null,null,[-1]]],"KY":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"KZ":[null,[null,null,"[134]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"KZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[123]|12)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:0[1-4]|12)|30400|4040",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"30400|4040",null,null,null,"30400",null,null,[4,5]],[null,null,"30400|4040",null,null,null,"30400",null,null,[4,5]]],"LA":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"19[015]",null,null,null,"190"],null,[null,null,"19[015]",null,null,null,"190"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LB":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LB",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|40|75)|999",null,null,null,"112"],null,[null,null,"1(?:12|40|75)|999",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LC":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"911"],null,[null,null,"9(?:11|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LI":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[278]|44)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[278]|45)|4[3-57]|50|75|81[18])",null,null,null,"1145"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LK":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[02689]",null,null,null,"119"],null,[null,null,"11[024-9]",null,null,null,"119"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LR":[null,[null,null,"[3489]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"355|911",null,null,null,"911",null,null,[3]],null,[null,null,"355|4040|8(?:400|933)|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4040|8(?:400|933)",null,null,null,"8400",null,null,[4]],[null,null,"4040|8(?:400|933)",null,null,null,"8400",null,null,[4]]],"LS":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[257]",null,null,null,"112"],null,[null,null,"11[257]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LT":[null,[null,null,"[01]\\d{1,5}",null,null,null,null,null,null,[2,3,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0(?:11?|22?|33?)|1(?:0[123]|12)",null,null,null,"112",null,null,[2,3]],null,[null,null,"0(?:11?|22?|33?)|1(?:0[123]|1(?:2|6(?:000|1(?:11|23))))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LU":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[23]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[23]|6(?:000|111))|2\\d{3})",null,null,null,"12123"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"LV":[null,[null,null,"0\\d|1\\d{2,6}|8\\d{3,4}",null,null,null,null,null,null,[2,3,4,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,"1180|8(?:2\\d{3}|[89]\\d{2})",null,null,null,"1180",null,null,[4,5]],null,null,null,"LV",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0[123]|11[023]",null,null,null,"112",null,null,[2,3]],null,[null,null,"0[1-4]|1(?:1(?:[02-4]|6(?:000|111)|8[0189])|55|655|77)|821[57]4",null,null,null,"112"],[null,null,"1181",null,null,null,"1181",null,null,[4]],[null,null,"16\\d{2}",null,null,null,"1655",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]]],"LY":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"LY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"19[013]",null,null,null,"193"],null,[null,null,"19[013]",null,null,null,"193"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MA":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:[59]|77)",null,null,null,"15"],null,[null,null,"1(?:[59]|77)",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MC":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|[578])",null,null,null,"112"],null,[null,null,"1(?:12|41|[578])",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MD":[null,[null,null,"[19]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|90[1-3]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|1(?:11|23))|8\\d{1,2}|99)|4\\d{3}|6[0-389]\\d|9(?:0[04-9]|[1-4]\\d))|90[1-3]",null,null,null,"116000"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ME":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ME",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|2[234])",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:[035]\\d{2}|1(?:[013-57-9]\\d|2|6\\d{3})|2\\d{1,2}|4\\d{2,3}|9\\d{3})",null,null,null,"1011"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MF":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"18"],null,[null,null,"1[578]",null,null,null,"18"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MG":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11?[78]",null,null,null,"117"],null,[null,null,"11?[78]",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MH":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MK":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|9[234])",null,null,null,"112"],null,[null,null,"1(?:12|9[234])",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ML":[null,[null,null,"[13678]\\d{1,4}",null,null,null,null,null,null,[2,3,4,5]],null,null,[null,null,"35200|67(?:00|77)|74(?:02|44)|8000[12]",null,null,null,"35200",null,null,[4,5]],[null,null,"122[13]|3(?:52(?:11|2[02]|3[04-6]|99)|7574)|8002[12]",null,null,null,"35211",null,null,[4,5]],null,null,null,"ML",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"17",null,null,[2]],null,[null,null,"1(?:1(?:2|[013-9]\\d)|2(?:1[02-469]|2[13])|[578])|3(?:5(?:0(?:35|57)|2\\d{2})|[67]\\d{3})|67(?:0[09]|59|77|8[89]|99)|74(?:0[02]|44|55)|800[012][12]",null,null,null,"1210"],[null,null,"37(?:433|575)|7400|8001[12]",null,null,null,"7400",null,null,[4,5]],[null,null,"3(?:5035|[67]\\d{3})|800[012][12]",null,null,null,"35035",null,null,[5]],[null,null,"3(?:6\\d{3}|7(?:4(?:0[24-9]|[1-9]\\d)|5\\d{2}))|7400",null,null,null,"37575",null,null,[4,5]]],"MM":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"199",null,null,null,"199"],null,[null,null,"199",null,null,null,"199"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MN":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[0-3]",null,null,null,"102"],null,[null,null,"10[0-3]",null,null,null,"102"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MO":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"999",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MP":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MP",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MQ":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MQ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|[578])",null,null,null,"15"],null,[null,null,"1(?:12|[578])",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MR":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[78]",null,null,null,"17"],null,[null,null,"1[78]",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MS":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"911"],null,[null,null,"9(?:11|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MT":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:000|1(?:11|23))",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112",null,null,[3]],null,[null,null,"11(?:2|6(?:000|1(?:11|23)))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MU":[null,[null,null,"[189]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[45]|99[59]",null,null,null,"999",null,null,[3]],null,[null,null,"1\\d{2,4}|8\\d{3}|99\\d",null,null,null,"995"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MV":[null,[null,null,"[14]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MV",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:02|1[89])",null,null,null,"102",null,null,[3]],null,[null,null,"1(?:[0-37-9]\\d|[45](?:1|\\d{2})|6\\d{2})|4040",null,null,null,"123"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1[45]1",null,null,null,"141",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]]],"MW":[null,[null,null,"[189]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"199|99[789]",null,null,null,"997",null,null,[3]],null,[null,null,"199|80400|99[789]",null,null,null,"997"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"80400",null,null,null,"80400",null,null,[5]],[null,null,"80400",null,null,null,"80400",null,null,[5]]],"MX":[null,[null,null,"[0579]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"53053|7766",null,null,null,"7766",null,null,[4,5]],null,null,null,"MX",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0(?:6[0568]|80)|911",null,null,null,"066",null,null,[3]],null,[null,null,"0(?:[249]0|3[01]|5[015]|6[01568]|7[0-578]|8[089])|53053|7766|911",null,null,null,"030"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"MY":[null,[null,null,"[139]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|999",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:0(?:[01348]|[569]\\d)|1(?:[02]|1[128]|311)|2(?:0[125]|[13-6]|2\\d{0,2})|3(?:09\\d|[1-39]\\d{1,2}|6|[5-7]\\d{0,2})|5(?:[12]\\d|454|5\\d{1,2}|77|888|999?)|7(?:[136-9]\\d|[45]\\d{1,2})|8(?:18?|2|8[18])|9(?:[03]\\d|[124]\\d?|68|71|9[0679]))|3[23679]\\d{3}|99[1-469]",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"3[23679]\\d{3}",null,null,null,"36000",null,null,[5]]],"MZ":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"MZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[79]|9[78])",null,null,null,"119",null,null,[3]],null,[null,null,"1(?:[02-5]\\d{2}|1[79]|9[78])",null,null,null,"1011"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NA":[null,[null,null,"[19]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10111",null,null,null,"10111",null,null,[5]],null,[null,null,"1(?:0111|\\d{3})|9(?:3111|\\d{2})",null,null,null,"93111"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NC":[null,[null,null,"1\\d{1,3}|3\\d{3}|5\\d{2}",null,null,null,null,null,null,[2,3,4]],null,null,[null,null,"10(?:00|1[23]|3[0-2]|88)|3631|577",null,null,null,"1000",null,null,[3,4]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[5-8]",null,null,null,"15",null,null,[2]],null,[null,null,"1(?:0(?:0[06]|1[02-46]|20|3[0125]|42|5[058]|77|88)|[5-8])|3631|5[6-8]\\d",null,null,null,"1000"],[null,null,"5(?:67|88)",null,null,null,"567",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NE":[null,[null,null,"[1-358]\\d{1,2}|723141",null,null,null,null,null,null,[2,3,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]|723141",null,null,null,"17",null,null,[2,6]],null,[null,null,"1(?:0[01]|1[12]|2[034]|3[013]|40|55?|60|7|8)|222|333|555|723141|888",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:0[01]|1[12]|2[034]|3[013]|40|55|60)|222|333|555|888",null,null,null,"100",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]]],"NF":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|55|77)",null,null,null,"911"],null,[null,null,"9(?:11|55|77)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NG":[null,[null,null,"[14]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"199",null,null,null,"199",null,null,[3]],null,[null,null,"199|40700",null,null,null,"199"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40700",null,null,null,"40700",null,null,[5]],[null,null,"40700",null,null,null,"40700",null,null,[5]]],"NI":[null,[null,null,"[12467]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,"7373",null,null,null,"7373",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[58]|2[08])",null,null,null,"118",null,null,[3]],null,[null,null,"1(?:1[58]|2(?:[158]|00?)|900)|2100|4878|6100|7(?:010|100|373)",null,null,null,"118"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NL":[null,[null,null,"[1349]\\d{2,5}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,"116(?:00[06]|1(?:11|23))",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:00[06]|1(?:11|23)))|2(?:0[0-4]|3[34]|44)|3[03-9]\\d|400|8(?:[02-9]\\d|1[0-79]))|[34]000|911",null,null,null,"1833"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"120[0-4]",null,null,null,"1202",null,null,[4]],[null,null,"[34]000",null,null,null,"4000",null,null,[4]]],"NO":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,"1161(?:1[17]|23)",null,null,null,"116117",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[023]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[0239]|61(?:1[17]|23))|2[048]|4(?:12|[59])|7[57]|90)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NP":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NP",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[0-3]|12)",null,null,null,"112"],null,[null,null,"1(?:0[0-3]|12)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NR":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[0-2]",null,null,null,"110"],null,[null,null,"1(?:1[0-2]|23|92)",null,null,null,"110"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NU":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"999",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"NZ":[null,[null,null,"[14]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"NZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"111",null,null,null,"111",null,null,[3]],null,[null,null,"111|4098",null,null,null,"111"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"4098",null,null,null,"4098",null,null,[4]]],"OM":[null,[null,null,"9\\d{3}",null,null,null,null,null,null,[4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"OM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9999",null,null,null,"9999"],null,[null,null,"9999",null,null,null,"9999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PA":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"10[2-4]|911",null,null,null,"102"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PE":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:05|1[67])",null,null,null,"105"],null,[null,null,"1(?:05|1[67])",null,null,null,"105"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PF":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"15"],null,[null,null,"1[578]",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PG":[null,[null,null,"0\\d{2}|1\\d{2,6}",null,null,null,null,null,null,[3,4,5,6,7]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"000|11[01]",null,null,null,"000",null,null,[3]],null,[null,null,"000|1(?:1[01]|5\\d{2}|6\\d{2,5})",null,null,null,"000"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"16\\d{2,5}",null,null,null,"1612",null,null,[4,5,6,7]]],"PH":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[27]|911",null,null,null,"117"],null,[null,null,"11[27]|911",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PK":[null,[null,null,"1\\d{1,3}",null,null,null,null,null,null,[2,3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1(?:22?|5)|[56])",null,null,null,"112"],null,[null,null,"1(?:1(?:22?|5)|[56])",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PL":[null,[null,null,"1\\d{2}(?:\\d{2,3})?|9\\d{2}",null,null,null,null,null,null,[3,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|99[789]",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|1(?:11|23))|8(?:000|91[23]))|9\\d{3})|9(?:8[4-7]|9[1-9])",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PM":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"17"],null,[null,null,"1[578]",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PS":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,"166",null,null,null,"166"],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"10[0-2]",null,null,null,"100"],null,[null,null,"1(?:0[0-2]|44|66|99)",null,null,null,"199"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PR":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PT":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:000|111)",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[25]",null,null,null,"112",null,null,[3]],null,[null,null,"11(?:[2578]|6(?:000|111))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PW":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"PY":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"PY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"128|911",null,null,null,"911"],null,[null,null,"1[1-4]\\d|911",null,null,null,"123"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"QA":[null,[null,null,"[129]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"QA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999",null,null,[3]],null,[null,null,"(?:1|20|9[27]\\d)\\d{2}|999",null,null,null,"2012"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"RE":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"RE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|[578])",null,null,null,"15"],null,[null,null,"1(?:12|[578])",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"RO":[null,[null,null,"[18]\\d{2,5}",null,null,null,null,null,null,[3,4,6]],null,null,[null,null,"116(?:000|111)",null,null,null,"116000",null,null,[6]],[null,null,"(?:1(?:18(?:300|932)|[24]\\d{2})|8[48]\\d{2})",null,null,null,"8844",null,null,[4,6]],null,null,null,"RO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|111)|8(?:300|932))|[24]\\d{2}|9(?:21|3[02]|5[178]))|8[48]\\d{2}",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"(?:1[24]|8[48])\\d{2}",null,null,null,"8844",null,null,[4]]],"RS":[null,[null,null,"[19]\\d{1,5}",null,null,null,null,null,null,[2,3,4,5,6]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"RS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|9[234]",null,null,null,"112",null,null,[2,3]],null,[null,null,"1[189]\\d{1,4}|9[234]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"RU":[null,[null,null,"[01]\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"RU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0[1-3]|1(?:0[1-3]|12)",null,null,null,"112"],null,[null,null,"0[1-4]|1(?:0[1-4]|12)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"RW":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"RW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112"],null,[null,null,"112",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SA":[null,[null,null,"[19]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116111|937|998",null,null,null,"116111",null,null,[3,6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|9(?:11|9[79])",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:1(?:00|2|6111)|410|9(?:00|1[89]|9(?:099|22|91)))|9(?:0[24-79]|11|3[379]|40|66|8[5-9]|9[02-9])",null,null,null,"937"],[null,null,"1410",null,null,null,"1410",null,null,[4]],[null,null,"1(?:100|410)|90[24679]",null,null,null,"902",null,null,[3,4]],[null,null,null,null,null,null,null,null,null,[-1]]],"SB":[null,[null,null,"[127-9]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SB",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"1(?:[02]\\d|1[12]|[35][01]|[49][1-9]|6[2-9]|7[7-9]|8[0-8])|269|777|835|9(?:[01]1|22|33|55|77|88|99)",null,null,null,"100"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SC":[null,[null,null,"[19]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:0\\d|1[027]|2[0-8]|3[13]|4[0-2]|[59][15]|6[1-9]|7[124-6]|8[158])|9(?:6\\d{2}|99)",null,null,null,"100"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SD":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"999",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SE":[null,[null,null,"[1-37-9]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,"11811[89]|72\\d{3}",null,null,null,"118118",null,null,[5,6]],null,null,null,"SE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|90000",null,null,null,"112",null,null,[3,5]],null,[null,null,"11(?:[25]|313|4\\d{2}|6(?:00[06]|11[17]|123)|7[0-8]|8(?:1(?:[02-9]\\d|1[013-9])|[02-46-9]\\d{2}))|2(?:2[02358]|33|4[01]|50|6[1-4])|32[13]|7\\d{4}|8(?:22|88)|9(?:0(?:000|1(?:[02-9]\\d|1[013-9])|[2-4]\\d{2}|510)|12)",null,null,null,"11313"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"2(?:2[02358]|33|4[01]|50|6[1-4])|32[13]|8(?:22|88)|912",null,null,null,"222",null,null,[3]],[null,null,"7\\d{4}",null,null,null,"72123",null,null,[5]]],"SG":[null,[null,null,"[179]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"99[359]",null,null,null,"999",null,null,[3]],null,[null,null,"1(?:[0136]\\d{2}|[89](?:[1-9]\\d|0[1-9])|[57]\\d{2,3})|77222|99[02-9]",null,null,null,"1312"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"77222",null,null,null,"77222",null,null,[5]]],"SH":[null,[null,null,"[19]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"999",null,null,[3]],null,[null,null,"1\\d{2,3}|9(?:11|99)",null,null,null,"1234"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SI":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,6]],null,null,[null,null,"116(?:000|1(?:11|23))",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[23]",null,null,null,"112",null,null,[3]],null,[null,null,"11(?:[23]|6(?:000|1(?:11|23)))",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SJ":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SJ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[023]",null,null,null,"112"],null,[null,null,"11[023]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SK":[null,[null,null,"1\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"116\\d{3}",null,null,null,"116000",null,null,[6]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SK",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|5[058])",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:2|6(?:000|111)|8[0-8])|[24]\\d{3}|5[0589]|8\\d{3})",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SL":[null,[null,null,"[069]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"(?:01|99)9",null,null,null,"999",null,null,[3]],null,[null,null,"(?:01|99)9|60400",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"60400",null,null,null,"60400",null,null,[5]],[null,null,"60400",null,null,null,"60400",null,null,[5]]],"SM":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[358]",null,null,null,"113"],null,[null,null,"11[358]",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SN":[null,[null,null,"[12]\\d{1,5}",null,null,null,null,null,null,[2,3,4,5,6]],null,null,[null,null,"1515|2(?:00|1)\\d{3}",null,null,null,"200133",null,null,[4,5,6]],[null,null,"2(?:0[246]|[468])\\d{3}",null,null,null,"202222",null,null,[5,6]],null,null,null,"SN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[78]",null,null,null,"17",null,null,[2]],null,[null,null,"1(?:1[69]|2(?:\\d{2})?|[46]\\d{2}|51\\d|[78])|2(?:0[0-246]|[12468])\\d{3}",null,null,null,"17"],[null,null,"2(?:01|2)\\d{3}",null,null,null,"201202",null,null,[5,6]],[null,null,"1[46]\\d{2}",null,null,null,"1415",null,null,[4]],[null,null,"2[468]\\d{3}",null,null,null,"24123",null,null,[5]]],"SO":[null,[null,null,"[5789]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"555|888|999",null,null,null,"555"],null,[null,null,"555|777|888|999",null,null,null,"777"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SR":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"115",null,null,null,"115",null,null,[3]],null,[null,null,"1\\d{2,3}",null,null,null,"1234"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ST":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ST",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112"],null,[null,null,"112",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SV":[null,[null,null,"[49]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SV",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911",null,null,[3]],null,[null,null,"40404|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"40404",null,null,null,"40404",null,null,[5]],[null,null,"40404",null,null,null,"40404",null,null,[5]]],"SX":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SX",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"919",null,null,null,"919"],null,[null,null,"919",null,null,null,"919"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SY":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[023]",null,null,null,"112"],null,[null,null,"11[023]",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"SZ":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"SZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"999",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TC":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"911"],null,[null,null,"9(?:11|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TD":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TD",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[78]",null,null,null,"17"],null,[null,null,"1[78]",null,null,null,"17"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TG":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[78]|7[127])",null,null,null,"117",null,null,[3]],null,[null,null,"1(?:011|1[078]|7[127])",null,null,null,"117"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TH":[null,[null,null,"1\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,"1(?:1(?:00|2[03]|3[3479]|55|7[67]|9[0246])|5(?:55|78)|6(?:44|6[79]|88|9[16])|888)",null,null,null,"1669",null,null,[4]],[null,null,"1(?:113|2(?:22|3[89])|5(?:09|56))",null,null,null,"1509",null,null,[4]],null,null,null,"TH",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:669|9[19])",null,null,null,"191"],null,[null,null,"1(?:0[0-2]|1(?:0[03]|1[1-35]|2[0358]|3[03-79]|4[02-489]|5[04-9]|6[04-79]|7[03-9]|8[027-9]|9[02-79])|2(?:22|3[89])|3(?:18|2[23]|3[013]|5[56]|6[45]|73)|477|5(?:0\\d|4[0-37-9]|5[1-8]|6[01679]|7[12568]|8[0-24589]|9[013589])|6(?:0[0-29]|20|4[3-6]|6[1-9]|7[0257-9]|8[0158]|9[014-9])|7(?:19|7[27]|90)|888|9[19])",null,null,null,"191"],[null,null,"1(?:1(?:03|1[15]|2[58]|3[056]|4[02-49]|5[046-9]|6[04-79]|7[03-589]|8[02789]|9[579])|3(?:18|2[23]|3[013]|5[4-6])|5(?:0[0-8]|4[0-378]|5[1-478]|6[01679]|7[156]|8[0-24589]|9[013589])|6(?:0[0-29]|20|4[356]|6[1-68]|7[05789]|8[015]|9[0457-9])|7(?:19|7[27]))",null,null,null,"1149",null,null,[4]],[null,null,"114[89]",null,null,null,"1148",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]]],"TJ":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TJ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[1-3]|12)",null,null,null,"112"],null,[null,null,"1(?:0[1-3]|12)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TL":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TL",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[25]",null,null,null,"112"],null,[null,null,"1(?:0[02]|1[25]|2[0138]|72|9[07])",null,null,null,"102"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TM":[null,[null,null,"0\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0[1-3]",null,null,null,"03"],null,[null,null,"0[1-3]",null,null,null,"03"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TN":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"19[078]",null,null,null,"197"],null,[null,null,"19[078]",null,null,null,"197"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TO":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TO",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|22|33|99)",null,null,null,"911"],null,[null,null,"9(?:11|22|33|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TR":[null,[null,null,"[1-9]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,"1(?:44|58|83)",null,null,null,"183",null,null,[3]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TR",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:1[02]|55)",null,null,null,"112",null,null,[3]],null,[null,null,"1(?:1(?:[0239]|811)|2[16]|3(?:37?|[58]6|65)|4(?:[14]|71)|5(?:[3568]|07|78)|6(?:[02]6|[389]|99)|7[0-79]|8(?:\\d|63|95))|2(?:077|268|4(?:17|23)|5(?:7[26]|82)|6[14]4|8\\d{2}|9(?:30|89))|3(?:0(?:05|72)|353|4(?:06|30|64)|502|674|747|851|9(?:1[29]|60))|4(?:0(?:25|3[12]|[47]2)|3(?:3[13]|[89]1)|439|5(?:43|55)|717|832)|5(?:145|290|[4-6]\\d{2}|772|833|9(?:[06]1|92))|6(?:236|6(?:12|39|8[59])|769)|7890|8(?:688|7(?:28|65)|85[06])|9(?:159|290)",null,null,null,"112"],[null,null,"2850|5420",null,null,null,"5420",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"1(?:3(?:37|[58]6|65)|4(?:4|71)|5(?:07|78)|6(?:[02]6|99)|8(?:3|63|95))|2(?:077|268|4(?:17|23)|5(?:7[26]|82)|6[14]4|8\\d{2}|9(?:30|89))|3(?:0(?:05|72)|353|4(?:06|30|64)|502|674|747|851|9(?:1[29]|60))|4(?:0(?:25|3[12]|[47]2)|3(?:3[13]|[89]1)|439|5(?:43|55)|717|832)|5(?:145|290|[4-6]\\d{2}|772|833|9(?:[06]1|92))|6(?:236|6(?:12|39|8[59])|769)|7890|8(?:688|7(?:28|65)|85[06])|9(?:159|290)",null,null,null,"5420",null,null,[3,4]]],"TT":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"99[09]",null,null,null,"999"],null,[null,null,"99[09]",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TV":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TV",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"1\\d{2}|911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TW":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[029]",null,null,null,"110"],null,[null,null,"11[029]",null,null,null,"110"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"TZ":[null,[null,null,"[149]\\d{2,4}",null,null,null,null,null,null,[3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"TZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[12]|999",null,null,null,"111",null,null,[3]],null,[null,null,"11[12]|46400|999",null,null,null,"111"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"46400",null,null,null,"46400",null,null,[5]],[null,null,"46400",null,null,null,"46400",null,null,[5]]],"UA":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"UA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0[123]|12)",null,null,null,"112"],null,[null,null,"1(?:0[123]|12)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"UG":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"UG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"999",null,null,null,"999"],null,[null,null,"999",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"US":[null,[null,null,"[1-9]\\d{2,5}",null,null,null,null,null,null,[3,4,5,6]],null,null,[null,null,"611",null,null,null,"611",null,null,[3]],[null,null,"2(?:4280|5209|7(?:449|663))|3(?:2340|3786|5564|8(?:135|254))|4(?:1(?:366|463)|3355|6(?:157|327)|7553|8(?:221|277))|5(?:2944|4892|5928|9(?:187|342))|69388|7(?:2(?:078|087)|3(?:288|909)|6426)|8(?:6234|9616)|9(?:5297|6(?:040|835)|7(?:294|688)|9(?:689|796))",null,null,null,"24280",null,null,[5]],null,null,null,"US",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112|911",null,null,null,"911",null,null,[3]],null,[null,null,"1(?:1(?:2|5[1-47]|[68]\\d|7[0-57]|98))|[2-9](?:11|\\d{3,5})",null,null,null,"911"],[null,null,"2(?:3333|42242|56447|6688|75622)|3(?:1010|2665|7404)|40404|560560|6(?:0060|22639|5246|7622)|7(?:0701|3822|4666)|8(?:38255|4816|72265)|99099",null,null,null,"73822",null,null,[5,6]],[null,null,"[2-9]\\d{3}|33669|[2356]11",null,null,null,"33669",null,null,[3,4,5]],[null,null,"[2-9]\\d{4,5}",null,null,null,"20566",null,null,[5,6]]],"UY":[null,[null,null,"[19]\\d{2,3}",null,null,null,null,null,null,[3,4]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"UY",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"128|911",null,null,null,"911",null,null,[3]],null,[null,null,"1(?:0[4-9]|1[2368]|2[0-3568]|787)|911",null,null,null,"104"],[null,null,"1787",null,null,null,"1787",null,null,[4]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"UZ":[null,[null,null,"[04]\\d{1,4}",null,null,null,null,null,null,[2,3,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"UZ",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"0(?:0[123]|[123]|50)",null,null,null,"01",null,null,[2,3]],null,[null,null,"0(?:0[123]|[123]|50)|45400",null,null,null,"01"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"45400",null,null,null,"45400",null,null,[5]],[null,null,"45400",null,null,null,"45400",null,null,[5]]],"VA":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[2358]",null,null,null,"113"],null,[null,null,"11[2358]",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"VC":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VC",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"911"],null,[null,null,"9(?:11|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"VE":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|71)|911",null,null,null,"171"],null,[null,null,"1(?:12|71)|911",null,null,null,"171"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"VG":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"9(?:11|99)",null,null,null,"911"],null,[null,null,"9(?:11|99)",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"VI":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VI",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"911",null,null,null,"911"],null,[null,null,"911",null,null,null,"911"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"VN":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VN",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"11[345]",null,null,null,"113"],null,[null,null,"11[345]",null,null,null,"113"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"VU":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"VU",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"112",null,null,null,"112"],null,[null,null,"112",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"WF":[null,[null,null,"1\\d",null,null,null,null,null,null,[2]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"WF",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1[578]",null,null,null,"15"],null,[null,null,"1[578]",null,null,null,"15"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"WS":[null,[null,null,"9\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"WS",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"99[4-6]",null,null,null,"994"],null,[null,null,"99[4-6]",null,null,null,"994"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"YE":[null,[null,null,"1\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"YE",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"19[1459]",null,null,null,"191"],null,[null,null,"19[1459]",null,null,null,"191"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"YT":[null,[null,null,"1\\d{1,2}",null,null,null,null,null,null,[2,3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"YT",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:12|5)",null,null,null,"15"],null,[null,null,"1(?:12|5)",null,null,null,"112"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ZA":[null,[null,null,"[134]\\d{2,4}",null,null,null,null,null,null,[3,4,5]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,"41(?:348|851)",null,null,null,"41851",null,null,[5]],null,null,null,"ZA",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"1(?:0(?:1(?:11|77)|7)|12)",null,null,null,"10111",null,null,[3,5]],null,[null,null,"1(?:0(?:1(?:11|77)|20|7)|1[12]|77(?:3[237]|[45]7|6[279]|9[26]))|[34]\\d{4}",null,null,null,"10111"],[null,null,"3(?:7(?:064|567)|8126)|4(?:3(?:699|946)|7751)",null,null,null,"47751",null,null,[5]],[null,null,"1(?:07|11)",null,null,null,"111",null,null,[3]],[null,null,"[34]\\d{4}",null,null,null,"47751",null,null,[5]]],"ZM":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ZM",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"(?:112|99[139])",null,null,null,"999"],null,[null,null,"(?:112|99[139])",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]],"ZW":[null,[null,null,"[19]\\d{2}",null,null,null,null,null,null,[3]],null,null,[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],null,null,null,"ZW",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[null,null,"(?:11[24]|99[3-59])",null,null,null,"999"],null,[null,null,"(?:11[249]|99[3-59])",null,null,null,"999"],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]],[null,null,null,null,null,null,null,null,null,[-1]]]}} \ No newline at end of file