From 70e0ef3c6fdb50e40ed261ba3c8f974a29c6817a Mon Sep 17 00:00:00 2001 From: Kin grammar bot Date: Mon, 10 Apr 2023 16:03:00 +0000 Subject: [PATCH] Update grammar --- kin/grammar/PBXProj.interp | 272 +- kin/grammar/PBXProj.tokens | 512 +-- kin/grammar/PBXProjLexer.interp | 512 +-- kin/grammar/PBXProjLexer.py | 2146 ++++++------ kin/grammar/PBXProjLexer.tokens | 512 +-- kin/grammar/PBXProjListener.py | 18 + kin/grammar/PBXProjParser.py | 5613 +++++++++++++++++-------------- 7 files changed, 5197 insertions(+), 4388 deletions(-) diff --git a/kin/grammar/PBXProj.interp b/kin/grammar/PBXProj.interp index 33ba7b9..962ff0c 100644 --- a/kin/grammar/PBXProj.interp +++ b/kin/grammar/PBXProj.interp @@ -2,10 +2,22 @@ token literal names: null '{' '}' -'archiveVersion' '=' ';' +'(' +',' +')' +'archiveVersion' +'classes' +'-' +'.' +'isa' +null 'objectVersion' +'objects' +'rootObject' +'/' +'_' 'PBXAggregateTarget' 'PBXBuildFile' 'PBXContainerItemProxy' @@ -57,9 +69,6 @@ null 'buildActionMask' 'files' 'runOnlyForDeploymentPostprocessing' -'(' -',' -')' 'buildConfigurationList' 'buildPhases' 'buildRules' @@ -124,15 +133,6 @@ null 'currentVersion' 'versionGroupType' 'CLASSPREFIX' -'classes' -'isa' -'objects' -'rootObject' -null -'.' -'-' -'_' -'/' null null null @@ -152,132 +152,132 @@ 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 -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 -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 -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 -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null +ARCHIVE_VERSION CLASSES +DASH +DOT ISA +NUMBER +OBJECT_VERSION OBJECTS ROOT_OBJECT -NUMBER -DOT -DASH -UNDERSCORE SLASH +UNDERSCORE +PBX_AGGREGATE_TARGET +PBX_BUILD_FILE +PBX_CONTAINER_ITEM_PROXY +PBX_COPY_FILES_BUILD_PHASE +PBX_FILE_REFERENCE +PBX_FRAMEWORKS_BUILD_PHASE +PBX_GROUP +PBX_HEADERS_BUILD_PHASE +PBX_NATIVE_TARGET +PBX_LEGACY_TARGET +PBX_PROJECT +PBX_REFERENCE_PROXY +PBX_RESOURCES_BUILD_PHASE +PBX_SHELL_SCRIPT_BUILD_PHASE +PBX_SOURCES_BUILD_PHASE +PBX_TARGET_DEPENDENCY +PBX_VARIANT_GROUP +XC_BUILD_CONFIGURATION +XC_CONFIGURATION_LIST +XC_REMOTE_SWIFT_PACKAGE_REFERENCE +XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY +XC_VERSION_GROUP +FILE_REF +PRODUCT_REF +CONTAINER_PORTAL +PROXY_TYPE +REMOTE_GLOBAL_ID_STRING +REMOTE_INFO +FILE_ENCODING +COMMENTS +EXPLICIT_FILE_TYPE +LAST_KNOWN_FILE_TYPE +INCLUDE_IN_INDEX +INDENT_WIDTH +TAB_WIDTH +USES_TABS +WRAPS_LINES +PLATFORM_FILTER +PLATFORM_FILTERS +CHILDREN +PRODUCT_INSTALL_PATH +REPOSITORY_URL +REQUIREMENT +PACKAGE +PACKAGE_PRODUCT_DEPENDENCIES +NAME +PATH +SOURCE_TREE +BUILD_ACTION_MASK +FILES +RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING +BUILD_CONFIGURATION_LIST +BUILD_PHASES +BUILD_RULES +BUILD_ARGUMENTS_STRING +BUILD_TOOL_PATH +BUILD_WORKING_DIRECTORY +PASS_BUILD_SETTINGS_IN_ENVIRONMENT +DEPENDENCIES +PRODUCT_NAME +PRODUCT_REFERENCE +PRODUCT_TYPE +LINE_ENDING +XC_LANGUAGE_SPECIFICATION_IDENTIFIER +PLIST_STRUCTURE_DEFINITION_IDENTIFIER +ATTRIBUTES +LAST_SWIFT_MIGRATION +DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE +LAST_SWIFT_UPDATE_CHECK +BUILD_INDEPENDENT_TARGETS_IN_PARALLEL +LAST_TESTING_UPGRADE_CHECK +LAST_UPGRADE_CHECK +ORGANIZATION_NAME +TARGET_ATTRIBUTES +CREATED_ON_TOOLS_VERSION +TEST_TARGET_ID +DEVELOPMENT_TEAM +DEVELOPMENT_TEAM_NAME +PROVISIONING_STYLE +COMPATIBILITY_VERSION +DEVELOPMENT_REGION +HAS_SCANNED_FOR_ENCODINGS +KNOWN_REGIONS +MAIN_GROUP +PRODUCT_REF_GROUP +PACKAGE_REFERENCES +PRODUCT_DIR_PATH +PROJECT_REFERENCES +PROJECT_ROOT +TARGETS +INPUT_FILE_LIST_PATHS +INPUT_PATHS +OUTPUT_FILE_LIST_PATHS +OUTPUT_PATHS +SHELL_PATH +SHELL_SCRIPT +SHOW_ENV_VARS_IN_LOG +TARGET +TARGET_PROXY +FILE_TYPE +REMOTE_REF +BASE_CONFIGURATION_REFERENCE +BUILD_SETTINGS +DST_PATH +DST_SUBFOLDER_SPEC +PRODUCT_GROUP +PROJECT_REF +BUILD_CONFIGURATIONS +DEFAULT_CONFIGURATION_IS_VISIBLE +DEFAULT_CONFIGURATION_NAME +SETTINGS +SYSTEM_CAPABILITIES +CURRENT_VERSION +VERSION_GROUP_TYPE +CLASSPREFIX REFERENCE QUOTED_STRING NON_QUOTED_STRING @@ -461,7 +461,9 @@ current_version version_group_type class_prefix any_string +str_number_variable +any_token atn: -[4, 1, 142, 1690, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 375, 8, 5, 1, 5, 3, 5, 378, 8, 5, 1, 5, 3, 5, 381, 8, 5, 1, 5, 3, 5, 384, 8, 5, 1, 5, 1, 5, 3, 5, 388, 8, 5, 1, 5, 1, 5, 3, 5, 392, 8, 5, 1, 5, 3, 5, 395, 8, 5, 1, 5, 3, 5, 398, 8, 5, 1, 5, 1, 5, 3, 5, 402, 8, 5, 1, 5, 3, 5, 405, 8, 5, 1, 5, 3, 5, 408, 8, 5, 1, 5, 3, 5, 411, 8, 5, 1, 5, 3, 5, 414, 8, 5, 1, 5, 3, 5, 417, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 422, 8, 5, 1, 5, 3, 5, 425, 8, 5, 1, 5, 3, 5, 428, 8, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 4, 7, 439, 8, 7, 11, 7, 12, 7, 440, 1, 8, 4, 8, 444, 8, 8, 11, 8, 12, 8, 445, 1, 9, 4, 9, 449, 8, 9, 11, 9, 12, 9, 450, 1, 10, 4, 10, 454, 8, 10, 11, 10, 12, 10, 455, 1, 11, 4, 11, 459, 8, 11, 11, 11, 12, 11, 460, 1, 12, 4, 12, 464, 8, 12, 11, 12, 12, 12, 465, 1, 13, 4, 13, 469, 8, 13, 11, 13, 12, 13, 470, 1, 14, 4, 14, 474, 8, 14, 11, 14, 12, 14, 475, 1, 15, 4, 15, 479, 8, 15, 11, 15, 12, 15, 480, 1, 16, 4, 16, 484, 8, 16, 11, 16, 12, 16, 485, 1, 17, 4, 17, 489, 8, 17, 11, 17, 12, 17, 490, 1, 18, 4, 18, 494, 8, 18, 11, 18, 12, 18, 495, 1, 19, 4, 19, 499, 8, 19, 11, 19, 12, 19, 500, 1, 20, 4, 20, 504, 8, 20, 11, 20, 12, 20, 505, 1, 21, 4, 21, 509, 8, 21, 11, 21, 12, 21, 510, 1, 22, 4, 22, 514, 8, 22, 11, 22, 12, 22, 515, 1, 23, 4, 23, 519, 8, 23, 11, 23, 12, 23, 520, 1, 24, 4, 24, 524, 8, 24, 11, 24, 12, 24, 525, 1, 25, 4, 25, 529, 8, 25, 11, 25, 12, 25, 530, 1, 26, 4, 26, 534, 8, 26, 11, 26, 12, 26, 535, 1, 27, 4, 27, 539, 8, 27, 11, 27, 12, 27, 540, 1, 28, 4, 28, 544, 8, 28, 11, 28, 12, 28, 545, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 557, 8, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 567, 8, 30, 1, 30, 3, 30, 570, 8, 30, 1, 30, 3, 30, 573, 8, 30, 1, 30, 3, 30, 576, 8, 30, 1, 30, 3, 30, 579, 8, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 604, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 615, 8, 33, 1, 33, 3, 33, 618, 8, 33, 1, 33, 3, 33, 621, 8, 33, 1, 33, 3, 33, 624, 8, 33, 1, 33, 3, 33, 627, 8, 33, 1, 33, 3, 33, 630, 8, 33, 1, 33, 3, 33, 633, 8, 33, 1, 33, 3, 33, 636, 8, 33, 1, 33, 3, 33, 639, 8, 33, 1, 33, 3, 33, 642, 8, 33, 1, 33, 3, 33, 645, 8, 33, 1, 33, 3, 33, 648, 8, 33, 1, 33, 3, 33, 651, 8, 33, 1, 33, 3, 33, 654, 8, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 675, 8, 35, 1, 35, 3, 35, 678, 8, 35, 1, 35, 3, 35, 681, 8, 35, 1, 35, 3, 35, 684, 8, 35, 1, 35, 1, 35, 3, 35, 688, 8, 35, 1, 35, 3, 35, 691, 8, 35, 1, 35, 3, 35, 694, 8, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 719, 8, 37, 1, 37, 3, 37, 722, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 751, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 756, 8, 39, 1, 39, 1, 39, 3, 39, 760, 8, 39, 1, 39, 1, 39, 3, 39, 764, 8, 39, 1, 39, 3, 39, 767, 8, 39, 1, 39, 1, 39, 3, 39, 771, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 784, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 809, 8, 42, 1, 42, 3, 42, 812, 8, 42, 1, 42, 3, 42, 815, 8, 42, 1, 42, 3, 42, 818, 8, 42, 1, 42, 3, 42, 821, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 827, 8, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 847, 8, 44, 1, 44, 3, 44, 850, 8, 44, 1, 44, 3, 44, 853, 8, 44, 1, 44, 3, 44, 856, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 869, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 880, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 894, 8, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 913, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 926, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 5, 93, 1148, 8, 93, 10, 93, 12, 93, 1151, 9, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 5, 102, 1199, 8, 102, 10, 102, 12, 102, 1202, 9, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1210, 8, 103, 10, 103, 12, 103, 1213, 9, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 5, 104, 1220, 8, 104, 10, 104, 12, 104, 1223, 9, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1301, 8, 119, 1, 119, 3, 119, 1304, 8, 119, 1, 119, 3, 119, 1307, 8, 119, 1, 119, 3, 119, 1310, 8, 119, 1, 119, 3, 119, 1313, 8, 119, 1, 119, 3, 119, 1316, 8, 119, 1, 119, 3, 119, 1319, 8, 119, 1, 119, 3, 119, 1322, 8, 119, 1, 119, 3, 119, 1325, 8, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 5, 127, 1369, 8, 127, 10, 127, 12, 127, 1372, 9, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1381, 8, 128, 1, 128, 3, 128, 1384, 8, 128, 1, 128, 3, 128, 1387, 8, 128, 1, 128, 3, 128, 1390, 8, 128, 1, 128, 3, 128, 1393, 8, 128, 1, 128, 3, 128, 1396, 8, 128, 1, 128, 3, 128, 1399, 8, 128, 1, 128, 3, 128, 1402, 8, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1484, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1560, 8, 157, 10, 157, 12, 157, 1563, 9, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 5, 160, 1579, 8, 160, 10, 160, 12, 160, 1582, 9, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 5, 162, 1624, 8, 162, 10, 162, 12, 162, 1627, 9, 162, 1, 162, 1, 162, 1, 162, 3, 162, 1632, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 5, 166, 1653, 8, 166, 10, 166, 12, 166, 1656, 9, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 5, 167, 1665, 8, 167, 10, 167, 12, 167, 1668, 9, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 0, 0, 172, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 0, 3, 1, 0, 135, 136, 2, 0, 129, 129, 136, 136, 2, 0, 129, 129, 135, 137, 1640, 0, 344, 1, 0, 0, 0, 2, 346, 1, 0, 0, 0, 4, 354, 1, 0, 0, 0, 6, 359, 1, 0, 0, 0, 8, 365, 1, 0, 0, 0, 10, 370, 1, 0, 0, 0, 12, 432, 1, 0, 0, 0, 14, 438, 1, 0, 0, 0, 16, 443, 1, 0, 0, 0, 18, 448, 1, 0, 0, 0, 20, 453, 1, 0, 0, 0, 22, 458, 1, 0, 0, 0, 24, 463, 1, 0, 0, 0, 26, 468, 1, 0, 0, 0, 28, 473, 1, 0, 0, 0, 30, 478, 1, 0, 0, 0, 32, 483, 1, 0, 0, 0, 34, 488, 1, 0, 0, 0, 36, 493, 1, 0, 0, 0, 38, 498, 1, 0, 0, 0, 40, 503, 1, 0, 0, 0, 42, 508, 1, 0, 0, 0, 44, 513, 1, 0, 0, 0, 46, 518, 1, 0, 0, 0, 48, 523, 1, 0, 0, 0, 50, 528, 1, 0, 0, 0, 52, 533, 1, 0, 0, 0, 54, 538, 1, 0, 0, 0, 56, 543, 1, 0, 0, 0, 58, 547, 1, 0, 0, 0, 60, 561, 1, 0, 0, 0, 62, 583, 1, 0, 0, 0, 64, 594, 1, 0, 0, 0, 66, 609, 1, 0, 0, 0, 68, 658, 1, 0, 0, 0, 70, 668, 1, 0, 0, 0, 72, 698, 1, 0, 0, 0, 74, 708, 1, 0, 0, 0, 76, 729, 1, 0, 0, 0, 78, 745, 1, 0, 0, 0, 80, 777, 1, 0, 0, 0, 82, 791, 1, 0, 0, 0, 84, 801, 1, 0, 0, 0, 86, 831, 1, 0, 0, 0, 88, 841, 1, 0, 0, 0, 90, 861, 1, 0, 0, 0, 92, 874, 1, 0, 0, 0, 94, 886, 1, 0, 0, 0, 96, 898, 1, 0, 0, 0, 98, 907, 1, 0, 0, 0, 100, 918, 1, 0, 0, 0, 102, 933, 1, 0, 0, 0, 104, 938, 1, 0, 0, 0, 106, 943, 1, 0, 0, 0, 108, 948, 1, 0, 0, 0, 110, 953, 1, 0, 0, 0, 112, 958, 1, 0, 0, 0, 114, 963, 1, 0, 0, 0, 116, 968, 1, 0, 0, 0, 118, 973, 1, 0, 0, 0, 120, 978, 1, 0, 0, 0, 122, 983, 1, 0, 0, 0, 124, 988, 1, 0, 0, 0, 126, 993, 1, 0, 0, 0, 128, 998, 1, 0, 0, 0, 130, 1003, 1, 0, 0, 0, 132, 1008, 1, 0, 0, 0, 134, 1013, 1, 0, 0, 0, 136, 1018, 1, 0, 0, 0, 138, 1023, 1, 0, 0, 0, 140, 1028, 1, 0, 0, 0, 142, 1033, 1, 0, 0, 0, 144, 1038, 1, 0, 0, 0, 146, 1043, 1, 0, 0, 0, 148, 1048, 1, 0, 0, 0, 150, 1053, 1, 0, 0, 0, 152, 1058, 1, 0, 0, 0, 154, 1063, 1, 0, 0, 0, 156, 1068, 1, 0, 0, 0, 158, 1073, 1, 0, 0, 0, 160, 1078, 1, 0, 0, 0, 162, 1083, 1, 0, 0, 0, 164, 1088, 1, 0, 0, 0, 166, 1093, 1, 0, 0, 0, 168, 1098, 1, 0, 0, 0, 170, 1103, 1, 0, 0, 0, 172, 1108, 1, 0, 0, 0, 174, 1113, 1, 0, 0, 0, 176, 1118, 1, 0, 0, 0, 178, 1123, 1, 0, 0, 0, 180, 1128, 1, 0, 0, 0, 182, 1133, 1, 0, 0, 0, 184, 1138, 1, 0, 0, 0, 186, 1143, 1, 0, 0, 0, 188, 1155, 1, 0, 0, 0, 190, 1160, 1, 0, 0, 0, 192, 1165, 1, 0, 0, 0, 194, 1170, 1, 0, 0, 0, 196, 1175, 1, 0, 0, 0, 198, 1180, 1, 0, 0, 0, 200, 1185, 1, 0, 0, 0, 202, 1190, 1, 0, 0, 0, 204, 1195, 1, 0, 0, 0, 206, 1205, 1, 0, 0, 0, 208, 1216, 1, 0, 0, 0, 210, 1226, 1, 0, 0, 0, 212, 1231, 1, 0, 0, 0, 214, 1236, 1, 0, 0, 0, 216, 1241, 1, 0, 0, 0, 218, 1246, 1, 0, 0, 0, 220, 1251, 1, 0, 0, 0, 222, 1256, 1, 0, 0, 0, 224, 1261, 1, 0, 0, 0, 226, 1266, 1, 0, 0, 0, 228, 1271, 1, 0, 0, 0, 230, 1276, 1, 0, 0, 0, 232, 1281, 1, 0, 0, 0, 234, 1286, 1, 0, 0, 0, 236, 1291, 1, 0, 0, 0, 238, 1296, 1, 0, 0, 0, 240, 1329, 1, 0, 0, 0, 242, 1334, 1, 0, 0, 0, 244, 1339, 1, 0, 0, 0, 246, 1344, 1, 0, 0, 0, 248, 1349, 1, 0, 0, 0, 250, 1354, 1, 0, 0, 0, 252, 1359, 1, 0, 0, 0, 254, 1364, 1, 0, 0, 0, 256, 1376, 1, 0, 0, 0, 258, 1406, 1, 0, 0, 0, 260, 1411, 1, 0, 0, 0, 262, 1416, 1, 0, 0, 0, 264, 1421, 1, 0, 0, 0, 266, 1426, 1, 0, 0, 0, 268, 1431, 1, 0, 0, 0, 270, 1436, 1, 0, 0, 0, 272, 1441, 1, 0, 0, 0, 274, 1446, 1, 0, 0, 0, 276, 1451, 1, 0, 0, 0, 278, 1456, 1, 0, 0, 0, 280, 1461, 1, 0, 0, 0, 282, 1466, 1, 0, 0, 0, 284, 1483, 1, 0, 0, 0, 286, 1485, 1, 0, 0, 0, 288, 1490, 1, 0, 0, 0, 290, 1495, 1, 0, 0, 0, 292, 1500, 1, 0, 0, 0, 294, 1505, 1, 0, 0, 0, 296, 1510, 1, 0, 0, 0, 298, 1515, 1, 0, 0, 0, 300, 1520, 1, 0, 0, 0, 302, 1525, 1, 0, 0, 0, 304, 1530, 1, 0, 0, 0, 306, 1535, 1, 0, 0, 0, 308, 1540, 1, 0, 0, 0, 310, 1545, 1, 0, 0, 0, 312, 1550, 1, 0, 0, 0, 314, 1555, 1, 0, 0, 0, 316, 1567, 1, 0, 0, 0, 318, 1572, 1, 0, 0, 0, 320, 1580, 1, 0, 0, 0, 322, 1583, 1, 0, 0, 0, 324, 1631, 1, 0, 0, 0, 326, 1633, 1, 0, 0, 0, 328, 1638, 1, 0, 0, 0, 330, 1643, 1, 0, 0, 0, 332, 1648, 1, 0, 0, 0, 334, 1660, 1, 0, 0, 0, 336, 1672, 1, 0, 0, 0, 338, 1677, 1, 0, 0, 0, 340, 1682, 1, 0, 0, 0, 342, 1687, 1, 0, 0, 0, 344, 345, 3, 2, 1, 0, 345, 1, 1, 0, 0, 0, 346, 347, 5, 1, 0, 0, 347, 348, 3, 4, 2, 0, 348, 349, 3, 6, 3, 0, 349, 350, 3, 8, 4, 0, 350, 351, 3, 10, 5, 0, 351, 352, 3, 12, 6, 0, 352, 353, 5, 2, 0, 0, 353, 3, 1, 0, 0, 0, 354, 355, 5, 3, 0, 0, 355, 356, 5, 4, 0, 0, 356, 357, 5, 129, 0, 0, 357, 358, 5, 5, 0, 0, 358, 5, 1, 0, 0, 0, 359, 360, 5, 125, 0, 0, 360, 361, 5, 4, 0, 0, 361, 362, 5, 1, 0, 0, 362, 363, 5, 2, 0, 0, 363, 364, 5, 5, 0, 0, 364, 7, 1, 0, 0, 0, 365, 366, 5, 6, 0, 0, 366, 367, 5, 4, 0, 0, 367, 368, 5, 129, 0, 0, 368, 369, 5, 5, 0, 0, 369, 9, 1, 0, 0, 0, 370, 371, 5, 127, 0, 0, 371, 372, 5, 4, 0, 0, 372, 374, 5, 1, 0, 0, 373, 375, 3, 14, 7, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 378, 3, 16, 8, 0, 377, 376, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 380, 1, 0, 0, 0, 379, 381, 3, 18, 9, 0, 380, 379, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 384, 3, 20, 10, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 387, 3, 22, 11, 0, 386, 388, 3, 24, 12, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 3, 26, 13, 0, 390, 392, 3, 28, 14, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 394, 1, 0, 0, 0, 393, 395, 3, 32, 16, 0, 394, 393, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 397, 1, 0, 0, 0, 396, 398, 3, 30, 15, 0, 397, 396, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 401, 3, 34, 17, 0, 400, 402, 3, 36, 18, 0, 401, 400, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 404, 1, 0, 0, 0, 403, 405, 3, 38, 19, 0, 404, 403, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 407, 1, 0, 0, 0, 406, 408, 3, 40, 20, 0, 407, 406, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 410, 1, 0, 0, 0, 409, 411, 3, 42, 21, 0, 410, 409, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 413, 1, 0, 0, 0, 412, 414, 3, 44, 22, 0, 413, 412, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 416, 1, 0, 0, 0, 415, 417, 3, 46, 23, 0, 416, 415, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 3, 48, 24, 0, 419, 421, 3, 50, 25, 0, 420, 422, 3, 52, 26, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 424, 1, 0, 0, 0, 423, 425, 3, 54, 27, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 427, 1, 0, 0, 0, 426, 428, 3, 56, 28, 0, 427, 426, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 430, 5, 2, 0, 0, 430, 431, 5, 5, 0, 0, 431, 11, 1, 0, 0, 0, 432, 433, 5, 128, 0, 0, 433, 434, 5, 4, 0, 0, 434, 435, 5, 134, 0, 0, 435, 436, 5, 5, 0, 0, 436, 13, 1, 0, 0, 0, 437, 439, 3, 58, 29, 0, 438, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 15, 1, 0, 0, 0, 442, 444, 3, 60, 30, 0, 443, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 17, 1, 0, 0, 0, 447, 449, 3, 62, 31, 0, 448, 447, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 19, 1, 0, 0, 0, 452, 454, 3, 64, 32, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 21, 1, 0, 0, 0, 457, 459, 3, 66, 33, 0, 458, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 23, 1, 0, 0, 0, 462, 464, 3, 68, 34, 0, 463, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 25, 1, 0, 0, 0, 467, 469, 3, 70, 35, 0, 468, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 27, 1, 0, 0, 0, 472, 474, 3, 72, 36, 0, 473, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 29, 1, 0, 0, 0, 477, 479, 3, 74, 37, 0, 478, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 31, 1, 0, 0, 0, 482, 484, 3, 76, 38, 0, 483, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 33, 1, 0, 0, 0, 487, 489, 3, 78, 39, 0, 488, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 35, 1, 0, 0, 0, 492, 494, 3, 80, 40, 0, 493, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 37, 1, 0, 0, 0, 497, 499, 3, 82, 41, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 39, 1, 0, 0, 0, 502, 504, 3, 84, 42, 0, 503, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 41, 1, 0, 0, 0, 507, 509, 3, 86, 43, 0, 508, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 508, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 43, 1, 0, 0, 0, 512, 514, 3, 88, 44, 0, 513, 512, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 513, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 45, 1, 0, 0, 0, 517, 519, 3, 90, 45, 0, 518, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 47, 1, 0, 0, 0, 522, 524, 3, 92, 46, 0, 523, 522, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 49, 1, 0, 0, 0, 527, 529, 3, 94, 47, 0, 528, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 528, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 51, 1, 0, 0, 0, 532, 534, 3, 96, 48, 0, 533, 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 53, 1, 0, 0, 0, 537, 539, 3, 98, 49, 0, 538, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 55, 1, 0, 0, 0, 542, 544, 3, 100, 50, 0, 543, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 543, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 57, 1, 0, 0, 0, 547, 548, 5, 134, 0, 0, 548, 549, 5, 4, 0, 0, 549, 550, 5, 1, 0, 0, 550, 551, 3, 102, 51, 0, 551, 552, 3, 210, 105, 0, 552, 553, 3, 212, 106, 0, 553, 554, 3, 224, 112, 0, 554, 556, 3, 192, 96, 0, 555, 557, 3, 226, 113, 0, 556, 555, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 5, 2, 0, 0, 559, 560, 5, 5, 0, 0, 560, 59, 1, 0, 0, 0, 561, 562, 5, 134, 0, 0, 562, 563, 5, 4, 0, 0, 563, 564, 5, 1, 0, 0, 564, 566, 3, 104, 52, 0, 565, 567, 3, 146, 73, 0, 566, 565, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 569, 1, 0, 0, 0, 568, 570, 3, 176, 88, 0, 569, 568, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 572, 1, 0, 0, 0, 571, 573, 3, 178, 89, 0, 572, 571, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 1, 0, 0, 0, 574, 576, 3, 148, 74, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 578, 1, 0, 0, 0, 577, 579, 3, 332, 166, 0, 578, 577, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 5, 2, 0, 0, 581, 582, 5, 5, 0, 0, 582, 61, 1, 0, 0, 0, 583, 584, 5, 134, 0, 0, 584, 585, 5, 4, 0, 0, 585, 586, 5, 1, 0, 0, 586, 587, 3, 106, 53, 0, 587, 588, 3, 150, 75, 0, 588, 589, 3, 152, 76, 0, 589, 590, 3, 154, 77, 0, 590, 591, 3, 156, 78, 0, 591, 592, 5, 2, 0, 0, 592, 593, 5, 5, 0, 0, 593, 63, 1, 0, 0, 0, 594, 595, 5, 134, 0, 0, 595, 596, 5, 4, 0, 0, 596, 597, 5, 1, 0, 0, 597, 598, 3, 108, 54, 0, 598, 599, 3, 198, 99, 0, 599, 600, 3, 316, 158, 0, 600, 601, 3, 318, 159, 0, 601, 603, 3, 200, 100, 0, 602, 604, 3, 192, 96, 0, 603, 602, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 3, 202, 101, 0, 606, 607, 5, 2, 0, 0, 607, 608, 5, 5, 0, 0, 608, 65, 1, 0, 0, 0, 609, 610, 5, 134, 0, 0, 610, 611, 5, 4, 0, 0, 611, 612, 5, 1, 0, 0, 612, 614, 3, 110, 55, 0, 613, 615, 3, 160, 80, 0, 614, 613, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 618, 3, 162, 81, 0, 617, 616, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 620, 1, 0, 0, 0, 619, 621, 3, 158, 79, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 623, 1, 0, 0, 0, 622, 624, 3, 166, 83, 0, 623, 622, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 626, 1, 0, 0, 0, 625, 627, 3, 168, 84, 0, 626, 625, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 629, 1, 0, 0, 0, 628, 630, 3, 164, 82, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 632, 1, 0, 0, 0, 631, 633, 3, 232, 116, 0, 632, 631, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 635, 1, 0, 0, 0, 634, 636, 3, 192, 96, 0, 635, 634, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637, 639, 3, 194, 97, 0, 638, 637, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 641, 1, 0, 0, 0, 640, 642, 3, 236, 118, 0, 641, 640, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 644, 1, 0, 0, 0, 643, 645, 3, 196, 98, 0, 644, 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 647, 1, 0, 0, 0, 646, 648, 3, 170, 85, 0, 647, 646, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 1, 0, 0, 0, 649, 651, 3, 234, 117, 0, 650, 649, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 653, 1, 0, 0, 0, 652, 654, 3, 172, 86, 0, 653, 652, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 5, 2, 0, 0, 656, 657, 5, 5, 0, 0, 657, 67, 1, 0, 0, 0, 658, 659, 5, 134, 0, 0, 659, 660, 5, 4, 0, 0, 660, 661, 5, 1, 0, 0, 661, 662, 3, 112, 56, 0, 662, 663, 3, 198, 99, 0, 663, 664, 3, 200, 100, 0, 664, 665, 3, 202, 101, 0, 665, 666, 5, 2, 0, 0, 666, 667, 5, 5, 0, 0, 667, 69, 1, 0, 0, 0, 668, 669, 5, 134, 0, 0, 669, 670, 5, 4, 0, 0, 670, 671, 5, 1, 0, 0, 671, 672, 3, 114, 57, 0, 672, 674, 3, 180, 90, 0, 673, 675, 3, 168, 84, 0, 674, 673, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 677, 1, 0, 0, 0, 676, 678, 3, 166, 83, 0, 677, 676, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 680, 1, 0, 0, 0, 679, 681, 3, 192, 96, 0, 680, 679, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 683, 1, 0, 0, 0, 682, 684, 3, 194, 97, 0, 683, 682, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 687, 3, 196, 98, 0, 686, 688, 3, 170, 85, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 690, 1, 0, 0, 0, 689, 691, 3, 172, 86, 0, 690, 689, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 693, 1, 0, 0, 0, 692, 694, 3, 174, 87, 0, 693, 692, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 5, 2, 0, 0, 696, 697, 5, 5, 0, 0, 697, 71, 1, 0, 0, 0, 698, 699, 5, 134, 0, 0, 699, 700, 5, 4, 0, 0, 700, 701, 5, 1, 0, 0, 701, 702, 3, 116, 58, 0, 702, 703, 3, 198, 99, 0, 703, 704, 3, 200, 100, 0, 704, 705, 3, 202, 101, 0, 705, 706, 5, 2, 0, 0, 706, 707, 5, 5, 0, 0, 707, 73, 1, 0, 0, 0, 708, 709, 5, 134, 0, 0, 709, 710, 5, 4, 0, 0, 710, 711, 5, 1, 0, 0, 711, 712, 3, 118, 59, 0, 712, 713, 3, 210, 105, 0, 713, 714, 3, 212, 106, 0, 714, 715, 3, 214, 107, 0, 715, 716, 3, 224, 112, 0, 716, 718, 3, 192, 96, 0, 717, 719, 3, 182, 91, 0, 718, 717, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 721, 1, 0, 0, 0, 720, 722, 3, 190, 95, 0, 721, 720, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 724, 3, 226, 113, 0, 724, 725, 3, 228, 114, 0, 725, 726, 3, 230, 115, 0, 726, 727, 5, 2, 0, 0, 727, 728, 5, 5, 0, 0, 728, 75, 1, 0, 0, 0, 729, 730, 5, 134, 0, 0, 730, 731, 5, 4, 0, 0, 731, 732, 5, 1, 0, 0, 732, 733, 3, 120, 60, 0, 733, 734, 3, 216, 108, 0, 734, 735, 3, 210, 105, 0, 735, 736, 3, 212, 106, 0, 736, 737, 3, 218, 109, 0, 737, 738, 3, 220, 110, 0, 738, 739, 3, 224, 112, 0, 739, 740, 3, 192, 96, 0, 740, 741, 3, 222, 111, 0, 741, 742, 3, 226, 113, 0, 742, 743, 5, 2, 0, 0, 743, 744, 5, 5, 0, 0, 744, 77, 1, 0, 0, 0, 745, 746, 5, 134, 0, 0, 746, 747, 5, 4, 0, 0, 747, 748, 5, 1, 0, 0, 748, 750, 3, 122, 61, 0, 749, 751, 3, 238, 119, 0, 750, 749, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 752, 753, 3, 210, 105, 0, 753, 755, 3, 268, 134, 0, 754, 756, 3, 270, 135, 0, 755, 754, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 759, 3, 272, 136, 0, 758, 760, 3, 274, 137, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 763, 3, 276, 138, 0, 762, 764, 3, 280, 140, 0, 763, 762, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 766, 1, 0, 0, 0, 765, 767, 3, 278, 139, 0, 766, 765, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 770, 3, 282, 141, 0, 769, 771, 3, 284, 142, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 773, 3, 286, 143, 0, 773, 774, 3, 288, 144, 0, 774, 775, 5, 2, 0, 0, 775, 776, 5, 5, 0, 0, 776, 79, 1, 0, 0, 0, 777, 778, 5, 134, 0, 0, 778, 779, 5, 4, 0, 0, 779, 780, 5, 1, 0, 0, 780, 781, 3, 124, 62, 0, 781, 783, 3, 308, 154, 0, 782, 784, 3, 192, 96, 0, 783, 782, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, 3, 194, 97, 0, 786, 787, 3, 310, 155, 0, 787, 788, 3, 196, 98, 0, 788, 789, 5, 2, 0, 0, 789, 790, 5, 5, 0, 0, 790, 81, 1, 0, 0, 0, 791, 792, 5, 134, 0, 0, 792, 793, 5, 4, 0, 0, 793, 794, 5, 1, 0, 0, 794, 795, 3, 126, 63, 0, 795, 796, 3, 198, 99, 0, 796, 797, 3, 200, 100, 0, 797, 798, 3, 202, 101, 0, 798, 799, 5, 2, 0, 0, 799, 800, 5, 5, 0, 0, 800, 83, 1, 0, 0, 0, 801, 802, 5, 134, 0, 0, 802, 803, 5, 4, 0, 0, 803, 804, 5, 1, 0, 0, 804, 805, 3, 128, 64, 0, 805, 806, 3, 198, 99, 0, 806, 808, 3, 200, 100, 0, 807, 809, 3, 290, 145, 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 811, 1, 0, 0, 0, 810, 812, 3, 292, 146, 0, 811, 810, 1, 0, 0, 0, 811, 812, 1, 0, 0, 0, 812, 814, 1, 0, 0, 0, 813, 815, 3, 192, 96, 0, 814, 813, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 818, 3, 294, 147, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 820, 1, 0, 0, 0, 819, 821, 3, 296, 148, 0, 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 823, 3, 202, 101, 0, 823, 824, 3, 298, 149, 0, 824, 826, 3, 300, 150, 0, 825, 827, 3, 302, 151, 0, 826, 825, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 5, 2, 0, 0, 829, 830, 5, 5, 0, 0, 830, 85, 1, 0, 0, 0, 831, 832, 5, 134, 0, 0, 832, 833, 5, 4, 0, 0, 833, 834, 5, 1, 0, 0, 834, 835, 3, 130, 65, 0, 835, 836, 3, 198, 99, 0, 836, 837, 3, 200, 100, 0, 837, 838, 3, 202, 101, 0, 838, 839, 5, 2, 0, 0, 839, 840, 5, 5, 0, 0, 840, 87, 1, 0, 0, 0, 841, 842, 5, 134, 0, 0, 842, 843, 5, 4, 0, 0, 843, 844, 5, 1, 0, 0, 844, 846, 3, 132, 66, 0, 845, 847, 3, 192, 96, 0, 846, 845, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 849, 1, 0, 0, 0, 848, 850, 3, 176, 88, 0, 849, 848, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 852, 1, 0, 0, 0, 851, 853, 3, 178, 89, 0, 852, 851, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 855, 1, 0, 0, 0, 854, 856, 3, 304, 152, 0, 855, 854, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 858, 3, 306, 153, 0, 858, 859, 5, 2, 0, 0, 859, 860, 5, 5, 0, 0, 860, 89, 1, 0, 0, 0, 861, 862, 5, 134, 0, 0, 862, 863, 5, 4, 0, 0, 863, 864, 5, 1, 0, 0, 864, 865, 3, 134, 67, 0, 865, 866, 3, 180, 90, 0, 866, 868, 3, 192, 96, 0, 867, 869, 3, 194, 97, 0, 868, 867, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 3, 196, 98, 0, 871, 872, 5, 2, 0, 0, 872, 873, 5, 5, 0, 0, 873, 91, 1, 0, 0, 0, 874, 875, 5, 134, 0, 0, 875, 876, 5, 4, 0, 0, 876, 877, 5, 1, 0, 0, 877, 879, 3, 136, 68, 0, 878, 880, 3, 312, 156, 0, 879, 878, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 881, 1, 0, 0, 0, 881, 882, 3, 314, 157, 0, 882, 883, 3, 192, 96, 0, 883, 884, 5, 2, 0, 0, 884, 885, 5, 5, 0, 0, 885, 93, 1, 0, 0, 0, 886, 887, 5, 134, 0, 0, 887, 888, 5, 4, 0, 0, 888, 889, 5, 1, 0, 0, 889, 890, 3, 138, 69, 0, 890, 891, 3, 326, 163, 0, 891, 893, 3, 328, 164, 0, 892, 894, 3, 330, 165, 0, 893, 892, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 896, 5, 2, 0, 0, 896, 897, 5, 5, 0, 0, 897, 95, 1, 0, 0, 0, 898, 899, 5, 134, 0, 0, 899, 900, 5, 4, 0, 0, 900, 901, 5, 1, 0, 0, 901, 902, 3, 140, 70, 0, 902, 903, 3, 184, 92, 0, 903, 904, 3, 186, 93, 0, 904, 905, 5, 2, 0, 0, 905, 906, 5, 5, 0, 0, 906, 97, 1, 0, 0, 0, 907, 908, 5, 134, 0, 0, 908, 909, 5, 4, 0, 0, 909, 910, 5, 1, 0, 0, 910, 912, 3, 142, 71, 0, 911, 913, 3, 188, 94, 0, 912, 911, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 915, 3, 226, 113, 0, 915, 916, 5, 2, 0, 0, 916, 917, 5, 5, 0, 0, 917, 99, 1, 0, 0, 0, 918, 919, 5, 134, 0, 0, 919, 920, 5, 4, 0, 0, 920, 921, 5, 1, 0, 0, 921, 922, 3, 144, 72, 0, 922, 923, 3, 180, 90, 0, 923, 925, 3, 336, 168, 0, 924, 926, 3, 192, 96, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 928, 3, 194, 97, 0, 928, 929, 3, 196, 98, 0, 929, 930, 3, 338, 169, 0, 930, 931, 5, 2, 0, 0, 931, 932, 5, 5, 0, 0, 932, 101, 1, 0, 0, 0, 933, 934, 5, 126, 0, 0, 934, 935, 5, 4, 0, 0, 935, 936, 5, 7, 0, 0, 936, 937, 5, 5, 0, 0, 937, 103, 1, 0, 0, 0, 938, 939, 5, 126, 0, 0, 939, 940, 5, 4, 0, 0, 940, 941, 5, 8, 0, 0, 941, 942, 5, 5, 0, 0, 942, 105, 1, 0, 0, 0, 943, 944, 5, 126, 0, 0, 944, 945, 5, 4, 0, 0, 945, 946, 5, 9, 0, 0, 946, 947, 5, 5, 0, 0, 947, 107, 1, 0, 0, 0, 948, 949, 5, 126, 0, 0, 949, 950, 5, 4, 0, 0, 950, 951, 5, 10, 0, 0, 951, 952, 5, 5, 0, 0, 952, 109, 1, 0, 0, 0, 953, 954, 5, 126, 0, 0, 954, 955, 5, 4, 0, 0, 955, 956, 5, 11, 0, 0, 956, 957, 5, 5, 0, 0, 957, 111, 1, 0, 0, 0, 958, 959, 5, 126, 0, 0, 959, 960, 5, 4, 0, 0, 960, 961, 5, 12, 0, 0, 961, 962, 5, 5, 0, 0, 962, 113, 1, 0, 0, 0, 963, 964, 5, 126, 0, 0, 964, 965, 5, 4, 0, 0, 965, 966, 5, 13, 0, 0, 966, 967, 5, 5, 0, 0, 967, 115, 1, 0, 0, 0, 968, 969, 5, 126, 0, 0, 969, 970, 5, 4, 0, 0, 970, 971, 5, 14, 0, 0, 971, 972, 5, 5, 0, 0, 972, 117, 1, 0, 0, 0, 973, 974, 5, 126, 0, 0, 974, 975, 5, 4, 0, 0, 975, 976, 5, 15, 0, 0, 976, 977, 5, 5, 0, 0, 977, 119, 1, 0, 0, 0, 978, 979, 5, 126, 0, 0, 979, 980, 5, 4, 0, 0, 980, 981, 5, 16, 0, 0, 981, 982, 5, 5, 0, 0, 982, 121, 1, 0, 0, 0, 983, 984, 5, 126, 0, 0, 984, 985, 5, 4, 0, 0, 985, 986, 5, 17, 0, 0, 986, 987, 5, 5, 0, 0, 987, 123, 1, 0, 0, 0, 988, 989, 5, 126, 0, 0, 989, 990, 5, 4, 0, 0, 990, 991, 5, 18, 0, 0, 991, 992, 5, 5, 0, 0, 992, 125, 1, 0, 0, 0, 993, 994, 5, 126, 0, 0, 994, 995, 5, 4, 0, 0, 995, 996, 5, 19, 0, 0, 996, 997, 5, 5, 0, 0, 997, 127, 1, 0, 0, 0, 998, 999, 5, 126, 0, 0, 999, 1000, 5, 4, 0, 0, 1000, 1001, 5, 20, 0, 0, 1001, 1002, 5, 5, 0, 0, 1002, 129, 1, 0, 0, 0, 1003, 1004, 5, 126, 0, 0, 1004, 1005, 5, 4, 0, 0, 1005, 1006, 5, 21, 0, 0, 1006, 1007, 5, 5, 0, 0, 1007, 131, 1, 0, 0, 0, 1008, 1009, 5, 126, 0, 0, 1009, 1010, 5, 4, 0, 0, 1010, 1011, 5, 22, 0, 0, 1011, 1012, 5, 5, 0, 0, 1012, 133, 1, 0, 0, 0, 1013, 1014, 5, 126, 0, 0, 1014, 1015, 5, 4, 0, 0, 1015, 1016, 5, 23, 0, 0, 1016, 1017, 5, 5, 0, 0, 1017, 135, 1, 0, 0, 0, 1018, 1019, 5, 126, 0, 0, 1019, 1020, 5, 4, 0, 0, 1020, 1021, 5, 24, 0, 0, 1021, 1022, 5, 5, 0, 0, 1022, 137, 1, 0, 0, 0, 1023, 1024, 5, 126, 0, 0, 1024, 1025, 5, 4, 0, 0, 1025, 1026, 5, 25, 0, 0, 1026, 1027, 5, 5, 0, 0, 1027, 139, 1, 0, 0, 0, 1028, 1029, 5, 126, 0, 0, 1029, 1030, 5, 4, 0, 0, 1030, 1031, 5, 26, 0, 0, 1031, 1032, 5, 5, 0, 0, 1032, 141, 1, 0, 0, 0, 1033, 1034, 5, 126, 0, 0, 1034, 1035, 5, 4, 0, 0, 1035, 1036, 5, 27, 0, 0, 1036, 1037, 5, 5, 0, 0, 1037, 143, 1, 0, 0, 0, 1038, 1039, 5, 126, 0, 0, 1039, 1040, 5, 4, 0, 0, 1040, 1041, 5, 28, 0, 0, 1041, 1042, 5, 5, 0, 0, 1042, 145, 1, 0, 0, 0, 1043, 1044, 5, 29, 0, 0, 1044, 1045, 5, 4, 0, 0, 1045, 1046, 5, 134, 0, 0, 1046, 1047, 5, 5, 0, 0, 1047, 147, 1, 0, 0, 0, 1048, 1049, 5, 30, 0, 0, 1049, 1050, 5, 4, 0, 0, 1050, 1051, 5, 134, 0, 0, 1051, 1052, 5, 5, 0, 0, 1052, 149, 1, 0, 0, 0, 1053, 1054, 5, 31, 0, 0, 1054, 1055, 5, 4, 0, 0, 1055, 1056, 5, 134, 0, 0, 1056, 1057, 5, 5, 0, 0, 1057, 151, 1, 0, 0, 0, 1058, 1059, 5, 32, 0, 0, 1059, 1060, 5, 4, 0, 0, 1060, 1061, 5, 129, 0, 0, 1061, 1062, 5, 5, 0, 0, 1062, 153, 1, 0, 0, 0, 1063, 1064, 5, 33, 0, 0, 1064, 1065, 5, 4, 0, 0, 1065, 1066, 5, 134, 0, 0, 1066, 1067, 5, 5, 0, 0, 1067, 155, 1, 0, 0, 0, 1068, 1069, 5, 34, 0, 0, 1069, 1070, 5, 4, 0, 0, 1070, 1071, 3, 342, 171, 0, 1071, 1072, 5, 5, 0, 0, 1072, 157, 1, 0, 0, 0, 1073, 1074, 5, 35, 0, 0, 1074, 1075, 5, 4, 0, 0, 1075, 1076, 5, 129, 0, 0, 1076, 1077, 5, 5, 0, 0, 1077, 159, 1, 0, 0, 0, 1078, 1079, 5, 36, 0, 0, 1079, 1080, 5, 4, 0, 0, 1080, 1081, 3, 342, 171, 0, 1081, 1082, 5, 5, 0, 0, 1082, 161, 1, 0, 0, 0, 1083, 1084, 5, 37, 0, 0, 1084, 1085, 5, 4, 0, 0, 1085, 1086, 3, 342, 171, 0, 1086, 1087, 5, 5, 0, 0, 1087, 163, 1, 0, 0, 0, 1088, 1089, 5, 38, 0, 0, 1089, 1090, 5, 4, 0, 0, 1090, 1091, 3, 342, 171, 0, 1091, 1092, 5, 5, 0, 0, 1092, 165, 1, 0, 0, 0, 1093, 1094, 5, 39, 0, 0, 1094, 1095, 5, 4, 0, 0, 1095, 1096, 5, 129, 0, 0, 1096, 1097, 5, 5, 0, 0, 1097, 167, 1, 0, 0, 0, 1098, 1099, 5, 40, 0, 0, 1099, 1100, 5, 4, 0, 0, 1100, 1101, 5, 129, 0, 0, 1101, 1102, 5, 5, 0, 0, 1102, 169, 1, 0, 0, 0, 1103, 1104, 5, 41, 0, 0, 1104, 1105, 5, 4, 0, 0, 1105, 1106, 5, 129, 0, 0, 1106, 1107, 5, 5, 0, 0, 1107, 171, 1, 0, 0, 0, 1108, 1109, 5, 42, 0, 0, 1109, 1110, 5, 4, 0, 0, 1110, 1111, 5, 129, 0, 0, 1111, 1112, 5, 5, 0, 0, 1112, 173, 1, 0, 0, 0, 1113, 1114, 5, 43, 0, 0, 1114, 1115, 5, 4, 0, 0, 1115, 1116, 5, 129, 0, 0, 1116, 1117, 5, 5, 0, 0, 1117, 175, 1, 0, 0, 0, 1118, 1119, 5, 44, 0, 0, 1119, 1120, 5, 4, 0, 0, 1120, 1121, 7, 0, 0, 0, 1121, 1122, 5, 5, 0, 0, 1122, 177, 1, 0, 0, 0, 1123, 1124, 5, 45, 0, 0, 1124, 1125, 5, 4, 0, 0, 1125, 1126, 3, 206, 103, 0, 1126, 1127, 5, 5, 0, 0, 1127, 179, 1, 0, 0, 0, 1128, 1129, 5, 46, 0, 0, 1129, 1130, 5, 4, 0, 0, 1130, 1131, 3, 204, 102, 0, 1131, 1132, 5, 5, 0, 0, 1132, 181, 1, 0, 0, 0, 1133, 1134, 5, 47, 0, 0, 1134, 1135, 5, 4, 0, 0, 1135, 1136, 5, 135, 0, 0, 1136, 1137, 5, 5, 0, 0, 1137, 183, 1, 0, 0, 0, 1138, 1139, 5, 48, 0, 0, 1139, 1140, 5, 4, 0, 0, 1140, 1141, 5, 135, 0, 0, 1141, 1142, 5, 5, 0, 0, 1142, 185, 1, 0, 0, 0, 1143, 1144, 5, 49, 0, 0, 1144, 1145, 5, 4, 0, 0, 1145, 1149, 5, 1, 0, 0, 1146, 1148, 3, 324, 162, 0, 1147, 1146, 1, 0, 0, 0, 1148, 1151, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1152, 1, 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1152, 1153, 5, 2, 0, 0, 1153, 1154, 5, 5, 0, 0, 1154, 187, 1, 0, 0, 0, 1155, 1156, 5, 50, 0, 0, 1156, 1157, 5, 4, 0, 0, 1157, 1158, 5, 134, 0, 0, 1158, 1159, 5, 5, 0, 0, 1159, 189, 1, 0, 0, 0, 1160, 1161, 5, 51, 0, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 204, 102, 0, 1163, 1164, 5, 5, 0, 0, 1164, 191, 1, 0, 0, 0, 1165, 1166, 5, 52, 0, 0, 1166, 1167, 5, 4, 0, 0, 1167, 1168, 7, 0, 0, 0, 1168, 1169, 5, 5, 0, 0, 1169, 193, 1, 0, 0, 0, 1170, 1171, 5, 53, 0, 0, 1171, 1172, 5, 4, 0, 0, 1172, 1173, 7, 0, 0, 0, 1173, 1174, 5, 5, 0, 0, 1174, 195, 1, 0, 0, 0, 1175, 1176, 5, 54, 0, 0, 1176, 1177, 5, 4, 0, 0, 1177, 1178, 7, 0, 0, 0, 1178, 1179, 5, 5, 0, 0, 1179, 197, 1, 0, 0, 0, 1180, 1181, 5, 55, 0, 0, 1181, 1182, 5, 4, 0, 0, 1182, 1183, 5, 129, 0, 0, 1183, 1184, 5, 5, 0, 0, 1184, 199, 1, 0, 0, 0, 1185, 1186, 5, 56, 0, 0, 1186, 1187, 5, 4, 0, 0, 1187, 1188, 3, 204, 102, 0, 1188, 1189, 5, 5, 0, 0, 1189, 201, 1, 0, 0, 0, 1190, 1191, 5, 57, 0, 0, 1191, 1192, 5, 4, 0, 0, 1192, 1193, 5, 129, 0, 0, 1193, 1194, 5, 5, 0, 0, 1194, 203, 1, 0, 0, 0, 1195, 1200, 5, 58, 0, 0, 1196, 1197, 5, 134, 0, 0, 1197, 1199, 5, 59, 0, 0, 1198, 1196, 1, 0, 0, 0, 1199, 1202, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1203, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1204, 5, 60, 0, 0, 1204, 205, 1, 0, 0, 0, 1205, 1211, 5, 58, 0, 0, 1206, 1207, 3, 342, 171, 0, 1207, 1208, 5, 59, 0, 0, 1208, 1210, 1, 0, 0, 0, 1209, 1206, 1, 0, 0, 0, 1210, 1213, 1, 0, 0, 0, 1211, 1209, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1214, 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1214, 1215, 5, 60, 0, 0, 1215, 207, 1, 0, 0, 0, 1216, 1221, 5, 58, 0, 0, 1217, 1218, 5, 136, 0, 0, 1218, 1220, 5, 59, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1223, 1, 0, 0, 0, 1221, 1219, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1224, 1, 0, 0, 0, 1223, 1221, 1, 0, 0, 0, 1224, 1225, 5, 60, 0, 0, 1225, 209, 1, 0, 0, 0, 1226, 1227, 5, 61, 0, 0, 1227, 1228, 5, 4, 0, 0, 1228, 1229, 5, 134, 0, 0, 1229, 1230, 5, 5, 0, 0, 1230, 211, 1, 0, 0, 0, 1231, 1232, 5, 62, 0, 0, 1232, 1233, 5, 4, 0, 0, 1233, 1234, 3, 204, 102, 0, 1234, 1235, 5, 5, 0, 0, 1235, 213, 1, 0, 0, 0, 1236, 1237, 5, 63, 0, 0, 1237, 1238, 5, 4, 0, 0, 1238, 1239, 3, 204, 102, 0, 1239, 1240, 5, 5, 0, 0, 1240, 215, 1, 0, 0, 0, 1241, 1242, 5, 64, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, 7, 0, 0, 0, 1244, 1245, 5, 5, 0, 0, 1245, 217, 1, 0, 0, 0, 1246, 1247, 5, 65, 0, 0, 1247, 1248, 5, 4, 0, 0, 1248, 1249, 7, 0, 0, 0, 1249, 1250, 5, 5, 0, 0, 1250, 219, 1, 0, 0, 0, 1251, 1252, 5, 66, 0, 0, 1252, 1253, 5, 4, 0, 0, 1253, 1254, 7, 0, 0, 0, 1254, 1255, 5, 5, 0, 0, 1255, 221, 1, 0, 0, 0, 1256, 1257, 5, 67, 0, 0, 1257, 1258, 5, 4, 0, 0, 1258, 1259, 5, 129, 0, 0, 1259, 1260, 5, 5, 0, 0, 1260, 223, 1, 0, 0, 0, 1261, 1262, 5, 68, 0, 0, 1262, 1263, 5, 4, 0, 0, 1263, 1264, 3, 204, 102, 0, 1264, 1265, 5, 5, 0, 0, 1265, 225, 1, 0, 0, 0, 1266, 1267, 5, 69, 0, 0, 1267, 1268, 5, 4, 0, 0, 1268, 1269, 3, 342, 171, 0, 1269, 1270, 5, 5, 0, 0, 1270, 227, 1, 0, 0, 0, 1271, 1272, 5, 70, 0, 0, 1272, 1273, 5, 4, 0, 0, 1273, 1274, 5, 134, 0, 0, 1274, 1275, 5, 5, 0, 0, 1275, 229, 1, 0, 0, 0, 1276, 1277, 5, 71, 0, 0, 1277, 1278, 5, 4, 0, 0, 1278, 1279, 5, 135, 0, 0, 1279, 1280, 5, 5, 0, 0, 1280, 231, 1, 0, 0, 0, 1281, 1282, 5, 72, 0, 0, 1282, 1283, 5, 4, 0, 0, 1283, 1284, 5, 129, 0, 0, 1284, 1285, 5, 5, 0, 0, 1285, 233, 1, 0, 0, 0, 1286, 1287, 5, 73, 0, 0, 1287, 1288, 5, 4, 0, 0, 1288, 1289, 3, 342, 171, 0, 1289, 1290, 5, 5, 0, 0, 1290, 235, 1, 0, 0, 0, 1291, 1292, 5, 74, 0, 0, 1292, 1293, 5, 4, 0, 0, 1293, 1294, 3, 342, 171, 0, 1294, 1295, 5, 5, 0, 0, 1295, 237, 1, 0, 0, 0, 1296, 1297, 5, 75, 0, 0, 1297, 1298, 5, 4, 0, 0, 1298, 1300, 5, 1, 0, 0, 1299, 1301, 3, 246, 123, 0, 1300, 1299, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1304, 3, 340, 170, 0, 1303, 1302, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1306, 1, 0, 0, 0, 1305, 1307, 3, 242, 121, 0, 1306, 1305, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1309, 1, 0, 0, 0, 1308, 1310, 3, 240, 120, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1313, 3, 244, 122, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1315, 1, 0, 0, 0, 1314, 1316, 3, 248, 124, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1318, 1, 0, 0, 0, 1317, 1319, 3, 250, 125, 0, 1318, 1317, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1321, 1, 0, 0, 0, 1320, 1322, 3, 252, 126, 0, 1321, 1320, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1324, 1, 0, 0, 0, 1323, 1325, 3, 254, 127, 0, 1324, 1323, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 5, 2, 0, 0, 1327, 1328, 5, 5, 0, 0, 1328, 239, 1, 0, 0, 0, 1329, 1330, 5, 76, 0, 0, 1330, 1331, 5, 4, 0, 0, 1331, 1332, 5, 129, 0, 0, 1332, 1333, 5, 5, 0, 0, 1333, 241, 1, 0, 0, 0, 1334, 1335, 5, 77, 0, 0, 1335, 1336, 5, 4, 0, 0, 1336, 1337, 5, 136, 0, 0, 1337, 1338, 5, 5, 0, 0, 1338, 243, 1, 0, 0, 0, 1339, 1340, 5, 78, 0, 0, 1340, 1341, 5, 4, 0, 0, 1341, 1342, 5, 129, 0, 0, 1342, 1343, 5, 5, 0, 0, 1343, 245, 1, 0, 0, 0, 1344, 1345, 5, 79, 0, 0, 1345, 1346, 5, 4, 0, 0, 1346, 1347, 7, 1, 0, 0, 1347, 1348, 5, 5, 0, 0, 1348, 247, 1, 0, 0, 0, 1349, 1350, 5, 80, 0, 0, 1350, 1351, 5, 4, 0, 0, 1351, 1352, 5, 129, 0, 0, 1352, 1353, 5, 5, 0, 0, 1353, 249, 1, 0, 0, 0, 1354, 1355, 5, 81, 0, 0, 1355, 1356, 5, 4, 0, 0, 1356, 1357, 5, 129, 0, 0, 1357, 1358, 5, 5, 0, 0, 1358, 251, 1, 0, 0, 0, 1359, 1360, 5, 82, 0, 0, 1360, 1361, 5, 4, 0, 0, 1361, 1362, 3, 342, 171, 0, 1362, 1363, 5, 5, 0, 0, 1363, 253, 1, 0, 0, 0, 1364, 1365, 5, 83, 0, 0, 1365, 1366, 5, 4, 0, 0, 1366, 1370, 5, 1, 0, 0, 1367, 1369, 3, 256, 128, 0, 1368, 1367, 1, 0, 0, 0, 1369, 1372, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1373, 1, 0, 0, 0, 1372, 1370, 1, 0, 0, 0, 1373, 1374, 5, 2, 0, 0, 1374, 1375, 5, 5, 0, 0, 1375, 255, 1, 0, 0, 0, 1376, 1377, 5, 134, 0, 0, 1377, 1378, 5, 4, 0, 0, 1378, 1380, 5, 1, 0, 0, 1379, 1381, 3, 258, 129, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1383, 1, 0, 0, 0, 1382, 1384, 3, 260, 130, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1386, 1, 0, 0, 0, 1385, 1387, 3, 262, 131, 0, 1386, 1385, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1389, 1, 0, 0, 0, 1388, 1390, 3, 264, 132, 0, 1389, 1388, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1392, 1, 0, 0, 0, 1391, 1393, 3, 240, 120, 0, 1392, 1391, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1395, 1, 0, 0, 0, 1394, 1396, 3, 266, 133, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1398, 1, 0, 0, 0, 1397, 1399, 3, 334, 167, 0, 1398, 1397, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1401, 1, 0, 0, 0, 1400, 1402, 3, 260, 130, 0, 1401, 1400, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1404, 5, 2, 0, 0, 1404, 1405, 5, 5, 0, 0, 1405, 257, 1, 0, 0, 0, 1406, 1407, 5, 84, 0, 0, 1407, 1408, 5, 4, 0, 0, 1408, 1409, 5, 136, 0, 0, 1409, 1410, 5, 5, 0, 0, 1410, 259, 1, 0, 0, 0, 1411, 1412, 5, 85, 0, 0, 1412, 1413, 5, 4, 0, 0, 1413, 1414, 5, 134, 0, 0, 1414, 1415, 5, 5, 0, 0, 1415, 261, 1, 0, 0, 0, 1416, 1417, 5, 86, 0, 0, 1417, 1418, 5, 4, 0, 0, 1418, 1419, 7, 0, 0, 0, 1419, 1420, 5, 5, 0, 0, 1420, 263, 1, 0, 0, 0, 1421, 1422, 5, 87, 0, 0, 1422, 1423, 5, 4, 0, 0, 1423, 1424, 7, 0, 0, 0, 1424, 1425, 5, 5, 0, 0, 1425, 265, 1, 0, 0, 0, 1426, 1427, 5, 88, 0, 0, 1427, 1428, 5, 4, 0, 0, 1428, 1429, 5, 136, 0, 0, 1429, 1430, 5, 5, 0, 0, 1430, 267, 1, 0, 0, 0, 1431, 1432, 5, 89, 0, 0, 1432, 1433, 5, 4, 0, 0, 1433, 1434, 5, 135, 0, 0, 1434, 1435, 5, 5, 0, 0, 1435, 269, 1, 0, 0, 0, 1436, 1437, 5, 90, 0, 0, 1437, 1438, 5, 4, 0, 0, 1438, 1439, 5, 136, 0, 0, 1439, 1440, 5, 5, 0, 0, 1440, 271, 1, 0, 0, 0, 1441, 1442, 5, 91, 0, 0, 1442, 1443, 5, 4, 0, 0, 1443, 1444, 5, 129, 0, 0, 1444, 1445, 5, 5, 0, 0, 1445, 273, 1, 0, 0, 0, 1446, 1447, 5, 92, 0, 0, 1447, 1448, 5, 4, 0, 0, 1448, 1449, 3, 206, 103, 0, 1449, 1450, 5, 5, 0, 0, 1450, 275, 1, 0, 0, 0, 1451, 1452, 5, 93, 0, 0, 1452, 1453, 5, 4, 0, 0, 1453, 1454, 5, 134, 0, 0, 1454, 1455, 5, 5, 0, 0, 1455, 277, 1, 0, 0, 0, 1456, 1457, 5, 94, 0, 0, 1457, 1458, 5, 4, 0, 0, 1458, 1459, 5, 134, 0, 0, 1459, 1460, 5, 5, 0, 0, 1460, 279, 1, 0, 0, 0, 1461, 1462, 5, 95, 0, 0, 1462, 1463, 5, 4, 0, 0, 1463, 1464, 3, 204, 102, 0, 1464, 1465, 5, 5, 0, 0, 1465, 281, 1, 0, 0, 0, 1466, 1467, 5, 96, 0, 0, 1467, 1468, 5, 4, 0, 0, 1468, 1469, 7, 0, 0, 0, 1469, 1470, 5, 5, 0, 0, 1470, 283, 1, 0, 0, 0, 1471, 1472, 5, 97, 0, 0, 1472, 1473, 5, 4, 0, 0, 1473, 1474, 3, 342, 171, 0, 1474, 1475, 5, 5, 0, 0, 1475, 1484, 1, 0, 0, 0, 1476, 1477, 5, 97, 0, 0, 1477, 1478, 5, 4, 0, 0, 1478, 1479, 5, 58, 0, 0, 1479, 1480, 3, 320, 160, 0, 1480, 1481, 5, 60, 0, 0, 1481, 1482, 5, 5, 0, 0, 1482, 1484, 1, 0, 0, 0, 1483, 1471, 1, 0, 0, 0, 1483, 1476, 1, 0, 0, 0, 1484, 285, 1, 0, 0, 0, 1485, 1486, 5, 98, 0, 0, 1486, 1487, 5, 4, 0, 0, 1487, 1488, 7, 0, 0, 0, 1488, 1489, 5, 5, 0, 0, 1489, 287, 1, 0, 0, 0, 1490, 1491, 5, 99, 0, 0, 1491, 1492, 5, 4, 0, 0, 1492, 1493, 3, 204, 102, 0, 1493, 1494, 5, 5, 0, 0, 1494, 289, 1, 0, 0, 0, 1495, 1496, 5, 100, 0, 0, 1496, 1497, 5, 4, 0, 0, 1497, 1498, 3, 206, 103, 0, 1498, 1499, 5, 5, 0, 0, 1499, 291, 1, 0, 0, 0, 1500, 1501, 5, 101, 0, 0, 1501, 1502, 5, 4, 0, 0, 1502, 1503, 3, 206, 103, 0, 1503, 1504, 5, 5, 0, 0, 1504, 293, 1, 0, 0, 0, 1505, 1506, 5, 102, 0, 0, 1506, 1507, 5, 4, 0, 0, 1507, 1508, 3, 206, 103, 0, 1508, 1509, 5, 5, 0, 0, 1509, 295, 1, 0, 0, 0, 1510, 1511, 5, 103, 0, 0, 1511, 1512, 5, 4, 0, 0, 1512, 1513, 3, 206, 103, 0, 1513, 1514, 5, 5, 0, 0, 1514, 297, 1, 0, 0, 0, 1515, 1516, 5, 104, 0, 0, 1516, 1517, 5, 4, 0, 0, 1517, 1518, 5, 136, 0, 0, 1518, 1519, 5, 5, 0, 0, 1519, 299, 1, 0, 0, 0, 1520, 1521, 5, 105, 0, 0, 1521, 1522, 5, 4, 0, 0, 1522, 1523, 7, 0, 0, 0, 1523, 1524, 5, 5, 0, 0, 1524, 301, 1, 0, 0, 0, 1525, 1526, 5, 106, 0, 0, 1526, 1527, 5, 4, 0, 0, 1527, 1528, 5, 129, 0, 0, 1528, 1529, 5, 5, 0, 0, 1529, 303, 1, 0, 0, 0, 1530, 1531, 5, 107, 0, 0, 1531, 1532, 5, 4, 0, 0, 1532, 1533, 5, 134, 0, 0, 1533, 1534, 5, 5, 0, 0, 1534, 305, 1, 0, 0, 0, 1535, 1536, 5, 108, 0, 0, 1536, 1537, 5, 4, 0, 0, 1537, 1538, 5, 134, 0, 0, 1538, 1539, 5, 5, 0, 0, 1539, 307, 1, 0, 0, 0, 1540, 1541, 5, 109, 0, 0, 1541, 1542, 5, 4, 0, 0, 1542, 1543, 3, 342, 171, 0, 1543, 1544, 5, 5, 0, 0, 1544, 309, 1, 0, 0, 0, 1545, 1546, 5, 110, 0, 0, 1546, 1547, 5, 4, 0, 0, 1547, 1548, 5, 134, 0, 0, 1548, 1549, 5, 5, 0, 0, 1549, 311, 1, 0, 0, 0, 1550, 1551, 5, 111, 0, 0, 1551, 1552, 5, 4, 0, 0, 1552, 1553, 5, 134, 0, 0, 1553, 1554, 5, 5, 0, 0, 1554, 313, 1, 0, 0, 0, 1555, 1556, 5, 112, 0, 0, 1556, 1557, 5, 4, 0, 0, 1557, 1561, 5, 1, 0, 0, 1558, 1560, 3, 324, 162, 0, 1559, 1558, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1564, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564, 1565, 5, 2, 0, 0, 1565, 1566, 5, 5, 0, 0, 1566, 315, 1, 0, 0, 0, 1567, 1568, 5, 113, 0, 0, 1568, 1569, 5, 4, 0, 0, 1569, 1570, 7, 0, 0, 0, 1570, 1571, 5, 5, 0, 0, 1571, 317, 1, 0, 0, 0, 1572, 1573, 5, 114, 0, 0, 1573, 1574, 5, 4, 0, 0, 1574, 1575, 5, 129, 0, 0, 1575, 1576, 5, 5, 0, 0, 1576, 319, 1, 0, 0, 0, 1577, 1579, 3, 322, 161, 0, 1578, 1577, 1, 0, 0, 0, 1579, 1582, 1, 0, 0, 0, 1580, 1578, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 321, 1, 0, 0, 0, 1582, 1580, 1, 0, 0, 0, 1583, 1584, 5, 1, 0, 0, 1584, 1585, 5, 115, 0, 0, 1585, 1586, 5, 4, 0, 0, 1586, 1587, 5, 134, 0, 0, 1587, 1588, 5, 5, 0, 0, 1588, 1589, 5, 116, 0, 0, 1589, 1590, 5, 4, 0, 0, 1590, 1591, 5, 134, 0, 0, 1591, 1592, 5, 5, 0, 0, 1592, 1593, 5, 2, 0, 0, 1593, 1594, 5, 59, 0, 0, 1594, 323, 1, 0, 0, 0, 1595, 1596, 3, 342, 171, 0, 1596, 1597, 5, 4, 0, 0, 1597, 1598, 3, 342, 171, 0, 1598, 1599, 5, 5, 0, 0, 1599, 1632, 1, 0, 0, 0, 1600, 1601, 3, 342, 171, 0, 1601, 1602, 5, 4, 0, 0, 1602, 1603, 5, 129, 0, 0, 1603, 1604, 5, 5, 0, 0, 1604, 1632, 1, 0, 0, 0, 1605, 1606, 3, 342, 171, 0, 1606, 1607, 5, 4, 0, 0, 1607, 1608, 5, 138, 0, 0, 1608, 1609, 5, 5, 0, 0, 1609, 1632, 1, 0, 0, 0, 1610, 1611, 3, 342, 171, 0, 1611, 1612, 5, 4, 0, 0, 1612, 1613, 5, 1, 0, 0, 1613, 1614, 3, 324, 162, 0, 1614, 1615, 5, 2, 0, 0, 1615, 1616, 5, 5, 0, 0, 1616, 1632, 1, 0, 0, 0, 1617, 1618, 3, 342, 171, 0, 1618, 1619, 5, 4, 0, 0, 1619, 1625, 5, 58, 0, 0, 1620, 1621, 3, 342, 171, 0, 1621, 1622, 5, 59, 0, 0, 1622, 1624, 1, 0, 0, 0, 1623, 1620, 1, 0, 0, 0, 1624, 1627, 1, 0, 0, 0, 1625, 1623, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1628, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1628, 1629, 5, 60, 0, 0, 1629, 1630, 5, 5, 0, 0, 1630, 1632, 1, 0, 0, 0, 1631, 1595, 1, 0, 0, 0, 1631, 1600, 1, 0, 0, 0, 1631, 1605, 1, 0, 0, 0, 1631, 1610, 1, 0, 0, 0, 1631, 1617, 1, 0, 0, 0, 1632, 325, 1, 0, 0, 0, 1633, 1634, 5, 117, 0, 0, 1634, 1635, 5, 4, 0, 0, 1635, 1636, 3, 204, 102, 0, 1636, 1637, 5, 5, 0, 0, 1637, 327, 1, 0, 0, 0, 1638, 1639, 5, 118, 0, 0, 1639, 1640, 5, 4, 0, 0, 1640, 1641, 5, 129, 0, 0, 1641, 1642, 5, 5, 0, 0, 1642, 329, 1, 0, 0, 0, 1643, 1644, 5, 119, 0, 0, 1644, 1645, 5, 4, 0, 0, 1645, 1646, 7, 0, 0, 0, 1646, 1647, 5, 5, 0, 0, 1647, 331, 1, 0, 0, 0, 1648, 1649, 5, 120, 0, 0, 1649, 1650, 5, 4, 0, 0, 1650, 1654, 5, 1, 0, 0, 1651, 1653, 3, 324, 162, 0, 1652, 1651, 1, 0, 0, 0, 1653, 1656, 1, 0, 0, 0, 1654, 1652, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1657, 1, 0, 0, 0, 1656, 1654, 1, 0, 0, 0, 1657, 1658, 5, 2, 0, 0, 1658, 1659, 5, 5, 0, 0, 1659, 333, 1, 0, 0, 0, 1660, 1661, 5, 121, 0, 0, 1661, 1662, 5, 4, 0, 0, 1662, 1666, 5, 1, 0, 0, 1663, 1665, 3, 324, 162, 0, 1664, 1663, 1, 0, 0, 0, 1665, 1668, 1, 0, 0, 0, 1666, 1664, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1669, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1669, 1670, 5, 2, 0, 0, 1670, 1671, 5, 5, 0, 0, 1671, 335, 1, 0, 0, 0, 1672, 1673, 5, 122, 0, 0, 1673, 1674, 5, 4, 0, 0, 1674, 1675, 5, 134, 0, 0, 1675, 1676, 5, 5, 0, 0, 1676, 337, 1, 0, 0, 0, 1677, 1678, 5, 123, 0, 0, 1678, 1679, 5, 4, 0, 0, 1679, 1680, 5, 136, 0, 0, 1680, 1681, 5, 5, 0, 0, 1681, 339, 1, 0, 0, 0, 1682, 1683, 5, 124, 0, 0, 1683, 1684, 5, 4, 0, 0, 1684, 1685, 3, 342, 171, 0, 1685, 1686, 5, 5, 0, 0, 1686, 341, 1, 0, 0, 0, 1687, 1688, 7, 2, 0, 0, 1688, 343, 1, 0, 0, 0, 120, 374, 377, 380, 383, 387, 391, 394, 397, 401, 404, 407, 410, 413, 416, 421, 424, 427, 440, 445, 450, 455, 460, 465, 470, 475, 480, 485, 490, 495, 500, 505, 510, 515, 520, 525, 530, 535, 540, 545, 556, 566, 569, 572, 575, 578, 603, 614, 617, 620, 623, 626, 629, 632, 635, 638, 641, 644, 647, 650, 653, 674, 677, 680, 683, 687, 690, 693, 718, 721, 750, 755, 759, 763, 766, 770, 783, 808, 811, 814, 817, 820, 826, 846, 849, 852, 855, 868, 879, 893, 912, 925, 1149, 1200, 1211, 1221, 1300, 1303, 1306, 1309, 1312, 1315, 1318, 1321, 1324, 1370, 1380, 1383, 1386, 1389, 1392, 1395, 1398, 1401, 1483, 1561, 1580, 1625, 1631, 1654, 1666] \ No newline at end of file +[4, 1, 142, 1704, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 379, 8, 5, 1, 5, 3, 5, 382, 8, 5, 1, 5, 3, 5, 385, 8, 5, 1, 5, 3, 5, 388, 8, 5, 1, 5, 1, 5, 3, 5, 392, 8, 5, 1, 5, 1, 5, 3, 5, 396, 8, 5, 1, 5, 3, 5, 399, 8, 5, 1, 5, 3, 5, 402, 8, 5, 1, 5, 1, 5, 3, 5, 406, 8, 5, 1, 5, 3, 5, 409, 8, 5, 1, 5, 3, 5, 412, 8, 5, 1, 5, 3, 5, 415, 8, 5, 1, 5, 3, 5, 418, 8, 5, 1, 5, 3, 5, 421, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 426, 8, 5, 1, 5, 3, 5, 429, 8, 5, 1, 5, 3, 5, 432, 8, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 4, 7, 443, 8, 7, 11, 7, 12, 7, 444, 1, 8, 4, 8, 448, 8, 8, 11, 8, 12, 8, 449, 1, 9, 4, 9, 453, 8, 9, 11, 9, 12, 9, 454, 1, 10, 4, 10, 458, 8, 10, 11, 10, 12, 10, 459, 1, 11, 4, 11, 463, 8, 11, 11, 11, 12, 11, 464, 1, 12, 4, 12, 468, 8, 12, 11, 12, 12, 12, 469, 1, 13, 4, 13, 473, 8, 13, 11, 13, 12, 13, 474, 1, 14, 4, 14, 478, 8, 14, 11, 14, 12, 14, 479, 1, 15, 4, 15, 483, 8, 15, 11, 15, 12, 15, 484, 1, 16, 4, 16, 488, 8, 16, 11, 16, 12, 16, 489, 1, 17, 4, 17, 493, 8, 17, 11, 17, 12, 17, 494, 1, 18, 4, 18, 498, 8, 18, 11, 18, 12, 18, 499, 1, 19, 4, 19, 503, 8, 19, 11, 19, 12, 19, 504, 1, 20, 4, 20, 508, 8, 20, 11, 20, 12, 20, 509, 1, 21, 4, 21, 513, 8, 21, 11, 21, 12, 21, 514, 1, 22, 4, 22, 518, 8, 22, 11, 22, 12, 22, 519, 1, 23, 4, 23, 523, 8, 23, 11, 23, 12, 23, 524, 1, 24, 4, 24, 528, 8, 24, 11, 24, 12, 24, 529, 1, 25, 4, 25, 533, 8, 25, 11, 25, 12, 25, 534, 1, 26, 4, 26, 538, 8, 26, 11, 26, 12, 26, 539, 1, 27, 4, 27, 543, 8, 27, 11, 27, 12, 27, 544, 1, 28, 4, 28, 548, 8, 28, 11, 28, 12, 28, 549, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 561, 8, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 571, 8, 30, 1, 30, 3, 30, 574, 8, 30, 1, 30, 3, 30, 577, 8, 30, 1, 30, 3, 30, 580, 8, 30, 1, 30, 3, 30, 583, 8, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 608, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 619, 8, 33, 1, 33, 3, 33, 622, 8, 33, 1, 33, 3, 33, 625, 8, 33, 1, 33, 3, 33, 628, 8, 33, 1, 33, 3, 33, 631, 8, 33, 1, 33, 3, 33, 634, 8, 33, 1, 33, 3, 33, 637, 8, 33, 1, 33, 3, 33, 640, 8, 33, 1, 33, 3, 33, 643, 8, 33, 1, 33, 3, 33, 646, 8, 33, 1, 33, 3, 33, 649, 8, 33, 1, 33, 3, 33, 652, 8, 33, 1, 33, 3, 33, 655, 8, 33, 1, 33, 3, 33, 658, 8, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 679, 8, 35, 1, 35, 3, 35, 682, 8, 35, 1, 35, 3, 35, 685, 8, 35, 1, 35, 3, 35, 688, 8, 35, 1, 35, 1, 35, 3, 35, 692, 8, 35, 1, 35, 3, 35, 695, 8, 35, 1, 35, 3, 35, 698, 8, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 723, 8, 37, 1, 37, 3, 37, 726, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 755, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 760, 8, 39, 1, 39, 1, 39, 3, 39, 764, 8, 39, 1, 39, 1, 39, 3, 39, 768, 8, 39, 1, 39, 3, 39, 771, 8, 39, 1, 39, 1, 39, 3, 39, 775, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 788, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 813, 8, 42, 1, 42, 3, 42, 816, 8, 42, 1, 42, 3, 42, 819, 8, 42, 1, 42, 3, 42, 822, 8, 42, 1, 42, 3, 42, 825, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 831, 8, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 851, 8, 44, 1, 44, 3, 44, 854, 8, 44, 1, 44, 3, 44, 857, 8, 44, 1, 44, 3, 44, 860, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 873, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 884, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 898, 8, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 917, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 930, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 5, 93, 1152, 8, 93, 10, 93, 12, 93, 1155, 9, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 5, 102, 1203, 8, 102, 10, 102, 12, 102, 1206, 9, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1214, 8, 103, 10, 103, 12, 103, 1217, 9, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 5, 104, 1224, 8, 104, 10, 104, 12, 104, 1227, 9, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1305, 8, 119, 1, 119, 3, 119, 1308, 8, 119, 1, 119, 3, 119, 1311, 8, 119, 1, 119, 3, 119, 1314, 8, 119, 1, 119, 3, 119, 1317, 8, 119, 1, 119, 3, 119, 1320, 8, 119, 1, 119, 3, 119, 1323, 8, 119, 1, 119, 3, 119, 1326, 8, 119, 1, 119, 3, 119, 1329, 8, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 5, 127, 1373, 8, 127, 10, 127, 12, 127, 1376, 9, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1385, 8, 128, 1, 128, 3, 128, 1388, 8, 128, 1, 128, 3, 128, 1391, 8, 128, 1, 128, 3, 128, 1394, 8, 128, 1, 128, 3, 128, 1397, 8, 128, 1, 128, 3, 128, 1400, 8, 128, 1, 128, 3, 128, 1403, 8, 128, 1, 128, 3, 128, 1406, 8, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1488, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1564, 8, 157, 10, 157, 12, 157, 1567, 9, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 5, 160, 1583, 8, 160, 10, 160, 12, 160, 1586, 9, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 5, 162, 1628, 8, 162, 10, 162, 12, 162, 1631, 9, 162, 1, 162, 1, 162, 1, 162, 3, 162, 1636, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 5, 166, 1657, 8, 166, 10, 166, 12, 166, 1660, 9, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 5, 167, 1669, 8, 167, 10, 167, 12, 167, 1672, 9, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 3, 171, 1695, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 1700, 8, 172, 1, 173, 1, 173, 1, 173, 0, 0, 174, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 0, 2, 2, 0, 13, 13, 136, 136, 5, 0, 8, 9, 12, 12, 14, 16, 19, 24, 27, 133, 1656, 0, 348, 1, 0, 0, 0, 2, 350, 1, 0, 0, 0, 4, 358, 1, 0, 0, 0, 6, 363, 1, 0, 0, 0, 8, 369, 1, 0, 0, 0, 10, 374, 1, 0, 0, 0, 12, 436, 1, 0, 0, 0, 14, 442, 1, 0, 0, 0, 16, 447, 1, 0, 0, 0, 18, 452, 1, 0, 0, 0, 20, 457, 1, 0, 0, 0, 22, 462, 1, 0, 0, 0, 24, 467, 1, 0, 0, 0, 26, 472, 1, 0, 0, 0, 28, 477, 1, 0, 0, 0, 30, 482, 1, 0, 0, 0, 32, 487, 1, 0, 0, 0, 34, 492, 1, 0, 0, 0, 36, 497, 1, 0, 0, 0, 38, 502, 1, 0, 0, 0, 40, 507, 1, 0, 0, 0, 42, 512, 1, 0, 0, 0, 44, 517, 1, 0, 0, 0, 46, 522, 1, 0, 0, 0, 48, 527, 1, 0, 0, 0, 50, 532, 1, 0, 0, 0, 52, 537, 1, 0, 0, 0, 54, 542, 1, 0, 0, 0, 56, 547, 1, 0, 0, 0, 58, 551, 1, 0, 0, 0, 60, 565, 1, 0, 0, 0, 62, 587, 1, 0, 0, 0, 64, 598, 1, 0, 0, 0, 66, 613, 1, 0, 0, 0, 68, 662, 1, 0, 0, 0, 70, 672, 1, 0, 0, 0, 72, 702, 1, 0, 0, 0, 74, 712, 1, 0, 0, 0, 76, 733, 1, 0, 0, 0, 78, 749, 1, 0, 0, 0, 80, 781, 1, 0, 0, 0, 82, 795, 1, 0, 0, 0, 84, 805, 1, 0, 0, 0, 86, 835, 1, 0, 0, 0, 88, 845, 1, 0, 0, 0, 90, 865, 1, 0, 0, 0, 92, 878, 1, 0, 0, 0, 94, 890, 1, 0, 0, 0, 96, 902, 1, 0, 0, 0, 98, 911, 1, 0, 0, 0, 100, 922, 1, 0, 0, 0, 102, 937, 1, 0, 0, 0, 104, 942, 1, 0, 0, 0, 106, 947, 1, 0, 0, 0, 108, 952, 1, 0, 0, 0, 110, 957, 1, 0, 0, 0, 112, 962, 1, 0, 0, 0, 114, 967, 1, 0, 0, 0, 116, 972, 1, 0, 0, 0, 118, 977, 1, 0, 0, 0, 120, 982, 1, 0, 0, 0, 122, 987, 1, 0, 0, 0, 124, 992, 1, 0, 0, 0, 126, 997, 1, 0, 0, 0, 128, 1002, 1, 0, 0, 0, 130, 1007, 1, 0, 0, 0, 132, 1012, 1, 0, 0, 0, 134, 1017, 1, 0, 0, 0, 136, 1022, 1, 0, 0, 0, 138, 1027, 1, 0, 0, 0, 140, 1032, 1, 0, 0, 0, 142, 1037, 1, 0, 0, 0, 144, 1042, 1, 0, 0, 0, 146, 1047, 1, 0, 0, 0, 148, 1052, 1, 0, 0, 0, 150, 1057, 1, 0, 0, 0, 152, 1062, 1, 0, 0, 0, 154, 1067, 1, 0, 0, 0, 156, 1072, 1, 0, 0, 0, 158, 1077, 1, 0, 0, 0, 160, 1082, 1, 0, 0, 0, 162, 1087, 1, 0, 0, 0, 164, 1092, 1, 0, 0, 0, 166, 1097, 1, 0, 0, 0, 168, 1102, 1, 0, 0, 0, 170, 1107, 1, 0, 0, 0, 172, 1112, 1, 0, 0, 0, 174, 1117, 1, 0, 0, 0, 176, 1122, 1, 0, 0, 0, 178, 1127, 1, 0, 0, 0, 180, 1132, 1, 0, 0, 0, 182, 1137, 1, 0, 0, 0, 184, 1142, 1, 0, 0, 0, 186, 1147, 1, 0, 0, 0, 188, 1159, 1, 0, 0, 0, 190, 1164, 1, 0, 0, 0, 192, 1169, 1, 0, 0, 0, 194, 1174, 1, 0, 0, 0, 196, 1179, 1, 0, 0, 0, 198, 1184, 1, 0, 0, 0, 200, 1189, 1, 0, 0, 0, 202, 1194, 1, 0, 0, 0, 204, 1199, 1, 0, 0, 0, 206, 1209, 1, 0, 0, 0, 208, 1220, 1, 0, 0, 0, 210, 1230, 1, 0, 0, 0, 212, 1235, 1, 0, 0, 0, 214, 1240, 1, 0, 0, 0, 216, 1245, 1, 0, 0, 0, 218, 1250, 1, 0, 0, 0, 220, 1255, 1, 0, 0, 0, 222, 1260, 1, 0, 0, 0, 224, 1265, 1, 0, 0, 0, 226, 1270, 1, 0, 0, 0, 228, 1275, 1, 0, 0, 0, 230, 1280, 1, 0, 0, 0, 232, 1285, 1, 0, 0, 0, 234, 1290, 1, 0, 0, 0, 236, 1295, 1, 0, 0, 0, 238, 1300, 1, 0, 0, 0, 240, 1333, 1, 0, 0, 0, 242, 1338, 1, 0, 0, 0, 244, 1343, 1, 0, 0, 0, 246, 1348, 1, 0, 0, 0, 248, 1353, 1, 0, 0, 0, 250, 1358, 1, 0, 0, 0, 252, 1363, 1, 0, 0, 0, 254, 1368, 1, 0, 0, 0, 256, 1380, 1, 0, 0, 0, 258, 1410, 1, 0, 0, 0, 260, 1415, 1, 0, 0, 0, 262, 1420, 1, 0, 0, 0, 264, 1425, 1, 0, 0, 0, 266, 1430, 1, 0, 0, 0, 268, 1435, 1, 0, 0, 0, 270, 1440, 1, 0, 0, 0, 272, 1445, 1, 0, 0, 0, 274, 1450, 1, 0, 0, 0, 276, 1455, 1, 0, 0, 0, 278, 1460, 1, 0, 0, 0, 280, 1465, 1, 0, 0, 0, 282, 1470, 1, 0, 0, 0, 284, 1487, 1, 0, 0, 0, 286, 1489, 1, 0, 0, 0, 288, 1494, 1, 0, 0, 0, 290, 1499, 1, 0, 0, 0, 292, 1504, 1, 0, 0, 0, 294, 1509, 1, 0, 0, 0, 296, 1514, 1, 0, 0, 0, 298, 1519, 1, 0, 0, 0, 300, 1524, 1, 0, 0, 0, 302, 1529, 1, 0, 0, 0, 304, 1534, 1, 0, 0, 0, 306, 1539, 1, 0, 0, 0, 308, 1544, 1, 0, 0, 0, 310, 1549, 1, 0, 0, 0, 312, 1554, 1, 0, 0, 0, 314, 1559, 1, 0, 0, 0, 316, 1571, 1, 0, 0, 0, 318, 1576, 1, 0, 0, 0, 320, 1584, 1, 0, 0, 0, 322, 1587, 1, 0, 0, 0, 324, 1635, 1, 0, 0, 0, 326, 1637, 1, 0, 0, 0, 328, 1642, 1, 0, 0, 0, 330, 1647, 1, 0, 0, 0, 332, 1652, 1, 0, 0, 0, 334, 1664, 1, 0, 0, 0, 336, 1676, 1, 0, 0, 0, 338, 1681, 1, 0, 0, 0, 340, 1686, 1, 0, 0, 0, 342, 1694, 1, 0, 0, 0, 344, 1699, 1, 0, 0, 0, 346, 1701, 1, 0, 0, 0, 348, 349, 3, 2, 1, 0, 349, 1, 1, 0, 0, 0, 350, 351, 5, 1, 0, 0, 351, 352, 3, 4, 2, 0, 352, 353, 3, 6, 3, 0, 353, 354, 3, 8, 4, 0, 354, 355, 3, 10, 5, 0, 355, 356, 3, 12, 6, 0, 356, 357, 5, 2, 0, 0, 357, 3, 1, 0, 0, 0, 358, 359, 5, 8, 0, 0, 359, 360, 5, 3, 0, 0, 360, 361, 5, 13, 0, 0, 361, 362, 5, 4, 0, 0, 362, 5, 1, 0, 0, 0, 363, 364, 5, 9, 0, 0, 364, 365, 5, 3, 0, 0, 365, 366, 5, 1, 0, 0, 366, 367, 5, 2, 0, 0, 367, 368, 5, 4, 0, 0, 368, 7, 1, 0, 0, 0, 369, 370, 5, 14, 0, 0, 370, 371, 5, 3, 0, 0, 371, 372, 5, 13, 0, 0, 372, 373, 5, 4, 0, 0, 373, 9, 1, 0, 0, 0, 374, 375, 5, 15, 0, 0, 375, 376, 5, 3, 0, 0, 376, 378, 5, 1, 0, 0, 377, 379, 3, 14, 7, 0, 378, 377, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 381, 1, 0, 0, 0, 380, 382, 3, 16, 8, 0, 381, 380, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 384, 1, 0, 0, 0, 383, 385, 3, 18, 9, 0, 384, 383, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 388, 3, 20, 10, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 3, 22, 11, 0, 390, 392, 3, 24, 12, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 395, 3, 26, 13, 0, 394, 396, 3, 28, 14, 0, 395, 394, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 398, 1, 0, 0, 0, 397, 399, 3, 32, 16, 0, 398, 397, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 401, 1, 0, 0, 0, 400, 402, 3, 30, 15, 0, 401, 400, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 405, 3, 34, 17, 0, 404, 406, 3, 36, 18, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 408, 1, 0, 0, 0, 407, 409, 3, 38, 19, 0, 408, 407, 1, 0, 0, 0, 408, 409, 1, 0, 0, 0, 409, 411, 1, 0, 0, 0, 410, 412, 3, 40, 20, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 414, 1, 0, 0, 0, 413, 415, 3, 42, 21, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 418, 3, 44, 22, 0, 417, 416, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 420, 1, 0, 0, 0, 419, 421, 3, 46, 23, 0, 420, 419, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 3, 48, 24, 0, 423, 425, 3, 50, 25, 0, 424, 426, 3, 52, 26, 0, 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 428, 1, 0, 0, 0, 427, 429, 3, 54, 27, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430, 432, 3, 56, 28, 0, 431, 430, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 5, 2, 0, 0, 434, 435, 5, 4, 0, 0, 435, 11, 1, 0, 0, 0, 436, 437, 5, 16, 0, 0, 437, 438, 5, 3, 0, 0, 438, 439, 5, 134, 0, 0, 439, 440, 5, 4, 0, 0, 440, 13, 1, 0, 0, 0, 441, 443, 3, 58, 29, 0, 442, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 15, 1, 0, 0, 0, 446, 448, 3, 60, 30, 0, 447, 446, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 17, 1, 0, 0, 0, 451, 453, 3, 62, 31, 0, 452, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 19, 1, 0, 0, 0, 456, 458, 3, 64, 32, 0, 457, 456, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 21, 1, 0, 0, 0, 461, 463, 3, 66, 33, 0, 462, 461, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 23, 1, 0, 0, 0, 466, 468, 3, 68, 34, 0, 467, 466, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 25, 1, 0, 0, 0, 471, 473, 3, 70, 35, 0, 472, 471, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 27, 1, 0, 0, 0, 476, 478, 3, 72, 36, 0, 477, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 29, 1, 0, 0, 0, 481, 483, 3, 74, 37, 0, 482, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 31, 1, 0, 0, 0, 486, 488, 3, 76, 38, 0, 487, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 33, 1, 0, 0, 0, 491, 493, 3, 78, 39, 0, 492, 491, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 35, 1, 0, 0, 0, 496, 498, 3, 80, 40, 0, 497, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 37, 1, 0, 0, 0, 501, 503, 3, 82, 41, 0, 502, 501, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 39, 1, 0, 0, 0, 506, 508, 3, 84, 42, 0, 507, 506, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 41, 1, 0, 0, 0, 511, 513, 3, 86, 43, 0, 512, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 43, 1, 0, 0, 0, 516, 518, 3, 88, 44, 0, 517, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 45, 1, 0, 0, 0, 521, 523, 3, 90, 45, 0, 522, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 522, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 47, 1, 0, 0, 0, 526, 528, 3, 92, 46, 0, 527, 526, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 49, 1, 0, 0, 0, 531, 533, 3, 94, 47, 0, 532, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 51, 1, 0, 0, 0, 536, 538, 3, 96, 48, 0, 537, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 53, 1, 0, 0, 0, 541, 543, 3, 98, 49, 0, 542, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 55, 1, 0, 0, 0, 546, 548, 3, 100, 50, 0, 547, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 57, 1, 0, 0, 0, 551, 552, 5, 134, 0, 0, 552, 553, 5, 3, 0, 0, 553, 554, 5, 1, 0, 0, 554, 555, 3, 102, 51, 0, 555, 556, 3, 210, 105, 0, 556, 557, 3, 212, 106, 0, 557, 558, 3, 224, 112, 0, 558, 560, 3, 192, 96, 0, 559, 561, 3, 226, 113, 0, 560, 559, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 5, 2, 0, 0, 563, 564, 5, 4, 0, 0, 564, 59, 1, 0, 0, 0, 565, 566, 5, 134, 0, 0, 566, 567, 5, 3, 0, 0, 567, 568, 5, 1, 0, 0, 568, 570, 3, 104, 52, 0, 569, 571, 3, 146, 73, 0, 570, 569, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 573, 1, 0, 0, 0, 572, 574, 3, 176, 88, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 576, 1, 0, 0, 0, 575, 577, 3, 178, 89, 0, 576, 575, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 579, 1, 0, 0, 0, 578, 580, 3, 148, 74, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 582, 1, 0, 0, 0, 581, 583, 3, 332, 166, 0, 582, 581, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584, 585, 5, 2, 0, 0, 585, 586, 5, 4, 0, 0, 586, 61, 1, 0, 0, 0, 587, 588, 5, 134, 0, 0, 588, 589, 5, 3, 0, 0, 589, 590, 5, 1, 0, 0, 590, 591, 3, 106, 53, 0, 591, 592, 3, 150, 75, 0, 592, 593, 3, 152, 76, 0, 593, 594, 3, 154, 77, 0, 594, 595, 3, 156, 78, 0, 595, 596, 5, 2, 0, 0, 596, 597, 5, 4, 0, 0, 597, 63, 1, 0, 0, 0, 598, 599, 5, 134, 0, 0, 599, 600, 5, 3, 0, 0, 600, 601, 5, 1, 0, 0, 601, 602, 3, 108, 54, 0, 602, 603, 3, 198, 99, 0, 603, 604, 3, 316, 158, 0, 604, 605, 3, 318, 159, 0, 605, 607, 3, 200, 100, 0, 606, 608, 3, 192, 96, 0, 607, 606, 1, 0, 0, 0, 607, 608, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 3, 202, 101, 0, 610, 611, 5, 2, 0, 0, 611, 612, 5, 4, 0, 0, 612, 65, 1, 0, 0, 0, 613, 614, 5, 134, 0, 0, 614, 615, 5, 3, 0, 0, 615, 616, 5, 1, 0, 0, 616, 618, 3, 110, 55, 0, 617, 619, 3, 160, 80, 0, 618, 617, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 621, 1, 0, 0, 0, 620, 622, 3, 162, 81, 0, 621, 620, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 624, 1, 0, 0, 0, 623, 625, 3, 158, 79, 0, 624, 623, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 627, 1, 0, 0, 0, 626, 628, 3, 166, 83, 0, 627, 626, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 630, 1, 0, 0, 0, 629, 631, 3, 168, 84, 0, 630, 629, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 633, 1, 0, 0, 0, 632, 634, 3, 164, 82, 0, 633, 632, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 636, 1, 0, 0, 0, 635, 637, 3, 232, 116, 0, 636, 635, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 639, 1, 0, 0, 0, 638, 640, 3, 192, 96, 0, 639, 638, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 642, 1, 0, 0, 0, 641, 643, 3, 194, 97, 0, 642, 641, 1, 0, 0, 0, 642, 643, 1, 0, 0, 0, 643, 645, 1, 0, 0, 0, 644, 646, 3, 236, 118, 0, 645, 644, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 648, 1, 0, 0, 0, 647, 649, 3, 196, 98, 0, 648, 647, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 651, 1, 0, 0, 0, 650, 652, 3, 170, 85, 0, 651, 650, 1, 0, 0, 0, 651, 652, 1, 0, 0, 0, 652, 654, 1, 0, 0, 0, 653, 655, 3, 234, 117, 0, 654, 653, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 657, 1, 0, 0, 0, 656, 658, 3, 172, 86, 0, 657, 656, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 5, 2, 0, 0, 660, 661, 5, 4, 0, 0, 661, 67, 1, 0, 0, 0, 662, 663, 5, 134, 0, 0, 663, 664, 5, 3, 0, 0, 664, 665, 5, 1, 0, 0, 665, 666, 3, 112, 56, 0, 666, 667, 3, 198, 99, 0, 667, 668, 3, 200, 100, 0, 668, 669, 3, 202, 101, 0, 669, 670, 5, 2, 0, 0, 670, 671, 5, 4, 0, 0, 671, 69, 1, 0, 0, 0, 672, 673, 5, 134, 0, 0, 673, 674, 5, 3, 0, 0, 674, 675, 5, 1, 0, 0, 675, 676, 3, 114, 57, 0, 676, 678, 3, 180, 90, 0, 677, 679, 3, 168, 84, 0, 678, 677, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 681, 1, 0, 0, 0, 680, 682, 3, 166, 83, 0, 681, 680, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 684, 1, 0, 0, 0, 683, 685, 3, 192, 96, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 687, 1, 0, 0, 0, 686, 688, 3, 194, 97, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 691, 3, 196, 98, 0, 690, 692, 3, 170, 85, 0, 691, 690, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 694, 1, 0, 0, 0, 693, 695, 3, 172, 86, 0, 694, 693, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 697, 1, 0, 0, 0, 696, 698, 3, 174, 87, 0, 697, 696, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 5, 2, 0, 0, 700, 701, 5, 4, 0, 0, 701, 71, 1, 0, 0, 0, 702, 703, 5, 134, 0, 0, 703, 704, 5, 3, 0, 0, 704, 705, 5, 1, 0, 0, 705, 706, 3, 116, 58, 0, 706, 707, 3, 198, 99, 0, 707, 708, 3, 200, 100, 0, 708, 709, 3, 202, 101, 0, 709, 710, 5, 2, 0, 0, 710, 711, 5, 4, 0, 0, 711, 73, 1, 0, 0, 0, 712, 713, 5, 134, 0, 0, 713, 714, 5, 3, 0, 0, 714, 715, 5, 1, 0, 0, 715, 716, 3, 118, 59, 0, 716, 717, 3, 210, 105, 0, 717, 718, 3, 212, 106, 0, 718, 719, 3, 214, 107, 0, 719, 720, 3, 224, 112, 0, 720, 722, 3, 192, 96, 0, 721, 723, 3, 182, 91, 0, 722, 721, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 725, 1, 0, 0, 0, 724, 726, 3, 190, 95, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 3, 226, 113, 0, 728, 729, 3, 228, 114, 0, 729, 730, 3, 230, 115, 0, 730, 731, 5, 2, 0, 0, 731, 732, 5, 4, 0, 0, 732, 75, 1, 0, 0, 0, 733, 734, 5, 134, 0, 0, 734, 735, 5, 3, 0, 0, 735, 736, 5, 1, 0, 0, 736, 737, 3, 120, 60, 0, 737, 738, 3, 216, 108, 0, 738, 739, 3, 210, 105, 0, 739, 740, 3, 212, 106, 0, 740, 741, 3, 218, 109, 0, 741, 742, 3, 220, 110, 0, 742, 743, 3, 224, 112, 0, 743, 744, 3, 192, 96, 0, 744, 745, 3, 222, 111, 0, 745, 746, 3, 226, 113, 0, 746, 747, 5, 2, 0, 0, 747, 748, 5, 4, 0, 0, 748, 77, 1, 0, 0, 0, 749, 750, 5, 134, 0, 0, 750, 751, 5, 3, 0, 0, 751, 752, 5, 1, 0, 0, 752, 754, 3, 122, 61, 0, 753, 755, 3, 238, 119, 0, 754, 753, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 757, 3, 210, 105, 0, 757, 759, 3, 268, 134, 0, 758, 760, 3, 270, 135, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 763, 3, 272, 136, 0, 762, 764, 3, 274, 137, 0, 763, 762, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 767, 3, 276, 138, 0, 766, 768, 3, 280, 140, 0, 767, 766, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 770, 1, 0, 0, 0, 769, 771, 3, 278, 139, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 3, 282, 141, 0, 773, 775, 3, 284, 142, 0, 774, 773, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 777, 3, 286, 143, 0, 777, 778, 3, 288, 144, 0, 778, 779, 5, 2, 0, 0, 779, 780, 5, 4, 0, 0, 780, 79, 1, 0, 0, 0, 781, 782, 5, 134, 0, 0, 782, 783, 5, 3, 0, 0, 783, 784, 5, 1, 0, 0, 784, 785, 3, 124, 62, 0, 785, 787, 3, 308, 154, 0, 786, 788, 3, 192, 96, 0, 787, 786, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 790, 3, 194, 97, 0, 790, 791, 3, 310, 155, 0, 791, 792, 3, 196, 98, 0, 792, 793, 5, 2, 0, 0, 793, 794, 5, 4, 0, 0, 794, 81, 1, 0, 0, 0, 795, 796, 5, 134, 0, 0, 796, 797, 5, 3, 0, 0, 797, 798, 5, 1, 0, 0, 798, 799, 3, 126, 63, 0, 799, 800, 3, 198, 99, 0, 800, 801, 3, 200, 100, 0, 801, 802, 3, 202, 101, 0, 802, 803, 5, 2, 0, 0, 803, 804, 5, 4, 0, 0, 804, 83, 1, 0, 0, 0, 805, 806, 5, 134, 0, 0, 806, 807, 5, 3, 0, 0, 807, 808, 5, 1, 0, 0, 808, 809, 3, 128, 64, 0, 809, 810, 3, 198, 99, 0, 810, 812, 3, 200, 100, 0, 811, 813, 3, 290, 145, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 815, 1, 0, 0, 0, 814, 816, 3, 292, 146, 0, 815, 814, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 816, 818, 1, 0, 0, 0, 817, 819, 3, 192, 96, 0, 818, 817, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 822, 3, 294, 147, 0, 821, 820, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 824, 1, 0, 0, 0, 823, 825, 3, 296, 148, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 202, 101, 0, 827, 828, 3, 298, 149, 0, 828, 830, 3, 300, 150, 0, 829, 831, 3, 302, 151, 0, 830, 829, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 833, 5, 2, 0, 0, 833, 834, 5, 4, 0, 0, 834, 85, 1, 0, 0, 0, 835, 836, 5, 134, 0, 0, 836, 837, 5, 3, 0, 0, 837, 838, 5, 1, 0, 0, 838, 839, 3, 130, 65, 0, 839, 840, 3, 198, 99, 0, 840, 841, 3, 200, 100, 0, 841, 842, 3, 202, 101, 0, 842, 843, 5, 2, 0, 0, 843, 844, 5, 4, 0, 0, 844, 87, 1, 0, 0, 0, 845, 846, 5, 134, 0, 0, 846, 847, 5, 3, 0, 0, 847, 848, 5, 1, 0, 0, 848, 850, 3, 132, 66, 0, 849, 851, 3, 192, 96, 0, 850, 849, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 853, 1, 0, 0, 0, 852, 854, 3, 176, 88, 0, 853, 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 856, 1, 0, 0, 0, 855, 857, 3, 178, 89, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 859, 1, 0, 0, 0, 858, 860, 3, 304, 152, 0, 859, 858, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 3, 306, 153, 0, 862, 863, 5, 2, 0, 0, 863, 864, 5, 4, 0, 0, 864, 89, 1, 0, 0, 0, 865, 866, 5, 134, 0, 0, 866, 867, 5, 3, 0, 0, 867, 868, 5, 1, 0, 0, 868, 869, 3, 134, 67, 0, 869, 870, 3, 180, 90, 0, 870, 872, 3, 192, 96, 0, 871, 873, 3, 194, 97, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 3, 196, 98, 0, 875, 876, 5, 2, 0, 0, 876, 877, 5, 4, 0, 0, 877, 91, 1, 0, 0, 0, 878, 879, 5, 134, 0, 0, 879, 880, 5, 3, 0, 0, 880, 881, 5, 1, 0, 0, 881, 883, 3, 136, 68, 0, 882, 884, 3, 312, 156, 0, 883, 882, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 886, 3, 314, 157, 0, 886, 887, 3, 192, 96, 0, 887, 888, 5, 2, 0, 0, 888, 889, 5, 4, 0, 0, 889, 93, 1, 0, 0, 0, 890, 891, 5, 134, 0, 0, 891, 892, 5, 3, 0, 0, 892, 893, 5, 1, 0, 0, 893, 894, 3, 138, 69, 0, 894, 895, 3, 326, 163, 0, 895, 897, 3, 328, 164, 0, 896, 898, 3, 330, 165, 0, 897, 896, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 900, 5, 2, 0, 0, 900, 901, 5, 4, 0, 0, 901, 95, 1, 0, 0, 0, 902, 903, 5, 134, 0, 0, 903, 904, 5, 3, 0, 0, 904, 905, 5, 1, 0, 0, 905, 906, 3, 140, 70, 0, 906, 907, 3, 184, 92, 0, 907, 908, 3, 186, 93, 0, 908, 909, 5, 2, 0, 0, 909, 910, 5, 4, 0, 0, 910, 97, 1, 0, 0, 0, 911, 912, 5, 134, 0, 0, 912, 913, 5, 3, 0, 0, 913, 914, 5, 1, 0, 0, 914, 916, 3, 142, 71, 0, 915, 917, 3, 188, 94, 0, 916, 915, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 919, 3, 226, 113, 0, 919, 920, 5, 2, 0, 0, 920, 921, 5, 4, 0, 0, 921, 99, 1, 0, 0, 0, 922, 923, 5, 134, 0, 0, 923, 924, 5, 3, 0, 0, 924, 925, 5, 1, 0, 0, 925, 926, 3, 144, 72, 0, 926, 927, 3, 180, 90, 0, 927, 929, 3, 336, 168, 0, 928, 930, 3, 192, 96, 0, 929, 928, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 932, 3, 194, 97, 0, 932, 933, 3, 196, 98, 0, 933, 934, 3, 338, 169, 0, 934, 935, 5, 2, 0, 0, 935, 936, 5, 4, 0, 0, 936, 101, 1, 0, 0, 0, 937, 938, 5, 12, 0, 0, 938, 939, 5, 3, 0, 0, 939, 940, 5, 19, 0, 0, 940, 941, 5, 4, 0, 0, 941, 103, 1, 0, 0, 0, 942, 943, 5, 12, 0, 0, 943, 944, 5, 3, 0, 0, 944, 945, 5, 20, 0, 0, 945, 946, 5, 4, 0, 0, 946, 105, 1, 0, 0, 0, 947, 948, 5, 12, 0, 0, 948, 949, 5, 3, 0, 0, 949, 950, 5, 21, 0, 0, 950, 951, 5, 4, 0, 0, 951, 107, 1, 0, 0, 0, 952, 953, 5, 12, 0, 0, 953, 954, 5, 3, 0, 0, 954, 955, 5, 22, 0, 0, 955, 956, 5, 4, 0, 0, 956, 109, 1, 0, 0, 0, 957, 958, 5, 12, 0, 0, 958, 959, 5, 3, 0, 0, 959, 960, 5, 23, 0, 0, 960, 961, 5, 4, 0, 0, 961, 111, 1, 0, 0, 0, 962, 963, 5, 12, 0, 0, 963, 964, 5, 3, 0, 0, 964, 965, 5, 24, 0, 0, 965, 966, 5, 4, 0, 0, 966, 113, 1, 0, 0, 0, 967, 968, 5, 12, 0, 0, 968, 969, 5, 3, 0, 0, 969, 970, 5, 25, 0, 0, 970, 971, 5, 4, 0, 0, 971, 115, 1, 0, 0, 0, 972, 973, 5, 12, 0, 0, 973, 974, 5, 3, 0, 0, 974, 975, 5, 26, 0, 0, 975, 976, 5, 4, 0, 0, 976, 117, 1, 0, 0, 0, 977, 978, 5, 12, 0, 0, 978, 979, 5, 3, 0, 0, 979, 980, 5, 27, 0, 0, 980, 981, 5, 4, 0, 0, 981, 119, 1, 0, 0, 0, 982, 983, 5, 12, 0, 0, 983, 984, 5, 3, 0, 0, 984, 985, 5, 28, 0, 0, 985, 986, 5, 4, 0, 0, 986, 121, 1, 0, 0, 0, 987, 988, 5, 12, 0, 0, 988, 989, 5, 3, 0, 0, 989, 990, 5, 29, 0, 0, 990, 991, 5, 4, 0, 0, 991, 123, 1, 0, 0, 0, 992, 993, 5, 12, 0, 0, 993, 994, 5, 3, 0, 0, 994, 995, 5, 30, 0, 0, 995, 996, 5, 4, 0, 0, 996, 125, 1, 0, 0, 0, 997, 998, 5, 12, 0, 0, 998, 999, 5, 3, 0, 0, 999, 1000, 5, 31, 0, 0, 1000, 1001, 5, 4, 0, 0, 1001, 127, 1, 0, 0, 0, 1002, 1003, 5, 12, 0, 0, 1003, 1004, 5, 3, 0, 0, 1004, 1005, 5, 32, 0, 0, 1005, 1006, 5, 4, 0, 0, 1006, 129, 1, 0, 0, 0, 1007, 1008, 5, 12, 0, 0, 1008, 1009, 5, 3, 0, 0, 1009, 1010, 5, 33, 0, 0, 1010, 1011, 5, 4, 0, 0, 1011, 131, 1, 0, 0, 0, 1012, 1013, 5, 12, 0, 0, 1013, 1014, 5, 3, 0, 0, 1014, 1015, 5, 34, 0, 0, 1015, 1016, 5, 4, 0, 0, 1016, 133, 1, 0, 0, 0, 1017, 1018, 5, 12, 0, 0, 1018, 1019, 5, 3, 0, 0, 1019, 1020, 5, 35, 0, 0, 1020, 1021, 5, 4, 0, 0, 1021, 135, 1, 0, 0, 0, 1022, 1023, 5, 12, 0, 0, 1023, 1024, 5, 3, 0, 0, 1024, 1025, 5, 36, 0, 0, 1025, 1026, 5, 4, 0, 0, 1026, 137, 1, 0, 0, 0, 1027, 1028, 5, 12, 0, 0, 1028, 1029, 5, 3, 0, 0, 1029, 1030, 5, 37, 0, 0, 1030, 1031, 5, 4, 0, 0, 1031, 139, 1, 0, 0, 0, 1032, 1033, 5, 12, 0, 0, 1033, 1034, 5, 3, 0, 0, 1034, 1035, 5, 38, 0, 0, 1035, 1036, 5, 4, 0, 0, 1036, 141, 1, 0, 0, 0, 1037, 1038, 5, 12, 0, 0, 1038, 1039, 5, 3, 0, 0, 1039, 1040, 5, 39, 0, 0, 1040, 1041, 5, 4, 0, 0, 1041, 143, 1, 0, 0, 0, 1042, 1043, 5, 12, 0, 0, 1043, 1044, 5, 3, 0, 0, 1044, 1045, 5, 40, 0, 0, 1045, 1046, 5, 4, 0, 0, 1046, 145, 1, 0, 0, 0, 1047, 1048, 5, 41, 0, 0, 1048, 1049, 5, 3, 0, 0, 1049, 1050, 5, 134, 0, 0, 1050, 1051, 5, 4, 0, 0, 1051, 147, 1, 0, 0, 0, 1052, 1053, 5, 42, 0, 0, 1053, 1054, 5, 3, 0, 0, 1054, 1055, 5, 134, 0, 0, 1055, 1056, 5, 4, 0, 0, 1056, 149, 1, 0, 0, 0, 1057, 1058, 5, 43, 0, 0, 1058, 1059, 5, 3, 0, 0, 1059, 1060, 5, 134, 0, 0, 1060, 1061, 5, 4, 0, 0, 1061, 151, 1, 0, 0, 0, 1062, 1063, 5, 44, 0, 0, 1063, 1064, 5, 3, 0, 0, 1064, 1065, 5, 13, 0, 0, 1065, 1066, 5, 4, 0, 0, 1066, 153, 1, 0, 0, 0, 1067, 1068, 5, 45, 0, 0, 1068, 1069, 5, 3, 0, 0, 1069, 1070, 5, 134, 0, 0, 1070, 1071, 5, 4, 0, 0, 1071, 155, 1, 0, 0, 0, 1072, 1073, 5, 46, 0, 0, 1073, 1074, 5, 3, 0, 0, 1074, 1075, 3, 344, 172, 0, 1075, 1076, 5, 4, 0, 0, 1076, 157, 1, 0, 0, 0, 1077, 1078, 5, 47, 0, 0, 1078, 1079, 5, 3, 0, 0, 1079, 1080, 5, 13, 0, 0, 1080, 1081, 5, 4, 0, 0, 1081, 159, 1, 0, 0, 0, 1082, 1083, 5, 48, 0, 0, 1083, 1084, 5, 3, 0, 0, 1084, 1085, 3, 344, 172, 0, 1085, 1086, 5, 4, 0, 0, 1086, 161, 1, 0, 0, 0, 1087, 1088, 5, 49, 0, 0, 1088, 1089, 5, 3, 0, 0, 1089, 1090, 3, 344, 172, 0, 1090, 1091, 5, 4, 0, 0, 1091, 163, 1, 0, 0, 0, 1092, 1093, 5, 50, 0, 0, 1093, 1094, 5, 3, 0, 0, 1094, 1095, 3, 344, 172, 0, 1095, 1096, 5, 4, 0, 0, 1096, 165, 1, 0, 0, 0, 1097, 1098, 5, 51, 0, 0, 1098, 1099, 5, 3, 0, 0, 1099, 1100, 5, 13, 0, 0, 1100, 1101, 5, 4, 0, 0, 1101, 167, 1, 0, 0, 0, 1102, 1103, 5, 52, 0, 0, 1103, 1104, 5, 3, 0, 0, 1104, 1105, 5, 13, 0, 0, 1105, 1106, 5, 4, 0, 0, 1106, 169, 1, 0, 0, 0, 1107, 1108, 5, 53, 0, 0, 1108, 1109, 5, 3, 0, 0, 1109, 1110, 5, 13, 0, 0, 1110, 1111, 5, 4, 0, 0, 1111, 171, 1, 0, 0, 0, 1112, 1113, 5, 54, 0, 0, 1113, 1114, 5, 3, 0, 0, 1114, 1115, 5, 13, 0, 0, 1115, 1116, 5, 4, 0, 0, 1116, 173, 1, 0, 0, 0, 1117, 1118, 5, 55, 0, 0, 1118, 1119, 5, 3, 0, 0, 1119, 1120, 5, 13, 0, 0, 1120, 1121, 5, 4, 0, 0, 1121, 175, 1, 0, 0, 0, 1122, 1123, 5, 56, 0, 0, 1123, 1124, 5, 3, 0, 0, 1124, 1125, 3, 342, 171, 0, 1125, 1126, 5, 4, 0, 0, 1126, 177, 1, 0, 0, 0, 1127, 1128, 5, 57, 0, 0, 1128, 1129, 5, 3, 0, 0, 1129, 1130, 3, 206, 103, 0, 1130, 1131, 5, 4, 0, 0, 1131, 179, 1, 0, 0, 0, 1132, 1133, 5, 58, 0, 0, 1133, 1134, 5, 3, 0, 0, 1134, 1135, 3, 204, 102, 0, 1135, 1136, 5, 4, 0, 0, 1136, 181, 1, 0, 0, 0, 1137, 1138, 5, 59, 0, 0, 1138, 1139, 5, 3, 0, 0, 1139, 1140, 5, 135, 0, 0, 1140, 1141, 5, 4, 0, 0, 1141, 183, 1, 0, 0, 0, 1142, 1143, 5, 60, 0, 0, 1143, 1144, 5, 3, 0, 0, 1144, 1145, 5, 135, 0, 0, 1145, 1146, 5, 4, 0, 0, 1146, 185, 1, 0, 0, 0, 1147, 1148, 5, 61, 0, 0, 1148, 1149, 5, 3, 0, 0, 1149, 1153, 5, 1, 0, 0, 1150, 1152, 3, 324, 162, 0, 1151, 1150, 1, 0, 0, 0, 1152, 1155, 1, 0, 0, 0, 1153, 1151, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1156, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1156, 1157, 5, 2, 0, 0, 1157, 1158, 5, 4, 0, 0, 1158, 187, 1, 0, 0, 0, 1159, 1160, 5, 62, 0, 0, 1160, 1161, 5, 3, 0, 0, 1161, 1162, 5, 134, 0, 0, 1162, 1163, 5, 4, 0, 0, 1163, 189, 1, 0, 0, 0, 1164, 1165, 5, 63, 0, 0, 1165, 1166, 5, 3, 0, 0, 1166, 1167, 3, 204, 102, 0, 1167, 1168, 5, 4, 0, 0, 1168, 191, 1, 0, 0, 0, 1169, 1170, 5, 64, 0, 0, 1170, 1171, 5, 3, 0, 0, 1171, 1172, 3, 342, 171, 0, 1172, 1173, 5, 4, 0, 0, 1173, 193, 1, 0, 0, 0, 1174, 1175, 5, 65, 0, 0, 1175, 1176, 5, 3, 0, 0, 1176, 1177, 3, 342, 171, 0, 1177, 1178, 5, 4, 0, 0, 1178, 195, 1, 0, 0, 0, 1179, 1180, 5, 66, 0, 0, 1180, 1181, 5, 3, 0, 0, 1181, 1182, 3, 342, 171, 0, 1182, 1183, 5, 4, 0, 0, 1183, 197, 1, 0, 0, 0, 1184, 1185, 5, 67, 0, 0, 1185, 1186, 5, 3, 0, 0, 1186, 1187, 5, 13, 0, 0, 1187, 1188, 5, 4, 0, 0, 1188, 199, 1, 0, 0, 0, 1189, 1190, 5, 68, 0, 0, 1190, 1191, 5, 3, 0, 0, 1191, 1192, 3, 204, 102, 0, 1192, 1193, 5, 4, 0, 0, 1193, 201, 1, 0, 0, 0, 1194, 1195, 5, 69, 0, 0, 1195, 1196, 5, 3, 0, 0, 1196, 1197, 5, 13, 0, 0, 1197, 1198, 5, 4, 0, 0, 1198, 203, 1, 0, 0, 0, 1199, 1204, 5, 5, 0, 0, 1200, 1201, 5, 134, 0, 0, 1201, 1203, 5, 6, 0, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1206, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1207, 1, 0, 0, 0, 1206, 1204, 1, 0, 0, 0, 1207, 1208, 5, 7, 0, 0, 1208, 205, 1, 0, 0, 0, 1209, 1215, 5, 5, 0, 0, 1210, 1211, 3, 344, 172, 0, 1211, 1212, 5, 6, 0, 0, 1212, 1214, 1, 0, 0, 0, 1213, 1210, 1, 0, 0, 0, 1214, 1217, 1, 0, 0, 0, 1215, 1213, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1218, 1219, 5, 7, 0, 0, 1219, 207, 1, 0, 0, 0, 1220, 1225, 5, 5, 0, 0, 1221, 1222, 5, 136, 0, 0, 1222, 1224, 5, 6, 0, 0, 1223, 1221, 1, 0, 0, 0, 1224, 1227, 1, 0, 0, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1228, 1, 0, 0, 0, 1227, 1225, 1, 0, 0, 0, 1228, 1229, 5, 7, 0, 0, 1229, 209, 1, 0, 0, 0, 1230, 1231, 5, 70, 0, 0, 1231, 1232, 5, 3, 0, 0, 1232, 1233, 5, 134, 0, 0, 1233, 1234, 5, 4, 0, 0, 1234, 211, 1, 0, 0, 0, 1235, 1236, 5, 71, 0, 0, 1236, 1237, 5, 3, 0, 0, 1237, 1238, 3, 204, 102, 0, 1238, 1239, 5, 4, 0, 0, 1239, 213, 1, 0, 0, 0, 1240, 1241, 5, 72, 0, 0, 1241, 1242, 5, 3, 0, 0, 1242, 1243, 3, 204, 102, 0, 1243, 1244, 5, 4, 0, 0, 1244, 215, 1, 0, 0, 0, 1245, 1246, 5, 73, 0, 0, 1246, 1247, 5, 3, 0, 0, 1247, 1248, 3, 342, 171, 0, 1248, 1249, 5, 4, 0, 0, 1249, 217, 1, 0, 0, 0, 1250, 1251, 5, 74, 0, 0, 1251, 1252, 5, 3, 0, 0, 1252, 1253, 3, 342, 171, 0, 1253, 1254, 5, 4, 0, 0, 1254, 219, 1, 0, 0, 0, 1255, 1256, 5, 75, 0, 0, 1256, 1257, 5, 3, 0, 0, 1257, 1258, 3, 342, 171, 0, 1258, 1259, 5, 4, 0, 0, 1259, 221, 1, 0, 0, 0, 1260, 1261, 5, 76, 0, 0, 1261, 1262, 5, 3, 0, 0, 1262, 1263, 5, 13, 0, 0, 1263, 1264, 5, 4, 0, 0, 1264, 223, 1, 0, 0, 0, 1265, 1266, 5, 77, 0, 0, 1266, 1267, 5, 3, 0, 0, 1267, 1268, 3, 204, 102, 0, 1268, 1269, 5, 4, 0, 0, 1269, 225, 1, 0, 0, 0, 1270, 1271, 5, 78, 0, 0, 1271, 1272, 5, 3, 0, 0, 1272, 1273, 3, 344, 172, 0, 1273, 1274, 5, 4, 0, 0, 1274, 227, 1, 0, 0, 0, 1275, 1276, 5, 79, 0, 0, 1276, 1277, 5, 3, 0, 0, 1277, 1278, 5, 134, 0, 0, 1278, 1279, 5, 4, 0, 0, 1279, 229, 1, 0, 0, 0, 1280, 1281, 5, 80, 0, 0, 1281, 1282, 5, 3, 0, 0, 1282, 1283, 5, 135, 0, 0, 1283, 1284, 5, 4, 0, 0, 1284, 231, 1, 0, 0, 0, 1285, 1286, 5, 81, 0, 0, 1286, 1287, 5, 3, 0, 0, 1287, 1288, 5, 13, 0, 0, 1288, 1289, 5, 4, 0, 0, 1289, 233, 1, 0, 0, 0, 1290, 1291, 5, 82, 0, 0, 1291, 1292, 5, 3, 0, 0, 1292, 1293, 3, 344, 172, 0, 1293, 1294, 5, 4, 0, 0, 1294, 235, 1, 0, 0, 0, 1295, 1296, 5, 83, 0, 0, 1296, 1297, 5, 3, 0, 0, 1297, 1298, 3, 344, 172, 0, 1298, 1299, 5, 4, 0, 0, 1299, 237, 1, 0, 0, 0, 1300, 1301, 5, 84, 0, 0, 1301, 1302, 5, 3, 0, 0, 1302, 1304, 5, 1, 0, 0, 1303, 1305, 3, 246, 123, 0, 1304, 1303, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1307, 1, 0, 0, 0, 1306, 1308, 3, 340, 170, 0, 1307, 1306, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1310, 1, 0, 0, 0, 1309, 1311, 3, 242, 121, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1313, 1, 0, 0, 0, 1312, 1314, 3, 240, 120, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1316, 1, 0, 0, 0, 1315, 1317, 3, 244, 122, 0, 1316, 1315, 1, 0, 0, 0, 1316, 1317, 1, 0, 0, 0, 1317, 1319, 1, 0, 0, 0, 1318, 1320, 3, 248, 124, 0, 1319, 1318, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 1322, 1, 0, 0, 0, 1321, 1323, 3, 250, 125, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1326, 3, 252, 126, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1329, 3, 254, 127, 0, 1328, 1327, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1331, 5, 2, 0, 0, 1331, 1332, 5, 4, 0, 0, 1332, 239, 1, 0, 0, 0, 1333, 1334, 5, 85, 0, 0, 1334, 1335, 5, 3, 0, 0, 1335, 1336, 5, 13, 0, 0, 1336, 1337, 5, 4, 0, 0, 1337, 241, 1, 0, 0, 0, 1338, 1339, 5, 86, 0, 0, 1339, 1340, 5, 3, 0, 0, 1340, 1341, 5, 136, 0, 0, 1341, 1342, 5, 4, 0, 0, 1342, 243, 1, 0, 0, 0, 1343, 1344, 5, 87, 0, 0, 1344, 1345, 5, 3, 0, 0, 1345, 1346, 5, 13, 0, 0, 1346, 1347, 5, 4, 0, 0, 1347, 245, 1, 0, 0, 0, 1348, 1349, 5, 88, 0, 0, 1349, 1350, 5, 3, 0, 0, 1350, 1351, 7, 0, 0, 0, 1351, 1352, 5, 4, 0, 0, 1352, 247, 1, 0, 0, 0, 1353, 1354, 5, 89, 0, 0, 1354, 1355, 5, 3, 0, 0, 1355, 1356, 5, 13, 0, 0, 1356, 1357, 5, 4, 0, 0, 1357, 249, 1, 0, 0, 0, 1358, 1359, 5, 90, 0, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1361, 5, 13, 0, 0, 1361, 1362, 5, 4, 0, 0, 1362, 251, 1, 0, 0, 0, 1363, 1364, 5, 91, 0, 0, 1364, 1365, 5, 3, 0, 0, 1365, 1366, 3, 344, 172, 0, 1366, 1367, 5, 4, 0, 0, 1367, 253, 1, 0, 0, 0, 1368, 1369, 5, 92, 0, 0, 1369, 1370, 5, 3, 0, 0, 1370, 1374, 5, 1, 0, 0, 1371, 1373, 3, 256, 128, 0, 1372, 1371, 1, 0, 0, 0, 1373, 1376, 1, 0, 0, 0, 1374, 1372, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1377, 1, 0, 0, 0, 1376, 1374, 1, 0, 0, 0, 1377, 1378, 5, 2, 0, 0, 1378, 1379, 5, 4, 0, 0, 1379, 255, 1, 0, 0, 0, 1380, 1381, 5, 134, 0, 0, 1381, 1382, 5, 3, 0, 0, 1382, 1384, 5, 1, 0, 0, 1383, 1385, 3, 258, 129, 0, 1384, 1383, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1388, 3, 260, 130, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1391, 3, 262, 131, 0, 1390, 1389, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1393, 1, 0, 0, 0, 1392, 1394, 3, 264, 132, 0, 1393, 1392, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1396, 1, 0, 0, 0, 1395, 1397, 3, 240, 120, 0, 1396, 1395, 1, 0, 0, 0, 1396, 1397, 1, 0, 0, 0, 1397, 1399, 1, 0, 0, 0, 1398, 1400, 3, 266, 133, 0, 1399, 1398, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1402, 1, 0, 0, 0, 1401, 1403, 3, 334, 167, 0, 1402, 1401, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1406, 3, 260, 130, 0, 1405, 1404, 1, 0, 0, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1407, 1, 0, 0, 0, 1407, 1408, 5, 2, 0, 0, 1408, 1409, 5, 4, 0, 0, 1409, 257, 1, 0, 0, 0, 1410, 1411, 5, 93, 0, 0, 1411, 1412, 5, 3, 0, 0, 1412, 1413, 5, 136, 0, 0, 1413, 1414, 5, 4, 0, 0, 1414, 259, 1, 0, 0, 0, 1415, 1416, 5, 94, 0, 0, 1416, 1417, 5, 3, 0, 0, 1417, 1418, 5, 134, 0, 0, 1418, 1419, 5, 4, 0, 0, 1419, 261, 1, 0, 0, 0, 1420, 1421, 5, 95, 0, 0, 1421, 1422, 5, 3, 0, 0, 1422, 1423, 3, 342, 171, 0, 1423, 1424, 5, 4, 0, 0, 1424, 263, 1, 0, 0, 0, 1425, 1426, 5, 96, 0, 0, 1426, 1427, 5, 3, 0, 0, 1427, 1428, 3, 342, 171, 0, 1428, 1429, 5, 4, 0, 0, 1429, 265, 1, 0, 0, 0, 1430, 1431, 5, 97, 0, 0, 1431, 1432, 5, 3, 0, 0, 1432, 1433, 5, 136, 0, 0, 1433, 1434, 5, 4, 0, 0, 1434, 267, 1, 0, 0, 0, 1435, 1436, 5, 98, 0, 0, 1436, 1437, 5, 3, 0, 0, 1437, 1438, 5, 135, 0, 0, 1438, 1439, 5, 4, 0, 0, 1439, 269, 1, 0, 0, 0, 1440, 1441, 5, 99, 0, 0, 1441, 1442, 5, 3, 0, 0, 1442, 1443, 5, 136, 0, 0, 1443, 1444, 5, 4, 0, 0, 1444, 271, 1, 0, 0, 0, 1445, 1446, 5, 100, 0, 0, 1446, 1447, 5, 3, 0, 0, 1447, 1448, 5, 13, 0, 0, 1448, 1449, 5, 4, 0, 0, 1449, 273, 1, 0, 0, 0, 1450, 1451, 5, 101, 0, 0, 1451, 1452, 5, 3, 0, 0, 1452, 1453, 3, 206, 103, 0, 1453, 1454, 5, 4, 0, 0, 1454, 275, 1, 0, 0, 0, 1455, 1456, 5, 102, 0, 0, 1456, 1457, 5, 3, 0, 0, 1457, 1458, 5, 134, 0, 0, 1458, 1459, 5, 4, 0, 0, 1459, 277, 1, 0, 0, 0, 1460, 1461, 5, 103, 0, 0, 1461, 1462, 5, 3, 0, 0, 1462, 1463, 5, 134, 0, 0, 1463, 1464, 5, 4, 0, 0, 1464, 279, 1, 0, 0, 0, 1465, 1466, 5, 104, 0, 0, 1466, 1467, 5, 3, 0, 0, 1467, 1468, 3, 204, 102, 0, 1468, 1469, 5, 4, 0, 0, 1469, 281, 1, 0, 0, 0, 1470, 1471, 5, 105, 0, 0, 1471, 1472, 5, 3, 0, 0, 1472, 1473, 3, 342, 171, 0, 1473, 1474, 5, 4, 0, 0, 1474, 283, 1, 0, 0, 0, 1475, 1476, 5, 106, 0, 0, 1476, 1477, 5, 3, 0, 0, 1477, 1478, 3, 344, 172, 0, 1478, 1479, 5, 4, 0, 0, 1479, 1488, 1, 0, 0, 0, 1480, 1481, 5, 106, 0, 0, 1481, 1482, 5, 3, 0, 0, 1482, 1483, 5, 5, 0, 0, 1483, 1484, 3, 320, 160, 0, 1484, 1485, 5, 7, 0, 0, 1485, 1486, 5, 4, 0, 0, 1486, 1488, 1, 0, 0, 0, 1487, 1475, 1, 0, 0, 0, 1487, 1480, 1, 0, 0, 0, 1488, 285, 1, 0, 0, 0, 1489, 1490, 5, 107, 0, 0, 1490, 1491, 5, 3, 0, 0, 1491, 1492, 3, 342, 171, 0, 1492, 1493, 5, 4, 0, 0, 1493, 287, 1, 0, 0, 0, 1494, 1495, 5, 108, 0, 0, 1495, 1496, 5, 3, 0, 0, 1496, 1497, 3, 204, 102, 0, 1497, 1498, 5, 4, 0, 0, 1498, 289, 1, 0, 0, 0, 1499, 1500, 5, 109, 0, 0, 1500, 1501, 5, 3, 0, 0, 1501, 1502, 3, 206, 103, 0, 1502, 1503, 5, 4, 0, 0, 1503, 291, 1, 0, 0, 0, 1504, 1505, 5, 110, 0, 0, 1505, 1506, 5, 3, 0, 0, 1506, 1507, 3, 206, 103, 0, 1507, 1508, 5, 4, 0, 0, 1508, 293, 1, 0, 0, 0, 1509, 1510, 5, 111, 0, 0, 1510, 1511, 5, 3, 0, 0, 1511, 1512, 3, 206, 103, 0, 1512, 1513, 5, 4, 0, 0, 1513, 295, 1, 0, 0, 0, 1514, 1515, 5, 112, 0, 0, 1515, 1516, 5, 3, 0, 0, 1516, 1517, 3, 206, 103, 0, 1517, 1518, 5, 4, 0, 0, 1518, 297, 1, 0, 0, 0, 1519, 1520, 5, 113, 0, 0, 1520, 1521, 5, 3, 0, 0, 1521, 1522, 5, 136, 0, 0, 1522, 1523, 5, 4, 0, 0, 1523, 299, 1, 0, 0, 0, 1524, 1525, 5, 114, 0, 0, 1525, 1526, 5, 3, 0, 0, 1526, 1527, 3, 342, 171, 0, 1527, 1528, 5, 4, 0, 0, 1528, 301, 1, 0, 0, 0, 1529, 1530, 5, 115, 0, 0, 1530, 1531, 5, 3, 0, 0, 1531, 1532, 5, 13, 0, 0, 1532, 1533, 5, 4, 0, 0, 1533, 303, 1, 0, 0, 0, 1534, 1535, 5, 116, 0, 0, 1535, 1536, 5, 3, 0, 0, 1536, 1537, 5, 134, 0, 0, 1537, 1538, 5, 4, 0, 0, 1538, 305, 1, 0, 0, 0, 1539, 1540, 5, 117, 0, 0, 1540, 1541, 5, 3, 0, 0, 1541, 1542, 5, 134, 0, 0, 1542, 1543, 5, 4, 0, 0, 1543, 307, 1, 0, 0, 0, 1544, 1545, 5, 118, 0, 0, 1545, 1546, 5, 3, 0, 0, 1546, 1547, 3, 344, 172, 0, 1547, 1548, 5, 4, 0, 0, 1548, 309, 1, 0, 0, 0, 1549, 1550, 5, 119, 0, 0, 1550, 1551, 5, 3, 0, 0, 1551, 1552, 5, 134, 0, 0, 1552, 1553, 5, 4, 0, 0, 1553, 311, 1, 0, 0, 0, 1554, 1555, 5, 120, 0, 0, 1555, 1556, 5, 3, 0, 0, 1556, 1557, 5, 134, 0, 0, 1557, 1558, 5, 4, 0, 0, 1558, 313, 1, 0, 0, 0, 1559, 1560, 5, 121, 0, 0, 1560, 1561, 5, 3, 0, 0, 1561, 1565, 5, 1, 0, 0, 1562, 1564, 3, 324, 162, 0, 1563, 1562, 1, 0, 0, 0, 1564, 1567, 1, 0, 0, 0, 1565, 1563, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1568, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1568, 1569, 5, 2, 0, 0, 1569, 1570, 5, 4, 0, 0, 1570, 315, 1, 0, 0, 0, 1571, 1572, 5, 122, 0, 0, 1572, 1573, 5, 3, 0, 0, 1573, 1574, 3, 342, 171, 0, 1574, 1575, 5, 4, 0, 0, 1575, 317, 1, 0, 0, 0, 1576, 1577, 5, 123, 0, 0, 1577, 1578, 5, 3, 0, 0, 1578, 1579, 5, 13, 0, 0, 1579, 1580, 5, 4, 0, 0, 1580, 319, 1, 0, 0, 0, 1581, 1583, 3, 322, 161, 0, 1582, 1581, 1, 0, 0, 0, 1583, 1586, 1, 0, 0, 0, 1584, 1582, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 321, 1, 0, 0, 0, 1586, 1584, 1, 0, 0, 0, 1587, 1588, 5, 1, 0, 0, 1588, 1589, 5, 124, 0, 0, 1589, 1590, 5, 3, 0, 0, 1590, 1591, 5, 134, 0, 0, 1591, 1592, 5, 4, 0, 0, 1592, 1593, 5, 125, 0, 0, 1593, 1594, 5, 3, 0, 0, 1594, 1595, 5, 134, 0, 0, 1595, 1596, 5, 4, 0, 0, 1596, 1597, 5, 2, 0, 0, 1597, 1598, 5, 6, 0, 0, 1598, 323, 1, 0, 0, 0, 1599, 1600, 3, 344, 172, 0, 1600, 1601, 5, 3, 0, 0, 1601, 1602, 3, 344, 172, 0, 1602, 1603, 5, 4, 0, 0, 1603, 1636, 1, 0, 0, 0, 1604, 1605, 3, 344, 172, 0, 1605, 1606, 5, 3, 0, 0, 1606, 1607, 5, 13, 0, 0, 1607, 1608, 5, 4, 0, 0, 1608, 1636, 1, 0, 0, 0, 1609, 1610, 3, 344, 172, 0, 1610, 1611, 5, 3, 0, 0, 1611, 1612, 5, 138, 0, 0, 1612, 1613, 5, 4, 0, 0, 1613, 1636, 1, 0, 0, 0, 1614, 1615, 3, 344, 172, 0, 1615, 1616, 5, 3, 0, 0, 1616, 1617, 5, 1, 0, 0, 1617, 1618, 3, 324, 162, 0, 1618, 1619, 5, 2, 0, 0, 1619, 1620, 5, 4, 0, 0, 1620, 1636, 1, 0, 0, 0, 1621, 1622, 3, 344, 172, 0, 1622, 1623, 5, 3, 0, 0, 1623, 1629, 5, 5, 0, 0, 1624, 1625, 3, 344, 172, 0, 1625, 1626, 5, 6, 0, 0, 1626, 1628, 1, 0, 0, 0, 1627, 1624, 1, 0, 0, 0, 1628, 1631, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 1632, 1, 0, 0, 0, 1631, 1629, 1, 0, 0, 0, 1632, 1633, 5, 7, 0, 0, 1633, 1634, 5, 4, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1599, 1, 0, 0, 0, 1635, 1604, 1, 0, 0, 0, 1635, 1609, 1, 0, 0, 0, 1635, 1614, 1, 0, 0, 0, 1635, 1621, 1, 0, 0, 0, 1636, 325, 1, 0, 0, 0, 1637, 1638, 5, 126, 0, 0, 1638, 1639, 5, 3, 0, 0, 1639, 1640, 3, 204, 102, 0, 1640, 1641, 5, 4, 0, 0, 1641, 327, 1, 0, 0, 0, 1642, 1643, 5, 127, 0, 0, 1643, 1644, 5, 3, 0, 0, 1644, 1645, 5, 13, 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 329, 1, 0, 0, 0, 1647, 1648, 5, 128, 0, 0, 1648, 1649, 5, 3, 0, 0, 1649, 1650, 3, 342, 171, 0, 1650, 1651, 5, 4, 0, 0, 1651, 331, 1, 0, 0, 0, 1652, 1653, 5, 129, 0, 0, 1653, 1654, 5, 3, 0, 0, 1654, 1658, 5, 1, 0, 0, 1655, 1657, 3, 324, 162, 0, 1656, 1655, 1, 0, 0, 0, 1657, 1660, 1, 0, 0, 0, 1658, 1656, 1, 0, 0, 0, 1658, 1659, 1, 0, 0, 0, 1659, 1661, 1, 0, 0, 0, 1660, 1658, 1, 0, 0, 0, 1661, 1662, 5, 2, 0, 0, 1662, 1663, 5, 4, 0, 0, 1663, 333, 1, 0, 0, 0, 1664, 1665, 5, 130, 0, 0, 1665, 1666, 5, 3, 0, 0, 1666, 1670, 5, 1, 0, 0, 1667, 1669, 3, 324, 162, 0, 1668, 1667, 1, 0, 0, 0, 1669, 1672, 1, 0, 0, 0, 1670, 1668, 1, 0, 0, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1673, 1, 0, 0, 0, 1672, 1670, 1, 0, 0, 0, 1673, 1674, 5, 2, 0, 0, 1674, 1675, 5, 4, 0, 0, 1675, 335, 1, 0, 0, 0, 1676, 1677, 5, 131, 0, 0, 1677, 1678, 5, 3, 0, 0, 1678, 1679, 5, 134, 0, 0, 1679, 1680, 5, 4, 0, 0, 1680, 337, 1, 0, 0, 0, 1681, 1682, 5, 132, 0, 0, 1682, 1683, 5, 3, 0, 0, 1683, 1684, 5, 136, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 339, 1, 0, 0, 0, 1686, 1687, 5, 133, 0, 0, 1687, 1688, 5, 3, 0, 0, 1688, 1689, 3, 344, 172, 0, 1689, 1690, 5, 4, 0, 0, 1690, 341, 1, 0, 0, 0, 1691, 1695, 5, 136, 0, 0, 1692, 1695, 5, 135, 0, 0, 1693, 1695, 3, 346, 173, 0, 1694, 1691, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1694, 1693, 1, 0, 0, 0, 1695, 343, 1, 0, 0, 0, 1696, 1700, 3, 342, 171, 0, 1697, 1700, 5, 13, 0, 0, 1698, 1700, 5, 137, 0, 0, 1699, 1696, 1, 0, 0, 0, 1699, 1697, 1, 0, 0, 0, 1699, 1698, 1, 0, 0, 0, 1700, 345, 1, 0, 0, 0, 1701, 1702, 7, 1, 0, 0, 1702, 347, 1, 0, 0, 0, 122, 378, 381, 384, 387, 391, 395, 398, 401, 405, 408, 411, 414, 417, 420, 425, 428, 431, 444, 449, 454, 459, 464, 469, 474, 479, 484, 489, 494, 499, 504, 509, 514, 519, 524, 529, 534, 539, 544, 549, 560, 570, 573, 576, 579, 582, 607, 618, 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, 651, 654, 657, 678, 681, 684, 687, 691, 694, 697, 722, 725, 754, 759, 763, 767, 770, 774, 787, 812, 815, 818, 821, 824, 830, 850, 853, 856, 859, 872, 883, 897, 916, 929, 1153, 1204, 1215, 1225, 1304, 1307, 1310, 1313, 1316, 1319, 1322, 1325, 1328, 1374, 1384, 1387, 1390, 1393, 1396, 1399, 1402, 1405, 1487, 1565, 1584, 1629, 1635, 1658, 1670, 1694, 1699] \ No newline at end of file diff --git a/kin/grammar/PBXProj.tokens b/kin/grammar/PBXProj.tokens index 5fba347..d7a1620 100644 --- a/kin/grammar/PBXProj.tokens +++ b/kin/grammar/PBXProj.tokens @@ -5,132 +5,132 @@ T__3=4 T__4=5 T__5=6 T__6=7 -T__7=8 -T__8=9 -T__9=10 -T__10=11 -T__11=12 -T__12=13 -T__13=14 -T__14=15 -T__15=16 -T__16=17 -T__17=18 -T__18=19 -T__19=20 -T__20=21 -T__21=22 -T__22=23 -T__23=24 -T__24=25 -T__25=26 -T__26=27 -T__27=28 -T__28=29 -T__29=30 -T__30=31 -T__31=32 -T__32=33 -T__33=34 -T__34=35 -T__35=36 -T__36=37 -T__37=38 -T__38=39 -T__39=40 -T__40=41 -T__41=42 -T__42=43 -T__43=44 -T__44=45 -T__45=46 -T__46=47 -T__47=48 -T__48=49 -T__49=50 -T__50=51 -T__51=52 -T__52=53 -T__53=54 -T__54=55 -T__55=56 -T__56=57 -T__57=58 -T__58=59 -T__59=60 -T__60=61 -T__61=62 -T__62=63 -T__63=64 -T__64=65 -T__65=66 -T__66=67 -T__67=68 -T__68=69 -T__69=70 -T__70=71 -T__71=72 -T__72=73 -T__73=74 -T__74=75 -T__75=76 -T__76=77 -T__77=78 -T__78=79 -T__79=80 -T__80=81 -T__81=82 -T__82=83 -T__83=84 -T__84=85 -T__85=86 -T__86=87 -T__87=88 -T__88=89 -T__89=90 -T__90=91 -T__91=92 -T__92=93 -T__93=94 -T__94=95 -T__95=96 -T__96=97 -T__97=98 -T__98=99 -T__99=100 -T__100=101 -T__101=102 -T__102=103 -T__103=104 -T__104=105 -T__105=106 -T__106=107 -T__107=108 -T__108=109 -T__109=110 -T__110=111 -T__111=112 -T__112=113 -T__113=114 -T__114=115 -T__115=116 -T__116=117 -T__117=118 -T__118=119 -T__119=120 -T__120=121 -T__121=122 -T__122=123 -T__123=124 -CLASSES=125 -ISA=126 -OBJECTS=127 -ROOT_OBJECT=128 -NUMBER=129 -DOT=130 -DASH=131 -UNDERSCORE=132 -SLASH=133 +ARCHIVE_VERSION=8 +CLASSES=9 +DASH=10 +DOT=11 +ISA=12 +NUMBER=13 +OBJECT_VERSION=14 +OBJECTS=15 +ROOT_OBJECT=16 +SLASH=17 +UNDERSCORE=18 +PBX_AGGREGATE_TARGET=19 +PBX_BUILD_FILE=20 +PBX_CONTAINER_ITEM_PROXY=21 +PBX_COPY_FILES_BUILD_PHASE=22 +PBX_FILE_REFERENCE=23 +PBX_FRAMEWORKS_BUILD_PHASE=24 +PBX_GROUP=25 +PBX_HEADERS_BUILD_PHASE=26 +PBX_NATIVE_TARGET=27 +PBX_LEGACY_TARGET=28 +PBX_PROJECT=29 +PBX_REFERENCE_PROXY=30 +PBX_RESOURCES_BUILD_PHASE=31 +PBX_SHELL_SCRIPT_BUILD_PHASE=32 +PBX_SOURCES_BUILD_PHASE=33 +PBX_TARGET_DEPENDENCY=34 +PBX_VARIANT_GROUP=35 +XC_BUILD_CONFIGURATION=36 +XC_CONFIGURATION_LIST=37 +XC_REMOTE_SWIFT_PACKAGE_REFERENCE=38 +XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY=39 +XC_VERSION_GROUP=40 +FILE_REF=41 +PRODUCT_REF=42 +CONTAINER_PORTAL=43 +PROXY_TYPE=44 +REMOTE_GLOBAL_ID_STRING=45 +REMOTE_INFO=46 +FILE_ENCODING=47 +COMMENTS=48 +EXPLICIT_FILE_TYPE=49 +LAST_KNOWN_FILE_TYPE=50 +INCLUDE_IN_INDEX=51 +INDENT_WIDTH=52 +TAB_WIDTH=53 +USES_TABS=54 +WRAPS_LINES=55 +PLATFORM_FILTER=56 +PLATFORM_FILTERS=57 +CHILDREN=58 +PRODUCT_INSTALL_PATH=59 +REPOSITORY_URL=60 +REQUIREMENT=61 +PACKAGE=62 +PACKAGE_PRODUCT_DEPENDENCIES=63 +NAME=64 +PATH=65 +SOURCE_TREE=66 +BUILD_ACTION_MASK=67 +FILES=68 +RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING=69 +BUILD_CONFIGURATION_LIST=70 +BUILD_PHASES=71 +BUILD_RULES=72 +BUILD_ARGUMENTS_STRING=73 +BUILD_TOOL_PATH=74 +BUILD_WORKING_DIRECTORY=75 +PASS_BUILD_SETTINGS_IN_ENVIRONMENT=76 +DEPENDENCIES=77 +PRODUCT_NAME=78 +PRODUCT_REFERENCE=79 +PRODUCT_TYPE=80 +LINE_ENDING=81 +XC_LANGUAGE_SPECIFICATION_IDENTIFIER=82 +PLIST_STRUCTURE_DEFINITION_IDENTIFIER=83 +ATTRIBUTES=84 +LAST_SWIFT_MIGRATION=85 +DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE=86 +LAST_SWIFT_UPDATE_CHECK=87 +BUILD_INDEPENDENT_TARGETS_IN_PARALLEL=88 +LAST_TESTING_UPGRADE_CHECK=89 +LAST_UPGRADE_CHECK=90 +ORGANIZATION_NAME=91 +TARGET_ATTRIBUTES=92 +CREATED_ON_TOOLS_VERSION=93 +TEST_TARGET_ID=94 +DEVELOPMENT_TEAM=95 +DEVELOPMENT_TEAM_NAME=96 +PROVISIONING_STYLE=97 +COMPATIBILITY_VERSION=98 +DEVELOPMENT_REGION=99 +HAS_SCANNED_FOR_ENCODINGS=100 +KNOWN_REGIONS=101 +MAIN_GROUP=102 +PRODUCT_REF_GROUP=103 +PACKAGE_REFERENCES=104 +PRODUCT_DIR_PATH=105 +PROJECT_REFERENCES=106 +PROJECT_ROOT=107 +TARGETS=108 +INPUT_FILE_LIST_PATHS=109 +INPUT_PATHS=110 +OUTPUT_FILE_LIST_PATHS=111 +OUTPUT_PATHS=112 +SHELL_PATH=113 +SHELL_SCRIPT=114 +SHOW_ENV_VARS_IN_LOG=115 +TARGET=116 +TARGET_PROXY=117 +FILE_TYPE=118 +REMOTE_REF=119 +BASE_CONFIGURATION_REFERENCE=120 +BUILD_SETTINGS=121 +DST_PATH=122 +DST_SUBFOLDER_SPEC=123 +PRODUCT_GROUP=124 +PROJECT_REF=125 +BUILD_CONFIGURATIONS=126 +DEFAULT_CONFIGURATION_IS_VISIBLE=127 +DEFAULT_CONFIGURATION_NAME=128 +SETTINGS=129 +SYSTEM_CAPABILITIES=130 +CURRENT_VERSION=131 +VERSION_GROUP_TYPE=132 +CLASSPREFIX=133 REFERENCE=134 QUOTED_STRING=135 NON_QUOTED_STRING=136 @@ -142,133 +142,133 @@ COMMENT=141 LINE_COMMENT=142 '{'=1 '}'=2 -'archiveVersion'=3 -'='=4 -';'=5 -'objectVersion'=6 -'PBXAggregateTarget'=7 -'PBXBuildFile'=8 -'PBXContainerItemProxy'=9 -'PBXCopyFilesBuildPhase'=10 -'PBXFileReference'=11 -'PBXFrameworksBuildPhase'=12 -'PBXGroup'=13 -'PBXHeadersBuildPhase'=14 -'PBXNativeTarget'=15 -'PBXLegacyTarget'=16 -'PBXProject'=17 -'PBXReferenceProxy'=18 -'PBXResourcesBuildPhase'=19 -'PBXShellScriptBuildPhase'=20 -'PBXSourcesBuildPhase'=21 -'PBXTargetDependency'=22 -'PBXVariantGroup'=23 -'XCBuildConfiguration'=24 -'XCConfigurationList'=25 -'XCRemoteSwiftPackageReference'=26 -'XCSwiftPackageProductDependency'=27 -'XCVersionGroup'=28 -'fileRef'=29 -'productRef'=30 -'containerPortal'=31 -'proxyType'=32 -'remoteGlobalIDString'=33 -'remoteInfo'=34 -'fileEncoding'=35 -'comments'=36 -'explicitFileType'=37 -'lastKnownFileType'=38 -'includeInIndex'=39 -'indentWidth'=40 -'tabWidth'=41 -'usesTabs'=42 -'wrapsLines'=43 -'platformFilter'=44 -'platformFilters'=45 -'children'=46 -'productInstallPath'=47 -'repositoryURL'=48 -'requirement'=49 -'package'=50 -'packageProductDependencies'=51 -'name'=52 -'path'=53 -'sourceTree'=54 -'buildActionMask'=55 -'files'=56 -'runOnlyForDeploymentPostprocessing'=57 -'('=58 -','=59 -')'=60 -'buildConfigurationList'=61 -'buildPhases'=62 -'buildRules'=63 -'buildArgumentsString'=64 -'buildToolPath'=65 -'buildWorkingDirectory'=66 -'passBuildSettingsInEnvironment'=67 -'dependencies'=68 -'productName'=69 -'productReference'=70 -'productType'=71 -'lineEnding'=72 -'xcLanguageSpecificationIdentifier'=73 -'plistStructureDefinitionIdentifier'=74 -'attributes'=75 -'LastSwiftMigration'=76 -'DefaultBuildSystemTypeForWorkspace'=77 -'LastSwiftUpdateCheck'=78 -'BuildIndependentTargetsInParallel'=79 -'LastTestingUpgradeCheck'=80 -'LastUpgradeCheck'=81 -'ORGANIZATIONNAME'=82 -'TargetAttributes'=83 -'CreatedOnToolsVersion'=84 -'TestTargetID'=85 -'DevelopmentTeam'=86 -'DevelopmentTeamName'=87 -'ProvisioningStyle'=88 -'compatibilityVersion'=89 -'developmentRegion'=90 -'hasScannedForEncodings'=91 -'knownRegions'=92 -'mainGroup'=93 -'productRefGroup'=94 -'packageReferences'=95 -'projectDirPath'=96 -'projectReferences'=97 -'projectRoot'=98 -'targets'=99 -'inputFileListPaths'=100 -'inputPaths'=101 -'outputFileListPaths'=102 -'outputPaths'=103 -'shellPath'=104 -'shellScript'=105 -'showEnvVarsInLog'=106 -'target'=107 -'targetProxy'=108 -'fileType'=109 -'remoteRef'=110 -'baseConfigurationReference'=111 -'buildSettings'=112 -'dstPath'=113 -'dstSubfolderSpec'=114 -'ProductGroup'=115 -'ProjectRef'=116 -'buildConfigurations'=117 -'defaultConfigurationIsVisible'=118 -'defaultConfigurationName'=119 -'settings'=120 -'SystemCapabilities'=121 -'currentVersion'=122 -'versionGroupType'=123 -'CLASSPREFIX'=124 -'classes'=125 -'isa'=126 -'objects'=127 -'rootObject'=128 -'.'=130 -'-'=131 -'_'=132 -'/'=133 +'='=3 +';'=4 +'('=5 +','=6 +')'=7 +'archiveVersion'=8 +'classes'=9 +'-'=10 +'.'=11 +'isa'=12 +'objectVersion'=14 +'objects'=15 +'rootObject'=16 +'/'=17 +'_'=18 +'PBXAggregateTarget'=19 +'PBXBuildFile'=20 +'PBXContainerItemProxy'=21 +'PBXCopyFilesBuildPhase'=22 +'PBXFileReference'=23 +'PBXFrameworksBuildPhase'=24 +'PBXGroup'=25 +'PBXHeadersBuildPhase'=26 +'PBXNativeTarget'=27 +'PBXLegacyTarget'=28 +'PBXProject'=29 +'PBXReferenceProxy'=30 +'PBXResourcesBuildPhase'=31 +'PBXShellScriptBuildPhase'=32 +'PBXSourcesBuildPhase'=33 +'PBXTargetDependency'=34 +'PBXVariantGroup'=35 +'XCBuildConfiguration'=36 +'XCConfigurationList'=37 +'XCRemoteSwiftPackageReference'=38 +'XCSwiftPackageProductDependency'=39 +'XCVersionGroup'=40 +'fileRef'=41 +'productRef'=42 +'containerPortal'=43 +'proxyType'=44 +'remoteGlobalIDString'=45 +'remoteInfo'=46 +'fileEncoding'=47 +'comments'=48 +'explicitFileType'=49 +'lastKnownFileType'=50 +'includeInIndex'=51 +'indentWidth'=52 +'tabWidth'=53 +'usesTabs'=54 +'wrapsLines'=55 +'platformFilter'=56 +'platformFilters'=57 +'children'=58 +'productInstallPath'=59 +'repositoryURL'=60 +'requirement'=61 +'package'=62 +'packageProductDependencies'=63 +'name'=64 +'path'=65 +'sourceTree'=66 +'buildActionMask'=67 +'files'=68 +'runOnlyForDeploymentPostprocessing'=69 +'buildConfigurationList'=70 +'buildPhases'=71 +'buildRules'=72 +'buildArgumentsString'=73 +'buildToolPath'=74 +'buildWorkingDirectory'=75 +'passBuildSettingsInEnvironment'=76 +'dependencies'=77 +'productName'=78 +'productReference'=79 +'productType'=80 +'lineEnding'=81 +'xcLanguageSpecificationIdentifier'=82 +'plistStructureDefinitionIdentifier'=83 +'attributes'=84 +'LastSwiftMigration'=85 +'DefaultBuildSystemTypeForWorkspace'=86 +'LastSwiftUpdateCheck'=87 +'BuildIndependentTargetsInParallel'=88 +'LastTestingUpgradeCheck'=89 +'LastUpgradeCheck'=90 +'ORGANIZATIONNAME'=91 +'TargetAttributes'=92 +'CreatedOnToolsVersion'=93 +'TestTargetID'=94 +'DevelopmentTeam'=95 +'DevelopmentTeamName'=96 +'ProvisioningStyle'=97 +'compatibilityVersion'=98 +'developmentRegion'=99 +'hasScannedForEncodings'=100 +'knownRegions'=101 +'mainGroup'=102 +'productRefGroup'=103 +'packageReferences'=104 +'projectDirPath'=105 +'projectReferences'=106 +'projectRoot'=107 +'targets'=108 +'inputFileListPaths'=109 +'inputPaths'=110 +'outputFileListPaths'=111 +'outputPaths'=112 +'shellPath'=113 +'shellScript'=114 +'showEnvVarsInLog'=115 +'target'=116 +'targetProxy'=117 +'fileType'=118 +'remoteRef'=119 +'baseConfigurationReference'=120 +'buildSettings'=121 +'dstPath'=122 +'dstSubfolderSpec'=123 +'ProductGroup'=124 +'ProjectRef'=125 +'buildConfigurations'=126 +'defaultConfigurationIsVisible'=127 +'defaultConfigurationName'=128 +'settings'=129 +'SystemCapabilities'=130 +'currentVersion'=131 +'versionGroupType'=132 +'CLASSPREFIX'=133 diff --git a/kin/grammar/PBXProjLexer.interp b/kin/grammar/PBXProjLexer.interp index e7af522..e16c289 100644 --- a/kin/grammar/PBXProjLexer.interp +++ b/kin/grammar/PBXProjLexer.interp @@ -2,10 +2,22 @@ token literal names: null '{' '}' -'archiveVersion' '=' ';' +'(' +',' +')' +'archiveVersion' +'classes' +'-' +'.' +'isa' +null 'objectVersion' +'objects' +'rootObject' +'/' +'_' 'PBXAggregateTarget' 'PBXBuildFile' 'PBXContainerItemProxy' @@ -57,9 +69,6 @@ null 'buildActionMask' 'files' 'runOnlyForDeploymentPostprocessing' -'(' -',' -')' 'buildConfigurationList' 'buildPhases' 'buildRules' @@ -124,15 +133,6 @@ null 'currentVersion' 'versionGroupType' 'CLASSPREFIX' -'classes' -'isa' -'objects' -'rootObject' -null -'.' -'-' -'_' -'/' null null null @@ -152,132 +152,132 @@ 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 -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 -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 -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 -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null +ARCHIVE_VERSION CLASSES +DASH +DOT ISA +NUMBER +OBJECT_VERSION OBJECTS ROOT_OBJECT -NUMBER -DOT -DASH -UNDERSCORE SLASH +UNDERSCORE +PBX_AGGREGATE_TARGET +PBX_BUILD_FILE +PBX_CONTAINER_ITEM_PROXY +PBX_COPY_FILES_BUILD_PHASE +PBX_FILE_REFERENCE +PBX_FRAMEWORKS_BUILD_PHASE +PBX_GROUP +PBX_HEADERS_BUILD_PHASE +PBX_NATIVE_TARGET +PBX_LEGACY_TARGET +PBX_PROJECT +PBX_REFERENCE_PROXY +PBX_RESOURCES_BUILD_PHASE +PBX_SHELL_SCRIPT_BUILD_PHASE +PBX_SOURCES_BUILD_PHASE +PBX_TARGET_DEPENDENCY +PBX_VARIANT_GROUP +XC_BUILD_CONFIGURATION +XC_CONFIGURATION_LIST +XC_REMOTE_SWIFT_PACKAGE_REFERENCE +XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY +XC_VERSION_GROUP +FILE_REF +PRODUCT_REF +CONTAINER_PORTAL +PROXY_TYPE +REMOTE_GLOBAL_ID_STRING +REMOTE_INFO +FILE_ENCODING +COMMENTS +EXPLICIT_FILE_TYPE +LAST_KNOWN_FILE_TYPE +INCLUDE_IN_INDEX +INDENT_WIDTH +TAB_WIDTH +USES_TABS +WRAPS_LINES +PLATFORM_FILTER +PLATFORM_FILTERS +CHILDREN +PRODUCT_INSTALL_PATH +REPOSITORY_URL +REQUIREMENT +PACKAGE +PACKAGE_PRODUCT_DEPENDENCIES +NAME +PATH +SOURCE_TREE +BUILD_ACTION_MASK +FILES +RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING +BUILD_CONFIGURATION_LIST +BUILD_PHASES +BUILD_RULES +BUILD_ARGUMENTS_STRING +BUILD_TOOL_PATH +BUILD_WORKING_DIRECTORY +PASS_BUILD_SETTINGS_IN_ENVIRONMENT +DEPENDENCIES +PRODUCT_NAME +PRODUCT_REFERENCE +PRODUCT_TYPE +LINE_ENDING +XC_LANGUAGE_SPECIFICATION_IDENTIFIER +PLIST_STRUCTURE_DEFINITION_IDENTIFIER +ATTRIBUTES +LAST_SWIFT_MIGRATION +DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE +LAST_SWIFT_UPDATE_CHECK +BUILD_INDEPENDENT_TARGETS_IN_PARALLEL +LAST_TESTING_UPGRADE_CHECK +LAST_UPGRADE_CHECK +ORGANIZATION_NAME +TARGET_ATTRIBUTES +CREATED_ON_TOOLS_VERSION +TEST_TARGET_ID +DEVELOPMENT_TEAM +DEVELOPMENT_TEAM_NAME +PROVISIONING_STYLE +COMPATIBILITY_VERSION +DEVELOPMENT_REGION +HAS_SCANNED_FOR_ENCODINGS +KNOWN_REGIONS +MAIN_GROUP +PRODUCT_REF_GROUP +PACKAGE_REFERENCES +PRODUCT_DIR_PATH +PROJECT_REFERENCES +PROJECT_ROOT +TARGETS +INPUT_FILE_LIST_PATHS +INPUT_PATHS +OUTPUT_FILE_LIST_PATHS +OUTPUT_PATHS +SHELL_PATH +SHELL_SCRIPT +SHOW_ENV_VARS_IN_LOG +TARGET +TARGET_PROXY +FILE_TYPE +REMOTE_REF +BASE_CONFIGURATION_REFERENCE +BUILD_SETTINGS +DST_PATH +DST_SUBFOLDER_SPEC +PRODUCT_GROUP +PROJECT_REF +BUILD_CONFIGURATIONS +DEFAULT_CONFIGURATION_IS_VISIBLE +DEFAULT_CONFIGURATION_NAME +SETTINGS +SYSTEM_CAPABILITIES +CURRENT_VERSION +VERSION_GROUP_TYPE +CLASSPREFIX REFERENCE QUOTED_STRING NON_QUOTED_STRING @@ -296,132 +296,132 @@ T__3 T__4 T__5 T__6 -T__7 -T__8 -T__9 -T__10 -T__11 -T__12 -T__13 -T__14 -T__15 -T__16 -T__17 -T__18 -T__19 -T__20 -T__21 -T__22 -T__23 -T__24 -T__25 -T__26 -T__27 -T__28 -T__29 -T__30 -T__31 -T__32 -T__33 -T__34 -T__35 -T__36 -T__37 -T__38 -T__39 -T__40 -T__41 -T__42 -T__43 -T__44 -T__45 -T__46 -T__47 -T__48 -T__49 -T__50 -T__51 -T__52 -T__53 -T__54 -T__55 -T__56 -T__57 -T__58 -T__59 -T__60 -T__61 -T__62 -T__63 -T__64 -T__65 -T__66 -T__67 -T__68 -T__69 -T__70 -T__71 -T__72 -T__73 -T__74 -T__75 -T__76 -T__77 -T__78 -T__79 -T__80 -T__81 -T__82 -T__83 -T__84 -T__85 -T__86 -T__87 -T__88 -T__89 -T__90 -T__91 -T__92 -T__93 -T__94 -T__95 -T__96 -T__97 -T__98 -T__99 -T__100 -T__101 -T__102 -T__103 -T__104 -T__105 -T__106 -T__107 -T__108 -T__109 -T__110 -T__111 -T__112 -T__113 -T__114 -T__115 -T__116 -T__117 -T__118 -T__119 -T__120 -T__121 -T__122 -T__123 +ARCHIVE_VERSION CLASSES +DASH +DOT ISA +NUMBER +OBJECT_VERSION OBJECTS ROOT_OBJECT -NUMBER -DOT -DASH -UNDERSCORE SLASH +UNDERSCORE +PBX_AGGREGATE_TARGET +PBX_BUILD_FILE +PBX_CONTAINER_ITEM_PROXY +PBX_COPY_FILES_BUILD_PHASE +PBX_FILE_REFERENCE +PBX_FRAMEWORKS_BUILD_PHASE +PBX_GROUP +PBX_HEADERS_BUILD_PHASE +PBX_NATIVE_TARGET +PBX_LEGACY_TARGET +PBX_PROJECT +PBX_REFERENCE_PROXY +PBX_RESOURCES_BUILD_PHASE +PBX_SHELL_SCRIPT_BUILD_PHASE +PBX_SOURCES_BUILD_PHASE +PBX_TARGET_DEPENDENCY +PBX_VARIANT_GROUP +XC_BUILD_CONFIGURATION +XC_CONFIGURATION_LIST +XC_REMOTE_SWIFT_PACKAGE_REFERENCE +XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY +XC_VERSION_GROUP +FILE_REF +PRODUCT_REF +CONTAINER_PORTAL +PROXY_TYPE +REMOTE_GLOBAL_ID_STRING +REMOTE_INFO +FILE_ENCODING +COMMENTS +EXPLICIT_FILE_TYPE +LAST_KNOWN_FILE_TYPE +INCLUDE_IN_INDEX +INDENT_WIDTH +TAB_WIDTH +USES_TABS +WRAPS_LINES +PLATFORM_FILTER +PLATFORM_FILTERS +CHILDREN +PRODUCT_INSTALL_PATH +REPOSITORY_URL +REQUIREMENT +PACKAGE +PACKAGE_PRODUCT_DEPENDENCIES +NAME +PATH +SOURCE_TREE +BUILD_ACTION_MASK +FILES +RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING +BUILD_CONFIGURATION_LIST +BUILD_PHASES +BUILD_RULES +BUILD_ARGUMENTS_STRING +BUILD_TOOL_PATH +BUILD_WORKING_DIRECTORY +PASS_BUILD_SETTINGS_IN_ENVIRONMENT +DEPENDENCIES +PRODUCT_NAME +PRODUCT_REFERENCE +PRODUCT_TYPE +LINE_ENDING +XC_LANGUAGE_SPECIFICATION_IDENTIFIER +PLIST_STRUCTURE_DEFINITION_IDENTIFIER +ATTRIBUTES +LAST_SWIFT_MIGRATION +DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE +LAST_SWIFT_UPDATE_CHECK +BUILD_INDEPENDENT_TARGETS_IN_PARALLEL +LAST_TESTING_UPGRADE_CHECK +LAST_UPGRADE_CHECK +ORGANIZATION_NAME +TARGET_ATTRIBUTES +CREATED_ON_TOOLS_VERSION +TEST_TARGET_ID +DEVELOPMENT_TEAM +DEVELOPMENT_TEAM_NAME +PROVISIONING_STYLE +COMPATIBILITY_VERSION +DEVELOPMENT_REGION +HAS_SCANNED_FOR_ENCODINGS +KNOWN_REGIONS +MAIN_GROUP +PRODUCT_REF_GROUP +PACKAGE_REFERENCES +PRODUCT_DIR_PATH +PROJECT_REFERENCES +PROJECT_ROOT +TARGETS +INPUT_FILE_LIST_PATHS +INPUT_PATHS +OUTPUT_FILE_LIST_PATHS +OUTPUT_PATHS +SHELL_PATH +SHELL_SCRIPT +SHOW_ENV_VARS_IN_LOG +TARGET +TARGET_PROXY +FILE_TYPE +REMOTE_REF +BASE_CONFIGURATION_REFERENCE +BUILD_SETTINGS +DST_PATH +DST_SUBFOLDER_SPEC +PRODUCT_GROUP +PROJECT_REF +BUILD_CONFIGURATIONS +DEFAULT_CONFIGURATION_IS_VISIBLE +DEFAULT_CONFIGURATION_NAME +SETTINGS +SYSTEM_CAPABILITIES +CURRENT_VERSION +VERSION_GROUP_TYPE +CLASSPREFIX REFERENCE QUOTED_STRING NON_QUOTED_STRING @@ -442,4 +442,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 142, 2456, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 4, 128, 2285, 8, 128, 11, 128, 12, 128, 2286, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2322, 8, 133, 1, 133, 3, 133, 2325, 8, 133, 1, 133, 3, 133, 2328, 8, 133, 1, 133, 3, 133, 2331, 8, 133, 1, 133, 3, 133, 2334, 8, 133, 1, 133, 3, 133, 2337, 8, 133, 1, 133, 3, 133, 2340, 8, 133, 1, 133, 3, 133, 2343, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2350, 8, 133, 1, 133, 4, 133, 2353, 8, 133, 11, 133, 12, 133, 2354, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2382, 8, 133, 1, 134, 1, 134, 4, 134, 2386, 8, 134, 11, 134, 12, 134, 2387, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 2394, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 4, 135, 2401, 8, 135, 11, 135, 12, 135, 2402, 1, 136, 1, 136, 4, 136, 2407, 8, 136, 11, 136, 12, 136, 2408, 1, 136, 3, 136, 2412, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 3, 140, 2423, 8, 140, 1, 141, 4, 141, 2426, 8, 141, 11, 141, 12, 141, 2427, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 2436, 8, 142, 10, 142, 12, 142, 2439, 9, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 5, 143, 2450, 8, 143, 10, 143, 12, 143, 2453, 9, 143, 1, 143, 1, 143, 1, 2437, 0, 144, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 0, 281, 0, 283, 140, 285, 141, 287, 142, 1, 0, 7, 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 48, 57, 65, 90, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 34, 34, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 2479, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 1, 289, 1, 0, 0, 0, 3, 291, 1, 0, 0, 0, 5, 293, 1, 0, 0, 0, 7, 308, 1, 0, 0, 0, 9, 310, 1, 0, 0, 0, 11, 312, 1, 0, 0, 0, 13, 326, 1, 0, 0, 0, 15, 345, 1, 0, 0, 0, 17, 358, 1, 0, 0, 0, 19, 380, 1, 0, 0, 0, 21, 403, 1, 0, 0, 0, 23, 420, 1, 0, 0, 0, 25, 444, 1, 0, 0, 0, 27, 453, 1, 0, 0, 0, 29, 474, 1, 0, 0, 0, 31, 490, 1, 0, 0, 0, 33, 506, 1, 0, 0, 0, 35, 517, 1, 0, 0, 0, 37, 535, 1, 0, 0, 0, 39, 558, 1, 0, 0, 0, 41, 583, 1, 0, 0, 0, 43, 604, 1, 0, 0, 0, 45, 624, 1, 0, 0, 0, 47, 640, 1, 0, 0, 0, 49, 661, 1, 0, 0, 0, 51, 681, 1, 0, 0, 0, 53, 711, 1, 0, 0, 0, 55, 743, 1, 0, 0, 0, 57, 758, 1, 0, 0, 0, 59, 766, 1, 0, 0, 0, 61, 777, 1, 0, 0, 0, 63, 793, 1, 0, 0, 0, 65, 803, 1, 0, 0, 0, 67, 824, 1, 0, 0, 0, 69, 835, 1, 0, 0, 0, 71, 848, 1, 0, 0, 0, 73, 857, 1, 0, 0, 0, 75, 874, 1, 0, 0, 0, 77, 892, 1, 0, 0, 0, 79, 907, 1, 0, 0, 0, 81, 919, 1, 0, 0, 0, 83, 928, 1, 0, 0, 0, 85, 937, 1, 0, 0, 0, 87, 948, 1, 0, 0, 0, 89, 963, 1, 0, 0, 0, 91, 979, 1, 0, 0, 0, 93, 988, 1, 0, 0, 0, 95, 1007, 1, 0, 0, 0, 97, 1021, 1, 0, 0, 0, 99, 1033, 1, 0, 0, 0, 101, 1041, 1, 0, 0, 0, 103, 1068, 1, 0, 0, 0, 105, 1073, 1, 0, 0, 0, 107, 1078, 1, 0, 0, 0, 109, 1089, 1, 0, 0, 0, 111, 1105, 1, 0, 0, 0, 113, 1111, 1, 0, 0, 0, 115, 1146, 1, 0, 0, 0, 117, 1148, 1, 0, 0, 0, 119, 1150, 1, 0, 0, 0, 121, 1152, 1, 0, 0, 0, 123, 1175, 1, 0, 0, 0, 125, 1187, 1, 0, 0, 0, 127, 1198, 1, 0, 0, 0, 129, 1219, 1, 0, 0, 0, 131, 1233, 1, 0, 0, 0, 133, 1255, 1, 0, 0, 0, 135, 1286, 1, 0, 0, 0, 137, 1299, 1, 0, 0, 0, 139, 1311, 1, 0, 0, 0, 141, 1328, 1, 0, 0, 0, 143, 1340, 1, 0, 0, 0, 145, 1351, 1, 0, 0, 0, 147, 1385, 1, 0, 0, 0, 149, 1420, 1, 0, 0, 0, 151, 1431, 1, 0, 0, 0, 153, 1450, 1, 0, 0, 0, 155, 1485, 1, 0, 0, 0, 157, 1506, 1, 0, 0, 0, 159, 1540, 1, 0, 0, 0, 161, 1564, 1, 0, 0, 0, 163, 1581, 1, 0, 0, 0, 165, 1598, 1, 0, 0, 0, 167, 1615, 1, 0, 0, 0, 169, 1637, 1, 0, 0, 0, 171, 1650, 1, 0, 0, 0, 173, 1666, 1, 0, 0, 0, 175, 1686, 1, 0, 0, 0, 177, 1704, 1, 0, 0, 0, 179, 1725, 1, 0, 0, 0, 181, 1743, 1, 0, 0, 0, 183, 1766, 1, 0, 0, 0, 185, 1779, 1, 0, 0, 0, 187, 1789, 1, 0, 0, 0, 189, 1805, 1, 0, 0, 0, 191, 1823, 1, 0, 0, 0, 193, 1838, 1, 0, 0, 0, 195, 1856, 1, 0, 0, 0, 197, 1868, 1, 0, 0, 0, 199, 1876, 1, 0, 0, 0, 201, 1895, 1, 0, 0, 0, 203, 1906, 1, 0, 0, 0, 205, 1926, 1, 0, 0, 0, 207, 1938, 1, 0, 0, 0, 209, 1948, 1, 0, 0, 0, 211, 1960, 1, 0, 0, 0, 213, 1977, 1, 0, 0, 0, 215, 1984, 1, 0, 0, 0, 217, 1996, 1, 0, 0, 0, 219, 2005, 1, 0, 0, 0, 221, 2015, 1, 0, 0, 0, 223, 2042, 1, 0, 0, 0, 225, 2056, 1, 0, 0, 0, 227, 2064, 1, 0, 0, 0, 229, 2081, 1, 0, 0, 0, 231, 2094, 1, 0, 0, 0, 233, 2105, 1, 0, 0, 0, 235, 2125, 1, 0, 0, 0, 237, 2155, 1, 0, 0, 0, 239, 2180, 1, 0, 0, 0, 241, 2189, 1, 0, 0, 0, 243, 2208, 1, 0, 0, 0, 245, 2223, 1, 0, 0, 0, 247, 2240, 1, 0, 0, 0, 249, 2252, 1, 0, 0, 0, 251, 2260, 1, 0, 0, 0, 253, 2264, 1, 0, 0, 0, 255, 2272, 1, 0, 0, 0, 257, 2284, 1, 0, 0, 0, 259, 2288, 1, 0, 0, 0, 261, 2290, 1, 0, 0, 0, 263, 2292, 1, 0, 0, 0, 265, 2294, 1, 0, 0, 0, 267, 2381, 1, 0, 0, 0, 269, 2393, 1, 0, 0, 0, 271, 2400, 1, 0, 0, 0, 273, 2406, 1, 0, 0, 0, 275, 2413, 1, 0, 0, 0, 277, 2415, 1, 0, 0, 0, 279, 2417, 1, 0, 0, 0, 281, 2422, 1, 0, 0, 0, 283, 2425, 1, 0, 0, 0, 285, 2431, 1, 0, 0, 0, 287, 2445, 1, 0, 0, 0, 289, 290, 5, 123, 0, 0, 290, 2, 1, 0, 0, 0, 291, 292, 5, 125, 0, 0, 292, 4, 1, 0, 0, 0, 293, 294, 5, 97, 0, 0, 294, 295, 5, 114, 0, 0, 295, 296, 5, 99, 0, 0, 296, 297, 5, 104, 0, 0, 297, 298, 5, 105, 0, 0, 298, 299, 5, 118, 0, 0, 299, 300, 5, 101, 0, 0, 300, 301, 5, 86, 0, 0, 301, 302, 5, 101, 0, 0, 302, 303, 5, 114, 0, 0, 303, 304, 5, 115, 0, 0, 304, 305, 5, 105, 0, 0, 305, 306, 5, 111, 0, 0, 306, 307, 5, 110, 0, 0, 307, 6, 1, 0, 0, 0, 308, 309, 5, 61, 0, 0, 309, 8, 1, 0, 0, 0, 310, 311, 5, 59, 0, 0, 311, 10, 1, 0, 0, 0, 312, 313, 5, 111, 0, 0, 313, 314, 5, 98, 0, 0, 314, 315, 5, 106, 0, 0, 315, 316, 5, 101, 0, 0, 316, 317, 5, 99, 0, 0, 317, 318, 5, 116, 0, 0, 318, 319, 5, 86, 0, 0, 319, 320, 5, 101, 0, 0, 320, 321, 5, 114, 0, 0, 321, 322, 5, 115, 0, 0, 322, 323, 5, 105, 0, 0, 323, 324, 5, 111, 0, 0, 324, 325, 5, 110, 0, 0, 325, 12, 1, 0, 0, 0, 326, 327, 5, 80, 0, 0, 327, 328, 5, 66, 0, 0, 328, 329, 5, 88, 0, 0, 329, 330, 5, 65, 0, 0, 330, 331, 5, 103, 0, 0, 331, 332, 5, 103, 0, 0, 332, 333, 5, 114, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 103, 0, 0, 335, 336, 5, 97, 0, 0, 336, 337, 5, 116, 0, 0, 337, 338, 5, 101, 0, 0, 338, 339, 5, 84, 0, 0, 339, 340, 5, 97, 0, 0, 340, 341, 5, 114, 0, 0, 341, 342, 5, 103, 0, 0, 342, 343, 5, 101, 0, 0, 343, 344, 5, 116, 0, 0, 344, 14, 1, 0, 0, 0, 345, 346, 5, 80, 0, 0, 346, 347, 5, 66, 0, 0, 347, 348, 5, 88, 0, 0, 348, 349, 5, 66, 0, 0, 349, 350, 5, 117, 0, 0, 350, 351, 5, 105, 0, 0, 351, 352, 5, 108, 0, 0, 352, 353, 5, 100, 0, 0, 353, 354, 5, 70, 0, 0, 354, 355, 5, 105, 0, 0, 355, 356, 5, 108, 0, 0, 356, 357, 5, 101, 0, 0, 357, 16, 1, 0, 0, 0, 358, 359, 5, 80, 0, 0, 359, 360, 5, 66, 0, 0, 360, 361, 5, 88, 0, 0, 361, 362, 5, 67, 0, 0, 362, 363, 5, 111, 0, 0, 363, 364, 5, 110, 0, 0, 364, 365, 5, 116, 0, 0, 365, 366, 5, 97, 0, 0, 366, 367, 5, 105, 0, 0, 367, 368, 5, 110, 0, 0, 368, 369, 5, 101, 0, 0, 369, 370, 5, 114, 0, 0, 370, 371, 5, 73, 0, 0, 371, 372, 5, 116, 0, 0, 372, 373, 5, 101, 0, 0, 373, 374, 5, 109, 0, 0, 374, 375, 5, 80, 0, 0, 375, 376, 5, 114, 0, 0, 376, 377, 5, 111, 0, 0, 377, 378, 5, 120, 0, 0, 378, 379, 5, 121, 0, 0, 379, 18, 1, 0, 0, 0, 380, 381, 5, 80, 0, 0, 381, 382, 5, 66, 0, 0, 382, 383, 5, 88, 0, 0, 383, 384, 5, 67, 0, 0, 384, 385, 5, 111, 0, 0, 385, 386, 5, 112, 0, 0, 386, 387, 5, 121, 0, 0, 387, 388, 5, 70, 0, 0, 388, 389, 5, 105, 0, 0, 389, 390, 5, 108, 0, 0, 390, 391, 5, 101, 0, 0, 391, 392, 5, 115, 0, 0, 392, 393, 5, 66, 0, 0, 393, 394, 5, 117, 0, 0, 394, 395, 5, 105, 0, 0, 395, 396, 5, 108, 0, 0, 396, 397, 5, 100, 0, 0, 397, 398, 5, 80, 0, 0, 398, 399, 5, 104, 0, 0, 399, 400, 5, 97, 0, 0, 400, 401, 5, 115, 0, 0, 401, 402, 5, 101, 0, 0, 402, 20, 1, 0, 0, 0, 403, 404, 5, 80, 0, 0, 404, 405, 5, 66, 0, 0, 405, 406, 5, 88, 0, 0, 406, 407, 5, 70, 0, 0, 407, 408, 5, 105, 0, 0, 408, 409, 5, 108, 0, 0, 409, 410, 5, 101, 0, 0, 410, 411, 5, 82, 0, 0, 411, 412, 5, 101, 0, 0, 412, 413, 5, 102, 0, 0, 413, 414, 5, 101, 0, 0, 414, 415, 5, 114, 0, 0, 415, 416, 5, 101, 0, 0, 416, 417, 5, 110, 0, 0, 417, 418, 5, 99, 0, 0, 418, 419, 5, 101, 0, 0, 419, 22, 1, 0, 0, 0, 420, 421, 5, 80, 0, 0, 421, 422, 5, 66, 0, 0, 422, 423, 5, 88, 0, 0, 423, 424, 5, 70, 0, 0, 424, 425, 5, 114, 0, 0, 425, 426, 5, 97, 0, 0, 426, 427, 5, 109, 0, 0, 427, 428, 5, 101, 0, 0, 428, 429, 5, 119, 0, 0, 429, 430, 5, 111, 0, 0, 430, 431, 5, 114, 0, 0, 431, 432, 5, 107, 0, 0, 432, 433, 5, 115, 0, 0, 433, 434, 5, 66, 0, 0, 434, 435, 5, 117, 0, 0, 435, 436, 5, 105, 0, 0, 436, 437, 5, 108, 0, 0, 437, 438, 5, 100, 0, 0, 438, 439, 5, 80, 0, 0, 439, 440, 5, 104, 0, 0, 440, 441, 5, 97, 0, 0, 441, 442, 5, 115, 0, 0, 442, 443, 5, 101, 0, 0, 443, 24, 1, 0, 0, 0, 444, 445, 5, 80, 0, 0, 445, 446, 5, 66, 0, 0, 446, 447, 5, 88, 0, 0, 447, 448, 5, 71, 0, 0, 448, 449, 5, 114, 0, 0, 449, 450, 5, 111, 0, 0, 450, 451, 5, 117, 0, 0, 451, 452, 5, 112, 0, 0, 452, 26, 1, 0, 0, 0, 453, 454, 5, 80, 0, 0, 454, 455, 5, 66, 0, 0, 455, 456, 5, 88, 0, 0, 456, 457, 5, 72, 0, 0, 457, 458, 5, 101, 0, 0, 458, 459, 5, 97, 0, 0, 459, 460, 5, 100, 0, 0, 460, 461, 5, 101, 0, 0, 461, 462, 5, 114, 0, 0, 462, 463, 5, 115, 0, 0, 463, 464, 5, 66, 0, 0, 464, 465, 5, 117, 0, 0, 465, 466, 5, 105, 0, 0, 466, 467, 5, 108, 0, 0, 467, 468, 5, 100, 0, 0, 468, 469, 5, 80, 0, 0, 469, 470, 5, 104, 0, 0, 470, 471, 5, 97, 0, 0, 471, 472, 5, 115, 0, 0, 472, 473, 5, 101, 0, 0, 473, 28, 1, 0, 0, 0, 474, 475, 5, 80, 0, 0, 475, 476, 5, 66, 0, 0, 476, 477, 5, 88, 0, 0, 477, 478, 5, 78, 0, 0, 478, 479, 5, 97, 0, 0, 479, 480, 5, 116, 0, 0, 480, 481, 5, 105, 0, 0, 481, 482, 5, 118, 0, 0, 482, 483, 5, 101, 0, 0, 483, 484, 5, 84, 0, 0, 484, 485, 5, 97, 0, 0, 485, 486, 5, 114, 0, 0, 486, 487, 5, 103, 0, 0, 487, 488, 5, 101, 0, 0, 488, 489, 5, 116, 0, 0, 489, 30, 1, 0, 0, 0, 490, 491, 5, 80, 0, 0, 491, 492, 5, 66, 0, 0, 492, 493, 5, 88, 0, 0, 493, 494, 5, 76, 0, 0, 494, 495, 5, 101, 0, 0, 495, 496, 5, 103, 0, 0, 496, 497, 5, 97, 0, 0, 497, 498, 5, 99, 0, 0, 498, 499, 5, 121, 0, 0, 499, 500, 5, 84, 0, 0, 500, 501, 5, 97, 0, 0, 501, 502, 5, 114, 0, 0, 502, 503, 5, 103, 0, 0, 503, 504, 5, 101, 0, 0, 504, 505, 5, 116, 0, 0, 505, 32, 1, 0, 0, 0, 506, 507, 5, 80, 0, 0, 507, 508, 5, 66, 0, 0, 508, 509, 5, 88, 0, 0, 509, 510, 5, 80, 0, 0, 510, 511, 5, 114, 0, 0, 511, 512, 5, 111, 0, 0, 512, 513, 5, 106, 0, 0, 513, 514, 5, 101, 0, 0, 514, 515, 5, 99, 0, 0, 515, 516, 5, 116, 0, 0, 516, 34, 1, 0, 0, 0, 517, 518, 5, 80, 0, 0, 518, 519, 5, 66, 0, 0, 519, 520, 5, 88, 0, 0, 520, 521, 5, 82, 0, 0, 521, 522, 5, 101, 0, 0, 522, 523, 5, 102, 0, 0, 523, 524, 5, 101, 0, 0, 524, 525, 5, 114, 0, 0, 525, 526, 5, 101, 0, 0, 526, 527, 5, 110, 0, 0, 527, 528, 5, 99, 0, 0, 528, 529, 5, 101, 0, 0, 529, 530, 5, 80, 0, 0, 530, 531, 5, 114, 0, 0, 531, 532, 5, 111, 0, 0, 532, 533, 5, 120, 0, 0, 533, 534, 5, 121, 0, 0, 534, 36, 1, 0, 0, 0, 535, 536, 5, 80, 0, 0, 536, 537, 5, 66, 0, 0, 537, 538, 5, 88, 0, 0, 538, 539, 5, 82, 0, 0, 539, 540, 5, 101, 0, 0, 540, 541, 5, 115, 0, 0, 541, 542, 5, 111, 0, 0, 542, 543, 5, 117, 0, 0, 543, 544, 5, 114, 0, 0, 544, 545, 5, 99, 0, 0, 545, 546, 5, 101, 0, 0, 546, 547, 5, 115, 0, 0, 547, 548, 5, 66, 0, 0, 548, 549, 5, 117, 0, 0, 549, 550, 5, 105, 0, 0, 550, 551, 5, 108, 0, 0, 551, 552, 5, 100, 0, 0, 552, 553, 5, 80, 0, 0, 553, 554, 5, 104, 0, 0, 554, 555, 5, 97, 0, 0, 555, 556, 5, 115, 0, 0, 556, 557, 5, 101, 0, 0, 557, 38, 1, 0, 0, 0, 558, 559, 5, 80, 0, 0, 559, 560, 5, 66, 0, 0, 560, 561, 5, 88, 0, 0, 561, 562, 5, 83, 0, 0, 562, 563, 5, 104, 0, 0, 563, 564, 5, 101, 0, 0, 564, 565, 5, 108, 0, 0, 565, 566, 5, 108, 0, 0, 566, 567, 5, 83, 0, 0, 567, 568, 5, 99, 0, 0, 568, 569, 5, 114, 0, 0, 569, 570, 5, 105, 0, 0, 570, 571, 5, 112, 0, 0, 571, 572, 5, 116, 0, 0, 572, 573, 5, 66, 0, 0, 573, 574, 5, 117, 0, 0, 574, 575, 5, 105, 0, 0, 575, 576, 5, 108, 0, 0, 576, 577, 5, 100, 0, 0, 577, 578, 5, 80, 0, 0, 578, 579, 5, 104, 0, 0, 579, 580, 5, 97, 0, 0, 580, 581, 5, 115, 0, 0, 581, 582, 5, 101, 0, 0, 582, 40, 1, 0, 0, 0, 583, 584, 5, 80, 0, 0, 584, 585, 5, 66, 0, 0, 585, 586, 5, 88, 0, 0, 586, 587, 5, 83, 0, 0, 587, 588, 5, 111, 0, 0, 588, 589, 5, 117, 0, 0, 589, 590, 5, 114, 0, 0, 590, 591, 5, 99, 0, 0, 591, 592, 5, 101, 0, 0, 592, 593, 5, 115, 0, 0, 593, 594, 5, 66, 0, 0, 594, 595, 5, 117, 0, 0, 595, 596, 5, 105, 0, 0, 596, 597, 5, 108, 0, 0, 597, 598, 5, 100, 0, 0, 598, 599, 5, 80, 0, 0, 599, 600, 5, 104, 0, 0, 600, 601, 5, 97, 0, 0, 601, 602, 5, 115, 0, 0, 602, 603, 5, 101, 0, 0, 603, 42, 1, 0, 0, 0, 604, 605, 5, 80, 0, 0, 605, 606, 5, 66, 0, 0, 606, 607, 5, 88, 0, 0, 607, 608, 5, 84, 0, 0, 608, 609, 5, 97, 0, 0, 609, 610, 5, 114, 0, 0, 610, 611, 5, 103, 0, 0, 611, 612, 5, 101, 0, 0, 612, 613, 5, 116, 0, 0, 613, 614, 5, 68, 0, 0, 614, 615, 5, 101, 0, 0, 615, 616, 5, 112, 0, 0, 616, 617, 5, 101, 0, 0, 617, 618, 5, 110, 0, 0, 618, 619, 5, 100, 0, 0, 619, 620, 5, 101, 0, 0, 620, 621, 5, 110, 0, 0, 621, 622, 5, 99, 0, 0, 622, 623, 5, 121, 0, 0, 623, 44, 1, 0, 0, 0, 624, 625, 5, 80, 0, 0, 625, 626, 5, 66, 0, 0, 626, 627, 5, 88, 0, 0, 627, 628, 5, 86, 0, 0, 628, 629, 5, 97, 0, 0, 629, 630, 5, 114, 0, 0, 630, 631, 5, 105, 0, 0, 631, 632, 5, 97, 0, 0, 632, 633, 5, 110, 0, 0, 633, 634, 5, 116, 0, 0, 634, 635, 5, 71, 0, 0, 635, 636, 5, 114, 0, 0, 636, 637, 5, 111, 0, 0, 637, 638, 5, 117, 0, 0, 638, 639, 5, 112, 0, 0, 639, 46, 1, 0, 0, 0, 640, 641, 5, 88, 0, 0, 641, 642, 5, 67, 0, 0, 642, 643, 5, 66, 0, 0, 643, 644, 5, 117, 0, 0, 644, 645, 5, 105, 0, 0, 645, 646, 5, 108, 0, 0, 646, 647, 5, 100, 0, 0, 647, 648, 5, 67, 0, 0, 648, 649, 5, 111, 0, 0, 649, 650, 5, 110, 0, 0, 650, 651, 5, 102, 0, 0, 651, 652, 5, 105, 0, 0, 652, 653, 5, 103, 0, 0, 653, 654, 5, 117, 0, 0, 654, 655, 5, 114, 0, 0, 655, 656, 5, 97, 0, 0, 656, 657, 5, 116, 0, 0, 657, 658, 5, 105, 0, 0, 658, 659, 5, 111, 0, 0, 659, 660, 5, 110, 0, 0, 660, 48, 1, 0, 0, 0, 661, 662, 5, 88, 0, 0, 662, 663, 5, 67, 0, 0, 663, 664, 5, 67, 0, 0, 664, 665, 5, 111, 0, 0, 665, 666, 5, 110, 0, 0, 666, 667, 5, 102, 0, 0, 667, 668, 5, 105, 0, 0, 668, 669, 5, 103, 0, 0, 669, 670, 5, 117, 0, 0, 670, 671, 5, 114, 0, 0, 671, 672, 5, 97, 0, 0, 672, 673, 5, 116, 0, 0, 673, 674, 5, 105, 0, 0, 674, 675, 5, 111, 0, 0, 675, 676, 5, 110, 0, 0, 676, 677, 5, 76, 0, 0, 677, 678, 5, 105, 0, 0, 678, 679, 5, 115, 0, 0, 679, 680, 5, 116, 0, 0, 680, 50, 1, 0, 0, 0, 681, 682, 5, 88, 0, 0, 682, 683, 5, 67, 0, 0, 683, 684, 5, 82, 0, 0, 684, 685, 5, 101, 0, 0, 685, 686, 5, 109, 0, 0, 686, 687, 5, 111, 0, 0, 687, 688, 5, 116, 0, 0, 688, 689, 5, 101, 0, 0, 689, 690, 5, 83, 0, 0, 690, 691, 5, 119, 0, 0, 691, 692, 5, 105, 0, 0, 692, 693, 5, 102, 0, 0, 693, 694, 5, 116, 0, 0, 694, 695, 5, 80, 0, 0, 695, 696, 5, 97, 0, 0, 696, 697, 5, 99, 0, 0, 697, 698, 5, 107, 0, 0, 698, 699, 5, 97, 0, 0, 699, 700, 5, 103, 0, 0, 700, 701, 5, 101, 0, 0, 701, 702, 5, 82, 0, 0, 702, 703, 5, 101, 0, 0, 703, 704, 5, 102, 0, 0, 704, 705, 5, 101, 0, 0, 705, 706, 5, 114, 0, 0, 706, 707, 5, 101, 0, 0, 707, 708, 5, 110, 0, 0, 708, 709, 5, 99, 0, 0, 709, 710, 5, 101, 0, 0, 710, 52, 1, 0, 0, 0, 711, 712, 5, 88, 0, 0, 712, 713, 5, 67, 0, 0, 713, 714, 5, 83, 0, 0, 714, 715, 5, 119, 0, 0, 715, 716, 5, 105, 0, 0, 716, 717, 5, 102, 0, 0, 717, 718, 5, 116, 0, 0, 718, 719, 5, 80, 0, 0, 719, 720, 5, 97, 0, 0, 720, 721, 5, 99, 0, 0, 721, 722, 5, 107, 0, 0, 722, 723, 5, 97, 0, 0, 723, 724, 5, 103, 0, 0, 724, 725, 5, 101, 0, 0, 725, 726, 5, 80, 0, 0, 726, 727, 5, 114, 0, 0, 727, 728, 5, 111, 0, 0, 728, 729, 5, 100, 0, 0, 729, 730, 5, 117, 0, 0, 730, 731, 5, 99, 0, 0, 731, 732, 5, 116, 0, 0, 732, 733, 5, 68, 0, 0, 733, 734, 5, 101, 0, 0, 734, 735, 5, 112, 0, 0, 735, 736, 5, 101, 0, 0, 736, 737, 5, 110, 0, 0, 737, 738, 5, 100, 0, 0, 738, 739, 5, 101, 0, 0, 739, 740, 5, 110, 0, 0, 740, 741, 5, 99, 0, 0, 741, 742, 5, 121, 0, 0, 742, 54, 1, 0, 0, 0, 743, 744, 5, 88, 0, 0, 744, 745, 5, 67, 0, 0, 745, 746, 5, 86, 0, 0, 746, 747, 5, 101, 0, 0, 747, 748, 5, 114, 0, 0, 748, 749, 5, 115, 0, 0, 749, 750, 5, 105, 0, 0, 750, 751, 5, 111, 0, 0, 751, 752, 5, 110, 0, 0, 752, 753, 5, 71, 0, 0, 753, 754, 5, 114, 0, 0, 754, 755, 5, 111, 0, 0, 755, 756, 5, 117, 0, 0, 756, 757, 5, 112, 0, 0, 757, 56, 1, 0, 0, 0, 758, 759, 5, 102, 0, 0, 759, 760, 5, 105, 0, 0, 760, 761, 5, 108, 0, 0, 761, 762, 5, 101, 0, 0, 762, 763, 5, 82, 0, 0, 763, 764, 5, 101, 0, 0, 764, 765, 5, 102, 0, 0, 765, 58, 1, 0, 0, 0, 766, 767, 5, 112, 0, 0, 767, 768, 5, 114, 0, 0, 768, 769, 5, 111, 0, 0, 769, 770, 5, 100, 0, 0, 770, 771, 5, 117, 0, 0, 771, 772, 5, 99, 0, 0, 772, 773, 5, 116, 0, 0, 773, 774, 5, 82, 0, 0, 774, 775, 5, 101, 0, 0, 775, 776, 5, 102, 0, 0, 776, 60, 1, 0, 0, 0, 777, 778, 5, 99, 0, 0, 778, 779, 5, 111, 0, 0, 779, 780, 5, 110, 0, 0, 780, 781, 5, 116, 0, 0, 781, 782, 5, 97, 0, 0, 782, 783, 5, 105, 0, 0, 783, 784, 5, 110, 0, 0, 784, 785, 5, 101, 0, 0, 785, 786, 5, 114, 0, 0, 786, 787, 5, 80, 0, 0, 787, 788, 5, 111, 0, 0, 788, 789, 5, 114, 0, 0, 789, 790, 5, 116, 0, 0, 790, 791, 5, 97, 0, 0, 791, 792, 5, 108, 0, 0, 792, 62, 1, 0, 0, 0, 793, 794, 5, 112, 0, 0, 794, 795, 5, 114, 0, 0, 795, 796, 5, 111, 0, 0, 796, 797, 5, 120, 0, 0, 797, 798, 5, 121, 0, 0, 798, 799, 5, 84, 0, 0, 799, 800, 5, 121, 0, 0, 800, 801, 5, 112, 0, 0, 801, 802, 5, 101, 0, 0, 802, 64, 1, 0, 0, 0, 803, 804, 5, 114, 0, 0, 804, 805, 5, 101, 0, 0, 805, 806, 5, 109, 0, 0, 806, 807, 5, 111, 0, 0, 807, 808, 5, 116, 0, 0, 808, 809, 5, 101, 0, 0, 809, 810, 5, 71, 0, 0, 810, 811, 5, 108, 0, 0, 811, 812, 5, 111, 0, 0, 812, 813, 5, 98, 0, 0, 813, 814, 5, 97, 0, 0, 814, 815, 5, 108, 0, 0, 815, 816, 5, 73, 0, 0, 816, 817, 5, 68, 0, 0, 817, 818, 5, 83, 0, 0, 818, 819, 5, 116, 0, 0, 819, 820, 5, 114, 0, 0, 820, 821, 5, 105, 0, 0, 821, 822, 5, 110, 0, 0, 822, 823, 5, 103, 0, 0, 823, 66, 1, 0, 0, 0, 824, 825, 5, 114, 0, 0, 825, 826, 5, 101, 0, 0, 826, 827, 5, 109, 0, 0, 827, 828, 5, 111, 0, 0, 828, 829, 5, 116, 0, 0, 829, 830, 5, 101, 0, 0, 830, 831, 5, 73, 0, 0, 831, 832, 5, 110, 0, 0, 832, 833, 5, 102, 0, 0, 833, 834, 5, 111, 0, 0, 834, 68, 1, 0, 0, 0, 835, 836, 5, 102, 0, 0, 836, 837, 5, 105, 0, 0, 837, 838, 5, 108, 0, 0, 838, 839, 5, 101, 0, 0, 839, 840, 5, 69, 0, 0, 840, 841, 5, 110, 0, 0, 841, 842, 5, 99, 0, 0, 842, 843, 5, 111, 0, 0, 843, 844, 5, 100, 0, 0, 844, 845, 5, 105, 0, 0, 845, 846, 5, 110, 0, 0, 846, 847, 5, 103, 0, 0, 847, 70, 1, 0, 0, 0, 848, 849, 5, 99, 0, 0, 849, 850, 5, 111, 0, 0, 850, 851, 5, 109, 0, 0, 851, 852, 5, 109, 0, 0, 852, 853, 5, 101, 0, 0, 853, 854, 5, 110, 0, 0, 854, 855, 5, 116, 0, 0, 855, 856, 5, 115, 0, 0, 856, 72, 1, 0, 0, 0, 857, 858, 5, 101, 0, 0, 858, 859, 5, 120, 0, 0, 859, 860, 5, 112, 0, 0, 860, 861, 5, 108, 0, 0, 861, 862, 5, 105, 0, 0, 862, 863, 5, 99, 0, 0, 863, 864, 5, 105, 0, 0, 864, 865, 5, 116, 0, 0, 865, 866, 5, 70, 0, 0, 866, 867, 5, 105, 0, 0, 867, 868, 5, 108, 0, 0, 868, 869, 5, 101, 0, 0, 869, 870, 5, 84, 0, 0, 870, 871, 5, 121, 0, 0, 871, 872, 5, 112, 0, 0, 872, 873, 5, 101, 0, 0, 873, 74, 1, 0, 0, 0, 874, 875, 5, 108, 0, 0, 875, 876, 5, 97, 0, 0, 876, 877, 5, 115, 0, 0, 877, 878, 5, 116, 0, 0, 878, 879, 5, 75, 0, 0, 879, 880, 5, 110, 0, 0, 880, 881, 5, 111, 0, 0, 881, 882, 5, 119, 0, 0, 882, 883, 5, 110, 0, 0, 883, 884, 5, 70, 0, 0, 884, 885, 5, 105, 0, 0, 885, 886, 5, 108, 0, 0, 886, 887, 5, 101, 0, 0, 887, 888, 5, 84, 0, 0, 888, 889, 5, 121, 0, 0, 889, 890, 5, 112, 0, 0, 890, 891, 5, 101, 0, 0, 891, 76, 1, 0, 0, 0, 892, 893, 5, 105, 0, 0, 893, 894, 5, 110, 0, 0, 894, 895, 5, 99, 0, 0, 895, 896, 5, 108, 0, 0, 896, 897, 5, 117, 0, 0, 897, 898, 5, 100, 0, 0, 898, 899, 5, 101, 0, 0, 899, 900, 5, 73, 0, 0, 900, 901, 5, 110, 0, 0, 901, 902, 5, 73, 0, 0, 902, 903, 5, 110, 0, 0, 903, 904, 5, 100, 0, 0, 904, 905, 5, 101, 0, 0, 905, 906, 5, 120, 0, 0, 906, 78, 1, 0, 0, 0, 907, 908, 5, 105, 0, 0, 908, 909, 5, 110, 0, 0, 909, 910, 5, 100, 0, 0, 910, 911, 5, 101, 0, 0, 911, 912, 5, 110, 0, 0, 912, 913, 5, 116, 0, 0, 913, 914, 5, 87, 0, 0, 914, 915, 5, 105, 0, 0, 915, 916, 5, 100, 0, 0, 916, 917, 5, 116, 0, 0, 917, 918, 5, 104, 0, 0, 918, 80, 1, 0, 0, 0, 919, 920, 5, 116, 0, 0, 920, 921, 5, 97, 0, 0, 921, 922, 5, 98, 0, 0, 922, 923, 5, 87, 0, 0, 923, 924, 5, 105, 0, 0, 924, 925, 5, 100, 0, 0, 925, 926, 5, 116, 0, 0, 926, 927, 5, 104, 0, 0, 927, 82, 1, 0, 0, 0, 928, 929, 5, 117, 0, 0, 929, 930, 5, 115, 0, 0, 930, 931, 5, 101, 0, 0, 931, 932, 5, 115, 0, 0, 932, 933, 5, 84, 0, 0, 933, 934, 5, 97, 0, 0, 934, 935, 5, 98, 0, 0, 935, 936, 5, 115, 0, 0, 936, 84, 1, 0, 0, 0, 937, 938, 5, 119, 0, 0, 938, 939, 5, 114, 0, 0, 939, 940, 5, 97, 0, 0, 940, 941, 5, 112, 0, 0, 941, 942, 5, 115, 0, 0, 942, 943, 5, 76, 0, 0, 943, 944, 5, 105, 0, 0, 944, 945, 5, 110, 0, 0, 945, 946, 5, 101, 0, 0, 946, 947, 5, 115, 0, 0, 947, 86, 1, 0, 0, 0, 948, 949, 5, 112, 0, 0, 949, 950, 5, 108, 0, 0, 950, 951, 5, 97, 0, 0, 951, 952, 5, 116, 0, 0, 952, 953, 5, 102, 0, 0, 953, 954, 5, 111, 0, 0, 954, 955, 5, 114, 0, 0, 955, 956, 5, 109, 0, 0, 956, 957, 5, 70, 0, 0, 957, 958, 5, 105, 0, 0, 958, 959, 5, 108, 0, 0, 959, 960, 5, 116, 0, 0, 960, 961, 5, 101, 0, 0, 961, 962, 5, 114, 0, 0, 962, 88, 1, 0, 0, 0, 963, 964, 5, 112, 0, 0, 964, 965, 5, 108, 0, 0, 965, 966, 5, 97, 0, 0, 966, 967, 5, 116, 0, 0, 967, 968, 5, 102, 0, 0, 968, 969, 5, 111, 0, 0, 969, 970, 5, 114, 0, 0, 970, 971, 5, 109, 0, 0, 971, 972, 5, 70, 0, 0, 972, 973, 5, 105, 0, 0, 973, 974, 5, 108, 0, 0, 974, 975, 5, 116, 0, 0, 975, 976, 5, 101, 0, 0, 976, 977, 5, 114, 0, 0, 977, 978, 5, 115, 0, 0, 978, 90, 1, 0, 0, 0, 979, 980, 5, 99, 0, 0, 980, 981, 5, 104, 0, 0, 981, 982, 5, 105, 0, 0, 982, 983, 5, 108, 0, 0, 983, 984, 5, 100, 0, 0, 984, 985, 5, 114, 0, 0, 985, 986, 5, 101, 0, 0, 986, 987, 5, 110, 0, 0, 987, 92, 1, 0, 0, 0, 988, 989, 5, 112, 0, 0, 989, 990, 5, 114, 0, 0, 990, 991, 5, 111, 0, 0, 991, 992, 5, 100, 0, 0, 992, 993, 5, 117, 0, 0, 993, 994, 5, 99, 0, 0, 994, 995, 5, 116, 0, 0, 995, 996, 5, 73, 0, 0, 996, 997, 5, 110, 0, 0, 997, 998, 5, 115, 0, 0, 998, 999, 5, 116, 0, 0, 999, 1000, 5, 97, 0, 0, 1000, 1001, 5, 108, 0, 0, 1001, 1002, 5, 108, 0, 0, 1002, 1003, 5, 80, 0, 0, 1003, 1004, 5, 97, 0, 0, 1004, 1005, 5, 116, 0, 0, 1005, 1006, 5, 104, 0, 0, 1006, 94, 1, 0, 0, 0, 1007, 1008, 5, 114, 0, 0, 1008, 1009, 5, 101, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1011, 5, 111, 0, 0, 1011, 1012, 5, 115, 0, 0, 1012, 1013, 5, 105, 0, 0, 1013, 1014, 5, 116, 0, 0, 1014, 1015, 5, 111, 0, 0, 1015, 1016, 5, 114, 0, 0, 1016, 1017, 5, 121, 0, 0, 1017, 1018, 5, 85, 0, 0, 1018, 1019, 5, 82, 0, 0, 1019, 1020, 5, 76, 0, 0, 1020, 96, 1, 0, 0, 0, 1021, 1022, 5, 114, 0, 0, 1022, 1023, 5, 101, 0, 0, 1023, 1024, 5, 113, 0, 0, 1024, 1025, 5, 117, 0, 0, 1025, 1026, 5, 105, 0, 0, 1026, 1027, 5, 114, 0, 0, 1027, 1028, 5, 101, 0, 0, 1028, 1029, 5, 109, 0, 0, 1029, 1030, 5, 101, 0, 0, 1030, 1031, 5, 110, 0, 0, 1031, 1032, 5, 116, 0, 0, 1032, 98, 1, 0, 0, 0, 1033, 1034, 5, 112, 0, 0, 1034, 1035, 5, 97, 0, 0, 1035, 1036, 5, 99, 0, 0, 1036, 1037, 5, 107, 0, 0, 1037, 1038, 5, 97, 0, 0, 1038, 1039, 5, 103, 0, 0, 1039, 1040, 5, 101, 0, 0, 1040, 100, 1, 0, 0, 0, 1041, 1042, 5, 112, 0, 0, 1042, 1043, 5, 97, 0, 0, 1043, 1044, 5, 99, 0, 0, 1044, 1045, 5, 107, 0, 0, 1045, 1046, 5, 97, 0, 0, 1046, 1047, 5, 103, 0, 0, 1047, 1048, 5, 101, 0, 0, 1048, 1049, 5, 80, 0, 0, 1049, 1050, 5, 114, 0, 0, 1050, 1051, 5, 111, 0, 0, 1051, 1052, 5, 100, 0, 0, 1052, 1053, 5, 117, 0, 0, 1053, 1054, 5, 99, 0, 0, 1054, 1055, 5, 116, 0, 0, 1055, 1056, 5, 68, 0, 0, 1056, 1057, 5, 101, 0, 0, 1057, 1058, 5, 112, 0, 0, 1058, 1059, 5, 101, 0, 0, 1059, 1060, 5, 110, 0, 0, 1060, 1061, 5, 100, 0, 0, 1061, 1062, 5, 101, 0, 0, 1062, 1063, 5, 110, 0, 0, 1063, 1064, 5, 99, 0, 0, 1064, 1065, 5, 105, 0, 0, 1065, 1066, 5, 101, 0, 0, 1066, 1067, 5, 115, 0, 0, 1067, 102, 1, 0, 0, 0, 1068, 1069, 5, 110, 0, 0, 1069, 1070, 5, 97, 0, 0, 1070, 1071, 5, 109, 0, 0, 1071, 1072, 5, 101, 0, 0, 1072, 104, 1, 0, 0, 0, 1073, 1074, 5, 112, 0, 0, 1074, 1075, 5, 97, 0, 0, 1075, 1076, 5, 116, 0, 0, 1076, 1077, 5, 104, 0, 0, 1077, 106, 1, 0, 0, 0, 1078, 1079, 5, 115, 0, 0, 1079, 1080, 5, 111, 0, 0, 1080, 1081, 5, 117, 0, 0, 1081, 1082, 5, 114, 0, 0, 1082, 1083, 5, 99, 0, 0, 1083, 1084, 5, 101, 0, 0, 1084, 1085, 5, 84, 0, 0, 1085, 1086, 5, 114, 0, 0, 1086, 1087, 5, 101, 0, 0, 1087, 1088, 5, 101, 0, 0, 1088, 108, 1, 0, 0, 0, 1089, 1090, 5, 98, 0, 0, 1090, 1091, 5, 117, 0, 0, 1091, 1092, 5, 105, 0, 0, 1092, 1093, 5, 108, 0, 0, 1093, 1094, 5, 100, 0, 0, 1094, 1095, 5, 65, 0, 0, 1095, 1096, 5, 99, 0, 0, 1096, 1097, 5, 116, 0, 0, 1097, 1098, 5, 105, 0, 0, 1098, 1099, 5, 111, 0, 0, 1099, 1100, 5, 110, 0, 0, 1100, 1101, 5, 77, 0, 0, 1101, 1102, 5, 97, 0, 0, 1102, 1103, 5, 115, 0, 0, 1103, 1104, 5, 107, 0, 0, 1104, 110, 1, 0, 0, 0, 1105, 1106, 5, 102, 0, 0, 1106, 1107, 5, 105, 0, 0, 1107, 1108, 5, 108, 0, 0, 1108, 1109, 5, 101, 0, 0, 1109, 1110, 5, 115, 0, 0, 1110, 112, 1, 0, 0, 0, 1111, 1112, 5, 114, 0, 0, 1112, 1113, 5, 117, 0, 0, 1113, 1114, 5, 110, 0, 0, 1114, 1115, 5, 79, 0, 0, 1115, 1116, 5, 110, 0, 0, 1116, 1117, 5, 108, 0, 0, 1117, 1118, 5, 121, 0, 0, 1118, 1119, 5, 70, 0, 0, 1119, 1120, 5, 111, 0, 0, 1120, 1121, 5, 114, 0, 0, 1121, 1122, 5, 68, 0, 0, 1122, 1123, 5, 101, 0, 0, 1123, 1124, 5, 112, 0, 0, 1124, 1125, 5, 108, 0, 0, 1125, 1126, 5, 111, 0, 0, 1126, 1127, 5, 121, 0, 0, 1127, 1128, 5, 109, 0, 0, 1128, 1129, 5, 101, 0, 0, 1129, 1130, 5, 110, 0, 0, 1130, 1131, 5, 116, 0, 0, 1131, 1132, 5, 80, 0, 0, 1132, 1133, 5, 111, 0, 0, 1133, 1134, 5, 115, 0, 0, 1134, 1135, 5, 116, 0, 0, 1135, 1136, 5, 112, 0, 0, 1136, 1137, 5, 114, 0, 0, 1137, 1138, 5, 111, 0, 0, 1138, 1139, 5, 99, 0, 0, 1139, 1140, 5, 101, 0, 0, 1140, 1141, 5, 115, 0, 0, 1141, 1142, 5, 115, 0, 0, 1142, 1143, 5, 105, 0, 0, 1143, 1144, 5, 110, 0, 0, 1144, 1145, 5, 103, 0, 0, 1145, 114, 1, 0, 0, 0, 1146, 1147, 5, 40, 0, 0, 1147, 116, 1, 0, 0, 0, 1148, 1149, 5, 44, 0, 0, 1149, 118, 1, 0, 0, 0, 1150, 1151, 5, 41, 0, 0, 1151, 120, 1, 0, 0, 0, 1152, 1153, 5, 98, 0, 0, 1153, 1154, 5, 117, 0, 0, 1154, 1155, 5, 105, 0, 0, 1155, 1156, 5, 108, 0, 0, 1156, 1157, 5, 100, 0, 0, 1157, 1158, 5, 67, 0, 0, 1158, 1159, 5, 111, 0, 0, 1159, 1160, 5, 110, 0, 0, 1160, 1161, 5, 102, 0, 0, 1161, 1162, 5, 105, 0, 0, 1162, 1163, 5, 103, 0, 0, 1163, 1164, 5, 117, 0, 0, 1164, 1165, 5, 114, 0, 0, 1165, 1166, 5, 97, 0, 0, 1166, 1167, 5, 116, 0, 0, 1167, 1168, 5, 105, 0, 0, 1168, 1169, 5, 111, 0, 0, 1169, 1170, 5, 110, 0, 0, 1170, 1171, 5, 76, 0, 0, 1171, 1172, 5, 105, 0, 0, 1172, 1173, 5, 115, 0, 0, 1173, 1174, 5, 116, 0, 0, 1174, 122, 1, 0, 0, 0, 1175, 1176, 5, 98, 0, 0, 1176, 1177, 5, 117, 0, 0, 1177, 1178, 5, 105, 0, 0, 1178, 1179, 5, 108, 0, 0, 1179, 1180, 5, 100, 0, 0, 1180, 1181, 5, 80, 0, 0, 1181, 1182, 5, 104, 0, 0, 1182, 1183, 5, 97, 0, 0, 1183, 1184, 5, 115, 0, 0, 1184, 1185, 5, 101, 0, 0, 1185, 1186, 5, 115, 0, 0, 1186, 124, 1, 0, 0, 0, 1187, 1188, 5, 98, 0, 0, 1188, 1189, 5, 117, 0, 0, 1189, 1190, 5, 105, 0, 0, 1190, 1191, 5, 108, 0, 0, 1191, 1192, 5, 100, 0, 0, 1192, 1193, 5, 82, 0, 0, 1193, 1194, 5, 117, 0, 0, 1194, 1195, 5, 108, 0, 0, 1195, 1196, 5, 101, 0, 0, 1196, 1197, 5, 115, 0, 0, 1197, 126, 1, 0, 0, 0, 1198, 1199, 5, 98, 0, 0, 1199, 1200, 5, 117, 0, 0, 1200, 1201, 5, 105, 0, 0, 1201, 1202, 5, 108, 0, 0, 1202, 1203, 5, 100, 0, 0, 1203, 1204, 5, 65, 0, 0, 1204, 1205, 5, 114, 0, 0, 1205, 1206, 5, 103, 0, 0, 1206, 1207, 5, 117, 0, 0, 1207, 1208, 5, 109, 0, 0, 1208, 1209, 5, 101, 0, 0, 1209, 1210, 5, 110, 0, 0, 1210, 1211, 5, 116, 0, 0, 1211, 1212, 5, 115, 0, 0, 1212, 1213, 5, 83, 0, 0, 1213, 1214, 5, 116, 0, 0, 1214, 1215, 5, 114, 0, 0, 1215, 1216, 5, 105, 0, 0, 1216, 1217, 5, 110, 0, 0, 1217, 1218, 5, 103, 0, 0, 1218, 128, 1, 0, 0, 0, 1219, 1220, 5, 98, 0, 0, 1220, 1221, 5, 117, 0, 0, 1221, 1222, 5, 105, 0, 0, 1222, 1223, 5, 108, 0, 0, 1223, 1224, 5, 100, 0, 0, 1224, 1225, 5, 84, 0, 0, 1225, 1226, 5, 111, 0, 0, 1226, 1227, 5, 111, 0, 0, 1227, 1228, 5, 108, 0, 0, 1228, 1229, 5, 80, 0, 0, 1229, 1230, 5, 97, 0, 0, 1230, 1231, 5, 116, 0, 0, 1231, 1232, 5, 104, 0, 0, 1232, 130, 1, 0, 0, 0, 1233, 1234, 5, 98, 0, 0, 1234, 1235, 5, 117, 0, 0, 1235, 1236, 5, 105, 0, 0, 1236, 1237, 5, 108, 0, 0, 1237, 1238, 5, 100, 0, 0, 1238, 1239, 5, 87, 0, 0, 1239, 1240, 5, 111, 0, 0, 1240, 1241, 5, 114, 0, 0, 1241, 1242, 5, 107, 0, 0, 1242, 1243, 5, 105, 0, 0, 1243, 1244, 5, 110, 0, 0, 1244, 1245, 5, 103, 0, 0, 1245, 1246, 5, 68, 0, 0, 1246, 1247, 5, 105, 0, 0, 1247, 1248, 5, 114, 0, 0, 1248, 1249, 5, 101, 0, 0, 1249, 1250, 5, 99, 0, 0, 1250, 1251, 5, 116, 0, 0, 1251, 1252, 5, 111, 0, 0, 1252, 1253, 5, 114, 0, 0, 1253, 1254, 5, 121, 0, 0, 1254, 132, 1, 0, 0, 0, 1255, 1256, 5, 112, 0, 0, 1256, 1257, 5, 97, 0, 0, 1257, 1258, 5, 115, 0, 0, 1258, 1259, 5, 115, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1261, 5, 117, 0, 0, 1261, 1262, 5, 105, 0, 0, 1262, 1263, 5, 108, 0, 0, 1263, 1264, 5, 100, 0, 0, 1264, 1265, 5, 83, 0, 0, 1265, 1266, 5, 101, 0, 0, 1266, 1267, 5, 116, 0, 0, 1267, 1268, 5, 116, 0, 0, 1268, 1269, 5, 105, 0, 0, 1269, 1270, 5, 110, 0, 0, 1270, 1271, 5, 103, 0, 0, 1271, 1272, 5, 115, 0, 0, 1272, 1273, 5, 73, 0, 0, 1273, 1274, 5, 110, 0, 0, 1274, 1275, 5, 69, 0, 0, 1275, 1276, 5, 110, 0, 0, 1276, 1277, 5, 118, 0, 0, 1277, 1278, 5, 105, 0, 0, 1278, 1279, 5, 114, 0, 0, 1279, 1280, 5, 111, 0, 0, 1280, 1281, 5, 110, 0, 0, 1281, 1282, 5, 109, 0, 0, 1282, 1283, 5, 101, 0, 0, 1283, 1284, 5, 110, 0, 0, 1284, 1285, 5, 116, 0, 0, 1285, 134, 1, 0, 0, 0, 1286, 1287, 5, 100, 0, 0, 1287, 1288, 5, 101, 0, 0, 1288, 1289, 5, 112, 0, 0, 1289, 1290, 5, 101, 0, 0, 1290, 1291, 5, 110, 0, 0, 1291, 1292, 5, 100, 0, 0, 1292, 1293, 5, 101, 0, 0, 1293, 1294, 5, 110, 0, 0, 1294, 1295, 5, 99, 0, 0, 1295, 1296, 5, 105, 0, 0, 1296, 1297, 5, 101, 0, 0, 1297, 1298, 5, 115, 0, 0, 1298, 136, 1, 0, 0, 0, 1299, 1300, 5, 112, 0, 0, 1300, 1301, 5, 114, 0, 0, 1301, 1302, 5, 111, 0, 0, 1302, 1303, 5, 100, 0, 0, 1303, 1304, 5, 117, 0, 0, 1304, 1305, 5, 99, 0, 0, 1305, 1306, 5, 116, 0, 0, 1306, 1307, 5, 78, 0, 0, 1307, 1308, 5, 97, 0, 0, 1308, 1309, 5, 109, 0, 0, 1309, 1310, 5, 101, 0, 0, 1310, 138, 1, 0, 0, 0, 1311, 1312, 5, 112, 0, 0, 1312, 1313, 5, 114, 0, 0, 1313, 1314, 5, 111, 0, 0, 1314, 1315, 5, 100, 0, 0, 1315, 1316, 5, 117, 0, 0, 1316, 1317, 5, 99, 0, 0, 1317, 1318, 5, 116, 0, 0, 1318, 1319, 5, 82, 0, 0, 1319, 1320, 5, 101, 0, 0, 1320, 1321, 5, 102, 0, 0, 1321, 1322, 5, 101, 0, 0, 1322, 1323, 5, 114, 0, 0, 1323, 1324, 5, 101, 0, 0, 1324, 1325, 5, 110, 0, 0, 1325, 1326, 5, 99, 0, 0, 1326, 1327, 5, 101, 0, 0, 1327, 140, 1, 0, 0, 0, 1328, 1329, 5, 112, 0, 0, 1329, 1330, 5, 114, 0, 0, 1330, 1331, 5, 111, 0, 0, 1331, 1332, 5, 100, 0, 0, 1332, 1333, 5, 117, 0, 0, 1333, 1334, 5, 99, 0, 0, 1334, 1335, 5, 116, 0, 0, 1335, 1336, 5, 84, 0, 0, 1336, 1337, 5, 121, 0, 0, 1337, 1338, 5, 112, 0, 0, 1338, 1339, 5, 101, 0, 0, 1339, 142, 1, 0, 0, 0, 1340, 1341, 5, 108, 0, 0, 1341, 1342, 5, 105, 0, 0, 1342, 1343, 5, 110, 0, 0, 1343, 1344, 5, 101, 0, 0, 1344, 1345, 5, 69, 0, 0, 1345, 1346, 5, 110, 0, 0, 1346, 1347, 5, 100, 0, 0, 1347, 1348, 5, 105, 0, 0, 1348, 1349, 5, 110, 0, 0, 1349, 1350, 5, 103, 0, 0, 1350, 144, 1, 0, 0, 0, 1351, 1352, 5, 120, 0, 0, 1352, 1353, 5, 99, 0, 0, 1353, 1354, 5, 76, 0, 0, 1354, 1355, 5, 97, 0, 0, 1355, 1356, 5, 110, 0, 0, 1356, 1357, 5, 103, 0, 0, 1357, 1358, 5, 117, 0, 0, 1358, 1359, 5, 97, 0, 0, 1359, 1360, 5, 103, 0, 0, 1360, 1361, 5, 101, 0, 0, 1361, 1362, 5, 83, 0, 0, 1362, 1363, 5, 112, 0, 0, 1363, 1364, 5, 101, 0, 0, 1364, 1365, 5, 99, 0, 0, 1365, 1366, 5, 105, 0, 0, 1366, 1367, 5, 102, 0, 0, 1367, 1368, 5, 105, 0, 0, 1368, 1369, 5, 99, 0, 0, 1369, 1370, 5, 97, 0, 0, 1370, 1371, 5, 116, 0, 0, 1371, 1372, 5, 105, 0, 0, 1372, 1373, 5, 111, 0, 0, 1373, 1374, 5, 110, 0, 0, 1374, 1375, 5, 73, 0, 0, 1375, 1376, 5, 100, 0, 0, 1376, 1377, 5, 101, 0, 0, 1377, 1378, 5, 110, 0, 0, 1378, 1379, 5, 116, 0, 0, 1379, 1380, 5, 105, 0, 0, 1380, 1381, 5, 102, 0, 0, 1381, 1382, 5, 105, 0, 0, 1382, 1383, 5, 101, 0, 0, 1383, 1384, 5, 114, 0, 0, 1384, 146, 1, 0, 0, 0, 1385, 1386, 5, 112, 0, 0, 1386, 1387, 5, 108, 0, 0, 1387, 1388, 5, 105, 0, 0, 1388, 1389, 5, 115, 0, 0, 1389, 1390, 5, 116, 0, 0, 1390, 1391, 5, 83, 0, 0, 1391, 1392, 5, 116, 0, 0, 1392, 1393, 5, 114, 0, 0, 1393, 1394, 5, 117, 0, 0, 1394, 1395, 5, 99, 0, 0, 1395, 1396, 5, 116, 0, 0, 1396, 1397, 5, 117, 0, 0, 1397, 1398, 5, 114, 0, 0, 1398, 1399, 5, 101, 0, 0, 1399, 1400, 5, 68, 0, 0, 1400, 1401, 5, 101, 0, 0, 1401, 1402, 5, 102, 0, 0, 1402, 1403, 5, 105, 0, 0, 1403, 1404, 5, 110, 0, 0, 1404, 1405, 5, 105, 0, 0, 1405, 1406, 5, 116, 0, 0, 1406, 1407, 5, 105, 0, 0, 1407, 1408, 5, 111, 0, 0, 1408, 1409, 5, 110, 0, 0, 1409, 1410, 5, 73, 0, 0, 1410, 1411, 5, 100, 0, 0, 1411, 1412, 5, 101, 0, 0, 1412, 1413, 5, 110, 0, 0, 1413, 1414, 5, 116, 0, 0, 1414, 1415, 5, 105, 0, 0, 1415, 1416, 5, 102, 0, 0, 1416, 1417, 5, 105, 0, 0, 1417, 1418, 5, 101, 0, 0, 1418, 1419, 5, 114, 0, 0, 1419, 148, 1, 0, 0, 0, 1420, 1421, 5, 97, 0, 0, 1421, 1422, 5, 116, 0, 0, 1422, 1423, 5, 116, 0, 0, 1423, 1424, 5, 114, 0, 0, 1424, 1425, 5, 105, 0, 0, 1425, 1426, 5, 98, 0, 0, 1426, 1427, 5, 117, 0, 0, 1427, 1428, 5, 116, 0, 0, 1428, 1429, 5, 101, 0, 0, 1429, 1430, 5, 115, 0, 0, 1430, 150, 1, 0, 0, 0, 1431, 1432, 5, 76, 0, 0, 1432, 1433, 5, 97, 0, 0, 1433, 1434, 5, 115, 0, 0, 1434, 1435, 5, 116, 0, 0, 1435, 1436, 5, 83, 0, 0, 1436, 1437, 5, 119, 0, 0, 1437, 1438, 5, 105, 0, 0, 1438, 1439, 5, 102, 0, 0, 1439, 1440, 5, 116, 0, 0, 1440, 1441, 5, 77, 0, 0, 1441, 1442, 5, 105, 0, 0, 1442, 1443, 5, 103, 0, 0, 1443, 1444, 5, 114, 0, 0, 1444, 1445, 5, 97, 0, 0, 1445, 1446, 5, 116, 0, 0, 1446, 1447, 5, 105, 0, 0, 1447, 1448, 5, 111, 0, 0, 1448, 1449, 5, 110, 0, 0, 1449, 152, 1, 0, 0, 0, 1450, 1451, 5, 68, 0, 0, 1451, 1452, 5, 101, 0, 0, 1452, 1453, 5, 102, 0, 0, 1453, 1454, 5, 97, 0, 0, 1454, 1455, 5, 117, 0, 0, 1455, 1456, 5, 108, 0, 0, 1456, 1457, 5, 116, 0, 0, 1457, 1458, 5, 66, 0, 0, 1458, 1459, 5, 117, 0, 0, 1459, 1460, 5, 105, 0, 0, 1460, 1461, 5, 108, 0, 0, 1461, 1462, 5, 100, 0, 0, 1462, 1463, 5, 83, 0, 0, 1463, 1464, 5, 121, 0, 0, 1464, 1465, 5, 115, 0, 0, 1465, 1466, 5, 116, 0, 0, 1466, 1467, 5, 101, 0, 0, 1467, 1468, 5, 109, 0, 0, 1468, 1469, 5, 84, 0, 0, 1469, 1470, 5, 121, 0, 0, 1470, 1471, 5, 112, 0, 0, 1471, 1472, 5, 101, 0, 0, 1472, 1473, 5, 70, 0, 0, 1473, 1474, 5, 111, 0, 0, 1474, 1475, 5, 114, 0, 0, 1475, 1476, 5, 87, 0, 0, 1476, 1477, 5, 111, 0, 0, 1477, 1478, 5, 114, 0, 0, 1478, 1479, 5, 107, 0, 0, 1479, 1480, 5, 115, 0, 0, 1480, 1481, 5, 112, 0, 0, 1481, 1482, 5, 97, 0, 0, 1482, 1483, 5, 99, 0, 0, 1483, 1484, 5, 101, 0, 0, 1484, 154, 1, 0, 0, 0, 1485, 1486, 5, 76, 0, 0, 1486, 1487, 5, 97, 0, 0, 1487, 1488, 5, 115, 0, 0, 1488, 1489, 5, 116, 0, 0, 1489, 1490, 5, 83, 0, 0, 1490, 1491, 5, 119, 0, 0, 1491, 1492, 5, 105, 0, 0, 1492, 1493, 5, 102, 0, 0, 1493, 1494, 5, 116, 0, 0, 1494, 1495, 5, 85, 0, 0, 1495, 1496, 5, 112, 0, 0, 1496, 1497, 5, 100, 0, 0, 1497, 1498, 5, 97, 0, 0, 1498, 1499, 5, 116, 0, 0, 1499, 1500, 5, 101, 0, 0, 1500, 1501, 5, 67, 0, 0, 1501, 1502, 5, 104, 0, 0, 1502, 1503, 5, 101, 0, 0, 1503, 1504, 5, 99, 0, 0, 1504, 1505, 5, 107, 0, 0, 1505, 156, 1, 0, 0, 0, 1506, 1507, 5, 66, 0, 0, 1507, 1508, 5, 117, 0, 0, 1508, 1509, 5, 105, 0, 0, 1509, 1510, 5, 108, 0, 0, 1510, 1511, 5, 100, 0, 0, 1511, 1512, 5, 73, 0, 0, 1512, 1513, 5, 110, 0, 0, 1513, 1514, 5, 100, 0, 0, 1514, 1515, 5, 101, 0, 0, 1515, 1516, 5, 112, 0, 0, 1516, 1517, 5, 101, 0, 0, 1517, 1518, 5, 110, 0, 0, 1518, 1519, 5, 100, 0, 0, 1519, 1520, 5, 101, 0, 0, 1520, 1521, 5, 110, 0, 0, 1521, 1522, 5, 116, 0, 0, 1522, 1523, 5, 84, 0, 0, 1523, 1524, 5, 97, 0, 0, 1524, 1525, 5, 114, 0, 0, 1525, 1526, 5, 103, 0, 0, 1526, 1527, 5, 101, 0, 0, 1527, 1528, 5, 116, 0, 0, 1528, 1529, 5, 115, 0, 0, 1529, 1530, 5, 73, 0, 0, 1530, 1531, 5, 110, 0, 0, 1531, 1532, 5, 80, 0, 0, 1532, 1533, 5, 97, 0, 0, 1533, 1534, 5, 114, 0, 0, 1534, 1535, 5, 97, 0, 0, 1535, 1536, 5, 108, 0, 0, 1536, 1537, 5, 108, 0, 0, 1537, 1538, 5, 101, 0, 0, 1538, 1539, 5, 108, 0, 0, 1539, 158, 1, 0, 0, 0, 1540, 1541, 5, 76, 0, 0, 1541, 1542, 5, 97, 0, 0, 1542, 1543, 5, 115, 0, 0, 1543, 1544, 5, 116, 0, 0, 1544, 1545, 5, 84, 0, 0, 1545, 1546, 5, 101, 0, 0, 1546, 1547, 5, 115, 0, 0, 1547, 1548, 5, 116, 0, 0, 1548, 1549, 5, 105, 0, 0, 1549, 1550, 5, 110, 0, 0, 1550, 1551, 5, 103, 0, 0, 1551, 1552, 5, 85, 0, 0, 1552, 1553, 5, 112, 0, 0, 1553, 1554, 5, 103, 0, 0, 1554, 1555, 5, 114, 0, 0, 1555, 1556, 5, 97, 0, 0, 1556, 1557, 5, 100, 0, 0, 1557, 1558, 5, 101, 0, 0, 1558, 1559, 5, 67, 0, 0, 1559, 1560, 5, 104, 0, 0, 1560, 1561, 5, 101, 0, 0, 1561, 1562, 5, 99, 0, 0, 1562, 1563, 5, 107, 0, 0, 1563, 160, 1, 0, 0, 0, 1564, 1565, 5, 76, 0, 0, 1565, 1566, 5, 97, 0, 0, 1566, 1567, 5, 115, 0, 0, 1567, 1568, 5, 116, 0, 0, 1568, 1569, 5, 85, 0, 0, 1569, 1570, 5, 112, 0, 0, 1570, 1571, 5, 103, 0, 0, 1571, 1572, 5, 114, 0, 0, 1572, 1573, 5, 97, 0, 0, 1573, 1574, 5, 100, 0, 0, 1574, 1575, 5, 101, 0, 0, 1575, 1576, 5, 67, 0, 0, 1576, 1577, 5, 104, 0, 0, 1577, 1578, 5, 101, 0, 0, 1578, 1579, 5, 99, 0, 0, 1579, 1580, 5, 107, 0, 0, 1580, 162, 1, 0, 0, 0, 1581, 1582, 5, 79, 0, 0, 1582, 1583, 5, 82, 0, 0, 1583, 1584, 5, 71, 0, 0, 1584, 1585, 5, 65, 0, 0, 1585, 1586, 5, 78, 0, 0, 1586, 1587, 5, 73, 0, 0, 1587, 1588, 5, 90, 0, 0, 1588, 1589, 5, 65, 0, 0, 1589, 1590, 5, 84, 0, 0, 1590, 1591, 5, 73, 0, 0, 1591, 1592, 5, 79, 0, 0, 1592, 1593, 5, 78, 0, 0, 1593, 1594, 5, 78, 0, 0, 1594, 1595, 5, 65, 0, 0, 1595, 1596, 5, 77, 0, 0, 1596, 1597, 5, 69, 0, 0, 1597, 164, 1, 0, 0, 0, 1598, 1599, 5, 84, 0, 0, 1599, 1600, 5, 97, 0, 0, 1600, 1601, 5, 114, 0, 0, 1601, 1602, 5, 103, 0, 0, 1602, 1603, 5, 101, 0, 0, 1603, 1604, 5, 116, 0, 0, 1604, 1605, 5, 65, 0, 0, 1605, 1606, 5, 116, 0, 0, 1606, 1607, 5, 116, 0, 0, 1607, 1608, 5, 114, 0, 0, 1608, 1609, 5, 105, 0, 0, 1609, 1610, 5, 98, 0, 0, 1610, 1611, 5, 117, 0, 0, 1611, 1612, 5, 116, 0, 0, 1612, 1613, 5, 101, 0, 0, 1613, 1614, 5, 115, 0, 0, 1614, 166, 1, 0, 0, 0, 1615, 1616, 5, 67, 0, 0, 1616, 1617, 5, 114, 0, 0, 1617, 1618, 5, 101, 0, 0, 1618, 1619, 5, 97, 0, 0, 1619, 1620, 5, 116, 0, 0, 1620, 1621, 5, 101, 0, 0, 1621, 1622, 5, 100, 0, 0, 1622, 1623, 5, 79, 0, 0, 1623, 1624, 5, 110, 0, 0, 1624, 1625, 5, 84, 0, 0, 1625, 1626, 5, 111, 0, 0, 1626, 1627, 5, 111, 0, 0, 1627, 1628, 5, 108, 0, 0, 1628, 1629, 5, 115, 0, 0, 1629, 1630, 5, 86, 0, 0, 1630, 1631, 5, 101, 0, 0, 1631, 1632, 5, 114, 0, 0, 1632, 1633, 5, 115, 0, 0, 1633, 1634, 5, 105, 0, 0, 1634, 1635, 5, 111, 0, 0, 1635, 1636, 5, 110, 0, 0, 1636, 168, 1, 0, 0, 0, 1637, 1638, 5, 84, 0, 0, 1638, 1639, 5, 101, 0, 0, 1639, 1640, 5, 115, 0, 0, 1640, 1641, 5, 116, 0, 0, 1641, 1642, 5, 84, 0, 0, 1642, 1643, 5, 97, 0, 0, 1643, 1644, 5, 114, 0, 0, 1644, 1645, 5, 103, 0, 0, 1645, 1646, 5, 101, 0, 0, 1646, 1647, 5, 116, 0, 0, 1647, 1648, 5, 73, 0, 0, 1648, 1649, 5, 68, 0, 0, 1649, 170, 1, 0, 0, 0, 1650, 1651, 5, 68, 0, 0, 1651, 1652, 5, 101, 0, 0, 1652, 1653, 5, 118, 0, 0, 1653, 1654, 5, 101, 0, 0, 1654, 1655, 5, 108, 0, 0, 1655, 1656, 5, 111, 0, 0, 1656, 1657, 5, 112, 0, 0, 1657, 1658, 5, 109, 0, 0, 1658, 1659, 5, 101, 0, 0, 1659, 1660, 5, 110, 0, 0, 1660, 1661, 5, 116, 0, 0, 1661, 1662, 5, 84, 0, 0, 1662, 1663, 5, 101, 0, 0, 1663, 1664, 5, 97, 0, 0, 1664, 1665, 5, 109, 0, 0, 1665, 172, 1, 0, 0, 0, 1666, 1667, 5, 68, 0, 0, 1667, 1668, 5, 101, 0, 0, 1668, 1669, 5, 118, 0, 0, 1669, 1670, 5, 101, 0, 0, 1670, 1671, 5, 108, 0, 0, 1671, 1672, 5, 111, 0, 0, 1672, 1673, 5, 112, 0, 0, 1673, 1674, 5, 109, 0, 0, 1674, 1675, 5, 101, 0, 0, 1675, 1676, 5, 110, 0, 0, 1676, 1677, 5, 116, 0, 0, 1677, 1678, 5, 84, 0, 0, 1678, 1679, 5, 101, 0, 0, 1679, 1680, 5, 97, 0, 0, 1680, 1681, 5, 109, 0, 0, 1681, 1682, 5, 78, 0, 0, 1682, 1683, 5, 97, 0, 0, 1683, 1684, 5, 109, 0, 0, 1684, 1685, 5, 101, 0, 0, 1685, 174, 1, 0, 0, 0, 1686, 1687, 5, 80, 0, 0, 1687, 1688, 5, 114, 0, 0, 1688, 1689, 5, 111, 0, 0, 1689, 1690, 5, 118, 0, 0, 1690, 1691, 5, 105, 0, 0, 1691, 1692, 5, 115, 0, 0, 1692, 1693, 5, 105, 0, 0, 1693, 1694, 5, 111, 0, 0, 1694, 1695, 5, 110, 0, 0, 1695, 1696, 5, 105, 0, 0, 1696, 1697, 5, 110, 0, 0, 1697, 1698, 5, 103, 0, 0, 1698, 1699, 5, 83, 0, 0, 1699, 1700, 5, 116, 0, 0, 1700, 1701, 5, 121, 0, 0, 1701, 1702, 5, 108, 0, 0, 1702, 1703, 5, 101, 0, 0, 1703, 176, 1, 0, 0, 0, 1704, 1705, 5, 99, 0, 0, 1705, 1706, 5, 111, 0, 0, 1706, 1707, 5, 109, 0, 0, 1707, 1708, 5, 112, 0, 0, 1708, 1709, 5, 97, 0, 0, 1709, 1710, 5, 116, 0, 0, 1710, 1711, 5, 105, 0, 0, 1711, 1712, 5, 98, 0, 0, 1712, 1713, 5, 105, 0, 0, 1713, 1714, 5, 108, 0, 0, 1714, 1715, 5, 105, 0, 0, 1715, 1716, 5, 116, 0, 0, 1716, 1717, 5, 121, 0, 0, 1717, 1718, 5, 86, 0, 0, 1718, 1719, 5, 101, 0, 0, 1719, 1720, 5, 114, 0, 0, 1720, 1721, 5, 115, 0, 0, 1721, 1722, 5, 105, 0, 0, 1722, 1723, 5, 111, 0, 0, 1723, 1724, 5, 110, 0, 0, 1724, 178, 1, 0, 0, 0, 1725, 1726, 5, 100, 0, 0, 1726, 1727, 5, 101, 0, 0, 1727, 1728, 5, 118, 0, 0, 1728, 1729, 5, 101, 0, 0, 1729, 1730, 5, 108, 0, 0, 1730, 1731, 5, 111, 0, 0, 1731, 1732, 5, 112, 0, 0, 1732, 1733, 5, 109, 0, 0, 1733, 1734, 5, 101, 0, 0, 1734, 1735, 5, 110, 0, 0, 1735, 1736, 5, 116, 0, 0, 1736, 1737, 5, 82, 0, 0, 1737, 1738, 5, 101, 0, 0, 1738, 1739, 5, 103, 0, 0, 1739, 1740, 5, 105, 0, 0, 1740, 1741, 5, 111, 0, 0, 1741, 1742, 5, 110, 0, 0, 1742, 180, 1, 0, 0, 0, 1743, 1744, 5, 104, 0, 0, 1744, 1745, 5, 97, 0, 0, 1745, 1746, 5, 115, 0, 0, 1746, 1747, 5, 83, 0, 0, 1747, 1748, 5, 99, 0, 0, 1748, 1749, 5, 97, 0, 0, 1749, 1750, 5, 110, 0, 0, 1750, 1751, 5, 110, 0, 0, 1751, 1752, 5, 101, 0, 0, 1752, 1753, 5, 100, 0, 0, 1753, 1754, 5, 70, 0, 0, 1754, 1755, 5, 111, 0, 0, 1755, 1756, 5, 114, 0, 0, 1756, 1757, 5, 69, 0, 0, 1757, 1758, 5, 110, 0, 0, 1758, 1759, 5, 99, 0, 0, 1759, 1760, 5, 111, 0, 0, 1760, 1761, 5, 100, 0, 0, 1761, 1762, 5, 105, 0, 0, 1762, 1763, 5, 110, 0, 0, 1763, 1764, 5, 103, 0, 0, 1764, 1765, 5, 115, 0, 0, 1765, 182, 1, 0, 0, 0, 1766, 1767, 5, 107, 0, 0, 1767, 1768, 5, 110, 0, 0, 1768, 1769, 5, 111, 0, 0, 1769, 1770, 5, 119, 0, 0, 1770, 1771, 5, 110, 0, 0, 1771, 1772, 5, 82, 0, 0, 1772, 1773, 5, 101, 0, 0, 1773, 1774, 5, 103, 0, 0, 1774, 1775, 5, 105, 0, 0, 1775, 1776, 5, 111, 0, 0, 1776, 1777, 5, 110, 0, 0, 1777, 1778, 5, 115, 0, 0, 1778, 184, 1, 0, 0, 0, 1779, 1780, 5, 109, 0, 0, 1780, 1781, 5, 97, 0, 0, 1781, 1782, 5, 105, 0, 0, 1782, 1783, 5, 110, 0, 0, 1783, 1784, 5, 71, 0, 0, 1784, 1785, 5, 114, 0, 0, 1785, 1786, 5, 111, 0, 0, 1786, 1787, 5, 117, 0, 0, 1787, 1788, 5, 112, 0, 0, 1788, 186, 1, 0, 0, 0, 1789, 1790, 5, 112, 0, 0, 1790, 1791, 5, 114, 0, 0, 1791, 1792, 5, 111, 0, 0, 1792, 1793, 5, 100, 0, 0, 1793, 1794, 5, 117, 0, 0, 1794, 1795, 5, 99, 0, 0, 1795, 1796, 5, 116, 0, 0, 1796, 1797, 5, 82, 0, 0, 1797, 1798, 5, 101, 0, 0, 1798, 1799, 5, 102, 0, 0, 1799, 1800, 5, 71, 0, 0, 1800, 1801, 5, 114, 0, 0, 1801, 1802, 5, 111, 0, 0, 1802, 1803, 5, 117, 0, 0, 1803, 1804, 5, 112, 0, 0, 1804, 188, 1, 0, 0, 0, 1805, 1806, 5, 112, 0, 0, 1806, 1807, 5, 97, 0, 0, 1807, 1808, 5, 99, 0, 0, 1808, 1809, 5, 107, 0, 0, 1809, 1810, 5, 97, 0, 0, 1810, 1811, 5, 103, 0, 0, 1811, 1812, 5, 101, 0, 0, 1812, 1813, 5, 82, 0, 0, 1813, 1814, 5, 101, 0, 0, 1814, 1815, 5, 102, 0, 0, 1815, 1816, 5, 101, 0, 0, 1816, 1817, 5, 114, 0, 0, 1817, 1818, 5, 101, 0, 0, 1818, 1819, 5, 110, 0, 0, 1819, 1820, 5, 99, 0, 0, 1820, 1821, 5, 101, 0, 0, 1821, 1822, 5, 115, 0, 0, 1822, 190, 1, 0, 0, 0, 1823, 1824, 5, 112, 0, 0, 1824, 1825, 5, 114, 0, 0, 1825, 1826, 5, 111, 0, 0, 1826, 1827, 5, 106, 0, 0, 1827, 1828, 5, 101, 0, 0, 1828, 1829, 5, 99, 0, 0, 1829, 1830, 5, 116, 0, 0, 1830, 1831, 5, 68, 0, 0, 1831, 1832, 5, 105, 0, 0, 1832, 1833, 5, 114, 0, 0, 1833, 1834, 5, 80, 0, 0, 1834, 1835, 5, 97, 0, 0, 1835, 1836, 5, 116, 0, 0, 1836, 1837, 5, 104, 0, 0, 1837, 192, 1, 0, 0, 0, 1838, 1839, 5, 112, 0, 0, 1839, 1840, 5, 114, 0, 0, 1840, 1841, 5, 111, 0, 0, 1841, 1842, 5, 106, 0, 0, 1842, 1843, 5, 101, 0, 0, 1843, 1844, 5, 99, 0, 0, 1844, 1845, 5, 116, 0, 0, 1845, 1846, 5, 82, 0, 0, 1846, 1847, 5, 101, 0, 0, 1847, 1848, 5, 102, 0, 0, 1848, 1849, 5, 101, 0, 0, 1849, 1850, 5, 114, 0, 0, 1850, 1851, 5, 101, 0, 0, 1851, 1852, 5, 110, 0, 0, 1852, 1853, 5, 99, 0, 0, 1853, 1854, 5, 101, 0, 0, 1854, 1855, 5, 115, 0, 0, 1855, 194, 1, 0, 0, 0, 1856, 1857, 5, 112, 0, 0, 1857, 1858, 5, 114, 0, 0, 1858, 1859, 5, 111, 0, 0, 1859, 1860, 5, 106, 0, 0, 1860, 1861, 5, 101, 0, 0, 1861, 1862, 5, 99, 0, 0, 1862, 1863, 5, 116, 0, 0, 1863, 1864, 5, 82, 0, 0, 1864, 1865, 5, 111, 0, 0, 1865, 1866, 5, 111, 0, 0, 1866, 1867, 5, 116, 0, 0, 1867, 196, 1, 0, 0, 0, 1868, 1869, 5, 116, 0, 0, 1869, 1870, 5, 97, 0, 0, 1870, 1871, 5, 114, 0, 0, 1871, 1872, 5, 103, 0, 0, 1872, 1873, 5, 101, 0, 0, 1873, 1874, 5, 116, 0, 0, 1874, 1875, 5, 115, 0, 0, 1875, 198, 1, 0, 0, 0, 1876, 1877, 5, 105, 0, 0, 1877, 1878, 5, 110, 0, 0, 1878, 1879, 5, 112, 0, 0, 1879, 1880, 5, 117, 0, 0, 1880, 1881, 5, 116, 0, 0, 1881, 1882, 5, 70, 0, 0, 1882, 1883, 5, 105, 0, 0, 1883, 1884, 5, 108, 0, 0, 1884, 1885, 5, 101, 0, 0, 1885, 1886, 5, 76, 0, 0, 1886, 1887, 5, 105, 0, 0, 1887, 1888, 5, 115, 0, 0, 1888, 1889, 5, 116, 0, 0, 1889, 1890, 5, 80, 0, 0, 1890, 1891, 5, 97, 0, 0, 1891, 1892, 5, 116, 0, 0, 1892, 1893, 5, 104, 0, 0, 1893, 1894, 5, 115, 0, 0, 1894, 200, 1, 0, 0, 0, 1895, 1896, 5, 105, 0, 0, 1896, 1897, 5, 110, 0, 0, 1897, 1898, 5, 112, 0, 0, 1898, 1899, 5, 117, 0, 0, 1899, 1900, 5, 116, 0, 0, 1900, 1901, 5, 80, 0, 0, 1901, 1902, 5, 97, 0, 0, 1902, 1903, 5, 116, 0, 0, 1903, 1904, 5, 104, 0, 0, 1904, 1905, 5, 115, 0, 0, 1905, 202, 1, 0, 0, 0, 1906, 1907, 5, 111, 0, 0, 1907, 1908, 5, 117, 0, 0, 1908, 1909, 5, 116, 0, 0, 1909, 1910, 5, 112, 0, 0, 1910, 1911, 5, 117, 0, 0, 1911, 1912, 5, 116, 0, 0, 1912, 1913, 5, 70, 0, 0, 1913, 1914, 5, 105, 0, 0, 1914, 1915, 5, 108, 0, 0, 1915, 1916, 5, 101, 0, 0, 1916, 1917, 5, 76, 0, 0, 1917, 1918, 5, 105, 0, 0, 1918, 1919, 5, 115, 0, 0, 1919, 1920, 5, 116, 0, 0, 1920, 1921, 5, 80, 0, 0, 1921, 1922, 5, 97, 0, 0, 1922, 1923, 5, 116, 0, 0, 1923, 1924, 5, 104, 0, 0, 1924, 1925, 5, 115, 0, 0, 1925, 204, 1, 0, 0, 0, 1926, 1927, 5, 111, 0, 0, 1927, 1928, 5, 117, 0, 0, 1928, 1929, 5, 116, 0, 0, 1929, 1930, 5, 112, 0, 0, 1930, 1931, 5, 117, 0, 0, 1931, 1932, 5, 116, 0, 0, 1932, 1933, 5, 80, 0, 0, 1933, 1934, 5, 97, 0, 0, 1934, 1935, 5, 116, 0, 0, 1935, 1936, 5, 104, 0, 0, 1936, 1937, 5, 115, 0, 0, 1937, 206, 1, 0, 0, 0, 1938, 1939, 5, 115, 0, 0, 1939, 1940, 5, 104, 0, 0, 1940, 1941, 5, 101, 0, 0, 1941, 1942, 5, 108, 0, 0, 1942, 1943, 5, 108, 0, 0, 1943, 1944, 5, 80, 0, 0, 1944, 1945, 5, 97, 0, 0, 1945, 1946, 5, 116, 0, 0, 1946, 1947, 5, 104, 0, 0, 1947, 208, 1, 0, 0, 0, 1948, 1949, 5, 115, 0, 0, 1949, 1950, 5, 104, 0, 0, 1950, 1951, 5, 101, 0, 0, 1951, 1952, 5, 108, 0, 0, 1952, 1953, 5, 108, 0, 0, 1953, 1954, 5, 83, 0, 0, 1954, 1955, 5, 99, 0, 0, 1955, 1956, 5, 114, 0, 0, 1956, 1957, 5, 105, 0, 0, 1957, 1958, 5, 112, 0, 0, 1958, 1959, 5, 116, 0, 0, 1959, 210, 1, 0, 0, 0, 1960, 1961, 5, 115, 0, 0, 1961, 1962, 5, 104, 0, 0, 1962, 1963, 5, 111, 0, 0, 1963, 1964, 5, 119, 0, 0, 1964, 1965, 5, 69, 0, 0, 1965, 1966, 5, 110, 0, 0, 1966, 1967, 5, 118, 0, 0, 1967, 1968, 5, 86, 0, 0, 1968, 1969, 5, 97, 0, 0, 1969, 1970, 5, 114, 0, 0, 1970, 1971, 5, 115, 0, 0, 1971, 1972, 5, 73, 0, 0, 1972, 1973, 5, 110, 0, 0, 1973, 1974, 5, 76, 0, 0, 1974, 1975, 5, 111, 0, 0, 1975, 1976, 5, 103, 0, 0, 1976, 212, 1, 0, 0, 0, 1977, 1978, 5, 116, 0, 0, 1978, 1979, 5, 97, 0, 0, 1979, 1980, 5, 114, 0, 0, 1980, 1981, 5, 103, 0, 0, 1981, 1982, 5, 101, 0, 0, 1982, 1983, 5, 116, 0, 0, 1983, 214, 1, 0, 0, 0, 1984, 1985, 5, 116, 0, 0, 1985, 1986, 5, 97, 0, 0, 1986, 1987, 5, 114, 0, 0, 1987, 1988, 5, 103, 0, 0, 1988, 1989, 5, 101, 0, 0, 1989, 1990, 5, 116, 0, 0, 1990, 1991, 5, 80, 0, 0, 1991, 1992, 5, 114, 0, 0, 1992, 1993, 5, 111, 0, 0, 1993, 1994, 5, 120, 0, 0, 1994, 1995, 5, 121, 0, 0, 1995, 216, 1, 0, 0, 0, 1996, 1997, 5, 102, 0, 0, 1997, 1998, 5, 105, 0, 0, 1998, 1999, 5, 108, 0, 0, 1999, 2000, 5, 101, 0, 0, 2000, 2001, 5, 84, 0, 0, 2001, 2002, 5, 121, 0, 0, 2002, 2003, 5, 112, 0, 0, 2003, 2004, 5, 101, 0, 0, 2004, 218, 1, 0, 0, 0, 2005, 2006, 5, 114, 0, 0, 2006, 2007, 5, 101, 0, 0, 2007, 2008, 5, 109, 0, 0, 2008, 2009, 5, 111, 0, 0, 2009, 2010, 5, 116, 0, 0, 2010, 2011, 5, 101, 0, 0, 2011, 2012, 5, 82, 0, 0, 2012, 2013, 5, 101, 0, 0, 2013, 2014, 5, 102, 0, 0, 2014, 220, 1, 0, 0, 0, 2015, 2016, 5, 98, 0, 0, 2016, 2017, 5, 97, 0, 0, 2017, 2018, 5, 115, 0, 0, 2018, 2019, 5, 101, 0, 0, 2019, 2020, 5, 67, 0, 0, 2020, 2021, 5, 111, 0, 0, 2021, 2022, 5, 110, 0, 0, 2022, 2023, 5, 102, 0, 0, 2023, 2024, 5, 105, 0, 0, 2024, 2025, 5, 103, 0, 0, 2025, 2026, 5, 117, 0, 0, 2026, 2027, 5, 114, 0, 0, 2027, 2028, 5, 97, 0, 0, 2028, 2029, 5, 116, 0, 0, 2029, 2030, 5, 105, 0, 0, 2030, 2031, 5, 111, 0, 0, 2031, 2032, 5, 110, 0, 0, 2032, 2033, 5, 82, 0, 0, 2033, 2034, 5, 101, 0, 0, 2034, 2035, 5, 102, 0, 0, 2035, 2036, 5, 101, 0, 0, 2036, 2037, 5, 114, 0, 0, 2037, 2038, 5, 101, 0, 0, 2038, 2039, 5, 110, 0, 0, 2039, 2040, 5, 99, 0, 0, 2040, 2041, 5, 101, 0, 0, 2041, 222, 1, 0, 0, 0, 2042, 2043, 5, 98, 0, 0, 2043, 2044, 5, 117, 0, 0, 2044, 2045, 5, 105, 0, 0, 2045, 2046, 5, 108, 0, 0, 2046, 2047, 5, 100, 0, 0, 2047, 2048, 5, 83, 0, 0, 2048, 2049, 5, 101, 0, 0, 2049, 2050, 5, 116, 0, 0, 2050, 2051, 5, 116, 0, 0, 2051, 2052, 5, 105, 0, 0, 2052, 2053, 5, 110, 0, 0, 2053, 2054, 5, 103, 0, 0, 2054, 2055, 5, 115, 0, 0, 2055, 224, 1, 0, 0, 0, 2056, 2057, 5, 100, 0, 0, 2057, 2058, 5, 115, 0, 0, 2058, 2059, 5, 116, 0, 0, 2059, 2060, 5, 80, 0, 0, 2060, 2061, 5, 97, 0, 0, 2061, 2062, 5, 116, 0, 0, 2062, 2063, 5, 104, 0, 0, 2063, 226, 1, 0, 0, 0, 2064, 2065, 5, 100, 0, 0, 2065, 2066, 5, 115, 0, 0, 2066, 2067, 5, 116, 0, 0, 2067, 2068, 5, 83, 0, 0, 2068, 2069, 5, 117, 0, 0, 2069, 2070, 5, 98, 0, 0, 2070, 2071, 5, 102, 0, 0, 2071, 2072, 5, 111, 0, 0, 2072, 2073, 5, 108, 0, 0, 2073, 2074, 5, 100, 0, 0, 2074, 2075, 5, 101, 0, 0, 2075, 2076, 5, 114, 0, 0, 2076, 2077, 5, 83, 0, 0, 2077, 2078, 5, 112, 0, 0, 2078, 2079, 5, 101, 0, 0, 2079, 2080, 5, 99, 0, 0, 2080, 228, 1, 0, 0, 0, 2081, 2082, 5, 80, 0, 0, 2082, 2083, 5, 114, 0, 0, 2083, 2084, 5, 111, 0, 0, 2084, 2085, 5, 100, 0, 0, 2085, 2086, 5, 117, 0, 0, 2086, 2087, 5, 99, 0, 0, 2087, 2088, 5, 116, 0, 0, 2088, 2089, 5, 71, 0, 0, 2089, 2090, 5, 114, 0, 0, 2090, 2091, 5, 111, 0, 0, 2091, 2092, 5, 117, 0, 0, 2092, 2093, 5, 112, 0, 0, 2093, 230, 1, 0, 0, 0, 2094, 2095, 5, 80, 0, 0, 2095, 2096, 5, 114, 0, 0, 2096, 2097, 5, 111, 0, 0, 2097, 2098, 5, 106, 0, 0, 2098, 2099, 5, 101, 0, 0, 2099, 2100, 5, 99, 0, 0, 2100, 2101, 5, 116, 0, 0, 2101, 2102, 5, 82, 0, 0, 2102, 2103, 5, 101, 0, 0, 2103, 2104, 5, 102, 0, 0, 2104, 232, 1, 0, 0, 0, 2105, 2106, 5, 98, 0, 0, 2106, 2107, 5, 117, 0, 0, 2107, 2108, 5, 105, 0, 0, 2108, 2109, 5, 108, 0, 0, 2109, 2110, 5, 100, 0, 0, 2110, 2111, 5, 67, 0, 0, 2111, 2112, 5, 111, 0, 0, 2112, 2113, 5, 110, 0, 0, 2113, 2114, 5, 102, 0, 0, 2114, 2115, 5, 105, 0, 0, 2115, 2116, 5, 103, 0, 0, 2116, 2117, 5, 117, 0, 0, 2117, 2118, 5, 114, 0, 0, 2118, 2119, 5, 97, 0, 0, 2119, 2120, 5, 116, 0, 0, 2120, 2121, 5, 105, 0, 0, 2121, 2122, 5, 111, 0, 0, 2122, 2123, 5, 110, 0, 0, 2123, 2124, 5, 115, 0, 0, 2124, 234, 1, 0, 0, 0, 2125, 2126, 5, 100, 0, 0, 2126, 2127, 5, 101, 0, 0, 2127, 2128, 5, 102, 0, 0, 2128, 2129, 5, 97, 0, 0, 2129, 2130, 5, 117, 0, 0, 2130, 2131, 5, 108, 0, 0, 2131, 2132, 5, 116, 0, 0, 2132, 2133, 5, 67, 0, 0, 2133, 2134, 5, 111, 0, 0, 2134, 2135, 5, 110, 0, 0, 2135, 2136, 5, 102, 0, 0, 2136, 2137, 5, 105, 0, 0, 2137, 2138, 5, 103, 0, 0, 2138, 2139, 5, 117, 0, 0, 2139, 2140, 5, 114, 0, 0, 2140, 2141, 5, 97, 0, 0, 2141, 2142, 5, 116, 0, 0, 2142, 2143, 5, 105, 0, 0, 2143, 2144, 5, 111, 0, 0, 2144, 2145, 5, 110, 0, 0, 2145, 2146, 5, 73, 0, 0, 2146, 2147, 5, 115, 0, 0, 2147, 2148, 5, 86, 0, 0, 2148, 2149, 5, 105, 0, 0, 2149, 2150, 5, 115, 0, 0, 2150, 2151, 5, 105, 0, 0, 2151, 2152, 5, 98, 0, 0, 2152, 2153, 5, 108, 0, 0, 2153, 2154, 5, 101, 0, 0, 2154, 236, 1, 0, 0, 0, 2155, 2156, 5, 100, 0, 0, 2156, 2157, 5, 101, 0, 0, 2157, 2158, 5, 102, 0, 0, 2158, 2159, 5, 97, 0, 0, 2159, 2160, 5, 117, 0, 0, 2160, 2161, 5, 108, 0, 0, 2161, 2162, 5, 116, 0, 0, 2162, 2163, 5, 67, 0, 0, 2163, 2164, 5, 111, 0, 0, 2164, 2165, 5, 110, 0, 0, 2165, 2166, 5, 102, 0, 0, 2166, 2167, 5, 105, 0, 0, 2167, 2168, 5, 103, 0, 0, 2168, 2169, 5, 117, 0, 0, 2169, 2170, 5, 114, 0, 0, 2170, 2171, 5, 97, 0, 0, 2171, 2172, 5, 116, 0, 0, 2172, 2173, 5, 105, 0, 0, 2173, 2174, 5, 111, 0, 0, 2174, 2175, 5, 110, 0, 0, 2175, 2176, 5, 78, 0, 0, 2176, 2177, 5, 97, 0, 0, 2177, 2178, 5, 109, 0, 0, 2178, 2179, 5, 101, 0, 0, 2179, 238, 1, 0, 0, 0, 2180, 2181, 5, 115, 0, 0, 2181, 2182, 5, 101, 0, 0, 2182, 2183, 5, 116, 0, 0, 2183, 2184, 5, 116, 0, 0, 2184, 2185, 5, 105, 0, 0, 2185, 2186, 5, 110, 0, 0, 2186, 2187, 5, 103, 0, 0, 2187, 2188, 5, 115, 0, 0, 2188, 240, 1, 0, 0, 0, 2189, 2190, 5, 83, 0, 0, 2190, 2191, 5, 121, 0, 0, 2191, 2192, 5, 115, 0, 0, 2192, 2193, 5, 116, 0, 0, 2193, 2194, 5, 101, 0, 0, 2194, 2195, 5, 109, 0, 0, 2195, 2196, 5, 67, 0, 0, 2196, 2197, 5, 97, 0, 0, 2197, 2198, 5, 112, 0, 0, 2198, 2199, 5, 97, 0, 0, 2199, 2200, 5, 98, 0, 0, 2200, 2201, 5, 105, 0, 0, 2201, 2202, 5, 108, 0, 0, 2202, 2203, 5, 105, 0, 0, 2203, 2204, 5, 116, 0, 0, 2204, 2205, 5, 105, 0, 0, 2205, 2206, 5, 101, 0, 0, 2206, 2207, 5, 115, 0, 0, 2207, 242, 1, 0, 0, 0, 2208, 2209, 5, 99, 0, 0, 2209, 2210, 5, 117, 0, 0, 2210, 2211, 5, 114, 0, 0, 2211, 2212, 5, 114, 0, 0, 2212, 2213, 5, 101, 0, 0, 2213, 2214, 5, 110, 0, 0, 2214, 2215, 5, 116, 0, 0, 2215, 2216, 5, 86, 0, 0, 2216, 2217, 5, 101, 0, 0, 2217, 2218, 5, 114, 0, 0, 2218, 2219, 5, 115, 0, 0, 2219, 2220, 5, 105, 0, 0, 2220, 2221, 5, 111, 0, 0, 2221, 2222, 5, 110, 0, 0, 2222, 244, 1, 0, 0, 0, 2223, 2224, 5, 118, 0, 0, 2224, 2225, 5, 101, 0, 0, 2225, 2226, 5, 114, 0, 0, 2226, 2227, 5, 115, 0, 0, 2227, 2228, 5, 105, 0, 0, 2228, 2229, 5, 111, 0, 0, 2229, 2230, 5, 110, 0, 0, 2230, 2231, 5, 71, 0, 0, 2231, 2232, 5, 114, 0, 0, 2232, 2233, 5, 111, 0, 0, 2233, 2234, 5, 117, 0, 0, 2234, 2235, 5, 112, 0, 0, 2235, 2236, 5, 84, 0, 0, 2236, 2237, 5, 121, 0, 0, 2237, 2238, 5, 112, 0, 0, 2238, 2239, 5, 101, 0, 0, 2239, 246, 1, 0, 0, 0, 2240, 2241, 5, 67, 0, 0, 2241, 2242, 5, 76, 0, 0, 2242, 2243, 5, 65, 0, 0, 2243, 2244, 5, 83, 0, 0, 2244, 2245, 5, 83, 0, 0, 2245, 2246, 5, 80, 0, 0, 2246, 2247, 5, 82, 0, 0, 2247, 2248, 5, 69, 0, 0, 2248, 2249, 5, 70, 0, 0, 2249, 2250, 5, 73, 0, 0, 2250, 2251, 5, 88, 0, 0, 2251, 248, 1, 0, 0, 0, 2252, 2253, 5, 99, 0, 0, 2253, 2254, 5, 108, 0, 0, 2254, 2255, 5, 97, 0, 0, 2255, 2256, 5, 115, 0, 0, 2256, 2257, 5, 115, 0, 0, 2257, 2258, 5, 101, 0, 0, 2258, 2259, 5, 115, 0, 0, 2259, 250, 1, 0, 0, 0, 2260, 2261, 5, 105, 0, 0, 2261, 2262, 5, 115, 0, 0, 2262, 2263, 5, 97, 0, 0, 2263, 252, 1, 0, 0, 0, 2264, 2265, 5, 111, 0, 0, 2265, 2266, 5, 98, 0, 0, 2266, 2267, 5, 106, 0, 0, 2267, 2268, 5, 101, 0, 0, 2268, 2269, 5, 99, 0, 0, 2269, 2270, 5, 116, 0, 0, 2270, 2271, 5, 115, 0, 0, 2271, 254, 1, 0, 0, 0, 2272, 2273, 5, 114, 0, 0, 2273, 2274, 5, 111, 0, 0, 2274, 2275, 5, 111, 0, 0, 2275, 2276, 5, 116, 0, 0, 2276, 2277, 5, 79, 0, 0, 2277, 2278, 5, 98, 0, 0, 2278, 2279, 5, 106, 0, 0, 2279, 2280, 5, 101, 0, 0, 2280, 2281, 5, 99, 0, 0, 2281, 2282, 5, 116, 0, 0, 2282, 256, 1, 0, 0, 0, 2283, 2285, 7, 0, 0, 0, 2284, 2283, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2284, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 258, 1, 0, 0, 0, 2288, 2289, 5, 46, 0, 0, 2289, 260, 1, 0, 0, 0, 2290, 2291, 5, 45, 0, 0, 2291, 262, 1, 0, 0, 0, 2292, 2293, 5, 95, 0, 0, 2293, 264, 1, 0, 0, 0, 2294, 2295, 5, 47, 0, 0, 2295, 266, 1, 0, 0, 0, 2296, 2297, 3, 279, 139, 0, 2297, 2298, 3, 279, 139, 0, 2298, 2299, 3, 279, 139, 0, 2299, 2300, 3, 279, 139, 0, 2300, 2301, 3, 279, 139, 0, 2301, 2302, 3, 279, 139, 0, 2302, 2303, 3, 279, 139, 0, 2303, 2304, 3, 279, 139, 0, 2304, 2305, 3, 279, 139, 0, 2305, 2306, 3, 279, 139, 0, 2306, 2307, 3, 279, 139, 0, 2307, 2308, 3, 279, 139, 0, 2308, 2309, 3, 279, 139, 0, 2309, 2310, 3, 279, 139, 0, 2310, 2311, 3, 279, 139, 0, 2311, 2312, 3, 279, 139, 0, 2312, 2313, 3, 279, 139, 0, 2313, 2314, 3, 279, 139, 0, 2314, 2315, 3, 279, 139, 0, 2315, 2316, 3, 279, 139, 0, 2316, 2317, 3, 279, 139, 0, 2317, 2318, 3, 279, 139, 0, 2318, 2319, 3, 279, 139, 0, 2319, 2321, 3, 279, 139, 0, 2320, 2322, 3, 279, 139, 0, 2321, 2320, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2324, 1, 0, 0, 0, 2323, 2325, 3, 279, 139, 0, 2324, 2323, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2327, 1, 0, 0, 0, 2326, 2328, 3, 279, 139, 0, 2327, 2326, 1, 0, 0, 0, 2327, 2328, 1, 0, 0, 0, 2328, 2330, 1, 0, 0, 0, 2329, 2331, 3, 279, 139, 0, 2330, 2329, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2333, 1, 0, 0, 0, 2332, 2334, 3, 279, 139, 0, 2333, 2332, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2336, 1, 0, 0, 0, 2335, 2337, 3, 279, 139, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2339, 1, 0, 0, 0, 2338, 2340, 3, 279, 139, 0, 2339, 2338, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2342, 1, 0, 0, 0, 2341, 2343, 3, 279, 139, 0, 2342, 2341, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2382, 1, 0, 0, 0, 2344, 2345, 5, 70, 0, 0, 2345, 2346, 5, 82, 0, 0, 2346, 2350, 5, 95, 0, 0, 2347, 2348, 5, 71, 0, 0, 2348, 2350, 5, 95, 0, 0, 2349, 2344, 1, 0, 0, 0, 2349, 2347, 1, 0, 0, 0, 2350, 2352, 1, 0, 0, 0, 2351, 2353, 3, 279, 139, 0, 2352, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2352, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2382, 1, 0, 0, 0, 2356, 2357, 3, 277, 138, 0, 2357, 2358, 3, 277, 138, 0, 2358, 2359, 3, 277, 138, 0, 2359, 2360, 3, 277, 138, 0, 2360, 2361, 3, 277, 138, 0, 2361, 2362, 3, 277, 138, 0, 2362, 2363, 3, 277, 138, 0, 2363, 2364, 3, 277, 138, 0, 2364, 2365, 3, 277, 138, 0, 2365, 2366, 3, 277, 138, 0, 2366, 2367, 3, 277, 138, 0, 2367, 2368, 3, 277, 138, 0, 2368, 2369, 3, 277, 138, 0, 2369, 2370, 3, 277, 138, 0, 2370, 2371, 3, 277, 138, 0, 2371, 2372, 3, 277, 138, 0, 2372, 2373, 3, 277, 138, 0, 2373, 2374, 3, 277, 138, 0, 2374, 2375, 3, 277, 138, 0, 2375, 2376, 3, 277, 138, 0, 2376, 2377, 3, 277, 138, 0, 2377, 2378, 3, 277, 138, 0, 2378, 2379, 3, 277, 138, 0, 2379, 2380, 3, 277, 138, 0, 2380, 2382, 1, 0, 0, 0, 2381, 2296, 1, 0, 0, 0, 2381, 2349, 1, 0, 0, 0, 2381, 2356, 1, 0, 0, 0, 2382, 268, 1, 0, 0, 0, 2383, 2385, 5, 34, 0, 0, 2384, 2386, 3, 281, 140, 0, 2385, 2384, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2390, 5, 34, 0, 0, 2390, 2394, 1, 0, 0, 0, 2391, 2392, 5, 34, 0, 0, 2392, 2394, 5, 34, 0, 0, 2393, 2383, 1, 0, 0, 0, 2393, 2391, 1, 0, 0, 0, 2394, 270, 1, 0, 0, 0, 2395, 2401, 3, 275, 137, 0, 2396, 2401, 3, 263, 131, 0, 2397, 2401, 3, 261, 130, 0, 2398, 2401, 3, 265, 132, 0, 2399, 2401, 3, 259, 129, 0, 2400, 2395, 1, 0, 0, 0, 2400, 2396, 1, 0, 0, 0, 2400, 2397, 1, 0, 0, 0, 2400, 2398, 1, 0, 0, 0, 2400, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2400, 1, 0, 0, 0, 2402, 2403, 1, 0, 0, 0, 2403, 272, 1, 0, 0, 0, 2404, 2405, 5, 36, 0, 0, 2405, 2407, 3, 271, 135, 0, 2406, 2404, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2406, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2411, 1, 0, 0, 0, 2410, 2412, 3, 265, 132, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 274, 1, 0, 0, 0, 2413, 2414, 7, 1, 0, 0, 2414, 276, 1, 0, 0, 0, 2415, 2416, 7, 2, 0, 0, 2416, 278, 1, 0, 0, 0, 2417, 2418, 7, 3, 0, 0, 2418, 280, 1, 0, 0, 0, 2419, 2423, 8, 4, 0, 0, 2420, 2421, 5, 92, 0, 0, 2421, 2423, 5, 34, 0, 0, 2422, 2419, 1, 0, 0, 0, 2422, 2420, 1, 0, 0, 0, 2423, 282, 1, 0, 0, 0, 2424, 2426, 7, 5, 0, 0, 2425, 2424, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2425, 1, 0, 0, 0, 2427, 2428, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2430, 6, 141, 0, 0, 2430, 284, 1, 0, 0, 0, 2431, 2432, 5, 47, 0, 0, 2432, 2433, 5, 42, 0, 0, 2433, 2437, 1, 0, 0, 0, 2434, 2436, 9, 0, 0, 0, 2435, 2434, 1, 0, 0, 0, 2436, 2439, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2437, 2435, 1, 0, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2437, 1, 0, 0, 0, 2440, 2441, 5, 42, 0, 0, 2441, 2442, 5, 47, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2444, 6, 142, 0, 0, 2444, 286, 1, 0, 0, 0, 2445, 2446, 5, 47, 0, 0, 2446, 2447, 5, 47, 0, 0, 2447, 2451, 1, 0, 0, 0, 2448, 2450, 8, 6, 0, 0, 2449, 2448, 1, 0, 0, 0, 2450, 2453, 1, 0, 0, 0, 2451, 2449, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2451, 1, 0, 0, 0, 2454, 2455, 6, 143, 0, 0, 2455, 288, 1, 0, 0, 0, 23, 0, 2286, 2321, 2324, 2327, 2330, 2333, 2336, 2339, 2342, 2349, 2354, 2381, 2387, 2393, 2400, 2402, 2408, 2411, 2422, 2427, 2437, 2451, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 142, 2456, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 4, 12, 336, 8, 12, 11, 12, 12, 12, 337, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2322, 8, 133, 1, 133, 3, 133, 2325, 8, 133, 1, 133, 3, 133, 2328, 8, 133, 1, 133, 3, 133, 2331, 8, 133, 1, 133, 3, 133, 2334, 8, 133, 1, 133, 3, 133, 2337, 8, 133, 1, 133, 3, 133, 2340, 8, 133, 1, 133, 3, 133, 2343, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2350, 8, 133, 1, 133, 4, 133, 2353, 8, 133, 11, 133, 12, 133, 2354, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 2382, 8, 133, 1, 134, 1, 134, 4, 134, 2386, 8, 134, 11, 134, 12, 134, 2387, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 2394, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 4, 135, 2401, 8, 135, 11, 135, 12, 135, 2402, 1, 136, 1, 136, 4, 136, 2407, 8, 136, 11, 136, 12, 136, 2408, 1, 136, 3, 136, 2412, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 3, 140, 2423, 8, 140, 1, 141, 4, 141, 2426, 8, 141, 11, 141, 12, 141, 2427, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 2436, 8, 142, 10, 142, 12, 142, 2439, 9, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 5, 143, 2450, 8, 143, 10, 143, 12, 143, 2453, 9, 143, 1, 143, 1, 143, 1, 2437, 0, 144, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 0, 281, 0, 283, 140, 285, 141, 287, 142, 1, 0, 7, 1, 0, 48, 57, 3, 0, 48, 57, 65, 90, 97, 122, 2, 0, 48, 57, 65, 90, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 34, 34, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 2479, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 1, 289, 1, 0, 0, 0, 3, 291, 1, 0, 0, 0, 5, 293, 1, 0, 0, 0, 7, 295, 1, 0, 0, 0, 9, 297, 1, 0, 0, 0, 11, 299, 1, 0, 0, 0, 13, 301, 1, 0, 0, 0, 15, 303, 1, 0, 0, 0, 17, 318, 1, 0, 0, 0, 19, 326, 1, 0, 0, 0, 21, 328, 1, 0, 0, 0, 23, 330, 1, 0, 0, 0, 25, 335, 1, 0, 0, 0, 27, 339, 1, 0, 0, 0, 29, 353, 1, 0, 0, 0, 31, 361, 1, 0, 0, 0, 33, 372, 1, 0, 0, 0, 35, 374, 1, 0, 0, 0, 37, 376, 1, 0, 0, 0, 39, 395, 1, 0, 0, 0, 41, 408, 1, 0, 0, 0, 43, 430, 1, 0, 0, 0, 45, 453, 1, 0, 0, 0, 47, 470, 1, 0, 0, 0, 49, 494, 1, 0, 0, 0, 51, 503, 1, 0, 0, 0, 53, 524, 1, 0, 0, 0, 55, 540, 1, 0, 0, 0, 57, 556, 1, 0, 0, 0, 59, 567, 1, 0, 0, 0, 61, 585, 1, 0, 0, 0, 63, 608, 1, 0, 0, 0, 65, 633, 1, 0, 0, 0, 67, 654, 1, 0, 0, 0, 69, 674, 1, 0, 0, 0, 71, 690, 1, 0, 0, 0, 73, 711, 1, 0, 0, 0, 75, 731, 1, 0, 0, 0, 77, 761, 1, 0, 0, 0, 79, 793, 1, 0, 0, 0, 81, 808, 1, 0, 0, 0, 83, 816, 1, 0, 0, 0, 85, 827, 1, 0, 0, 0, 87, 843, 1, 0, 0, 0, 89, 853, 1, 0, 0, 0, 91, 874, 1, 0, 0, 0, 93, 885, 1, 0, 0, 0, 95, 898, 1, 0, 0, 0, 97, 907, 1, 0, 0, 0, 99, 924, 1, 0, 0, 0, 101, 942, 1, 0, 0, 0, 103, 957, 1, 0, 0, 0, 105, 969, 1, 0, 0, 0, 107, 978, 1, 0, 0, 0, 109, 987, 1, 0, 0, 0, 111, 998, 1, 0, 0, 0, 113, 1013, 1, 0, 0, 0, 115, 1029, 1, 0, 0, 0, 117, 1038, 1, 0, 0, 0, 119, 1057, 1, 0, 0, 0, 121, 1071, 1, 0, 0, 0, 123, 1083, 1, 0, 0, 0, 125, 1091, 1, 0, 0, 0, 127, 1118, 1, 0, 0, 0, 129, 1123, 1, 0, 0, 0, 131, 1128, 1, 0, 0, 0, 133, 1139, 1, 0, 0, 0, 135, 1155, 1, 0, 0, 0, 137, 1161, 1, 0, 0, 0, 139, 1196, 1, 0, 0, 0, 141, 1219, 1, 0, 0, 0, 143, 1231, 1, 0, 0, 0, 145, 1242, 1, 0, 0, 0, 147, 1263, 1, 0, 0, 0, 149, 1277, 1, 0, 0, 0, 151, 1299, 1, 0, 0, 0, 153, 1330, 1, 0, 0, 0, 155, 1343, 1, 0, 0, 0, 157, 1355, 1, 0, 0, 0, 159, 1372, 1, 0, 0, 0, 161, 1384, 1, 0, 0, 0, 163, 1395, 1, 0, 0, 0, 165, 1429, 1, 0, 0, 0, 167, 1464, 1, 0, 0, 0, 169, 1475, 1, 0, 0, 0, 171, 1494, 1, 0, 0, 0, 173, 1529, 1, 0, 0, 0, 175, 1550, 1, 0, 0, 0, 177, 1584, 1, 0, 0, 0, 179, 1608, 1, 0, 0, 0, 181, 1625, 1, 0, 0, 0, 183, 1642, 1, 0, 0, 0, 185, 1659, 1, 0, 0, 0, 187, 1681, 1, 0, 0, 0, 189, 1694, 1, 0, 0, 0, 191, 1710, 1, 0, 0, 0, 193, 1730, 1, 0, 0, 0, 195, 1748, 1, 0, 0, 0, 197, 1769, 1, 0, 0, 0, 199, 1787, 1, 0, 0, 0, 201, 1810, 1, 0, 0, 0, 203, 1823, 1, 0, 0, 0, 205, 1833, 1, 0, 0, 0, 207, 1849, 1, 0, 0, 0, 209, 1867, 1, 0, 0, 0, 211, 1882, 1, 0, 0, 0, 213, 1900, 1, 0, 0, 0, 215, 1912, 1, 0, 0, 0, 217, 1920, 1, 0, 0, 0, 219, 1939, 1, 0, 0, 0, 221, 1950, 1, 0, 0, 0, 223, 1970, 1, 0, 0, 0, 225, 1982, 1, 0, 0, 0, 227, 1992, 1, 0, 0, 0, 229, 2004, 1, 0, 0, 0, 231, 2021, 1, 0, 0, 0, 233, 2028, 1, 0, 0, 0, 235, 2040, 1, 0, 0, 0, 237, 2049, 1, 0, 0, 0, 239, 2059, 1, 0, 0, 0, 241, 2086, 1, 0, 0, 0, 243, 2100, 1, 0, 0, 0, 245, 2108, 1, 0, 0, 0, 247, 2125, 1, 0, 0, 0, 249, 2138, 1, 0, 0, 0, 251, 2149, 1, 0, 0, 0, 253, 2169, 1, 0, 0, 0, 255, 2199, 1, 0, 0, 0, 257, 2224, 1, 0, 0, 0, 259, 2233, 1, 0, 0, 0, 261, 2252, 1, 0, 0, 0, 263, 2267, 1, 0, 0, 0, 265, 2284, 1, 0, 0, 0, 267, 2381, 1, 0, 0, 0, 269, 2393, 1, 0, 0, 0, 271, 2400, 1, 0, 0, 0, 273, 2406, 1, 0, 0, 0, 275, 2413, 1, 0, 0, 0, 277, 2415, 1, 0, 0, 0, 279, 2417, 1, 0, 0, 0, 281, 2422, 1, 0, 0, 0, 283, 2425, 1, 0, 0, 0, 285, 2431, 1, 0, 0, 0, 287, 2445, 1, 0, 0, 0, 289, 290, 5, 123, 0, 0, 290, 2, 1, 0, 0, 0, 291, 292, 5, 125, 0, 0, 292, 4, 1, 0, 0, 0, 293, 294, 5, 61, 0, 0, 294, 6, 1, 0, 0, 0, 295, 296, 5, 59, 0, 0, 296, 8, 1, 0, 0, 0, 297, 298, 5, 40, 0, 0, 298, 10, 1, 0, 0, 0, 299, 300, 5, 44, 0, 0, 300, 12, 1, 0, 0, 0, 301, 302, 5, 41, 0, 0, 302, 14, 1, 0, 0, 0, 303, 304, 5, 97, 0, 0, 304, 305, 5, 114, 0, 0, 305, 306, 5, 99, 0, 0, 306, 307, 5, 104, 0, 0, 307, 308, 5, 105, 0, 0, 308, 309, 5, 118, 0, 0, 309, 310, 5, 101, 0, 0, 310, 311, 5, 86, 0, 0, 311, 312, 5, 101, 0, 0, 312, 313, 5, 114, 0, 0, 313, 314, 5, 115, 0, 0, 314, 315, 5, 105, 0, 0, 315, 316, 5, 111, 0, 0, 316, 317, 5, 110, 0, 0, 317, 16, 1, 0, 0, 0, 318, 319, 5, 99, 0, 0, 319, 320, 5, 108, 0, 0, 320, 321, 5, 97, 0, 0, 321, 322, 5, 115, 0, 0, 322, 323, 5, 115, 0, 0, 323, 324, 5, 101, 0, 0, 324, 325, 5, 115, 0, 0, 325, 18, 1, 0, 0, 0, 326, 327, 5, 45, 0, 0, 327, 20, 1, 0, 0, 0, 328, 329, 5, 46, 0, 0, 329, 22, 1, 0, 0, 0, 330, 331, 5, 105, 0, 0, 331, 332, 5, 115, 0, 0, 332, 333, 5, 97, 0, 0, 333, 24, 1, 0, 0, 0, 334, 336, 7, 0, 0, 0, 335, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 26, 1, 0, 0, 0, 339, 340, 5, 111, 0, 0, 340, 341, 5, 98, 0, 0, 341, 342, 5, 106, 0, 0, 342, 343, 5, 101, 0, 0, 343, 344, 5, 99, 0, 0, 344, 345, 5, 116, 0, 0, 345, 346, 5, 86, 0, 0, 346, 347, 5, 101, 0, 0, 347, 348, 5, 114, 0, 0, 348, 349, 5, 115, 0, 0, 349, 350, 5, 105, 0, 0, 350, 351, 5, 111, 0, 0, 351, 352, 5, 110, 0, 0, 352, 28, 1, 0, 0, 0, 353, 354, 5, 111, 0, 0, 354, 355, 5, 98, 0, 0, 355, 356, 5, 106, 0, 0, 356, 357, 5, 101, 0, 0, 357, 358, 5, 99, 0, 0, 358, 359, 5, 116, 0, 0, 359, 360, 5, 115, 0, 0, 360, 30, 1, 0, 0, 0, 361, 362, 5, 114, 0, 0, 362, 363, 5, 111, 0, 0, 363, 364, 5, 111, 0, 0, 364, 365, 5, 116, 0, 0, 365, 366, 5, 79, 0, 0, 366, 367, 5, 98, 0, 0, 367, 368, 5, 106, 0, 0, 368, 369, 5, 101, 0, 0, 369, 370, 5, 99, 0, 0, 370, 371, 5, 116, 0, 0, 371, 32, 1, 0, 0, 0, 372, 373, 5, 47, 0, 0, 373, 34, 1, 0, 0, 0, 374, 375, 5, 95, 0, 0, 375, 36, 1, 0, 0, 0, 376, 377, 5, 80, 0, 0, 377, 378, 5, 66, 0, 0, 378, 379, 5, 88, 0, 0, 379, 380, 5, 65, 0, 0, 380, 381, 5, 103, 0, 0, 381, 382, 5, 103, 0, 0, 382, 383, 5, 114, 0, 0, 383, 384, 5, 101, 0, 0, 384, 385, 5, 103, 0, 0, 385, 386, 5, 97, 0, 0, 386, 387, 5, 116, 0, 0, 387, 388, 5, 101, 0, 0, 388, 389, 5, 84, 0, 0, 389, 390, 5, 97, 0, 0, 390, 391, 5, 114, 0, 0, 391, 392, 5, 103, 0, 0, 392, 393, 5, 101, 0, 0, 393, 394, 5, 116, 0, 0, 394, 38, 1, 0, 0, 0, 395, 396, 5, 80, 0, 0, 396, 397, 5, 66, 0, 0, 397, 398, 5, 88, 0, 0, 398, 399, 5, 66, 0, 0, 399, 400, 5, 117, 0, 0, 400, 401, 5, 105, 0, 0, 401, 402, 5, 108, 0, 0, 402, 403, 5, 100, 0, 0, 403, 404, 5, 70, 0, 0, 404, 405, 5, 105, 0, 0, 405, 406, 5, 108, 0, 0, 406, 407, 5, 101, 0, 0, 407, 40, 1, 0, 0, 0, 408, 409, 5, 80, 0, 0, 409, 410, 5, 66, 0, 0, 410, 411, 5, 88, 0, 0, 411, 412, 5, 67, 0, 0, 412, 413, 5, 111, 0, 0, 413, 414, 5, 110, 0, 0, 414, 415, 5, 116, 0, 0, 415, 416, 5, 97, 0, 0, 416, 417, 5, 105, 0, 0, 417, 418, 5, 110, 0, 0, 418, 419, 5, 101, 0, 0, 419, 420, 5, 114, 0, 0, 420, 421, 5, 73, 0, 0, 421, 422, 5, 116, 0, 0, 422, 423, 5, 101, 0, 0, 423, 424, 5, 109, 0, 0, 424, 425, 5, 80, 0, 0, 425, 426, 5, 114, 0, 0, 426, 427, 5, 111, 0, 0, 427, 428, 5, 120, 0, 0, 428, 429, 5, 121, 0, 0, 429, 42, 1, 0, 0, 0, 430, 431, 5, 80, 0, 0, 431, 432, 5, 66, 0, 0, 432, 433, 5, 88, 0, 0, 433, 434, 5, 67, 0, 0, 434, 435, 5, 111, 0, 0, 435, 436, 5, 112, 0, 0, 436, 437, 5, 121, 0, 0, 437, 438, 5, 70, 0, 0, 438, 439, 5, 105, 0, 0, 439, 440, 5, 108, 0, 0, 440, 441, 5, 101, 0, 0, 441, 442, 5, 115, 0, 0, 442, 443, 5, 66, 0, 0, 443, 444, 5, 117, 0, 0, 444, 445, 5, 105, 0, 0, 445, 446, 5, 108, 0, 0, 446, 447, 5, 100, 0, 0, 447, 448, 5, 80, 0, 0, 448, 449, 5, 104, 0, 0, 449, 450, 5, 97, 0, 0, 450, 451, 5, 115, 0, 0, 451, 452, 5, 101, 0, 0, 452, 44, 1, 0, 0, 0, 453, 454, 5, 80, 0, 0, 454, 455, 5, 66, 0, 0, 455, 456, 5, 88, 0, 0, 456, 457, 5, 70, 0, 0, 457, 458, 5, 105, 0, 0, 458, 459, 5, 108, 0, 0, 459, 460, 5, 101, 0, 0, 460, 461, 5, 82, 0, 0, 461, 462, 5, 101, 0, 0, 462, 463, 5, 102, 0, 0, 463, 464, 5, 101, 0, 0, 464, 465, 5, 114, 0, 0, 465, 466, 5, 101, 0, 0, 466, 467, 5, 110, 0, 0, 467, 468, 5, 99, 0, 0, 468, 469, 5, 101, 0, 0, 469, 46, 1, 0, 0, 0, 470, 471, 5, 80, 0, 0, 471, 472, 5, 66, 0, 0, 472, 473, 5, 88, 0, 0, 473, 474, 5, 70, 0, 0, 474, 475, 5, 114, 0, 0, 475, 476, 5, 97, 0, 0, 476, 477, 5, 109, 0, 0, 477, 478, 5, 101, 0, 0, 478, 479, 5, 119, 0, 0, 479, 480, 5, 111, 0, 0, 480, 481, 5, 114, 0, 0, 481, 482, 5, 107, 0, 0, 482, 483, 5, 115, 0, 0, 483, 484, 5, 66, 0, 0, 484, 485, 5, 117, 0, 0, 485, 486, 5, 105, 0, 0, 486, 487, 5, 108, 0, 0, 487, 488, 5, 100, 0, 0, 488, 489, 5, 80, 0, 0, 489, 490, 5, 104, 0, 0, 490, 491, 5, 97, 0, 0, 491, 492, 5, 115, 0, 0, 492, 493, 5, 101, 0, 0, 493, 48, 1, 0, 0, 0, 494, 495, 5, 80, 0, 0, 495, 496, 5, 66, 0, 0, 496, 497, 5, 88, 0, 0, 497, 498, 5, 71, 0, 0, 498, 499, 5, 114, 0, 0, 499, 500, 5, 111, 0, 0, 500, 501, 5, 117, 0, 0, 501, 502, 5, 112, 0, 0, 502, 50, 1, 0, 0, 0, 503, 504, 5, 80, 0, 0, 504, 505, 5, 66, 0, 0, 505, 506, 5, 88, 0, 0, 506, 507, 5, 72, 0, 0, 507, 508, 5, 101, 0, 0, 508, 509, 5, 97, 0, 0, 509, 510, 5, 100, 0, 0, 510, 511, 5, 101, 0, 0, 511, 512, 5, 114, 0, 0, 512, 513, 5, 115, 0, 0, 513, 514, 5, 66, 0, 0, 514, 515, 5, 117, 0, 0, 515, 516, 5, 105, 0, 0, 516, 517, 5, 108, 0, 0, 517, 518, 5, 100, 0, 0, 518, 519, 5, 80, 0, 0, 519, 520, 5, 104, 0, 0, 520, 521, 5, 97, 0, 0, 521, 522, 5, 115, 0, 0, 522, 523, 5, 101, 0, 0, 523, 52, 1, 0, 0, 0, 524, 525, 5, 80, 0, 0, 525, 526, 5, 66, 0, 0, 526, 527, 5, 88, 0, 0, 527, 528, 5, 78, 0, 0, 528, 529, 5, 97, 0, 0, 529, 530, 5, 116, 0, 0, 530, 531, 5, 105, 0, 0, 531, 532, 5, 118, 0, 0, 532, 533, 5, 101, 0, 0, 533, 534, 5, 84, 0, 0, 534, 535, 5, 97, 0, 0, 535, 536, 5, 114, 0, 0, 536, 537, 5, 103, 0, 0, 537, 538, 5, 101, 0, 0, 538, 539, 5, 116, 0, 0, 539, 54, 1, 0, 0, 0, 540, 541, 5, 80, 0, 0, 541, 542, 5, 66, 0, 0, 542, 543, 5, 88, 0, 0, 543, 544, 5, 76, 0, 0, 544, 545, 5, 101, 0, 0, 545, 546, 5, 103, 0, 0, 546, 547, 5, 97, 0, 0, 547, 548, 5, 99, 0, 0, 548, 549, 5, 121, 0, 0, 549, 550, 5, 84, 0, 0, 550, 551, 5, 97, 0, 0, 551, 552, 5, 114, 0, 0, 552, 553, 5, 103, 0, 0, 553, 554, 5, 101, 0, 0, 554, 555, 5, 116, 0, 0, 555, 56, 1, 0, 0, 0, 556, 557, 5, 80, 0, 0, 557, 558, 5, 66, 0, 0, 558, 559, 5, 88, 0, 0, 559, 560, 5, 80, 0, 0, 560, 561, 5, 114, 0, 0, 561, 562, 5, 111, 0, 0, 562, 563, 5, 106, 0, 0, 563, 564, 5, 101, 0, 0, 564, 565, 5, 99, 0, 0, 565, 566, 5, 116, 0, 0, 566, 58, 1, 0, 0, 0, 567, 568, 5, 80, 0, 0, 568, 569, 5, 66, 0, 0, 569, 570, 5, 88, 0, 0, 570, 571, 5, 82, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 102, 0, 0, 573, 574, 5, 101, 0, 0, 574, 575, 5, 114, 0, 0, 575, 576, 5, 101, 0, 0, 576, 577, 5, 110, 0, 0, 577, 578, 5, 99, 0, 0, 578, 579, 5, 101, 0, 0, 579, 580, 5, 80, 0, 0, 580, 581, 5, 114, 0, 0, 581, 582, 5, 111, 0, 0, 582, 583, 5, 120, 0, 0, 583, 584, 5, 121, 0, 0, 584, 60, 1, 0, 0, 0, 585, 586, 5, 80, 0, 0, 586, 587, 5, 66, 0, 0, 587, 588, 5, 88, 0, 0, 588, 589, 5, 82, 0, 0, 589, 590, 5, 101, 0, 0, 590, 591, 5, 115, 0, 0, 591, 592, 5, 111, 0, 0, 592, 593, 5, 117, 0, 0, 593, 594, 5, 114, 0, 0, 594, 595, 5, 99, 0, 0, 595, 596, 5, 101, 0, 0, 596, 597, 5, 115, 0, 0, 597, 598, 5, 66, 0, 0, 598, 599, 5, 117, 0, 0, 599, 600, 5, 105, 0, 0, 600, 601, 5, 108, 0, 0, 601, 602, 5, 100, 0, 0, 602, 603, 5, 80, 0, 0, 603, 604, 5, 104, 0, 0, 604, 605, 5, 97, 0, 0, 605, 606, 5, 115, 0, 0, 606, 607, 5, 101, 0, 0, 607, 62, 1, 0, 0, 0, 608, 609, 5, 80, 0, 0, 609, 610, 5, 66, 0, 0, 610, 611, 5, 88, 0, 0, 611, 612, 5, 83, 0, 0, 612, 613, 5, 104, 0, 0, 613, 614, 5, 101, 0, 0, 614, 615, 5, 108, 0, 0, 615, 616, 5, 108, 0, 0, 616, 617, 5, 83, 0, 0, 617, 618, 5, 99, 0, 0, 618, 619, 5, 114, 0, 0, 619, 620, 5, 105, 0, 0, 620, 621, 5, 112, 0, 0, 621, 622, 5, 116, 0, 0, 622, 623, 5, 66, 0, 0, 623, 624, 5, 117, 0, 0, 624, 625, 5, 105, 0, 0, 625, 626, 5, 108, 0, 0, 626, 627, 5, 100, 0, 0, 627, 628, 5, 80, 0, 0, 628, 629, 5, 104, 0, 0, 629, 630, 5, 97, 0, 0, 630, 631, 5, 115, 0, 0, 631, 632, 5, 101, 0, 0, 632, 64, 1, 0, 0, 0, 633, 634, 5, 80, 0, 0, 634, 635, 5, 66, 0, 0, 635, 636, 5, 88, 0, 0, 636, 637, 5, 83, 0, 0, 637, 638, 5, 111, 0, 0, 638, 639, 5, 117, 0, 0, 639, 640, 5, 114, 0, 0, 640, 641, 5, 99, 0, 0, 641, 642, 5, 101, 0, 0, 642, 643, 5, 115, 0, 0, 643, 644, 5, 66, 0, 0, 644, 645, 5, 117, 0, 0, 645, 646, 5, 105, 0, 0, 646, 647, 5, 108, 0, 0, 647, 648, 5, 100, 0, 0, 648, 649, 5, 80, 0, 0, 649, 650, 5, 104, 0, 0, 650, 651, 5, 97, 0, 0, 651, 652, 5, 115, 0, 0, 652, 653, 5, 101, 0, 0, 653, 66, 1, 0, 0, 0, 654, 655, 5, 80, 0, 0, 655, 656, 5, 66, 0, 0, 656, 657, 5, 88, 0, 0, 657, 658, 5, 84, 0, 0, 658, 659, 5, 97, 0, 0, 659, 660, 5, 114, 0, 0, 660, 661, 5, 103, 0, 0, 661, 662, 5, 101, 0, 0, 662, 663, 5, 116, 0, 0, 663, 664, 5, 68, 0, 0, 664, 665, 5, 101, 0, 0, 665, 666, 5, 112, 0, 0, 666, 667, 5, 101, 0, 0, 667, 668, 5, 110, 0, 0, 668, 669, 5, 100, 0, 0, 669, 670, 5, 101, 0, 0, 670, 671, 5, 110, 0, 0, 671, 672, 5, 99, 0, 0, 672, 673, 5, 121, 0, 0, 673, 68, 1, 0, 0, 0, 674, 675, 5, 80, 0, 0, 675, 676, 5, 66, 0, 0, 676, 677, 5, 88, 0, 0, 677, 678, 5, 86, 0, 0, 678, 679, 5, 97, 0, 0, 679, 680, 5, 114, 0, 0, 680, 681, 5, 105, 0, 0, 681, 682, 5, 97, 0, 0, 682, 683, 5, 110, 0, 0, 683, 684, 5, 116, 0, 0, 684, 685, 5, 71, 0, 0, 685, 686, 5, 114, 0, 0, 686, 687, 5, 111, 0, 0, 687, 688, 5, 117, 0, 0, 688, 689, 5, 112, 0, 0, 689, 70, 1, 0, 0, 0, 690, 691, 5, 88, 0, 0, 691, 692, 5, 67, 0, 0, 692, 693, 5, 66, 0, 0, 693, 694, 5, 117, 0, 0, 694, 695, 5, 105, 0, 0, 695, 696, 5, 108, 0, 0, 696, 697, 5, 100, 0, 0, 697, 698, 5, 67, 0, 0, 698, 699, 5, 111, 0, 0, 699, 700, 5, 110, 0, 0, 700, 701, 5, 102, 0, 0, 701, 702, 5, 105, 0, 0, 702, 703, 5, 103, 0, 0, 703, 704, 5, 117, 0, 0, 704, 705, 5, 114, 0, 0, 705, 706, 5, 97, 0, 0, 706, 707, 5, 116, 0, 0, 707, 708, 5, 105, 0, 0, 708, 709, 5, 111, 0, 0, 709, 710, 5, 110, 0, 0, 710, 72, 1, 0, 0, 0, 711, 712, 5, 88, 0, 0, 712, 713, 5, 67, 0, 0, 713, 714, 5, 67, 0, 0, 714, 715, 5, 111, 0, 0, 715, 716, 5, 110, 0, 0, 716, 717, 5, 102, 0, 0, 717, 718, 5, 105, 0, 0, 718, 719, 5, 103, 0, 0, 719, 720, 5, 117, 0, 0, 720, 721, 5, 114, 0, 0, 721, 722, 5, 97, 0, 0, 722, 723, 5, 116, 0, 0, 723, 724, 5, 105, 0, 0, 724, 725, 5, 111, 0, 0, 725, 726, 5, 110, 0, 0, 726, 727, 5, 76, 0, 0, 727, 728, 5, 105, 0, 0, 728, 729, 5, 115, 0, 0, 729, 730, 5, 116, 0, 0, 730, 74, 1, 0, 0, 0, 731, 732, 5, 88, 0, 0, 732, 733, 5, 67, 0, 0, 733, 734, 5, 82, 0, 0, 734, 735, 5, 101, 0, 0, 735, 736, 5, 109, 0, 0, 736, 737, 5, 111, 0, 0, 737, 738, 5, 116, 0, 0, 738, 739, 5, 101, 0, 0, 739, 740, 5, 83, 0, 0, 740, 741, 5, 119, 0, 0, 741, 742, 5, 105, 0, 0, 742, 743, 5, 102, 0, 0, 743, 744, 5, 116, 0, 0, 744, 745, 5, 80, 0, 0, 745, 746, 5, 97, 0, 0, 746, 747, 5, 99, 0, 0, 747, 748, 5, 107, 0, 0, 748, 749, 5, 97, 0, 0, 749, 750, 5, 103, 0, 0, 750, 751, 5, 101, 0, 0, 751, 752, 5, 82, 0, 0, 752, 753, 5, 101, 0, 0, 753, 754, 5, 102, 0, 0, 754, 755, 5, 101, 0, 0, 755, 756, 5, 114, 0, 0, 756, 757, 5, 101, 0, 0, 757, 758, 5, 110, 0, 0, 758, 759, 5, 99, 0, 0, 759, 760, 5, 101, 0, 0, 760, 76, 1, 0, 0, 0, 761, 762, 5, 88, 0, 0, 762, 763, 5, 67, 0, 0, 763, 764, 5, 83, 0, 0, 764, 765, 5, 119, 0, 0, 765, 766, 5, 105, 0, 0, 766, 767, 5, 102, 0, 0, 767, 768, 5, 116, 0, 0, 768, 769, 5, 80, 0, 0, 769, 770, 5, 97, 0, 0, 770, 771, 5, 99, 0, 0, 771, 772, 5, 107, 0, 0, 772, 773, 5, 97, 0, 0, 773, 774, 5, 103, 0, 0, 774, 775, 5, 101, 0, 0, 775, 776, 5, 80, 0, 0, 776, 777, 5, 114, 0, 0, 777, 778, 5, 111, 0, 0, 778, 779, 5, 100, 0, 0, 779, 780, 5, 117, 0, 0, 780, 781, 5, 99, 0, 0, 781, 782, 5, 116, 0, 0, 782, 783, 5, 68, 0, 0, 783, 784, 5, 101, 0, 0, 784, 785, 5, 112, 0, 0, 785, 786, 5, 101, 0, 0, 786, 787, 5, 110, 0, 0, 787, 788, 5, 100, 0, 0, 788, 789, 5, 101, 0, 0, 789, 790, 5, 110, 0, 0, 790, 791, 5, 99, 0, 0, 791, 792, 5, 121, 0, 0, 792, 78, 1, 0, 0, 0, 793, 794, 5, 88, 0, 0, 794, 795, 5, 67, 0, 0, 795, 796, 5, 86, 0, 0, 796, 797, 5, 101, 0, 0, 797, 798, 5, 114, 0, 0, 798, 799, 5, 115, 0, 0, 799, 800, 5, 105, 0, 0, 800, 801, 5, 111, 0, 0, 801, 802, 5, 110, 0, 0, 802, 803, 5, 71, 0, 0, 803, 804, 5, 114, 0, 0, 804, 805, 5, 111, 0, 0, 805, 806, 5, 117, 0, 0, 806, 807, 5, 112, 0, 0, 807, 80, 1, 0, 0, 0, 808, 809, 5, 102, 0, 0, 809, 810, 5, 105, 0, 0, 810, 811, 5, 108, 0, 0, 811, 812, 5, 101, 0, 0, 812, 813, 5, 82, 0, 0, 813, 814, 5, 101, 0, 0, 814, 815, 5, 102, 0, 0, 815, 82, 1, 0, 0, 0, 816, 817, 5, 112, 0, 0, 817, 818, 5, 114, 0, 0, 818, 819, 5, 111, 0, 0, 819, 820, 5, 100, 0, 0, 820, 821, 5, 117, 0, 0, 821, 822, 5, 99, 0, 0, 822, 823, 5, 116, 0, 0, 823, 824, 5, 82, 0, 0, 824, 825, 5, 101, 0, 0, 825, 826, 5, 102, 0, 0, 826, 84, 1, 0, 0, 0, 827, 828, 5, 99, 0, 0, 828, 829, 5, 111, 0, 0, 829, 830, 5, 110, 0, 0, 830, 831, 5, 116, 0, 0, 831, 832, 5, 97, 0, 0, 832, 833, 5, 105, 0, 0, 833, 834, 5, 110, 0, 0, 834, 835, 5, 101, 0, 0, 835, 836, 5, 114, 0, 0, 836, 837, 5, 80, 0, 0, 837, 838, 5, 111, 0, 0, 838, 839, 5, 114, 0, 0, 839, 840, 5, 116, 0, 0, 840, 841, 5, 97, 0, 0, 841, 842, 5, 108, 0, 0, 842, 86, 1, 0, 0, 0, 843, 844, 5, 112, 0, 0, 844, 845, 5, 114, 0, 0, 845, 846, 5, 111, 0, 0, 846, 847, 5, 120, 0, 0, 847, 848, 5, 121, 0, 0, 848, 849, 5, 84, 0, 0, 849, 850, 5, 121, 0, 0, 850, 851, 5, 112, 0, 0, 851, 852, 5, 101, 0, 0, 852, 88, 1, 0, 0, 0, 853, 854, 5, 114, 0, 0, 854, 855, 5, 101, 0, 0, 855, 856, 5, 109, 0, 0, 856, 857, 5, 111, 0, 0, 857, 858, 5, 116, 0, 0, 858, 859, 5, 101, 0, 0, 859, 860, 5, 71, 0, 0, 860, 861, 5, 108, 0, 0, 861, 862, 5, 111, 0, 0, 862, 863, 5, 98, 0, 0, 863, 864, 5, 97, 0, 0, 864, 865, 5, 108, 0, 0, 865, 866, 5, 73, 0, 0, 866, 867, 5, 68, 0, 0, 867, 868, 5, 83, 0, 0, 868, 869, 5, 116, 0, 0, 869, 870, 5, 114, 0, 0, 870, 871, 5, 105, 0, 0, 871, 872, 5, 110, 0, 0, 872, 873, 5, 103, 0, 0, 873, 90, 1, 0, 0, 0, 874, 875, 5, 114, 0, 0, 875, 876, 5, 101, 0, 0, 876, 877, 5, 109, 0, 0, 877, 878, 5, 111, 0, 0, 878, 879, 5, 116, 0, 0, 879, 880, 5, 101, 0, 0, 880, 881, 5, 73, 0, 0, 881, 882, 5, 110, 0, 0, 882, 883, 5, 102, 0, 0, 883, 884, 5, 111, 0, 0, 884, 92, 1, 0, 0, 0, 885, 886, 5, 102, 0, 0, 886, 887, 5, 105, 0, 0, 887, 888, 5, 108, 0, 0, 888, 889, 5, 101, 0, 0, 889, 890, 5, 69, 0, 0, 890, 891, 5, 110, 0, 0, 891, 892, 5, 99, 0, 0, 892, 893, 5, 111, 0, 0, 893, 894, 5, 100, 0, 0, 894, 895, 5, 105, 0, 0, 895, 896, 5, 110, 0, 0, 896, 897, 5, 103, 0, 0, 897, 94, 1, 0, 0, 0, 898, 899, 5, 99, 0, 0, 899, 900, 5, 111, 0, 0, 900, 901, 5, 109, 0, 0, 901, 902, 5, 109, 0, 0, 902, 903, 5, 101, 0, 0, 903, 904, 5, 110, 0, 0, 904, 905, 5, 116, 0, 0, 905, 906, 5, 115, 0, 0, 906, 96, 1, 0, 0, 0, 907, 908, 5, 101, 0, 0, 908, 909, 5, 120, 0, 0, 909, 910, 5, 112, 0, 0, 910, 911, 5, 108, 0, 0, 911, 912, 5, 105, 0, 0, 912, 913, 5, 99, 0, 0, 913, 914, 5, 105, 0, 0, 914, 915, 5, 116, 0, 0, 915, 916, 5, 70, 0, 0, 916, 917, 5, 105, 0, 0, 917, 918, 5, 108, 0, 0, 918, 919, 5, 101, 0, 0, 919, 920, 5, 84, 0, 0, 920, 921, 5, 121, 0, 0, 921, 922, 5, 112, 0, 0, 922, 923, 5, 101, 0, 0, 923, 98, 1, 0, 0, 0, 924, 925, 5, 108, 0, 0, 925, 926, 5, 97, 0, 0, 926, 927, 5, 115, 0, 0, 927, 928, 5, 116, 0, 0, 928, 929, 5, 75, 0, 0, 929, 930, 5, 110, 0, 0, 930, 931, 5, 111, 0, 0, 931, 932, 5, 119, 0, 0, 932, 933, 5, 110, 0, 0, 933, 934, 5, 70, 0, 0, 934, 935, 5, 105, 0, 0, 935, 936, 5, 108, 0, 0, 936, 937, 5, 101, 0, 0, 937, 938, 5, 84, 0, 0, 938, 939, 5, 121, 0, 0, 939, 940, 5, 112, 0, 0, 940, 941, 5, 101, 0, 0, 941, 100, 1, 0, 0, 0, 942, 943, 5, 105, 0, 0, 943, 944, 5, 110, 0, 0, 944, 945, 5, 99, 0, 0, 945, 946, 5, 108, 0, 0, 946, 947, 5, 117, 0, 0, 947, 948, 5, 100, 0, 0, 948, 949, 5, 101, 0, 0, 949, 950, 5, 73, 0, 0, 950, 951, 5, 110, 0, 0, 951, 952, 5, 73, 0, 0, 952, 953, 5, 110, 0, 0, 953, 954, 5, 100, 0, 0, 954, 955, 5, 101, 0, 0, 955, 956, 5, 120, 0, 0, 956, 102, 1, 0, 0, 0, 957, 958, 5, 105, 0, 0, 958, 959, 5, 110, 0, 0, 959, 960, 5, 100, 0, 0, 960, 961, 5, 101, 0, 0, 961, 962, 5, 110, 0, 0, 962, 963, 5, 116, 0, 0, 963, 964, 5, 87, 0, 0, 964, 965, 5, 105, 0, 0, 965, 966, 5, 100, 0, 0, 966, 967, 5, 116, 0, 0, 967, 968, 5, 104, 0, 0, 968, 104, 1, 0, 0, 0, 969, 970, 5, 116, 0, 0, 970, 971, 5, 97, 0, 0, 971, 972, 5, 98, 0, 0, 972, 973, 5, 87, 0, 0, 973, 974, 5, 105, 0, 0, 974, 975, 5, 100, 0, 0, 975, 976, 5, 116, 0, 0, 976, 977, 5, 104, 0, 0, 977, 106, 1, 0, 0, 0, 978, 979, 5, 117, 0, 0, 979, 980, 5, 115, 0, 0, 980, 981, 5, 101, 0, 0, 981, 982, 5, 115, 0, 0, 982, 983, 5, 84, 0, 0, 983, 984, 5, 97, 0, 0, 984, 985, 5, 98, 0, 0, 985, 986, 5, 115, 0, 0, 986, 108, 1, 0, 0, 0, 987, 988, 5, 119, 0, 0, 988, 989, 5, 114, 0, 0, 989, 990, 5, 97, 0, 0, 990, 991, 5, 112, 0, 0, 991, 992, 5, 115, 0, 0, 992, 993, 5, 76, 0, 0, 993, 994, 5, 105, 0, 0, 994, 995, 5, 110, 0, 0, 995, 996, 5, 101, 0, 0, 996, 997, 5, 115, 0, 0, 997, 110, 1, 0, 0, 0, 998, 999, 5, 112, 0, 0, 999, 1000, 5, 108, 0, 0, 1000, 1001, 5, 97, 0, 0, 1001, 1002, 5, 116, 0, 0, 1002, 1003, 5, 102, 0, 0, 1003, 1004, 5, 111, 0, 0, 1004, 1005, 5, 114, 0, 0, 1005, 1006, 5, 109, 0, 0, 1006, 1007, 5, 70, 0, 0, 1007, 1008, 5, 105, 0, 0, 1008, 1009, 5, 108, 0, 0, 1009, 1010, 5, 116, 0, 0, 1010, 1011, 5, 101, 0, 0, 1011, 1012, 5, 114, 0, 0, 1012, 112, 1, 0, 0, 0, 1013, 1014, 5, 112, 0, 0, 1014, 1015, 5, 108, 0, 0, 1015, 1016, 5, 97, 0, 0, 1016, 1017, 5, 116, 0, 0, 1017, 1018, 5, 102, 0, 0, 1018, 1019, 5, 111, 0, 0, 1019, 1020, 5, 114, 0, 0, 1020, 1021, 5, 109, 0, 0, 1021, 1022, 5, 70, 0, 0, 1022, 1023, 5, 105, 0, 0, 1023, 1024, 5, 108, 0, 0, 1024, 1025, 5, 116, 0, 0, 1025, 1026, 5, 101, 0, 0, 1026, 1027, 5, 114, 0, 0, 1027, 1028, 5, 115, 0, 0, 1028, 114, 1, 0, 0, 0, 1029, 1030, 5, 99, 0, 0, 1030, 1031, 5, 104, 0, 0, 1031, 1032, 5, 105, 0, 0, 1032, 1033, 5, 108, 0, 0, 1033, 1034, 5, 100, 0, 0, 1034, 1035, 5, 114, 0, 0, 1035, 1036, 5, 101, 0, 0, 1036, 1037, 5, 110, 0, 0, 1037, 116, 1, 0, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1040, 5, 114, 0, 0, 1040, 1041, 5, 111, 0, 0, 1041, 1042, 5, 100, 0, 0, 1042, 1043, 5, 117, 0, 0, 1043, 1044, 5, 99, 0, 0, 1044, 1045, 5, 116, 0, 0, 1045, 1046, 5, 73, 0, 0, 1046, 1047, 5, 110, 0, 0, 1047, 1048, 5, 115, 0, 0, 1048, 1049, 5, 116, 0, 0, 1049, 1050, 5, 97, 0, 0, 1050, 1051, 5, 108, 0, 0, 1051, 1052, 5, 108, 0, 0, 1052, 1053, 5, 80, 0, 0, 1053, 1054, 5, 97, 0, 0, 1054, 1055, 5, 116, 0, 0, 1055, 1056, 5, 104, 0, 0, 1056, 118, 1, 0, 0, 0, 1057, 1058, 5, 114, 0, 0, 1058, 1059, 5, 101, 0, 0, 1059, 1060, 5, 112, 0, 0, 1060, 1061, 5, 111, 0, 0, 1061, 1062, 5, 115, 0, 0, 1062, 1063, 5, 105, 0, 0, 1063, 1064, 5, 116, 0, 0, 1064, 1065, 5, 111, 0, 0, 1065, 1066, 5, 114, 0, 0, 1066, 1067, 5, 121, 0, 0, 1067, 1068, 5, 85, 0, 0, 1068, 1069, 5, 82, 0, 0, 1069, 1070, 5, 76, 0, 0, 1070, 120, 1, 0, 0, 0, 1071, 1072, 5, 114, 0, 0, 1072, 1073, 5, 101, 0, 0, 1073, 1074, 5, 113, 0, 0, 1074, 1075, 5, 117, 0, 0, 1075, 1076, 5, 105, 0, 0, 1076, 1077, 5, 114, 0, 0, 1077, 1078, 5, 101, 0, 0, 1078, 1079, 5, 109, 0, 0, 1079, 1080, 5, 101, 0, 0, 1080, 1081, 5, 110, 0, 0, 1081, 1082, 5, 116, 0, 0, 1082, 122, 1, 0, 0, 0, 1083, 1084, 5, 112, 0, 0, 1084, 1085, 5, 97, 0, 0, 1085, 1086, 5, 99, 0, 0, 1086, 1087, 5, 107, 0, 0, 1087, 1088, 5, 97, 0, 0, 1088, 1089, 5, 103, 0, 0, 1089, 1090, 5, 101, 0, 0, 1090, 124, 1, 0, 0, 0, 1091, 1092, 5, 112, 0, 0, 1092, 1093, 5, 97, 0, 0, 1093, 1094, 5, 99, 0, 0, 1094, 1095, 5, 107, 0, 0, 1095, 1096, 5, 97, 0, 0, 1096, 1097, 5, 103, 0, 0, 1097, 1098, 5, 101, 0, 0, 1098, 1099, 5, 80, 0, 0, 1099, 1100, 5, 114, 0, 0, 1100, 1101, 5, 111, 0, 0, 1101, 1102, 5, 100, 0, 0, 1102, 1103, 5, 117, 0, 0, 1103, 1104, 5, 99, 0, 0, 1104, 1105, 5, 116, 0, 0, 1105, 1106, 5, 68, 0, 0, 1106, 1107, 5, 101, 0, 0, 1107, 1108, 5, 112, 0, 0, 1108, 1109, 5, 101, 0, 0, 1109, 1110, 5, 110, 0, 0, 1110, 1111, 5, 100, 0, 0, 1111, 1112, 5, 101, 0, 0, 1112, 1113, 5, 110, 0, 0, 1113, 1114, 5, 99, 0, 0, 1114, 1115, 5, 105, 0, 0, 1115, 1116, 5, 101, 0, 0, 1116, 1117, 5, 115, 0, 0, 1117, 126, 1, 0, 0, 0, 1118, 1119, 5, 110, 0, 0, 1119, 1120, 5, 97, 0, 0, 1120, 1121, 5, 109, 0, 0, 1121, 1122, 5, 101, 0, 0, 1122, 128, 1, 0, 0, 0, 1123, 1124, 5, 112, 0, 0, 1124, 1125, 5, 97, 0, 0, 1125, 1126, 5, 116, 0, 0, 1126, 1127, 5, 104, 0, 0, 1127, 130, 1, 0, 0, 0, 1128, 1129, 5, 115, 0, 0, 1129, 1130, 5, 111, 0, 0, 1130, 1131, 5, 117, 0, 0, 1131, 1132, 5, 114, 0, 0, 1132, 1133, 5, 99, 0, 0, 1133, 1134, 5, 101, 0, 0, 1134, 1135, 5, 84, 0, 0, 1135, 1136, 5, 114, 0, 0, 1136, 1137, 5, 101, 0, 0, 1137, 1138, 5, 101, 0, 0, 1138, 132, 1, 0, 0, 0, 1139, 1140, 5, 98, 0, 0, 1140, 1141, 5, 117, 0, 0, 1141, 1142, 5, 105, 0, 0, 1142, 1143, 5, 108, 0, 0, 1143, 1144, 5, 100, 0, 0, 1144, 1145, 5, 65, 0, 0, 1145, 1146, 5, 99, 0, 0, 1146, 1147, 5, 116, 0, 0, 1147, 1148, 5, 105, 0, 0, 1148, 1149, 5, 111, 0, 0, 1149, 1150, 5, 110, 0, 0, 1150, 1151, 5, 77, 0, 0, 1151, 1152, 5, 97, 0, 0, 1152, 1153, 5, 115, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 134, 1, 0, 0, 0, 1155, 1156, 5, 102, 0, 0, 1156, 1157, 5, 105, 0, 0, 1157, 1158, 5, 108, 0, 0, 1158, 1159, 5, 101, 0, 0, 1159, 1160, 5, 115, 0, 0, 1160, 136, 1, 0, 0, 0, 1161, 1162, 5, 114, 0, 0, 1162, 1163, 5, 117, 0, 0, 1163, 1164, 5, 110, 0, 0, 1164, 1165, 5, 79, 0, 0, 1165, 1166, 5, 110, 0, 0, 1166, 1167, 5, 108, 0, 0, 1167, 1168, 5, 121, 0, 0, 1168, 1169, 5, 70, 0, 0, 1169, 1170, 5, 111, 0, 0, 1170, 1171, 5, 114, 0, 0, 1171, 1172, 5, 68, 0, 0, 1172, 1173, 5, 101, 0, 0, 1173, 1174, 5, 112, 0, 0, 1174, 1175, 5, 108, 0, 0, 1175, 1176, 5, 111, 0, 0, 1176, 1177, 5, 121, 0, 0, 1177, 1178, 5, 109, 0, 0, 1178, 1179, 5, 101, 0, 0, 1179, 1180, 5, 110, 0, 0, 1180, 1181, 5, 116, 0, 0, 1181, 1182, 5, 80, 0, 0, 1182, 1183, 5, 111, 0, 0, 1183, 1184, 5, 115, 0, 0, 1184, 1185, 5, 116, 0, 0, 1185, 1186, 5, 112, 0, 0, 1186, 1187, 5, 114, 0, 0, 1187, 1188, 5, 111, 0, 0, 1188, 1189, 5, 99, 0, 0, 1189, 1190, 5, 101, 0, 0, 1190, 1191, 5, 115, 0, 0, 1191, 1192, 5, 115, 0, 0, 1192, 1193, 5, 105, 0, 0, 1193, 1194, 5, 110, 0, 0, 1194, 1195, 5, 103, 0, 0, 1195, 138, 1, 0, 0, 0, 1196, 1197, 5, 98, 0, 0, 1197, 1198, 5, 117, 0, 0, 1198, 1199, 5, 105, 0, 0, 1199, 1200, 5, 108, 0, 0, 1200, 1201, 5, 100, 0, 0, 1201, 1202, 5, 67, 0, 0, 1202, 1203, 5, 111, 0, 0, 1203, 1204, 5, 110, 0, 0, 1204, 1205, 5, 102, 0, 0, 1205, 1206, 5, 105, 0, 0, 1206, 1207, 5, 103, 0, 0, 1207, 1208, 5, 117, 0, 0, 1208, 1209, 5, 114, 0, 0, 1209, 1210, 5, 97, 0, 0, 1210, 1211, 5, 116, 0, 0, 1211, 1212, 5, 105, 0, 0, 1212, 1213, 5, 111, 0, 0, 1213, 1214, 5, 110, 0, 0, 1214, 1215, 5, 76, 0, 0, 1215, 1216, 5, 105, 0, 0, 1216, 1217, 5, 115, 0, 0, 1217, 1218, 5, 116, 0, 0, 1218, 140, 1, 0, 0, 0, 1219, 1220, 5, 98, 0, 0, 1220, 1221, 5, 117, 0, 0, 1221, 1222, 5, 105, 0, 0, 1222, 1223, 5, 108, 0, 0, 1223, 1224, 5, 100, 0, 0, 1224, 1225, 5, 80, 0, 0, 1225, 1226, 5, 104, 0, 0, 1226, 1227, 5, 97, 0, 0, 1227, 1228, 5, 115, 0, 0, 1228, 1229, 5, 101, 0, 0, 1229, 1230, 5, 115, 0, 0, 1230, 142, 1, 0, 0, 0, 1231, 1232, 5, 98, 0, 0, 1232, 1233, 5, 117, 0, 0, 1233, 1234, 5, 105, 0, 0, 1234, 1235, 5, 108, 0, 0, 1235, 1236, 5, 100, 0, 0, 1236, 1237, 5, 82, 0, 0, 1237, 1238, 5, 117, 0, 0, 1238, 1239, 5, 108, 0, 0, 1239, 1240, 5, 101, 0, 0, 1240, 1241, 5, 115, 0, 0, 1241, 144, 1, 0, 0, 0, 1242, 1243, 5, 98, 0, 0, 1243, 1244, 5, 117, 0, 0, 1244, 1245, 5, 105, 0, 0, 1245, 1246, 5, 108, 0, 0, 1246, 1247, 5, 100, 0, 0, 1247, 1248, 5, 65, 0, 0, 1248, 1249, 5, 114, 0, 0, 1249, 1250, 5, 103, 0, 0, 1250, 1251, 5, 117, 0, 0, 1251, 1252, 5, 109, 0, 0, 1252, 1253, 5, 101, 0, 0, 1253, 1254, 5, 110, 0, 0, 1254, 1255, 5, 116, 0, 0, 1255, 1256, 5, 115, 0, 0, 1256, 1257, 5, 83, 0, 0, 1257, 1258, 5, 116, 0, 0, 1258, 1259, 5, 114, 0, 0, 1259, 1260, 5, 105, 0, 0, 1260, 1261, 5, 110, 0, 0, 1261, 1262, 5, 103, 0, 0, 1262, 146, 1, 0, 0, 0, 1263, 1264, 5, 98, 0, 0, 1264, 1265, 5, 117, 0, 0, 1265, 1266, 5, 105, 0, 0, 1266, 1267, 5, 108, 0, 0, 1267, 1268, 5, 100, 0, 0, 1268, 1269, 5, 84, 0, 0, 1269, 1270, 5, 111, 0, 0, 1270, 1271, 5, 111, 0, 0, 1271, 1272, 5, 108, 0, 0, 1272, 1273, 5, 80, 0, 0, 1273, 1274, 5, 97, 0, 0, 1274, 1275, 5, 116, 0, 0, 1275, 1276, 5, 104, 0, 0, 1276, 148, 1, 0, 0, 0, 1277, 1278, 5, 98, 0, 0, 1278, 1279, 5, 117, 0, 0, 1279, 1280, 5, 105, 0, 0, 1280, 1281, 5, 108, 0, 0, 1281, 1282, 5, 100, 0, 0, 1282, 1283, 5, 87, 0, 0, 1283, 1284, 5, 111, 0, 0, 1284, 1285, 5, 114, 0, 0, 1285, 1286, 5, 107, 0, 0, 1286, 1287, 5, 105, 0, 0, 1287, 1288, 5, 110, 0, 0, 1288, 1289, 5, 103, 0, 0, 1289, 1290, 5, 68, 0, 0, 1290, 1291, 5, 105, 0, 0, 1291, 1292, 5, 114, 0, 0, 1292, 1293, 5, 101, 0, 0, 1293, 1294, 5, 99, 0, 0, 1294, 1295, 5, 116, 0, 0, 1295, 1296, 5, 111, 0, 0, 1296, 1297, 5, 114, 0, 0, 1297, 1298, 5, 121, 0, 0, 1298, 150, 1, 0, 0, 0, 1299, 1300, 5, 112, 0, 0, 1300, 1301, 5, 97, 0, 0, 1301, 1302, 5, 115, 0, 0, 1302, 1303, 5, 115, 0, 0, 1303, 1304, 5, 66, 0, 0, 1304, 1305, 5, 117, 0, 0, 1305, 1306, 5, 105, 0, 0, 1306, 1307, 5, 108, 0, 0, 1307, 1308, 5, 100, 0, 0, 1308, 1309, 5, 83, 0, 0, 1309, 1310, 5, 101, 0, 0, 1310, 1311, 5, 116, 0, 0, 1311, 1312, 5, 116, 0, 0, 1312, 1313, 5, 105, 0, 0, 1313, 1314, 5, 110, 0, 0, 1314, 1315, 5, 103, 0, 0, 1315, 1316, 5, 115, 0, 0, 1316, 1317, 5, 73, 0, 0, 1317, 1318, 5, 110, 0, 0, 1318, 1319, 5, 69, 0, 0, 1319, 1320, 5, 110, 0, 0, 1320, 1321, 5, 118, 0, 0, 1321, 1322, 5, 105, 0, 0, 1322, 1323, 5, 114, 0, 0, 1323, 1324, 5, 111, 0, 0, 1324, 1325, 5, 110, 0, 0, 1325, 1326, 5, 109, 0, 0, 1326, 1327, 5, 101, 0, 0, 1327, 1328, 5, 110, 0, 0, 1328, 1329, 5, 116, 0, 0, 1329, 152, 1, 0, 0, 0, 1330, 1331, 5, 100, 0, 0, 1331, 1332, 5, 101, 0, 0, 1332, 1333, 5, 112, 0, 0, 1333, 1334, 5, 101, 0, 0, 1334, 1335, 5, 110, 0, 0, 1335, 1336, 5, 100, 0, 0, 1336, 1337, 5, 101, 0, 0, 1337, 1338, 5, 110, 0, 0, 1338, 1339, 5, 99, 0, 0, 1339, 1340, 5, 105, 0, 0, 1340, 1341, 5, 101, 0, 0, 1341, 1342, 5, 115, 0, 0, 1342, 154, 1, 0, 0, 0, 1343, 1344, 5, 112, 0, 0, 1344, 1345, 5, 114, 0, 0, 1345, 1346, 5, 111, 0, 0, 1346, 1347, 5, 100, 0, 0, 1347, 1348, 5, 117, 0, 0, 1348, 1349, 5, 99, 0, 0, 1349, 1350, 5, 116, 0, 0, 1350, 1351, 5, 78, 0, 0, 1351, 1352, 5, 97, 0, 0, 1352, 1353, 5, 109, 0, 0, 1353, 1354, 5, 101, 0, 0, 1354, 156, 1, 0, 0, 0, 1355, 1356, 5, 112, 0, 0, 1356, 1357, 5, 114, 0, 0, 1357, 1358, 5, 111, 0, 0, 1358, 1359, 5, 100, 0, 0, 1359, 1360, 5, 117, 0, 0, 1360, 1361, 5, 99, 0, 0, 1361, 1362, 5, 116, 0, 0, 1362, 1363, 5, 82, 0, 0, 1363, 1364, 5, 101, 0, 0, 1364, 1365, 5, 102, 0, 0, 1365, 1366, 5, 101, 0, 0, 1366, 1367, 5, 114, 0, 0, 1367, 1368, 5, 101, 0, 0, 1368, 1369, 5, 110, 0, 0, 1369, 1370, 5, 99, 0, 0, 1370, 1371, 5, 101, 0, 0, 1371, 158, 1, 0, 0, 0, 1372, 1373, 5, 112, 0, 0, 1373, 1374, 5, 114, 0, 0, 1374, 1375, 5, 111, 0, 0, 1375, 1376, 5, 100, 0, 0, 1376, 1377, 5, 117, 0, 0, 1377, 1378, 5, 99, 0, 0, 1378, 1379, 5, 116, 0, 0, 1379, 1380, 5, 84, 0, 0, 1380, 1381, 5, 121, 0, 0, 1381, 1382, 5, 112, 0, 0, 1382, 1383, 5, 101, 0, 0, 1383, 160, 1, 0, 0, 0, 1384, 1385, 5, 108, 0, 0, 1385, 1386, 5, 105, 0, 0, 1386, 1387, 5, 110, 0, 0, 1387, 1388, 5, 101, 0, 0, 1388, 1389, 5, 69, 0, 0, 1389, 1390, 5, 110, 0, 0, 1390, 1391, 5, 100, 0, 0, 1391, 1392, 5, 105, 0, 0, 1392, 1393, 5, 110, 0, 0, 1393, 1394, 5, 103, 0, 0, 1394, 162, 1, 0, 0, 0, 1395, 1396, 5, 120, 0, 0, 1396, 1397, 5, 99, 0, 0, 1397, 1398, 5, 76, 0, 0, 1398, 1399, 5, 97, 0, 0, 1399, 1400, 5, 110, 0, 0, 1400, 1401, 5, 103, 0, 0, 1401, 1402, 5, 117, 0, 0, 1402, 1403, 5, 97, 0, 0, 1403, 1404, 5, 103, 0, 0, 1404, 1405, 5, 101, 0, 0, 1405, 1406, 5, 83, 0, 0, 1406, 1407, 5, 112, 0, 0, 1407, 1408, 5, 101, 0, 0, 1408, 1409, 5, 99, 0, 0, 1409, 1410, 5, 105, 0, 0, 1410, 1411, 5, 102, 0, 0, 1411, 1412, 5, 105, 0, 0, 1412, 1413, 5, 99, 0, 0, 1413, 1414, 5, 97, 0, 0, 1414, 1415, 5, 116, 0, 0, 1415, 1416, 5, 105, 0, 0, 1416, 1417, 5, 111, 0, 0, 1417, 1418, 5, 110, 0, 0, 1418, 1419, 5, 73, 0, 0, 1419, 1420, 5, 100, 0, 0, 1420, 1421, 5, 101, 0, 0, 1421, 1422, 5, 110, 0, 0, 1422, 1423, 5, 116, 0, 0, 1423, 1424, 5, 105, 0, 0, 1424, 1425, 5, 102, 0, 0, 1425, 1426, 5, 105, 0, 0, 1426, 1427, 5, 101, 0, 0, 1427, 1428, 5, 114, 0, 0, 1428, 164, 1, 0, 0, 0, 1429, 1430, 5, 112, 0, 0, 1430, 1431, 5, 108, 0, 0, 1431, 1432, 5, 105, 0, 0, 1432, 1433, 5, 115, 0, 0, 1433, 1434, 5, 116, 0, 0, 1434, 1435, 5, 83, 0, 0, 1435, 1436, 5, 116, 0, 0, 1436, 1437, 5, 114, 0, 0, 1437, 1438, 5, 117, 0, 0, 1438, 1439, 5, 99, 0, 0, 1439, 1440, 5, 116, 0, 0, 1440, 1441, 5, 117, 0, 0, 1441, 1442, 5, 114, 0, 0, 1442, 1443, 5, 101, 0, 0, 1443, 1444, 5, 68, 0, 0, 1444, 1445, 5, 101, 0, 0, 1445, 1446, 5, 102, 0, 0, 1446, 1447, 5, 105, 0, 0, 1447, 1448, 5, 110, 0, 0, 1448, 1449, 5, 105, 0, 0, 1449, 1450, 5, 116, 0, 0, 1450, 1451, 5, 105, 0, 0, 1451, 1452, 5, 111, 0, 0, 1452, 1453, 5, 110, 0, 0, 1453, 1454, 5, 73, 0, 0, 1454, 1455, 5, 100, 0, 0, 1455, 1456, 5, 101, 0, 0, 1456, 1457, 5, 110, 0, 0, 1457, 1458, 5, 116, 0, 0, 1458, 1459, 5, 105, 0, 0, 1459, 1460, 5, 102, 0, 0, 1460, 1461, 5, 105, 0, 0, 1461, 1462, 5, 101, 0, 0, 1462, 1463, 5, 114, 0, 0, 1463, 166, 1, 0, 0, 0, 1464, 1465, 5, 97, 0, 0, 1465, 1466, 5, 116, 0, 0, 1466, 1467, 5, 116, 0, 0, 1467, 1468, 5, 114, 0, 0, 1468, 1469, 5, 105, 0, 0, 1469, 1470, 5, 98, 0, 0, 1470, 1471, 5, 117, 0, 0, 1471, 1472, 5, 116, 0, 0, 1472, 1473, 5, 101, 0, 0, 1473, 1474, 5, 115, 0, 0, 1474, 168, 1, 0, 0, 0, 1475, 1476, 5, 76, 0, 0, 1476, 1477, 5, 97, 0, 0, 1477, 1478, 5, 115, 0, 0, 1478, 1479, 5, 116, 0, 0, 1479, 1480, 5, 83, 0, 0, 1480, 1481, 5, 119, 0, 0, 1481, 1482, 5, 105, 0, 0, 1482, 1483, 5, 102, 0, 0, 1483, 1484, 5, 116, 0, 0, 1484, 1485, 5, 77, 0, 0, 1485, 1486, 5, 105, 0, 0, 1486, 1487, 5, 103, 0, 0, 1487, 1488, 5, 114, 0, 0, 1488, 1489, 5, 97, 0, 0, 1489, 1490, 5, 116, 0, 0, 1490, 1491, 5, 105, 0, 0, 1491, 1492, 5, 111, 0, 0, 1492, 1493, 5, 110, 0, 0, 1493, 170, 1, 0, 0, 0, 1494, 1495, 5, 68, 0, 0, 1495, 1496, 5, 101, 0, 0, 1496, 1497, 5, 102, 0, 0, 1497, 1498, 5, 97, 0, 0, 1498, 1499, 5, 117, 0, 0, 1499, 1500, 5, 108, 0, 0, 1500, 1501, 5, 116, 0, 0, 1501, 1502, 5, 66, 0, 0, 1502, 1503, 5, 117, 0, 0, 1503, 1504, 5, 105, 0, 0, 1504, 1505, 5, 108, 0, 0, 1505, 1506, 5, 100, 0, 0, 1506, 1507, 5, 83, 0, 0, 1507, 1508, 5, 121, 0, 0, 1508, 1509, 5, 115, 0, 0, 1509, 1510, 5, 116, 0, 0, 1510, 1511, 5, 101, 0, 0, 1511, 1512, 5, 109, 0, 0, 1512, 1513, 5, 84, 0, 0, 1513, 1514, 5, 121, 0, 0, 1514, 1515, 5, 112, 0, 0, 1515, 1516, 5, 101, 0, 0, 1516, 1517, 5, 70, 0, 0, 1517, 1518, 5, 111, 0, 0, 1518, 1519, 5, 114, 0, 0, 1519, 1520, 5, 87, 0, 0, 1520, 1521, 5, 111, 0, 0, 1521, 1522, 5, 114, 0, 0, 1522, 1523, 5, 107, 0, 0, 1523, 1524, 5, 115, 0, 0, 1524, 1525, 5, 112, 0, 0, 1525, 1526, 5, 97, 0, 0, 1526, 1527, 5, 99, 0, 0, 1527, 1528, 5, 101, 0, 0, 1528, 172, 1, 0, 0, 0, 1529, 1530, 5, 76, 0, 0, 1530, 1531, 5, 97, 0, 0, 1531, 1532, 5, 115, 0, 0, 1532, 1533, 5, 116, 0, 0, 1533, 1534, 5, 83, 0, 0, 1534, 1535, 5, 119, 0, 0, 1535, 1536, 5, 105, 0, 0, 1536, 1537, 5, 102, 0, 0, 1537, 1538, 5, 116, 0, 0, 1538, 1539, 5, 85, 0, 0, 1539, 1540, 5, 112, 0, 0, 1540, 1541, 5, 100, 0, 0, 1541, 1542, 5, 97, 0, 0, 1542, 1543, 5, 116, 0, 0, 1543, 1544, 5, 101, 0, 0, 1544, 1545, 5, 67, 0, 0, 1545, 1546, 5, 104, 0, 0, 1546, 1547, 5, 101, 0, 0, 1547, 1548, 5, 99, 0, 0, 1548, 1549, 5, 107, 0, 0, 1549, 174, 1, 0, 0, 0, 1550, 1551, 5, 66, 0, 0, 1551, 1552, 5, 117, 0, 0, 1552, 1553, 5, 105, 0, 0, 1553, 1554, 5, 108, 0, 0, 1554, 1555, 5, 100, 0, 0, 1555, 1556, 5, 73, 0, 0, 1556, 1557, 5, 110, 0, 0, 1557, 1558, 5, 100, 0, 0, 1558, 1559, 5, 101, 0, 0, 1559, 1560, 5, 112, 0, 0, 1560, 1561, 5, 101, 0, 0, 1561, 1562, 5, 110, 0, 0, 1562, 1563, 5, 100, 0, 0, 1563, 1564, 5, 101, 0, 0, 1564, 1565, 5, 110, 0, 0, 1565, 1566, 5, 116, 0, 0, 1566, 1567, 5, 84, 0, 0, 1567, 1568, 5, 97, 0, 0, 1568, 1569, 5, 114, 0, 0, 1569, 1570, 5, 103, 0, 0, 1570, 1571, 5, 101, 0, 0, 1571, 1572, 5, 116, 0, 0, 1572, 1573, 5, 115, 0, 0, 1573, 1574, 5, 73, 0, 0, 1574, 1575, 5, 110, 0, 0, 1575, 1576, 5, 80, 0, 0, 1576, 1577, 5, 97, 0, 0, 1577, 1578, 5, 114, 0, 0, 1578, 1579, 5, 97, 0, 0, 1579, 1580, 5, 108, 0, 0, 1580, 1581, 5, 108, 0, 0, 1581, 1582, 5, 101, 0, 0, 1582, 1583, 5, 108, 0, 0, 1583, 176, 1, 0, 0, 0, 1584, 1585, 5, 76, 0, 0, 1585, 1586, 5, 97, 0, 0, 1586, 1587, 5, 115, 0, 0, 1587, 1588, 5, 116, 0, 0, 1588, 1589, 5, 84, 0, 0, 1589, 1590, 5, 101, 0, 0, 1590, 1591, 5, 115, 0, 0, 1591, 1592, 5, 116, 0, 0, 1592, 1593, 5, 105, 0, 0, 1593, 1594, 5, 110, 0, 0, 1594, 1595, 5, 103, 0, 0, 1595, 1596, 5, 85, 0, 0, 1596, 1597, 5, 112, 0, 0, 1597, 1598, 5, 103, 0, 0, 1598, 1599, 5, 114, 0, 0, 1599, 1600, 5, 97, 0, 0, 1600, 1601, 5, 100, 0, 0, 1601, 1602, 5, 101, 0, 0, 1602, 1603, 5, 67, 0, 0, 1603, 1604, 5, 104, 0, 0, 1604, 1605, 5, 101, 0, 0, 1605, 1606, 5, 99, 0, 0, 1606, 1607, 5, 107, 0, 0, 1607, 178, 1, 0, 0, 0, 1608, 1609, 5, 76, 0, 0, 1609, 1610, 5, 97, 0, 0, 1610, 1611, 5, 115, 0, 0, 1611, 1612, 5, 116, 0, 0, 1612, 1613, 5, 85, 0, 0, 1613, 1614, 5, 112, 0, 0, 1614, 1615, 5, 103, 0, 0, 1615, 1616, 5, 114, 0, 0, 1616, 1617, 5, 97, 0, 0, 1617, 1618, 5, 100, 0, 0, 1618, 1619, 5, 101, 0, 0, 1619, 1620, 5, 67, 0, 0, 1620, 1621, 5, 104, 0, 0, 1621, 1622, 5, 101, 0, 0, 1622, 1623, 5, 99, 0, 0, 1623, 1624, 5, 107, 0, 0, 1624, 180, 1, 0, 0, 0, 1625, 1626, 5, 79, 0, 0, 1626, 1627, 5, 82, 0, 0, 1627, 1628, 5, 71, 0, 0, 1628, 1629, 5, 65, 0, 0, 1629, 1630, 5, 78, 0, 0, 1630, 1631, 5, 73, 0, 0, 1631, 1632, 5, 90, 0, 0, 1632, 1633, 5, 65, 0, 0, 1633, 1634, 5, 84, 0, 0, 1634, 1635, 5, 73, 0, 0, 1635, 1636, 5, 79, 0, 0, 1636, 1637, 5, 78, 0, 0, 1637, 1638, 5, 78, 0, 0, 1638, 1639, 5, 65, 0, 0, 1639, 1640, 5, 77, 0, 0, 1640, 1641, 5, 69, 0, 0, 1641, 182, 1, 0, 0, 0, 1642, 1643, 5, 84, 0, 0, 1643, 1644, 5, 97, 0, 0, 1644, 1645, 5, 114, 0, 0, 1645, 1646, 5, 103, 0, 0, 1646, 1647, 5, 101, 0, 0, 1647, 1648, 5, 116, 0, 0, 1648, 1649, 5, 65, 0, 0, 1649, 1650, 5, 116, 0, 0, 1650, 1651, 5, 116, 0, 0, 1651, 1652, 5, 114, 0, 0, 1652, 1653, 5, 105, 0, 0, 1653, 1654, 5, 98, 0, 0, 1654, 1655, 5, 117, 0, 0, 1655, 1656, 5, 116, 0, 0, 1656, 1657, 5, 101, 0, 0, 1657, 1658, 5, 115, 0, 0, 1658, 184, 1, 0, 0, 0, 1659, 1660, 5, 67, 0, 0, 1660, 1661, 5, 114, 0, 0, 1661, 1662, 5, 101, 0, 0, 1662, 1663, 5, 97, 0, 0, 1663, 1664, 5, 116, 0, 0, 1664, 1665, 5, 101, 0, 0, 1665, 1666, 5, 100, 0, 0, 1666, 1667, 5, 79, 0, 0, 1667, 1668, 5, 110, 0, 0, 1668, 1669, 5, 84, 0, 0, 1669, 1670, 5, 111, 0, 0, 1670, 1671, 5, 111, 0, 0, 1671, 1672, 5, 108, 0, 0, 1672, 1673, 5, 115, 0, 0, 1673, 1674, 5, 86, 0, 0, 1674, 1675, 5, 101, 0, 0, 1675, 1676, 5, 114, 0, 0, 1676, 1677, 5, 115, 0, 0, 1677, 1678, 5, 105, 0, 0, 1678, 1679, 5, 111, 0, 0, 1679, 1680, 5, 110, 0, 0, 1680, 186, 1, 0, 0, 0, 1681, 1682, 5, 84, 0, 0, 1682, 1683, 5, 101, 0, 0, 1683, 1684, 5, 115, 0, 0, 1684, 1685, 5, 116, 0, 0, 1685, 1686, 5, 84, 0, 0, 1686, 1687, 5, 97, 0, 0, 1687, 1688, 5, 114, 0, 0, 1688, 1689, 5, 103, 0, 0, 1689, 1690, 5, 101, 0, 0, 1690, 1691, 5, 116, 0, 0, 1691, 1692, 5, 73, 0, 0, 1692, 1693, 5, 68, 0, 0, 1693, 188, 1, 0, 0, 0, 1694, 1695, 5, 68, 0, 0, 1695, 1696, 5, 101, 0, 0, 1696, 1697, 5, 118, 0, 0, 1697, 1698, 5, 101, 0, 0, 1698, 1699, 5, 108, 0, 0, 1699, 1700, 5, 111, 0, 0, 1700, 1701, 5, 112, 0, 0, 1701, 1702, 5, 109, 0, 0, 1702, 1703, 5, 101, 0, 0, 1703, 1704, 5, 110, 0, 0, 1704, 1705, 5, 116, 0, 0, 1705, 1706, 5, 84, 0, 0, 1706, 1707, 5, 101, 0, 0, 1707, 1708, 5, 97, 0, 0, 1708, 1709, 5, 109, 0, 0, 1709, 190, 1, 0, 0, 0, 1710, 1711, 5, 68, 0, 0, 1711, 1712, 5, 101, 0, 0, 1712, 1713, 5, 118, 0, 0, 1713, 1714, 5, 101, 0, 0, 1714, 1715, 5, 108, 0, 0, 1715, 1716, 5, 111, 0, 0, 1716, 1717, 5, 112, 0, 0, 1717, 1718, 5, 109, 0, 0, 1718, 1719, 5, 101, 0, 0, 1719, 1720, 5, 110, 0, 0, 1720, 1721, 5, 116, 0, 0, 1721, 1722, 5, 84, 0, 0, 1722, 1723, 5, 101, 0, 0, 1723, 1724, 5, 97, 0, 0, 1724, 1725, 5, 109, 0, 0, 1725, 1726, 5, 78, 0, 0, 1726, 1727, 5, 97, 0, 0, 1727, 1728, 5, 109, 0, 0, 1728, 1729, 5, 101, 0, 0, 1729, 192, 1, 0, 0, 0, 1730, 1731, 5, 80, 0, 0, 1731, 1732, 5, 114, 0, 0, 1732, 1733, 5, 111, 0, 0, 1733, 1734, 5, 118, 0, 0, 1734, 1735, 5, 105, 0, 0, 1735, 1736, 5, 115, 0, 0, 1736, 1737, 5, 105, 0, 0, 1737, 1738, 5, 111, 0, 0, 1738, 1739, 5, 110, 0, 0, 1739, 1740, 5, 105, 0, 0, 1740, 1741, 5, 110, 0, 0, 1741, 1742, 5, 103, 0, 0, 1742, 1743, 5, 83, 0, 0, 1743, 1744, 5, 116, 0, 0, 1744, 1745, 5, 121, 0, 0, 1745, 1746, 5, 108, 0, 0, 1746, 1747, 5, 101, 0, 0, 1747, 194, 1, 0, 0, 0, 1748, 1749, 5, 99, 0, 0, 1749, 1750, 5, 111, 0, 0, 1750, 1751, 5, 109, 0, 0, 1751, 1752, 5, 112, 0, 0, 1752, 1753, 5, 97, 0, 0, 1753, 1754, 5, 116, 0, 0, 1754, 1755, 5, 105, 0, 0, 1755, 1756, 5, 98, 0, 0, 1756, 1757, 5, 105, 0, 0, 1757, 1758, 5, 108, 0, 0, 1758, 1759, 5, 105, 0, 0, 1759, 1760, 5, 116, 0, 0, 1760, 1761, 5, 121, 0, 0, 1761, 1762, 5, 86, 0, 0, 1762, 1763, 5, 101, 0, 0, 1763, 1764, 5, 114, 0, 0, 1764, 1765, 5, 115, 0, 0, 1765, 1766, 5, 105, 0, 0, 1766, 1767, 5, 111, 0, 0, 1767, 1768, 5, 110, 0, 0, 1768, 196, 1, 0, 0, 0, 1769, 1770, 5, 100, 0, 0, 1770, 1771, 5, 101, 0, 0, 1771, 1772, 5, 118, 0, 0, 1772, 1773, 5, 101, 0, 0, 1773, 1774, 5, 108, 0, 0, 1774, 1775, 5, 111, 0, 0, 1775, 1776, 5, 112, 0, 0, 1776, 1777, 5, 109, 0, 0, 1777, 1778, 5, 101, 0, 0, 1778, 1779, 5, 110, 0, 0, 1779, 1780, 5, 116, 0, 0, 1780, 1781, 5, 82, 0, 0, 1781, 1782, 5, 101, 0, 0, 1782, 1783, 5, 103, 0, 0, 1783, 1784, 5, 105, 0, 0, 1784, 1785, 5, 111, 0, 0, 1785, 1786, 5, 110, 0, 0, 1786, 198, 1, 0, 0, 0, 1787, 1788, 5, 104, 0, 0, 1788, 1789, 5, 97, 0, 0, 1789, 1790, 5, 115, 0, 0, 1790, 1791, 5, 83, 0, 0, 1791, 1792, 5, 99, 0, 0, 1792, 1793, 5, 97, 0, 0, 1793, 1794, 5, 110, 0, 0, 1794, 1795, 5, 110, 0, 0, 1795, 1796, 5, 101, 0, 0, 1796, 1797, 5, 100, 0, 0, 1797, 1798, 5, 70, 0, 0, 1798, 1799, 5, 111, 0, 0, 1799, 1800, 5, 114, 0, 0, 1800, 1801, 5, 69, 0, 0, 1801, 1802, 5, 110, 0, 0, 1802, 1803, 5, 99, 0, 0, 1803, 1804, 5, 111, 0, 0, 1804, 1805, 5, 100, 0, 0, 1805, 1806, 5, 105, 0, 0, 1806, 1807, 5, 110, 0, 0, 1807, 1808, 5, 103, 0, 0, 1808, 1809, 5, 115, 0, 0, 1809, 200, 1, 0, 0, 0, 1810, 1811, 5, 107, 0, 0, 1811, 1812, 5, 110, 0, 0, 1812, 1813, 5, 111, 0, 0, 1813, 1814, 5, 119, 0, 0, 1814, 1815, 5, 110, 0, 0, 1815, 1816, 5, 82, 0, 0, 1816, 1817, 5, 101, 0, 0, 1817, 1818, 5, 103, 0, 0, 1818, 1819, 5, 105, 0, 0, 1819, 1820, 5, 111, 0, 0, 1820, 1821, 5, 110, 0, 0, 1821, 1822, 5, 115, 0, 0, 1822, 202, 1, 0, 0, 0, 1823, 1824, 5, 109, 0, 0, 1824, 1825, 5, 97, 0, 0, 1825, 1826, 5, 105, 0, 0, 1826, 1827, 5, 110, 0, 0, 1827, 1828, 5, 71, 0, 0, 1828, 1829, 5, 114, 0, 0, 1829, 1830, 5, 111, 0, 0, 1830, 1831, 5, 117, 0, 0, 1831, 1832, 5, 112, 0, 0, 1832, 204, 1, 0, 0, 0, 1833, 1834, 5, 112, 0, 0, 1834, 1835, 5, 114, 0, 0, 1835, 1836, 5, 111, 0, 0, 1836, 1837, 5, 100, 0, 0, 1837, 1838, 5, 117, 0, 0, 1838, 1839, 5, 99, 0, 0, 1839, 1840, 5, 116, 0, 0, 1840, 1841, 5, 82, 0, 0, 1841, 1842, 5, 101, 0, 0, 1842, 1843, 5, 102, 0, 0, 1843, 1844, 5, 71, 0, 0, 1844, 1845, 5, 114, 0, 0, 1845, 1846, 5, 111, 0, 0, 1846, 1847, 5, 117, 0, 0, 1847, 1848, 5, 112, 0, 0, 1848, 206, 1, 0, 0, 0, 1849, 1850, 5, 112, 0, 0, 1850, 1851, 5, 97, 0, 0, 1851, 1852, 5, 99, 0, 0, 1852, 1853, 5, 107, 0, 0, 1853, 1854, 5, 97, 0, 0, 1854, 1855, 5, 103, 0, 0, 1855, 1856, 5, 101, 0, 0, 1856, 1857, 5, 82, 0, 0, 1857, 1858, 5, 101, 0, 0, 1858, 1859, 5, 102, 0, 0, 1859, 1860, 5, 101, 0, 0, 1860, 1861, 5, 114, 0, 0, 1861, 1862, 5, 101, 0, 0, 1862, 1863, 5, 110, 0, 0, 1863, 1864, 5, 99, 0, 0, 1864, 1865, 5, 101, 0, 0, 1865, 1866, 5, 115, 0, 0, 1866, 208, 1, 0, 0, 0, 1867, 1868, 5, 112, 0, 0, 1868, 1869, 5, 114, 0, 0, 1869, 1870, 5, 111, 0, 0, 1870, 1871, 5, 106, 0, 0, 1871, 1872, 5, 101, 0, 0, 1872, 1873, 5, 99, 0, 0, 1873, 1874, 5, 116, 0, 0, 1874, 1875, 5, 68, 0, 0, 1875, 1876, 5, 105, 0, 0, 1876, 1877, 5, 114, 0, 0, 1877, 1878, 5, 80, 0, 0, 1878, 1879, 5, 97, 0, 0, 1879, 1880, 5, 116, 0, 0, 1880, 1881, 5, 104, 0, 0, 1881, 210, 1, 0, 0, 0, 1882, 1883, 5, 112, 0, 0, 1883, 1884, 5, 114, 0, 0, 1884, 1885, 5, 111, 0, 0, 1885, 1886, 5, 106, 0, 0, 1886, 1887, 5, 101, 0, 0, 1887, 1888, 5, 99, 0, 0, 1888, 1889, 5, 116, 0, 0, 1889, 1890, 5, 82, 0, 0, 1890, 1891, 5, 101, 0, 0, 1891, 1892, 5, 102, 0, 0, 1892, 1893, 5, 101, 0, 0, 1893, 1894, 5, 114, 0, 0, 1894, 1895, 5, 101, 0, 0, 1895, 1896, 5, 110, 0, 0, 1896, 1897, 5, 99, 0, 0, 1897, 1898, 5, 101, 0, 0, 1898, 1899, 5, 115, 0, 0, 1899, 212, 1, 0, 0, 0, 1900, 1901, 5, 112, 0, 0, 1901, 1902, 5, 114, 0, 0, 1902, 1903, 5, 111, 0, 0, 1903, 1904, 5, 106, 0, 0, 1904, 1905, 5, 101, 0, 0, 1905, 1906, 5, 99, 0, 0, 1906, 1907, 5, 116, 0, 0, 1907, 1908, 5, 82, 0, 0, 1908, 1909, 5, 111, 0, 0, 1909, 1910, 5, 111, 0, 0, 1910, 1911, 5, 116, 0, 0, 1911, 214, 1, 0, 0, 0, 1912, 1913, 5, 116, 0, 0, 1913, 1914, 5, 97, 0, 0, 1914, 1915, 5, 114, 0, 0, 1915, 1916, 5, 103, 0, 0, 1916, 1917, 5, 101, 0, 0, 1917, 1918, 5, 116, 0, 0, 1918, 1919, 5, 115, 0, 0, 1919, 216, 1, 0, 0, 0, 1920, 1921, 5, 105, 0, 0, 1921, 1922, 5, 110, 0, 0, 1922, 1923, 5, 112, 0, 0, 1923, 1924, 5, 117, 0, 0, 1924, 1925, 5, 116, 0, 0, 1925, 1926, 5, 70, 0, 0, 1926, 1927, 5, 105, 0, 0, 1927, 1928, 5, 108, 0, 0, 1928, 1929, 5, 101, 0, 0, 1929, 1930, 5, 76, 0, 0, 1930, 1931, 5, 105, 0, 0, 1931, 1932, 5, 115, 0, 0, 1932, 1933, 5, 116, 0, 0, 1933, 1934, 5, 80, 0, 0, 1934, 1935, 5, 97, 0, 0, 1935, 1936, 5, 116, 0, 0, 1936, 1937, 5, 104, 0, 0, 1937, 1938, 5, 115, 0, 0, 1938, 218, 1, 0, 0, 0, 1939, 1940, 5, 105, 0, 0, 1940, 1941, 5, 110, 0, 0, 1941, 1942, 5, 112, 0, 0, 1942, 1943, 5, 117, 0, 0, 1943, 1944, 5, 116, 0, 0, 1944, 1945, 5, 80, 0, 0, 1945, 1946, 5, 97, 0, 0, 1946, 1947, 5, 116, 0, 0, 1947, 1948, 5, 104, 0, 0, 1948, 1949, 5, 115, 0, 0, 1949, 220, 1, 0, 0, 0, 1950, 1951, 5, 111, 0, 0, 1951, 1952, 5, 117, 0, 0, 1952, 1953, 5, 116, 0, 0, 1953, 1954, 5, 112, 0, 0, 1954, 1955, 5, 117, 0, 0, 1955, 1956, 5, 116, 0, 0, 1956, 1957, 5, 70, 0, 0, 1957, 1958, 5, 105, 0, 0, 1958, 1959, 5, 108, 0, 0, 1959, 1960, 5, 101, 0, 0, 1960, 1961, 5, 76, 0, 0, 1961, 1962, 5, 105, 0, 0, 1962, 1963, 5, 115, 0, 0, 1963, 1964, 5, 116, 0, 0, 1964, 1965, 5, 80, 0, 0, 1965, 1966, 5, 97, 0, 0, 1966, 1967, 5, 116, 0, 0, 1967, 1968, 5, 104, 0, 0, 1968, 1969, 5, 115, 0, 0, 1969, 222, 1, 0, 0, 0, 1970, 1971, 5, 111, 0, 0, 1971, 1972, 5, 117, 0, 0, 1972, 1973, 5, 116, 0, 0, 1973, 1974, 5, 112, 0, 0, 1974, 1975, 5, 117, 0, 0, 1975, 1976, 5, 116, 0, 0, 1976, 1977, 5, 80, 0, 0, 1977, 1978, 5, 97, 0, 0, 1978, 1979, 5, 116, 0, 0, 1979, 1980, 5, 104, 0, 0, 1980, 1981, 5, 115, 0, 0, 1981, 224, 1, 0, 0, 0, 1982, 1983, 5, 115, 0, 0, 1983, 1984, 5, 104, 0, 0, 1984, 1985, 5, 101, 0, 0, 1985, 1986, 5, 108, 0, 0, 1986, 1987, 5, 108, 0, 0, 1987, 1988, 5, 80, 0, 0, 1988, 1989, 5, 97, 0, 0, 1989, 1990, 5, 116, 0, 0, 1990, 1991, 5, 104, 0, 0, 1991, 226, 1, 0, 0, 0, 1992, 1993, 5, 115, 0, 0, 1993, 1994, 5, 104, 0, 0, 1994, 1995, 5, 101, 0, 0, 1995, 1996, 5, 108, 0, 0, 1996, 1997, 5, 108, 0, 0, 1997, 1998, 5, 83, 0, 0, 1998, 1999, 5, 99, 0, 0, 1999, 2000, 5, 114, 0, 0, 2000, 2001, 5, 105, 0, 0, 2001, 2002, 5, 112, 0, 0, 2002, 2003, 5, 116, 0, 0, 2003, 228, 1, 0, 0, 0, 2004, 2005, 5, 115, 0, 0, 2005, 2006, 5, 104, 0, 0, 2006, 2007, 5, 111, 0, 0, 2007, 2008, 5, 119, 0, 0, 2008, 2009, 5, 69, 0, 0, 2009, 2010, 5, 110, 0, 0, 2010, 2011, 5, 118, 0, 0, 2011, 2012, 5, 86, 0, 0, 2012, 2013, 5, 97, 0, 0, 2013, 2014, 5, 114, 0, 0, 2014, 2015, 5, 115, 0, 0, 2015, 2016, 5, 73, 0, 0, 2016, 2017, 5, 110, 0, 0, 2017, 2018, 5, 76, 0, 0, 2018, 2019, 5, 111, 0, 0, 2019, 2020, 5, 103, 0, 0, 2020, 230, 1, 0, 0, 0, 2021, 2022, 5, 116, 0, 0, 2022, 2023, 5, 97, 0, 0, 2023, 2024, 5, 114, 0, 0, 2024, 2025, 5, 103, 0, 0, 2025, 2026, 5, 101, 0, 0, 2026, 2027, 5, 116, 0, 0, 2027, 232, 1, 0, 0, 0, 2028, 2029, 5, 116, 0, 0, 2029, 2030, 5, 97, 0, 0, 2030, 2031, 5, 114, 0, 0, 2031, 2032, 5, 103, 0, 0, 2032, 2033, 5, 101, 0, 0, 2033, 2034, 5, 116, 0, 0, 2034, 2035, 5, 80, 0, 0, 2035, 2036, 5, 114, 0, 0, 2036, 2037, 5, 111, 0, 0, 2037, 2038, 5, 120, 0, 0, 2038, 2039, 5, 121, 0, 0, 2039, 234, 1, 0, 0, 0, 2040, 2041, 5, 102, 0, 0, 2041, 2042, 5, 105, 0, 0, 2042, 2043, 5, 108, 0, 0, 2043, 2044, 5, 101, 0, 0, 2044, 2045, 5, 84, 0, 0, 2045, 2046, 5, 121, 0, 0, 2046, 2047, 5, 112, 0, 0, 2047, 2048, 5, 101, 0, 0, 2048, 236, 1, 0, 0, 0, 2049, 2050, 5, 114, 0, 0, 2050, 2051, 5, 101, 0, 0, 2051, 2052, 5, 109, 0, 0, 2052, 2053, 5, 111, 0, 0, 2053, 2054, 5, 116, 0, 0, 2054, 2055, 5, 101, 0, 0, 2055, 2056, 5, 82, 0, 0, 2056, 2057, 5, 101, 0, 0, 2057, 2058, 5, 102, 0, 0, 2058, 238, 1, 0, 0, 0, 2059, 2060, 5, 98, 0, 0, 2060, 2061, 5, 97, 0, 0, 2061, 2062, 5, 115, 0, 0, 2062, 2063, 5, 101, 0, 0, 2063, 2064, 5, 67, 0, 0, 2064, 2065, 5, 111, 0, 0, 2065, 2066, 5, 110, 0, 0, 2066, 2067, 5, 102, 0, 0, 2067, 2068, 5, 105, 0, 0, 2068, 2069, 5, 103, 0, 0, 2069, 2070, 5, 117, 0, 0, 2070, 2071, 5, 114, 0, 0, 2071, 2072, 5, 97, 0, 0, 2072, 2073, 5, 116, 0, 0, 2073, 2074, 5, 105, 0, 0, 2074, 2075, 5, 111, 0, 0, 2075, 2076, 5, 110, 0, 0, 2076, 2077, 5, 82, 0, 0, 2077, 2078, 5, 101, 0, 0, 2078, 2079, 5, 102, 0, 0, 2079, 2080, 5, 101, 0, 0, 2080, 2081, 5, 114, 0, 0, 2081, 2082, 5, 101, 0, 0, 2082, 2083, 5, 110, 0, 0, 2083, 2084, 5, 99, 0, 0, 2084, 2085, 5, 101, 0, 0, 2085, 240, 1, 0, 0, 0, 2086, 2087, 5, 98, 0, 0, 2087, 2088, 5, 117, 0, 0, 2088, 2089, 5, 105, 0, 0, 2089, 2090, 5, 108, 0, 0, 2090, 2091, 5, 100, 0, 0, 2091, 2092, 5, 83, 0, 0, 2092, 2093, 5, 101, 0, 0, 2093, 2094, 5, 116, 0, 0, 2094, 2095, 5, 116, 0, 0, 2095, 2096, 5, 105, 0, 0, 2096, 2097, 5, 110, 0, 0, 2097, 2098, 5, 103, 0, 0, 2098, 2099, 5, 115, 0, 0, 2099, 242, 1, 0, 0, 0, 2100, 2101, 5, 100, 0, 0, 2101, 2102, 5, 115, 0, 0, 2102, 2103, 5, 116, 0, 0, 2103, 2104, 5, 80, 0, 0, 2104, 2105, 5, 97, 0, 0, 2105, 2106, 5, 116, 0, 0, 2106, 2107, 5, 104, 0, 0, 2107, 244, 1, 0, 0, 0, 2108, 2109, 5, 100, 0, 0, 2109, 2110, 5, 115, 0, 0, 2110, 2111, 5, 116, 0, 0, 2111, 2112, 5, 83, 0, 0, 2112, 2113, 5, 117, 0, 0, 2113, 2114, 5, 98, 0, 0, 2114, 2115, 5, 102, 0, 0, 2115, 2116, 5, 111, 0, 0, 2116, 2117, 5, 108, 0, 0, 2117, 2118, 5, 100, 0, 0, 2118, 2119, 5, 101, 0, 0, 2119, 2120, 5, 114, 0, 0, 2120, 2121, 5, 83, 0, 0, 2121, 2122, 5, 112, 0, 0, 2122, 2123, 5, 101, 0, 0, 2123, 2124, 5, 99, 0, 0, 2124, 246, 1, 0, 0, 0, 2125, 2126, 5, 80, 0, 0, 2126, 2127, 5, 114, 0, 0, 2127, 2128, 5, 111, 0, 0, 2128, 2129, 5, 100, 0, 0, 2129, 2130, 5, 117, 0, 0, 2130, 2131, 5, 99, 0, 0, 2131, 2132, 5, 116, 0, 0, 2132, 2133, 5, 71, 0, 0, 2133, 2134, 5, 114, 0, 0, 2134, 2135, 5, 111, 0, 0, 2135, 2136, 5, 117, 0, 0, 2136, 2137, 5, 112, 0, 0, 2137, 248, 1, 0, 0, 0, 2138, 2139, 5, 80, 0, 0, 2139, 2140, 5, 114, 0, 0, 2140, 2141, 5, 111, 0, 0, 2141, 2142, 5, 106, 0, 0, 2142, 2143, 5, 101, 0, 0, 2143, 2144, 5, 99, 0, 0, 2144, 2145, 5, 116, 0, 0, 2145, 2146, 5, 82, 0, 0, 2146, 2147, 5, 101, 0, 0, 2147, 2148, 5, 102, 0, 0, 2148, 250, 1, 0, 0, 0, 2149, 2150, 5, 98, 0, 0, 2150, 2151, 5, 117, 0, 0, 2151, 2152, 5, 105, 0, 0, 2152, 2153, 5, 108, 0, 0, 2153, 2154, 5, 100, 0, 0, 2154, 2155, 5, 67, 0, 0, 2155, 2156, 5, 111, 0, 0, 2156, 2157, 5, 110, 0, 0, 2157, 2158, 5, 102, 0, 0, 2158, 2159, 5, 105, 0, 0, 2159, 2160, 5, 103, 0, 0, 2160, 2161, 5, 117, 0, 0, 2161, 2162, 5, 114, 0, 0, 2162, 2163, 5, 97, 0, 0, 2163, 2164, 5, 116, 0, 0, 2164, 2165, 5, 105, 0, 0, 2165, 2166, 5, 111, 0, 0, 2166, 2167, 5, 110, 0, 0, 2167, 2168, 5, 115, 0, 0, 2168, 252, 1, 0, 0, 0, 2169, 2170, 5, 100, 0, 0, 2170, 2171, 5, 101, 0, 0, 2171, 2172, 5, 102, 0, 0, 2172, 2173, 5, 97, 0, 0, 2173, 2174, 5, 117, 0, 0, 2174, 2175, 5, 108, 0, 0, 2175, 2176, 5, 116, 0, 0, 2176, 2177, 5, 67, 0, 0, 2177, 2178, 5, 111, 0, 0, 2178, 2179, 5, 110, 0, 0, 2179, 2180, 5, 102, 0, 0, 2180, 2181, 5, 105, 0, 0, 2181, 2182, 5, 103, 0, 0, 2182, 2183, 5, 117, 0, 0, 2183, 2184, 5, 114, 0, 0, 2184, 2185, 5, 97, 0, 0, 2185, 2186, 5, 116, 0, 0, 2186, 2187, 5, 105, 0, 0, 2187, 2188, 5, 111, 0, 0, 2188, 2189, 5, 110, 0, 0, 2189, 2190, 5, 73, 0, 0, 2190, 2191, 5, 115, 0, 0, 2191, 2192, 5, 86, 0, 0, 2192, 2193, 5, 105, 0, 0, 2193, 2194, 5, 115, 0, 0, 2194, 2195, 5, 105, 0, 0, 2195, 2196, 5, 98, 0, 0, 2196, 2197, 5, 108, 0, 0, 2197, 2198, 5, 101, 0, 0, 2198, 254, 1, 0, 0, 0, 2199, 2200, 5, 100, 0, 0, 2200, 2201, 5, 101, 0, 0, 2201, 2202, 5, 102, 0, 0, 2202, 2203, 5, 97, 0, 0, 2203, 2204, 5, 117, 0, 0, 2204, 2205, 5, 108, 0, 0, 2205, 2206, 5, 116, 0, 0, 2206, 2207, 5, 67, 0, 0, 2207, 2208, 5, 111, 0, 0, 2208, 2209, 5, 110, 0, 0, 2209, 2210, 5, 102, 0, 0, 2210, 2211, 5, 105, 0, 0, 2211, 2212, 5, 103, 0, 0, 2212, 2213, 5, 117, 0, 0, 2213, 2214, 5, 114, 0, 0, 2214, 2215, 5, 97, 0, 0, 2215, 2216, 5, 116, 0, 0, 2216, 2217, 5, 105, 0, 0, 2217, 2218, 5, 111, 0, 0, 2218, 2219, 5, 110, 0, 0, 2219, 2220, 5, 78, 0, 0, 2220, 2221, 5, 97, 0, 0, 2221, 2222, 5, 109, 0, 0, 2222, 2223, 5, 101, 0, 0, 2223, 256, 1, 0, 0, 0, 2224, 2225, 5, 115, 0, 0, 2225, 2226, 5, 101, 0, 0, 2226, 2227, 5, 116, 0, 0, 2227, 2228, 5, 116, 0, 0, 2228, 2229, 5, 105, 0, 0, 2229, 2230, 5, 110, 0, 0, 2230, 2231, 5, 103, 0, 0, 2231, 2232, 5, 115, 0, 0, 2232, 258, 1, 0, 0, 0, 2233, 2234, 5, 83, 0, 0, 2234, 2235, 5, 121, 0, 0, 2235, 2236, 5, 115, 0, 0, 2236, 2237, 5, 116, 0, 0, 2237, 2238, 5, 101, 0, 0, 2238, 2239, 5, 109, 0, 0, 2239, 2240, 5, 67, 0, 0, 2240, 2241, 5, 97, 0, 0, 2241, 2242, 5, 112, 0, 0, 2242, 2243, 5, 97, 0, 0, 2243, 2244, 5, 98, 0, 0, 2244, 2245, 5, 105, 0, 0, 2245, 2246, 5, 108, 0, 0, 2246, 2247, 5, 105, 0, 0, 2247, 2248, 5, 116, 0, 0, 2248, 2249, 5, 105, 0, 0, 2249, 2250, 5, 101, 0, 0, 2250, 2251, 5, 115, 0, 0, 2251, 260, 1, 0, 0, 0, 2252, 2253, 5, 99, 0, 0, 2253, 2254, 5, 117, 0, 0, 2254, 2255, 5, 114, 0, 0, 2255, 2256, 5, 114, 0, 0, 2256, 2257, 5, 101, 0, 0, 2257, 2258, 5, 110, 0, 0, 2258, 2259, 5, 116, 0, 0, 2259, 2260, 5, 86, 0, 0, 2260, 2261, 5, 101, 0, 0, 2261, 2262, 5, 114, 0, 0, 2262, 2263, 5, 115, 0, 0, 2263, 2264, 5, 105, 0, 0, 2264, 2265, 5, 111, 0, 0, 2265, 2266, 5, 110, 0, 0, 2266, 262, 1, 0, 0, 0, 2267, 2268, 5, 118, 0, 0, 2268, 2269, 5, 101, 0, 0, 2269, 2270, 5, 114, 0, 0, 2270, 2271, 5, 115, 0, 0, 2271, 2272, 5, 105, 0, 0, 2272, 2273, 5, 111, 0, 0, 2273, 2274, 5, 110, 0, 0, 2274, 2275, 5, 71, 0, 0, 2275, 2276, 5, 114, 0, 0, 2276, 2277, 5, 111, 0, 0, 2277, 2278, 5, 117, 0, 0, 2278, 2279, 5, 112, 0, 0, 2279, 2280, 5, 84, 0, 0, 2280, 2281, 5, 121, 0, 0, 2281, 2282, 5, 112, 0, 0, 2282, 2283, 5, 101, 0, 0, 2283, 264, 1, 0, 0, 0, 2284, 2285, 5, 67, 0, 0, 2285, 2286, 5, 76, 0, 0, 2286, 2287, 5, 65, 0, 0, 2287, 2288, 5, 83, 0, 0, 2288, 2289, 5, 83, 0, 0, 2289, 2290, 5, 80, 0, 0, 2290, 2291, 5, 82, 0, 0, 2291, 2292, 5, 69, 0, 0, 2292, 2293, 5, 70, 0, 0, 2293, 2294, 5, 73, 0, 0, 2294, 2295, 5, 88, 0, 0, 2295, 266, 1, 0, 0, 0, 2296, 2297, 3, 279, 139, 0, 2297, 2298, 3, 279, 139, 0, 2298, 2299, 3, 279, 139, 0, 2299, 2300, 3, 279, 139, 0, 2300, 2301, 3, 279, 139, 0, 2301, 2302, 3, 279, 139, 0, 2302, 2303, 3, 279, 139, 0, 2303, 2304, 3, 279, 139, 0, 2304, 2305, 3, 279, 139, 0, 2305, 2306, 3, 279, 139, 0, 2306, 2307, 3, 279, 139, 0, 2307, 2308, 3, 279, 139, 0, 2308, 2309, 3, 279, 139, 0, 2309, 2310, 3, 279, 139, 0, 2310, 2311, 3, 279, 139, 0, 2311, 2312, 3, 279, 139, 0, 2312, 2313, 3, 279, 139, 0, 2313, 2314, 3, 279, 139, 0, 2314, 2315, 3, 279, 139, 0, 2315, 2316, 3, 279, 139, 0, 2316, 2317, 3, 279, 139, 0, 2317, 2318, 3, 279, 139, 0, 2318, 2319, 3, 279, 139, 0, 2319, 2321, 3, 279, 139, 0, 2320, 2322, 3, 279, 139, 0, 2321, 2320, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2324, 1, 0, 0, 0, 2323, 2325, 3, 279, 139, 0, 2324, 2323, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2327, 1, 0, 0, 0, 2326, 2328, 3, 279, 139, 0, 2327, 2326, 1, 0, 0, 0, 2327, 2328, 1, 0, 0, 0, 2328, 2330, 1, 0, 0, 0, 2329, 2331, 3, 279, 139, 0, 2330, 2329, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2333, 1, 0, 0, 0, 2332, 2334, 3, 279, 139, 0, 2333, 2332, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2336, 1, 0, 0, 0, 2335, 2337, 3, 279, 139, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2339, 1, 0, 0, 0, 2338, 2340, 3, 279, 139, 0, 2339, 2338, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2342, 1, 0, 0, 0, 2341, 2343, 3, 279, 139, 0, 2342, 2341, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2382, 1, 0, 0, 0, 2344, 2345, 5, 70, 0, 0, 2345, 2346, 5, 82, 0, 0, 2346, 2350, 5, 95, 0, 0, 2347, 2348, 5, 71, 0, 0, 2348, 2350, 5, 95, 0, 0, 2349, 2344, 1, 0, 0, 0, 2349, 2347, 1, 0, 0, 0, 2350, 2352, 1, 0, 0, 0, 2351, 2353, 3, 279, 139, 0, 2352, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2352, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2382, 1, 0, 0, 0, 2356, 2357, 3, 277, 138, 0, 2357, 2358, 3, 277, 138, 0, 2358, 2359, 3, 277, 138, 0, 2359, 2360, 3, 277, 138, 0, 2360, 2361, 3, 277, 138, 0, 2361, 2362, 3, 277, 138, 0, 2362, 2363, 3, 277, 138, 0, 2363, 2364, 3, 277, 138, 0, 2364, 2365, 3, 277, 138, 0, 2365, 2366, 3, 277, 138, 0, 2366, 2367, 3, 277, 138, 0, 2367, 2368, 3, 277, 138, 0, 2368, 2369, 3, 277, 138, 0, 2369, 2370, 3, 277, 138, 0, 2370, 2371, 3, 277, 138, 0, 2371, 2372, 3, 277, 138, 0, 2372, 2373, 3, 277, 138, 0, 2373, 2374, 3, 277, 138, 0, 2374, 2375, 3, 277, 138, 0, 2375, 2376, 3, 277, 138, 0, 2376, 2377, 3, 277, 138, 0, 2377, 2378, 3, 277, 138, 0, 2378, 2379, 3, 277, 138, 0, 2379, 2380, 3, 277, 138, 0, 2380, 2382, 1, 0, 0, 0, 2381, 2296, 1, 0, 0, 0, 2381, 2349, 1, 0, 0, 0, 2381, 2356, 1, 0, 0, 0, 2382, 268, 1, 0, 0, 0, 2383, 2385, 5, 34, 0, 0, 2384, 2386, 3, 281, 140, 0, 2385, 2384, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2390, 5, 34, 0, 0, 2390, 2394, 1, 0, 0, 0, 2391, 2392, 5, 34, 0, 0, 2392, 2394, 5, 34, 0, 0, 2393, 2383, 1, 0, 0, 0, 2393, 2391, 1, 0, 0, 0, 2394, 270, 1, 0, 0, 0, 2395, 2401, 3, 275, 137, 0, 2396, 2401, 3, 35, 17, 0, 2397, 2401, 3, 19, 9, 0, 2398, 2401, 3, 33, 16, 0, 2399, 2401, 3, 21, 10, 0, 2400, 2395, 1, 0, 0, 0, 2400, 2396, 1, 0, 0, 0, 2400, 2397, 1, 0, 0, 0, 2400, 2398, 1, 0, 0, 0, 2400, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2400, 1, 0, 0, 0, 2402, 2403, 1, 0, 0, 0, 2403, 272, 1, 0, 0, 0, 2404, 2405, 5, 36, 0, 0, 2405, 2407, 3, 271, 135, 0, 2406, 2404, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2406, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2411, 1, 0, 0, 0, 2410, 2412, 3, 33, 16, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 274, 1, 0, 0, 0, 2413, 2414, 7, 1, 0, 0, 2414, 276, 1, 0, 0, 0, 2415, 2416, 7, 2, 0, 0, 2416, 278, 1, 0, 0, 0, 2417, 2418, 7, 3, 0, 0, 2418, 280, 1, 0, 0, 0, 2419, 2423, 8, 4, 0, 0, 2420, 2421, 5, 92, 0, 0, 2421, 2423, 5, 34, 0, 0, 2422, 2419, 1, 0, 0, 0, 2422, 2420, 1, 0, 0, 0, 2423, 282, 1, 0, 0, 0, 2424, 2426, 7, 5, 0, 0, 2425, 2424, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2425, 1, 0, 0, 0, 2427, 2428, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2430, 6, 141, 0, 0, 2430, 284, 1, 0, 0, 0, 2431, 2432, 5, 47, 0, 0, 2432, 2433, 5, 42, 0, 0, 2433, 2437, 1, 0, 0, 0, 2434, 2436, 9, 0, 0, 0, 2435, 2434, 1, 0, 0, 0, 2436, 2439, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2437, 2435, 1, 0, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2437, 1, 0, 0, 0, 2440, 2441, 5, 42, 0, 0, 2441, 2442, 5, 47, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2444, 6, 142, 0, 0, 2444, 286, 1, 0, 0, 0, 2445, 2446, 5, 47, 0, 0, 2446, 2447, 5, 47, 0, 0, 2447, 2451, 1, 0, 0, 0, 2448, 2450, 8, 6, 0, 0, 2449, 2448, 1, 0, 0, 0, 2450, 2453, 1, 0, 0, 0, 2451, 2449, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2451, 1, 0, 0, 0, 2454, 2455, 6, 143, 0, 0, 2455, 288, 1, 0, 0, 0, 23, 0, 337, 2321, 2324, 2327, 2330, 2333, 2336, 2339, 2342, 2349, 2354, 2381, 2387, 2393, 2400, 2402, 2408, 2411, 2422, 2427, 2437, 2451, 1, 6, 0, 0] \ No newline at end of file diff --git a/kin/grammar/PBXProjLexer.py b/kin/grammar/PBXProjLexer.py index df54a1c..d2b9974 100644 --- a/kin/grammar/PBXProjLexer.py +++ b/kin/grammar/PBXProjLexer.py @@ -33,902 +33,904 @@ def serializedATN(): 7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130, 2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136, 7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141, - 2,142,7,142,2,143,7,143,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2, - 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,5, - 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6, - 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7, - 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, - 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1, - 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1, - 11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1, - 11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1, - 12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1, - 13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1, - 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, - 14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1, - 15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1, - 17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1, + 2,142,7,142,2,143,7,143,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4, + 1,5,1,5,1,6,1,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7, + 1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,10,1,10,1, + 11,1,11,1,11,1,11,1,12,4,12,336,8,12,11,12,12,12,337,1,13,1,13,1, + 13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1, + 15,1,15,1,15,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,18,1,18,1, 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, - 18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, - 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, - 19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, - 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1, 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1, - 22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1, + 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1, + 22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1, 23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1, - 23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1, - 24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1, + 23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1, + 24,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1, 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1, - 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1, - 25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1, - 26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1, - 27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1, - 28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1, - 29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, + 25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1, + 26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, + 27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1, + 28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1, + 29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1, + 30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, 30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1, - 31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, - 32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1, - 33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1, - 34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1, + 31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1, + 31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1, + 33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1, + 34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1, 35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1, - 36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1, + 36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1, + 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, - 37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, - 38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1, - 39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1, - 41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1, - 42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1, - 43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1, - 44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1, - 45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1, - 46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1, - 47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, - 47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, - 49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1, - 50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1, - 50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1, - 51,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1, + 37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, + 38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, + 38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1, + 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1, + 40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1, + 41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1, + 43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1, + 44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1, + 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1, + 47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1, + 48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1, + 49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1, + 49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1, + 50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1, + 51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1, 54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1, - 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1, - 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1, - 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,58,1,58,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1, + 57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1, 59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, - 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1, - 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1, - 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1, - 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, - 63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, - 64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1, - 65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1, - 65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, - 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, - 66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1, - 67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1, - 68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1, - 69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1, - 70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, - 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, - 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, - 72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1, + 60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1, + 63,1,63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1, + 65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, + 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1, + 67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1, + 68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1, + 68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1, + 69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1, + 69,1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1, + 71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1, 73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1, - 73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1, + 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1, + 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, + 75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1, 75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1, 75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, - 76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, - 76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, + 76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, 78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, - 78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, - 79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1, - 79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1, - 80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1, - 80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1, - 81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1, - 82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1, - 83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1, - 83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1, - 84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1, - 85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1, + 78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1, + 79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1, + 80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1, + 81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1, + 81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1, + 82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1, + 82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,82,1, + 82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1, + 83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1, + 84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1, + 85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, 86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, - 86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1, + 87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1, + 87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1, 87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1, 88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1, - 88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1, - 89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1, + 88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1, + 89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1, 90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, - 90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1, + 90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1, 91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1, - 92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1, - 93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1, - 94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1, - 95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1, + 92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1, + 92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1, + 93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1, + 94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1, + 95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1, 96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1, - 96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1, - 97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1, + 96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1, + 97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1, + 98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1, + 98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1, 99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1, - 99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, - 1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, - 1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101, 1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102, - 1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, - 1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, - 1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, - 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106, - 1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107, - 1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109, - 1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104, + 1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105, + 1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, + 1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110, 1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, - 1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111, - 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112, - 1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113, - 1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113, - 1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114, - 1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115, - 1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116,1,116, - 1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116, - 1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117, - 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117, - 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118, - 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119, - 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121, - 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 1,110,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, + 1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113, + 1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114, + 1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116, + 1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117, + 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119, + 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119, + 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119, + 1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120, + 1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121, 1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122, 1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123, - 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124, - 1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,126,1,126, - 1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,127,1,128,4,128,2285,8,128,11,128, - 12,128,2286,1,129,1,129,1,130,1,130,1,131,1,131,1,132,1,132,1,133, - 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, + 1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124, + 1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125, + 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126, + 1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130, + 1,130,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,3,133,2322,8,133,1,133,3,133,2325,8,133,1,133,3,133, - 2328,8,133,1,133,3,133,2331,8,133,1,133,3,133,2334,8,133,1,133,3, - 133,2337,8,133,1,133,3,133,2340,8,133,1,133,3,133,2343,8,133,1,133, - 1,133,1,133,1,133,1,133,3,133,2350,8,133,1,133,4,133,2353,8,133, - 11,133,12,133,2354,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,133,3,133,2322,8,133,1,133,3,133,2325, + 8,133,1,133,3,133,2328,8,133,1,133,3,133,2331,8,133,1,133,3,133, + 2334,8,133,1,133,3,133,2337,8,133,1,133,3,133,2340,8,133,1,133,3, + 133,2343,8,133,1,133,1,133,1,133,1,133,1,133,3,133,2350,8,133,1, + 133,4,133,2353,8,133,11,133,12,133,2354,1,133,1,133,1,133,1,133, 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,133,1,133,3,133,2382,8,133,1,134,1,134, - 4,134,2386,8,134,11,134,12,134,2387,1,134,1,134,1,134,1,134,3,134, - 2394,8,134,1,135,1,135,1,135,1,135,1,135,4,135,2401,8,135,11,135, - 12,135,2402,1,136,1,136,4,136,2407,8,136,11,136,12,136,2408,1,136, - 3,136,2412,8,136,1,137,1,137,1,138,1,138,1,139,1,139,1,140,1,140, - 1,140,3,140,2423,8,140,1,141,4,141,2426,8,141,11,141,12,141,2427, - 1,141,1,141,1,142,1,142,1,142,1,142,5,142,2436,8,142,10,142,12,142, - 2439,9,142,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143, - 5,143,2450,8,143,10,143,12,143,2453,9,143,1,143,1,143,1,2437,0,144, - 1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13, - 27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24, - 49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35, - 71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46, - 93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56, - 113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131, - 66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75, - 151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169, - 85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94, - 189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103, - 207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111, - 223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119, - 239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127, - 255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135, - 271,136,273,137,275,138,277,139,279,0,281,0,283,140,285,141,287, - 142,1,0,7,1,0,48,57,3,0,48,57,65,90,97,122,2,0,48,57,65,90,3,0,48, - 57,65,70,97,102,1,0,34,34,3,0,9,10,12,13,32,32,2,0,10,10,13,13,2479, - 0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11, - 1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21, - 1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31, - 1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41, - 1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51, - 1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61, - 1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71, - 1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81, - 1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91, - 1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101, - 1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0, - 0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1, - 0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0, - 129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0, - 0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147, - 1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0, - 0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1, - 0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0, - 175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0, - 0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193, - 1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0, - 0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1, - 0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0, - 221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0, - 0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239, - 1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0, - 0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1, - 0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0, - 267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0, - 0,0,0,277,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,1,289, - 1,0,0,0,3,291,1,0,0,0,5,293,1,0,0,0,7,308,1,0,0,0,9,310,1,0,0,0, - 11,312,1,0,0,0,13,326,1,0,0,0,15,345,1,0,0,0,17,358,1,0,0,0,19,380, - 1,0,0,0,21,403,1,0,0,0,23,420,1,0,0,0,25,444,1,0,0,0,27,453,1,0, - 0,0,29,474,1,0,0,0,31,490,1,0,0,0,33,506,1,0,0,0,35,517,1,0,0,0, - 37,535,1,0,0,0,39,558,1,0,0,0,41,583,1,0,0,0,43,604,1,0,0,0,45,624, - 1,0,0,0,47,640,1,0,0,0,49,661,1,0,0,0,51,681,1,0,0,0,53,711,1,0, - 0,0,55,743,1,0,0,0,57,758,1,0,0,0,59,766,1,0,0,0,61,777,1,0,0,0, - 63,793,1,0,0,0,65,803,1,0,0,0,67,824,1,0,0,0,69,835,1,0,0,0,71,848, - 1,0,0,0,73,857,1,0,0,0,75,874,1,0,0,0,77,892,1,0,0,0,79,907,1,0, - 0,0,81,919,1,0,0,0,83,928,1,0,0,0,85,937,1,0,0,0,87,948,1,0,0,0, - 89,963,1,0,0,0,91,979,1,0,0,0,93,988,1,0,0,0,95,1007,1,0,0,0,97, - 1021,1,0,0,0,99,1033,1,0,0,0,101,1041,1,0,0,0,103,1068,1,0,0,0,105, - 1073,1,0,0,0,107,1078,1,0,0,0,109,1089,1,0,0,0,111,1105,1,0,0,0, - 113,1111,1,0,0,0,115,1146,1,0,0,0,117,1148,1,0,0,0,119,1150,1,0, - 0,0,121,1152,1,0,0,0,123,1175,1,0,0,0,125,1187,1,0,0,0,127,1198, - 1,0,0,0,129,1219,1,0,0,0,131,1233,1,0,0,0,133,1255,1,0,0,0,135,1286, - 1,0,0,0,137,1299,1,0,0,0,139,1311,1,0,0,0,141,1328,1,0,0,0,143,1340, - 1,0,0,0,145,1351,1,0,0,0,147,1385,1,0,0,0,149,1420,1,0,0,0,151,1431, - 1,0,0,0,153,1450,1,0,0,0,155,1485,1,0,0,0,157,1506,1,0,0,0,159,1540, - 1,0,0,0,161,1564,1,0,0,0,163,1581,1,0,0,0,165,1598,1,0,0,0,167,1615, - 1,0,0,0,169,1637,1,0,0,0,171,1650,1,0,0,0,173,1666,1,0,0,0,175,1686, - 1,0,0,0,177,1704,1,0,0,0,179,1725,1,0,0,0,181,1743,1,0,0,0,183,1766, - 1,0,0,0,185,1779,1,0,0,0,187,1789,1,0,0,0,189,1805,1,0,0,0,191,1823, - 1,0,0,0,193,1838,1,0,0,0,195,1856,1,0,0,0,197,1868,1,0,0,0,199,1876, - 1,0,0,0,201,1895,1,0,0,0,203,1906,1,0,0,0,205,1926,1,0,0,0,207,1938, - 1,0,0,0,209,1948,1,0,0,0,211,1960,1,0,0,0,213,1977,1,0,0,0,215,1984, - 1,0,0,0,217,1996,1,0,0,0,219,2005,1,0,0,0,221,2015,1,0,0,0,223,2042, - 1,0,0,0,225,2056,1,0,0,0,227,2064,1,0,0,0,229,2081,1,0,0,0,231,2094, - 1,0,0,0,233,2105,1,0,0,0,235,2125,1,0,0,0,237,2155,1,0,0,0,239,2180, - 1,0,0,0,241,2189,1,0,0,0,243,2208,1,0,0,0,245,2223,1,0,0,0,247,2240, - 1,0,0,0,249,2252,1,0,0,0,251,2260,1,0,0,0,253,2264,1,0,0,0,255,2272, - 1,0,0,0,257,2284,1,0,0,0,259,2288,1,0,0,0,261,2290,1,0,0,0,263,2292, - 1,0,0,0,265,2294,1,0,0,0,267,2381,1,0,0,0,269,2393,1,0,0,0,271,2400, - 1,0,0,0,273,2406,1,0,0,0,275,2413,1,0,0,0,277,2415,1,0,0,0,279,2417, - 1,0,0,0,281,2422,1,0,0,0,283,2425,1,0,0,0,285,2431,1,0,0,0,287,2445, - 1,0,0,0,289,290,5,123,0,0,290,2,1,0,0,0,291,292,5,125,0,0,292,4, - 1,0,0,0,293,294,5,97,0,0,294,295,5,114,0,0,295,296,5,99,0,0,296, - 297,5,104,0,0,297,298,5,105,0,0,298,299,5,118,0,0,299,300,5,101, - 0,0,300,301,5,86,0,0,301,302,5,101,0,0,302,303,5,114,0,0,303,304, - 5,115,0,0,304,305,5,105,0,0,305,306,5,111,0,0,306,307,5,110,0,0, - 307,6,1,0,0,0,308,309,5,61,0,0,309,8,1,0,0,0,310,311,5,59,0,0,311, - 10,1,0,0,0,312,313,5,111,0,0,313,314,5,98,0,0,314,315,5,106,0,0, - 315,316,5,101,0,0,316,317,5,99,0,0,317,318,5,116,0,0,318,319,5,86, - 0,0,319,320,5,101,0,0,320,321,5,114,0,0,321,322,5,115,0,0,322,323, - 5,105,0,0,323,324,5,111,0,0,324,325,5,110,0,0,325,12,1,0,0,0,326, - 327,5,80,0,0,327,328,5,66,0,0,328,329,5,88,0,0,329,330,5,65,0,0, - 330,331,5,103,0,0,331,332,5,103,0,0,332,333,5,114,0,0,333,334,5, - 101,0,0,334,335,5,103,0,0,335,336,5,97,0,0,336,337,5,116,0,0,337, - 338,5,101,0,0,338,339,5,84,0,0,339,340,5,97,0,0,340,341,5,114,0, - 0,341,342,5,103,0,0,342,343,5,101,0,0,343,344,5,116,0,0,344,14,1, - 0,0,0,345,346,5,80,0,0,346,347,5,66,0,0,347,348,5,88,0,0,348,349, - 5,66,0,0,349,350,5,117,0,0,350,351,5,105,0,0,351,352,5,108,0,0,352, - 353,5,100,0,0,353,354,5,70,0,0,354,355,5,105,0,0,355,356,5,108,0, - 0,356,357,5,101,0,0,357,16,1,0,0,0,358,359,5,80,0,0,359,360,5,66, - 0,0,360,361,5,88,0,0,361,362,5,67,0,0,362,363,5,111,0,0,363,364, - 5,110,0,0,364,365,5,116,0,0,365,366,5,97,0,0,366,367,5,105,0,0,367, - 368,5,110,0,0,368,369,5,101,0,0,369,370,5,114,0,0,370,371,5,73,0, - 0,371,372,5,116,0,0,372,373,5,101,0,0,373,374,5,109,0,0,374,375, - 5,80,0,0,375,376,5,114,0,0,376,377,5,111,0,0,377,378,5,120,0,0,378, - 379,5,121,0,0,379,18,1,0,0,0,380,381,5,80,0,0,381,382,5,66,0,0,382, - 383,5,88,0,0,383,384,5,67,0,0,384,385,5,111,0,0,385,386,5,112,0, - 0,386,387,5,121,0,0,387,388,5,70,0,0,388,389,5,105,0,0,389,390,5, - 108,0,0,390,391,5,101,0,0,391,392,5,115,0,0,392,393,5,66,0,0,393, - 394,5,117,0,0,394,395,5,105,0,0,395,396,5,108,0,0,396,397,5,100, - 0,0,397,398,5,80,0,0,398,399,5,104,0,0,399,400,5,97,0,0,400,401, - 5,115,0,0,401,402,5,101,0,0,402,20,1,0,0,0,403,404,5,80,0,0,404, - 405,5,66,0,0,405,406,5,88,0,0,406,407,5,70,0,0,407,408,5,105,0,0, - 408,409,5,108,0,0,409,410,5,101,0,0,410,411,5,82,0,0,411,412,5,101, - 0,0,412,413,5,102,0,0,413,414,5,101,0,0,414,415,5,114,0,0,415,416, - 5,101,0,0,416,417,5,110,0,0,417,418,5,99,0,0,418,419,5,101,0,0,419, - 22,1,0,0,0,420,421,5,80,0,0,421,422,5,66,0,0,422,423,5,88,0,0,423, - 424,5,70,0,0,424,425,5,114,0,0,425,426,5,97,0,0,426,427,5,109,0, - 0,427,428,5,101,0,0,428,429,5,119,0,0,429,430,5,111,0,0,430,431, - 5,114,0,0,431,432,5,107,0,0,432,433,5,115,0,0,433,434,5,66,0,0,434, - 435,5,117,0,0,435,436,5,105,0,0,436,437,5,108,0,0,437,438,5,100, - 0,0,438,439,5,80,0,0,439,440,5,104,0,0,440,441,5,97,0,0,441,442, - 5,115,0,0,442,443,5,101,0,0,443,24,1,0,0,0,444,445,5,80,0,0,445, - 446,5,66,0,0,446,447,5,88,0,0,447,448,5,71,0,0,448,449,5,114,0,0, - 449,450,5,111,0,0,450,451,5,117,0,0,451,452,5,112,0,0,452,26,1,0, - 0,0,453,454,5,80,0,0,454,455,5,66,0,0,455,456,5,88,0,0,456,457,5, - 72,0,0,457,458,5,101,0,0,458,459,5,97,0,0,459,460,5,100,0,0,460, - 461,5,101,0,0,461,462,5,114,0,0,462,463,5,115,0,0,463,464,5,66,0, - 0,464,465,5,117,0,0,465,466,5,105,0,0,466,467,5,108,0,0,467,468, - 5,100,0,0,468,469,5,80,0,0,469,470,5,104,0,0,470,471,5,97,0,0,471, - 472,5,115,0,0,472,473,5,101,0,0,473,28,1,0,0,0,474,475,5,80,0,0, - 475,476,5,66,0,0,476,477,5,88,0,0,477,478,5,78,0,0,478,479,5,97, - 0,0,479,480,5,116,0,0,480,481,5,105,0,0,481,482,5,118,0,0,482,483, - 5,101,0,0,483,484,5,84,0,0,484,485,5,97,0,0,485,486,5,114,0,0,486, - 487,5,103,0,0,487,488,5,101,0,0,488,489,5,116,0,0,489,30,1,0,0,0, - 490,491,5,80,0,0,491,492,5,66,0,0,492,493,5,88,0,0,493,494,5,76, - 0,0,494,495,5,101,0,0,495,496,5,103,0,0,496,497,5,97,0,0,497,498, - 5,99,0,0,498,499,5,121,0,0,499,500,5,84,0,0,500,501,5,97,0,0,501, - 502,5,114,0,0,502,503,5,103,0,0,503,504,5,101,0,0,504,505,5,116, - 0,0,505,32,1,0,0,0,506,507,5,80,0,0,507,508,5,66,0,0,508,509,5,88, - 0,0,509,510,5,80,0,0,510,511,5,114,0,0,511,512,5,111,0,0,512,513, - 5,106,0,0,513,514,5,101,0,0,514,515,5,99,0,0,515,516,5,116,0,0,516, - 34,1,0,0,0,517,518,5,80,0,0,518,519,5,66,0,0,519,520,5,88,0,0,520, - 521,5,82,0,0,521,522,5,101,0,0,522,523,5,102,0,0,523,524,5,101,0, - 0,524,525,5,114,0,0,525,526,5,101,0,0,526,527,5,110,0,0,527,528, - 5,99,0,0,528,529,5,101,0,0,529,530,5,80,0,0,530,531,5,114,0,0,531, - 532,5,111,0,0,532,533,5,120,0,0,533,534,5,121,0,0,534,36,1,0,0,0, - 535,536,5,80,0,0,536,537,5,66,0,0,537,538,5,88,0,0,538,539,5,82, - 0,0,539,540,5,101,0,0,540,541,5,115,0,0,541,542,5,111,0,0,542,543, - 5,117,0,0,543,544,5,114,0,0,544,545,5,99,0,0,545,546,5,101,0,0,546, - 547,5,115,0,0,547,548,5,66,0,0,548,549,5,117,0,0,549,550,5,105,0, - 0,550,551,5,108,0,0,551,552,5,100,0,0,552,553,5,80,0,0,553,554,5, - 104,0,0,554,555,5,97,0,0,555,556,5,115,0,0,556,557,5,101,0,0,557, - 38,1,0,0,0,558,559,5,80,0,0,559,560,5,66,0,0,560,561,5,88,0,0,561, - 562,5,83,0,0,562,563,5,104,0,0,563,564,5,101,0,0,564,565,5,108,0, - 0,565,566,5,108,0,0,566,567,5,83,0,0,567,568,5,99,0,0,568,569,5, - 114,0,0,569,570,5,105,0,0,570,571,5,112,0,0,571,572,5,116,0,0,572, - 573,5,66,0,0,573,574,5,117,0,0,574,575,5,105,0,0,575,576,5,108,0, - 0,576,577,5,100,0,0,577,578,5,80,0,0,578,579,5,104,0,0,579,580,5, - 97,0,0,580,581,5,115,0,0,581,582,5,101,0,0,582,40,1,0,0,0,583,584, - 5,80,0,0,584,585,5,66,0,0,585,586,5,88,0,0,586,587,5,83,0,0,587, - 588,5,111,0,0,588,589,5,117,0,0,589,590,5,114,0,0,590,591,5,99,0, - 0,591,592,5,101,0,0,592,593,5,115,0,0,593,594,5,66,0,0,594,595,5, - 117,0,0,595,596,5,105,0,0,596,597,5,108,0,0,597,598,5,100,0,0,598, - 599,5,80,0,0,599,600,5,104,0,0,600,601,5,97,0,0,601,602,5,115,0, - 0,602,603,5,101,0,0,603,42,1,0,0,0,604,605,5,80,0,0,605,606,5,66, - 0,0,606,607,5,88,0,0,607,608,5,84,0,0,608,609,5,97,0,0,609,610,5, - 114,0,0,610,611,5,103,0,0,611,612,5,101,0,0,612,613,5,116,0,0,613, - 614,5,68,0,0,614,615,5,101,0,0,615,616,5,112,0,0,616,617,5,101,0, - 0,617,618,5,110,0,0,618,619,5,100,0,0,619,620,5,101,0,0,620,621, - 5,110,0,0,621,622,5,99,0,0,622,623,5,121,0,0,623,44,1,0,0,0,624, - 625,5,80,0,0,625,626,5,66,0,0,626,627,5,88,0,0,627,628,5,86,0,0, - 628,629,5,97,0,0,629,630,5,114,0,0,630,631,5,105,0,0,631,632,5,97, - 0,0,632,633,5,110,0,0,633,634,5,116,0,0,634,635,5,71,0,0,635,636, - 5,114,0,0,636,637,5,111,0,0,637,638,5,117,0,0,638,639,5,112,0,0, - 639,46,1,0,0,0,640,641,5,88,0,0,641,642,5,67,0,0,642,643,5,66,0, - 0,643,644,5,117,0,0,644,645,5,105,0,0,645,646,5,108,0,0,646,647, - 5,100,0,0,647,648,5,67,0,0,648,649,5,111,0,0,649,650,5,110,0,0,650, - 651,5,102,0,0,651,652,5,105,0,0,652,653,5,103,0,0,653,654,5,117, - 0,0,654,655,5,114,0,0,655,656,5,97,0,0,656,657,5,116,0,0,657,658, - 5,105,0,0,658,659,5,111,0,0,659,660,5,110,0,0,660,48,1,0,0,0,661, - 662,5,88,0,0,662,663,5,67,0,0,663,664,5,67,0,0,664,665,5,111,0,0, - 665,666,5,110,0,0,666,667,5,102,0,0,667,668,5,105,0,0,668,669,5, - 103,0,0,669,670,5,117,0,0,670,671,5,114,0,0,671,672,5,97,0,0,672, - 673,5,116,0,0,673,674,5,105,0,0,674,675,5,111,0,0,675,676,5,110, - 0,0,676,677,5,76,0,0,677,678,5,105,0,0,678,679,5,115,0,0,679,680, - 5,116,0,0,680,50,1,0,0,0,681,682,5,88,0,0,682,683,5,67,0,0,683,684, - 5,82,0,0,684,685,5,101,0,0,685,686,5,109,0,0,686,687,5,111,0,0,687, - 688,5,116,0,0,688,689,5,101,0,0,689,690,5,83,0,0,690,691,5,119,0, - 0,691,692,5,105,0,0,692,693,5,102,0,0,693,694,5,116,0,0,694,695, - 5,80,0,0,695,696,5,97,0,0,696,697,5,99,0,0,697,698,5,107,0,0,698, - 699,5,97,0,0,699,700,5,103,0,0,700,701,5,101,0,0,701,702,5,82,0, - 0,702,703,5,101,0,0,703,704,5,102,0,0,704,705,5,101,0,0,705,706, - 5,114,0,0,706,707,5,101,0,0,707,708,5,110,0,0,708,709,5,99,0,0,709, - 710,5,101,0,0,710,52,1,0,0,0,711,712,5,88,0,0,712,713,5,67,0,0,713, - 714,5,83,0,0,714,715,5,119,0,0,715,716,5,105,0,0,716,717,5,102,0, - 0,717,718,5,116,0,0,718,719,5,80,0,0,719,720,5,97,0,0,720,721,5, - 99,0,0,721,722,5,107,0,0,722,723,5,97,0,0,723,724,5,103,0,0,724, - 725,5,101,0,0,725,726,5,80,0,0,726,727,5,114,0,0,727,728,5,111,0, - 0,728,729,5,100,0,0,729,730,5,117,0,0,730,731,5,99,0,0,731,732,5, - 116,0,0,732,733,5,68,0,0,733,734,5,101,0,0,734,735,5,112,0,0,735, - 736,5,101,0,0,736,737,5,110,0,0,737,738,5,100,0,0,738,739,5,101, - 0,0,739,740,5,110,0,0,740,741,5,99,0,0,741,742,5,121,0,0,742,54, - 1,0,0,0,743,744,5,88,0,0,744,745,5,67,0,0,745,746,5,86,0,0,746,747, - 5,101,0,0,747,748,5,114,0,0,748,749,5,115,0,0,749,750,5,105,0,0, - 750,751,5,111,0,0,751,752,5,110,0,0,752,753,5,71,0,0,753,754,5,114, - 0,0,754,755,5,111,0,0,755,756,5,117,0,0,756,757,5,112,0,0,757,56, - 1,0,0,0,758,759,5,102,0,0,759,760,5,105,0,0,760,761,5,108,0,0,761, - 762,5,101,0,0,762,763,5,82,0,0,763,764,5,101,0,0,764,765,5,102,0, - 0,765,58,1,0,0,0,766,767,5,112,0,0,767,768,5,114,0,0,768,769,5,111, - 0,0,769,770,5,100,0,0,770,771,5,117,0,0,771,772,5,99,0,0,772,773, - 5,116,0,0,773,774,5,82,0,0,774,775,5,101,0,0,775,776,5,102,0,0,776, - 60,1,0,0,0,777,778,5,99,0,0,778,779,5,111,0,0,779,780,5,110,0,0, - 780,781,5,116,0,0,781,782,5,97,0,0,782,783,5,105,0,0,783,784,5,110, - 0,0,784,785,5,101,0,0,785,786,5,114,0,0,786,787,5,80,0,0,787,788, - 5,111,0,0,788,789,5,114,0,0,789,790,5,116,0,0,790,791,5,97,0,0,791, - 792,5,108,0,0,792,62,1,0,0,0,793,794,5,112,0,0,794,795,5,114,0,0, - 795,796,5,111,0,0,796,797,5,120,0,0,797,798,5,121,0,0,798,799,5, - 84,0,0,799,800,5,121,0,0,800,801,5,112,0,0,801,802,5,101,0,0,802, - 64,1,0,0,0,803,804,5,114,0,0,804,805,5,101,0,0,805,806,5,109,0,0, - 806,807,5,111,0,0,807,808,5,116,0,0,808,809,5,101,0,0,809,810,5, - 71,0,0,810,811,5,108,0,0,811,812,5,111,0,0,812,813,5,98,0,0,813, - 814,5,97,0,0,814,815,5,108,0,0,815,816,5,73,0,0,816,817,5,68,0,0, - 817,818,5,83,0,0,818,819,5,116,0,0,819,820,5,114,0,0,820,821,5,105, - 0,0,821,822,5,110,0,0,822,823,5,103,0,0,823,66,1,0,0,0,824,825,5, - 114,0,0,825,826,5,101,0,0,826,827,5,109,0,0,827,828,5,111,0,0,828, - 829,5,116,0,0,829,830,5,101,0,0,830,831,5,73,0,0,831,832,5,110,0, - 0,832,833,5,102,0,0,833,834,5,111,0,0,834,68,1,0,0,0,835,836,5,102, - 0,0,836,837,5,105,0,0,837,838,5,108,0,0,838,839,5,101,0,0,839,840, - 5,69,0,0,840,841,5,110,0,0,841,842,5,99,0,0,842,843,5,111,0,0,843, - 844,5,100,0,0,844,845,5,105,0,0,845,846,5,110,0,0,846,847,5,103, - 0,0,847,70,1,0,0,0,848,849,5,99,0,0,849,850,5,111,0,0,850,851,5, - 109,0,0,851,852,5,109,0,0,852,853,5,101,0,0,853,854,5,110,0,0,854, - 855,5,116,0,0,855,856,5,115,0,0,856,72,1,0,0,0,857,858,5,101,0,0, - 858,859,5,120,0,0,859,860,5,112,0,0,860,861,5,108,0,0,861,862,5, - 105,0,0,862,863,5,99,0,0,863,864,5,105,0,0,864,865,5,116,0,0,865, - 866,5,70,0,0,866,867,5,105,0,0,867,868,5,108,0,0,868,869,5,101,0, - 0,869,870,5,84,0,0,870,871,5,121,0,0,871,872,5,112,0,0,872,873,5, - 101,0,0,873,74,1,0,0,0,874,875,5,108,0,0,875,876,5,97,0,0,876,877, - 5,115,0,0,877,878,5,116,0,0,878,879,5,75,0,0,879,880,5,110,0,0,880, - 881,5,111,0,0,881,882,5,119,0,0,882,883,5,110,0,0,883,884,5,70,0, - 0,884,885,5,105,0,0,885,886,5,108,0,0,886,887,5,101,0,0,887,888, - 5,84,0,0,888,889,5,121,0,0,889,890,5,112,0,0,890,891,5,101,0,0,891, - 76,1,0,0,0,892,893,5,105,0,0,893,894,5,110,0,0,894,895,5,99,0,0, - 895,896,5,108,0,0,896,897,5,117,0,0,897,898,5,100,0,0,898,899,5, - 101,0,0,899,900,5,73,0,0,900,901,5,110,0,0,901,902,5,73,0,0,902, - 903,5,110,0,0,903,904,5,100,0,0,904,905,5,101,0,0,905,906,5,120, - 0,0,906,78,1,0,0,0,907,908,5,105,0,0,908,909,5,110,0,0,909,910,5, - 100,0,0,910,911,5,101,0,0,911,912,5,110,0,0,912,913,5,116,0,0,913, - 914,5,87,0,0,914,915,5,105,0,0,915,916,5,100,0,0,916,917,5,116,0, - 0,917,918,5,104,0,0,918,80,1,0,0,0,919,920,5,116,0,0,920,921,5,97, - 0,0,921,922,5,98,0,0,922,923,5,87,0,0,923,924,5,105,0,0,924,925, - 5,100,0,0,925,926,5,116,0,0,926,927,5,104,0,0,927,82,1,0,0,0,928, - 929,5,117,0,0,929,930,5,115,0,0,930,931,5,101,0,0,931,932,5,115, - 0,0,932,933,5,84,0,0,933,934,5,97,0,0,934,935,5,98,0,0,935,936,5, - 115,0,0,936,84,1,0,0,0,937,938,5,119,0,0,938,939,5,114,0,0,939,940, - 5,97,0,0,940,941,5,112,0,0,941,942,5,115,0,0,942,943,5,76,0,0,943, - 944,5,105,0,0,944,945,5,110,0,0,945,946,5,101,0,0,946,947,5,115, - 0,0,947,86,1,0,0,0,948,949,5,112,0,0,949,950,5,108,0,0,950,951,5, - 97,0,0,951,952,5,116,0,0,952,953,5,102,0,0,953,954,5,111,0,0,954, - 955,5,114,0,0,955,956,5,109,0,0,956,957,5,70,0,0,957,958,5,105,0, - 0,958,959,5,108,0,0,959,960,5,116,0,0,960,961,5,101,0,0,961,962, - 5,114,0,0,962,88,1,0,0,0,963,964,5,112,0,0,964,965,5,108,0,0,965, - 966,5,97,0,0,966,967,5,116,0,0,967,968,5,102,0,0,968,969,5,111,0, - 0,969,970,5,114,0,0,970,971,5,109,0,0,971,972,5,70,0,0,972,973,5, - 105,0,0,973,974,5,108,0,0,974,975,5,116,0,0,975,976,5,101,0,0,976, - 977,5,114,0,0,977,978,5,115,0,0,978,90,1,0,0,0,979,980,5,99,0,0, - 980,981,5,104,0,0,981,982,5,105,0,0,982,983,5,108,0,0,983,984,5, - 100,0,0,984,985,5,114,0,0,985,986,5,101,0,0,986,987,5,110,0,0,987, - 92,1,0,0,0,988,989,5,112,0,0,989,990,5,114,0,0,990,991,5,111,0,0, - 991,992,5,100,0,0,992,993,5,117,0,0,993,994,5,99,0,0,994,995,5,116, - 0,0,995,996,5,73,0,0,996,997,5,110,0,0,997,998,5,115,0,0,998,999, - 5,116,0,0,999,1000,5,97,0,0,1000,1001,5,108,0,0,1001,1002,5,108, - 0,0,1002,1003,5,80,0,0,1003,1004,5,97,0,0,1004,1005,5,116,0,0,1005, - 1006,5,104,0,0,1006,94,1,0,0,0,1007,1008,5,114,0,0,1008,1009,5,101, - 0,0,1009,1010,5,112,0,0,1010,1011,5,111,0,0,1011,1012,5,115,0,0, - 1012,1013,5,105,0,0,1013,1014,5,116,0,0,1014,1015,5,111,0,0,1015, - 1016,5,114,0,0,1016,1017,5,121,0,0,1017,1018,5,85,0,0,1018,1019, - 5,82,0,0,1019,1020,5,76,0,0,1020,96,1,0,0,0,1021,1022,5,114,0,0, - 1022,1023,5,101,0,0,1023,1024,5,113,0,0,1024,1025,5,117,0,0,1025, - 1026,5,105,0,0,1026,1027,5,114,0,0,1027,1028,5,101,0,0,1028,1029, - 5,109,0,0,1029,1030,5,101,0,0,1030,1031,5,110,0,0,1031,1032,5,116, - 0,0,1032,98,1,0,0,0,1033,1034,5,112,0,0,1034,1035,5,97,0,0,1035, - 1036,5,99,0,0,1036,1037,5,107,0,0,1037,1038,5,97,0,0,1038,1039,5, - 103,0,0,1039,1040,5,101,0,0,1040,100,1,0,0,0,1041,1042,5,112,0,0, - 1042,1043,5,97,0,0,1043,1044,5,99,0,0,1044,1045,5,107,0,0,1045,1046, - 5,97,0,0,1046,1047,5,103,0,0,1047,1048,5,101,0,0,1048,1049,5,80, - 0,0,1049,1050,5,114,0,0,1050,1051,5,111,0,0,1051,1052,5,100,0,0, - 1052,1053,5,117,0,0,1053,1054,5,99,0,0,1054,1055,5,116,0,0,1055, - 1056,5,68,0,0,1056,1057,5,101,0,0,1057,1058,5,112,0,0,1058,1059, - 5,101,0,0,1059,1060,5,110,0,0,1060,1061,5,100,0,0,1061,1062,5,101, - 0,0,1062,1063,5,110,0,0,1063,1064,5,99,0,0,1064,1065,5,105,0,0,1065, - 1066,5,101,0,0,1066,1067,5,115,0,0,1067,102,1,0,0,0,1068,1069,5, - 110,0,0,1069,1070,5,97,0,0,1070,1071,5,109,0,0,1071,1072,5,101,0, - 0,1072,104,1,0,0,0,1073,1074,5,112,0,0,1074,1075,5,97,0,0,1075,1076, - 5,116,0,0,1076,1077,5,104,0,0,1077,106,1,0,0,0,1078,1079,5,115,0, - 0,1079,1080,5,111,0,0,1080,1081,5,117,0,0,1081,1082,5,114,0,0,1082, - 1083,5,99,0,0,1083,1084,5,101,0,0,1084,1085,5,84,0,0,1085,1086,5, - 114,0,0,1086,1087,5,101,0,0,1087,1088,5,101,0,0,1088,108,1,0,0,0, - 1089,1090,5,98,0,0,1090,1091,5,117,0,0,1091,1092,5,105,0,0,1092, - 1093,5,108,0,0,1093,1094,5,100,0,0,1094,1095,5,65,0,0,1095,1096, - 5,99,0,0,1096,1097,5,116,0,0,1097,1098,5,105,0,0,1098,1099,5,111, - 0,0,1099,1100,5,110,0,0,1100,1101,5,77,0,0,1101,1102,5,97,0,0,1102, - 1103,5,115,0,0,1103,1104,5,107,0,0,1104,110,1,0,0,0,1105,1106,5, - 102,0,0,1106,1107,5,105,0,0,1107,1108,5,108,0,0,1108,1109,5,101, - 0,0,1109,1110,5,115,0,0,1110,112,1,0,0,0,1111,1112,5,114,0,0,1112, - 1113,5,117,0,0,1113,1114,5,110,0,0,1114,1115,5,79,0,0,1115,1116, - 5,110,0,0,1116,1117,5,108,0,0,1117,1118,5,121,0,0,1118,1119,5,70, - 0,0,1119,1120,5,111,0,0,1120,1121,5,114,0,0,1121,1122,5,68,0,0,1122, - 1123,5,101,0,0,1123,1124,5,112,0,0,1124,1125,5,108,0,0,1125,1126, - 5,111,0,0,1126,1127,5,121,0,0,1127,1128,5,109,0,0,1128,1129,5,101, - 0,0,1129,1130,5,110,0,0,1130,1131,5,116,0,0,1131,1132,5,80,0,0,1132, - 1133,5,111,0,0,1133,1134,5,115,0,0,1134,1135,5,116,0,0,1135,1136, - 5,112,0,0,1136,1137,5,114,0,0,1137,1138,5,111,0,0,1138,1139,5,99, - 0,0,1139,1140,5,101,0,0,1140,1141,5,115,0,0,1141,1142,5,115,0,0, - 1142,1143,5,105,0,0,1143,1144,5,110,0,0,1144,1145,5,103,0,0,1145, - 114,1,0,0,0,1146,1147,5,40,0,0,1147,116,1,0,0,0,1148,1149,5,44,0, - 0,1149,118,1,0,0,0,1150,1151,5,41,0,0,1151,120,1,0,0,0,1152,1153, - 5,98,0,0,1153,1154,5,117,0,0,1154,1155,5,105,0,0,1155,1156,5,108, - 0,0,1156,1157,5,100,0,0,1157,1158,5,67,0,0,1158,1159,5,111,0,0,1159, - 1160,5,110,0,0,1160,1161,5,102,0,0,1161,1162,5,105,0,0,1162,1163, - 5,103,0,0,1163,1164,5,117,0,0,1164,1165,5,114,0,0,1165,1166,5,97, - 0,0,1166,1167,5,116,0,0,1167,1168,5,105,0,0,1168,1169,5,111,0,0, - 1169,1170,5,110,0,0,1170,1171,5,76,0,0,1171,1172,5,105,0,0,1172, - 1173,5,115,0,0,1173,1174,5,116,0,0,1174,122,1,0,0,0,1175,1176,5, - 98,0,0,1176,1177,5,117,0,0,1177,1178,5,105,0,0,1178,1179,5,108,0, - 0,1179,1180,5,100,0,0,1180,1181,5,80,0,0,1181,1182,5,104,0,0,1182, - 1183,5,97,0,0,1183,1184,5,115,0,0,1184,1185,5,101,0,0,1185,1186, - 5,115,0,0,1186,124,1,0,0,0,1187,1188,5,98,0,0,1188,1189,5,117,0, - 0,1189,1190,5,105,0,0,1190,1191,5,108,0,0,1191,1192,5,100,0,0,1192, - 1193,5,82,0,0,1193,1194,5,117,0,0,1194,1195,5,108,0,0,1195,1196, - 5,101,0,0,1196,1197,5,115,0,0,1197,126,1,0,0,0,1198,1199,5,98,0, - 0,1199,1200,5,117,0,0,1200,1201,5,105,0,0,1201,1202,5,108,0,0,1202, - 1203,5,100,0,0,1203,1204,5,65,0,0,1204,1205,5,114,0,0,1205,1206, - 5,103,0,0,1206,1207,5,117,0,0,1207,1208,5,109,0,0,1208,1209,5,101, - 0,0,1209,1210,5,110,0,0,1210,1211,5,116,0,0,1211,1212,5,115,0,0, - 1212,1213,5,83,0,0,1213,1214,5,116,0,0,1214,1215,5,114,0,0,1215, - 1216,5,105,0,0,1216,1217,5,110,0,0,1217,1218,5,103,0,0,1218,128, - 1,0,0,0,1219,1220,5,98,0,0,1220,1221,5,117,0,0,1221,1222,5,105,0, - 0,1222,1223,5,108,0,0,1223,1224,5,100,0,0,1224,1225,5,84,0,0,1225, - 1226,5,111,0,0,1226,1227,5,111,0,0,1227,1228,5,108,0,0,1228,1229, - 5,80,0,0,1229,1230,5,97,0,0,1230,1231,5,116,0,0,1231,1232,5,104, - 0,0,1232,130,1,0,0,0,1233,1234,5,98,0,0,1234,1235,5,117,0,0,1235, - 1236,5,105,0,0,1236,1237,5,108,0,0,1237,1238,5,100,0,0,1238,1239, - 5,87,0,0,1239,1240,5,111,0,0,1240,1241,5,114,0,0,1241,1242,5,107, - 0,0,1242,1243,5,105,0,0,1243,1244,5,110,0,0,1244,1245,5,103,0,0, - 1245,1246,5,68,0,0,1246,1247,5,105,0,0,1247,1248,5,114,0,0,1248, - 1249,5,101,0,0,1249,1250,5,99,0,0,1250,1251,5,116,0,0,1251,1252, - 5,111,0,0,1252,1253,5,114,0,0,1253,1254,5,121,0,0,1254,132,1,0,0, - 0,1255,1256,5,112,0,0,1256,1257,5,97,0,0,1257,1258,5,115,0,0,1258, - 1259,5,115,0,0,1259,1260,5,66,0,0,1260,1261,5,117,0,0,1261,1262, - 5,105,0,0,1262,1263,5,108,0,0,1263,1264,5,100,0,0,1264,1265,5,83, - 0,0,1265,1266,5,101,0,0,1266,1267,5,116,0,0,1267,1268,5,116,0,0, - 1268,1269,5,105,0,0,1269,1270,5,110,0,0,1270,1271,5,103,0,0,1271, - 1272,5,115,0,0,1272,1273,5,73,0,0,1273,1274,5,110,0,0,1274,1275, - 5,69,0,0,1275,1276,5,110,0,0,1276,1277,5,118,0,0,1277,1278,5,105, - 0,0,1278,1279,5,114,0,0,1279,1280,5,111,0,0,1280,1281,5,110,0,0, - 1281,1282,5,109,0,0,1282,1283,5,101,0,0,1283,1284,5,110,0,0,1284, - 1285,5,116,0,0,1285,134,1,0,0,0,1286,1287,5,100,0,0,1287,1288,5, - 101,0,0,1288,1289,5,112,0,0,1289,1290,5,101,0,0,1290,1291,5,110, - 0,0,1291,1292,5,100,0,0,1292,1293,5,101,0,0,1293,1294,5,110,0,0, - 1294,1295,5,99,0,0,1295,1296,5,105,0,0,1296,1297,5,101,0,0,1297, - 1298,5,115,0,0,1298,136,1,0,0,0,1299,1300,5,112,0,0,1300,1301,5, - 114,0,0,1301,1302,5,111,0,0,1302,1303,5,100,0,0,1303,1304,5,117, - 0,0,1304,1305,5,99,0,0,1305,1306,5,116,0,0,1306,1307,5,78,0,0,1307, - 1308,5,97,0,0,1308,1309,5,109,0,0,1309,1310,5,101,0,0,1310,138,1, - 0,0,0,1311,1312,5,112,0,0,1312,1313,5,114,0,0,1313,1314,5,111,0, - 0,1314,1315,5,100,0,0,1315,1316,5,117,0,0,1316,1317,5,99,0,0,1317, - 1318,5,116,0,0,1318,1319,5,82,0,0,1319,1320,5,101,0,0,1320,1321, - 5,102,0,0,1321,1322,5,101,0,0,1322,1323,5,114,0,0,1323,1324,5,101, - 0,0,1324,1325,5,110,0,0,1325,1326,5,99,0,0,1326,1327,5,101,0,0,1327, - 140,1,0,0,0,1328,1329,5,112,0,0,1329,1330,5,114,0,0,1330,1331,5, - 111,0,0,1331,1332,5,100,0,0,1332,1333,5,117,0,0,1333,1334,5,99,0, - 0,1334,1335,5,116,0,0,1335,1336,5,84,0,0,1336,1337,5,121,0,0,1337, - 1338,5,112,0,0,1338,1339,5,101,0,0,1339,142,1,0,0,0,1340,1341,5, - 108,0,0,1341,1342,5,105,0,0,1342,1343,5,110,0,0,1343,1344,5,101, - 0,0,1344,1345,5,69,0,0,1345,1346,5,110,0,0,1346,1347,5,100,0,0,1347, - 1348,5,105,0,0,1348,1349,5,110,0,0,1349,1350,5,103,0,0,1350,144, - 1,0,0,0,1351,1352,5,120,0,0,1352,1353,5,99,0,0,1353,1354,5,76,0, - 0,1354,1355,5,97,0,0,1355,1356,5,110,0,0,1356,1357,5,103,0,0,1357, - 1358,5,117,0,0,1358,1359,5,97,0,0,1359,1360,5,103,0,0,1360,1361, - 5,101,0,0,1361,1362,5,83,0,0,1362,1363,5,112,0,0,1363,1364,5,101, - 0,0,1364,1365,5,99,0,0,1365,1366,5,105,0,0,1366,1367,5,102,0,0,1367, - 1368,5,105,0,0,1368,1369,5,99,0,0,1369,1370,5,97,0,0,1370,1371,5, - 116,0,0,1371,1372,5,105,0,0,1372,1373,5,111,0,0,1373,1374,5,110, - 0,0,1374,1375,5,73,0,0,1375,1376,5,100,0,0,1376,1377,5,101,0,0,1377, - 1378,5,110,0,0,1378,1379,5,116,0,0,1379,1380,5,105,0,0,1380,1381, - 5,102,0,0,1381,1382,5,105,0,0,1382,1383,5,101,0,0,1383,1384,5,114, - 0,0,1384,146,1,0,0,0,1385,1386,5,112,0,0,1386,1387,5,108,0,0,1387, - 1388,5,105,0,0,1388,1389,5,115,0,0,1389,1390,5,116,0,0,1390,1391, - 5,83,0,0,1391,1392,5,116,0,0,1392,1393,5,114,0,0,1393,1394,5,117, - 0,0,1394,1395,5,99,0,0,1395,1396,5,116,0,0,1396,1397,5,117,0,0,1397, - 1398,5,114,0,0,1398,1399,5,101,0,0,1399,1400,5,68,0,0,1400,1401, - 5,101,0,0,1401,1402,5,102,0,0,1402,1403,5,105,0,0,1403,1404,5,110, - 0,0,1404,1405,5,105,0,0,1405,1406,5,116,0,0,1406,1407,5,105,0,0, - 1407,1408,5,111,0,0,1408,1409,5,110,0,0,1409,1410,5,73,0,0,1410, - 1411,5,100,0,0,1411,1412,5,101,0,0,1412,1413,5,110,0,0,1413,1414, - 5,116,0,0,1414,1415,5,105,0,0,1415,1416,5,102,0,0,1416,1417,5,105, - 0,0,1417,1418,5,101,0,0,1418,1419,5,114,0,0,1419,148,1,0,0,0,1420, - 1421,5,97,0,0,1421,1422,5,116,0,0,1422,1423,5,116,0,0,1423,1424, - 5,114,0,0,1424,1425,5,105,0,0,1425,1426,5,98,0,0,1426,1427,5,117, - 0,0,1427,1428,5,116,0,0,1428,1429,5,101,0,0,1429,1430,5,115,0,0, - 1430,150,1,0,0,0,1431,1432,5,76,0,0,1432,1433,5,97,0,0,1433,1434, - 5,115,0,0,1434,1435,5,116,0,0,1435,1436,5,83,0,0,1436,1437,5,119, - 0,0,1437,1438,5,105,0,0,1438,1439,5,102,0,0,1439,1440,5,116,0,0, - 1440,1441,5,77,0,0,1441,1442,5,105,0,0,1442,1443,5,103,0,0,1443, - 1444,5,114,0,0,1444,1445,5,97,0,0,1445,1446,5,116,0,0,1446,1447, - 5,105,0,0,1447,1448,5,111,0,0,1448,1449,5,110,0,0,1449,152,1,0,0, - 0,1450,1451,5,68,0,0,1451,1452,5,101,0,0,1452,1453,5,102,0,0,1453, - 1454,5,97,0,0,1454,1455,5,117,0,0,1455,1456,5,108,0,0,1456,1457, - 5,116,0,0,1457,1458,5,66,0,0,1458,1459,5,117,0,0,1459,1460,5,105, - 0,0,1460,1461,5,108,0,0,1461,1462,5,100,0,0,1462,1463,5,83,0,0,1463, - 1464,5,121,0,0,1464,1465,5,115,0,0,1465,1466,5,116,0,0,1466,1467, - 5,101,0,0,1467,1468,5,109,0,0,1468,1469,5,84,0,0,1469,1470,5,121, - 0,0,1470,1471,5,112,0,0,1471,1472,5,101,0,0,1472,1473,5,70,0,0,1473, - 1474,5,111,0,0,1474,1475,5,114,0,0,1475,1476,5,87,0,0,1476,1477, - 5,111,0,0,1477,1478,5,114,0,0,1478,1479,5,107,0,0,1479,1480,5,115, - 0,0,1480,1481,5,112,0,0,1481,1482,5,97,0,0,1482,1483,5,99,0,0,1483, - 1484,5,101,0,0,1484,154,1,0,0,0,1485,1486,5,76,0,0,1486,1487,5,97, - 0,0,1487,1488,5,115,0,0,1488,1489,5,116,0,0,1489,1490,5,83,0,0,1490, - 1491,5,119,0,0,1491,1492,5,105,0,0,1492,1493,5,102,0,0,1493,1494, - 5,116,0,0,1494,1495,5,85,0,0,1495,1496,5,112,0,0,1496,1497,5,100, - 0,0,1497,1498,5,97,0,0,1498,1499,5,116,0,0,1499,1500,5,101,0,0,1500, - 1501,5,67,0,0,1501,1502,5,104,0,0,1502,1503,5,101,0,0,1503,1504, - 5,99,0,0,1504,1505,5,107,0,0,1505,156,1,0,0,0,1506,1507,5,66,0,0, - 1507,1508,5,117,0,0,1508,1509,5,105,0,0,1509,1510,5,108,0,0,1510, - 1511,5,100,0,0,1511,1512,5,73,0,0,1512,1513,5,110,0,0,1513,1514, - 5,100,0,0,1514,1515,5,101,0,0,1515,1516,5,112,0,0,1516,1517,5,101, - 0,0,1517,1518,5,110,0,0,1518,1519,5,100,0,0,1519,1520,5,101,0,0, - 1520,1521,5,110,0,0,1521,1522,5,116,0,0,1522,1523,5,84,0,0,1523, - 1524,5,97,0,0,1524,1525,5,114,0,0,1525,1526,5,103,0,0,1526,1527, - 5,101,0,0,1527,1528,5,116,0,0,1528,1529,5,115,0,0,1529,1530,5,73, - 0,0,1530,1531,5,110,0,0,1531,1532,5,80,0,0,1532,1533,5,97,0,0,1533, - 1534,5,114,0,0,1534,1535,5,97,0,0,1535,1536,5,108,0,0,1536,1537, - 5,108,0,0,1537,1538,5,101,0,0,1538,1539,5,108,0,0,1539,158,1,0,0, - 0,1540,1541,5,76,0,0,1541,1542,5,97,0,0,1542,1543,5,115,0,0,1543, - 1544,5,116,0,0,1544,1545,5,84,0,0,1545,1546,5,101,0,0,1546,1547, - 5,115,0,0,1547,1548,5,116,0,0,1548,1549,5,105,0,0,1549,1550,5,110, - 0,0,1550,1551,5,103,0,0,1551,1552,5,85,0,0,1552,1553,5,112,0,0,1553, - 1554,5,103,0,0,1554,1555,5,114,0,0,1555,1556,5,97,0,0,1556,1557, - 5,100,0,0,1557,1558,5,101,0,0,1558,1559,5,67,0,0,1559,1560,5,104, - 0,0,1560,1561,5,101,0,0,1561,1562,5,99,0,0,1562,1563,5,107,0,0,1563, - 160,1,0,0,0,1564,1565,5,76,0,0,1565,1566,5,97,0,0,1566,1567,5,115, - 0,0,1567,1568,5,116,0,0,1568,1569,5,85,0,0,1569,1570,5,112,0,0,1570, - 1571,5,103,0,0,1571,1572,5,114,0,0,1572,1573,5,97,0,0,1573,1574, - 5,100,0,0,1574,1575,5,101,0,0,1575,1576,5,67,0,0,1576,1577,5,104, - 0,0,1577,1578,5,101,0,0,1578,1579,5,99,0,0,1579,1580,5,107,0,0,1580, - 162,1,0,0,0,1581,1582,5,79,0,0,1582,1583,5,82,0,0,1583,1584,5,71, - 0,0,1584,1585,5,65,0,0,1585,1586,5,78,0,0,1586,1587,5,73,0,0,1587, - 1588,5,90,0,0,1588,1589,5,65,0,0,1589,1590,5,84,0,0,1590,1591,5, - 73,0,0,1591,1592,5,79,0,0,1592,1593,5,78,0,0,1593,1594,5,78,0,0, - 1594,1595,5,65,0,0,1595,1596,5,77,0,0,1596,1597,5,69,0,0,1597,164, - 1,0,0,0,1598,1599,5,84,0,0,1599,1600,5,97,0,0,1600,1601,5,114,0, - 0,1601,1602,5,103,0,0,1602,1603,5,101,0,0,1603,1604,5,116,0,0,1604, - 1605,5,65,0,0,1605,1606,5,116,0,0,1606,1607,5,116,0,0,1607,1608, - 5,114,0,0,1608,1609,5,105,0,0,1609,1610,5,98,0,0,1610,1611,5,117, - 0,0,1611,1612,5,116,0,0,1612,1613,5,101,0,0,1613,1614,5,115,0,0, - 1614,166,1,0,0,0,1615,1616,5,67,0,0,1616,1617,5,114,0,0,1617,1618, - 5,101,0,0,1618,1619,5,97,0,0,1619,1620,5,116,0,0,1620,1621,5,101, - 0,0,1621,1622,5,100,0,0,1622,1623,5,79,0,0,1623,1624,5,110,0,0,1624, - 1625,5,84,0,0,1625,1626,5,111,0,0,1626,1627,5,111,0,0,1627,1628, - 5,108,0,0,1628,1629,5,115,0,0,1629,1630,5,86,0,0,1630,1631,5,101, - 0,0,1631,1632,5,114,0,0,1632,1633,5,115,0,0,1633,1634,5,105,0,0, - 1634,1635,5,111,0,0,1635,1636,5,110,0,0,1636,168,1,0,0,0,1637,1638, - 5,84,0,0,1638,1639,5,101,0,0,1639,1640,5,115,0,0,1640,1641,5,116, - 0,0,1641,1642,5,84,0,0,1642,1643,5,97,0,0,1643,1644,5,114,0,0,1644, - 1645,5,103,0,0,1645,1646,5,101,0,0,1646,1647,5,116,0,0,1647,1648, - 5,73,0,0,1648,1649,5,68,0,0,1649,170,1,0,0,0,1650,1651,5,68,0,0, - 1651,1652,5,101,0,0,1652,1653,5,118,0,0,1653,1654,5,101,0,0,1654, - 1655,5,108,0,0,1655,1656,5,111,0,0,1656,1657,5,112,0,0,1657,1658, - 5,109,0,0,1658,1659,5,101,0,0,1659,1660,5,110,0,0,1660,1661,5,116, - 0,0,1661,1662,5,84,0,0,1662,1663,5,101,0,0,1663,1664,5,97,0,0,1664, - 1665,5,109,0,0,1665,172,1,0,0,0,1666,1667,5,68,0,0,1667,1668,5,101, - 0,0,1668,1669,5,118,0,0,1669,1670,5,101,0,0,1670,1671,5,108,0,0, - 1671,1672,5,111,0,0,1672,1673,5,112,0,0,1673,1674,5,109,0,0,1674, - 1675,5,101,0,0,1675,1676,5,110,0,0,1676,1677,5,116,0,0,1677,1678, - 5,84,0,0,1678,1679,5,101,0,0,1679,1680,5,97,0,0,1680,1681,5,109, - 0,0,1681,1682,5,78,0,0,1682,1683,5,97,0,0,1683,1684,5,109,0,0,1684, - 1685,5,101,0,0,1685,174,1,0,0,0,1686,1687,5,80,0,0,1687,1688,5,114, - 0,0,1688,1689,5,111,0,0,1689,1690,5,118,0,0,1690,1691,5,105,0,0, - 1691,1692,5,115,0,0,1692,1693,5,105,0,0,1693,1694,5,111,0,0,1694, - 1695,5,110,0,0,1695,1696,5,105,0,0,1696,1697,5,110,0,0,1697,1698, - 5,103,0,0,1698,1699,5,83,0,0,1699,1700,5,116,0,0,1700,1701,5,121, - 0,0,1701,1702,5,108,0,0,1702,1703,5,101,0,0,1703,176,1,0,0,0,1704, - 1705,5,99,0,0,1705,1706,5,111,0,0,1706,1707,5,109,0,0,1707,1708, - 5,112,0,0,1708,1709,5,97,0,0,1709,1710,5,116,0,0,1710,1711,5,105, - 0,0,1711,1712,5,98,0,0,1712,1713,5,105,0,0,1713,1714,5,108,0,0,1714, - 1715,5,105,0,0,1715,1716,5,116,0,0,1716,1717,5,121,0,0,1717,1718, - 5,86,0,0,1718,1719,5,101,0,0,1719,1720,5,114,0,0,1720,1721,5,115, - 0,0,1721,1722,5,105,0,0,1722,1723,5,111,0,0,1723,1724,5,110,0,0, - 1724,178,1,0,0,0,1725,1726,5,100,0,0,1726,1727,5,101,0,0,1727,1728, - 5,118,0,0,1728,1729,5,101,0,0,1729,1730,5,108,0,0,1730,1731,5,111, - 0,0,1731,1732,5,112,0,0,1732,1733,5,109,0,0,1733,1734,5,101,0,0, - 1734,1735,5,110,0,0,1735,1736,5,116,0,0,1736,1737,5,82,0,0,1737, - 1738,5,101,0,0,1738,1739,5,103,0,0,1739,1740,5,105,0,0,1740,1741, - 5,111,0,0,1741,1742,5,110,0,0,1742,180,1,0,0,0,1743,1744,5,104,0, - 0,1744,1745,5,97,0,0,1745,1746,5,115,0,0,1746,1747,5,83,0,0,1747, - 1748,5,99,0,0,1748,1749,5,97,0,0,1749,1750,5,110,0,0,1750,1751,5, - 110,0,0,1751,1752,5,101,0,0,1752,1753,5,100,0,0,1753,1754,5,70,0, - 0,1754,1755,5,111,0,0,1755,1756,5,114,0,0,1756,1757,5,69,0,0,1757, - 1758,5,110,0,0,1758,1759,5,99,0,0,1759,1760,5,111,0,0,1760,1761, - 5,100,0,0,1761,1762,5,105,0,0,1762,1763,5,110,0,0,1763,1764,5,103, - 0,0,1764,1765,5,115,0,0,1765,182,1,0,0,0,1766,1767,5,107,0,0,1767, - 1768,5,110,0,0,1768,1769,5,111,0,0,1769,1770,5,119,0,0,1770,1771, - 5,110,0,0,1771,1772,5,82,0,0,1772,1773,5,101,0,0,1773,1774,5,103, - 0,0,1774,1775,5,105,0,0,1775,1776,5,111,0,0,1776,1777,5,110,0,0, - 1777,1778,5,115,0,0,1778,184,1,0,0,0,1779,1780,5,109,0,0,1780,1781, - 5,97,0,0,1781,1782,5,105,0,0,1782,1783,5,110,0,0,1783,1784,5,71, - 0,0,1784,1785,5,114,0,0,1785,1786,5,111,0,0,1786,1787,5,117,0,0, - 1787,1788,5,112,0,0,1788,186,1,0,0,0,1789,1790,5,112,0,0,1790,1791, - 5,114,0,0,1791,1792,5,111,0,0,1792,1793,5,100,0,0,1793,1794,5,117, - 0,0,1794,1795,5,99,0,0,1795,1796,5,116,0,0,1796,1797,5,82,0,0,1797, - 1798,5,101,0,0,1798,1799,5,102,0,0,1799,1800,5,71,0,0,1800,1801, - 5,114,0,0,1801,1802,5,111,0,0,1802,1803,5,117,0,0,1803,1804,5,112, - 0,0,1804,188,1,0,0,0,1805,1806,5,112,0,0,1806,1807,5,97,0,0,1807, - 1808,5,99,0,0,1808,1809,5,107,0,0,1809,1810,5,97,0,0,1810,1811,5, - 103,0,0,1811,1812,5,101,0,0,1812,1813,5,82,0,0,1813,1814,5,101,0, - 0,1814,1815,5,102,0,0,1815,1816,5,101,0,0,1816,1817,5,114,0,0,1817, - 1818,5,101,0,0,1818,1819,5,110,0,0,1819,1820,5,99,0,0,1820,1821, - 5,101,0,0,1821,1822,5,115,0,0,1822,190,1,0,0,0,1823,1824,5,112,0, - 0,1824,1825,5,114,0,0,1825,1826,5,111,0,0,1826,1827,5,106,0,0,1827, - 1828,5,101,0,0,1828,1829,5,99,0,0,1829,1830,5,116,0,0,1830,1831, - 5,68,0,0,1831,1832,5,105,0,0,1832,1833,5,114,0,0,1833,1834,5,80, - 0,0,1834,1835,5,97,0,0,1835,1836,5,116,0,0,1836,1837,5,104,0,0,1837, - 192,1,0,0,0,1838,1839,5,112,0,0,1839,1840,5,114,0,0,1840,1841,5, - 111,0,0,1841,1842,5,106,0,0,1842,1843,5,101,0,0,1843,1844,5,99,0, - 0,1844,1845,5,116,0,0,1845,1846,5,82,0,0,1846,1847,5,101,0,0,1847, - 1848,5,102,0,0,1848,1849,5,101,0,0,1849,1850,5,114,0,0,1850,1851, - 5,101,0,0,1851,1852,5,110,0,0,1852,1853,5,99,0,0,1853,1854,5,101, - 0,0,1854,1855,5,115,0,0,1855,194,1,0,0,0,1856,1857,5,112,0,0,1857, - 1858,5,114,0,0,1858,1859,5,111,0,0,1859,1860,5,106,0,0,1860,1861, - 5,101,0,0,1861,1862,5,99,0,0,1862,1863,5,116,0,0,1863,1864,5,82, - 0,0,1864,1865,5,111,0,0,1865,1866,5,111,0,0,1866,1867,5,116,0,0, - 1867,196,1,0,0,0,1868,1869,5,116,0,0,1869,1870,5,97,0,0,1870,1871, - 5,114,0,0,1871,1872,5,103,0,0,1872,1873,5,101,0,0,1873,1874,5,116, - 0,0,1874,1875,5,115,0,0,1875,198,1,0,0,0,1876,1877,5,105,0,0,1877, - 1878,5,110,0,0,1878,1879,5,112,0,0,1879,1880,5,117,0,0,1880,1881, - 5,116,0,0,1881,1882,5,70,0,0,1882,1883,5,105,0,0,1883,1884,5,108, - 0,0,1884,1885,5,101,0,0,1885,1886,5,76,0,0,1886,1887,5,105,0,0,1887, - 1888,5,115,0,0,1888,1889,5,116,0,0,1889,1890,5,80,0,0,1890,1891, - 5,97,0,0,1891,1892,5,116,0,0,1892,1893,5,104,0,0,1893,1894,5,115, - 0,0,1894,200,1,0,0,0,1895,1896,5,105,0,0,1896,1897,5,110,0,0,1897, - 1898,5,112,0,0,1898,1899,5,117,0,0,1899,1900,5,116,0,0,1900,1901, - 5,80,0,0,1901,1902,5,97,0,0,1902,1903,5,116,0,0,1903,1904,5,104, - 0,0,1904,1905,5,115,0,0,1905,202,1,0,0,0,1906,1907,5,111,0,0,1907, - 1908,5,117,0,0,1908,1909,5,116,0,0,1909,1910,5,112,0,0,1910,1911, - 5,117,0,0,1911,1912,5,116,0,0,1912,1913,5,70,0,0,1913,1914,5,105, - 0,0,1914,1915,5,108,0,0,1915,1916,5,101,0,0,1916,1917,5,76,0,0,1917, - 1918,5,105,0,0,1918,1919,5,115,0,0,1919,1920,5,116,0,0,1920,1921, - 5,80,0,0,1921,1922,5,97,0,0,1922,1923,5,116,0,0,1923,1924,5,104, - 0,0,1924,1925,5,115,0,0,1925,204,1,0,0,0,1926,1927,5,111,0,0,1927, - 1928,5,117,0,0,1928,1929,5,116,0,0,1929,1930,5,112,0,0,1930,1931, - 5,117,0,0,1931,1932,5,116,0,0,1932,1933,5,80,0,0,1933,1934,5,97, - 0,0,1934,1935,5,116,0,0,1935,1936,5,104,0,0,1936,1937,5,115,0,0, - 1937,206,1,0,0,0,1938,1939,5,115,0,0,1939,1940,5,104,0,0,1940,1941, - 5,101,0,0,1941,1942,5,108,0,0,1942,1943,5,108,0,0,1943,1944,5,80, - 0,0,1944,1945,5,97,0,0,1945,1946,5,116,0,0,1946,1947,5,104,0,0,1947, - 208,1,0,0,0,1948,1949,5,115,0,0,1949,1950,5,104,0,0,1950,1951,5, - 101,0,0,1951,1952,5,108,0,0,1952,1953,5,108,0,0,1953,1954,5,83,0, - 0,1954,1955,5,99,0,0,1955,1956,5,114,0,0,1956,1957,5,105,0,0,1957, - 1958,5,112,0,0,1958,1959,5,116,0,0,1959,210,1,0,0,0,1960,1961,5, - 115,0,0,1961,1962,5,104,0,0,1962,1963,5,111,0,0,1963,1964,5,119, - 0,0,1964,1965,5,69,0,0,1965,1966,5,110,0,0,1966,1967,5,118,0,0,1967, - 1968,5,86,0,0,1968,1969,5,97,0,0,1969,1970,5,114,0,0,1970,1971,5, - 115,0,0,1971,1972,5,73,0,0,1972,1973,5,110,0,0,1973,1974,5,76,0, - 0,1974,1975,5,111,0,0,1975,1976,5,103,0,0,1976,212,1,0,0,0,1977, - 1978,5,116,0,0,1978,1979,5,97,0,0,1979,1980,5,114,0,0,1980,1981, - 5,103,0,0,1981,1982,5,101,0,0,1982,1983,5,116,0,0,1983,214,1,0,0, - 0,1984,1985,5,116,0,0,1985,1986,5,97,0,0,1986,1987,5,114,0,0,1987, - 1988,5,103,0,0,1988,1989,5,101,0,0,1989,1990,5,116,0,0,1990,1991, - 5,80,0,0,1991,1992,5,114,0,0,1992,1993,5,111,0,0,1993,1994,5,120, - 0,0,1994,1995,5,121,0,0,1995,216,1,0,0,0,1996,1997,5,102,0,0,1997, - 1998,5,105,0,0,1998,1999,5,108,0,0,1999,2000,5,101,0,0,2000,2001, - 5,84,0,0,2001,2002,5,121,0,0,2002,2003,5,112,0,0,2003,2004,5,101, - 0,0,2004,218,1,0,0,0,2005,2006,5,114,0,0,2006,2007,5,101,0,0,2007, - 2008,5,109,0,0,2008,2009,5,111,0,0,2009,2010,5,116,0,0,2010,2011, - 5,101,0,0,2011,2012,5,82,0,0,2012,2013,5,101,0,0,2013,2014,5,102, - 0,0,2014,220,1,0,0,0,2015,2016,5,98,0,0,2016,2017,5,97,0,0,2017, - 2018,5,115,0,0,2018,2019,5,101,0,0,2019,2020,5,67,0,0,2020,2021, - 5,111,0,0,2021,2022,5,110,0,0,2022,2023,5,102,0,0,2023,2024,5,105, - 0,0,2024,2025,5,103,0,0,2025,2026,5,117,0,0,2026,2027,5,114,0,0, - 2027,2028,5,97,0,0,2028,2029,5,116,0,0,2029,2030,5,105,0,0,2030, - 2031,5,111,0,0,2031,2032,5,110,0,0,2032,2033,5,82,0,0,2033,2034, - 5,101,0,0,2034,2035,5,102,0,0,2035,2036,5,101,0,0,2036,2037,5,114, - 0,0,2037,2038,5,101,0,0,2038,2039,5,110,0,0,2039,2040,5,99,0,0,2040, - 2041,5,101,0,0,2041,222,1,0,0,0,2042,2043,5,98,0,0,2043,2044,5,117, - 0,0,2044,2045,5,105,0,0,2045,2046,5,108,0,0,2046,2047,5,100,0,0, - 2047,2048,5,83,0,0,2048,2049,5,101,0,0,2049,2050,5,116,0,0,2050, - 2051,5,116,0,0,2051,2052,5,105,0,0,2052,2053,5,110,0,0,2053,2054, - 5,103,0,0,2054,2055,5,115,0,0,2055,224,1,0,0,0,2056,2057,5,100,0, - 0,2057,2058,5,115,0,0,2058,2059,5,116,0,0,2059,2060,5,80,0,0,2060, - 2061,5,97,0,0,2061,2062,5,116,0,0,2062,2063,5,104,0,0,2063,226,1, - 0,0,0,2064,2065,5,100,0,0,2065,2066,5,115,0,0,2066,2067,5,116,0, - 0,2067,2068,5,83,0,0,2068,2069,5,117,0,0,2069,2070,5,98,0,0,2070, - 2071,5,102,0,0,2071,2072,5,111,0,0,2072,2073,5,108,0,0,2073,2074, - 5,100,0,0,2074,2075,5,101,0,0,2075,2076,5,114,0,0,2076,2077,5,83, - 0,0,2077,2078,5,112,0,0,2078,2079,5,101,0,0,2079,2080,5,99,0,0,2080, - 228,1,0,0,0,2081,2082,5,80,0,0,2082,2083,5,114,0,0,2083,2084,5,111, - 0,0,2084,2085,5,100,0,0,2085,2086,5,117,0,0,2086,2087,5,99,0,0,2087, - 2088,5,116,0,0,2088,2089,5,71,0,0,2089,2090,5,114,0,0,2090,2091, - 5,111,0,0,2091,2092,5,117,0,0,2092,2093,5,112,0,0,2093,230,1,0,0, - 0,2094,2095,5,80,0,0,2095,2096,5,114,0,0,2096,2097,5,111,0,0,2097, - 2098,5,106,0,0,2098,2099,5,101,0,0,2099,2100,5,99,0,0,2100,2101, - 5,116,0,0,2101,2102,5,82,0,0,2102,2103,5,101,0,0,2103,2104,5,102, - 0,0,2104,232,1,0,0,0,2105,2106,5,98,0,0,2106,2107,5,117,0,0,2107, - 2108,5,105,0,0,2108,2109,5,108,0,0,2109,2110,5,100,0,0,2110,2111, - 5,67,0,0,2111,2112,5,111,0,0,2112,2113,5,110,0,0,2113,2114,5,102, - 0,0,2114,2115,5,105,0,0,2115,2116,5,103,0,0,2116,2117,5,117,0,0, - 2117,2118,5,114,0,0,2118,2119,5,97,0,0,2119,2120,5,116,0,0,2120, - 2121,5,105,0,0,2121,2122,5,111,0,0,2122,2123,5,110,0,0,2123,2124, - 5,115,0,0,2124,234,1,0,0,0,2125,2126,5,100,0,0,2126,2127,5,101,0, - 0,2127,2128,5,102,0,0,2128,2129,5,97,0,0,2129,2130,5,117,0,0,2130, - 2131,5,108,0,0,2131,2132,5,116,0,0,2132,2133,5,67,0,0,2133,2134, - 5,111,0,0,2134,2135,5,110,0,0,2135,2136,5,102,0,0,2136,2137,5,105, - 0,0,2137,2138,5,103,0,0,2138,2139,5,117,0,0,2139,2140,5,114,0,0, - 2140,2141,5,97,0,0,2141,2142,5,116,0,0,2142,2143,5,105,0,0,2143, - 2144,5,111,0,0,2144,2145,5,110,0,0,2145,2146,5,73,0,0,2146,2147, - 5,115,0,0,2147,2148,5,86,0,0,2148,2149,5,105,0,0,2149,2150,5,115, - 0,0,2150,2151,5,105,0,0,2151,2152,5,98,0,0,2152,2153,5,108,0,0,2153, - 2154,5,101,0,0,2154,236,1,0,0,0,2155,2156,5,100,0,0,2156,2157,5, - 101,0,0,2157,2158,5,102,0,0,2158,2159,5,97,0,0,2159,2160,5,117,0, - 0,2160,2161,5,108,0,0,2161,2162,5,116,0,0,2162,2163,5,67,0,0,2163, - 2164,5,111,0,0,2164,2165,5,110,0,0,2165,2166,5,102,0,0,2166,2167, - 5,105,0,0,2167,2168,5,103,0,0,2168,2169,5,117,0,0,2169,2170,5,114, - 0,0,2170,2171,5,97,0,0,2171,2172,5,116,0,0,2172,2173,5,105,0,0,2173, - 2174,5,111,0,0,2174,2175,5,110,0,0,2175,2176,5,78,0,0,2176,2177, - 5,97,0,0,2177,2178,5,109,0,0,2178,2179,5,101,0,0,2179,238,1,0,0, - 0,2180,2181,5,115,0,0,2181,2182,5,101,0,0,2182,2183,5,116,0,0,2183, - 2184,5,116,0,0,2184,2185,5,105,0,0,2185,2186,5,110,0,0,2186,2187, - 5,103,0,0,2187,2188,5,115,0,0,2188,240,1,0,0,0,2189,2190,5,83,0, - 0,2190,2191,5,121,0,0,2191,2192,5,115,0,0,2192,2193,5,116,0,0,2193, - 2194,5,101,0,0,2194,2195,5,109,0,0,2195,2196,5,67,0,0,2196,2197, - 5,97,0,0,2197,2198,5,112,0,0,2198,2199,5,97,0,0,2199,2200,5,98,0, - 0,2200,2201,5,105,0,0,2201,2202,5,108,0,0,2202,2203,5,105,0,0,2203, - 2204,5,116,0,0,2204,2205,5,105,0,0,2205,2206,5,101,0,0,2206,2207, - 5,115,0,0,2207,242,1,0,0,0,2208,2209,5,99,0,0,2209,2210,5,117,0, - 0,2210,2211,5,114,0,0,2211,2212,5,114,0,0,2212,2213,5,101,0,0,2213, - 2214,5,110,0,0,2214,2215,5,116,0,0,2215,2216,5,86,0,0,2216,2217, - 5,101,0,0,2217,2218,5,114,0,0,2218,2219,5,115,0,0,2219,2220,5,105, - 0,0,2220,2221,5,111,0,0,2221,2222,5,110,0,0,2222,244,1,0,0,0,2223, - 2224,5,118,0,0,2224,2225,5,101,0,0,2225,2226,5,114,0,0,2226,2227, - 5,115,0,0,2227,2228,5,105,0,0,2228,2229,5,111,0,0,2229,2230,5,110, - 0,0,2230,2231,5,71,0,0,2231,2232,5,114,0,0,2232,2233,5,111,0,0,2233, - 2234,5,117,0,0,2234,2235,5,112,0,0,2235,2236,5,84,0,0,2236,2237, - 5,121,0,0,2237,2238,5,112,0,0,2238,2239,5,101,0,0,2239,246,1,0,0, - 0,2240,2241,5,67,0,0,2241,2242,5,76,0,0,2242,2243,5,65,0,0,2243, - 2244,5,83,0,0,2244,2245,5,83,0,0,2245,2246,5,80,0,0,2246,2247,5, - 82,0,0,2247,2248,5,69,0,0,2248,2249,5,70,0,0,2249,2250,5,73,0,0, - 2250,2251,5,88,0,0,2251,248,1,0,0,0,2252,2253,5,99,0,0,2253,2254, - 5,108,0,0,2254,2255,5,97,0,0,2255,2256,5,115,0,0,2256,2257,5,115, - 0,0,2257,2258,5,101,0,0,2258,2259,5,115,0,0,2259,250,1,0,0,0,2260, - 2261,5,105,0,0,2261,2262,5,115,0,0,2262,2263,5,97,0,0,2263,252,1, - 0,0,0,2264,2265,5,111,0,0,2265,2266,5,98,0,0,2266,2267,5,106,0,0, - 2267,2268,5,101,0,0,2268,2269,5,99,0,0,2269,2270,5,116,0,0,2270, - 2271,5,115,0,0,2271,254,1,0,0,0,2272,2273,5,114,0,0,2273,2274,5, - 111,0,0,2274,2275,5,111,0,0,2275,2276,5,116,0,0,2276,2277,5,79,0, - 0,2277,2278,5,98,0,0,2278,2279,5,106,0,0,2279,2280,5,101,0,0,2280, - 2281,5,99,0,0,2281,2282,5,116,0,0,2282,256,1,0,0,0,2283,2285,7,0, - 0,0,2284,2283,1,0,0,0,2285,2286,1,0,0,0,2286,2284,1,0,0,0,2286,2287, - 1,0,0,0,2287,258,1,0,0,0,2288,2289,5,46,0,0,2289,260,1,0,0,0,2290, - 2291,5,45,0,0,2291,262,1,0,0,0,2292,2293,5,95,0,0,2293,264,1,0,0, - 0,2294,2295,5,47,0,0,2295,266,1,0,0,0,2296,2297,3,279,139,0,2297, - 2298,3,279,139,0,2298,2299,3,279,139,0,2299,2300,3,279,139,0,2300, - 2301,3,279,139,0,2301,2302,3,279,139,0,2302,2303,3,279,139,0,2303, - 2304,3,279,139,0,2304,2305,3,279,139,0,2305,2306,3,279,139,0,2306, - 2307,3,279,139,0,2307,2308,3,279,139,0,2308,2309,3,279,139,0,2309, - 2310,3,279,139,0,2310,2311,3,279,139,0,2311,2312,3,279,139,0,2312, - 2313,3,279,139,0,2313,2314,3,279,139,0,2314,2315,3,279,139,0,2315, - 2316,3,279,139,0,2316,2317,3,279,139,0,2317,2318,3,279,139,0,2318, - 2319,3,279,139,0,2319,2321,3,279,139,0,2320,2322,3,279,139,0,2321, - 2320,1,0,0,0,2321,2322,1,0,0,0,2322,2324,1,0,0,0,2323,2325,3,279, - 139,0,2324,2323,1,0,0,0,2324,2325,1,0,0,0,2325,2327,1,0,0,0,2326, - 2328,3,279,139,0,2327,2326,1,0,0,0,2327,2328,1,0,0,0,2328,2330,1, - 0,0,0,2329,2331,3,279,139,0,2330,2329,1,0,0,0,2330,2331,1,0,0,0, - 2331,2333,1,0,0,0,2332,2334,3,279,139,0,2333,2332,1,0,0,0,2333,2334, - 1,0,0,0,2334,2336,1,0,0,0,2335,2337,3,279,139,0,2336,2335,1,0,0, - 0,2336,2337,1,0,0,0,2337,2339,1,0,0,0,2338,2340,3,279,139,0,2339, - 2338,1,0,0,0,2339,2340,1,0,0,0,2340,2342,1,0,0,0,2341,2343,3,279, - 139,0,2342,2341,1,0,0,0,2342,2343,1,0,0,0,2343,2382,1,0,0,0,2344, - 2345,5,70,0,0,2345,2346,5,82,0,0,2346,2350,5,95,0,0,2347,2348,5, - 71,0,0,2348,2350,5,95,0,0,2349,2344,1,0,0,0,2349,2347,1,0,0,0,2350, - 2352,1,0,0,0,2351,2353,3,279,139,0,2352,2351,1,0,0,0,2353,2354,1, - 0,0,0,2354,2352,1,0,0,0,2354,2355,1,0,0,0,2355,2382,1,0,0,0,2356, - 2357,3,277,138,0,2357,2358,3,277,138,0,2358,2359,3,277,138,0,2359, - 2360,3,277,138,0,2360,2361,3,277,138,0,2361,2362,3,277,138,0,2362, - 2363,3,277,138,0,2363,2364,3,277,138,0,2364,2365,3,277,138,0,2365, - 2366,3,277,138,0,2366,2367,3,277,138,0,2367,2368,3,277,138,0,2368, - 2369,3,277,138,0,2369,2370,3,277,138,0,2370,2371,3,277,138,0,2371, - 2372,3,277,138,0,2372,2373,3,277,138,0,2373,2374,3,277,138,0,2374, - 2375,3,277,138,0,2375,2376,3,277,138,0,2376,2377,3,277,138,0,2377, - 2378,3,277,138,0,2378,2379,3,277,138,0,2379,2380,3,277,138,0,2380, - 2382,1,0,0,0,2381,2296,1,0,0,0,2381,2349,1,0,0,0,2381,2356,1,0,0, - 0,2382,268,1,0,0,0,2383,2385,5,34,0,0,2384,2386,3,281,140,0,2385, - 2384,1,0,0,0,2386,2387,1,0,0,0,2387,2385,1,0,0,0,2387,2388,1,0,0, - 0,2388,2389,1,0,0,0,2389,2390,5,34,0,0,2390,2394,1,0,0,0,2391,2392, - 5,34,0,0,2392,2394,5,34,0,0,2393,2383,1,0,0,0,2393,2391,1,0,0,0, - 2394,270,1,0,0,0,2395,2401,3,275,137,0,2396,2401,3,263,131,0,2397, - 2401,3,261,130,0,2398,2401,3,265,132,0,2399,2401,3,259,129,0,2400, - 2395,1,0,0,0,2400,2396,1,0,0,0,2400,2397,1,0,0,0,2400,2398,1,0,0, - 0,2400,2399,1,0,0,0,2401,2402,1,0,0,0,2402,2400,1,0,0,0,2402,2403, - 1,0,0,0,2403,272,1,0,0,0,2404,2405,5,36,0,0,2405,2407,3,271,135, - 0,2406,2404,1,0,0,0,2407,2408,1,0,0,0,2408,2406,1,0,0,0,2408,2409, - 1,0,0,0,2409,2411,1,0,0,0,2410,2412,3,265,132,0,2411,2410,1,0,0, - 0,2411,2412,1,0,0,0,2412,274,1,0,0,0,2413,2414,7,1,0,0,2414,276, - 1,0,0,0,2415,2416,7,2,0,0,2416,278,1,0,0,0,2417,2418,7,3,0,0,2418, - 280,1,0,0,0,2419,2423,8,4,0,0,2420,2421,5,92,0,0,2421,2423,5,34, - 0,0,2422,2419,1,0,0,0,2422,2420,1,0,0,0,2423,282,1,0,0,0,2424,2426, - 7,5,0,0,2425,2424,1,0,0,0,2426,2427,1,0,0,0,2427,2425,1,0,0,0,2427, - 2428,1,0,0,0,2428,2429,1,0,0,0,2429,2430,6,141,0,0,2430,284,1,0, - 0,0,2431,2432,5,47,0,0,2432,2433,5,42,0,0,2433,2437,1,0,0,0,2434, - 2436,9,0,0,0,2435,2434,1,0,0,0,2436,2439,1,0,0,0,2437,2438,1,0,0, - 0,2437,2435,1,0,0,0,2438,2440,1,0,0,0,2439,2437,1,0,0,0,2440,2441, - 5,42,0,0,2441,2442,5,47,0,0,2442,2443,1,0,0,0,2443,2444,6,142,0, - 0,2444,286,1,0,0,0,2445,2446,5,47,0,0,2446,2447,5,47,0,0,2447,2451, - 1,0,0,0,2448,2450,8,6,0,0,2449,2448,1,0,0,0,2450,2453,1,0,0,0,2451, - 2449,1,0,0,0,2451,2452,1,0,0,0,2452,2454,1,0,0,0,2453,2451,1,0,0, - 0,2454,2455,6,143,0,0,2455,288,1,0,0,0,23,0,2286,2321,2324,2327, - 2330,2333,2336,2339,2342,2349,2354,2381,2387,2393,2400,2402,2408, - 2411,2422,2427,2437,2451,1,6,0,0 + 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,3,133, + 2382,8,133,1,134,1,134,4,134,2386,8,134,11,134,12,134,2387,1,134, + 1,134,1,134,1,134,3,134,2394,8,134,1,135,1,135,1,135,1,135,1,135, + 4,135,2401,8,135,11,135,12,135,2402,1,136,1,136,4,136,2407,8,136, + 11,136,12,136,2408,1,136,3,136,2412,8,136,1,137,1,137,1,138,1,138, + 1,139,1,139,1,140,1,140,1,140,3,140,2423,8,140,1,141,4,141,2426, + 8,141,11,141,12,141,2427,1,141,1,141,1,142,1,142,1,142,1,142,5,142, + 2436,8,142,10,142,12,142,2439,9,142,1,142,1,142,1,142,1,142,1,142, + 1,143,1,143,1,143,1,143,5,143,2450,8,143,10,143,12,143,2453,9,143, + 1,143,1,143,1,2437,0,144,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9, + 19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20, + 41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31, + 63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42, + 85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105, + 53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62, + 125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143, + 72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81, + 163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181, + 91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100, + 201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108, + 217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116, + 233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124, + 249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132, + 265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,0,281, + 0,283,140,285,141,287,142,1,0,7,1,0,48,57,3,0,48,57,65,90,97,122, + 2,0,48,57,65,90,3,0,48,57,65,70,97,102,1,0,34,34,3,0,9,10,12,13, + 32,32,2,0,10,10,13,13,2479,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0, + 7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17, + 1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27, + 1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37, + 1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47, + 1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57, + 1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67, + 1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77, + 1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87, + 1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97, + 1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0, + 107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0, + 0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125, + 1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0, + 0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1, + 0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0, + 153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0, + 0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171, + 1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0, + 0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1, + 0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0, + 199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0, + 0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217, + 1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0, + 0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1, + 0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0, + 245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0, + 0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263, + 1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0, + 0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,283,1,0,0,0,0,285,1, + 0,0,0,0,287,1,0,0,0,1,289,1,0,0,0,3,291,1,0,0,0,5,293,1,0,0,0,7, + 295,1,0,0,0,9,297,1,0,0,0,11,299,1,0,0,0,13,301,1,0,0,0,15,303,1, + 0,0,0,17,318,1,0,0,0,19,326,1,0,0,0,21,328,1,0,0,0,23,330,1,0,0, + 0,25,335,1,0,0,0,27,339,1,0,0,0,29,353,1,0,0,0,31,361,1,0,0,0,33, + 372,1,0,0,0,35,374,1,0,0,0,37,376,1,0,0,0,39,395,1,0,0,0,41,408, + 1,0,0,0,43,430,1,0,0,0,45,453,1,0,0,0,47,470,1,0,0,0,49,494,1,0, + 0,0,51,503,1,0,0,0,53,524,1,0,0,0,55,540,1,0,0,0,57,556,1,0,0,0, + 59,567,1,0,0,0,61,585,1,0,0,0,63,608,1,0,0,0,65,633,1,0,0,0,67,654, + 1,0,0,0,69,674,1,0,0,0,71,690,1,0,0,0,73,711,1,0,0,0,75,731,1,0, + 0,0,77,761,1,0,0,0,79,793,1,0,0,0,81,808,1,0,0,0,83,816,1,0,0,0, + 85,827,1,0,0,0,87,843,1,0,0,0,89,853,1,0,0,0,91,874,1,0,0,0,93,885, + 1,0,0,0,95,898,1,0,0,0,97,907,1,0,0,0,99,924,1,0,0,0,101,942,1,0, + 0,0,103,957,1,0,0,0,105,969,1,0,0,0,107,978,1,0,0,0,109,987,1,0, + 0,0,111,998,1,0,0,0,113,1013,1,0,0,0,115,1029,1,0,0,0,117,1038,1, + 0,0,0,119,1057,1,0,0,0,121,1071,1,0,0,0,123,1083,1,0,0,0,125,1091, + 1,0,0,0,127,1118,1,0,0,0,129,1123,1,0,0,0,131,1128,1,0,0,0,133,1139, + 1,0,0,0,135,1155,1,0,0,0,137,1161,1,0,0,0,139,1196,1,0,0,0,141,1219, + 1,0,0,0,143,1231,1,0,0,0,145,1242,1,0,0,0,147,1263,1,0,0,0,149,1277, + 1,0,0,0,151,1299,1,0,0,0,153,1330,1,0,0,0,155,1343,1,0,0,0,157,1355, + 1,0,0,0,159,1372,1,0,0,0,161,1384,1,0,0,0,163,1395,1,0,0,0,165,1429, + 1,0,0,0,167,1464,1,0,0,0,169,1475,1,0,0,0,171,1494,1,0,0,0,173,1529, + 1,0,0,0,175,1550,1,0,0,0,177,1584,1,0,0,0,179,1608,1,0,0,0,181,1625, + 1,0,0,0,183,1642,1,0,0,0,185,1659,1,0,0,0,187,1681,1,0,0,0,189,1694, + 1,0,0,0,191,1710,1,0,0,0,193,1730,1,0,0,0,195,1748,1,0,0,0,197,1769, + 1,0,0,0,199,1787,1,0,0,0,201,1810,1,0,0,0,203,1823,1,0,0,0,205,1833, + 1,0,0,0,207,1849,1,0,0,0,209,1867,1,0,0,0,211,1882,1,0,0,0,213,1900, + 1,0,0,0,215,1912,1,0,0,0,217,1920,1,0,0,0,219,1939,1,0,0,0,221,1950, + 1,0,0,0,223,1970,1,0,0,0,225,1982,1,0,0,0,227,1992,1,0,0,0,229,2004, + 1,0,0,0,231,2021,1,0,0,0,233,2028,1,0,0,0,235,2040,1,0,0,0,237,2049, + 1,0,0,0,239,2059,1,0,0,0,241,2086,1,0,0,0,243,2100,1,0,0,0,245,2108, + 1,0,0,0,247,2125,1,0,0,0,249,2138,1,0,0,0,251,2149,1,0,0,0,253,2169, + 1,0,0,0,255,2199,1,0,0,0,257,2224,1,0,0,0,259,2233,1,0,0,0,261,2252, + 1,0,0,0,263,2267,1,0,0,0,265,2284,1,0,0,0,267,2381,1,0,0,0,269,2393, + 1,0,0,0,271,2400,1,0,0,0,273,2406,1,0,0,0,275,2413,1,0,0,0,277,2415, + 1,0,0,0,279,2417,1,0,0,0,281,2422,1,0,0,0,283,2425,1,0,0,0,285,2431, + 1,0,0,0,287,2445,1,0,0,0,289,290,5,123,0,0,290,2,1,0,0,0,291,292, + 5,125,0,0,292,4,1,0,0,0,293,294,5,61,0,0,294,6,1,0,0,0,295,296,5, + 59,0,0,296,8,1,0,0,0,297,298,5,40,0,0,298,10,1,0,0,0,299,300,5,44, + 0,0,300,12,1,0,0,0,301,302,5,41,0,0,302,14,1,0,0,0,303,304,5,97, + 0,0,304,305,5,114,0,0,305,306,5,99,0,0,306,307,5,104,0,0,307,308, + 5,105,0,0,308,309,5,118,0,0,309,310,5,101,0,0,310,311,5,86,0,0,311, + 312,5,101,0,0,312,313,5,114,0,0,313,314,5,115,0,0,314,315,5,105, + 0,0,315,316,5,111,0,0,316,317,5,110,0,0,317,16,1,0,0,0,318,319,5, + 99,0,0,319,320,5,108,0,0,320,321,5,97,0,0,321,322,5,115,0,0,322, + 323,5,115,0,0,323,324,5,101,0,0,324,325,5,115,0,0,325,18,1,0,0,0, + 326,327,5,45,0,0,327,20,1,0,0,0,328,329,5,46,0,0,329,22,1,0,0,0, + 330,331,5,105,0,0,331,332,5,115,0,0,332,333,5,97,0,0,333,24,1,0, + 0,0,334,336,7,0,0,0,335,334,1,0,0,0,336,337,1,0,0,0,337,335,1,0, + 0,0,337,338,1,0,0,0,338,26,1,0,0,0,339,340,5,111,0,0,340,341,5,98, + 0,0,341,342,5,106,0,0,342,343,5,101,0,0,343,344,5,99,0,0,344,345, + 5,116,0,0,345,346,5,86,0,0,346,347,5,101,0,0,347,348,5,114,0,0,348, + 349,5,115,0,0,349,350,5,105,0,0,350,351,5,111,0,0,351,352,5,110, + 0,0,352,28,1,0,0,0,353,354,5,111,0,0,354,355,5,98,0,0,355,356,5, + 106,0,0,356,357,5,101,0,0,357,358,5,99,0,0,358,359,5,116,0,0,359, + 360,5,115,0,0,360,30,1,0,0,0,361,362,5,114,0,0,362,363,5,111,0,0, + 363,364,5,111,0,0,364,365,5,116,0,0,365,366,5,79,0,0,366,367,5,98, + 0,0,367,368,5,106,0,0,368,369,5,101,0,0,369,370,5,99,0,0,370,371, + 5,116,0,0,371,32,1,0,0,0,372,373,5,47,0,0,373,34,1,0,0,0,374,375, + 5,95,0,0,375,36,1,0,0,0,376,377,5,80,0,0,377,378,5,66,0,0,378,379, + 5,88,0,0,379,380,5,65,0,0,380,381,5,103,0,0,381,382,5,103,0,0,382, + 383,5,114,0,0,383,384,5,101,0,0,384,385,5,103,0,0,385,386,5,97,0, + 0,386,387,5,116,0,0,387,388,5,101,0,0,388,389,5,84,0,0,389,390,5, + 97,0,0,390,391,5,114,0,0,391,392,5,103,0,0,392,393,5,101,0,0,393, + 394,5,116,0,0,394,38,1,0,0,0,395,396,5,80,0,0,396,397,5,66,0,0,397, + 398,5,88,0,0,398,399,5,66,0,0,399,400,5,117,0,0,400,401,5,105,0, + 0,401,402,5,108,0,0,402,403,5,100,0,0,403,404,5,70,0,0,404,405,5, + 105,0,0,405,406,5,108,0,0,406,407,5,101,0,0,407,40,1,0,0,0,408,409, + 5,80,0,0,409,410,5,66,0,0,410,411,5,88,0,0,411,412,5,67,0,0,412, + 413,5,111,0,0,413,414,5,110,0,0,414,415,5,116,0,0,415,416,5,97,0, + 0,416,417,5,105,0,0,417,418,5,110,0,0,418,419,5,101,0,0,419,420, + 5,114,0,0,420,421,5,73,0,0,421,422,5,116,0,0,422,423,5,101,0,0,423, + 424,5,109,0,0,424,425,5,80,0,0,425,426,5,114,0,0,426,427,5,111,0, + 0,427,428,5,120,0,0,428,429,5,121,0,0,429,42,1,0,0,0,430,431,5,80, + 0,0,431,432,5,66,0,0,432,433,5,88,0,0,433,434,5,67,0,0,434,435,5, + 111,0,0,435,436,5,112,0,0,436,437,5,121,0,0,437,438,5,70,0,0,438, + 439,5,105,0,0,439,440,5,108,0,0,440,441,5,101,0,0,441,442,5,115, + 0,0,442,443,5,66,0,0,443,444,5,117,0,0,444,445,5,105,0,0,445,446, + 5,108,0,0,446,447,5,100,0,0,447,448,5,80,0,0,448,449,5,104,0,0,449, + 450,5,97,0,0,450,451,5,115,0,0,451,452,5,101,0,0,452,44,1,0,0,0, + 453,454,5,80,0,0,454,455,5,66,0,0,455,456,5,88,0,0,456,457,5,70, + 0,0,457,458,5,105,0,0,458,459,5,108,0,0,459,460,5,101,0,0,460,461, + 5,82,0,0,461,462,5,101,0,0,462,463,5,102,0,0,463,464,5,101,0,0,464, + 465,5,114,0,0,465,466,5,101,0,0,466,467,5,110,0,0,467,468,5,99,0, + 0,468,469,5,101,0,0,469,46,1,0,0,0,470,471,5,80,0,0,471,472,5,66, + 0,0,472,473,5,88,0,0,473,474,5,70,0,0,474,475,5,114,0,0,475,476, + 5,97,0,0,476,477,5,109,0,0,477,478,5,101,0,0,478,479,5,119,0,0,479, + 480,5,111,0,0,480,481,5,114,0,0,481,482,5,107,0,0,482,483,5,115, + 0,0,483,484,5,66,0,0,484,485,5,117,0,0,485,486,5,105,0,0,486,487, + 5,108,0,0,487,488,5,100,0,0,488,489,5,80,0,0,489,490,5,104,0,0,490, + 491,5,97,0,0,491,492,5,115,0,0,492,493,5,101,0,0,493,48,1,0,0,0, + 494,495,5,80,0,0,495,496,5,66,0,0,496,497,5,88,0,0,497,498,5,71, + 0,0,498,499,5,114,0,0,499,500,5,111,0,0,500,501,5,117,0,0,501,502, + 5,112,0,0,502,50,1,0,0,0,503,504,5,80,0,0,504,505,5,66,0,0,505,506, + 5,88,0,0,506,507,5,72,0,0,507,508,5,101,0,0,508,509,5,97,0,0,509, + 510,5,100,0,0,510,511,5,101,0,0,511,512,5,114,0,0,512,513,5,115, + 0,0,513,514,5,66,0,0,514,515,5,117,0,0,515,516,5,105,0,0,516,517, + 5,108,0,0,517,518,5,100,0,0,518,519,5,80,0,0,519,520,5,104,0,0,520, + 521,5,97,0,0,521,522,5,115,0,0,522,523,5,101,0,0,523,52,1,0,0,0, + 524,525,5,80,0,0,525,526,5,66,0,0,526,527,5,88,0,0,527,528,5,78, + 0,0,528,529,5,97,0,0,529,530,5,116,0,0,530,531,5,105,0,0,531,532, + 5,118,0,0,532,533,5,101,0,0,533,534,5,84,0,0,534,535,5,97,0,0,535, + 536,5,114,0,0,536,537,5,103,0,0,537,538,5,101,0,0,538,539,5,116, + 0,0,539,54,1,0,0,0,540,541,5,80,0,0,541,542,5,66,0,0,542,543,5,88, + 0,0,543,544,5,76,0,0,544,545,5,101,0,0,545,546,5,103,0,0,546,547, + 5,97,0,0,547,548,5,99,0,0,548,549,5,121,0,0,549,550,5,84,0,0,550, + 551,5,97,0,0,551,552,5,114,0,0,552,553,5,103,0,0,553,554,5,101,0, + 0,554,555,5,116,0,0,555,56,1,0,0,0,556,557,5,80,0,0,557,558,5,66, + 0,0,558,559,5,88,0,0,559,560,5,80,0,0,560,561,5,114,0,0,561,562, + 5,111,0,0,562,563,5,106,0,0,563,564,5,101,0,0,564,565,5,99,0,0,565, + 566,5,116,0,0,566,58,1,0,0,0,567,568,5,80,0,0,568,569,5,66,0,0,569, + 570,5,88,0,0,570,571,5,82,0,0,571,572,5,101,0,0,572,573,5,102,0, + 0,573,574,5,101,0,0,574,575,5,114,0,0,575,576,5,101,0,0,576,577, + 5,110,0,0,577,578,5,99,0,0,578,579,5,101,0,0,579,580,5,80,0,0,580, + 581,5,114,0,0,581,582,5,111,0,0,582,583,5,120,0,0,583,584,5,121, + 0,0,584,60,1,0,0,0,585,586,5,80,0,0,586,587,5,66,0,0,587,588,5,88, + 0,0,588,589,5,82,0,0,589,590,5,101,0,0,590,591,5,115,0,0,591,592, + 5,111,0,0,592,593,5,117,0,0,593,594,5,114,0,0,594,595,5,99,0,0,595, + 596,5,101,0,0,596,597,5,115,0,0,597,598,5,66,0,0,598,599,5,117,0, + 0,599,600,5,105,0,0,600,601,5,108,0,0,601,602,5,100,0,0,602,603, + 5,80,0,0,603,604,5,104,0,0,604,605,5,97,0,0,605,606,5,115,0,0,606, + 607,5,101,0,0,607,62,1,0,0,0,608,609,5,80,0,0,609,610,5,66,0,0,610, + 611,5,88,0,0,611,612,5,83,0,0,612,613,5,104,0,0,613,614,5,101,0, + 0,614,615,5,108,0,0,615,616,5,108,0,0,616,617,5,83,0,0,617,618,5, + 99,0,0,618,619,5,114,0,0,619,620,5,105,0,0,620,621,5,112,0,0,621, + 622,5,116,0,0,622,623,5,66,0,0,623,624,5,117,0,0,624,625,5,105,0, + 0,625,626,5,108,0,0,626,627,5,100,0,0,627,628,5,80,0,0,628,629,5, + 104,0,0,629,630,5,97,0,0,630,631,5,115,0,0,631,632,5,101,0,0,632, + 64,1,0,0,0,633,634,5,80,0,0,634,635,5,66,0,0,635,636,5,88,0,0,636, + 637,5,83,0,0,637,638,5,111,0,0,638,639,5,117,0,0,639,640,5,114,0, + 0,640,641,5,99,0,0,641,642,5,101,0,0,642,643,5,115,0,0,643,644,5, + 66,0,0,644,645,5,117,0,0,645,646,5,105,0,0,646,647,5,108,0,0,647, + 648,5,100,0,0,648,649,5,80,0,0,649,650,5,104,0,0,650,651,5,97,0, + 0,651,652,5,115,0,0,652,653,5,101,0,0,653,66,1,0,0,0,654,655,5,80, + 0,0,655,656,5,66,0,0,656,657,5,88,0,0,657,658,5,84,0,0,658,659,5, + 97,0,0,659,660,5,114,0,0,660,661,5,103,0,0,661,662,5,101,0,0,662, + 663,5,116,0,0,663,664,5,68,0,0,664,665,5,101,0,0,665,666,5,112,0, + 0,666,667,5,101,0,0,667,668,5,110,0,0,668,669,5,100,0,0,669,670, + 5,101,0,0,670,671,5,110,0,0,671,672,5,99,0,0,672,673,5,121,0,0,673, + 68,1,0,0,0,674,675,5,80,0,0,675,676,5,66,0,0,676,677,5,88,0,0,677, + 678,5,86,0,0,678,679,5,97,0,0,679,680,5,114,0,0,680,681,5,105,0, + 0,681,682,5,97,0,0,682,683,5,110,0,0,683,684,5,116,0,0,684,685,5, + 71,0,0,685,686,5,114,0,0,686,687,5,111,0,0,687,688,5,117,0,0,688, + 689,5,112,0,0,689,70,1,0,0,0,690,691,5,88,0,0,691,692,5,67,0,0,692, + 693,5,66,0,0,693,694,5,117,0,0,694,695,5,105,0,0,695,696,5,108,0, + 0,696,697,5,100,0,0,697,698,5,67,0,0,698,699,5,111,0,0,699,700,5, + 110,0,0,700,701,5,102,0,0,701,702,5,105,0,0,702,703,5,103,0,0,703, + 704,5,117,0,0,704,705,5,114,0,0,705,706,5,97,0,0,706,707,5,116,0, + 0,707,708,5,105,0,0,708,709,5,111,0,0,709,710,5,110,0,0,710,72,1, + 0,0,0,711,712,5,88,0,0,712,713,5,67,0,0,713,714,5,67,0,0,714,715, + 5,111,0,0,715,716,5,110,0,0,716,717,5,102,0,0,717,718,5,105,0,0, + 718,719,5,103,0,0,719,720,5,117,0,0,720,721,5,114,0,0,721,722,5, + 97,0,0,722,723,5,116,0,0,723,724,5,105,0,0,724,725,5,111,0,0,725, + 726,5,110,0,0,726,727,5,76,0,0,727,728,5,105,0,0,728,729,5,115,0, + 0,729,730,5,116,0,0,730,74,1,0,0,0,731,732,5,88,0,0,732,733,5,67, + 0,0,733,734,5,82,0,0,734,735,5,101,0,0,735,736,5,109,0,0,736,737, + 5,111,0,0,737,738,5,116,0,0,738,739,5,101,0,0,739,740,5,83,0,0,740, + 741,5,119,0,0,741,742,5,105,0,0,742,743,5,102,0,0,743,744,5,116, + 0,0,744,745,5,80,0,0,745,746,5,97,0,0,746,747,5,99,0,0,747,748,5, + 107,0,0,748,749,5,97,0,0,749,750,5,103,0,0,750,751,5,101,0,0,751, + 752,5,82,0,0,752,753,5,101,0,0,753,754,5,102,0,0,754,755,5,101,0, + 0,755,756,5,114,0,0,756,757,5,101,0,0,757,758,5,110,0,0,758,759, + 5,99,0,0,759,760,5,101,0,0,760,76,1,0,0,0,761,762,5,88,0,0,762,763, + 5,67,0,0,763,764,5,83,0,0,764,765,5,119,0,0,765,766,5,105,0,0,766, + 767,5,102,0,0,767,768,5,116,0,0,768,769,5,80,0,0,769,770,5,97,0, + 0,770,771,5,99,0,0,771,772,5,107,0,0,772,773,5,97,0,0,773,774,5, + 103,0,0,774,775,5,101,0,0,775,776,5,80,0,0,776,777,5,114,0,0,777, + 778,5,111,0,0,778,779,5,100,0,0,779,780,5,117,0,0,780,781,5,99,0, + 0,781,782,5,116,0,0,782,783,5,68,0,0,783,784,5,101,0,0,784,785,5, + 112,0,0,785,786,5,101,0,0,786,787,5,110,0,0,787,788,5,100,0,0,788, + 789,5,101,0,0,789,790,5,110,0,0,790,791,5,99,0,0,791,792,5,121,0, + 0,792,78,1,0,0,0,793,794,5,88,0,0,794,795,5,67,0,0,795,796,5,86, + 0,0,796,797,5,101,0,0,797,798,5,114,0,0,798,799,5,115,0,0,799,800, + 5,105,0,0,800,801,5,111,0,0,801,802,5,110,0,0,802,803,5,71,0,0,803, + 804,5,114,0,0,804,805,5,111,0,0,805,806,5,117,0,0,806,807,5,112, + 0,0,807,80,1,0,0,0,808,809,5,102,0,0,809,810,5,105,0,0,810,811,5, + 108,0,0,811,812,5,101,0,0,812,813,5,82,0,0,813,814,5,101,0,0,814, + 815,5,102,0,0,815,82,1,0,0,0,816,817,5,112,0,0,817,818,5,114,0,0, + 818,819,5,111,0,0,819,820,5,100,0,0,820,821,5,117,0,0,821,822,5, + 99,0,0,822,823,5,116,0,0,823,824,5,82,0,0,824,825,5,101,0,0,825, + 826,5,102,0,0,826,84,1,0,0,0,827,828,5,99,0,0,828,829,5,111,0,0, + 829,830,5,110,0,0,830,831,5,116,0,0,831,832,5,97,0,0,832,833,5,105, + 0,0,833,834,5,110,0,0,834,835,5,101,0,0,835,836,5,114,0,0,836,837, + 5,80,0,0,837,838,5,111,0,0,838,839,5,114,0,0,839,840,5,116,0,0,840, + 841,5,97,0,0,841,842,5,108,0,0,842,86,1,0,0,0,843,844,5,112,0,0, + 844,845,5,114,0,0,845,846,5,111,0,0,846,847,5,120,0,0,847,848,5, + 121,0,0,848,849,5,84,0,0,849,850,5,121,0,0,850,851,5,112,0,0,851, + 852,5,101,0,0,852,88,1,0,0,0,853,854,5,114,0,0,854,855,5,101,0,0, + 855,856,5,109,0,0,856,857,5,111,0,0,857,858,5,116,0,0,858,859,5, + 101,0,0,859,860,5,71,0,0,860,861,5,108,0,0,861,862,5,111,0,0,862, + 863,5,98,0,0,863,864,5,97,0,0,864,865,5,108,0,0,865,866,5,73,0,0, + 866,867,5,68,0,0,867,868,5,83,0,0,868,869,5,116,0,0,869,870,5,114, + 0,0,870,871,5,105,0,0,871,872,5,110,0,0,872,873,5,103,0,0,873,90, + 1,0,0,0,874,875,5,114,0,0,875,876,5,101,0,0,876,877,5,109,0,0,877, + 878,5,111,0,0,878,879,5,116,0,0,879,880,5,101,0,0,880,881,5,73,0, + 0,881,882,5,110,0,0,882,883,5,102,0,0,883,884,5,111,0,0,884,92,1, + 0,0,0,885,886,5,102,0,0,886,887,5,105,0,0,887,888,5,108,0,0,888, + 889,5,101,0,0,889,890,5,69,0,0,890,891,5,110,0,0,891,892,5,99,0, + 0,892,893,5,111,0,0,893,894,5,100,0,0,894,895,5,105,0,0,895,896, + 5,110,0,0,896,897,5,103,0,0,897,94,1,0,0,0,898,899,5,99,0,0,899, + 900,5,111,0,0,900,901,5,109,0,0,901,902,5,109,0,0,902,903,5,101, + 0,0,903,904,5,110,0,0,904,905,5,116,0,0,905,906,5,115,0,0,906,96, + 1,0,0,0,907,908,5,101,0,0,908,909,5,120,0,0,909,910,5,112,0,0,910, + 911,5,108,0,0,911,912,5,105,0,0,912,913,5,99,0,0,913,914,5,105,0, + 0,914,915,5,116,0,0,915,916,5,70,0,0,916,917,5,105,0,0,917,918,5, + 108,0,0,918,919,5,101,0,0,919,920,5,84,0,0,920,921,5,121,0,0,921, + 922,5,112,0,0,922,923,5,101,0,0,923,98,1,0,0,0,924,925,5,108,0,0, + 925,926,5,97,0,0,926,927,5,115,0,0,927,928,5,116,0,0,928,929,5,75, + 0,0,929,930,5,110,0,0,930,931,5,111,0,0,931,932,5,119,0,0,932,933, + 5,110,0,0,933,934,5,70,0,0,934,935,5,105,0,0,935,936,5,108,0,0,936, + 937,5,101,0,0,937,938,5,84,0,0,938,939,5,121,0,0,939,940,5,112,0, + 0,940,941,5,101,0,0,941,100,1,0,0,0,942,943,5,105,0,0,943,944,5, + 110,0,0,944,945,5,99,0,0,945,946,5,108,0,0,946,947,5,117,0,0,947, + 948,5,100,0,0,948,949,5,101,0,0,949,950,5,73,0,0,950,951,5,110,0, + 0,951,952,5,73,0,0,952,953,5,110,0,0,953,954,5,100,0,0,954,955,5, + 101,0,0,955,956,5,120,0,0,956,102,1,0,0,0,957,958,5,105,0,0,958, + 959,5,110,0,0,959,960,5,100,0,0,960,961,5,101,0,0,961,962,5,110, + 0,0,962,963,5,116,0,0,963,964,5,87,0,0,964,965,5,105,0,0,965,966, + 5,100,0,0,966,967,5,116,0,0,967,968,5,104,0,0,968,104,1,0,0,0,969, + 970,5,116,0,0,970,971,5,97,0,0,971,972,5,98,0,0,972,973,5,87,0,0, + 973,974,5,105,0,0,974,975,5,100,0,0,975,976,5,116,0,0,976,977,5, + 104,0,0,977,106,1,0,0,0,978,979,5,117,0,0,979,980,5,115,0,0,980, + 981,5,101,0,0,981,982,5,115,0,0,982,983,5,84,0,0,983,984,5,97,0, + 0,984,985,5,98,0,0,985,986,5,115,0,0,986,108,1,0,0,0,987,988,5,119, + 0,0,988,989,5,114,0,0,989,990,5,97,0,0,990,991,5,112,0,0,991,992, + 5,115,0,0,992,993,5,76,0,0,993,994,5,105,0,0,994,995,5,110,0,0,995, + 996,5,101,0,0,996,997,5,115,0,0,997,110,1,0,0,0,998,999,5,112,0, + 0,999,1000,5,108,0,0,1000,1001,5,97,0,0,1001,1002,5,116,0,0,1002, + 1003,5,102,0,0,1003,1004,5,111,0,0,1004,1005,5,114,0,0,1005,1006, + 5,109,0,0,1006,1007,5,70,0,0,1007,1008,5,105,0,0,1008,1009,5,108, + 0,0,1009,1010,5,116,0,0,1010,1011,5,101,0,0,1011,1012,5,114,0,0, + 1012,112,1,0,0,0,1013,1014,5,112,0,0,1014,1015,5,108,0,0,1015,1016, + 5,97,0,0,1016,1017,5,116,0,0,1017,1018,5,102,0,0,1018,1019,5,111, + 0,0,1019,1020,5,114,0,0,1020,1021,5,109,0,0,1021,1022,5,70,0,0,1022, + 1023,5,105,0,0,1023,1024,5,108,0,0,1024,1025,5,116,0,0,1025,1026, + 5,101,0,0,1026,1027,5,114,0,0,1027,1028,5,115,0,0,1028,114,1,0,0, + 0,1029,1030,5,99,0,0,1030,1031,5,104,0,0,1031,1032,5,105,0,0,1032, + 1033,5,108,0,0,1033,1034,5,100,0,0,1034,1035,5,114,0,0,1035,1036, + 5,101,0,0,1036,1037,5,110,0,0,1037,116,1,0,0,0,1038,1039,5,112,0, + 0,1039,1040,5,114,0,0,1040,1041,5,111,0,0,1041,1042,5,100,0,0,1042, + 1043,5,117,0,0,1043,1044,5,99,0,0,1044,1045,5,116,0,0,1045,1046, + 5,73,0,0,1046,1047,5,110,0,0,1047,1048,5,115,0,0,1048,1049,5,116, + 0,0,1049,1050,5,97,0,0,1050,1051,5,108,0,0,1051,1052,5,108,0,0,1052, + 1053,5,80,0,0,1053,1054,5,97,0,0,1054,1055,5,116,0,0,1055,1056,5, + 104,0,0,1056,118,1,0,0,0,1057,1058,5,114,0,0,1058,1059,5,101,0,0, + 1059,1060,5,112,0,0,1060,1061,5,111,0,0,1061,1062,5,115,0,0,1062, + 1063,5,105,0,0,1063,1064,5,116,0,0,1064,1065,5,111,0,0,1065,1066, + 5,114,0,0,1066,1067,5,121,0,0,1067,1068,5,85,0,0,1068,1069,5,82, + 0,0,1069,1070,5,76,0,0,1070,120,1,0,0,0,1071,1072,5,114,0,0,1072, + 1073,5,101,0,0,1073,1074,5,113,0,0,1074,1075,5,117,0,0,1075,1076, + 5,105,0,0,1076,1077,5,114,0,0,1077,1078,5,101,0,0,1078,1079,5,109, + 0,0,1079,1080,5,101,0,0,1080,1081,5,110,0,0,1081,1082,5,116,0,0, + 1082,122,1,0,0,0,1083,1084,5,112,0,0,1084,1085,5,97,0,0,1085,1086, + 5,99,0,0,1086,1087,5,107,0,0,1087,1088,5,97,0,0,1088,1089,5,103, + 0,0,1089,1090,5,101,0,0,1090,124,1,0,0,0,1091,1092,5,112,0,0,1092, + 1093,5,97,0,0,1093,1094,5,99,0,0,1094,1095,5,107,0,0,1095,1096,5, + 97,0,0,1096,1097,5,103,0,0,1097,1098,5,101,0,0,1098,1099,5,80,0, + 0,1099,1100,5,114,0,0,1100,1101,5,111,0,0,1101,1102,5,100,0,0,1102, + 1103,5,117,0,0,1103,1104,5,99,0,0,1104,1105,5,116,0,0,1105,1106, + 5,68,0,0,1106,1107,5,101,0,0,1107,1108,5,112,0,0,1108,1109,5,101, + 0,0,1109,1110,5,110,0,0,1110,1111,5,100,0,0,1111,1112,5,101,0,0, + 1112,1113,5,110,0,0,1113,1114,5,99,0,0,1114,1115,5,105,0,0,1115, + 1116,5,101,0,0,1116,1117,5,115,0,0,1117,126,1,0,0,0,1118,1119,5, + 110,0,0,1119,1120,5,97,0,0,1120,1121,5,109,0,0,1121,1122,5,101,0, + 0,1122,128,1,0,0,0,1123,1124,5,112,0,0,1124,1125,5,97,0,0,1125,1126, + 5,116,0,0,1126,1127,5,104,0,0,1127,130,1,0,0,0,1128,1129,5,115,0, + 0,1129,1130,5,111,0,0,1130,1131,5,117,0,0,1131,1132,5,114,0,0,1132, + 1133,5,99,0,0,1133,1134,5,101,0,0,1134,1135,5,84,0,0,1135,1136,5, + 114,0,0,1136,1137,5,101,0,0,1137,1138,5,101,0,0,1138,132,1,0,0,0, + 1139,1140,5,98,0,0,1140,1141,5,117,0,0,1141,1142,5,105,0,0,1142, + 1143,5,108,0,0,1143,1144,5,100,0,0,1144,1145,5,65,0,0,1145,1146, + 5,99,0,0,1146,1147,5,116,0,0,1147,1148,5,105,0,0,1148,1149,5,111, + 0,0,1149,1150,5,110,0,0,1150,1151,5,77,0,0,1151,1152,5,97,0,0,1152, + 1153,5,115,0,0,1153,1154,5,107,0,0,1154,134,1,0,0,0,1155,1156,5, + 102,0,0,1156,1157,5,105,0,0,1157,1158,5,108,0,0,1158,1159,5,101, + 0,0,1159,1160,5,115,0,0,1160,136,1,0,0,0,1161,1162,5,114,0,0,1162, + 1163,5,117,0,0,1163,1164,5,110,0,0,1164,1165,5,79,0,0,1165,1166, + 5,110,0,0,1166,1167,5,108,0,0,1167,1168,5,121,0,0,1168,1169,5,70, + 0,0,1169,1170,5,111,0,0,1170,1171,5,114,0,0,1171,1172,5,68,0,0,1172, + 1173,5,101,0,0,1173,1174,5,112,0,0,1174,1175,5,108,0,0,1175,1176, + 5,111,0,0,1176,1177,5,121,0,0,1177,1178,5,109,0,0,1178,1179,5,101, + 0,0,1179,1180,5,110,0,0,1180,1181,5,116,0,0,1181,1182,5,80,0,0,1182, + 1183,5,111,0,0,1183,1184,5,115,0,0,1184,1185,5,116,0,0,1185,1186, + 5,112,0,0,1186,1187,5,114,0,0,1187,1188,5,111,0,0,1188,1189,5,99, + 0,0,1189,1190,5,101,0,0,1190,1191,5,115,0,0,1191,1192,5,115,0,0, + 1192,1193,5,105,0,0,1193,1194,5,110,0,0,1194,1195,5,103,0,0,1195, + 138,1,0,0,0,1196,1197,5,98,0,0,1197,1198,5,117,0,0,1198,1199,5,105, + 0,0,1199,1200,5,108,0,0,1200,1201,5,100,0,0,1201,1202,5,67,0,0,1202, + 1203,5,111,0,0,1203,1204,5,110,0,0,1204,1205,5,102,0,0,1205,1206, + 5,105,0,0,1206,1207,5,103,0,0,1207,1208,5,117,0,0,1208,1209,5,114, + 0,0,1209,1210,5,97,0,0,1210,1211,5,116,0,0,1211,1212,5,105,0,0,1212, + 1213,5,111,0,0,1213,1214,5,110,0,0,1214,1215,5,76,0,0,1215,1216, + 5,105,0,0,1216,1217,5,115,0,0,1217,1218,5,116,0,0,1218,140,1,0,0, + 0,1219,1220,5,98,0,0,1220,1221,5,117,0,0,1221,1222,5,105,0,0,1222, + 1223,5,108,0,0,1223,1224,5,100,0,0,1224,1225,5,80,0,0,1225,1226, + 5,104,0,0,1226,1227,5,97,0,0,1227,1228,5,115,0,0,1228,1229,5,101, + 0,0,1229,1230,5,115,0,0,1230,142,1,0,0,0,1231,1232,5,98,0,0,1232, + 1233,5,117,0,0,1233,1234,5,105,0,0,1234,1235,5,108,0,0,1235,1236, + 5,100,0,0,1236,1237,5,82,0,0,1237,1238,5,117,0,0,1238,1239,5,108, + 0,0,1239,1240,5,101,0,0,1240,1241,5,115,0,0,1241,144,1,0,0,0,1242, + 1243,5,98,0,0,1243,1244,5,117,0,0,1244,1245,5,105,0,0,1245,1246, + 5,108,0,0,1246,1247,5,100,0,0,1247,1248,5,65,0,0,1248,1249,5,114, + 0,0,1249,1250,5,103,0,0,1250,1251,5,117,0,0,1251,1252,5,109,0,0, + 1252,1253,5,101,0,0,1253,1254,5,110,0,0,1254,1255,5,116,0,0,1255, + 1256,5,115,0,0,1256,1257,5,83,0,0,1257,1258,5,116,0,0,1258,1259, + 5,114,0,0,1259,1260,5,105,0,0,1260,1261,5,110,0,0,1261,1262,5,103, + 0,0,1262,146,1,0,0,0,1263,1264,5,98,0,0,1264,1265,5,117,0,0,1265, + 1266,5,105,0,0,1266,1267,5,108,0,0,1267,1268,5,100,0,0,1268,1269, + 5,84,0,0,1269,1270,5,111,0,0,1270,1271,5,111,0,0,1271,1272,5,108, + 0,0,1272,1273,5,80,0,0,1273,1274,5,97,0,0,1274,1275,5,116,0,0,1275, + 1276,5,104,0,0,1276,148,1,0,0,0,1277,1278,5,98,0,0,1278,1279,5,117, + 0,0,1279,1280,5,105,0,0,1280,1281,5,108,0,0,1281,1282,5,100,0,0, + 1282,1283,5,87,0,0,1283,1284,5,111,0,0,1284,1285,5,114,0,0,1285, + 1286,5,107,0,0,1286,1287,5,105,0,0,1287,1288,5,110,0,0,1288,1289, + 5,103,0,0,1289,1290,5,68,0,0,1290,1291,5,105,0,0,1291,1292,5,114, + 0,0,1292,1293,5,101,0,0,1293,1294,5,99,0,0,1294,1295,5,116,0,0,1295, + 1296,5,111,0,0,1296,1297,5,114,0,0,1297,1298,5,121,0,0,1298,150, + 1,0,0,0,1299,1300,5,112,0,0,1300,1301,5,97,0,0,1301,1302,5,115,0, + 0,1302,1303,5,115,0,0,1303,1304,5,66,0,0,1304,1305,5,117,0,0,1305, + 1306,5,105,0,0,1306,1307,5,108,0,0,1307,1308,5,100,0,0,1308,1309, + 5,83,0,0,1309,1310,5,101,0,0,1310,1311,5,116,0,0,1311,1312,5,116, + 0,0,1312,1313,5,105,0,0,1313,1314,5,110,0,0,1314,1315,5,103,0,0, + 1315,1316,5,115,0,0,1316,1317,5,73,0,0,1317,1318,5,110,0,0,1318, + 1319,5,69,0,0,1319,1320,5,110,0,0,1320,1321,5,118,0,0,1321,1322, + 5,105,0,0,1322,1323,5,114,0,0,1323,1324,5,111,0,0,1324,1325,5,110, + 0,0,1325,1326,5,109,0,0,1326,1327,5,101,0,0,1327,1328,5,110,0,0, + 1328,1329,5,116,0,0,1329,152,1,0,0,0,1330,1331,5,100,0,0,1331,1332, + 5,101,0,0,1332,1333,5,112,0,0,1333,1334,5,101,0,0,1334,1335,5,110, + 0,0,1335,1336,5,100,0,0,1336,1337,5,101,0,0,1337,1338,5,110,0,0, + 1338,1339,5,99,0,0,1339,1340,5,105,0,0,1340,1341,5,101,0,0,1341, + 1342,5,115,0,0,1342,154,1,0,0,0,1343,1344,5,112,0,0,1344,1345,5, + 114,0,0,1345,1346,5,111,0,0,1346,1347,5,100,0,0,1347,1348,5,117, + 0,0,1348,1349,5,99,0,0,1349,1350,5,116,0,0,1350,1351,5,78,0,0,1351, + 1352,5,97,0,0,1352,1353,5,109,0,0,1353,1354,5,101,0,0,1354,156,1, + 0,0,0,1355,1356,5,112,0,0,1356,1357,5,114,0,0,1357,1358,5,111,0, + 0,1358,1359,5,100,0,0,1359,1360,5,117,0,0,1360,1361,5,99,0,0,1361, + 1362,5,116,0,0,1362,1363,5,82,0,0,1363,1364,5,101,0,0,1364,1365, + 5,102,0,0,1365,1366,5,101,0,0,1366,1367,5,114,0,0,1367,1368,5,101, + 0,0,1368,1369,5,110,0,0,1369,1370,5,99,0,0,1370,1371,5,101,0,0,1371, + 158,1,0,0,0,1372,1373,5,112,0,0,1373,1374,5,114,0,0,1374,1375,5, + 111,0,0,1375,1376,5,100,0,0,1376,1377,5,117,0,0,1377,1378,5,99,0, + 0,1378,1379,5,116,0,0,1379,1380,5,84,0,0,1380,1381,5,121,0,0,1381, + 1382,5,112,0,0,1382,1383,5,101,0,0,1383,160,1,0,0,0,1384,1385,5, + 108,0,0,1385,1386,5,105,0,0,1386,1387,5,110,0,0,1387,1388,5,101, + 0,0,1388,1389,5,69,0,0,1389,1390,5,110,0,0,1390,1391,5,100,0,0,1391, + 1392,5,105,0,0,1392,1393,5,110,0,0,1393,1394,5,103,0,0,1394,162, + 1,0,0,0,1395,1396,5,120,0,0,1396,1397,5,99,0,0,1397,1398,5,76,0, + 0,1398,1399,5,97,0,0,1399,1400,5,110,0,0,1400,1401,5,103,0,0,1401, + 1402,5,117,0,0,1402,1403,5,97,0,0,1403,1404,5,103,0,0,1404,1405, + 5,101,0,0,1405,1406,5,83,0,0,1406,1407,5,112,0,0,1407,1408,5,101, + 0,0,1408,1409,5,99,0,0,1409,1410,5,105,0,0,1410,1411,5,102,0,0,1411, + 1412,5,105,0,0,1412,1413,5,99,0,0,1413,1414,5,97,0,0,1414,1415,5, + 116,0,0,1415,1416,5,105,0,0,1416,1417,5,111,0,0,1417,1418,5,110, + 0,0,1418,1419,5,73,0,0,1419,1420,5,100,0,0,1420,1421,5,101,0,0,1421, + 1422,5,110,0,0,1422,1423,5,116,0,0,1423,1424,5,105,0,0,1424,1425, + 5,102,0,0,1425,1426,5,105,0,0,1426,1427,5,101,0,0,1427,1428,5,114, + 0,0,1428,164,1,0,0,0,1429,1430,5,112,0,0,1430,1431,5,108,0,0,1431, + 1432,5,105,0,0,1432,1433,5,115,0,0,1433,1434,5,116,0,0,1434,1435, + 5,83,0,0,1435,1436,5,116,0,0,1436,1437,5,114,0,0,1437,1438,5,117, + 0,0,1438,1439,5,99,0,0,1439,1440,5,116,0,0,1440,1441,5,117,0,0,1441, + 1442,5,114,0,0,1442,1443,5,101,0,0,1443,1444,5,68,0,0,1444,1445, + 5,101,0,0,1445,1446,5,102,0,0,1446,1447,5,105,0,0,1447,1448,5,110, + 0,0,1448,1449,5,105,0,0,1449,1450,5,116,0,0,1450,1451,5,105,0,0, + 1451,1452,5,111,0,0,1452,1453,5,110,0,0,1453,1454,5,73,0,0,1454, + 1455,5,100,0,0,1455,1456,5,101,0,0,1456,1457,5,110,0,0,1457,1458, + 5,116,0,0,1458,1459,5,105,0,0,1459,1460,5,102,0,0,1460,1461,5,105, + 0,0,1461,1462,5,101,0,0,1462,1463,5,114,0,0,1463,166,1,0,0,0,1464, + 1465,5,97,0,0,1465,1466,5,116,0,0,1466,1467,5,116,0,0,1467,1468, + 5,114,0,0,1468,1469,5,105,0,0,1469,1470,5,98,0,0,1470,1471,5,117, + 0,0,1471,1472,5,116,0,0,1472,1473,5,101,0,0,1473,1474,5,115,0,0, + 1474,168,1,0,0,0,1475,1476,5,76,0,0,1476,1477,5,97,0,0,1477,1478, + 5,115,0,0,1478,1479,5,116,0,0,1479,1480,5,83,0,0,1480,1481,5,119, + 0,0,1481,1482,5,105,0,0,1482,1483,5,102,0,0,1483,1484,5,116,0,0, + 1484,1485,5,77,0,0,1485,1486,5,105,0,0,1486,1487,5,103,0,0,1487, + 1488,5,114,0,0,1488,1489,5,97,0,0,1489,1490,5,116,0,0,1490,1491, + 5,105,0,0,1491,1492,5,111,0,0,1492,1493,5,110,0,0,1493,170,1,0,0, + 0,1494,1495,5,68,0,0,1495,1496,5,101,0,0,1496,1497,5,102,0,0,1497, + 1498,5,97,0,0,1498,1499,5,117,0,0,1499,1500,5,108,0,0,1500,1501, + 5,116,0,0,1501,1502,5,66,0,0,1502,1503,5,117,0,0,1503,1504,5,105, + 0,0,1504,1505,5,108,0,0,1505,1506,5,100,0,0,1506,1507,5,83,0,0,1507, + 1508,5,121,0,0,1508,1509,5,115,0,0,1509,1510,5,116,0,0,1510,1511, + 5,101,0,0,1511,1512,5,109,0,0,1512,1513,5,84,0,0,1513,1514,5,121, + 0,0,1514,1515,5,112,0,0,1515,1516,5,101,0,0,1516,1517,5,70,0,0,1517, + 1518,5,111,0,0,1518,1519,5,114,0,0,1519,1520,5,87,0,0,1520,1521, + 5,111,0,0,1521,1522,5,114,0,0,1522,1523,5,107,0,0,1523,1524,5,115, + 0,0,1524,1525,5,112,0,0,1525,1526,5,97,0,0,1526,1527,5,99,0,0,1527, + 1528,5,101,0,0,1528,172,1,0,0,0,1529,1530,5,76,0,0,1530,1531,5,97, + 0,0,1531,1532,5,115,0,0,1532,1533,5,116,0,0,1533,1534,5,83,0,0,1534, + 1535,5,119,0,0,1535,1536,5,105,0,0,1536,1537,5,102,0,0,1537,1538, + 5,116,0,0,1538,1539,5,85,0,0,1539,1540,5,112,0,0,1540,1541,5,100, + 0,0,1541,1542,5,97,0,0,1542,1543,5,116,0,0,1543,1544,5,101,0,0,1544, + 1545,5,67,0,0,1545,1546,5,104,0,0,1546,1547,5,101,0,0,1547,1548, + 5,99,0,0,1548,1549,5,107,0,0,1549,174,1,0,0,0,1550,1551,5,66,0,0, + 1551,1552,5,117,0,0,1552,1553,5,105,0,0,1553,1554,5,108,0,0,1554, + 1555,5,100,0,0,1555,1556,5,73,0,0,1556,1557,5,110,0,0,1557,1558, + 5,100,0,0,1558,1559,5,101,0,0,1559,1560,5,112,0,0,1560,1561,5,101, + 0,0,1561,1562,5,110,0,0,1562,1563,5,100,0,0,1563,1564,5,101,0,0, + 1564,1565,5,110,0,0,1565,1566,5,116,0,0,1566,1567,5,84,0,0,1567, + 1568,5,97,0,0,1568,1569,5,114,0,0,1569,1570,5,103,0,0,1570,1571, + 5,101,0,0,1571,1572,5,116,0,0,1572,1573,5,115,0,0,1573,1574,5,73, + 0,0,1574,1575,5,110,0,0,1575,1576,5,80,0,0,1576,1577,5,97,0,0,1577, + 1578,5,114,0,0,1578,1579,5,97,0,0,1579,1580,5,108,0,0,1580,1581, + 5,108,0,0,1581,1582,5,101,0,0,1582,1583,5,108,0,0,1583,176,1,0,0, + 0,1584,1585,5,76,0,0,1585,1586,5,97,0,0,1586,1587,5,115,0,0,1587, + 1588,5,116,0,0,1588,1589,5,84,0,0,1589,1590,5,101,0,0,1590,1591, + 5,115,0,0,1591,1592,5,116,0,0,1592,1593,5,105,0,0,1593,1594,5,110, + 0,0,1594,1595,5,103,0,0,1595,1596,5,85,0,0,1596,1597,5,112,0,0,1597, + 1598,5,103,0,0,1598,1599,5,114,0,0,1599,1600,5,97,0,0,1600,1601, + 5,100,0,0,1601,1602,5,101,0,0,1602,1603,5,67,0,0,1603,1604,5,104, + 0,0,1604,1605,5,101,0,0,1605,1606,5,99,0,0,1606,1607,5,107,0,0,1607, + 178,1,0,0,0,1608,1609,5,76,0,0,1609,1610,5,97,0,0,1610,1611,5,115, + 0,0,1611,1612,5,116,0,0,1612,1613,5,85,0,0,1613,1614,5,112,0,0,1614, + 1615,5,103,0,0,1615,1616,5,114,0,0,1616,1617,5,97,0,0,1617,1618, + 5,100,0,0,1618,1619,5,101,0,0,1619,1620,5,67,0,0,1620,1621,5,104, + 0,0,1621,1622,5,101,0,0,1622,1623,5,99,0,0,1623,1624,5,107,0,0,1624, + 180,1,0,0,0,1625,1626,5,79,0,0,1626,1627,5,82,0,0,1627,1628,5,71, + 0,0,1628,1629,5,65,0,0,1629,1630,5,78,0,0,1630,1631,5,73,0,0,1631, + 1632,5,90,0,0,1632,1633,5,65,0,0,1633,1634,5,84,0,0,1634,1635,5, + 73,0,0,1635,1636,5,79,0,0,1636,1637,5,78,0,0,1637,1638,5,78,0,0, + 1638,1639,5,65,0,0,1639,1640,5,77,0,0,1640,1641,5,69,0,0,1641,182, + 1,0,0,0,1642,1643,5,84,0,0,1643,1644,5,97,0,0,1644,1645,5,114,0, + 0,1645,1646,5,103,0,0,1646,1647,5,101,0,0,1647,1648,5,116,0,0,1648, + 1649,5,65,0,0,1649,1650,5,116,0,0,1650,1651,5,116,0,0,1651,1652, + 5,114,0,0,1652,1653,5,105,0,0,1653,1654,5,98,0,0,1654,1655,5,117, + 0,0,1655,1656,5,116,0,0,1656,1657,5,101,0,0,1657,1658,5,115,0,0, + 1658,184,1,0,0,0,1659,1660,5,67,0,0,1660,1661,5,114,0,0,1661,1662, + 5,101,0,0,1662,1663,5,97,0,0,1663,1664,5,116,0,0,1664,1665,5,101, + 0,0,1665,1666,5,100,0,0,1666,1667,5,79,0,0,1667,1668,5,110,0,0,1668, + 1669,5,84,0,0,1669,1670,5,111,0,0,1670,1671,5,111,0,0,1671,1672, + 5,108,0,0,1672,1673,5,115,0,0,1673,1674,5,86,0,0,1674,1675,5,101, + 0,0,1675,1676,5,114,0,0,1676,1677,5,115,0,0,1677,1678,5,105,0,0, + 1678,1679,5,111,0,0,1679,1680,5,110,0,0,1680,186,1,0,0,0,1681,1682, + 5,84,0,0,1682,1683,5,101,0,0,1683,1684,5,115,0,0,1684,1685,5,116, + 0,0,1685,1686,5,84,0,0,1686,1687,5,97,0,0,1687,1688,5,114,0,0,1688, + 1689,5,103,0,0,1689,1690,5,101,0,0,1690,1691,5,116,0,0,1691,1692, + 5,73,0,0,1692,1693,5,68,0,0,1693,188,1,0,0,0,1694,1695,5,68,0,0, + 1695,1696,5,101,0,0,1696,1697,5,118,0,0,1697,1698,5,101,0,0,1698, + 1699,5,108,0,0,1699,1700,5,111,0,0,1700,1701,5,112,0,0,1701,1702, + 5,109,0,0,1702,1703,5,101,0,0,1703,1704,5,110,0,0,1704,1705,5,116, + 0,0,1705,1706,5,84,0,0,1706,1707,5,101,0,0,1707,1708,5,97,0,0,1708, + 1709,5,109,0,0,1709,190,1,0,0,0,1710,1711,5,68,0,0,1711,1712,5,101, + 0,0,1712,1713,5,118,0,0,1713,1714,5,101,0,0,1714,1715,5,108,0,0, + 1715,1716,5,111,0,0,1716,1717,5,112,0,0,1717,1718,5,109,0,0,1718, + 1719,5,101,0,0,1719,1720,5,110,0,0,1720,1721,5,116,0,0,1721,1722, + 5,84,0,0,1722,1723,5,101,0,0,1723,1724,5,97,0,0,1724,1725,5,109, + 0,0,1725,1726,5,78,0,0,1726,1727,5,97,0,0,1727,1728,5,109,0,0,1728, + 1729,5,101,0,0,1729,192,1,0,0,0,1730,1731,5,80,0,0,1731,1732,5,114, + 0,0,1732,1733,5,111,0,0,1733,1734,5,118,0,0,1734,1735,5,105,0,0, + 1735,1736,5,115,0,0,1736,1737,5,105,0,0,1737,1738,5,111,0,0,1738, + 1739,5,110,0,0,1739,1740,5,105,0,0,1740,1741,5,110,0,0,1741,1742, + 5,103,0,0,1742,1743,5,83,0,0,1743,1744,5,116,0,0,1744,1745,5,121, + 0,0,1745,1746,5,108,0,0,1746,1747,5,101,0,0,1747,194,1,0,0,0,1748, + 1749,5,99,0,0,1749,1750,5,111,0,0,1750,1751,5,109,0,0,1751,1752, + 5,112,0,0,1752,1753,5,97,0,0,1753,1754,5,116,0,0,1754,1755,5,105, + 0,0,1755,1756,5,98,0,0,1756,1757,5,105,0,0,1757,1758,5,108,0,0,1758, + 1759,5,105,0,0,1759,1760,5,116,0,0,1760,1761,5,121,0,0,1761,1762, + 5,86,0,0,1762,1763,5,101,0,0,1763,1764,5,114,0,0,1764,1765,5,115, + 0,0,1765,1766,5,105,0,0,1766,1767,5,111,0,0,1767,1768,5,110,0,0, + 1768,196,1,0,0,0,1769,1770,5,100,0,0,1770,1771,5,101,0,0,1771,1772, + 5,118,0,0,1772,1773,5,101,0,0,1773,1774,5,108,0,0,1774,1775,5,111, + 0,0,1775,1776,5,112,0,0,1776,1777,5,109,0,0,1777,1778,5,101,0,0, + 1778,1779,5,110,0,0,1779,1780,5,116,0,0,1780,1781,5,82,0,0,1781, + 1782,5,101,0,0,1782,1783,5,103,0,0,1783,1784,5,105,0,0,1784,1785, + 5,111,0,0,1785,1786,5,110,0,0,1786,198,1,0,0,0,1787,1788,5,104,0, + 0,1788,1789,5,97,0,0,1789,1790,5,115,0,0,1790,1791,5,83,0,0,1791, + 1792,5,99,0,0,1792,1793,5,97,0,0,1793,1794,5,110,0,0,1794,1795,5, + 110,0,0,1795,1796,5,101,0,0,1796,1797,5,100,0,0,1797,1798,5,70,0, + 0,1798,1799,5,111,0,0,1799,1800,5,114,0,0,1800,1801,5,69,0,0,1801, + 1802,5,110,0,0,1802,1803,5,99,0,0,1803,1804,5,111,0,0,1804,1805, + 5,100,0,0,1805,1806,5,105,0,0,1806,1807,5,110,0,0,1807,1808,5,103, + 0,0,1808,1809,5,115,0,0,1809,200,1,0,0,0,1810,1811,5,107,0,0,1811, + 1812,5,110,0,0,1812,1813,5,111,0,0,1813,1814,5,119,0,0,1814,1815, + 5,110,0,0,1815,1816,5,82,0,0,1816,1817,5,101,0,0,1817,1818,5,103, + 0,0,1818,1819,5,105,0,0,1819,1820,5,111,0,0,1820,1821,5,110,0,0, + 1821,1822,5,115,0,0,1822,202,1,0,0,0,1823,1824,5,109,0,0,1824,1825, + 5,97,0,0,1825,1826,5,105,0,0,1826,1827,5,110,0,0,1827,1828,5,71, + 0,0,1828,1829,5,114,0,0,1829,1830,5,111,0,0,1830,1831,5,117,0,0, + 1831,1832,5,112,0,0,1832,204,1,0,0,0,1833,1834,5,112,0,0,1834,1835, + 5,114,0,0,1835,1836,5,111,0,0,1836,1837,5,100,0,0,1837,1838,5,117, + 0,0,1838,1839,5,99,0,0,1839,1840,5,116,0,0,1840,1841,5,82,0,0,1841, + 1842,5,101,0,0,1842,1843,5,102,0,0,1843,1844,5,71,0,0,1844,1845, + 5,114,0,0,1845,1846,5,111,0,0,1846,1847,5,117,0,0,1847,1848,5,112, + 0,0,1848,206,1,0,0,0,1849,1850,5,112,0,0,1850,1851,5,97,0,0,1851, + 1852,5,99,0,0,1852,1853,5,107,0,0,1853,1854,5,97,0,0,1854,1855,5, + 103,0,0,1855,1856,5,101,0,0,1856,1857,5,82,0,0,1857,1858,5,101,0, + 0,1858,1859,5,102,0,0,1859,1860,5,101,0,0,1860,1861,5,114,0,0,1861, + 1862,5,101,0,0,1862,1863,5,110,0,0,1863,1864,5,99,0,0,1864,1865, + 5,101,0,0,1865,1866,5,115,0,0,1866,208,1,0,0,0,1867,1868,5,112,0, + 0,1868,1869,5,114,0,0,1869,1870,5,111,0,0,1870,1871,5,106,0,0,1871, + 1872,5,101,0,0,1872,1873,5,99,0,0,1873,1874,5,116,0,0,1874,1875, + 5,68,0,0,1875,1876,5,105,0,0,1876,1877,5,114,0,0,1877,1878,5,80, + 0,0,1878,1879,5,97,0,0,1879,1880,5,116,0,0,1880,1881,5,104,0,0,1881, + 210,1,0,0,0,1882,1883,5,112,0,0,1883,1884,5,114,0,0,1884,1885,5, + 111,0,0,1885,1886,5,106,0,0,1886,1887,5,101,0,0,1887,1888,5,99,0, + 0,1888,1889,5,116,0,0,1889,1890,5,82,0,0,1890,1891,5,101,0,0,1891, + 1892,5,102,0,0,1892,1893,5,101,0,0,1893,1894,5,114,0,0,1894,1895, + 5,101,0,0,1895,1896,5,110,0,0,1896,1897,5,99,0,0,1897,1898,5,101, + 0,0,1898,1899,5,115,0,0,1899,212,1,0,0,0,1900,1901,5,112,0,0,1901, + 1902,5,114,0,0,1902,1903,5,111,0,0,1903,1904,5,106,0,0,1904,1905, + 5,101,0,0,1905,1906,5,99,0,0,1906,1907,5,116,0,0,1907,1908,5,82, + 0,0,1908,1909,5,111,0,0,1909,1910,5,111,0,0,1910,1911,5,116,0,0, + 1911,214,1,0,0,0,1912,1913,5,116,0,0,1913,1914,5,97,0,0,1914,1915, + 5,114,0,0,1915,1916,5,103,0,0,1916,1917,5,101,0,0,1917,1918,5,116, + 0,0,1918,1919,5,115,0,0,1919,216,1,0,0,0,1920,1921,5,105,0,0,1921, + 1922,5,110,0,0,1922,1923,5,112,0,0,1923,1924,5,117,0,0,1924,1925, + 5,116,0,0,1925,1926,5,70,0,0,1926,1927,5,105,0,0,1927,1928,5,108, + 0,0,1928,1929,5,101,0,0,1929,1930,5,76,0,0,1930,1931,5,105,0,0,1931, + 1932,5,115,0,0,1932,1933,5,116,0,0,1933,1934,5,80,0,0,1934,1935, + 5,97,0,0,1935,1936,5,116,0,0,1936,1937,5,104,0,0,1937,1938,5,115, + 0,0,1938,218,1,0,0,0,1939,1940,5,105,0,0,1940,1941,5,110,0,0,1941, + 1942,5,112,0,0,1942,1943,5,117,0,0,1943,1944,5,116,0,0,1944,1945, + 5,80,0,0,1945,1946,5,97,0,0,1946,1947,5,116,0,0,1947,1948,5,104, + 0,0,1948,1949,5,115,0,0,1949,220,1,0,0,0,1950,1951,5,111,0,0,1951, + 1952,5,117,0,0,1952,1953,5,116,0,0,1953,1954,5,112,0,0,1954,1955, + 5,117,0,0,1955,1956,5,116,0,0,1956,1957,5,70,0,0,1957,1958,5,105, + 0,0,1958,1959,5,108,0,0,1959,1960,5,101,0,0,1960,1961,5,76,0,0,1961, + 1962,5,105,0,0,1962,1963,5,115,0,0,1963,1964,5,116,0,0,1964,1965, + 5,80,0,0,1965,1966,5,97,0,0,1966,1967,5,116,0,0,1967,1968,5,104, + 0,0,1968,1969,5,115,0,0,1969,222,1,0,0,0,1970,1971,5,111,0,0,1971, + 1972,5,117,0,0,1972,1973,5,116,0,0,1973,1974,5,112,0,0,1974,1975, + 5,117,0,0,1975,1976,5,116,0,0,1976,1977,5,80,0,0,1977,1978,5,97, + 0,0,1978,1979,5,116,0,0,1979,1980,5,104,0,0,1980,1981,5,115,0,0, + 1981,224,1,0,0,0,1982,1983,5,115,0,0,1983,1984,5,104,0,0,1984,1985, + 5,101,0,0,1985,1986,5,108,0,0,1986,1987,5,108,0,0,1987,1988,5,80, + 0,0,1988,1989,5,97,0,0,1989,1990,5,116,0,0,1990,1991,5,104,0,0,1991, + 226,1,0,0,0,1992,1993,5,115,0,0,1993,1994,5,104,0,0,1994,1995,5, + 101,0,0,1995,1996,5,108,0,0,1996,1997,5,108,0,0,1997,1998,5,83,0, + 0,1998,1999,5,99,0,0,1999,2000,5,114,0,0,2000,2001,5,105,0,0,2001, + 2002,5,112,0,0,2002,2003,5,116,0,0,2003,228,1,0,0,0,2004,2005,5, + 115,0,0,2005,2006,5,104,0,0,2006,2007,5,111,0,0,2007,2008,5,119, + 0,0,2008,2009,5,69,0,0,2009,2010,5,110,0,0,2010,2011,5,118,0,0,2011, + 2012,5,86,0,0,2012,2013,5,97,0,0,2013,2014,5,114,0,0,2014,2015,5, + 115,0,0,2015,2016,5,73,0,0,2016,2017,5,110,0,0,2017,2018,5,76,0, + 0,2018,2019,5,111,0,0,2019,2020,5,103,0,0,2020,230,1,0,0,0,2021, + 2022,5,116,0,0,2022,2023,5,97,0,0,2023,2024,5,114,0,0,2024,2025, + 5,103,0,0,2025,2026,5,101,0,0,2026,2027,5,116,0,0,2027,232,1,0,0, + 0,2028,2029,5,116,0,0,2029,2030,5,97,0,0,2030,2031,5,114,0,0,2031, + 2032,5,103,0,0,2032,2033,5,101,0,0,2033,2034,5,116,0,0,2034,2035, + 5,80,0,0,2035,2036,5,114,0,0,2036,2037,5,111,0,0,2037,2038,5,120, + 0,0,2038,2039,5,121,0,0,2039,234,1,0,0,0,2040,2041,5,102,0,0,2041, + 2042,5,105,0,0,2042,2043,5,108,0,0,2043,2044,5,101,0,0,2044,2045, + 5,84,0,0,2045,2046,5,121,0,0,2046,2047,5,112,0,0,2047,2048,5,101, + 0,0,2048,236,1,0,0,0,2049,2050,5,114,0,0,2050,2051,5,101,0,0,2051, + 2052,5,109,0,0,2052,2053,5,111,0,0,2053,2054,5,116,0,0,2054,2055, + 5,101,0,0,2055,2056,5,82,0,0,2056,2057,5,101,0,0,2057,2058,5,102, + 0,0,2058,238,1,0,0,0,2059,2060,5,98,0,0,2060,2061,5,97,0,0,2061, + 2062,5,115,0,0,2062,2063,5,101,0,0,2063,2064,5,67,0,0,2064,2065, + 5,111,0,0,2065,2066,5,110,0,0,2066,2067,5,102,0,0,2067,2068,5,105, + 0,0,2068,2069,5,103,0,0,2069,2070,5,117,0,0,2070,2071,5,114,0,0, + 2071,2072,5,97,0,0,2072,2073,5,116,0,0,2073,2074,5,105,0,0,2074, + 2075,5,111,0,0,2075,2076,5,110,0,0,2076,2077,5,82,0,0,2077,2078, + 5,101,0,0,2078,2079,5,102,0,0,2079,2080,5,101,0,0,2080,2081,5,114, + 0,0,2081,2082,5,101,0,0,2082,2083,5,110,0,0,2083,2084,5,99,0,0,2084, + 2085,5,101,0,0,2085,240,1,0,0,0,2086,2087,5,98,0,0,2087,2088,5,117, + 0,0,2088,2089,5,105,0,0,2089,2090,5,108,0,0,2090,2091,5,100,0,0, + 2091,2092,5,83,0,0,2092,2093,5,101,0,0,2093,2094,5,116,0,0,2094, + 2095,5,116,0,0,2095,2096,5,105,0,0,2096,2097,5,110,0,0,2097,2098, + 5,103,0,0,2098,2099,5,115,0,0,2099,242,1,0,0,0,2100,2101,5,100,0, + 0,2101,2102,5,115,0,0,2102,2103,5,116,0,0,2103,2104,5,80,0,0,2104, + 2105,5,97,0,0,2105,2106,5,116,0,0,2106,2107,5,104,0,0,2107,244,1, + 0,0,0,2108,2109,5,100,0,0,2109,2110,5,115,0,0,2110,2111,5,116,0, + 0,2111,2112,5,83,0,0,2112,2113,5,117,0,0,2113,2114,5,98,0,0,2114, + 2115,5,102,0,0,2115,2116,5,111,0,0,2116,2117,5,108,0,0,2117,2118, + 5,100,0,0,2118,2119,5,101,0,0,2119,2120,5,114,0,0,2120,2121,5,83, + 0,0,2121,2122,5,112,0,0,2122,2123,5,101,0,0,2123,2124,5,99,0,0,2124, + 246,1,0,0,0,2125,2126,5,80,0,0,2126,2127,5,114,0,0,2127,2128,5,111, + 0,0,2128,2129,5,100,0,0,2129,2130,5,117,0,0,2130,2131,5,99,0,0,2131, + 2132,5,116,0,0,2132,2133,5,71,0,0,2133,2134,5,114,0,0,2134,2135, + 5,111,0,0,2135,2136,5,117,0,0,2136,2137,5,112,0,0,2137,248,1,0,0, + 0,2138,2139,5,80,0,0,2139,2140,5,114,0,0,2140,2141,5,111,0,0,2141, + 2142,5,106,0,0,2142,2143,5,101,0,0,2143,2144,5,99,0,0,2144,2145, + 5,116,0,0,2145,2146,5,82,0,0,2146,2147,5,101,0,0,2147,2148,5,102, + 0,0,2148,250,1,0,0,0,2149,2150,5,98,0,0,2150,2151,5,117,0,0,2151, + 2152,5,105,0,0,2152,2153,5,108,0,0,2153,2154,5,100,0,0,2154,2155, + 5,67,0,0,2155,2156,5,111,0,0,2156,2157,5,110,0,0,2157,2158,5,102, + 0,0,2158,2159,5,105,0,0,2159,2160,5,103,0,0,2160,2161,5,117,0,0, + 2161,2162,5,114,0,0,2162,2163,5,97,0,0,2163,2164,5,116,0,0,2164, + 2165,5,105,0,0,2165,2166,5,111,0,0,2166,2167,5,110,0,0,2167,2168, + 5,115,0,0,2168,252,1,0,0,0,2169,2170,5,100,0,0,2170,2171,5,101,0, + 0,2171,2172,5,102,0,0,2172,2173,5,97,0,0,2173,2174,5,117,0,0,2174, + 2175,5,108,0,0,2175,2176,5,116,0,0,2176,2177,5,67,0,0,2177,2178, + 5,111,0,0,2178,2179,5,110,0,0,2179,2180,5,102,0,0,2180,2181,5,105, + 0,0,2181,2182,5,103,0,0,2182,2183,5,117,0,0,2183,2184,5,114,0,0, + 2184,2185,5,97,0,0,2185,2186,5,116,0,0,2186,2187,5,105,0,0,2187, + 2188,5,111,0,0,2188,2189,5,110,0,0,2189,2190,5,73,0,0,2190,2191, + 5,115,0,0,2191,2192,5,86,0,0,2192,2193,5,105,0,0,2193,2194,5,115, + 0,0,2194,2195,5,105,0,0,2195,2196,5,98,0,0,2196,2197,5,108,0,0,2197, + 2198,5,101,0,0,2198,254,1,0,0,0,2199,2200,5,100,0,0,2200,2201,5, + 101,0,0,2201,2202,5,102,0,0,2202,2203,5,97,0,0,2203,2204,5,117,0, + 0,2204,2205,5,108,0,0,2205,2206,5,116,0,0,2206,2207,5,67,0,0,2207, + 2208,5,111,0,0,2208,2209,5,110,0,0,2209,2210,5,102,0,0,2210,2211, + 5,105,0,0,2211,2212,5,103,0,0,2212,2213,5,117,0,0,2213,2214,5,114, + 0,0,2214,2215,5,97,0,0,2215,2216,5,116,0,0,2216,2217,5,105,0,0,2217, + 2218,5,111,0,0,2218,2219,5,110,0,0,2219,2220,5,78,0,0,2220,2221, + 5,97,0,0,2221,2222,5,109,0,0,2222,2223,5,101,0,0,2223,256,1,0,0, + 0,2224,2225,5,115,0,0,2225,2226,5,101,0,0,2226,2227,5,116,0,0,2227, + 2228,5,116,0,0,2228,2229,5,105,0,0,2229,2230,5,110,0,0,2230,2231, + 5,103,0,0,2231,2232,5,115,0,0,2232,258,1,0,0,0,2233,2234,5,83,0, + 0,2234,2235,5,121,0,0,2235,2236,5,115,0,0,2236,2237,5,116,0,0,2237, + 2238,5,101,0,0,2238,2239,5,109,0,0,2239,2240,5,67,0,0,2240,2241, + 5,97,0,0,2241,2242,5,112,0,0,2242,2243,5,97,0,0,2243,2244,5,98,0, + 0,2244,2245,5,105,0,0,2245,2246,5,108,0,0,2246,2247,5,105,0,0,2247, + 2248,5,116,0,0,2248,2249,5,105,0,0,2249,2250,5,101,0,0,2250,2251, + 5,115,0,0,2251,260,1,0,0,0,2252,2253,5,99,0,0,2253,2254,5,117,0, + 0,2254,2255,5,114,0,0,2255,2256,5,114,0,0,2256,2257,5,101,0,0,2257, + 2258,5,110,0,0,2258,2259,5,116,0,0,2259,2260,5,86,0,0,2260,2261, + 5,101,0,0,2261,2262,5,114,0,0,2262,2263,5,115,0,0,2263,2264,5,105, + 0,0,2264,2265,5,111,0,0,2265,2266,5,110,0,0,2266,262,1,0,0,0,2267, + 2268,5,118,0,0,2268,2269,5,101,0,0,2269,2270,5,114,0,0,2270,2271, + 5,115,0,0,2271,2272,5,105,0,0,2272,2273,5,111,0,0,2273,2274,5,110, + 0,0,2274,2275,5,71,0,0,2275,2276,5,114,0,0,2276,2277,5,111,0,0,2277, + 2278,5,117,0,0,2278,2279,5,112,0,0,2279,2280,5,84,0,0,2280,2281, + 5,121,0,0,2281,2282,5,112,0,0,2282,2283,5,101,0,0,2283,264,1,0,0, + 0,2284,2285,5,67,0,0,2285,2286,5,76,0,0,2286,2287,5,65,0,0,2287, + 2288,5,83,0,0,2288,2289,5,83,0,0,2289,2290,5,80,0,0,2290,2291,5, + 82,0,0,2291,2292,5,69,0,0,2292,2293,5,70,0,0,2293,2294,5,73,0,0, + 2294,2295,5,88,0,0,2295,266,1,0,0,0,2296,2297,3,279,139,0,2297,2298, + 3,279,139,0,2298,2299,3,279,139,0,2299,2300,3,279,139,0,2300,2301, + 3,279,139,0,2301,2302,3,279,139,0,2302,2303,3,279,139,0,2303,2304, + 3,279,139,0,2304,2305,3,279,139,0,2305,2306,3,279,139,0,2306,2307, + 3,279,139,0,2307,2308,3,279,139,0,2308,2309,3,279,139,0,2309,2310, + 3,279,139,0,2310,2311,3,279,139,0,2311,2312,3,279,139,0,2312,2313, + 3,279,139,0,2313,2314,3,279,139,0,2314,2315,3,279,139,0,2315,2316, + 3,279,139,0,2316,2317,3,279,139,0,2317,2318,3,279,139,0,2318,2319, + 3,279,139,0,2319,2321,3,279,139,0,2320,2322,3,279,139,0,2321,2320, + 1,0,0,0,2321,2322,1,0,0,0,2322,2324,1,0,0,0,2323,2325,3,279,139, + 0,2324,2323,1,0,0,0,2324,2325,1,0,0,0,2325,2327,1,0,0,0,2326,2328, + 3,279,139,0,2327,2326,1,0,0,0,2327,2328,1,0,0,0,2328,2330,1,0,0, + 0,2329,2331,3,279,139,0,2330,2329,1,0,0,0,2330,2331,1,0,0,0,2331, + 2333,1,0,0,0,2332,2334,3,279,139,0,2333,2332,1,0,0,0,2333,2334,1, + 0,0,0,2334,2336,1,0,0,0,2335,2337,3,279,139,0,2336,2335,1,0,0,0, + 2336,2337,1,0,0,0,2337,2339,1,0,0,0,2338,2340,3,279,139,0,2339,2338, + 1,0,0,0,2339,2340,1,0,0,0,2340,2342,1,0,0,0,2341,2343,3,279,139, + 0,2342,2341,1,0,0,0,2342,2343,1,0,0,0,2343,2382,1,0,0,0,2344,2345, + 5,70,0,0,2345,2346,5,82,0,0,2346,2350,5,95,0,0,2347,2348,5,71,0, + 0,2348,2350,5,95,0,0,2349,2344,1,0,0,0,2349,2347,1,0,0,0,2350,2352, + 1,0,0,0,2351,2353,3,279,139,0,2352,2351,1,0,0,0,2353,2354,1,0,0, + 0,2354,2352,1,0,0,0,2354,2355,1,0,0,0,2355,2382,1,0,0,0,2356,2357, + 3,277,138,0,2357,2358,3,277,138,0,2358,2359,3,277,138,0,2359,2360, + 3,277,138,0,2360,2361,3,277,138,0,2361,2362,3,277,138,0,2362,2363, + 3,277,138,0,2363,2364,3,277,138,0,2364,2365,3,277,138,0,2365,2366, + 3,277,138,0,2366,2367,3,277,138,0,2367,2368,3,277,138,0,2368,2369, + 3,277,138,0,2369,2370,3,277,138,0,2370,2371,3,277,138,0,2371,2372, + 3,277,138,0,2372,2373,3,277,138,0,2373,2374,3,277,138,0,2374,2375, + 3,277,138,0,2375,2376,3,277,138,0,2376,2377,3,277,138,0,2377,2378, + 3,277,138,0,2378,2379,3,277,138,0,2379,2380,3,277,138,0,2380,2382, + 1,0,0,0,2381,2296,1,0,0,0,2381,2349,1,0,0,0,2381,2356,1,0,0,0,2382, + 268,1,0,0,0,2383,2385,5,34,0,0,2384,2386,3,281,140,0,2385,2384,1, + 0,0,0,2386,2387,1,0,0,0,2387,2385,1,0,0,0,2387,2388,1,0,0,0,2388, + 2389,1,0,0,0,2389,2390,5,34,0,0,2390,2394,1,0,0,0,2391,2392,5,34, + 0,0,2392,2394,5,34,0,0,2393,2383,1,0,0,0,2393,2391,1,0,0,0,2394, + 270,1,0,0,0,2395,2401,3,275,137,0,2396,2401,3,35,17,0,2397,2401, + 3,19,9,0,2398,2401,3,33,16,0,2399,2401,3,21,10,0,2400,2395,1,0,0, + 0,2400,2396,1,0,0,0,2400,2397,1,0,0,0,2400,2398,1,0,0,0,2400,2399, + 1,0,0,0,2401,2402,1,0,0,0,2402,2400,1,0,0,0,2402,2403,1,0,0,0,2403, + 272,1,0,0,0,2404,2405,5,36,0,0,2405,2407,3,271,135,0,2406,2404,1, + 0,0,0,2407,2408,1,0,0,0,2408,2406,1,0,0,0,2408,2409,1,0,0,0,2409, + 2411,1,0,0,0,2410,2412,3,33,16,0,2411,2410,1,0,0,0,2411,2412,1,0, + 0,0,2412,274,1,0,0,0,2413,2414,7,1,0,0,2414,276,1,0,0,0,2415,2416, + 7,2,0,0,2416,278,1,0,0,0,2417,2418,7,3,0,0,2418,280,1,0,0,0,2419, + 2423,8,4,0,0,2420,2421,5,92,0,0,2421,2423,5,34,0,0,2422,2419,1,0, + 0,0,2422,2420,1,0,0,0,2423,282,1,0,0,0,2424,2426,7,5,0,0,2425,2424, + 1,0,0,0,2426,2427,1,0,0,0,2427,2425,1,0,0,0,2427,2428,1,0,0,0,2428, + 2429,1,0,0,0,2429,2430,6,141,0,0,2430,284,1,0,0,0,2431,2432,5,47, + 0,0,2432,2433,5,42,0,0,2433,2437,1,0,0,0,2434,2436,9,0,0,0,2435, + 2434,1,0,0,0,2436,2439,1,0,0,0,2437,2438,1,0,0,0,2437,2435,1,0,0, + 0,2438,2440,1,0,0,0,2439,2437,1,0,0,0,2440,2441,5,42,0,0,2441,2442, + 5,47,0,0,2442,2443,1,0,0,0,2443,2444,6,142,0,0,2444,286,1,0,0,0, + 2445,2446,5,47,0,0,2446,2447,5,47,0,0,2447,2451,1,0,0,0,2448,2450, + 8,6,0,0,2449,2448,1,0,0,0,2450,2453,1,0,0,0,2451,2449,1,0,0,0,2451, + 2452,1,0,0,0,2452,2454,1,0,0,0,2453,2451,1,0,0,0,2454,2455,6,143, + 0,0,2455,288,1,0,0,0,23,0,337,2321,2324,2327,2330,2333,2336,2339, + 2342,2349,2354,2381,2387,2393,2400,2402,2408,2411,2422,2427,2437, + 2451,1,6,0,0 ] class PBXProjLexer(Lexer): @@ -944,132 +946,132 @@ class PBXProjLexer(Lexer): T__4 = 5 T__5 = 6 T__6 = 7 - T__7 = 8 - T__8 = 9 - T__9 = 10 - T__10 = 11 - T__11 = 12 - T__12 = 13 - T__13 = 14 - T__14 = 15 - T__15 = 16 - T__16 = 17 - T__17 = 18 - T__18 = 19 - T__19 = 20 - T__20 = 21 - T__21 = 22 - T__22 = 23 - T__23 = 24 - T__24 = 25 - T__25 = 26 - T__26 = 27 - T__27 = 28 - T__28 = 29 - T__29 = 30 - T__30 = 31 - T__31 = 32 - T__32 = 33 - T__33 = 34 - T__34 = 35 - T__35 = 36 - T__36 = 37 - T__37 = 38 - T__38 = 39 - T__39 = 40 - T__40 = 41 - T__41 = 42 - T__42 = 43 - T__43 = 44 - T__44 = 45 - T__45 = 46 - T__46 = 47 - T__47 = 48 - T__48 = 49 - T__49 = 50 - T__50 = 51 - T__51 = 52 - T__52 = 53 - T__53 = 54 - T__54 = 55 - T__55 = 56 - T__56 = 57 - T__57 = 58 - T__58 = 59 - T__59 = 60 - T__60 = 61 - T__61 = 62 - T__62 = 63 - T__63 = 64 - T__64 = 65 - T__65 = 66 - T__66 = 67 - T__67 = 68 - T__68 = 69 - T__69 = 70 - T__70 = 71 - T__71 = 72 - T__72 = 73 - T__73 = 74 - T__74 = 75 - T__75 = 76 - T__76 = 77 - T__77 = 78 - T__78 = 79 - T__79 = 80 - T__80 = 81 - T__81 = 82 - T__82 = 83 - T__83 = 84 - T__84 = 85 - T__85 = 86 - T__86 = 87 - T__87 = 88 - T__88 = 89 - T__89 = 90 - T__90 = 91 - T__91 = 92 - T__92 = 93 - T__93 = 94 - T__94 = 95 - T__95 = 96 - T__96 = 97 - T__97 = 98 - T__98 = 99 - T__99 = 100 - T__100 = 101 - T__101 = 102 - T__102 = 103 - T__103 = 104 - T__104 = 105 - T__105 = 106 - T__106 = 107 - T__107 = 108 - T__108 = 109 - T__109 = 110 - T__110 = 111 - T__111 = 112 - T__112 = 113 - T__113 = 114 - T__114 = 115 - T__115 = 116 - T__116 = 117 - T__117 = 118 - T__118 = 119 - T__119 = 120 - T__120 = 121 - T__121 = 122 - T__122 = 123 - T__123 = 124 - CLASSES = 125 - ISA = 126 - OBJECTS = 127 - ROOT_OBJECT = 128 - NUMBER = 129 - DOT = 130 - DASH = 131 - UNDERSCORE = 132 - SLASH = 133 + ARCHIVE_VERSION = 8 + CLASSES = 9 + DASH = 10 + DOT = 11 + ISA = 12 + NUMBER = 13 + OBJECT_VERSION = 14 + OBJECTS = 15 + ROOT_OBJECT = 16 + SLASH = 17 + UNDERSCORE = 18 + PBX_AGGREGATE_TARGET = 19 + PBX_BUILD_FILE = 20 + PBX_CONTAINER_ITEM_PROXY = 21 + PBX_COPY_FILES_BUILD_PHASE = 22 + PBX_FILE_REFERENCE = 23 + PBX_FRAMEWORKS_BUILD_PHASE = 24 + PBX_GROUP = 25 + PBX_HEADERS_BUILD_PHASE = 26 + PBX_NATIVE_TARGET = 27 + PBX_LEGACY_TARGET = 28 + PBX_PROJECT = 29 + PBX_REFERENCE_PROXY = 30 + PBX_RESOURCES_BUILD_PHASE = 31 + PBX_SHELL_SCRIPT_BUILD_PHASE = 32 + PBX_SOURCES_BUILD_PHASE = 33 + PBX_TARGET_DEPENDENCY = 34 + PBX_VARIANT_GROUP = 35 + XC_BUILD_CONFIGURATION = 36 + XC_CONFIGURATION_LIST = 37 + XC_REMOTE_SWIFT_PACKAGE_REFERENCE = 38 + XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY = 39 + XC_VERSION_GROUP = 40 + FILE_REF = 41 + PRODUCT_REF = 42 + CONTAINER_PORTAL = 43 + PROXY_TYPE = 44 + REMOTE_GLOBAL_ID_STRING = 45 + REMOTE_INFO = 46 + FILE_ENCODING = 47 + COMMENTS = 48 + EXPLICIT_FILE_TYPE = 49 + LAST_KNOWN_FILE_TYPE = 50 + INCLUDE_IN_INDEX = 51 + INDENT_WIDTH = 52 + TAB_WIDTH = 53 + USES_TABS = 54 + WRAPS_LINES = 55 + PLATFORM_FILTER = 56 + PLATFORM_FILTERS = 57 + CHILDREN = 58 + PRODUCT_INSTALL_PATH = 59 + REPOSITORY_URL = 60 + REQUIREMENT = 61 + PACKAGE = 62 + PACKAGE_PRODUCT_DEPENDENCIES = 63 + NAME = 64 + PATH = 65 + SOURCE_TREE = 66 + BUILD_ACTION_MASK = 67 + FILES = 68 + RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING = 69 + BUILD_CONFIGURATION_LIST = 70 + BUILD_PHASES = 71 + BUILD_RULES = 72 + BUILD_ARGUMENTS_STRING = 73 + BUILD_TOOL_PATH = 74 + BUILD_WORKING_DIRECTORY = 75 + PASS_BUILD_SETTINGS_IN_ENVIRONMENT = 76 + DEPENDENCIES = 77 + PRODUCT_NAME = 78 + PRODUCT_REFERENCE = 79 + PRODUCT_TYPE = 80 + LINE_ENDING = 81 + XC_LANGUAGE_SPECIFICATION_IDENTIFIER = 82 + PLIST_STRUCTURE_DEFINITION_IDENTIFIER = 83 + ATTRIBUTES = 84 + LAST_SWIFT_MIGRATION = 85 + DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE = 86 + LAST_SWIFT_UPDATE_CHECK = 87 + BUILD_INDEPENDENT_TARGETS_IN_PARALLEL = 88 + LAST_TESTING_UPGRADE_CHECK = 89 + LAST_UPGRADE_CHECK = 90 + ORGANIZATION_NAME = 91 + TARGET_ATTRIBUTES = 92 + CREATED_ON_TOOLS_VERSION = 93 + TEST_TARGET_ID = 94 + DEVELOPMENT_TEAM = 95 + DEVELOPMENT_TEAM_NAME = 96 + PROVISIONING_STYLE = 97 + COMPATIBILITY_VERSION = 98 + DEVELOPMENT_REGION = 99 + HAS_SCANNED_FOR_ENCODINGS = 100 + KNOWN_REGIONS = 101 + MAIN_GROUP = 102 + PRODUCT_REF_GROUP = 103 + PACKAGE_REFERENCES = 104 + PRODUCT_DIR_PATH = 105 + PROJECT_REFERENCES = 106 + PROJECT_ROOT = 107 + TARGETS = 108 + INPUT_FILE_LIST_PATHS = 109 + INPUT_PATHS = 110 + OUTPUT_FILE_LIST_PATHS = 111 + OUTPUT_PATHS = 112 + SHELL_PATH = 113 + SHELL_SCRIPT = 114 + SHOW_ENV_VARS_IN_LOG = 115 + TARGET = 116 + TARGET_PROXY = 117 + FILE_TYPE = 118 + REMOTE_REF = 119 + BASE_CONFIGURATION_REFERENCE = 120 + BUILD_SETTINGS = 121 + DST_PATH = 122 + DST_SUBFOLDER_SPEC = 123 + PRODUCT_GROUP = 124 + PROJECT_REF = 125 + BUILD_CONFIGURATIONS = 126 + DEFAULT_CONFIGURATION_IS_VISIBLE = 127 + DEFAULT_CONFIGURATION_NAME = 128 + SETTINGS = 129 + SYSTEM_CAPABILITIES = 130 + CURRENT_VERSION = 131 + VERSION_GROUP_TYPE = 132 + CLASSPREFIX = 133 REFERENCE = 134 QUOTED_STRING = 135 NON_QUOTED_STRING = 136 @@ -1085,11 +1087,12 @@ class PBXProjLexer(Lexer): modeNames = [ "DEFAULT_MODE" ] literalNames = [ "", - "'{'", "'}'", "'archiveVersion'", "'='", "';'", "'objectVersion'", - "'PBXAggregateTarget'", "'PBXBuildFile'", "'PBXContainerItemProxy'", - "'PBXCopyFilesBuildPhase'", "'PBXFileReference'", "'PBXFrameworksBuildPhase'", - "'PBXGroup'", "'PBXHeadersBuildPhase'", "'PBXNativeTarget'", - "'PBXLegacyTarget'", "'PBXProject'", "'PBXReferenceProxy'", + "'{'", "'}'", "'='", "';'", "'('", "','", "')'", "'archiveVersion'", + "'classes'", "'-'", "'.'", "'isa'", "'objectVersion'", "'objects'", + "'rootObject'", "'/'", "'_'", "'PBXAggregateTarget'", "'PBXBuildFile'", + "'PBXContainerItemProxy'", "'PBXCopyFilesBuildPhase'", "'PBXFileReference'", + "'PBXFrameworksBuildPhase'", "'PBXGroup'", "'PBXHeadersBuildPhase'", + "'PBXNativeTarget'", "'PBXLegacyTarget'", "'PBXProject'", "'PBXReferenceProxy'", "'PBXResourcesBuildPhase'", "'PBXShellScriptBuildPhase'", "'PBXSourcesBuildPhase'", "'PBXTargetDependency'", "'PBXVariantGroup'", "'XCBuildConfiguration'", "'XCConfigurationList'", "'XCRemoteSwiftPackageReference'", @@ -1101,59 +1104,108 @@ class PBXProjLexer(Lexer): "'platformFilters'", "'children'", "'productInstallPath'", "'repositoryURL'", "'requirement'", "'package'", "'packageProductDependencies'", "'name'", "'path'", "'sourceTree'", "'buildActionMask'", "'files'", - "'runOnlyForDeploymentPostprocessing'", "'('", "','", "')'", - "'buildConfigurationList'", "'buildPhases'", "'buildRules'", - "'buildArgumentsString'", "'buildToolPath'", "'buildWorkingDirectory'", - "'passBuildSettingsInEnvironment'", "'dependencies'", "'productName'", - "'productReference'", "'productType'", "'lineEnding'", "'xcLanguageSpecificationIdentifier'", - "'plistStructureDefinitionIdentifier'", "'attributes'", "'LastSwiftMigration'", - "'DefaultBuildSystemTypeForWorkspace'", "'LastSwiftUpdateCheck'", - "'BuildIndependentTargetsInParallel'", "'LastTestingUpgradeCheck'", - "'LastUpgradeCheck'", "'ORGANIZATIONNAME'", "'TargetAttributes'", - "'CreatedOnToolsVersion'", "'TestTargetID'", "'DevelopmentTeam'", - "'DevelopmentTeamName'", "'ProvisioningStyle'", "'compatibilityVersion'", - "'developmentRegion'", "'hasScannedForEncodings'", "'knownRegions'", - "'mainGroup'", "'productRefGroup'", "'packageReferences'", "'projectDirPath'", - "'projectReferences'", "'projectRoot'", "'targets'", "'inputFileListPaths'", - "'inputPaths'", "'outputFileListPaths'", "'outputPaths'", "'shellPath'", - "'shellScript'", "'showEnvVarsInLog'", "'target'", "'targetProxy'", - "'fileType'", "'remoteRef'", "'baseConfigurationReference'", + "'runOnlyForDeploymentPostprocessing'", "'buildConfigurationList'", + "'buildPhases'", "'buildRules'", "'buildArgumentsString'", "'buildToolPath'", + "'buildWorkingDirectory'", "'passBuildSettingsInEnvironment'", + "'dependencies'", "'productName'", "'productReference'", "'productType'", + "'lineEnding'", "'xcLanguageSpecificationIdentifier'", "'plistStructureDefinitionIdentifier'", + "'attributes'", "'LastSwiftMigration'", "'DefaultBuildSystemTypeForWorkspace'", + "'LastSwiftUpdateCheck'", "'BuildIndependentTargetsInParallel'", + "'LastTestingUpgradeCheck'", "'LastUpgradeCheck'", "'ORGANIZATIONNAME'", + "'TargetAttributes'", "'CreatedOnToolsVersion'", "'TestTargetID'", + "'DevelopmentTeam'", "'DevelopmentTeamName'", "'ProvisioningStyle'", + "'compatibilityVersion'", "'developmentRegion'", "'hasScannedForEncodings'", + "'knownRegions'", "'mainGroup'", "'productRefGroup'", "'packageReferences'", + "'projectDirPath'", "'projectReferences'", "'projectRoot'", + "'targets'", "'inputFileListPaths'", "'inputPaths'", "'outputFileListPaths'", + "'outputPaths'", "'shellPath'", "'shellScript'", "'showEnvVarsInLog'", + "'target'", "'targetProxy'", "'fileType'", "'remoteRef'", "'baseConfigurationReference'", "'buildSettings'", "'dstPath'", "'dstSubfolderSpec'", "'ProductGroup'", "'ProjectRef'", "'buildConfigurations'", "'defaultConfigurationIsVisible'", "'defaultConfigurationName'", "'settings'", "'SystemCapabilities'", - "'currentVersion'", "'versionGroupType'", "'CLASSPREFIX'", "'classes'", - "'isa'", "'objects'", "'rootObject'", "'.'", "'-'", "'_'", "'/'" ] + "'currentVersion'", "'versionGroupType'", "'CLASSPREFIX'" ] symbolicNames = [ "", - "CLASSES", "ISA", "OBJECTS", "ROOT_OBJECT", "NUMBER", "DOT", - "DASH", "UNDERSCORE", "SLASH", "REFERENCE", "QUOTED_STRING", - "NON_QUOTED_STRING", "VARIABLE", "ALPHA_NUMERIC", "ALPHA_NUMERIC_CAP", - "WS", "COMMENT", "LINE_COMMENT" ] + "ARCHIVE_VERSION", "CLASSES", "DASH", "DOT", "ISA", "NUMBER", + "OBJECT_VERSION", "OBJECTS", "ROOT_OBJECT", "SLASH", "UNDERSCORE", + "PBX_AGGREGATE_TARGET", "PBX_BUILD_FILE", "PBX_CONTAINER_ITEM_PROXY", + "PBX_COPY_FILES_BUILD_PHASE", "PBX_FILE_REFERENCE", "PBX_FRAMEWORKS_BUILD_PHASE", + "PBX_GROUP", "PBX_HEADERS_BUILD_PHASE", "PBX_NATIVE_TARGET", + "PBX_LEGACY_TARGET", "PBX_PROJECT", "PBX_REFERENCE_PROXY", "PBX_RESOURCES_BUILD_PHASE", + "PBX_SHELL_SCRIPT_BUILD_PHASE", "PBX_SOURCES_BUILD_PHASE", "PBX_TARGET_DEPENDENCY", + "PBX_VARIANT_GROUP", "XC_BUILD_CONFIGURATION", "XC_CONFIGURATION_LIST", + "XC_REMOTE_SWIFT_PACKAGE_REFERENCE", "XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY", + "XC_VERSION_GROUP", "FILE_REF", "PRODUCT_REF", "CONTAINER_PORTAL", + "PROXY_TYPE", "REMOTE_GLOBAL_ID_STRING", "REMOTE_INFO", "FILE_ENCODING", + "COMMENTS", "EXPLICIT_FILE_TYPE", "LAST_KNOWN_FILE_TYPE", "INCLUDE_IN_INDEX", + "INDENT_WIDTH", "TAB_WIDTH", "USES_TABS", "WRAPS_LINES", "PLATFORM_FILTER", + "PLATFORM_FILTERS", "CHILDREN", "PRODUCT_INSTALL_PATH", "REPOSITORY_URL", + "REQUIREMENT", "PACKAGE", "PACKAGE_PRODUCT_DEPENDENCIES", "NAME", + "PATH", "SOURCE_TREE", "BUILD_ACTION_MASK", "FILES", "RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING", + "BUILD_CONFIGURATION_LIST", "BUILD_PHASES", "BUILD_RULES", "BUILD_ARGUMENTS_STRING", + "BUILD_TOOL_PATH", "BUILD_WORKING_DIRECTORY", "PASS_BUILD_SETTINGS_IN_ENVIRONMENT", + "DEPENDENCIES", "PRODUCT_NAME", "PRODUCT_REFERENCE", "PRODUCT_TYPE", + "LINE_ENDING", "XC_LANGUAGE_SPECIFICATION_IDENTIFIER", "PLIST_STRUCTURE_DEFINITION_IDENTIFIER", + "ATTRIBUTES", "LAST_SWIFT_MIGRATION", "DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE", + "LAST_SWIFT_UPDATE_CHECK", "BUILD_INDEPENDENT_TARGETS_IN_PARALLEL", + "LAST_TESTING_UPGRADE_CHECK", "LAST_UPGRADE_CHECK", "ORGANIZATION_NAME", + "TARGET_ATTRIBUTES", "CREATED_ON_TOOLS_VERSION", "TEST_TARGET_ID", + "DEVELOPMENT_TEAM", "DEVELOPMENT_TEAM_NAME", "PROVISIONING_STYLE", + "COMPATIBILITY_VERSION", "DEVELOPMENT_REGION", "HAS_SCANNED_FOR_ENCODINGS", + "KNOWN_REGIONS", "MAIN_GROUP", "PRODUCT_REF_GROUP", "PACKAGE_REFERENCES", + "PRODUCT_DIR_PATH", "PROJECT_REFERENCES", "PROJECT_ROOT", "TARGETS", + "INPUT_FILE_LIST_PATHS", "INPUT_PATHS", "OUTPUT_FILE_LIST_PATHS", + "OUTPUT_PATHS", "SHELL_PATH", "SHELL_SCRIPT", "SHOW_ENV_VARS_IN_LOG", + "TARGET", "TARGET_PROXY", "FILE_TYPE", "REMOTE_REF", "BASE_CONFIGURATION_REFERENCE", + "BUILD_SETTINGS", "DST_PATH", "DST_SUBFOLDER_SPEC", "PRODUCT_GROUP", + "PROJECT_REF", "BUILD_CONFIGURATIONS", "DEFAULT_CONFIGURATION_IS_VISIBLE", + "DEFAULT_CONFIGURATION_NAME", "SETTINGS", "SYSTEM_CAPABILITIES", + "CURRENT_VERSION", "VERSION_GROUP_TYPE", "CLASSPREFIX", "REFERENCE", + "QUOTED_STRING", "NON_QUOTED_STRING", "VARIABLE", "ALPHA_NUMERIC", + "ALPHA_NUMERIC_CAP", "WS", "COMMENT", "LINE_COMMENT" ] ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", - "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", - "T__14", "T__15", "T__16", "T__17", "T__18", "T__19", - "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", - "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", - "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", - "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", - "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", - "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", - "T__56", "T__57", "T__58", "T__59", "T__60", "T__61", - "T__62", "T__63", "T__64", "T__65", "T__66", "T__67", - "T__68", "T__69", "T__70", "T__71", "T__72", "T__73", - "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", - "T__80", "T__81", "T__82", "T__83", "T__84", "T__85", - "T__86", "T__87", "T__88", "T__89", "T__90", "T__91", - "T__92", "T__93", "T__94", "T__95", "T__96", "T__97", - "T__98", "T__99", "T__100", "T__101", "T__102", "T__103", - "T__104", "T__105", "T__106", "T__107", "T__108", "T__109", - "T__110", "T__111", "T__112", "T__113", "T__114", "T__115", - "T__116", "T__117", "T__118", "T__119", "T__120", "T__121", - "T__122", "T__123", "CLASSES", "ISA", "OBJECTS", "ROOT_OBJECT", - "NUMBER", "DOT", "DASH", "UNDERSCORE", "SLASH", "REFERENCE", - "QUOTED_STRING", "NON_QUOTED_STRING", "VARIABLE", "ALPHA_NUMERIC", - "ALPHA_NUMERIC_CAP", "HEX", "QUOTED_STRING_CHARACTER", + "ARCHIVE_VERSION", "CLASSES", "DASH", "DOT", "ISA", "NUMBER", + "OBJECT_VERSION", "OBJECTS", "ROOT_OBJECT", "SLASH", "UNDERSCORE", + "PBX_AGGREGATE_TARGET", "PBX_BUILD_FILE", "PBX_CONTAINER_ITEM_PROXY", + "PBX_COPY_FILES_BUILD_PHASE", "PBX_FILE_REFERENCE", "PBX_FRAMEWORKS_BUILD_PHASE", + "PBX_GROUP", "PBX_HEADERS_BUILD_PHASE", "PBX_NATIVE_TARGET", + "PBX_LEGACY_TARGET", "PBX_PROJECT", "PBX_REFERENCE_PROXY", + "PBX_RESOURCES_BUILD_PHASE", "PBX_SHELL_SCRIPT_BUILD_PHASE", + "PBX_SOURCES_BUILD_PHASE", "PBX_TARGET_DEPENDENCY", "PBX_VARIANT_GROUP", + "XC_BUILD_CONFIGURATION", "XC_CONFIGURATION_LIST", "XC_REMOTE_SWIFT_PACKAGE_REFERENCE", + "XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY", "XC_VERSION_GROUP", + "FILE_REF", "PRODUCT_REF", "CONTAINER_PORTAL", "PROXY_TYPE", + "REMOTE_GLOBAL_ID_STRING", "REMOTE_INFO", "FILE_ENCODING", + "COMMENTS", "EXPLICIT_FILE_TYPE", "LAST_KNOWN_FILE_TYPE", + "INCLUDE_IN_INDEX", "INDENT_WIDTH", "TAB_WIDTH", "USES_TABS", + "WRAPS_LINES", "PLATFORM_FILTER", "PLATFORM_FILTERS", + "CHILDREN", "PRODUCT_INSTALL_PATH", "REPOSITORY_URL", + "REQUIREMENT", "PACKAGE", "PACKAGE_PRODUCT_DEPENDENCIES", + "NAME", "PATH", "SOURCE_TREE", "BUILD_ACTION_MASK", "FILES", + "RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING", "BUILD_CONFIGURATION_LIST", + "BUILD_PHASES", "BUILD_RULES", "BUILD_ARGUMENTS_STRING", + "BUILD_TOOL_PATH", "BUILD_WORKING_DIRECTORY", "PASS_BUILD_SETTINGS_IN_ENVIRONMENT", + "DEPENDENCIES", "PRODUCT_NAME", "PRODUCT_REFERENCE", "PRODUCT_TYPE", + "LINE_ENDING", "XC_LANGUAGE_SPECIFICATION_IDENTIFIER", + "PLIST_STRUCTURE_DEFINITION_IDENTIFIER", "ATTRIBUTES", + "LAST_SWIFT_MIGRATION", "DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE", + "LAST_SWIFT_UPDATE_CHECK", "BUILD_INDEPENDENT_TARGETS_IN_PARALLEL", + "LAST_TESTING_UPGRADE_CHECK", "LAST_UPGRADE_CHECK", "ORGANIZATION_NAME", + "TARGET_ATTRIBUTES", "CREATED_ON_TOOLS_VERSION", "TEST_TARGET_ID", + "DEVELOPMENT_TEAM", "DEVELOPMENT_TEAM_NAME", "PROVISIONING_STYLE", + "COMPATIBILITY_VERSION", "DEVELOPMENT_REGION", "HAS_SCANNED_FOR_ENCODINGS", + "KNOWN_REGIONS", "MAIN_GROUP", "PRODUCT_REF_GROUP", "PACKAGE_REFERENCES", + "PRODUCT_DIR_PATH", "PROJECT_REFERENCES", "PROJECT_ROOT", + "TARGETS", "INPUT_FILE_LIST_PATHS", "INPUT_PATHS", "OUTPUT_FILE_LIST_PATHS", + "OUTPUT_PATHS", "SHELL_PATH", "SHELL_SCRIPT", "SHOW_ENV_VARS_IN_LOG", + "TARGET", "TARGET_PROXY", "FILE_TYPE", "REMOTE_REF", "BASE_CONFIGURATION_REFERENCE", + "BUILD_SETTINGS", "DST_PATH", "DST_SUBFOLDER_SPEC", "PRODUCT_GROUP", + "PROJECT_REF", "BUILD_CONFIGURATIONS", "DEFAULT_CONFIGURATION_IS_VISIBLE", + "DEFAULT_CONFIGURATION_NAME", "SETTINGS", "SYSTEM_CAPABILITIES", + "CURRENT_VERSION", "VERSION_GROUP_TYPE", "CLASSPREFIX", + "REFERENCE", "QUOTED_STRING", "NON_QUOTED_STRING", "VARIABLE", + "ALPHA_NUMERIC", "ALPHA_NUMERIC_CAP", "HEX", "QUOTED_STRING_CHARACTER", "WS", "COMMENT", "LINE_COMMENT" ] grammarFileName = "PBXProj.g4" diff --git a/kin/grammar/PBXProjLexer.tokens b/kin/grammar/PBXProjLexer.tokens index 5fba347..d7a1620 100644 --- a/kin/grammar/PBXProjLexer.tokens +++ b/kin/grammar/PBXProjLexer.tokens @@ -5,132 +5,132 @@ T__3=4 T__4=5 T__5=6 T__6=7 -T__7=8 -T__8=9 -T__9=10 -T__10=11 -T__11=12 -T__12=13 -T__13=14 -T__14=15 -T__15=16 -T__16=17 -T__17=18 -T__18=19 -T__19=20 -T__20=21 -T__21=22 -T__22=23 -T__23=24 -T__24=25 -T__25=26 -T__26=27 -T__27=28 -T__28=29 -T__29=30 -T__30=31 -T__31=32 -T__32=33 -T__33=34 -T__34=35 -T__35=36 -T__36=37 -T__37=38 -T__38=39 -T__39=40 -T__40=41 -T__41=42 -T__42=43 -T__43=44 -T__44=45 -T__45=46 -T__46=47 -T__47=48 -T__48=49 -T__49=50 -T__50=51 -T__51=52 -T__52=53 -T__53=54 -T__54=55 -T__55=56 -T__56=57 -T__57=58 -T__58=59 -T__59=60 -T__60=61 -T__61=62 -T__62=63 -T__63=64 -T__64=65 -T__65=66 -T__66=67 -T__67=68 -T__68=69 -T__69=70 -T__70=71 -T__71=72 -T__72=73 -T__73=74 -T__74=75 -T__75=76 -T__76=77 -T__77=78 -T__78=79 -T__79=80 -T__80=81 -T__81=82 -T__82=83 -T__83=84 -T__84=85 -T__85=86 -T__86=87 -T__87=88 -T__88=89 -T__89=90 -T__90=91 -T__91=92 -T__92=93 -T__93=94 -T__94=95 -T__95=96 -T__96=97 -T__97=98 -T__98=99 -T__99=100 -T__100=101 -T__101=102 -T__102=103 -T__103=104 -T__104=105 -T__105=106 -T__106=107 -T__107=108 -T__108=109 -T__109=110 -T__110=111 -T__111=112 -T__112=113 -T__113=114 -T__114=115 -T__115=116 -T__116=117 -T__117=118 -T__118=119 -T__119=120 -T__120=121 -T__121=122 -T__122=123 -T__123=124 -CLASSES=125 -ISA=126 -OBJECTS=127 -ROOT_OBJECT=128 -NUMBER=129 -DOT=130 -DASH=131 -UNDERSCORE=132 -SLASH=133 +ARCHIVE_VERSION=8 +CLASSES=9 +DASH=10 +DOT=11 +ISA=12 +NUMBER=13 +OBJECT_VERSION=14 +OBJECTS=15 +ROOT_OBJECT=16 +SLASH=17 +UNDERSCORE=18 +PBX_AGGREGATE_TARGET=19 +PBX_BUILD_FILE=20 +PBX_CONTAINER_ITEM_PROXY=21 +PBX_COPY_FILES_BUILD_PHASE=22 +PBX_FILE_REFERENCE=23 +PBX_FRAMEWORKS_BUILD_PHASE=24 +PBX_GROUP=25 +PBX_HEADERS_BUILD_PHASE=26 +PBX_NATIVE_TARGET=27 +PBX_LEGACY_TARGET=28 +PBX_PROJECT=29 +PBX_REFERENCE_PROXY=30 +PBX_RESOURCES_BUILD_PHASE=31 +PBX_SHELL_SCRIPT_BUILD_PHASE=32 +PBX_SOURCES_BUILD_PHASE=33 +PBX_TARGET_DEPENDENCY=34 +PBX_VARIANT_GROUP=35 +XC_BUILD_CONFIGURATION=36 +XC_CONFIGURATION_LIST=37 +XC_REMOTE_SWIFT_PACKAGE_REFERENCE=38 +XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY=39 +XC_VERSION_GROUP=40 +FILE_REF=41 +PRODUCT_REF=42 +CONTAINER_PORTAL=43 +PROXY_TYPE=44 +REMOTE_GLOBAL_ID_STRING=45 +REMOTE_INFO=46 +FILE_ENCODING=47 +COMMENTS=48 +EXPLICIT_FILE_TYPE=49 +LAST_KNOWN_FILE_TYPE=50 +INCLUDE_IN_INDEX=51 +INDENT_WIDTH=52 +TAB_WIDTH=53 +USES_TABS=54 +WRAPS_LINES=55 +PLATFORM_FILTER=56 +PLATFORM_FILTERS=57 +CHILDREN=58 +PRODUCT_INSTALL_PATH=59 +REPOSITORY_URL=60 +REQUIREMENT=61 +PACKAGE=62 +PACKAGE_PRODUCT_DEPENDENCIES=63 +NAME=64 +PATH=65 +SOURCE_TREE=66 +BUILD_ACTION_MASK=67 +FILES=68 +RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING=69 +BUILD_CONFIGURATION_LIST=70 +BUILD_PHASES=71 +BUILD_RULES=72 +BUILD_ARGUMENTS_STRING=73 +BUILD_TOOL_PATH=74 +BUILD_WORKING_DIRECTORY=75 +PASS_BUILD_SETTINGS_IN_ENVIRONMENT=76 +DEPENDENCIES=77 +PRODUCT_NAME=78 +PRODUCT_REFERENCE=79 +PRODUCT_TYPE=80 +LINE_ENDING=81 +XC_LANGUAGE_SPECIFICATION_IDENTIFIER=82 +PLIST_STRUCTURE_DEFINITION_IDENTIFIER=83 +ATTRIBUTES=84 +LAST_SWIFT_MIGRATION=85 +DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE=86 +LAST_SWIFT_UPDATE_CHECK=87 +BUILD_INDEPENDENT_TARGETS_IN_PARALLEL=88 +LAST_TESTING_UPGRADE_CHECK=89 +LAST_UPGRADE_CHECK=90 +ORGANIZATION_NAME=91 +TARGET_ATTRIBUTES=92 +CREATED_ON_TOOLS_VERSION=93 +TEST_TARGET_ID=94 +DEVELOPMENT_TEAM=95 +DEVELOPMENT_TEAM_NAME=96 +PROVISIONING_STYLE=97 +COMPATIBILITY_VERSION=98 +DEVELOPMENT_REGION=99 +HAS_SCANNED_FOR_ENCODINGS=100 +KNOWN_REGIONS=101 +MAIN_GROUP=102 +PRODUCT_REF_GROUP=103 +PACKAGE_REFERENCES=104 +PRODUCT_DIR_PATH=105 +PROJECT_REFERENCES=106 +PROJECT_ROOT=107 +TARGETS=108 +INPUT_FILE_LIST_PATHS=109 +INPUT_PATHS=110 +OUTPUT_FILE_LIST_PATHS=111 +OUTPUT_PATHS=112 +SHELL_PATH=113 +SHELL_SCRIPT=114 +SHOW_ENV_VARS_IN_LOG=115 +TARGET=116 +TARGET_PROXY=117 +FILE_TYPE=118 +REMOTE_REF=119 +BASE_CONFIGURATION_REFERENCE=120 +BUILD_SETTINGS=121 +DST_PATH=122 +DST_SUBFOLDER_SPEC=123 +PRODUCT_GROUP=124 +PROJECT_REF=125 +BUILD_CONFIGURATIONS=126 +DEFAULT_CONFIGURATION_IS_VISIBLE=127 +DEFAULT_CONFIGURATION_NAME=128 +SETTINGS=129 +SYSTEM_CAPABILITIES=130 +CURRENT_VERSION=131 +VERSION_GROUP_TYPE=132 +CLASSPREFIX=133 REFERENCE=134 QUOTED_STRING=135 NON_QUOTED_STRING=136 @@ -142,133 +142,133 @@ COMMENT=141 LINE_COMMENT=142 '{'=1 '}'=2 -'archiveVersion'=3 -'='=4 -';'=5 -'objectVersion'=6 -'PBXAggregateTarget'=7 -'PBXBuildFile'=8 -'PBXContainerItemProxy'=9 -'PBXCopyFilesBuildPhase'=10 -'PBXFileReference'=11 -'PBXFrameworksBuildPhase'=12 -'PBXGroup'=13 -'PBXHeadersBuildPhase'=14 -'PBXNativeTarget'=15 -'PBXLegacyTarget'=16 -'PBXProject'=17 -'PBXReferenceProxy'=18 -'PBXResourcesBuildPhase'=19 -'PBXShellScriptBuildPhase'=20 -'PBXSourcesBuildPhase'=21 -'PBXTargetDependency'=22 -'PBXVariantGroup'=23 -'XCBuildConfiguration'=24 -'XCConfigurationList'=25 -'XCRemoteSwiftPackageReference'=26 -'XCSwiftPackageProductDependency'=27 -'XCVersionGroup'=28 -'fileRef'=29 -'productRef'=30 -'containerPortal'=31 -'proxyType'=32 -'remoteGlobalIDString'=33 -'remoteInfo'=34 -'fileEncoding'=35 -'comments'=36 -'explicitFileType'=37 -'lastKnownFileType'=38 -'includeInIndex'=39 -'indentWidth'=40 -'tabWidth'=41 -'usesTabs'=42 -'wrapsLines'=43 -'platformFilter'=44 -'platformFilters'=45 -'children'=46 -'productInstallPath'=47 -'repositoryURL'=48 -'requirement'=49 -'package'=50 -'packageProductDependencies'=51 -'name'=52 -'path'=53 -'sourceTree'=54 -'buildActionMask'=55 -'files'=56 -'runOnlyForDeploymentPostprocessing'=57 -'('=58 -','=59 -')'=60 -'buildConfigurationList'=61 -'buildPhases'=62 -'buildRules'=63 -'buildArgumentsString'=64 -'buildToolPath'=65 -'buildWorkingDirectory'=66 -'passBuildSettingsInEnvironment'=67 -'dependencies'=68 -'productName'=69 -'productReference'=70 -'productType'=71 -'lineEnding'=72 -'xcLanguageSpecificationIdentifier'=73 -'plistStructureDefinitionIdentifier'=74 -'attributes'=75 -'LastSwiftMigration'=76 -'DefaultBuildSystemTypeForWorkspace'=77 -'LastSwiftUpdateCheck'=78 -'BuildIndependentTargetsInParallel'=79 -'LastTestingUpgradeCheck'=80 -'LastUpgradeCheck'=81 -'ORGANIZATIONNAME'=82 -'TargetAttributes'=83 -'CreatedOnToolsVersion'=84 -'TestTargetID'=85 -'DevelopmentTeam'=86 -'DevelopmentTeamName'=87 -'ProvisioningStyle'=88 -'compatibilityVersion'=89 -'developmentRegion'=90 -'hasScannedForEncodings'=91 -'knownRegions'=92 -'mainGroup'=93 -'productRefGroup'=94 -'packageReferences'=95 -'projectDirPath'=96 -'projectReferences'=97 -'projectRoot'=98 -'targets'=99 -'inputFileListPaths'=100 -'inputPaths'=101 -'outputFileListPaths'=102 -'outputPaths'=103 -'shellPath'=104 -'shellScript'=105 -'showEnvVarsInLog'=106 -'target'=107 -'targetProxy'=108 -'fileType'=109 -'remoteRef'=110 -'baseConfigurationReference'=111 -'buildSettings'=112 -'dstPath'=113 -'dstSubfolderSpec'=114 -'ProductGroup'=115 -'ProjectRef'=116 -'buildConfigurations'=117 -'defaultConfigurationIsVisible'=118 -'defaultConfigurationName'=119 -'settings'=120 -'SystemCapabilities'=121 -'currentVersion'=122 -'versionGroupType'=123 -'CLASSPREFIX'=124 -'classes'=125 -'isa'=126 -'objects'=127 -'rootObject'=128 -'.'=130 -'-'=131 -'_'=132 -'/'=133 +'='=3 +';'=4 +'('=5 +','=6 +')'=7 +'archiveVersion'=8 +'classes'=9 +'-'=10 +'.'=11 +'isa'=12 +'objectVersion'=14 +'objects'=15 +'rootObject'=16 +'/'=17 +'_'=18 +'PBXAggregateTarget'=19 +'PBXBuildFile'=20 +'PBXContainerItemProxy'=21 +'PBXCopyFilesBuildPhase'=22 +'PBXFileReference'=23 +'PBXFrameworksBuildPhase'=24 +'PBXGroup'=25 +'PBXHeadersBuildPhase'=26 +'PBXNativeTarget'=27 +'PBXLegacyTarget'=28 +'PBXProject'=29 +'PBXReferenceProxy'=30 +'PBXResourcesBuildPhase'=31 +'PBXShellScriptBuildPhase'=32 +'PBXSourcesBuildPhase'=33 +'PBXTargetDependency'=34 +'PBXVariantGroup'=35 +'XCBuildConfiguration'=36 +'XCConfigurationList'=37 +'XCRemoteSwiftPackageReference'=38 +'XCSwiftPackageProductDependency'=39 +'XCVersionGroup'=40 +'fileRef'=41 +'productRef'=42 +'containerPortal'=43 +'proxyType'=44 +'remoteGlobalIDString'=45 +'remoteInfo'=46 +'fileEncoding'=47 +'comments'=48 +'explicitFileType'=49 +'lastKnownFileType'=50 +'includeInIndex'=51 +'indentWidth'=52 +'tabWidth'=53 +'usesTabs'=54 +'wrapsLines'=55 +'platformFilter'=56 +'platformFilters'=57 +'children'=58 +'productInstallPath'=59 +'repositoryURL'=60 +'requirement'=61 +'package'=62 +'packageProductDependencies'=63 +'name'=64 +'path'=65 +'sourceTree'=66 +'buildActionMask'=67 +'files'=68 +'runOnlyForDeploymentPostprocessing'=69 +'buildConfigurationList'=70 +'buildPhases'=71 +'buildRules'=72 +'buildArgumentsString'=73 +'buildToolPath'=74 +'buildWorkingDirectory'=75 +'passBuildSettingsInEnvironment'=76 +'dependencies'=77 +'productName'=78 +'productReference'=79 +'productType'=80 +'lineEnding'=81 +'xcLanguageSpecificationIdentifier'=82 +'plistStructureDefinitionIdentifier'=83 +'attributes'=84 +'LastSwiftMigration'=85 +'DefaultBuildSystemTypeForWorkspace'=86 +'LastSwiftUpdateCheck'=87 +'BuildIndependentTargetsInParallel'=88 +'LastTestingUpgradeCheck'=89 +'LastUpgradeCheck'=90 +'ORGANIZATIONNAME'=91 +'TargetAttributes'=92 +'CreatedOnToolsVersion'=93 +'TestTargetID'=94 +'DevelopmentTeam'=95 +'DevelopmentTeamName'=96 +'ProvisioningStyle'=97 +'compatibilityVersion'=98 +'developmentRegion'=99 +'hasScannedForEncodings'=100 +'knownRegions'=101 +'mainGroup'=102 +'productRefGroup'=103 +'packageReferences'=104 +'projectDirPath'=105 +'projectReferences'=106 +'projectRoot'=107 +'targets'=108 +'inputFileListPaths'=109 +'inputPaths'=110 +'outputFileListPaths'=111 +'outputPaths'=112 +'shellPath'=113 +'shellScript'=114 +'showEnvVarsInLog'=115 +'target'=116 +'targetProxy'=117 +'fileType'=118 +'remoteRef'=119 +'baseConfigurationReference'=120 +'buildSettings'=121 +'dstPath'=122 +'dstSubfolderSpec'=123 +'ProductGroup'=124 +'ProjectRef'=125 +'buildConfigurations'=126 +'defaultConfigurationIsVisible'=127 +'defaultConfigurationName'=128 +'settings'=129 +'SystemCapabilities'=130 +'currentVersion'=131 +'versionGroupType'=132 +'CLASSPREFIX'=133 diff --git a/kin/grammar/PBXProjListener.py b/kin/grammar/PBXProjListener.py index abb594d..4023d9d 100644 --- a/kin/grammar/PBXProjListener.py +++ b/kin/grammar/PBXProjListener.py @@ -1556,5 +1556,23 @@ def exitAny_string(self, ctx:PBXProjParser.Any_stringContext): pass + # Enter a parse tree produced by PBXProjParser#str_number_variable. + def enterStr_number_variable(self, ctx:PBXProjParser.Str_number_variableContext): + pass + + # Exit a parse tree produced by PBXProjParser#str_number_variable. + def exitStr_number_variable(self, ctx:PBXProjParser.Str_number_variableContext): + pass + + + # Enter a parse tree produced by PBXProjParser#any_token. + def enterAny_token(self, ctx:PBXProjParser.Any_tokenContext): + pass + + # Exit a parse tree produced by PBXProjParser#any_token. + def exitAny_token(self, ctx:PBXProjParser.Any_tokenContext): + pass + + del PBXProjParser \ No newline at end of file diff --git a/kin/grammar/PBXProjParser.py b/kin/grammar/PBXProjParser.py index 651bcb6..60314f4 100644 --- a/kin/grammar/PBXProjParser.py +++ b/kin/grammar/PBXProjParser.py @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,1,142,1690,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,142,1704,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -38,586 +38,593 @@ def serializedATN(): 7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158, 2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164, 7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169, - 2,170,7,170,2,171,7,171,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4, - 1,5,1,5,1,5,1,5,3,5,375,8,5,1,5,3,5,378,8,5,1,5,3,5,381,8,5,1,5, - 3,5,384,8,5,1,5,1,5,3,5,388,8,5,1,5,1,5,3,5,392,8,5,1,5,3,5,395, - 8,5,1,5,3,5,398,8,5,1,5,1,5,3,5,402,8,5,1,5,3,5,405,8,5,1,5,3,5, - 408,8,5,1,5,3,5,411,8,5,1,5,3,5,414,8,5,1,5,3,5,417,8,5,1,5,1,5, - 1,5,3,5,422,8,5,1,5,3,5,425,8,5,1,5,3,5,428,8,5,1,5,1,5,1,5,1,6, - 1,6,1,6,1,6,1,6,1,7,4,7,439,8,7,11,7,12,7,440,1,8,4,8,444,8,8,11, - 8,12,8,445,1,9,4,9,449,8,9,11,9,12,9,450,1,10,4,10,454,8,10,11,10, - 12,10,455,1,11,4,11,459,8,11,11,11,12,11,460,1,12,4,12,464,8,12, - 11,12,12,12,465,1,13,4,13,469,8,13,11,13,12,13,470,1,14,4,14,474, - 8,14,11,14,12,14,475,1,15,4,15,479,8,15,11,15,12,15,480,1,16,4,16, - 484,8,16,11,16,12,16,485,1,17,4,17,489,8,17,11,17,12,17,490,1,18, - 4,18,494,8,18,11,18,12,18,495,1,19,4,19,499,8,19,11,19,12,19,500, - 1,20,4,20,504,8,20,11,20,12,20,505,1,21,4,21,509,8,21,11,21,12,21, - 510,1,22,4,22,514,8,22,11,22,12,22,515,1,23,4,23,519,8,23,11,23, - 12,23,520,1,24,4,24,524,8,24,11,24,12,24,525,1,25,4,25,529,8,25, - 11,25,12,25,530,1,26,4,26,534,8,26,11,26,12,26,535,1,27,4,27,539, - 8,27,11,27,12,27,540,1,28,4,28,544,8,28,11,28,12,28,545,1,29,1,29, - 1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29,557,8,29,1,29,1,29,1,29, - 1,30,1,30,1,30,1,30,1,30,3,30,567,8,30,1,30,3,30,570,8,30,1,30,3, - 30,573,8,30,1,30,3,30,576,8,30,1,30,3,30,579,8,30,1,30,1,30,1,30, - 1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32, - 1,32,1,32,1,32,1,32,1,32,1,32,1,32,3,32,604,8,32,1,32,1,32,1,32, - 1,32,1,33,1,33,1,33,1,33,1,33,3,33,615,8,33,1,33,3,33,618,8,33,1, - 33,3,33,621,8,33,1,33,3,33,624,8,33,1,33,3,33,627,8,33,1,33,3,33, - 630,8,33,1,33,3,33,633,8,33,1,33,3,33,636,8,33,1,33,3,33,639,8,33, - 1,33,3,33,642,8,33,1,33,3,33,645,8,33,1,33,3,33,648,8,33,1,33,3, - 33,651,8,33,1,33,3,33,654,8,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34, - 1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,3,35, - 675,8,35,1,35,3,35,678,8,35,1,35,3,35,681,8,35,1,35,3,35,684,8,35, - 1,35,1,35,3,35,688,8,35,1,35,3,35,691,8,35,1,35,3,35,694,8,35,1, - 35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1, - 37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,719,8,37,1, - 37,3,37,722,8,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1, - 38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, - 39,1,39,1,39,1,39,1,39,3,39,751,8,39,1,39,1,39,1,39,3,39,756,8,39, - 1,39,1,39,3,39,760,8,39,1,39,1,39,3,39,764,8,39,1,39,3,39,767,8, - 39,1,39,1,39,3,39,771,8,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1, - 40,1,40,1,40,1,40,3,40,784,8,40,1,40,1,40,1,40,1,40,1,40,1,40,1, - 41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1, - 42,1,42,1,42,1,42,3,42,809,8,42,1,42,3,42,812,8,42,1,42,3,42,815, - 8,42,1,42,3,42,818,8,42,1,42,3,42,821,8,42,1,42,1,42,1,42,1,42,3, - 42,827,8,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1, - 43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,3,44,847,8,44,1,44,3,44,850, - 8,44,1,44,3,44,853,8,44,1,44,3,44,856,8,44,1,44,1,44,1,44,1,44,1, - 45,1,45,1,45,1,45,1,45,1,45,1,45,3,45,869,8,45,1,45,1,45,1,45,1, - 45,1,46,1,46,1,46,1,46,1,46,3,46,880,8,46,1,46,1,46,1,46,1,46,1, - 46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,894,8,47,1,47,1,47,1, - 47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1, - 49,1,49,3,49,913,8,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1, - 50,1,50,1,50,3,50,926,8,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1, - 51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1, - 53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1, - 56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1, - 59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1, - 61,1,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,64,1, - 64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1, - 66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1, - 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1, - 72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1, - 74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,77,1, - 77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,79,1, - 79,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1, - 82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1, - 85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1, - 87,1,87,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,90,1, - 90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1, - 92,1,93,1,93,1,93,1,93,5,93,1148,8,93,10,93,12,93,1151,9,93,1,93, - 1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96, - 1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98, - 1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,101, - 1,101,1,101,1,101,1,101,1,102,1,102,1,102,5,102,1199,8,102,10,102, - 12,102,1202,9,102,1,102,1,102,1,103,1,103,1,103,1,103,5,103,1210, - 8,103,10,103,12,103,1213,9,103,1,103,1,103,1,104,1,104,1,104,5,104, - 1220,8,104,10,104,12,104,1223,9,104,1,104,1,104,1,105,1,105,1,105, - 1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107, - 1,107,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109, - 1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,112, - 1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,114,1,114, - 1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116, - 1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118, - 1,118,1,119,1,119,1,119,1,119,3,119,1301,8,119,1,119,3,119,1304, - 8,119,1,119,3,119,1307,8,119,1,119,3,119,1310,8,119,1,119,3,119, - 1313,8,119,1,119,3,119,1316,8,119,1,119,3,119,1319,8,119,1,119,3, - 119,1322,8,119,1,119,3,119,1325,8,119,1,119,1,119,1,119,1,120,1, - 120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,122,1,122, - 1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124, - 1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126, - 1,126,1,127,1,127,1,127,1,127,5,127,1369,8,127,10,127,12,127,1372, - 9,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,3,128,1381,8,128, - 1,128,3,128,1384,8,128,1,128,3,128,1387,8,128,1,128,3,128,1390,8, - 128,1,128,3,128,1393,8,128,1,128,3,128,1396,8,128,1,128,3,128,1399, - 8,128,1,128,3,128,1402,8,128,1,128,1,128,1,128,1,129,1,129,1,129, - 1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131, - 1,131,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133, - 1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,136, - 1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,138,1,138, - 1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140, - 1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142, - 1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,3,142,1484,8,142, - 1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145, - 1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,147,1,147, - 1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149, - 1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151, - 1,151,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,153, - 1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,156, - 1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,5,157,1560,8,157, - 10,157,12,157,1563,9,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158, - 1,158,1,159,1,159,1,159,1,159,1,159,1,160,5,160,1579,8,160,10,160, - 12,160,1582,9,160,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161, - 1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,162,1,162, + 2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,1,0,1,0,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3, + 1,3,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,3,5,379,8,5,1,5,3,5,382, + 8,5,1,5,3,5,385,8,5,1,5,3,5,388,8,5,1,5,1,5,3,5,392,8,5,1,5,1,5, + 3,5,396,8,5,1,5,3,5,399,8,5,1,5,3,5,402,8,5,1,5,1,5,3,5,406,8,5, + 1,5,3,5,409,8,5,1,5,3,5,412,8,5,1,5,3,5,415,8,5,1,5,3,5,418,8,5, + 1,5,3,5,421,8,5,1,5,1,5,1,5,3,5,426,8,5,1,5,3,5,429,8,5,1,5,3,5, + 432,8,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,7,4,7,443,8,7,11,7,12, + 7,444,1,8,4,8,448,8,8,11,8,12,8,449,1,9,4,9,453,8,9,11,9,12,9,454, + 1,10,4,10,458,8,10,11,10,12,10,459,1,11,4,11,463,8,11,11,11,12,11, + 464,1,12,4,12,468,8,12,11,12,12,12,469,1,13,4,13,473,8,13,11,13, + 12,13,474,1,14,4,14,478,8,14,11,14,12,14,479,1,15,4,15,483,8,15, + 11,15,12,15,484,1,16,4,16,488,8,16,11,16,12,16,489,1,17,4,17,493, + 8,17,11,17,12,17,494,1,18,4,18,498,8,18,11,18,12,18,499,1,19,4,19, + 503,8,19,11,19,12,19,504,1,20,4,20,508,8,20,11,20,12,20,509,1,21, + 4,21,513,8,21,11,21,12,21,514,1,22,4,22,518,8,22,11,22,12,22,519, + 1,23,4,23,523,8,23,11,23,12,23,524,1,24,4,24,528,8,24,11,24,12,24, + 529,1,25,4,25,533,8,25,11,25,12,25,534,1,26,4,26,538,8,26,11,26, + 12,26,539,1,27,4,27,543,8,27,11,27,12,27,544,1,28,4,28,548,8,28, + 11,28,12,28,549,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,3,29, + 561,8,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,3,30,571,8,30,1, + 30,3,30,574,8,30,1,30,3,30,577,8,30,1,30,3,30,580,8,30,1,30,3,30, + 583,8,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, + 1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,3,32, + 608,8,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,3,33,619,8, + 33,1,33,3,33,622,8,33,1,33,3,33,625,8,33,1,33,3,33,628,8,33,1,33, + 3,33,631,8,33,1,33,3,33,634,8,33,1,33,3,33,637,8,33,1,33,3,33,640, + 8,33,1,33,3,33,643,8,33,1,33,3,33,646,8,33,1,33,3,33,649,8,33,1, + 33,3,33,652,8,33,1,33,3,33,655,8,33,1,33,3,33,658,8,33,1,33,1,33, + 1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35, + 1,35,1,35,1,35,1,35,3,35,679,8,35,1,35,3,35,682,8,35,1,35,3,35,685, + 8,35,1,35,3,35,688,8,35,1,35,1,35,3,35,692,8,35,1,35,3,35,695,8, + 35,1,35,3,35,698,8,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1, + 36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1, + 37,1,37,3,37,723,8,37,1,37,3,37,726,8,37,1,37,1,37,1,37,1,37,1,37, + 1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,3,39,755,8,39,1,39, + 1,39,1,39,3,39,760,8,39,1,39,1,39,3,39,764,8,39,1,39,1,39,3,39,768, + 8,39,1,39,3,39,771,8,39,1,39,1,39,3,39,775,8,39,1,39,1,39,1,39,1, + 39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,3,40,788,8,40,1,40,1,40,1, + 40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1, + 41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,3,42,813,8,42,1,42,3,42,816, + 8,42,1,42,3,42,819,8,42,1,42,3,42,822,8,42,1,42,3,42,825,8,42,1, + 42,1,42,1,42,1,42,3,42,831,8,42,1,42,1,42,1,42,1,43,1,43,1,43,1, + 43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,3,44,851, + 8,44,1,44,3,44,854,8,44,1,44,3,44,857,8,44,1,44,3,44,860,8,44,1, + 44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,3,45,873,8, + 45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,3,46,884,8,46,1, + 46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,898, + 8,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48, + 1,49,1,49,1,49,1,49,1,49,3,49,917,8,49,1,49,1,49,1,49,1,49,1,50, + 1,50,1,50,1,50,1,50,1,50,1,50,3,50,930,8,50,1,50,1,50,1,50,1,50, + 1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,53, + 1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55, + 1,55,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58, + 1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60, + 1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63, + 1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66, + 1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68, + 1,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,71,1,71, + 1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73, + 1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76, + 1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,79, + 1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81, + 1,81,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,84,1,84, + 1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86, + 1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89, + 1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92, + 1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,5,93,1152,8,93,10,93,12, + 93,1155,9,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1, + 95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1, + 98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100, + 1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,5,102, + 1203,8,102,10,102,12,102,1206,9,102,1,102,1,102,1,103,1,103,1,103, + 1,103,5,103,1214,8,103,10,103,12,103,1217,9,103,1,103,1,103,1,104, + 1,104,1,104,5,104,1224,8,104,10,104,12,104,1227,9,104,1,104,1,104, + 1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,107, + 1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,109,1,109, + 1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111, + 1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113, + 1,113,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115, + 1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,118, + 1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,3,119,1305,8,119, + 1,119,3,119,1308,8,119,1,119,3,119,1311,8,119,1,119,3,119,1314,8, + 119,1,119,3,119,1317,8,119,1,119,3,119,1320,8,119,1,119,3,119,1323, + 8,119,1,119,3,119,1326,8,119,1,119,3,119,1329,8,119,1,119,1,119, + 1,119,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121, + 1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124, + 1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126, + 1,126,1,126,1,126,1,127,1,127,1,127,1,127,5,127,1373,8,127,10,127, + 12,127,1376,9,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,3,128, + 1385,8,128,1,128,3,128,1388,8,128,1,128,3,128,1391,8,128,1,128,3, + 128,1394,8,128,1,128,3,128,1397,8,128,1,128,3,128,1400,8,128,1,128, + 3,128,1403,8,128,1,128,3,128,1406,8,128,1,128,1,128,1,128,1,129, + 1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,131,1,131, + 1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133, + 1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135, + 1,135,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137, + 1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,140, + 1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,142,1,142, + 1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,3,142, + 1488,8,142,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144, + 1,144,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146, + 1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,149, + 1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,151,1,151, + 1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153, + 1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155, + 1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,5,157, + 1564,8,157,10,157,12,157,1567,9,157,1,157,1,157,1,157,1,158,1,158, + 1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,160,5,160,1583, + 8,160,10,160,12,160,1586,9,160,1,161,1,161,1,161,1,161,1,161,1,161, + 1,161,1,161,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162, 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,5,162, - 1624,8,162,10,162,12,162,1627,9,162,1,162,1,162,1,162,3,162,1632, - 8,162,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164, - 1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,5,166,1653, - 8,166,10,166,12,166,1656,9,166,1,166,1,166,1,166,1,167,1,167,1,167, - 1,167,5,167,1665,8,167,10,167,12,167,1668,9,167,1,167,1,167,1,167, - 1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,170, - 1,170,1,170,1,170,1,170,1,171,1,171,1,171,0,0,172,0,2,4,6,8,10,12, - 14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56, - 58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100, - 102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132, - 134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164, - 166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196, - 198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228, - 230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260, - 262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292, - 294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324, - 326,328,330,332,334,336,338,340,342,0,3,1,0,135,136,2,0,129,129, - 136,136,2,0,129,129,135,137,1640,0,344,1,0,0,0,2,346,1,0,0,0,4,354, - 1,0,0,0,6,359,1,0,0,0,8,365,1,0,0,0,10,370,1,0,0,0,12,432,1,0,0, - 0,14,438,1,0,0,0,16,443,1,0,0,0,18,448,1,0,0,0,20,453,1,0,0,0,22, - 458,1,0,0,0,24,463,1,0,0,0,26,468,1,0,0,0,28,473,1,0,0,0,30,478, - 1,0,0,0,32,483,1,0,0,0,34,488,1,0,0,0,36,493,1,0,0,0,38,498,1,0, - 0,0,40,503,1,0,0,0,42,508,1,0,0,0,44,513,1,0,0,0,46,518,1,0,0,0, - 48,523,1,0,0,0,50,528,1,0,0,0,52,533,1,0,0,0,54,538,1,0,0,0,56,543, - 1,0,0,0,58,547,1,0,0,0,60,561,1,0,0,0,62,583,1,0,0,0,64,594,1,0, - 0,0,66,609,1,0,0,0,68,658,1,0,0,0,70,668,1,0,0,0,72,698,1,0,0,0, - 74,708,1,0,0,0,76,729,1,0,0,0,78,745,1,0,0,0,80,777,1,0,0,0,82,791, - 1,0,0,0,84,801,1,0,0,0,86,831,1,0,0,0,88,841,1,0,0,0,90,861,1,0, - 0,0,92,874,1,0,0,0,94,886,1,0,0,0,96,898,1,0,0,0,98,907,1,0,0,0, - 100,918,1,0,0,0,102,933,1,0,0,0,104,938,1,0,0,0,106,943,1,0,0,0, - 108,948,1,0,0,0,110,953,1,0,0,0,112,958,1,0,0,0,114,963,1,0,0,0, - 116,968,1,0,0,0,118,973,1,0,0,0,120,978,1,0,0,0,122,983,1,0,0,0, - 124,988,1,0,0,0,126,993,1,0,0,0,128,998,1,0,0,0,130,1003,1,0,0,0, - 132,1008,1,0,0,0,134,1013,1,0,0,0,136,1018,1,0,0,0,138,1023,1,0, - 0,0,140,1028,1,0,0,0,142,1033,1,0,0,0,144,1038,1,0,0,0,146,1043, - 1,0,0,0,148,1048,1,0,0,0,150,1053,1,0,0,0,152,1058,1,0,0,0,154,1063, - 1,0,0,0,156,1068,1,0,0,0,158,1073,1,0,0,0,160,1078,1,0,0,0,162,1083, - 1,0,0,0,164,1088,1,0,0,0,166,1093,1,0,0,0,168,1098,1,0,0,0,170,1103, - 1,0,0,0,172,1108,1,0,0,0,174,1113,1,0,0,0,176,1118,1,0,0,0,178,1123, - 1,0,0,0,180,1128,1,0,0,0,182,1133,1,0,0,0,184,1138,1,0,0,0,186,1143, - 1,0,0,0,188,1155,1,0,0,0,190,1160,1,0,0,0,192,1165,1,0,0,0,194,1170, - 1,0,0,0,196,1175,1,0,0,0,198,1180,1,0,0,0,200,1185,1,0,0,0,202,1190, - 1,0,0,0,204,1195,1,0,0,0,206,1205,1,0,0,0,208,1216,1,0,0,0,210,1226, - 1,0,0,0,212,1231,1,0,0,0,214,1236,1,0,0,0,216,1241,1,0,0,0,218,1246, - 1,0,0,0,220,1251,1,0,0,0,222,1256,1,0,0,0,224,1261,1,0,0,0,226,1266, - 1,0,0,0,228,1271,1,0,0,0,230,1276,1,0,0,0,232,1281,1,0,0,0,234,1286, - 1,0,0,0,236,1291,1,0,0,0,238,1296,1,0,0,0,240,1329,1,0,0,0,242,1334, - 1,0,0,0,244,1339,1,0,0,0,246,1344,1,0,0,0,248,1349,1,0,0,0,250,1354, - 1,0,0,0,252,1359,1,0,0,0,254,1364,1,0,0,0,256,1376,1,0,0,0,258,1406, - 1,0,0,0,260,1411,1,0,0,0,262,1416,1,0,0,0,264,1421,1,0,0,0,266,1426, - 1,0,0,0,268,1431,1,0,0,0,270,1436,1,0,0,0,272,1441,1,0,0,0,274,1446, - 1,0,0,0,276,1451,1,0,0,0,278,1456,1,0,0,0,280,1461,1,0,0,0,282,1466, - 1,0,0,0,284,1483,1,0,0,0,286,1485,1,0,0,0,288,1490,1,0,0,0,290,1495, - 1,0,0,0,292,1500,1,0,0,0,294,1505,1,0,0,0,296,1510,1,0,0,0,298,1515, - 1,0,0,0,300,1520,1,0,0,0,302,1525,1,0,0,0,304,1530,1,0,0,0,306,1535, - 1,0,0,0,308,1540,1,0,0,0,310,1545,1,0,0,0,312,1550,1,0,0,0,314,1555, - 1,0,0,0,316,1567,1,0,0,0,318,1572,1,0,0,0,320,1580,1,0,0,0,322,1583, - 1,0,0,0,324,1631,1,0,0,0,326,1633,1,0,0,0,328,1638,1,0,0,0,330,1643, - 1,0,0,0,332,1648,1,0,0,0,334,1660,1,0,0,0,336,1672,1,0,0,0,338,1677, - 1,0,0,0,340,1682,1,0,0,0,342,1687,1,0,0,0,344,345,3,2,1,0,345,1, - 1,0,0,0,346,347,5,1,0,0,347,348,3,4,2,0,348,349,3,6,3,0,349,350, - 3,8,4,0,350,351,3,10,5,0,351,352,3,12,6,0,352,353,5,2,0,0,353,3, - 1,0,0,0,354,355,5,3,0,0,355,356,5,4,0,0,356,357,5,129,0,0,357,358, - 5,5,0,0,358,5,1,0,0,0,359,360,5,125,0,0,360,361,5,4,0,0,361,362, - 5,1,0,0,362,363,5,2,0,0,363,364,5,5,0,0,364,7,1,0,0,0,365,366,5, - 6,0,0,366,367,5,4,0,0,367,368,5,129,0,0,368,369,5,5,0,0,369,9,1, - 0,0,0,370,371,5,127,0,0,371,372,5,4,0,0,372,374,5,1,0,0,373,375, - 3,14,7,0,374,373,1,0,0,0,374,375,1,0,0,0,375,377,1,0,0,0,376,378, - 3,16,8,0,377,376,1,0,0,0,377,378,1,0,0,0,378,380,1,0,0,0,379,381, - 3,18,9,0,380,379,1,0,0,0,380,381,1,0,0,0,381,383,1,0,0,0,382,384, - 3,20,10,0,383,382,1,0,0,0,383,384,1,0,0,0,384,385,1,0,0,0,385,387, - 3,22,11,0,386,388,3,24,12,0,387,386,1,0,0,0,387,388,1,0,0,0,388, - 389,1,0,0,0,389,391,3,26,13,0,390,392,3,28,14,0,391,390,1,0,0,0, - 391,392,1,0,0,0,392,394,1,0,0,0,393,395,3,32,16,0,394,393,1,0,0, - 0,394,395,1,0,0,0,395,397,1,0,0,0,396,398,3,30,15,0,397,396,1,0, - 0,0,397,398,1,0,0,0,398,399,1,0,0,0,399,401,3,34,17,0,400,402,3, - 36,18,0,401,400,1,0,0,0,401,402,1,0,0,0,402,404,1,0,0,0,403,405, - 3,38,19,0,404,403,1,0,0,0,404,405,1,0,0,0,405,407,1,0,0,0,406,408, - 3,40,20,0,407,406,1,0,0,0,407,408,1,0,0,0,408,410,1,0,0,0,409,411, - 3,42,21,0,410,409,1,0,0,0,410,411,1,0,0,0,411,413,1,0,0,0,412,414, - 3,44,22,0,413,412,1,0,0,0,413,414,1,0,0,0,414,416,1,0,0,0,415,417, - 3,46,23,0,416,415,1,0,0,0,416,417,1,0,0,0,417,418,1,0,0,0,418,419, - 3,48,24,0,419,421,3,50,25,0,420,422,3,52,26,0,421,420,1,0,0,0,421, - 422,1,0,0,0,422,424,1,0,0,0,423,425,3,54,27,0,424,423,1,0,0,0,424, - 425,1,0,0,0,425,427,1,0,0,0,426,428,3,56,28,0,427,426,1,0,0,0,427, - 428,1,0,0,0,428,429,1,0,0,0,429,430,5,2,0,0,430,431,5,5,0,0,431, - 11,1,0,0,0,432,433,5,128,0,0,433,434,5,4,0,0,434,435,5,134,0,0,435, - 436,5,5,0,0,436,13,1,0,0,0,437,439,3,58,29,0,438,437,1,0,0,0,439, - 440,1,0,0,0,440,438,1,0,0,0,440,441,1,0,0,0,441,15,1,0,0,0,442,444, - 3,60,30,0,443,442,1,0,0,0,444,445,1,0,0,0,445,443,1,0,0,0,445,446, - 1,0,0,0,446,17,1,0,0,0,447,449,3,62,31,0,448,447,1,0,0,0,449,450, - 1,0,0,0,450,448,1,0,0,0,450,451,1,0,0,0,451,19,1,0,0,0,452,454,3, - 64,32,0,453,452,1,0,0,0,454,455,1,0,0,0,455,453,1,0,0,0,455,456, - 1,0,0,0,456,21,1,0,0,0,457,459,3,66,33,0,458,457,1,0,0,0,459,460, - 1,0,0,0,460,458,1,0,0,0,460,461,1,0,0,0,461,23,1,0,0,0,462,464,3, - 68,34,0,463,462,1,0,0,0,464,465,1,0,0,0,465,463,1,0,0,0,465,466, - 1,0,0,0,466,25,1,0,0,0,467,469,3,70,35,0,468,467,1,0,0,0,469,470, - 1,0,0,0,470,468,1,0,0,0,470,471,1,0,0,0,471,27,1,0,0,0,472,474,3, - 72,36,0,473,472,1,0,0,0,474,475,1,0,0,0,475,473,1,0,0,0,475,476, - 1,0,0,0,476,29,1,0,0,0,477,479,3,74,37,0,478,477,1,0,0,0,479,480, - 1,0,0,0,480,478,1,0,0,0,480,481,1,0,0,0,481,31,1,0,0,0,482,484,3, - 76,38,0,483,482,1,0,0,0,484,485,1,0,0,0,485,483,1,0,0,0,485,486, - 1,0,0,0,486,33,1,0,0,0,487,489,3,78,39,0,488,487,1,0,0,0,489,490, - 1,0,0,0,490,488,1,0,0,0,490,491,1,0,0,0,491,35,1,0,0,0,492,494,3, - 80,40,0,493,492,1,0,0,0,494,495,1,0,0,0,495,493,1,0,0,0,495,496, - 1,0,0,0,496,37,1,0,0,0,497,499,3,82,41,0,498,497,1,0,0,0,499,500, - 1,0,0,0,500,498,1,0,0,0,500,501,1,0,0,0,501,39,1,0,0,0,502,504,3, - 84,42,0,503,502,1,0,0,0,504,505,1,0,0,0,505,503,1,0,0,0,505,506, - 1,0,0,0,506,41,1,0,0,0,507,509,3,86,43,0,508,507,1,0,0,0,509,510, - 1,0,0,0,510,508,1,0,0,0,510,511,1,0,0,0,511,43,1,0,0,0,512,514,3, - 88,44,0,513,512,1,0,0,0,514,515,1,0,0,0,515,513,1,0,0,0,515,516, - 1,0,0,0,516,45,1,0,0,0,517,519,3,90,45,0,518,517,1,0,0,0,519,520, - 1,0,0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,47,1,0,0,0,522,524,3, - 92,46,0,523,522,1,0,0,0,524,525,1,0,0,0,525,523,1,0,0,0,525,526, - 1,0,0,0,526,49,1,0,0,0,527,529,3,94,47,0,528,527,1,0,0,0,529,530, - 1,0,0,0,530,528,1,0,0,0,530,531,1,0,0,0,531,51,1,0,0,0,532,534,3, - 96,48,0,533,532,1,0,0,0,534,535,1,0,0,0,535,533,1,0,0,0,535,536, - 1,0,0,0,536,53,1,0,0,0,537,539,3,98,49,0,538,537,1,0,0,0,539,540, - 1,0,0,0,540,538,1,0,0,0,540,541,1,0,0,0,541,55,1,0,0,0,542,544,3, - 100,50,0,543,542,1,0,0,0,544,545,1,0,0,0,545,543,1,0,0,0,545,546, - 1,0,0,0,546,57,1,0,0,0,547,548,5,134,0,0,548,549,5,4,0,0,549,550, - 5,1,0,0,550,551,3,102,51,0,551,552,3,210,105,0,552,553,3,212,106, - 0,553,554,3,224,112,0,554,556,3,192,96,0,555,557,3,226,113,0,556, - 555,1,0,0,0,556,557,1,0,0,0,557,558,1,0,0,0,558,559,5,2,0,0,559, - 560,5,5,0,0,560,59,1,0,0,0,561,562,5,134,0,0,562,563,5,4,0,0,563, - 564,5,1,0,0,564,566,3,104,52,0,565,567,3,146,73,0,566,565,1,0,0, - 0,566,567,1,0,0,0,567,569,1,0,0,0,568,570,3,176,88,0,569,568,1,0, - 0,0,569,570,1,0,0,0,570,572,1,0,0,0,571,573,3,178,89,0,572,571,1, - 0,0,0,572,573,1,0,0,0,573,575,1,0,0,0,574,576,3,148,74,0,575,574, - 1,0,0,0,575,576,1,0,0,0,576,578,1,0,0,0,577,579,3,332,166,0,578, - 577,1,0,0,0,578,579,1,0,0,0,579,580,1,0,0,0,580,581,5,2,0,0,581, - 582,5,5,0,0,582,61,1,0,0,0,583,584,5,134,0,0,584,585,5,4,0,0,585, - 586,5,1,0,0,586,587,3,106,53,0,587,588,3,150,75,0,588,589,3,152, - 76,0,589,590,3,154,77,0,590,591,3,156,78,0,591,592,5,2,0,0,592,593, - 5,5,0,0,593,63,1,0,0,0,594,595,5,134,0,0,595,596,5,4,0,0,596,597, - 5,1,0,0,597,598,3,108,54,0,598,599,3,198,99,0,599,600,3,316,158, - 0,600,601,3,318,159,0,601,603,3,200,100,0,602,604,3,192,96,0,603, - 602,1,0,0,0,603,604,1,0,0,0,604,605,1,0,0,0,605,606,3,202,101,0, - 606,607,5,2,0,0,607,608,5,5,0,0,608,65,1,0,0,0,609,610,5,134,0,0, - 610,611,5,4,0,0,611,612,5,1,0,0,612,614,3,110,55,0,613,615,3,160, - 80,0,614,613,1,0,0,0,614,615,1,0,0,0,615,617,1,0,0,0,616,618,3,162, - 81,0,617,616,1,0,0,0,617,618,1,0,0,0,618,620,1,0,0,0,619,621,3,158, - 79,0,620,619,1,0,0,0,620,621,1,0,0,0,621,623,1,0,0,0,622,624,3,166, - 83,0,623,622,1,0,0,0,623,624,1,0,0,0,624,626,1,0,0,0,625,627,3,168, - 84,0,626,625,1,0,0,0,626,627,1,0,0,0,627,629,1,0,0,0,628,630,3,164, - 82,0,629,628,1,0,0,0,629,630,1,0,0,0,630,632,1,0,0,0,631,633,3,232, - 116,0,632,631,1,0,0,0,632,633,1,0,0,0,633,635,1,0,0,0,634,636,3, - 192,96,0,635,634,1,0,0,0,635,636,1,0,0,0,636,638,1,0,0,0,637,639, - 3,194,97,0,638,637,1,0,0,0,638,639,1,0,0,0,639,641,1,0,0,0,640,642, - 3,236,118,0,641,640,1,0,0,0,641,642,1,0,0,0,642,644,1,0,0,0,643, - 645,3,196,98,0,644,643,1,0,0,0,644,645,1,0,0,0,645,647,1,0,0,0,646, - 648,3,170,85,0,647,646,1,0,0,0,647,648,1,0,0,0,648,650,1,0,0,0,649, - 651,3,234,117,0,650,649,1,0,0,0,650,651,1,0,0,0,651,653,1,0,0,0, - 652,654,3,172,86,0,653,652,1,0,0,0,653,654,1,0,0,0,654,655,1,0,0, - 0,655,656,5,2,0,0,656,657,5,5,0,0,657,67,1,0,0,0,658,659,5,134,0, - 0,659,660,5,4,0,0,660,661,5,1,0,0,661,662,3,112,56,0,662,663,3,198, - 99,0,663,664,3,200,100,0,664,665,3,202,101,0,665,666,5,2,0,0,666, - 667,5,5,0,0,667,69,1,0,0,0,668,669,5,134,0,0,669,670,5,4,0,0,670, - 671,5,1,0,0,671,672,3,114,57,0,672,674,3,180,90,0,673,675,3,168, - 84,0,674,673,1,0,0,0,674,675,1,0,0,0,675,677,1,0,0,0,676,678,3,166, - 83,0,677,676,1,0,0,0,677,678,1,0,0,0,678,680,1,0,0,0,679,681,3,192, - 96,0,680,679,1,0,0,0,680,681,1,0,0,0,681,683,1,0,0,0,682,684,3,194, - 97,0,683,682,1,0,0,0,683,684,1,0,0,0,684,685,1,0,0,0,685,687,3,196, - 98,0,686,688,3,170,85,0,687,686,1,0,0,0,687,688,1,0,0,0,688,690, - 1,0,0,0,689,691,3,172,86,0,690,689,1,0,0,0,690,691,1,0,0,0,691,693, - 1,0,0,0,692,694,3,174,87,0,693,692,1,0,0,0,693,694,1,0,0,0,694,695, - 1,0,0,0,695,696,5,2,0,0,696,697,5,5,0,0,697,71,1,0,0,0,698,699,5, - 134,0,0,699,700,5,4,0,0,700,701,5,1,0,0,701,702,3,116,58,0,702,703, - 3,198,99,0,703,704,3,200,100,0,704,705,3,202,101,0,705,706,5,2,0, - 0,706,707,5,5,0,0,707,73,1,0,0,0,708,709,5,134,0,0,709,710,5,4,0, - 0,710,711,5,1,0,0,711,712,3,118,59,0,712,713,3,210,105,0,713,714, - 3,212,106,0,714,715,3,214,107,0,715,716,3,224,112,0,716,718,3,192, - 96,0,717,719,3,182,91,0,718,717,1,0,0,0,718,719,1,0,0,0,719,721, - 1,0,0,0,720,722,3,190,95,0,721,720,1,0,0,0,721,722,1,0,0,0,722,723, - 1,0,0,0,723,724,3,226,113,0,724,725,3,228,114,0,725,726,3,230,115, - 0,726,727,5,2,0,0,727,728,5,5,0,0,728,75,1,0,0,0,729,730,5,134,0, - 0,730,731,5,4,0,0,731,732,5,1,0,0,732,733,3,120,60,0,733,734,3,216, - 108,0,734,735,3,210,105,0,735,736,3,212,106,0,736,737,3,218,109, - 0,737,738,3,220,110,0,738,739,3,224,112,0,739,740,3,192,96,0,740, - 741,3,222,111,0,741,742,3,226,113,0,742,743,5,2,0,0,743,744,5,5, - 0,0,744,77,1,0,0,0,745,746,5,134,0,0,746,747,5,4,0,0,747,748,5,1, - 0,0,748,750,3,122,61,0,749,751,3,238,119,0,750,749,1,0,0,0,750,751, - 1,0,0,0,751,752,1,0,0,0,752,753,3,210,105,0,753,755,3,268,134,0, - 754,756,3,270,135,0,755,754,1,0,0,0,755,756,1,0,0,0,756,757,1,0, - 0,0,757,759,3,272,136,0,758,760,3,274,137,0,759,758,1,0,0,0,759, - 760,1,0,0,0,760,761,1,0,0,0,761,763,3,276,138,0,762,764,3,280,140, - 0,763,762,1,0,0,0,763,764,1,0,0,0,764,766,1,0,0,0,765,767,3,278, - 139,0,766,765,1,0,0,0,766,767,1,0,0,0,767,768,1,0,0,0,768,770,3, - 282,141,0,769,771,3,284,142,0,770,769,1,0,0,0,770,771,1,0,0,0,771, - 772,1,0,0,0,772,773,3,286,143,0,773,774,3,288,144,0,774,775,5,2, - 0,0,775,776,5,5,0,0,776,79,1,0,0,0,777,778,5,134,0,0,778,779,5,4, - 0,0,779,780,5,1,0,0,780,781,3,124,62,0,781,783,3,308,154,0,782,784, - 3,192,96,0,783,782,1,0,0,0,783,784,1,0,0,0,784,785,1,0,0,0,785,786, - 3,194,97,0,786,787,3,310,155,0,787,788,3,196,98,0,788,789,5,2,0, - 0,789,790,5,5,0,0,790,81,1,0,0,0,791,792,5,134,0,0,792,793,5,4,0, - 0,793,794,5,1,0,0,794,795,3,126,63,0,795,796,3,198,99,0,796,797, - 3,200,100,0,797,798,3,202,101,0,798,799,5,2,0,0,799,800,5,5,0,0, - 800,83,1,0,0,0,801,802,5,134,0,0,802,803,5,4,0,0,803,804,5,1,0,0, - 804,805,3,128,64,0,805,806,3,198,99,0,806,808,3,200,100,0,807,809, - 3,290,145,0,808,807,1,0,0,0,808,809,1,0,0,0,809,811,1,0,0,0,810, - 812,3,292,146,0,811,810,1,0,0,0,811,812,1,0,0,0,812,814,1,0,0,0, - 813,815,3,192,96,0,814,813,1,0,0,0,814,815,1,0,0,0,815,817,1,0,0, - 0,816,818,3,294,147,0,817,816,1,0,0,0,817,818,1,0,0,0,818,820,1, - 0,0,0,819,821,3,296,148,0,820,819,1,0,0,0,820,821,1,0,0,0,821,822, - 1,0,0,0,822,823,3,202,101,0,823,824,3,298,149,0,824,826,3,300,150, - 0,825,827,3,302,151,0,826,825,1,0,0,0,826,827,1,0,0,0,827,828,1, - 0,0,0,828,829,5,2,0,0,829,830,5,5,0,0,830,85,1,0,0,0,831,832,5,134, - 0,0,832,833,5,4,0,0,833,834,5,1,0,0,834,835,3,130,65,0,835,836,3, - 198,99,0,836,837,3,200,100,0,837,838,3,202,101,0,838,839,5,2,0,0, - 839,840,5,5,0,0,840,87,1,0,0,0,841,842,5,134,0,0,842,843,5,4,0,0, - 843,844,5,1,0,0,844,846,3,132,66,0,845,847,3,192,96,0,846,845,1, - 0,0,0,846,847,1,0,0,0,847,849,1,0,0,0,848,850,3,176,88,0,849,848, - 1,0,0,0,849,850,1,0,0,0,850,852,1,0,0,0,851,853,3,178,89,0,852,851, - 1,0,0,0,852,853,1,0,0,0,853,855,1,0,0,0,854,856,3,304,152,0,855, - 854,1,0,0,0,855,856,1,0,0,0,856,857,1,0,0,0,857,858,3,306,153,0, - 858,859,5,2,0,0,859,860,5,5,0,0,860,89,1,0,0,0,861,862,5,134,0,0, - 862,863,5,4,0,0,863,864,5,1,0,0,864,865,3,134,67,0,865,866,3,180, - 90,0,866,868,3,192,96,0,867,869,3,194,97,0,868,867,1,0,0,0,868,869, - 1,0,0,0,869,870,1,0,0,0,870,871,3,196,98,0,871,872,5,2,0,0,872,873, - 5,5,0,0,873,91,1,0,0,0,874,875,5,134,0,0,875,876,5,4,0,0,876,877, - 5,1,0,0,877,879,3,136,68,0,878,880,3,312,156,0,879,878,1,0,0,0,879, - 880,1,0,0,0,880,881,1,0,0,0,881,882,3,314,157,0,882,883,3,192,96, - 0,883,884,5,2,0,0,884,885,5,5,0,0,885,93,1,0,0,0,886,887,5,134,0, - 0,887,888,5,4,0,0,888,889,5,1,0,0,889,890,3,138,69,0,890,891,3,326, - 163,0,891,893,3,328,164,0,892,894,3,330,165,0,893,892,1,0,0,0,893, - 894,1,0,0,0,894,895,1,0,0,0,895,896,5,2,0,0,896,897,5,5,0,0,897, - 95,1,0,0,0,898,899,5,134,0,0,899,900,5,4,0,0,900,901,5,1,0,0,901, - 902,3,140,70,0,902,903,3,184,92,0,903,904,3,186,93,0,904,905,5,2, - 0,0,905,906,5,5,0,0,906,97,1,0,0,0,907,908,5,134,0,0,908,909,5,4, - 0,0,909,910,5,1,0,0,910,912,3,142,71,0,911,913,3,188,94,0,912,911, - 1,0,0,0,912,913,1,0,0,0,913,914,1,0,0,0,914,915,3,226,113,0,915, - 916,5,2,0,0,916,917,5,5,0,0,917,99,1,0,0,0,918,919,5,134,0,0,919, - 920,5,4,0,0,920,921,5,1,0,0,921,922,3,144,72,0,922,923,3,180,90, - 0,923,925,3,336,168,0,924,926,3,192,96,0,925,924,1,0,0,0,925,926, - 1,0,0,0,926,927,1,0,0,0,927,928,3,194,97,0,928,929,3,196,98,0,929, - 930,3,338,169,0,930,931,5,2,0,0,931,932,5,5,0,0,932,101,1,0,0,0, - 933,934,5,126,0,0,934,935,5,4,0,0,935,936,5,7,0,0,936,937,5,5,0, - 0,937,103,1,0,0,0,938,939,5,126,0,0,939,940,5,4,0,0,940,941,5,8, - 0,0,941,942,5,5,0,0,942,105,1,0,0,0,943,944,5,126,0,0,944,945,5, - 4,0,0,945,946,5,9,0,0,946,947,5,5,0,0,947,107,1,0,0,0,948,949,5, - 126,0,0,949,950,5,4,0,0,950,951,5,10,0,0,951,952,5,5,0,0,952,109, - 1,0,0,0,953,954,5,126,0,0,954,955,5,4,0,0,955,956,5,11,0,0,956,957, - 5,5,0,0,957,111,1,0,0,0,958,959,5,126,0,0,959,960,5,4,0,0,960,961, - 5,12,0,0,961,962,5,5,0,0,962,113,1,0,0,0,963,964,5,126,0,0,964,965, - 5,4,0,0,965,966,5,13,0,0,966,967,5,5,0,0,967,115,1,0,0,0,968,969, - 5,126,0,0,969,970,5,4,0,0,970,971,5,14,0,0,971,972,5,5,0,0,972,117, - 1,0,0,0,973,974,5,126,0,0,974,975,5,4,0,0,975,976,5,15,0,0,976,977, - 5,5,0,0,977,119,1,0,0,0,978,979,5,126,0,0,979,980,5,4,0,0,980,981, - 5,16,0,0,981,982,5,5,0,0,982,121,1,0,0,0,983,984,5,126,0,0,984,985, - 5,4,0,0,985,986,5,17,0,0,986,987,5,5,0,0,987,123,1,0,0,0,988,989, - 5,126,0,0,989,990,5,4,0,0,990,991,5,18,0,0,991,992,5,5,0,0,992,125, - 1,0,0,0,993,994,5,126,0,0,994,995,5,4,0,0,995,996,5,19,0,0,996,997, - 5,5,0,0,997,127,1,0,0,0,998,999,5,126,0,0,999,1000,5,4,0,0,1000, - 1001,5,20,0,0,1001,1002,5,5,0,0,1002,129,1,0,0,0,1003,1004,5,126, - 0,0,1004,1005,5,4,0,0,1005,1006,5,21,0,0,1006,1007,5,5,0,0,1007, - 131,1,0,0,0,1008,1009,5,126,0,0,1009,1010,5,4,0,0,1010,1011,5,22, - 0,0,1011,1012,5,5,0,0,1012,133,1,0,0,0,1013,1014,5,126,0,0,1014, - 1015,5,4,0,0,1015,1016,5,23,0,0,1016,1017,5,5,0,0,1017,135,1,0,0, - 0,1018,1019,5,126,0,0,1019,1020,5,4,0,0,1020,1021,5,24,0,0,1021, - 1022,5,5,0,0,1022,137,1,0,0,0,1023,1024,5,126,0,0,1024,1025,5,4, - 0,0,1025,1026,5,25,0,0,1026,1027,5,5,0,0,1027,139,1,0,0,0,1028,1029, - 5,126,0,0,1029,1030,5,4,0,0,1030,1031,5,26,0,0,1031,1032,5,5,0,0, - 1032,141,1,0,0,0,1033,1034,5,126,0,0,1034,1035,5,4,0,0,1035,1036, - 5,27,0,0,1036,1037,5,5,0,0,1037,143,1,0,0,0,1038,1039,5,126,0,0, - 1039,1040,5,4,0,0,1040,1041,5,28,0,0,1041,1042,5,5,0,0,1042,145, - 1,0,0,0,1043,1044,5,29,0,0,1044,1045,5,4,0,0,1045,1046,5,134,0,0, - 1046,1047,5,5,0,0,1047,147,1,0,0,0,1048,1049,5,30,0,0,1049,1050, - 5,4,0,0,1050,1051,5,134,0,0,1051,1052,5,5,0,0,1052,149,1,0,0,0,1053, - 1054,5,31,0,0,1054,1055,5,4,0,0,1055,1056,5,134,0,0,1056,1057,5, - 5,0,0,1057,151,1,0,0,0,1058,1059,5,32,0,0,1059,1060,5,4,0,0,1060, - 1061,5,129,0,0,1061,1062,5,5,0,0,1062,153,1,0,0,0,1063,1064,5,33, - 0,0,1064,1065,5,4,0,0,1065,1066,5,134,0,0,1066,1067,5,5,0,0,1067, - 155,1,0,0,0,1068,1069,5,34,0,0,1069,1070,5,4,0,0,1070,1071,3,342, - 171,0,1071,1072,5,5,0,0,1072,157,1,0,0,0,1073,1074,5,35,0,0,1074, - 1075,5,4,0,0,1075,1076,5,129,0,0,1076,1077,5,5,0,0,1077,159,1,0, - 0,0,1078,1079,5,36,0,0,1079,1080,5,4,0,0,1080,1081,3,342,171,0,1081, - 1082,5,5,0,0,1082,161,1,0,0,0,1083,1084,5,37,0,0,1084,1085,5,4,0, - 0,1085,1086,3,342,171,0,1086,1087,5,5,0,0,1087,163,1,0,0,0,1088, - 1089,5,38,0,0,1089,1090,5,4,0,0,1090,1091,3,342,171,0,1091,1092, - 5,5,0,0,1092,165,1,0,0,0,1093,1094,5,39,0,0,1094,1095,5,4,0,0,1095, - 1096,5,129,0,0,1096,1097,5,5,0,0,1097,167,1,0,0,0,1098,1099,5,40, - 0,0,1099,1100,5,4,0,0,1100,1101,5,129,0,0,1101,1102,5,5,0,0,1102, - 169,1,0,0,0,1103,1104,5,41,0,0,1104,1105,5,4,0,0,1105,1106,5,129, - 0,0,1106,1107,5,5,0,0,1107,171,1,0,0,0,1108,1109,5,42,0,0,1109,1110, - 5,4,0,0,1110,1111,5,129,0,0,1111,1112,5,5,0,0,1112,173,1,0,0,0,1113, - 1114,5,43,0,0,1114,1115,5,4,0,0,1115,1116,5,129,0,0,1116,1117,5, - 5,0,0,1117,175,1,0,0,0,1118,1119,5,44,0,0,1119,1120,5,4,0,0,1120, - 1121,7,0,0,0,1121,1122,5,5,0,0,1122,177,1,0,0,0,1123,1124,5,45,0, - 0,1124,1125,5,4,0,0,1125,1126,3,206,103,0,1126,1127,5,5,0,0,1127, - 179,1,0,0,0,1128,1129,5,46,0,0,1129,1130,5,4,0,0,1130,1131,3,204, - 102,0,1131,1132,5,5,0,0,1132,181,1,0,0,0,1133,1134,5,47,0,0,1134, - 1135,5,4,0,0,1135,1136,5,135,0,0,1136,1137,5,5,0,0,1137,183,1,0, - 0,0,1138,1139,5,48,0,0,1139,1140,5,4,0,0,1140,1141,5,135,0,0,1141, - 1142,5,5,0,0,1142,185,1,0,0,0,1143,1144,5,49,0,0,1144,1145,5,4,0, - 0,1145,1149,5,1,0,0,1146,1148,3,324,162,0,1147,1146,1,0,0,0,1148, - 1151,1,0,0,0,1149,1147,1,0,0,0,1149,1150,1,0,0,0,1150,1152,1,0,0, - 0,1151,1149,1,0,0,0,1152,1153,5,2,0,0,1153,1154,5,5,0,0,1154,187, - 1,0,0,0,1155,1156,5,50,0,0,1156,1157,5,4,0,0,1157,1158,5,134,0,0, - 1158,1159,5,5,0,0,1159,189,1,0,0,0,1160,1161,5,51,0,0,1161,1162, - 5,4,0,0,1162,1163,3,204,102,0,1163,1164,5,5,0,0,1164,191,1,0,0,0, - 1165,1166,5,52,0,0,1166,1167,5,4,0,0,1167,1168,7,0,0,0,1168,1169, - 5,5,0,0,1169,193,1,0,0,0,1170,1171,5,53,0,0,1171,1172,5,4,0,0,1172, - 1173,7,0,0,0,1173,1174,5,5,0,0,1174,195,1,0,0,0,1175,1176,5,54,0, - 0,1176,1177,5,4,0,0,1177,1178,7,0,0,0,1178,1179,5,5,0,0,1179,197, - 1,0,0,0,1180,1181,5,55,0,0,1181,1182,5,4,0,0,1182,1183,5,129,0,0, - 1183,1184,5,5,0,0,1184,199,1,0,0,0,1185,1186,5,56,0,0,1186,1187, - 5,4,0,0,1187,1188,3,204,102,0,1188,1189,5,5,0,0,1189,201,1,0,0,0, - 1190,1191,5,57,0,0,1191,1192,5,4,0,0,1192,1193,5,129,0,0,1193,1194, - 5,5,0,0,1194,203,1,0,0,0,1195,1200,5,58,0,0,1196,1197,5,134,0,0, - 1197,1199,5,59,0,0,1198,1196,1,0,0,0,1199,1202,1,0,0,0,1200,1198, - 1,0,0,0,1200,1201,1,0,0,0,1201,1203,1,0,0,0,1202,1200,1,0,0,0,1203, - 1204,5,60,0,0,1204,205,1,0,0,0,1205,1211,5,58,0,0,1206,1207,3,342, - 171,0,1207,1208,5,59,0,0,1208,1210,1,0,0,0,1209,1206,1,0,0,0,1210, - 1213,1,0,0,0,1211,1209,1,0,0,0,1211,1212,1,0,0,0,1212,1214,1,0,0, - 0,1213,1211,1,0,0,0,1214,1215,5,60,0,0,1215,207,1,0,0,0,1216,1221, - 5,58,0,0,1217,1218,5,136,0,0,1218,1220,5,59,0,0,1219,1217,1,0,0, - 0,1220,1223,1,0,0,0,1221,1219,1,0,0,0,1221,1222,1,0,0,0,1222,1224, - 1,0,0,0,1223,1221,1,0,0,0,1224,1225,5,60,0,0,1225,209,1,0,0,0,1226, - 1227,5,61,0,0,1227,1228,5,4,0,0,1228,1229,5,134,0,0,1229,1230,5, - 5,0,0,1230,211,1,0,0,0,1231,1232,5,62,0,0,1232,1233,5,4,0,0,1233, - 1234,3,204,102,0,1234,1235,5,5,0,0,1235,213,1,0,0,0,1236,1237,5, - 63,0,0,1237,1238,5,4,0,0,1238,1239,3,204,102,0,1239,1240,5,5,0,0, - 1240,215,1,0,0,0,1241,1242,5,64,0,0,1242,1243,5,4,0,0,1243,1244, - 7,0,0,0,1244,1245,5,5,0,0,1245,217,1,0,0,0,1246,1247,5,65,0,0,1247, - 1248,5,4,0,0,1248,1249,7,0,0,0,1249,1250,5,5,0,0,1250,219,1,0,0, - 0,1251,1252,5,66,0,0,1252,1253,5,4,0,0,1253,1254,7,0,0,0,1254,1255, - 5,5,0,0,1255,221,1,0,0,0,1256,1257,5,67,0,0,1257,1258,5,4,0,0,1258, - 1259,5,129,0,0,1259,1260,5,5,0,0,1260,223,1,0,0,0,1261,1262,5,68, - 0,0,1262,1263,5,4,0,0,1263,1264,3,204,102,0,1264,1265,5,5,0,0,1265, - 225,1,0,0,0,1266,1267,5,69,0,0,1267,1268,5,4,0,0,1268,1269,3,342, - 171,0,1269,1270,5,5,0,0,1270,227,1,0,0,0,1271,1272,5,70,0,0,1272, - 1273,5,4,0,0,1273,1274,5,134,0,0,1274,1275,5,5,0,0,1275,229,1,0, - 0,0,1276,1277,5,71,0,0,1277,1278,5,4,0,0,1278,1279,5,135,0,0,1279, - 1280,5,5,0,0,1280,231,1,0,0,0,1281,1282,5,72,0,0,1282,1283,5,4,0, - 0,1283,1284,5,129,0,0,1284,1285,5,5,0,0,1285,233,1,0,0,0,1286,1287, - 5,73,0,0,1287,1288,5,4,0,0,1288,1289,3,342,171,0,1289,1290,5,5,0, - 0,1290,235,1,0,0,0,1291,1292,5,74,0,0,1292,1293,5,4,0,0,1293,1294, - 3,342,171,0,1294,1295,5,5,0,0,1295,237,1,0,0,0,1296,1297,5,75,0, - 0,1297,1298,5,4,0,0,1298,1300,5,1,0,0,1299,1301,3,246,123,0,1300, - 1299,1,0,0,0,1300,1301,1,0,0,0,1301,1303,1,0,0,0,1302,1304,3,340, - 170,0,1303,1302,1,0,0,0,1303,1304,1,0,0,0,1304,1306,1,0,0,0,1305, - 1307,3,242,121,0,1306,1305,1,0,0,0,1306,1307,1,0,0,0,1307,1309,1, - 0,0,0,1308,1310,3,240,120,0,1309,1308,1,0,0,0,1309,1310,1,0,0,0, - 1310,1312,1,0,0,0,1311,1313,3,244,122,0,1312,1311,1,0,0,0,1312,1313, - 1,0,0,0,1313,1315,1,0,0,0,1314,1316,3,248,124,0,1315,1314,1,0,0, - 0,1315,1316,1,0,0,0,1316,1318,1,0,0,0,1317,1319,3,250,125,0,1318, - 1317,1,0,0,0,1318,1319,1,0,0,0,1319,1321,1,0,0,0,1320,1322,3,252, - 126,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322,1324,1,0,0,0,1323, - 1325,3,254,127,0,1324,1323,1,0,0,0,1324,1325,1,0,0,0,1325,1326,1, - 0,0,0,1326,1327,5,2,0,0,1327,1328,5,5,0,0,1328,239,1,0,0,0,1329, - 1330,5,76,0,0,1330,1331,5,4,0,0,1331,1332,5,129,0,0,1332,1333,5, - 5,0,0,1333,241,1,0,0,0,1334,1335,5,77,0,0,1335,1336,5,4,0,0,1336, - 1337,5,136,0,0,1337,1338,5,5,0,0,1338,243,1,0,0,0,1339,1340,5,78, - 0,0,1340,1341,5,4,0,0,1341,1342,5,129,0,0,1342,1343,5,5,0,0,1343, - 245,1,0,0,0,1344,1345,5,79,0,0,1345,1346,5,4,0,0,1346,1347,7,1,0, - 0,1347,1348,5,5,0,0,1348,247,1,0,0,0,1349,1350,5,80,0,0,1350,1351, - 5,4,0,0,1351,1352,5,129,0,0,1352,1353,5,5,0,0,1353,249,1,0,0,0,1354, - 1355,5,81,0,0,1355,1356,5,4,0,0,1356,1357,5,129,0,0,1357,1358,5, - 5,0,0,1358,251,1,0,0,0,1359,1360,5,82,0,0,1360,1361,5,4,0,0,1361, - 1362,3,342,171,0,1362,1363,5,5,0,0,1363,253,1,0,0,0,1364,1365,5, - 83,0,0,1365,1366,5,4,0,0,1366,1370,5,1,0,0,1367,1369,3,256,128,0, - 1368,1367,1,0,0,0,1369,1372,1,0,0,0,1370,1368,1,0,0,0,1370,1371, - 1,0,0,0,1371,1373,1,0,0,0,1372,1370,1,0,0,0,1373,1374,5,2,0,0,1374, - 1375,5,5,0,0,1375,255,1,0,0,0,1376,1377,5,134,0,0,1377,1378,5,4, - 0,0,1378,1380,5,1,0,0,1379,1381,3,258,129,0,1380,1379,1,0,0,0,1380, - 1381,1,0,0,0,1381,1383,1,0,0,0,1382,1384,3,260,130,0,1383,1382,1, - 0,0,0,1383,1384,1,0,0,0,1384,1386,1,0,0,0,1385,1387,3,262,131,0, - 1386,1385,1,0,0,0,1386,1387,1,0,0,0,1387,1389,1,0,0,0,1388,1390, - 3,264,132,0,1389,1388,1,0,0,0,1389,1390,1,0,0,0,1390,1392,1,0,0, - 0,1391,1393,3,240,120,0,1392,1391,1,0,0,0,1392,1393,1,0,0,0,1393, - 1395,1,0,0,0,1394,1396,3,266,133,0,1395,1394,1,0,0,0,1395,1396,1, - 0,0,0,1396,1398,1,0,0,0,1397,1399,3,334,167,0,1398,1397,1,0,0,0, - 1398,1399,1,0,0,0,1399,1401,1,0,0,0,1400,1402,3,260,130,0,1401,1400, - 1,0,0,0,1401,1402,1,0,0,0,1402,1403,1,0,0,0,1403,1404,5,2,0,0,1404, - 1405,5,5,0,0,1405,257,1,0,0,0,1406,1407,5,84,0,0,1407,1408,5,4,0, - 0,1408,1409,5,136,0,0,1409,1410,5,5,0,0,1410,259,1,0,0,0,1411,1412, - 5,85,0,0,1412,1413,5,4,0,0,1413,1414,5,134,0,0,1414,1415,5,5,0,0, - 1415,261,1,0,0,0,1416,1417,5,86,0,0,1417,1418,5,4,0,0,1418,1419, - 7,0,0,0,1419,1420,5,5,0,0,1420,263,1,0,0,0,1421,1422,5,87,0,0,1422, - 1423,5,4,0,0,1423,1424,7,0,0,0,1424,1425,5,5,0,0,1425,265,1,0,0, - 0,1426,1427,5,88,0,0,1427,1428,5,4,0,0,1428,1429,5,136,0,0,1429, - 1430,5,5,0,0,1430,267,1,0,0,0,1431,1432,5,89,0,0,1432,1433,5,4,0, - 0,1433,1434,5,135,0,0,1434,1435,5,5,0,0,1435,269,1,0,0,0,1436,1437, - 5,90,0,0,1437,1438,5,4,0,0,1438,1439,5,136,0,0,1439,1440,5,5,0,0, - 1440,271,1,0,0,0,1441,1442,5,91,0,0,1442,1443,5,4,0,0,1443,1444, - 5,129,0,0,1444,1445,5,5,0,0,1445,273,1,0,0,0,1446,1447,5,92,0,0, - 1447,1448,5,4,0,0,1448,1449,3,206,103,0,1449,1450,5,5,0,0,1450,275, - 1,0,0,0,1451,1452,5,93,0,0,1452,1453,5,4,0,0,1453,1454,5,134,0,0, - 1454,1455,5,5,0,0,1455,277,1,0,0,0,1456,1457,5,94,0,0,1457,1458, - 5,4,0,0,1458,1459,5,134,0,0,1459,1460,5,5,0,0,1460,279,1,0,0,0,1461, - 1462,5,95,0,0,1462,1463,5,4,0,0,1463,1464,3,204,102,0,1464,1465, - 5,5,0,0,1465,281,1,0,0,0,1466,1467,5,96,0,0,1467,1468,5,4,0,0,1468, - 1469,7,0,0,0,1469,1470,5,5,0,0,1470,283,1,0,0,0,1471,1472,5,97,0, - 0,1472,1473,5,4,0,0,1473,1474,3,342,171,0,1474,1475,5,5,0,0,1475, - 1484,1,0,0,0,1476,1477,5,97,0,0,1477,1478,5,4,0,0,1478,1479,5,58, - 0,0,1479,1480,3,320,160,0,1480,1481,5,60,0,0,1481,1482,5,5,0,0,1482, - 1484,1,0,0,0,1483,1471,1,0,0,0,1483,1476,1,0,0,0,1484,285,1,0,0, - 0,1485,1486,5,98,0,0,1486,1487,5,4,0,0,1487,1488,7,0,0,0,1488,1489, - 5,5,0,0,1489,287,1,0,0,0,1490,1491,5,99,0,0,1491,1492,5,4,0,0,1492, - 1493,3,204,102,0,1493,1494,5,5,0,0,1494,289,1,0,0,0,1495,1496,5, - 100,0,0,1496,1497,5,4,0,0,1497,1498,3,206,103,0,1498,1499,5,5,0, - 0,1499,291,1,0,0,0,1500,1501,5,101,0,0,1501,1502,5,4,0,0,1502,1503, - 3,206,103,0,1503,1504,5,5,0,0,1504,293,1,0,0,0,1505,1506,5,102,0, - 0,1506,1507,5,4,0,0,1507,1508,3,206,103,0,1508,1509,5,5,0,0,1509, - 295,1,0,0,0,1510,1511,5,103,0,0,1511,1512,5,4,0,0,1512,1513,3,206, - 103,0,1513,1514,5,5,0,0,1514,297,1,0,0,0,1515,1516,5,104,0,0,1516, - 1517,5,4,0,0,1517,1518,5,136,0,0,1518,1519,5,5,0,0,1519,299,1,0, - 0,0,1520,1521,5,105,0,0,1521,1522,5,4,0,0,1522,1523,7,0,0,0,1523, - 1524,5,5,0,0,1524,301,1,0,0,0,1525,1526,5,106,0,0,1526,1527,5,4, - 0,0,1527,1528,5,129,0,0,1528,1529,5,5,0,0,1529,303,1,0,0,0,1530, - 1531,5,107,0,0,1531,1532,5,4,0,0,1532,1533,5,134,0,0,1533,1534,5, - 5,0,0,1534,305,1,0,0,0,1535,1536,5,108,0,0,1536,1537,5,4,0,0,1537, - 1538,5,134,0,0,1538,1539,5,5,0,0,1539,307,1,0,0,0,1540,1541,5,109, - 0,0,1541,1542,5,4,0,0,1542,1543,3,342,171,0,1543,1544,5,5,0,0,1544, - 309,1,0,0,0,1545,1546,5,110,0,0,1546,1547,5,4,0,0,1547,1548,5,134, - 0,0,1548,1549,5,5,0,0,1549,311,1,0,0,0,1550,1551,5,111,0,0,1551, - 1552,5,4,0,0,1552,1553,5,134,0,0,1553,1554,5,5,0,0,1554,313,1,0, - 0,0,1555,1556,5,112,0,0,1556,1557,5,4,0,0,1557,1561,5,1,0,0,1558, - 1560,3,324,162,0,1559,1558,1,0,0,0,1560,1563,1,0,0,0,1561,1559,1, - 0,0,0,1561,1562,1,0,0,0,1562,1564,1,0,0,0,1563,1561,1,0,0,0,1564, - 1565,5,2,0,0,1565,1566,5,5,0,0,1566,315,1,0,0,0,1567,1568,5,113, - 0,0,1568,1569,5,4,0,0,1569,1570,7,0,0,0,1570,1571,5,5,0,0,1571,317, - 1,0,0,0,1572,1573,5,114,0,0,1573,1574,5,4,0,0,1574,1575,5,129,0, - 0,1575,1576,5,5,0,0,1576,319,1,0,0,0,1577,1579,3,322,161,0,1578, - 1577,1,0,0,0,1579,1582,1,0,0,0,1580,1578,1,0,0,0,1580,1581,1,0,0, - 0,1581,321,1,0,0,0,1582,1580,1,0,0,0,1583,1584,5,1,0,0,1584,1585, - 5,115,0,0,1585,1586,5,4,0,0,1586,1587,5,134,0,0,1587,1588,5,5,0, - 0,1588,1589,5,116,0,0,1589,1590,5,4,0,0,1590,1591,5,134,0,0,1591, - 1592,5,5,0,0,1592,1593,5,2,0,0,1593,1594,5,59,0,0,1594,323,1,0,0, - 0,1595,1596,3,342,171,0,1596,1597,5,4,0,0,1597,1598,3,342,171,0, - 1598,1599,5,5,0,0,1599,1632,1,0,0,0,1600,1601,3,342,171,0,1601,1602, - 5,4,0,0,1602,1603,5,129,0,0,1603,1604,5,5,0,0,1604,1632,1,0,0,0, - 1605,1606,3,342,171,0,1606,1607,5,4,0,0,1607,1608,5,138,0,0,1608, - 1609,5,5,0,0,1609,1632,1,0,0,0,1610,1611,3,342,171,0,1611,1612,5, - 4,0,0,1612,1613,5,1,0,0,1613,1614,3,324,162,0,1614,1615,5,2,0,0, - 1615,1616,5,5,0,0,1616,1632,1,0,0,0,1617,1618,3,342,171,0,1618,1619, - 5,4,0,0,1619,1625,5,58,0,0,1620,1621,3,342,171,0,1621,1622,5,59, - 0,0,1622,1624,1,0,0,0,1623,1620,1,0,0,0,1624,1627,1,0,0,0,1625,1623, - 1,0,0,0,1625,1626,1,0,0,0,1626,1628,1,0,0,0,1627,1625,1,0,0,0,1628, - 1629,5,60,0,0,1629,1630,5,5,0,0,1630,1632,1,0,0,0,1631,1595,1,0, - 0,0,1631,1600,1,0,0,0,1631,1605,1,0,0,0,1631,1610,1,0,0,0,1631,1617, - 1,0,0,0,1632,325,1,0,0,0,1633,1634,5,117,0,0,1634,1635,5,4,0,0,1635, - 1636,3,204,102,0,1636,1637,5,5,0,0,1637,327,1,0,0,0,1638,1639,5, - 118,0,0,1639,1640,5,4,0,0,1640,1641,5,129,0,0,1641,1642,5,5,0,0, - 1642,329,1,0,0,0,1643,1644,5,119,0,0,1644,1645,5,4,0,0,1645,1646, - 7,0,0,0,1646,1647,5,5,0,0,1647,331,1,0,0,0,1648,1649,5,120,0,0,1649, - 1650,5,4,0,0,1650,1654,5,1,0,0,1651,1653,3,324,162,0,1652,1651,1, - 0,0,0,1653,1656,1,0,0,0,1654,1652,1,0,0,0,1654,1655,1,0,0,0,1655, - 1657,1,0,0,0,1656,1654,1,0,0,0,1657,1658,5,2,0,0,1658,1659,5,5,0, - 0,1659,333,1,0,0,0,1660,1661,5,121,0,0,1661,1662,5,4,0,0,1662,1666, - 5,1,0,0,1663,1665,3,324,162,0,1664,1663,1,0,0,0,1665,1668,1,0,0, - 0,1666,1664,1,0,0,0,1666,1667,1,0,0,0,1667,1669,1,0,0,0,1668,1666, - 1,0,0,0,1669,1670,5,2,0,0,1670,1671,5,5,0,0,1671,335,1,0,0,0,1672, - 1673,5,122,0,0,1673,1674,5,4,0,0,1674,1675,5,134,0,0,1675,1676,5, - 5,0,0,1676,337,1,0,0,0,1677,1678,5,123,0,0,1678,1679,5,4,0,0,1679, - 1680,5,136,0,0,1680,1681,5,5,0,0,1681,339,1,0,0,0,1682,1683,5,124, - 0,0,1683,1684,5,4,0,0,1684,1685,3,342,171,0,1685,1686,5,5,0,0,1686, - 341,1,0,0,0,1687,1688,7,2,0,0,1688,343,1,0,0,0,120,374,377,380,383, - 387,391,394,397,401,404,407,410,413,416,421,424,427,440,445,450, - 455,460,465,470,475,480,485,490,495,500,505,510,515,520,525,530, - 535,540,545,556,566,569,572,575,578,603,614,617,620,623,626,629, - 632,635,638,641,644,647,650,653,674,677,680,683,687,690,693,718, - 721,750,755,759,763,766,770,783,808,811,814,817,820,826,846,849, - 852,855,868,879,893,912,925,1149,1200,1211,1221,1300,1303,1306,1309, - 1312,1315,1318,1321,1324,1370,1380,1383,1386,1389,1392,1395,1398, - 1401,1483,1561,1580,1625,1631,1654,1666 + 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, + 1,162,5,162,1628,8,162,10,162,12,162,1631,9,162,1,162,1,162,1,162, + 3,162,1636,8,162,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164, + 1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166, + 5,166,1657,8,166,10,166,12,166,1660,9,166,1,166,1,166,1,166,1,167, + 1,167,1,167,1,167,5,167,1669,8,167,10,167,12,167,1672,9,167,1,167, + 1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169, + 1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,3,171,1695, + 8,171,1,172,1,172,1,172,3,172,1700,8,172,1,173,1,173,1,173,0,0,174, + 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44, + 46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88, + 90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124, + 126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156, + 158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188, + 190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220, + 222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252, + 254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284, + 286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316, + 318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,0,2, + 2,0,13,13,136,136,5,0,8,9,12,12,14,16,19,24,27,133,1656,0,348,1, + 0,0,0,2,350,1,0,0,0,4,358,1,0,0,0,6,363,1,0,0,0,8,369,1,0,0,0,10, + 374,1,0,0,0,12,436,1,0,0,0,14,442,1,0,0,0,16,447,1,0,0,0,18,452, + 1,0,0,0,20,457,1,0,0,0,22,462,1,0,0,0,24,467,1,0,0,0,26,472,1,0, + 0,0,28,477,1,0,0,0,30,482,1,0,0,0,32,487,1,0,0,0,34,492,1,0,0,0, + 36,497,1,0,0,0,38,502,1,0,0,0,40,507,1,0,0,0,42,512,1,0,0,0,44,517, + 1,0,0,0,46,522,1,0,0,0,48,527,1,0,0,0,50,532,1,0,0,0,52,537,1,0, + 0,0,54,542,1,0,0,0,56,547,1,0,0,0,58,551,1,0,0,0,60,565,1,0,0,0, + 62,587,1,0,0,0,64,598,1,0,0,0,66,613,1,0,0,0,68,662,1,0,0,0,70,672, + 1,0,0,0,72,702,1,0,0,0,74,712,1,0,0,0,76,733,1,0,0,0,78,749,1,0, + 0,0,80,781,1,0,0,0,82,795,1,0,0,0,84,805,1,0,0,0,86,835,1,0,0,0, + 88,845,1,0,0,0,90,865,1,0,0,0,92,878,1,0,0,0,94,890,1,0,0,0,96,902, + 1,0,0,0,98,911,1,0,0,0,100,922,1,0,0,0,102,937,1,0,0,0,104,942,1, + 0,0,0,106,947,1,0,0,0,108,952,1,0,0,0,110,957,1,0,0,0,112,962,1, + 0,0,0,114,967,1,0,0,0,116,972,1,0,0,0,118,977,1,0,0,0,120,982,1, + 0,0,0,122,987,1,0,0,0,124,992,1,0,0,0,126,997,1,0,0,0,128,1002,1, + 0,0,0,130,1007,1,0,0,0,132,1012,1,0,0,0,134,1017,1,0,0,0,136,1022, + 1,0,0,0,138,1027,1,0,0,0,140,1032,1,0,0,0,142,1037,1,0,0,0,144,1042, + 1,0,0,0,146,1047,1,0,0,0,148,1052,1,0,0,0,150,1057,1,0,0,0,152,1062, + 1,0,0,0,154,1067,1,0,0,0,156,1072,1,0,0,0,158,1077,1,0,0,0,160,1082, + 1,0,0,0,162,1087,1,0,0,0,164,1092,1,0,0,0,166,1097,1,0,0,0,168,1102, + 1,0,0,0,170,1107,1,0,0,0,172,1112,1,0,0,0,174,1117,1,0,0,0,176,1122, + 1,0,0,0,178,1127,1,0,0,0,180,1132,1,0,0,0,182,1137,1,0,0,0,184,1142, + 1,0,0,0,186,1147,1,0,0,0,188,1159,1,0,0,0,190,1164,1,0,0,0,192,1169, + 1,0,0,0,194,1174,1,0,0,0,196,1179,1,0,0,0,198,1184,1,0,0,0,200,1189, + 1,0,0,0,202,1194,1,0,0,0,204,1199,1,0,0,0,206,1209,1,0,0,0,208,1220, + 1,0,0,0,210,1230,1,0,0,0,212,1235,1,0,0,0,214,1240,1,0,0,0,216,1245, + 1,0,0,0,218,1250,1,0,0,0,220,1255,1,0,0,0,222,1260,1,0,0,0,224,1265, + 1,0,0,0,226,1270,1,0,0,0,228,1275,1,0,0,0,230,1280,1,0,0,0,232,1285, + 1,0,0,0,234,1290,1,0,0,0,236,1295,1,0,0,0,238,1300,1,0,0,0,240,1333, + 1,0,0,0,242,1338,1,0,0,0,244,1343,1,0,0,0,246,1348,1,0,0,0,248,1353, + 1,0,0,0,250,1358,1,0,0,0,252,1363,1,0,0,0,254,1368,1,0,0,0,256,1380, + 1,0,0,0,258,1410,1,0,0,0,260,1415,1,0,0,0,262,1420,1,0,0,0,264,1425, + 1,0,0,0,266,1430,1,0,0,0,268,1435,1,0,0,0,270,1440,1,0,0,0,272,1445, + 1,0,0,0,274,1450,1,0,0,0,276,1455,1,0,0,0,278,1460,1,0,0,0,280,1465, + 1,0,0,0,282,1470,1,0,0,0,284,1487,1,0,0,0,286,1489,1,0,0,0,288,1494, + 1,0,0,0,290,1499,1,0,0,0,292,1504,1,0,0,0,294,1509,1,0,0,0,296,1514, + 1,0,0,0,298,1519,1,0,0,0,300,1524,1,0,0,0,302,1529,1,0,0,0,304,1534, + 1,0,0,0,306,1539,1,0,0,0,308,1544,1,0,0,0,310,1549,1,0,0,0,312,1554, + 1,0,0,0,314,1559,1,0,0,0,316,1571,1,0,0,0,318,1576,1,0,0,0,320,1584, + 1,0,0,0,322,1587,1,0,0,0,324,1635,1,0,0,0,326,1637,1,0,0,0,328,1642, + 1,0,0,0,330,1647,1,0,0,0,332,1652,1,0,0,0,334,1664,1,0,0,0,336,1676, + 1,0,0,0,338,1681,1,0,0,0,340,1686,1,0,0,0,342,1694,1,0,0,0,344,1699, + 1,0,0,0,346,1701,1,0,0,0,348,349,3,2,1,0,349,1,1,0,0,0,350,351,5, + 1,0,0,351,352,3,4,2,0,352,353,3,6,3,0,353,354,3,8,4,0,354,355,3, + 10,5,0,355,356,3,12,6,0,356,357,5,2,0,0,357,3,1,0,0,0,358,359,5, + 8,0,0,359,360,5,3,0,0,360,361,5,13,0,0,361,362,5,4,0,0,362,5,1,0, + 0,0,363,364,5,9,0,0,364,365,5,3,0,0,365,366,5,1,0,0,366,367,5,2, + 0,0,367,368,5,4,0,0,368,7,1,0,0,0,369,370,5,14,0,0,370,371,5,3,0, + 0,371,372,5,13,0,0,372,373,5,4,0,0,373,9,1,0,0,0,374,375,5,15,0, + 0,375,376,5,3,0,0,376,378,5,1,0,0,377,379,3,14,7,0,378,377,1,0,0, + 0,378,379,1,0,0,0,379,381,1,0,0,0,380,382,3,16,8,0,381,380,1,0,0, + 0,381,382,1,0,0,0,382,384,1,0,0,0,383,385,3,18,9,0,384,383,1,0,0, + 0,384,385,1,0,0,0,385,387,1,0,0,0,386,388,3,20,10,0,387,386,1,0, + 0,0,387,388,1,0,0,0,388,389,1,0,0,0,389,391,3,22,11,0,390,392,3, + 24,12,0,391,390,1,0,0,0,391,392,1,0,0,0,392,393,1,0,0,0,393,395, + 3,26,13,0,394,396,3,28,14,0,395,394,1,0,0,0,395,396,1,0,0,0,396, + 398,1,0,0,0,397,399,3,32,16,0,398,397,1,0,0,0,398,399,1,0,0,0,399, + 401,1,0,0,0,400,402,3,30,15,0,401,400,1,0,0,0,401,402,1,0,0,0,402, + 403,1,0,0,0,403,405,3,34,17,0,404,406,3,36,18,0,405,404,1,0,0,0, + 405,406,1,0,0,0,406,408,1,0,0,0,407,409,3,38,19,0,408,407,1,0,0, + 0,408,409,1,0,0,0,409,411,1,0,0,0,410,412,3,40,20,0,411,410,1,0, + 0,0,411,412,1,0,0,0,412,414,1,0,0,0,413,415,3,42,21,0,414,413,1, + 0,0,0,414,415,1,0,0,0,415,417,1,0,0,0,416,418,3,44,22,0,417,416, + 1,0,0,0,417,418,1,0,0,0,418,420,1,0,0,0,419,421,3,46,23,0,420,419, + 1,0,0,0,420,421,1,0,0,0,421,422,1,0,0,0,422,423,3,48,24,0,423,425, + 3,50,25,0,424,426,3,52,26,0,425,424,1,0,0,0,425,426,1,0,0,0,426, + 428,1,0,0,0,427,429,3,54,27,0,428,427,1,0,0,0,428,429,1,0,0,0,429, + 431,1,0,0,0,430,432,3,56,28,0,431,430,1,0,0,0,431,432,1,0,0,0,432, + 433,1,0,0,0,433,434,5,2,0,0,434,435,5,4,0,0,435,11,1,0,0,0,436,437, + 5,16,0,0,437,438,5,3,0,0,438,439,5,134,0,0,439,440,5,4,0,0,440,13, + 1,0,0,0,441,443,3,58,29,0,442,441,1,0,0,0,443,444,1,0,0,0,444,442, + 1,0,0,0,444,445,1,0,0,0,445,15,1,0,0,0,446,448,3,60,30,0,447,446, + 1,0,0,0,448,449,1,0,0,0,449,447,1,0,0,0,449,450,1,0,0,0,450,17,1, + 0,0,0,451,453,3,62,31,0,452,451,1,0,0,0,453,454,1,0,0,0,454,452, + 1,0,0,0,454,455,1,0,0,0,455,19,1,0,0,0,456,458,3,64,32,0,457,456, + 1,0,0,0,458,459,1,0,0,0,459,457,1,0,0,0,459,460,1,0,0,0,460,21,1, + 0,0,0,461,463,3,66,33,0,462,461,1,0,0,0,463,464,1,0,0,0,464,462, + 1,0,0,0,464,465,1,0,0,0,465,23,1,0,0,0,466,468,3,68,34,0,467,466, + 1,0,0,0,468,469,1,0,0,0,469,467,1,0,0,0,469,470,1,0,0,0,470,25,1, + 0,0,0,471,473,3,70,35,0,472,471,1,0,0,0,473,474,1,0,0,0,474,472, + 1,0,0,0,474,475,1,0,0,0,475,27,1,0,0,0,476,478,3,72,36,0,477,476, + 1,0,0,0,478,479,1,0,0,0,479,477,1,0,0,0,479,480,1,0,0,0,480,29,1, + 0,0,0,481,483,3,74,37,0,482,481,1,0,0,0,483,484,1,0,0,0,484,482, + 1,0,0,0,484,485,1,0,0,0,485,31,1,0,0,0,486,488,3,76,38,0,487,486, + 1,0,0,0,488,489,1,0,0,0,489,487,1,0,0,0,489,490,1,0,0,0,490,33,1, + 0,0,0,491,493,3,78,39,0,492,491,1,0,0,0,493,494,1,0,0,0,494,492, + 1,0,0,0,494,495,1,0,0,0,495,35,1,0,0,0,496,498,3,80,40,0,497,496, + 1,0,0,0,498,499,1,0,0,0,499,497,1,0,0,0,499,500,1,0,0,0,500,37,1, + 0,0,0,501,503,3,82,41,0,502,501,1,0,0,0,503,504,1,0,0,0,504,502, + 1,0,0,0,504,505,1,0,0,0,505,39,1,0,0,0,506,508,3,84,42,0,507,506, + 1,0,0,0,508,509,1,0,0,0,509,507,1,0,0,0,509,510,1,0,0,0,510,41,1, + 0,0,0,511,513,3,86,43,0,512,511,1,0,0,0,513,514,1,0,0,0,514,512, + 1,0,0,0,514,515,1,0,0,0,515,43,1,0,0,0,516,518,3,88,44,0,517,516, + 1,0,0,0,518,519,1,0,0,0,519,517,1,0,0,0,519,520,1,0,0,0,520,45,1, + 0,0,0,521,523,3,90,45,0,522,521,1,0,0,0,523,524,1,0,0,0,524,522, + 1,0,0,0,524,525,1,0,0,0,525,47,1,0,0,0,526,528,3,92,46,0,527,526, + 1,0,0,0,528,529,1,0,0,0,529,527,1,0,0,0,529,530,1,0,0,0,530,49,1, + 0,0,0,531,533,3,94,47,0,532,531,1,0,0,0,533,534,1,0,0,0,534,532, + 1,0,0,0,534,535,1,0,0,0,535,51,1,0,0,0,536,538,3,96,48,0,537,536, + 1,0,0,0,538,539,1,0,0,0,539,537,1,0,0,0,539,540,1,0,0,0,540,53,1, + 0,0,0,541,543,3,98,49,0,542,541,1,0,0,0,543,544,1,0,0,0,544,542, + 1,0,0,0,544,545,1,0,0,0,545,55,1,0,0,0,546,548,3,100,50,0,547,546, + 1,0,0,0,548,549,1,0,0,0,549,547,1,0,0,0,549,550,1,0,0,0,550,57,1, + 0,0,0,551,552,5,134,0,0,552,553,5,3,0,0,553,554,5,1,0,0,554,555, + 3,102,51,0,555,556,3,210,105,0,556,557,3,212,106,0,557,558,3,224, + 112,0,558,560,3,192,96,0,559,561,3,226,113,0,560,559,1,0,0,0,560, + 561,1,0,0,0,561,562,1,0,0,0,562,563,5,2,0,0,563,564,5,4,0,0,564, + 59,1,0,0,0,565,566,5,134,0,0,566,567,5,3,0,0,567,568,5,1,0,0,568, + 570,3,104,52,0,569,571,3,146,73,0,570,569,1,0,0,0,570,571,1,0,0, + 0,571,573,1,0,0,0,572,574,3,176,88,0,573,572,1,0,0,0,573,574,1,0, + 0,0,574,576,1,0,0,0,575,577,3,178,89,0,576,575,1,0,0,0,576,577,1, + 0,0,0,577,579,1,0,0,0,578,580,3,148,74,0,579,578,1,0,0,0,579,580, + 1,0,0,0,580,582,1,0,0,0,581,583,3,332,166,0,582,581,1,0,0,0,582, + 583,1,0,0,0,583,584,1,0,0,0,584,585,5,2,0,0,585,586,5,4,0,0,586, + 61,1,0,0,0,587,588,5,134,0,0,588,589,5,3,0,0,589,590,5,1,0,0,590, + 591,3,106,53,0,591,592,3,150,75,0,592,593,3,152,76,0,593,594,3,154, + 77,0,594,595,3,156,78,0,595,596,5,2,0,0,596,597,5,4,0,0,597,63,1, + 0,0,0,598,599,5,134,0,0,599,600,5,3,0,0,600,601,5,1,0,0,601,602, + 3,108,54,0,602,603,3,198,99,0,603,604,3,316,158,0,604,605,3,318, + 159,0,605,607,3,200,100,0,606,608,3,192,96,0,607,606,1,0,0,0,607, + 608,1,0,0,0,608,609,1,0,0,0,609,610,3,202,101,0,610,611,5,2,0,0, + 611,612,5,4,0,0,612,65,1,0,0,0,613,614,5,134,0,0,614,615,5,3,0,0, + 615,616,5,1,0,0,616,618,3,110,55,0,617,619,3,160,80,0,618,617,1, + 0,0,0,618,619,1,0,0,0,619,621,1,0,0,0,620,622,3,162,81,0,621,620, + 1,0,0,0,621,622,1,0,0,0,622,624,1,0,0,0,623,625,3,158,79,0,624,623, + 1,0,0,0,624,625,1,0,0,0,625,627,1,0,0,0,626,628,3,166,83,0,627,626, + 1,0,0,0,627,628,1,0,0,0,628,630,1,0,0,0,629,631,3,168,84,0,630,629, + 1,0,0,0,630,631,1,0,0,0,631,633,1,0,0,0,632,634,3,164,82,0,633,632, + 1,0,0,0,633,634,1,0,0,0,634,636,1,0,0,0,635,637,3,232,116,0,636, + 635,1,0,0,0,636,637,1,0,0,0,637,639,1,0,0,0,638,640,3,192,96,0,639, + 638,1,0,0,0,639,640,1,0,0,0,640,642,1,0,0,0,641,643,3,194,97,0,642, + 641,1,0,0,0,642,643,1,0,0,0,643,645,1,0,0,0,644,646,3,236,118,0, + 645,644,1,0,0,0,645,646,1,0,0,0,646,648,1,0,0,0,647,649,3,196,98, + 0,648,647,1,0,0,0,648,649,1,0,0,0,649,651,1,0,0,0,650,652,3,170, + 85,0,651,650,1,0,0,0,651,652,1,0,0,0,652,654,1,0,0,0,653,655,3,234, + 117,0,654,653,1,0,0,0,654,655,1,0,0,0,655,657,1,0,0,0,656,658,3, + 172,86,0,657,656,1,0,0,0,657,658,1,0,0,0,658,659,1,0,0,0,659,660, + 5,2,0,0,660,661,5,4,0,0,661,67,1,0,0,0,662,663,5,134,0,0,663,664, + 5,3,0,0,664,665,5,1,0,0,665,666,3,112,56,0,666,667,3,198,99,0,667, + 668,3,200,100,0,668,669,3,202,101,0,669,670,5,2,0,0,670,671,5,4, + 0,0,671,69,1,0,0,0,672,673,5,134,0,0,673,674,5,3,0,0,674,675,5,1, + 0,0,675,676,3,114,57,0,676,678,3,180,90,0,677,679,3,168,84,0,678, + 677,1,0,0,0,678,679,1,0,0,0,679,681,1,0,0,0,680,682,3,166,83,0,681, + 680,1,0,0,0,681,682,1,0,0,0,682,684,1,0,0,0,683,685,3,192,96,0,684, + 683,1,0,0,0,684,685,1,0,0,0,685,687,1,0,0,0,686,688,3,194,97,0,687, + 686,1,0,0,0,687,688,1,0,0,0,688,689,1,0,0,0,689,691,3,196,98,0,690, + 692,3,170,85,0,691,690,1,0,0,0,691,692,1,0,0,0,692,694,1,0,0,0,693, + 695,3,172,86,0,694,693,1,0,0,0,694,695,1,0,0,0,695,697,1,0,0,0,696, + 698,3,174,87,0,697,696,1,0,0,0,697,698,1,0,0,0,698,699,1,0,0,0,699, + 700,5,2,0,0,700,701,5,4,0,0,701,71,1,0,0,0,702,703,5,134,0,0,703, + 704,5,3,0,0,704,705,5,1,0,0,705,706,3,116,58,0,706,707,3,198,99, + 0,707,708,3,200,100,0,708,709,3,202,101,0,709,710,5,2,0,0,710,711, + 5,4,0,0,711,73,1,0,0,0,712,713,5,134,0,0,713,714,5,3,0,0,714,715, + 5,1,0,0,715,716,3,118,59,0,716,717,3,210,105,0,717,718,3,212,106, + 0,718,719,3,214,107,0,719,720,3,224,112,0,720,722,3,192,96,0,721, + 723,3,182,91,0,722,721,1,0,0,0,722,723,1,0,0,0,723,725,1,0,0,0,724, + 726,3,190,95,0,725,724,1,0,0,0,725,726,1,0,0,0,726,727,1,0,0,0,727, + 728,3,226,113,0,728,729,3,228,114,0,729,730,3,230,115,0,730,731, + 5,2,0,0,731,732,5,4,0,0,732,75,1,0,0,0,733,734,5,134,0,0,734,735, + 5,3,0,0,735,736,5,1,0,0,736,737,3,120,60,0,737,738,3,216,108,0,738, + 739,3,210,105,0,739,740,3,212,106,0,740,741,3,218,109,0,741,742, + 3,220,110,0,742,743,3,224,112,0,743,744,3,192,96,0,744,745,3,222, + 111,0,745,746,3,226,113,0,746,747,5,2,0,0,747,748,5,4,0,0,748,77, + 1,0,0,0,749,750,5,134,0,0,750,751,5,3,0,0,751,752,5,1,0,0,752,754, + 3,122,61,0,753,755,3,238,119,0,754,753,1,0,0,0,754,755,1,0,0,0,755, + 756,1,0,0,0,756,757,3,210,105,0,757,759,3,268,134,0,758,760,3,270, + 135,0,759,758,1,0,0,0,759,760,1,0,0,0,760,761,1,0,0,0,761,763,3, + 272,136,0,762,764,3,274,137,0,763,762,1,0,0,0,763,764,1,0,0,0,764, + 765,1,0,0,0,765,767,3,276,138,0,766,768,3,280,140,0,767,766,1,0, + 0,0,767,768,1,0,0,0,768,770,1,0,0,0,769,771,3,278,139,0,770,769, + 1,0,0,0,770,771,1,0,0,0,771,772,1,0,0,0,772,774,3,282,141,0,773, + 775,3,284,142,0,774,773,1,0,0,0,774,775,1,0,0,0,775,776,1,0,0,0, + 776,777,3,286,143,0,777,778,3,288,144,0,778,779,5,2,0,0,779,780, + 5,4,0,0,780,79,1,0,0,0,781,782,5,134,0,0,782,783,5,3,0,0,783,784, + 5,1,0,0,784,785,3,124,62,0,785,787,3,308,154,0,786,788,3,192,96, + 0,787,786,1,0,0,0,787,788,1,0,0,0,788,789,1,0,0,0,789,790,3,194, + 97,0,790,791,3,310,155,0,791,792,3,196,98,0,792,793,5,2,0,0,793, + 794,5,4,0,0,794,81,1,0,0,0,795,796,5,134,0,0,796,797,5,3,0,0,797, + 798,5,1,0,0,798,799,3,126,63,0,799,800,3,198,99,0,800,801,3,200, + 100,0,801,802,3,202,101,0,802,803,5,2,0,0,803,804,5,4,0,0,804,83, + 1,0,0,0,805,806,5,134,0,0,806,807,5,3,0,0,807,808,5,1,0,0,808,809, + 3,128,64,0,809,810,3,198,99,0,810,812,3,200,100,0,811,813,3,290, + 145,0,812,811,1,0,0,0,812,813,1,0,0,0,813,815,1,0,0,0,814,816,3, + 292,146,0,815,814,1,0,0,0,815,816,1,0,0,0,816,818,1,0,0,0,817,819, + 3,192,96,0,818,817,1,0,0,0,818,819,1,0,0,0,819,821,1,0,0,0,820,822, + 3,294,147,0,821,820,1,0,0,0,821,822,1,0,0,0,822,824,1,0,0,0,823, + 825,3,296,148,0,824,823,1,0,0,0,824,825,1,0,0,0,825,826,1,0,0,0, + 826,827,3,202,101,0,827,828,3,298,149,0,828,830,3,300,150,0,829, + 831,3,302,151,0,830,829,1,0,0,0,830,831,1,0,0,0,831,832,1,0,0,0, + 832,833,5,2,0,0,833,834,5,4,0,0,834,85,1,0,0,0,835,836,5,134,0,0, + 836,837,5,3,0,0,837,838,5,1,0,0,838,839,3,130,65,0,839,840,3,198, + 99,0,840,841,3,200,100,0,841,842,3,202,101,0,842,843,5,2,0,0,843, + 844,5,4,0,0,844,87,1,0,0,0,845,846,5,134,0,0,846,847,5,3,0,0,847, + 848,5,1,0,0,848,850,3,132,66,0,849,851,3,192,96,0,850,849,1,0,0, + 0,850,851,1,0,0,0,851,853,1,0,0,0,852,854,3,176,88,0,853,852,1,0, + 0,0,853,854,1,0,0,0,854,856,1,0,0,0,855,857,3,178,89,0,856,855,1, + 0,0,0,856,857,1,0,0,0,857,859,1,0,0,0,858,860,3,304,152,0,859,858, + 1,0,0,0,859,860,1,0,0,0,860,861,1,0,0,0,861,862,3,306,153,0,862, + 863,5,2,0,0,863,864,5,4,0,0,864,89,1,0,0,0,865,866,5,134,0,0,866, + 867,5,3,0,0,867,868,5,1,0,0,868,869,3,134,67,0,869,870,3,180,90, + 0,870,872,3,192,96,0,871,873,3,194,97,0,872,871,1,0,0,0,872,873, + 1,0,0,0,873,874,1,0,0,0,874,875,3,196,98,0,875,876,5,2,0,0,876,877, + 5,4,0,0,877,91,1,0,0,0,878,879,5,134,0,0,879,880,5,3,0,0,880,881, + 5,1,0,0,881,883,3,136,68,0,882,884,3,312,156,0,883,882,1,0,0,0,883, + 884,1,0,0,0,884,885,1,0,0,0,885,886,3,314,157,0,886,887,3,192,96, + 0,887,888,5,2,0,0,888,889,5,4,0,0,889,93,1,0,0,0,890,891,5,134,0, + 0,891,892,5,3,0,0,892,893,5,1,0,0,893,894,3,138,69,0,894,895,3,326, + 163,0,895,897,3,328,164,0,896,898,3,330,165,0,897,896,1,0,0,0,897, + 898,1,0,0,0,898,899,1,0,0,0,899,900,5,2,0,0,900,901,5,4,0,0,901, + 95,1,0,0,0,902,903,5,134,0,0,903,904,5,3,0,0,904,905,5,1,0,0,905, + 906,3,140,70,0,906,907,3,184,92,0,907,908,3,186,93,0,908,909,5,2, + 0,0,909,910,5,4,0,0,910,97,1,0,0,0,911,912,5,134,0,0,912,913,5,3, + 0,0,913,914,5,1,0,0,914,916,3,142,71,0,915,917,3,188,94,0,916,915, + 1,0,0,0,916,917,1,0,0,0,917,918,1,0,0,0,918,919,3,226,113,0,919, + 920,5,2,0,0,920,921,5,4,0,0,921,99,1,0,0,0,922,923,5,134,0,0,923, + 924,5,3,0,0,924,925,5,1,0,0,925,926,3,144,72,0,926,927,3,180,90, + 0,927,929,3,336,168,0,928,930,3,192,96,0,929,928,1,0,0,0,929,930, + 1,0,0,0,930,931,1,0,0,0,931,932,3,194,97,0,932,933,3,196,98,0,933, + 934,3,338,169,0,934,935,5,2,0,0,935,936,5,4,0,0,936,101,1,0,0,0, + 937,938,5,12,0,0,938,939,5,3,0,0,939,940,5,19,0,0,940,941,5,4,0, + 0,941,103,1,0,0,0,942,943,5,12,0,0,943,944,5,3,0,0,944,945,5,20, + 0,0,945,946,5,4,0,0,946,105,1,0,0,0,947,948,5,12,0,0,948,949,5,3, + 0,0,949,950,5,21,0,0,950,951,5,4,0,0,951,107,1,0,0,0,952,953,5,12, + 0,0,953,954,5,3,0,0,954,955,5,22,0,0,955,956,5,4,0,0,956,109,1,0, + 0,0,957,958,5,12,0,0,958,959,5,3,0,0,959,960,5,23,0,0,960,961,5, + 4,0,0,961,111,1,0,0,0,962,963,5,12,0,0,963,964,5,3,0,0,964,965,5, + 24,0,0,965,966,5,4,0,0,966,113,1,0,0,0,967,968,5,12,0,0,968,969, + 5,3,0,0,969,970,5,25,0,0,970,971,5,4,0,0,971,115,1,0,0,0,972,973, + 5,12,0,0,973,974,5,3,0,0,974,975,5,26,0,0,975,976,5,4,0,0,976,117, + 1,0,0,0,977,978,5,12,0,0,978,979,5,3,0,0,979,980,5,27,0,0,980,981, + 5,4,0,0,981,119,1,0,0,0,982,983,5,12,0,0,983,984,5,3,0,0,984,985, + 5,28,0,0,985,986,5,4,0,0,986,121,1,0,0,0,987,988,5,12,0,0,988,989, + 5,3,0,0,989,990,5,29,0,0,990,991,5,4,0,0,991,123,1,0,0,0,992,993, + 5,12,0,0,993,994,5,3,0,0,994,995,5,30,0,0,995,996,5,4,0,0,996,125, + 1,0,0,0,997,998,5,12,0,0,998,999,5,3,0,0,999,1000,5,31,0,0,1000, + 1001,5,4,0,0,1001,127,1,0,0,0,1002,1003,5,12,0,0,1003,1004,5,3,0, + 0,1004,1005,5,32,0,0,1005,1006,5,4,0,0,1006,129,1,0,0,0,1007,1008, + 5,12,0,0,1008,1009,5,3,0,0,1009,1010,5,33,0,0,1010,1011,5,4,0,0, + 1011,131,1,0,0,0,1012,1013,5,12,0,0,1013,1014,5,3,0,0,1014,1015, + 5,34,0,0,1015,1016,5,4,0,0,1016,133,1,0,0,0,1017,1018,5,12,0,0,1018, + 1019,5,3,0,0,1019,1020,5,35,0,0,1020,1021,5,4,0,0,1021,135,1,0,0, + 0,1022,1023,5,12,0,0,1023,1024,5,3,0,0,1024,1025,5,36,0,0,1025,1026, + 5,4,0,0,1026,137,1,0,0,0,1027,1028,5,12,0,0,1028,1029,5,3,0,0,1029, + 1030,5,37,0,0,1030,1031,5,4,0,0,1031,139,1,0,0,0,1032,1033,5,12, + 0,0,1033,1034,5,3,0,0,1034,1035,5,38,0,0,1035,1036,5,4,0,0,1036, + 141,1,0,0,0,1037,1038,5,12,0,0,1038,1039,5,3,0,0,1039,1040,5,39, + 0,0,1040,1041,5,4,0,0,1041,143,1,0,0,0,1042,1043,5,12,0,0,1043,1044, + 5,3,0,0,1044,1045,5,40,0,0,1045,1046,5,4,0,0,1046,145,1,0,0,0,1047, + 1048,5,41,0,0,1048,1049,5,3,0,0,1049,1050,5,134,0,0,1050,1051,5, + 4,0,0,1051,147,1,0,0,0,1052,1053,5,42,0,0,1053,1054,5,3,0,0,1054, + 1055,5,134,0,0,1055,1056,5,4,0,0,1056,149,1,0,0,0,1057,1058,5,43, + 0,0,1058,1059,5,3,0,0,1059,1060,5,134,0,0,1060,1061,5,4,0,0,1061, + 151,1,0,0,0,1062,1063,5,44,0,0,1063,1064,5,3,0,0,1064,1065,5,13, + 0,0,1065,1066,5,4,0,0,1066,153,1,0,0,0,1067,1068,5,45,0,0,1068,1069, + 5,3,0,0,1069,1070,5,134,0,0,1070,1071,5,4,0,0,1071,155,1,0,0,0,1072, + 1073,5,46,0,0,1073,1074,5,3,0,0,1074,1075,3,344,172,0,1075,1076, + 5,4,0,0,1076,157,1,0,0,0,1077,1078,5,47,0,0,1078,1079,5,3,0,0,1079, + 1080,5,13,0,0,1080,1081,5,4,0,0,1081,159,1,0,0,0,1082,1083,5,48, + 0,0,1083,1084,5,3,0,0,1084,1085,3,344,172,0,1085,1086,5,4,0,0,1086, + 161,1,0,0,0,1087,1088,5,49,0,0,1088,1089,5,3,0,0,1089,1090,3,344, + 172,0,1090,1091,5,4,0,0,1091,163,1,0,0,0,1092,1093,5,50,0,0,1093, + 1094,5,3,0,0,1094,1095,3,344,172,0,1095,1096,5,4,0,0,1096,165,1, + 0,0,0,1097,1098,5,51,0,0,1098,1099,5,3,0,0,1099,1100,5,13,0,0,1100, + 1101,5,4,0,0,1101,167,1,0,0,0,1102,1103,5,52,0,0,1103,1104,5,3,0, + 0,1104,1105,5,13,0,0,1105,1106,5,4,0,0,1106,169,1,0,0,0,1107,1108, + 5,53,0,0,1108,1109,5,3,0,0,1109,1110,5,13,0,0,1110,1111,5,4,0,0, + 1111,171,1,0,0,0,1112,1113,5,54,0,0,1113,1114,5,3,0,0,1114,1115, + 5,13,0,0,1115,1116,5,4,0,0,1116,173,1,0,0,0,1117,1118,5,55,0,0,1118, + 1119,5,3,0,0,1119,1120,5,13,0,0,1120,1121,5,4,0,0,1121,175,1,0,0, + 0,1122,1123,5,56,0,0,1123,1124,5,3,0,0,1124,1125,3,342,171,0,1125, + 1126,5,4,0,0,1126,177,1,0,0,0,1127,1128,5,57,0,0,1128,1129,5,3,0, + 0,1129,1130,3,206,103,0,1130,1131,5,4,0,0,1131,179,1,0,0,0,1132, + 1133,5,58,0,0,1133,1134,5,3,0,0,1134,1135,3,204,102,0,1135,1136, + 5,4,0,0,1136,181,1,0,0,0,1137,1138,5,59,0,0,1138,1139,5,3,0,0,1139, + 1140,5,135,0,0,1140,1141,5,4,0,0,1141,183,1,0,0,0,1142,1143,5,60, + 0,0,1143,1144,5,3,0,0,1144,1145,5,135,0,0,1145,1146,5,4,0,0,1146, + 185,1,0,0,0,1147,1148,5,61,0,0,1148,1149,5,3,0,0,1149,1153,5,1,0, + 0,1150,1152,3,324,162,0,1151,1150,1,0,0,0,1152,1155,1,0,0,0,1153, + 1151,1,0,0,0,1153,1154,1,0,0,0,1154,1156,1,0,0,0,1155,1153,1,0,0, + 0,1156,1157,5,2,0,0,1157,1158,5,4,0,0,1158,187,1,0,0,0,1159,1160, + 5,62,0,0,1160,1161,5,3,0,0,1161,1162,5,134,0,0,1162,1163,5,4,0,0, + 1163,189,1,0,0,0,1164,1165,5,63,0,0,1165,1166,5,3,0,0,1166,1167, + 3,204,102,0,1167,1168,5,4,0,0,1168,191,1,0,0,0,1169,1170,5,64,0, + 0,1170,1171,5,3,0,0,1171,1172,3,342,171,0,1172,1173,5,4,0,0,1173, + 193,1,0,0,0,1174,1175,5,65,0,0,1175,1176,5,3,0,0,1176,1177,3,342, + 171,0,1177,1178,5,4,0,0,1178,195,1,0,0,0,1179,1180,5,66,0,0,1180, + 1181,5,3,0,0,1181,1182,3,342,171,0,1182,1183,5,4,0,0,1183,197,1, + 0,0,0,1184,1185,5,67,0,0,1185,1186,5,3,0,0,1186,1187,5,13,0,0,1187, + 1188,5,4,0,0,1188,199,1,0,0,0,1189,1190,5,68,0,0,1190,1191,5,3,0, + 0,1191,1192,3,204,102,0,1192,1193,5,4,0,0,1193,201,1,0,0,0,1194, + 1195,5,69,0,0,1195,1196,5,3,0,0,1196,1197,5,13,0,0,1197,1198,5,4, + 0,0,1198,203,1,0,0,0,1199,1204,5,5,0,0,1200,1201,5,134,0,0,1201, + 1203,5,6,0,0,1202,1200,1,0,0,0,1203,1206,1,0,0,0,1204,1202,1,0,0, + 0,1204,1205,1,0,0,0,1205,1207,1,0,0,0,1206,1204,1,0,0,0,1207,1208, + 5,7,0,0,1208,205,1,0,0,0,1209,1215,5,5,0,0,1210,1211,3,344,172,0, + 1211,1212,5,6,0,0,1212,1214,1,0,0,0,1213,1210,1,0,0,0,1214,1217, + 1,0,0,0,1215,1213,1,0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0,0,1217, + 1215,1,0,0,0,1218,1219,5,7,0,0,1219,207,1,0,0,0,1220,1225,5,5,0, + 0,1221,1222,5,136,0,0,1222,1224,5,6,0,0,1223,1221,1,0,0,0,1224,1227, + 1,0,0,0,1225,1223,1,0,0,0,1225,1226,1,0,0,0,1226,1228,1,0,0,0,1227, + 1225,1,0,0,0,1228,1229,5,7,0,0,1229,209,1,0,0,0,1230,1231,5,70,0, + 0,1231,1232,5,3,0,0,1232,1233,5,134,0,0,1233,1234,5,4,0,0,1234,211, + 1,0,0,0,1235,1236,5,71,0,0,1236,1237,5,3,0,0,1237,1238,3,204,102, + 0,1238,1239,5,4,0,0,1239,213,1,0,0,0,1240,1241,5,72,0,0,1241,1242, + 5,3,0,0,1242,1243,3,204,102,0,1243,1244,5,4,0,0,1244,215,1,0,0,0, + 1245,1246,5,73,0,0,1246,1247,5,3,0,0,1247,1248,3,342,171,0,1248, + 1249,5,4,0,0,1249,217,1,0,0,0,1250,1251,5,74,0,0,1251,1252,5,3,0, + 0,1252,1253,3,342,171,0,1253,1254,5,4,0,0,1254,219,1,0,0,0,1255, + 1256,5,75,0,0,1256,1257,5,3,0,0,1257,1258,3,342,171,0,1258,1259, + 5,4,0,0,1259,221,1,0,0,0,1260,1261,5,76,0,0,1261,1262,5,3,0,0,1262, + 1263,5,13,0,0,1263,1264,5,4,0,0,1264,223,1,0,0,0,1265,1266,5,77, + 0,0,1266,1267,5,3,0,0,1267,1268,3,204,102,0,1268,1269,5,4,0,0,1269, + 225,1,0,0,0,1270,1271,5,78,0,0,1271,1272,5,3,0,0,1272,1273,3,344, + 172,0,1273,1274,5,4,0,0,1274,227,1,0,0,0,1275,1276,5,79,0,0,1276, + 1277,5,3,0,0,1277,1278,5,134,0,0,1278,1279,5,4,0,0,1279,229,1,0, + 0,0,1280,1281,5,80,0,0,1281,1282,5,3,0,0,1282,1283,5,135,0,0,1283, + 1284,5,4,0,0,1284,231,1,0,0,0,1285,1286,5,81,0,0,1286,1287,5,3,0, + 0,1287,1288,5,13,0,0,1288,1289,5,4,0,0,1289,233,1,0,0,0,1290,1291, + 5,82,0,0,1291,1292,5,3,0,0,1292,1293,3,344,172,0,1293,1294,5,4,0, + 0,1294,235,1,0,0,0,1295,1296,5,83,0,0,1296,1297,5,3,0,0,1297,1298, + 3,344,172,0,1298,1299,5,4,0,0,1299,237,1,0,0,0,1300,1301,5,84,0, + 0,1301,1302,5,3,0,0,1302,1304,5,1,0,0,1303,1305,3,246,123,0,1304, + 1303,1,0,0,0,1304,1305,1,0,0,0,1305,1307,1,0,0,0,1306,1308,3,340, + 170,0,1307,1306,1,0,0,0,1307,1308,1,0,0,0,1308,1310,1,0,0,0,1309, + 1311,3,242,121,0,1310,1309,1,0,0,0,1310,1311,1,0,0,0,1311,1313,1, + 0,0,0,1312,1314,3,240,120,0,1313,1312,1,0,0,0,1313,1314,1,0,0,0, + 1314,1316,1,0,0,0,1315,1317,3,244,122,0,1316,1315,1,0,0,0,1316,1317, + 1,0,0,0,1317,1319,1,0,0,0,1318,1320,3,248,124,0,1319,1318,1,0,0, + 0,1319,1320,1,0,0,0,1320,1322,1,0,0,0,1321,1323,3,250,125,0,1322, + 1321,1,0,0,0,1322,1323,1,0,0,0,1323,1325,1,0,0,0,1324,1326,3,252, + 126,0,1325,1324,1,0,0,0,1325,1326,1,0,0,0,1326,1328,1,0,0,0,1327, + 1329,3,254,127,0,1328,1327,1,0,0,0,1328,1329,1,0,0,0,1329,1330,1, + 0,0,0,1330,1331,5,2,0,0,1331,1332,5,4,0,0,1332,239,1,0,0,0,1333, + 1334,5,85,0,0,1334,1335,5,3,0,0,1335,1336,5,13,0,0,1336,1337,5,4, + 0,0,1337,241,1,0,0,0,1338,1339,5,86,0,0,1339,1340,5,3,0,0,1340,1341, + 5,136,0,0,1341,1342,5,4,0,0,1342,243,1,0,0,0,1343,1344,5,87,0,0, + 1344,1345,5,3,0,0,1345,1346,5,13,0,0,1346,1347,5,4,0,0,1347,245, + 1,0,0,0,1348,1349,5,88,0,0,1349,1350,5,3,0,0,1350,1351,7,0,0,0,1351, + 1352,5,4,0,0,1352,247,1,0,0,0,1353,1354,5,89,0,0,1354,1355,5,3,0, + 0,1355,1356,5,13,0,0,1356,1357,5,4,0,0,1357,249,1,0,0,0,1358,1359, + 5,90,0,0,1359,1360,5,3,0,0,1360,1361,5,13,0,0,1361,1362,5,4,0,0, + 1362,251,1,0,0,0,1363,1364,5,91,0,0,1364,1365,5,3,0,0,1365,1366, + 3,344,172,0,1366,1367,5,4,0,0,1367,253,1,0,0,0,1368,1369,5,92,0, + 0,1369,1370,5,3,0,0,1370,1374,5,1,0,0,1371,1373,3,256,128,0,1372, + 1371,1,0,0,0,1373,1376,1,0,0,0,1374,1372,1,0,0,0,1374,1375,1,0,0, + 0,1375,1377,1,0,0,0,1376,1374,1,0,0,0,1377,1378,5,2,0,0,1378,1379, + 5,4,0,0,1379,255,1,0,0,0,1380,1381,5,134,0,0,1381,1382,5,3,0,0,1382, + 1384,5,1,0,0,1383,1385,3,258,129,0,1384,1383,1,0,0,0,1384,1385,1, + 0,0,0,1385,1387,1,0,0,0,1386,1388,3,260,130,0,1387,1386,1,0,0,0, + 1387,1388,1,0,0,0,1388,1390,1,0,0,0,1389,1391,3,262,131,0,1390,1389, + 1,0,0,0,1390,1391,1,0,0,0,1391,1393,1,0,0,0,1392,1394,3,264,132, + 0,1393,1392,1,0,0,0,1393,1394,1,0,0,0,1394,1396,1,0,0,0,1395,1397, + 3,240,120,0,1396,1395,1,0,0,0,1396,1397,1,0,0,0,1397,1399,1,0,0, + 0,1398,1400,3,266,133,0,1399,1398,1,0,0,0,1399,1400,1,0,0,0,1400, + 1402,1,0,0,0,1401,1403,3,334,167,0,1402,1401,1,0,0,0,1402,1403,1, + 0,0,0,1403,1405,1,0,0,0,1404,1406,3,260,130,0,1405,1404,1,0,0,0, + 1405,1406,1,0,0,0,1406,1407,1,0,0,0,1407,1408,5,2,0,0,1408,1409, + 5,4,0,0,1409,257,1,0,0,0,1410,1411,5,93,0,0,1411,1412,5,3,0,0,1412, + 1413,5,136,0,0,1413,1414,5,4,0,0,1414,259,1,0,0,0,1415,1416,5,94, + 0,0,1416,1417,5,3,0,0,1417,1418,5,134,0,0,1418,1419,5,4,0,0,1419, + 261,1,0,0,0,1420,1421,5,95,0,0,1421,1422,5,3,0,0,1422,1423,3,342, + 171,0,1423,1424,5,4,0,0,1424,263,1,0,0,0,1425,1426,5,96,0,0,1426, + 1427,5,3,0,0,1427,1428,3,342,171,0,1428,1429,5,4,0,0,1429,265,1, + 0,0,0,1430,1431,5,97,0,0,1431,1432,5,3,0,0,1432,1433,5,136,0,0,1433, + 1434,5,4,0,0,1434,267,1,0,0,0,1435,1436,5,98,0,0,1436,1437,5,3,0, + 0,1437,1438,5,135,0,0,1438,1439,5,4,0,0,1439,269,1,0,0,0,1440,1441, + 5,99,0,0,1441,1442,5,3,0,0,1442,1443,5,136,0,0,1443,1444,5,4,0,0, + 1444,271,1,0,0,0,1445,1446,5,100,0,0,1446,1447,5,3,0,0,1447,1448, + 5,13,0,0,1448,1449,5,4,0,0,1449,273,1,0,0,0,1450,1451,5,101,0,0, + 1451,1452,5,3,0,0,1452,1453,3,206,103,0,1453,1454,5,4,0,0,1454,275, + 1,0,0,0,1455,1456,5,102,0,0,1456,1457,5,3,0,0,1457,1458,5,134,0, + 0,1458,1459,5,4,0,0,1459,277,1,0,0,0,1460,1461,5,103,0,0,1461,1462, + 5,3,0,0,1462,1463,5,134,0,0,1463,1464,5,4,0,0,1464,279,1,0,0,0,1465, + 1466,5,104,0,0,1466,1467,5,3,0,0,1467,1468,3,204,102,0,1468,1469, + 5,4,0,0,1469,281,1,0,0,0,1470,1471,5,105,0,0,1471,1472,5,3,0,0,1472, + 1473,3,342,171,0,1473,1474,5,4,0,0,1474,283,1,0,0,0,1475,1476,5, + 106,0,0,1476,1477,5,3,0,0,1477,1478,3,344,172,0,1478,1479,5,4,0, + 0,1479,1488,1,0,0,0,1480,1481,5,106,0,0,1481,1482,5,3,0,0,1482,1483, + 5,5,0,0,1483,1484,3,320,160,0,1484,1485,5,7,0,0,1485,1486,5,4,0, + 0,1486,1488,1,0,0,0,1487,1475,1,0,0,0,1487,1480,1,0,0,0,1488,285, + 1,0,0,0,1489,1490,5,107,0,0,1490,1491,5,3,0,0,1491,1492,3,342,171, + 0,1492,1493,5,4,0,0,1493,287,1,0,0,0,1494,1495,5,108,0,0,1495,1496, + 5,3,0,0,1496,1497,3,204,102,0,1497,1498,5,4,0,0,1498,289,1,0,0,0, + 1499,1500,5,109,0,0,1500,1501,5,3,0,0,1501,1502,3,206,103,0,1502, + 1503,5,4,0,0,1503,291,1,0,0,0,1504,1505,5,110,0,0,1505,1506,5,3, + 0,0,1506,1507,3,206,103,0,1507,1508,5,4,0,0,1508,293,1,0,0,0,1509, + 1510,5,111,0,0,1510,1511,5,3,0,0,1511,1512,3,206,103,0,1512,1513, + 5,4,0,0,1513,295,1,0,0,0,1514,1515,5,112,0,0,1515,1516,5,3,0,0,1516, + 1517,3,206,103,0,1517,1518,5,4,0,0,1518,297,1,0,0,0,1519,1520,5, + 113,0,0,1520,1521,5,3,0,0,1521,1522,5,136,0,0,1522,1523,5,4,0,0, + 1523,299,1,0,0,0,1524,1525,5,114,0,0,1525,1526,5,3,0,0,1526,1527, + 3,342,171,0,1527,1528,5,4,0,0,1528,301,1,0,0,0,1529,1530,5,115,0, + 0,1530,1531,5,3,0,0,1531,1532,5,13,0,0,1532,1533,5,4,0,0,1533,303, + 1,0,0,0,1534,1535,5,116,0,0,1535,1536,5,3,0,0,1536,1537,5,134,0, + 0,1537,1538,5,4,0,0,1538,305,1,0,0,0,1539,1540,5,117,0,0,1540,1541, + 5,3,0,0,1541,1542,5,134,0,0,1542,1543,5,4,0,0,1543,307,1,0,0,0,1544, + 1545,5,118,0,0,1545,1546,5,3,0,0,1546,1547,3,344,172,0,1547,1548, + 5,4,0,0,1548,309,1,0,0,0,1549,1550,5,119,0,0,1550,1551,5,3,0,0,1551, + 1552,5,134,0,0,1552,1553,5,4,0,0,1553,311,1,0,0,0,1554,1555,5,120, + 0,0,1555,1556,5,3,0,0,1556,1557,5,134,0,0,1557,1558,5,4,0,0,1558, + 313,1,0,0,0,1559,1560,5,121,0,0,1560,1561,5,3,0,0,1561,1565,5,1, + 0,0,1562,1564,3,324,162,0,1563,1562,1,0,0,0,1564,1567,1,0,0,0,1565, + 1563,1,0,0,0,1565,1566,1,0,0,0,1566,1568,1,0,0,0,1567,1565,1,0,0, + 0,1568,1569,5,2,0,0,1569,1570,5,4,0,0,1570,315,1,0,0,0,1571,1572, + 5,122,0,0,1572,1573,5,3,0,0,1573,1574,3,342,171,0,1574,1575,5,4, + 0,0,1575,317,1,0,0,0,1576,1577,5,123,0,0,1577,1578,5,3,0,0,1578, + 1579,5,13,0,0,1579,1580,5,4,0,0,1580,319,1,0,0,0,1581,1583,3,322, + 161,0,1582,1581,1,0,0,0,1583,1586,1,0,0,0,1584,1582,1,0,0,0,1584, + 1585,1,0,0,0,1585,321,1,0,0,0,1586,1584,1,0,0,0,1587,1588,5,1,0, + 0,1588,1589,5,124,0,0,1589,1590,5,3,0,0,1590,1591,5,134,0,0,1591, + 1592,5,4,0,0,1592,1593,5,125,0,0,1593,1594,5,3,0,0,1594,1595,5,134, + 0,0,1595,1596,5,4,0,0,1596,1597,5,2,0,0,1597,1598,5,6,0,0,1598,323, + 1,0,0,0,1599,1600,3,344,172,0,1600,1601,5,3,0,0,1601,1602,3,344, + 172,0,1602,1603,5,4,0,0,1603,1636,1,0,0,0,1604,1605,3,344,172,0, + 1605,1606,5,3,0,0,1606,1607,5,13,0,0,1607,1608,5,4,0,0,1608,1636, + 1,0,0,0,1609,1610,3,344,172,0,1610,1611,5,3,0,0,1611,1612,5,138, + 0,0,1612,1613,5,4,0,0,1613,1636,1,0,0,0,1614,1615,3,344,172,0,1615, + 1616,5,3,0,0,1616,1617,5,1,0,0,1617,1618,3,324,162,0,1618,1619,5, + 2,0,0,1619,1620,5,4,0,0,1620,1636,1,0,0,0,1621,1622,3,344,172,0, + 1622,1623,5,3,0,0,1623,1629,5,5,0,0,1624,1625,3,344,172,0,1625,1626, + 5,6,0,0,1626,1628,1,0,0,0,1627,1624,1,0,0,0,1628,1631,1,0,0,0,1629, + 1627,1,0,0,0,1629,1630,1,0,0,0,1630,1632,1,0,0,0,1631,1629,1,0,0, + 0,1632,1633,5,7,0,0,1633,1634,5,4,0,0,1634,1636,1,0,0,0,1635,1599, + 1,0,0,0,1635,1604,1,0,0,0,1635,1609,1,0,0,0,1635,1614,1,0,0,0,1635, + 1621,1,0,0,0,1636,325,1,0,0,0,1637,1638,5,126,0,0,1638,1639,5,3, + 0,0,1639,1640,3,204,102,0,1640,1641,5,4,0,0,1641,327,1,0,0,0,1642, + 1643,5,127,0,0,1643,1644,5,3,0,0,1644,1645,5,13,0,0,1645,1646,5, + 4,0,0,1646,329,1,0,0,0,1647,1648,5,128,0,0,1648,1649,5,3,0,0,1649, + 1650,3,342,171,0,1650,1651,5,4,0,0,1651,331,1,0,0,0,1652,1653,5, + 129,0,0,1653,1654,5,3,0,0,1654,1658,5,1,0,0,1655,1657,3,324,162, + 0,1656,1655,1,0,0,0,1657,1660,1,0,0,0,1658,1656,1,0,0,0,1658,1659, + 1,0,0,0,1659,1661,1,0,0,0,1660,1658,1,0,0,0,1661,1662,5,2,0,0,1662, + 1663,5,4,0,0,1663,333,1,0,0,0,1664,1665,5,130,0,0,1665,1666,5,3, + 0,0,1666,1670,5,1,0,0,1667,1669,3,324,162,0,1668,1667,1,0,0,0,1669, + 1672,1,0,0,0,1670,1668,1,0,0,0,1670,1671,1,0,0,0,1671,1673,1,0,0, + 0,1672,1670,1,0,0,0,1673,1674,5,2,0,0,1674,1675,5,4,0,0,1675,335, + 1,0,0,0,1676,1677,5,131,0,0,1677,1678,5,3,0,0,1678,1679,5,134,0, + 0,1679,1680,5,4,0,0,1680,337,1,0,0,0,1681,1682,5,132,0,0,1682,1683, + 5,3,0,0,1683,1684,5,136,0,0,1684,1685,5,4,0,0,1685,339,1,0,0,0,1686, + 1687,5,133,0,0,1687,1688,5,3,0,0,1688,1689,3,344,172,0,1689,1690, + 5,4,0,0,1690,341,1,0,0,0,1691,1695,5,136,0,0,1692,1695,5,135,0,0, + 1693,1695,3,346,173,0,1694,1691,1,0,0,0,1694,1692,1,0,0,0,1694,1693, + 1,0,0,0,1695,343,1,0,0,0,1696,1700,3,342,171,0,1697,1700,5,13,0, + 0,1698,1700,5,137,0,0,1699,1696,1,0,0,0,1699,1697,1,0,0,0,1699,1698, + 1,0,0,0,1700,345,1,0,0,0,1701,1702,7,1,0,0,1702,347,1,0,0,0,122, + 378,381,384,387,391,395,398,401,405,408,411,414,417,420,425,428, + 431,444,449,454,459,464,469,474,479,484,489,494,499,504,509,514, + 519,524,529,534,539,544,549,560,570,573,576,579,582,607,618,621, + 624,627,630,633,636,639,642,645,648,651,654,657,678,681,684,687, + 691,694,697,722,725,754,759,763,767,770,774,787,812,815,818,821, + 824,830,850,853,856,859,872,883,897,916,929,1153,1204,1215,1225, + 1304,1307,1310,1313,1316,1319,1322,1325,1328,1374,1384,1387,1390, + 1393,1396,1399,1402,1405,1487,1565,1584,1629,1635,1658,1670,1694, + 1699 ] class PBXProjParser ( Parser ): @@ -630,9 +637,11 @@ class PBXProjParser ( Parser ): sharedContextCache = PredictionContextCache() - literalNames = [ "", "'{'", "'}'", "'archiveVersion'", "'='", - "';'", "'objectVersion'", "'PBXAggregateTarget'", "'PBXBuildFile'", - "'PBXContainerItemProxy'", "'PBXCopyFilesBuildPhase'", + literalNames = [ "", "'{'", "'}'", "'='", "';'", "'('", "','", + "')'", "'archiveVersion'", "'classes'", "'-'", "'.'", + "'isa'", "", "'objectVersion'", "'objects'", + "'rootObject'", "'/'", "'_'", "'PBXAggregateTarget'", + "'PBXBuildFile'", "'PBXContainerItemProxy'", "'PBXCopyFilesBuildPhase'", "'PBXFileReference'", "'PBXFrameworksBuildPhase'", "'PBXGroup'", "'PBXHeadersBuildPhase'", "'PBXNativeTarget'", "'PBXLegacyTarget'", "'PBXProject'", "'PBXReferenceProxy'", @@ -649,11 +658,11 @@ class PBXProjParser ( Parser ): "'repositoryURL'", "'requirement'", "'package'", "'packageProductDependencies'", "'name'", "'path'", "'sourceTree'", "'buildActionMask'", "'files'", "'runOnlyForDeploymentPostprocessing'", - "'('", "','", "')'", "'buildConfigurationList'", "'buildPhases'", - "'buildRules'", "'buildArgumentsString'", "'buildToolPath'", - "'buildWorkingDirectory'", "'passBuildSettingsInEnvironment'", - "'dependencies'", "'productName'", "'productReference'", - "'productType'", "'lineEnding'", "'xcLanguageSpecificationIdentifier'", + "'buildConfigurationList'", "'buildPhases'", "'buildRules'", + "'buildArgumentsString'", "'buildToolPath'", "'buildWorkingDirectory'", + "'passBuildSettingsInEnvironment'", "'dependencies'", + "'productName'", "'productReference'", "'productType'", + "'lineEnding'", "'xcLanguageSpecificationIdentifier'", "'plistStructureDefinitionIdentifier'", "'attributes'", "'LastSwiftMigration'", "'DefaultBuildSystemTypeForWorkspace'", "'LastSwiftUpdateCheck'", "'BuildIndependentTargetsInParallel'", @@ -671,46 +680,56 @@ class PBXProjParser ( Parser ): "'dstPath'", "'dstSubfolderSpec'", "'ProductGroup'", "'ProjectRef'", "'buildConfigurations'", "'defaultConfigurationIsVisible'", "'defaultConfigurationName'", "'settings'", "'SystemCapabilities'", - "'currentVersion'", "'versionGroupType'", "'CLASSPREFIX'", - "'classes'", "'isa'", "'objects'", "'rootObject'", - "", "'.'", "'-'", "'_'", "'/'" ] + "'currentVersion'", "'versionGroupType'", "'CLASSPREFIX'" ] symbolicNames = [ "", "", "", "", "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "", "", "", - "", "CLASSES", "ISA", "OBJECTS", "ROOT_OBJECT", - "NUMBER", "DOT", "DASH", "UNDERSCORE", "SLASH", "REFERENCE", - "QUOTED_STRING", "NON_QUOTED_STRING", "VARIABLE", - "ALPHA_NUMERIC", "ALPHA_NUMERIC_CAP", "WS", "COMMENT", - "LINE_COMMENT" ] + "ARCHIVE_VERSION", "CLASSES", "DASH", "DOT", "ISA", + "NUMBER", "OBJECT_VERSION", "OBJECTS", "ROOT_OBJECT", + "SLASH", "UNDERSCORE", "PBX_AGGREGATE_TARGET", "PBX_BUILD_FILE", + "PBX_CONTAINER_ITEM_PROXY", "PBX_COPY_FILES_BUILD_PHASE", + "PBX_FILE_REFERENCE", "PBX_FRAMEWORKS_BUILD_PHASE", + "PBX_GROUP", "PBX_HEADERS_BUILD_PHASE", "PBX_NATIVE_TARGET", + "PBX_LEGACY_TARGET", "PBX_PROJECT", "PBX_REFERENCE_PROXY", + "PBX_RESOURCES_BUILD_PHASE", "PBX_SHELL_SCRIPT_BUILD_PHASE", + "PBX_SOURCES_BUILD_PHASE", "PBX_TARGET_DEPENDENCY", + "PBX_VARIANT_GROUP", "XC_BUILD_CONFIGURATION", "XC_CONFIGURATION_LIST", + "XC_REMOTE_SWIFT_PACKAGE_REFERENCE", "XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY", + "XC_VERSION_GROUP", "FILE_REF", "PRODUCT_REF", "CONTAINER_PORTAL", + "PROXY_TYPE", "REMOTE_GLOBAL_ID_STRING", "REMOTE_INFO", + "FILE_ENCODING", "COMMENTS", "EXPLICIT_FILE_TYPE", + "LAST_KNOWN_FILE_TYPE", "INCLUDE_IN_INDEX", "INDENT_WIDTH", + "TAB_WIDTH", "USES_TABS", "WRAPS_LINES", "PLATFORM_FILTER", + "PLATFORM_FILTERS", "CHILDREN", "PRODUCT_INSTALL_PATH", + "REPOSITORY_URL", "REQUIREMENT", "PACKAGE", "PACKAGE_PRODUCT_DEPENDENCIES", + "NAME", "PATH", "SOURCE_TREE", "BUILD_ACTION_MASK", + "FILES", "RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING", + "BUILD_CONFIGURATION_LIST", "BUILD_PHASES", "BUILD_RULES", + "BUILD_ARGUMENTS_STRING", "BUILD_TOOL_PATH", "BUILD_WORKING_DIRECTORY", + "PASS_BUILD_SETTINGS_IN_ENVIRONMENT", "DEPENDENCIES", + "PRODUCT_NAME", "PRODUCT_REFERENCE", "PRODUCT_TYPE", + "LINE_ENDING", "XC_LANGUAGE_SPECIFICATION_IDENTIFIER", + "PLIST_STRUCTURE_DEFINITION_IDENTIFIER", "ATTRIBUTES", + "LAST_SWIFT_MIGRATION", "DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE", + "LAST_SWIFT_UPDATE_CHECK", "BUILD_INDEPENDENT_TARGETS_IN_PARALLEL", + "LAST_TESTING_UPGRADE_CHECK", "LAST_UPGRADE_CHECK", + "ORGANIZATION_NAME", "TARGET_ATTRIBUTES", "CREATED_ON_TOOLS_VERSION", + "TEST_TARGET_ID", "DEVELOPMENT_TEAM", "DEVELOPMENT_TEAM_NAME", + "PROVISIONING_STYLE", "COMPATIBILITY_VERSION", "DEVELOPMENT_REGION", + "HAS_SCANNED_FOR_ENCODINGS", "KNOWN_REGIONS", "MAIN_GROUP", + "PRODUCT_REF_GROUP", "PACKAGE_REFERENCES", "PRODUCT_DIR_PATH", + "PROJECT_REFERENCES", "PROJECT_ROOT", "TARGETS", "INPUT_FILE_LIST_PATHS", + "INPUT_PATHS", "OUTPUT_FILE_LIST_PATHS", "OUTPUT_PATHS", + "SHELL_PATH", "SHELL_SCRIPT", "SHOW_ENV_VARS_IN_LOG", + "TARGET", "TARGET_PROXY", "FILE_TYPE", "REMOTE_REF", + "BASE_CONFIGURATION_REFERENCE", "BUILD_SETTINGS", + "DST_PATH", "DST_SUBFOLDER_SPEC", "PRODUCT_GROUP", + "PROJECT_REF", "BUILD_CONFIGURATIONS", "DEFAULT_CONFIGURATION_IS_VISIBLE", + "DEFAULT_CONFIGURATION_NAME", "SETTINGS", "SYSTEM_CAPABILITIES", + "CURRENT_VERSION", "VERSION_GROUP_TYPE", "CLASSPREFIX", + "REFERENCE", "QUOTED_STRING", "NON_QUOTED_STRING", + "VARIABLE", "ALPHA_NUMERIC", "ALPHA_NUMERIC_CAP", + "WS", "COMMENT", "LINE_COMMENT" ] RULE_start = 0 RULE_root_element = 1 @@ -884,6 +903,8 @@ class PBXProjParser ( Parser ): RULE_version_group_type = 169 RULE_class_prefix = 170 RULE_any_string = 171 + RULE_str_number_variable = 172 + RULE_any_token = 173 ruleNames = [ "start", "root_element", "archive_version", "classes", "object_version", "objects", "root_object", "pbx_aggregate_target_section", @@ -946,7 +967,7 @@ class PBXProjParser ( Parser ): "key_value", "build_configurations", "default_configuration_is_visible", "default_configuration_name", "settings", "system_capabilities", "current_version", "version_group_type", "class_prefix", - "any_string" ] + "any_string", "str_number_variable", "any_token" ] EOF = Token.EOF T__0=1 @@ -956,132 +977,132 @@ class PBXProjParser ( Parser ): T__4=5 T__5=6 T__6=7 - T__7=8 - T__8=9 - T__9=10 - T__10=11 - T__11=12 - T__12=13 - T__13=14 - T__14=15 - T__15=16 - T__16=17 - T__17=18 - T__18=19 - T__19=20 - T__20=21 - T__21=22 - T__22=23 - T__23=24 - T__24=25 - T__25=26 - T__26=27 - T__27=28 - T__28=29 - T__29=30 - T__30=31 - T__31=32 - T__32=33 - T__33=34 - T__34=35 - T__35=36 - T__36=37 - T__37=38 - T__38=39 - T__39=40 - T__40=41 - T__41=42 - T__42=43 - T__43=44 - T__44=45 - T__45=46 - T__46=47 - T__47=48 - T__48=49 - T__49=50 - T__50=51 - T__51=52 - T__52=53 - T__53=54 - T__54=55 - T__55=56 - T__56=57 - T__57=58 - T__58=59 - T__59=60 - T__60=61 - T__61=62 - T__62=63 - T__63=64 - T__64=65 - T__65=66 - T__66=67 - T__67=68 - T__68=69 - T__69=70 - T__70=71 - T__71=72 - T__72=73 - T__73=74 - T__74=75 - T__75=76 - T__76=77 - T__77=78 - T__78=79 - T__79=80 - T__80=81 - T__81=82 - T__82=83 - T__83=84 - T__84=85 - T__85=86 - T__86=87 - T__87=88 - T__88=89 - T__89=90 - T__90=91 - T__91=92 - T__92=93 - T__93=94 - T__94=95 - T__95=96 - T__96=97 - T__97=98 - T__98=99 - T__99=100 - T__100=101 - T__101=102 - T__102=103 - T__103=104 - T__104=105 - T__105=106 - T__106=107 - T__107=108 - T__108=109 - T__109=110 - T__110=111 - T__111=112 - T__112=113 - T__113=114 - T__114=115 - T__115=116 - T__116=117 - T__117=118 - T__118=119 - T__119=120 - T__120=121 - T__121=122 - T__122=123 - T__123=124 - CLASSES=125 - ISA=126 - OBJECTS=127 - ROOT_OBJECT=128 - NUMBER=129 - DOT=130 - DASH=131 - UNDERSCORE=132 - SLASH=133 + ARCHIVE_VERSION=8 + CLASSES=9 + DASH=10 + DOT=11 + ISA=12 + NUMBER=13 + OBJECT_VERSION=14 + OBJECTS=15 + ROOT_OBJECT=16 + SLASH=17 + UNDERSCORE=18 + PBX_AGGREGATE_TARGET=19 + PBX_BUILD_FILE=20 + PBX_CONTAINER_ITEM_PROXY=21 + PBX_COPY_FILES_BUILD_PHASE=22 + PBX_FILE_REFERENCE=23 + PBX_FRAMEWORKS_BUILD_PHASE=24 + PBX_GROUP=25 + PBX_HEADERS_BUILD_PHASE=26 + PBX_NATIVE_TARGET=27 + PBX_LEGACY_TARGET=28 + PBX_PROJECT=29 + PBX_REFERENCE_PROXY=30 + PBX_RESOURCES_BUILD_PHASE=31 + PBX_SHELL_SCRIPT_BUILD_PHASE=32 + PBX_SOURCES_BUILD_PHASE=33 + PBX_TARGET_DEPENDENCY=34 + PBX_VARIANT_GROUP=35 + XC_BUILD_CONFIGURATION=36 + XC_CONFIGURATION_LIST=37 + XC_REMOTE_SWIFT_PACKAGE_REFERENCE=38 + XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY=39 + XC_VERSION_GROUP=40 + FILE_REF=41 + PRODUCT_REF=42 + CONTAINER_PORTAL=43 + PROXY_TYPE=44 + REMOTE_GLOBAL_ID_STRING=45 + REMOTE_INFO=46 + FILE_ENCODING=47 + COMMENTS=48 + EXPLICIT_FILE_TYPE=49 + LAST_KNOWN_FILE_TYPE=50 + INCLUDE_IN_INDEX=51 + INDENT_WIDTH=52 + TAB_WIDTH=53 + USES_TABS=54 + WRAPS_LINES=55 + PLATFORM_FILTER=56 + PLATFORM_FILTERS=57 + CHILDREN=58 + PRODUCT_INSTALL_PATH=59 + REPOSITORY_URL=60 + REQUIREMENT=61 + PACKAGE=62 + PACKAGE_PRODUCT_DEPENDENCIES=63 + NAME=64 + PATH=65 + SOURCE_TREE=66 + BUILD_ACTION_MASK=67 + FILES=68 + RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING=69 + BUILD_CONFIGURATION_LIST=70 + BUILD_PHASES=71 + BUILD_RULES=72 + BUILD_ARGUMENTS_STRING=73 + BUILD_TOOL_PATH=74 + BUILD_WORKING_DIRECTORY=75 + PASS_BUILD_SETTINGS_IN_ENVIRONMENT=76 + DEPENDENCIES=77 + PRODUCT_NAME=78 + PRODUCT_REFERENCE=79 + PRODUCT_TYPE=80 + LINE_ENDING=81 + XC_LANGUAGE_SPECIFICATION_IDENTIFIER=82 + PLIST_STRUCTURE_DEFINITION_IDENTIFIER=83 + ATTRIBUTES=84 + LAST_SWIFT_MIGRATION=85 + DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE=86 + LAST_SWIFT_UPDATE_CHECK=87 + BUILD_INDEPENDENT_TARGETS_IN_PARALLEL=88 + LAST_TESTING_UPGRADE_CHECK=89 + LAST_UPGRADE_CHECK=90 + ORGANIZATION_NAME=91 + TARGET_ATTRIBUTES=92 + CREATED_ON_TOOLS_VERSION=93 + TEST_TARGET_ID=94 + DEVELOPMENT_TEAM=95 + DEVELOPMENT_TEAM_NAME=96 + PROVISIONING_STYLE=97 + COMPATIBILITY_VERSION=98 + DEVELOPMENT_REGION=99 + HAS_SCANNED_FOR_ENCODINGS=100 + KNOWN_REGIONS=101 + MAIN_GROUP=102 + PRODUCT_REF_GROUP=103 + PACKAGE_REFERENCES=104 + PRODUCT_DIR_PATH=105 + PROJECT_REFERENCES=106 + PROJECT_ROOT=107 + TARGETS=108 + INPUT_FILE_LIST_PATHS=109 + INPUT_PATHS=110 + OUTPUT_FILE_LIST_PATHS=111 + OUTPUT_PATHS=112 + SHELL_PATH=113 + SHELL_SCRIPT=114 + SHOW_ENV_VARS_IN_LOG=115 + TARGET=116 + TARGET_PROXY=117 + FILE_TYPE=118 + REMOTE_REF=119 + BASE_CONFIGURATION_REFERENCE=120 + BUILD_SETTINGS=121 + DST_PATH=122 + DST_SUBFOLDER_SPEC=123 + PRODUCT_GROUP=124 + PROJECT_REF=125 + BUILD_CONFIGURATIONS=126 + DEFAULT_CONFIGURATION_IS_VISIBLE=127 + DEFAULT_CONFIGURATION_NAME=128 + SETTINGS=129 + SYSTEM_CAPABILITIES=130 + CURRENT_VERSION=131 + VERSION_GROUP_TYPE=132 + CLASSPREFIX=133 REFERENCE=134 QUOTED_STRING=135 NON_QUOTED_STRING=136 @@ -1132,7 +1153,7 @@ def start(self): self.enterRule(localctx, 0, self.RULE_start) try: self.enterOuterAlt(localctx, 1) - self.state = 344 + self.state = 348 self.root_element() except RecognitionException as re: localctx.exception = re @@ -1190,19 +1211,19 @@ def root_element(self): self.enterRule(localctx, 2, self.RULE_root_element) try: self.enterOuterAlt(localctx, 1) - self.state = 346 + self.state = 350 self.match(PBXProjParser.T__0) - self.state = 347 + self.state = 351 self.archive_version() - self.state = 348 + self.state = 352 self.classes() - self.state = 349 + self.state = 353 self.object_version() - self.state = 350 + self.state = 354 self.objects() - self.state = 351 + self.state = 355 self.root_object() - self.state = 352 + self.state = 356 self.match(PBXProjParser.T__1) except RecognitionException as re: localctx.exception = re @@ -1220,6 +1241,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def ARCHIVE_VERSION(self): + return self.getToken(PBXProjParser.ARCHIVE_VERSION, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -1243,14 +1267,14 @@ def archive_version(self): self.enterRule(localctx, 4, self.RULE_archive_version) try: self.enterOuterAlt(localctx, 1) - self.state = 354 + self.state = 358 + self.match(PBXProjParser.ARCHIVE_VERSION) + self.state = 359 self.match(PBXProjParser.T__2) - self.state = 355 - self.match(PBXProjParser.T__3) - self.state = 356 + self.state = 360 self.match(PBXProjParser.NUMBER) - self.state = 357 - self.match(PBXProjParser.T__4) + self.state = 361 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1290,16 +1314,16 @@ def classes(self): self.enterRule(localctx, 6, self.RULE_classes) try: self.enterOuterAlt(localctx, 1) - self.state = 359 + self.state = 363 self.match(PBXProjParser.CLASSES) - self.state = 360 - self.match(PBXProjParser.T__3) - self.state = 361 + self.state = 364 + self.match(PBXProjParser.T__2) + self.state = 365 self.match(PBXProjParser.T__0) - self.state = 362 + self.state = 366 self.match(PBXProjParser.T__1) - self.state = 363 - self.match(PBXProjParser.T__4) + self.state = 367 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1316,6 +1340,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def OBJECT_VERSION(self): + return self.getToken(PBXProjParser.OBJECT_VERSION, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -1339,14 +1366,14 @@ def object_version(self): self.enterRule(localctx, 8, self.RULE_object_version) try: self.enterOuterAlt(localctx, 1) - self.state = 365 - self.match(PBXProjParser.T__5) - self.state = 366 - self.match(PBXProjParser.T__3) - self.state = 367 + self.state = 369 + self.match(PBXProjParser.OBJECT_VERSION) + self.state = 370 + self.match(PBXProjParser.T__2) + self.state = 371 self.match(PBXProjParser.NUMBER) - self.state = 368 - self.match(PBXProjParser.T__4) + self.state = 372 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1475,162 +1502,162 @@ def objects(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 370 + self.state = 374 self.match(PBXProjParser.OBJECTS) - self.state = 371 - self.match(PBXProjParser.T__3) - self.state = 372 + self.state = 375 + self.match(PBXProjParser.T__2) + self.state = 376 self.match(PBXProjParser.T__0) - self.state = 374 + self.state = 378 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,0,self._ctx) if la_ == 1: - self.state = 373 + self.state = 377 self.pbx_aggregate_target_section() - self.state = 377 + self.state = 381 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,1,self._ctx) if la_ == 1: - self.state = 376 + self.state = 380 self.pbx_build_file_section() - self.state = 380 + self.state = 384 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,2,self._ctx) if la_ == 1: - self.state = 379 + self.state = 383 self.pbx_container_item_proxy_section() - self.state = 383 + self.state = 387 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,3,self._ctx) if la_ == 1: - self.state = 382 + self.state = 386 self.pbx_copy_files_build_phase_section() - self.state = 385 + self.state = 389 self.pbx_file_reference_section() - self.state = 387 + self.state = 391 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,4,self._ctx) if la_ == 1: - self.state = 386 + self.state = 390 self.pbx_frameworks_build_phase_section() - self.state = 389 + self.state = 393 self.pbx_group_section() - self.state = 391 + self.state = 395 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,5,self._ctx) if la_ == 1: - self.state = 390 + self.state = 394 self.pbx_headers_build_phase_section() - self.state = 394 + self.state = 398 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: - self.state = 393 + self.state = 397 self.pbx_legacy_target_section() - self.state = 397 + self.state = 401 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: - self.state = 396 + self.state = 400 self.pbx_native_target_section() - self.state = 399 + self.state = 403 self.pbx_project_section() - self.state = 401 + self.state = 405 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,8,self._ctx) if la_ == 1: - self.state = 400 + self.state = 404 self.pbx_reference_proxy_section() - self.state = 404 + self.state = 408 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,9,self._ctx) if la_ == 1: - self.state = 403 + self.state = 407 self.pbx_resources_build_phase_section() - self.state = 407 + self.state = 411 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,10,self._ctx) if la_ == 1: - self.state = 406 + self.state = 410 self.pbx_shell_script_build_phase_section() - self.state = 410 + self.state = 414 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,11,self._ctx) if la_ == 1: - self.state = 409 + self.state = 413 self.pbx_sources_build_phase_section() - self.state = 413 + self.state = 417 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,12,self._ctx) if la_ == 1: - self.state = 412 + self.state = 416 self.pbx_target_dependency_section() - self.state = 416 + self.state = 420 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,13,self._ctx) if la_ == 1: - self.state = 415 + self.state = 419 self.pbx_variant_group_section() - self.state = 418 + self.state = 422 self.xc_build_configuration_section() - self.state = 419 + self.state = 423 self.xc_configuration_list_section() - self.state = 421 + self.state = 425 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,14,self._ctx) if la_ == 1: - self.state = 420 + self.state = 424 self.xc_remote_swift_package_reference_section() - self.state = 424 + self.state = 428 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,15,self._ctx) if la_ == 1: - self.state = 423 + self.state = 427 self.xc_swift_package_product_dependency_section() - self.state = 427 + self.state = 431 self._errHandler.sync(self) _la = self._input.LA(1) if _la==134: - self.state = 426 + self.state = 430 self.xc_version_group_section() - self.state = 429 + self.state = 433 self.match(PBXProjParser.T__1) - self.state = 430 - self.match(PBXProjParser.T__4) + self.state = 434 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1673,14 +1700,14 @@ def root_object(self): self.enterRule(localctx, 12, self.RULE_root_object) try: self.enterOuterAlt(localctx, 1) - self.state = 432 + self.state = 436 self.match(PBXProjParser.ROOT_OBJECT) - self.state = 433 - self.match(PBXProjParser.T__3) - self.state = 434 + self.state = 437 + self.match(PBXProjParser.T__2) + self.state = 438 self.match(PBXProjParser.REFERENCE) - self.state = 435 - self.match(PBXProjParser.T__4) + self.state = 439 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -1724,17 +1751,17 @@ def pbx_aggregate_target_section(self): self.enterRule(localctx, 14, self.RULE_pbx_aggregate_target_section) try: self.enterOuterAlt(localctx, 1) - self.state = 438 + self.state = 442 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 437 + self.state = 441 self.pbx_aggregate_target() else: raise NoViableAltException(self) - self.state = 440 + self.state = 444 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,17,self._ctx) @@ -1781,17 +1808,17 @@ def pbx_build_file_section(self): self.enterRule(localctx, 16, self.RULE_pbx_build_file_section) try: self.enterOuterAlt(localctx, 1) - self.state = 443 + self.state = 447 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 442 + self.state = 446 self.pbx_build_file() else: raise NoViableAltException(self) - self.state = 445 + self.state = 449 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,18,self._ctx) @@ -1838,17 +1865,17 @@ def pbx_container_item_proxy_section(self): self.enterRule(localctx, 18, self.RULE_pbx_container_item_proxy_section) try: self.enterOuterAlt(localctx, 1) - self.state = 448 + self.state = 452 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 447 + self.state = 451 self.pbx_container_item_proxy() else: raise NoViableAltException(self) - self.state = 450 + self.state = 454 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,19,self._ctx) @@ -1895,17 +1922,17 @@ def pbx_copy_files_build_phase_section(self): self.enterRule(localctx, 20, self.RULE_pbx_copy_files_build_phase_section) try: self.enterOuterAlt(localctx, 1) - self.state = 453 + self.state = 457 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 452 + self.state = 456 self.pbx_copy_files_build_phase() else: raise NoViableAltException(self) - self.state = 455 + self.state = 459 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,20,self._ctx) @@ -1952,17 +1979,17 @@ def pbx_file_reference_section(self): self.enterRule(localctx, 22, self.RULE_pbx_file_reference_section) try: self.enterOuterAlt(localctx, 1) - self.state = 458 + self.state = 462 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 457 + self.state = 461 self.pbx_file_reference() else: raise NoViableAltException(self) - self.state = 460 + self.state = 464 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,21,self._ctx) @@ -2009,17 +2036,17 @@ def pbx_frameworks_build_phase_section(self): self.enterRule(localctx, 24, self.RULE_pbx_frameworks_build_phase_section) try: self.enterOuterAlt(localctx, 1) - self.state = 463 + self.state = 467 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 462 + self.state = 466 self.pbx_frameworks_build_phase() else: raise NoViableAltException(self) - self.state = 465 + self.state = 469 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,22,self._ctx) @@ -2066,17 +2093,17 @@ def pbx_group_section(self): self.enterRule(localctx, 26, self.RULE_pbx_group_section) try: self.enterOuterAlt(localctx, 1) - self.state = 468 + self.state = 472 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 467 + self.state = 471 self.pbx_group() else: raise NoViableAltException(self) - self.state = 470 + self.state = 474 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,23,self._ctx) @@ -2123,17 +2150,17 @@ def pbx_headers_build_phase_section(self): self.enterRule(localctx, 28, self.RULE_pbx_headers_build_phase_section) try: self.enterOuterAlt(localctx, 1) - self.state = 473 + self.state = 477 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 472 + self.state = 476 self.pbx_headers_build_phase() else: raise NoViableAltException(self) - self.state = 475 + self.state = 479 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,24,self._ctx) @@ -2180,17 +2207,17 @@ def pbx_native_target_section(self): self.enterRule(localctx, 30, self.RULE_pbx_native_target_section) try: self.enterOuterAlt(localctx, 1) - self.state = 478 + self.state = 482 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 477 + self.state = 481 self.pbx_native_target() else: raise NoViableAltException(self) - self.state = 480 + self.state = 484 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,25,self._ctx) @@ -2237,17 +2264,17 @@ def pbx_legacy_target_section(self): self.enterRule(localctx, 32, self.RULE_pbx_legacy_target_section) try: self.enterOuterAlt(localctx, 1) - self.state = 483 + self.state = 487 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 482 + self.state = 486 self.pbx_legacy_target() else: raise NoViableAltException(self) - self.state = 485 + self.state = 489 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,26,self._ctx) @@ -2294,17 +2321,17 @@ def pbx_project_section(self): self.enterRule(localctx, 34, self.RULE_pbx_project_section) try: self.enterOuterAlt(localctx, 1) - self.state = 488 + self.state = 492 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 487 + self.state = 491 self.pbx_project() else: raise NoViableAltException(self) - self.state = 490 + self.state = 494 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,27,self._ctx) @@ -2351,17 +2378,17 @@ def pbx_reference_proxy_section(self): self.enterRule(localctx, 36, self.RULE_pbx_reference_proxy_section) try: self.enterOuterAlt(localctx, 1) - self.state = 493 + self.state = 497 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 492 + self.state = 496 self.pbx_reference_proxy() else: raise NoViableAltException(self) - self.state = 495 + self.state = 499 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,28,self._ctx) @@ -2408,17 +2435,17 @@ def pbx_resources_build_phase_section(self): self.enterRule(localctx, 38, self.RULE_pbx_resources_build_phase_section) try: self.enterOuterAlt(localctx, 1) - self.state = 498 + self.state = 502 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 497 + self.state = 501 self.pbx_resources_build_phase() else: raise NoViableAltException(self) - self.state = 500 + self.state = 504 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,29,self._ctx) @@ -2465,17 +2492,17 @@ def pbx_shell_script_build_phase_section(self): self.enterRule(localctx, 40, self.RULE_pbx_shell_script_build_phase_section) try: self.enterOuterAlt(localctx, 1) - self.state = 503 + self.state = 507 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 502 + self.state = 506 self.pbx_shell_script_build_phase() else: raise NoViableAltException(self) - self.state = 505 + self.state = 509 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,30,self._ctx) @@ -2522,17 +2549,17 @@ def pbx_sources_build_phase_section(self): self.enterRule(localctx, 42, self.RULE_pbx_sources_build_phase_section) try: self.enterOuterAlt(localctx, 1) - self.state = 508 + self.state = 512 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 507 + self.state = 511 self.pbx_sources_build_phase() else: raise NoViableAltException(self) - self.state = 510 + self.state = 514 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,31,self._ctx) @@ -2579,17 +2606,17 @@ def pbx_target_dependency_section(self): self.enterRule(localctx, 44, self.RULE_pbx_target_dependency_section) try: self.enterOuterAlt(localctx, 1) - self.state = 513 + self.state = 517 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 512 + self.state = 516 self.pbx_target_dependency() else: raise NoViableAltException(self) - self.state = 515 + self.state = 519 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,32,self._ctx) @@ -2636,17 +2663,17 @@ def pbx_variant_group_section(self): self.enterRule(localctx, 46, self.RULE_pbx_variant_group_section) try: self.enterOuterAlt(localctx, 1) - self.state = 518 + self.state = 522 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 517 + self.state = 521 self.pbx_variant_group() else: raise NoViableAltException(self) - self.state = 520 + self.state = 524 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,33,self._ctx) @@ -2693,17 +2720,17 @@ def xc_build_configuration_section(self): self.enterRule(localctx, 48, self.RULE_xc_build_configuration_section) try: self.enterOuterAlt(localctx, 1) - self.state = 523 + self.state = 527 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 522 + self.state = 526 self.xc_build_configuration() else: raise NoViableAltException(self) - self.state = 525 + self.state = 529 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,34,self._ctx) @@ -2750,17 +2777,17 @@ def xc_configuration_list_section(self): self.enterRule(localctx, 50, self.RULE_xc_configuration_list_section) try: self.enterOuterAlt(localctx, 1) - self.state = 528 + self.state = 532 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 527 + self.state = 531 self.xc_configuration_list() else: raise NoViableAltException(self) - self.state = 530 + self.state = 534 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,35,self._ctx) @@ -2807,17 +2834,17 @@ def xc_remote_swift_package_reference_section(self): self.enterRule(localctx, 52, self.RULE_xc_remote_swift_package_reference_section) try: self.enterOuterAlt(localctx, 1) - self.state = 533 + self.state = 537 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 532 + self.state = 536 self.xc_remote_swift_package_reference() else: raise NoViableAltException(self) - self.state = 535 + self.state = 539 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,36,self._ctx) @@ -2864,17 +2891,17 @@ def xc_swift_package_product_dependency_section(self): self.enterRule(localctx, 54, self.RULE_xc_swift_package_product_dependency_section) try: self.enterOuterAlt(localctx, 1) - self.state = 538 + self.state = 542 self._errHandler.sync(self) _alt = 1 while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt == 1: - self.state = 537 + self.state = 541 self.xc_swift_package_product_dependency() else: raise NoViableAltException(self) - self.state = 540 + self.state = 544 self._errHandler.sync(self) _alt = self._interp.adaptivePredict(self._input,37,self._ctx) @@ -2922,13 +2949,13 @@ def xc_version_group_section(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 543 + self.state = 547 self._errHandler.sync(self) _la = self._input.LA(1) while True: - self.state = 542 + self.state = 546 self.xc_version_group() - self.state = 545 + self.state = 549 self._errHandler.sync(self) _la = self._input.LA(1) if not (_la==134): @@ -2998,34 +3025,34 @@ def pbx_aggregate_target(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 547 + self.state = 551 self.match(PBXProjParser.REFERENCE) - self.state = 548 - self.match(PBXProjParser.T__3) - self.state = 549 + self.state = 552 + self.match(PBXProjParser.T__2) + self.state = 553 self.match(PBXProjParser.T__0) - self.state = 550 + self.state = 554 self.isa_pbx_aggregate_target() - self.state = 551 + self.state = 555 self.build_configuration_list() - self.state = 552 + self.state = 556 self.build_phases() - self.state = 553 + self.state = 557 self.dependencies() - self.state = 554 + self.state = 558 self.name() - self.state = 556 + self.state = 560 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==69: - self.state = 555 + if _la==78: + self.state = 559 self.product_name() - self.state = 558 + self.state = 562 self.match(PBXProjParser.T__1) - self.state = 559 - self.match(PBXProjParser.T__4) + self.state = 563 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3090,58 +3117,58 @@ def pbx_build_file(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 561 + self.state = 565 self.match(PBXProjParser.REFERENCE) - self.state = 562 - self.match(PBXProjParser.T__3) - self.state = 563 + self.state = 566 + self.match(PBXProjParser.T__2) + self.state = 567 self.match(PBXProjParser.T__0) - self.state = 564 + self.state = 568 self.isa_pbx_build_file() - self.state = 566 + self.state = 570 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==29: - self.state = 565 + if _la==41: + self.state = 569 self.file_ref() - self.state = 569 + self.state = 573 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==44: - self.state = 568 + if _la==56: + self.state = 572 self.platform_filter() - self.state = 572 + self.state = 576 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==45: - self.state = 571 + if _la==57: + self.state = 575 self.platform_filters() - self.state = 575 + self.state = 579 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==30: - self.state = 574 + if _la==42: + self.state = 578 self.product_ref() - self.state = 578 + self.state = 582 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==120: - self.state = 577 + if _la==129: + self.state = 581 self.settings() - self.state = 580 + self.state = 584 self.match(PBXProjParser.T__1) - self.state = 581 - self.match(PBXProjParser.T__4) + self.state = 585 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3201,26 +3228,26 @@ def pbx_container_item_proxy(self): self.enterRule(localctx, 62, self.RULE_pbx_container_item_proxy) try: self.enterOuterAlt(localctx, 1) - self.state = 583 + self.state = 587 self.match(PBXProjParser.REFERENCE) - self.state = 584 - self.match(PBXProjParser.T__3) - self.state = 585 + self.state = 588 + self.match(PBXProjParser.T__2) + self.state = 589 self.match(PBXProjParser.T__0) - self.state = 586 + self.state = 590 self.isa_pbx_container_item_proxy() - self.state = 587 + self.state = 591 self.container_portal() - self.state = 588 + self.state = 592 self.proxy_type() - self.state = 589 + self.state = 593 self.remote_global_id_string() - self.state = 590 + self.state = 594 self.remote_info() - self.state = 591 + self.state = 595 self.match(PBXProjParser.T__1) - self.state = 592 - self.match(PBXProjParser.T__4) + self.state = 596 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3289,36 +3316,36 @@ def pbx_copy_files_build_phase(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 594 + self.state = 598 self.match(PBXProjParser.REFERENCE) - self.state = 595 - self.match(PBXProjParser.T__3) - self.state = 596 + self.state = 599 + self.match(PBXProjParser.T__2) + self.state = 600 self.match(PBXProjParser.T__0) - self.state = 597 + self.state = 601 self.isa_pbx_copy_files_build_phase() - self.state = 598 + self.state = 602 self.build_action_mask() - self.state = 599 + self.state = 603 self.dst_path() - self.state = 600 + self.state = 604 self.dst_subfolder_spec() - self.state = 601 + self.state = 605 self.files() - self.state = 603 + self.state = 607 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 602 + if _la==64: + self.state = 606 self.name() - self.state = 605 + self.state = 609 self.run_only_for_deployment_postprocessing() - self.state = 606 + self.state = 610 self.match(PBXProjParser.T__1) - self.state = 607 - self.match(PBXProjParser.T__4) + self.state = 611 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3419,130 +3446,130 @@ def pbx_file_reference(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 609 + self.state = 613 self.match(PBXProjParser.REFERENCE) - self.state = 610 - self.match(PBXProjParser.T__3) - self.state = 611 + self.state = 614 + self.match(PBXProjParser.T__2) + self.state = 615 self.match(PBXProjParser.T__0) - self.state = 612 + self.state = 616 self.isa_pbx_file_reference() - self.state = 614 + self.state = 618 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==36: - self.state = 613 + if _la==48: + self.state = 617 self.comments() - self.state = 617 + self.state = 621 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==37: - self.state = 616 + if _la==49: + self.state = 620 self.explicit_file_type() - self.state = 620 + self.state = 624 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==35: - self.state = 619 + if _la==47: + self.state = 623 self.file_encoding() - self.state = 623 + self.state = 627 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==39: - self.state = 622 + if _la==51: + self.state = 626 self.include_in_index() - self.state = 626 + self.state = 630 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==40: - self.state = 625 + if _la==52: + self.state = 629 self.indent_width() - self.state = 629 + self.state = 633 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==38: - self.state = 628 + if _la==50: + self.state = 632 self.last_known_file_type() - self.state = 632 + self.state = 636 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==72: - self.state = 631 + if _la==81: + self.state = 635 self.line_ending() - self.state = 635 + self.state = 639 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 634 + if _la==64: + self.state = 638 self.name() - self.state = 638 + self.state = 642 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==53: - self.state = 637 + if _la==65: + self.state = 641 self.path() - self.state = 641 + self.state = 645 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==74: - self.state = 640 + if _la==83: + self.state = 644 self.plist_structure_definition_identifier() - self.state = 644 + self.state = 648 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==54: - self.state = 643 + if _la==66: + self.state = 647 self.source_tree() - self.state = 647 + self.state = 651 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==41: - self.state = 646 + if _la==53: + self.state = 650 self.tab_width() - self.state = 650 + self.state = 654 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==73: - self.state = 649 + if _la==82: + self.state = 653 self.xc_language_specification_identifier() - self.state = 653 + self.state = 657 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==42: - self.state = 652 + if _la==54: + self.state = 656 self.uses_tabs() - self.state = 655 + self.state = 659 self.match(PBXProjParser.T__1) - self.state = 656 - self.match(PBXProjParser.T__4) + self.state = 660 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3598,24 +3625,24 @@ def pbx_frameworks_build_phase(self): self.enterRule(localctx, 68, self.RULE_pbx_frameworks_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 658 + self.state = 662 self.match(PBXProjParser.REFERENCE) - self.state = 659 - self.match(PBXProjParser.T__3) - self.state = 660 + self.state = 663 + self.match(PBXProjParser.T__2) + self.state = 664 self.match(PBXProjParser.T__0) - self.state = 661 + self.state = 665 self.isa_pbx_frameworks_build_phase() - self.state = 662 + self.state = 666 self.build_action_mask() - self.state = 663 + self.state = 667 self.files() - self.state = 664 + self.state = 668 self.run_only_for_deployment_postprocessing() - self.state = 665 + self.state = 669 self.match(PBXProjParser.T__1) - self.state = 666 - self.match(PBXProjParser.T__4) + self.state = 670 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3696,78 +3723,78 @@ def pbx_group(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 668 + self.state = 672 self.match(PBXProjParser.REFERENCE) - self.state = 669 - self.match(PBXProjParser.T__3) - self.state = 670 + self.state = 673 + self.match(PBXProjParser.T__2) + self.state = 674 self.match(PBXProjParser.T__0) - self.state = 671 + self.state = 675 self.isa_pbx_group() - self.state = 672 + self.state = 676 self.children() - self.state = 674 + self.state = 678 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==40: - self.state = 673 + if _la==52: + self.state = 677 self.indent_width() - self.state = 677 + self.state = 681 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==39: - self.state = 676 + if _la==51: + self.state = 680 self.include_in_index() - self.state = 680 + self.state = 684 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 679 + if _la==64: + self.state = 683 self.name() - self.state = 683 + self.state = 687 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==53: - self.state = 682 + if _la==65: + self.state = 686 self.path() - self.state = 685 + self.state = 689 self.source_tree() - self.state = 687 + self.state = 691 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==41: - self.state = 686 + if _la==53: + self.state = 690 self.tab_width() - self.state = 690 + self.state = 694 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==42: - self.state = 689 + if _la==54: + self.state = 693 self.uses_tabs() - self.state = 693 + self.state = 697 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==43: - self.state = 692 + if _la==55: + self.state = 696 self.wraps_lines() - self.state = 695 + self.state = 699 self.match(PBXProjParser.T__1) - self.state = 696 - self.match(PBXProjParser.T__4) + self.state = 700 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3823,24 +3850,24 @@ def pbx_headers_build_phase(self): self.enterRule(localctx, 72, self.RULE_pbx_headers_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 698 + self.state = 702 self.match(PBXProjParser.REFERENCE) - self.state = 699 - self.match(PBXProjParser.T__3) - self.state = 700 + self.state = 703 + self.match(PBXProjParser.T__2) + self.state = 704 self.match(PBXProjParser.T__0) - self.state = 701 + self.state = 705 self.isa_pbx_header_build_phase() - self.state = 702 + self.state = 706 self.build_action_mask() - self.state = 703 + self.state = 707 self.files() - self.state = 704 + self.state = 708 self.run_only_for_deployment_postprocessing() - self.state = 705 + self.state = 709 self.match(PBXProjParser.T__1) - self.state = 706 - self.match(PBXProjParser.T__4) + self.state = 710 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -3925,50 +3952,50 @@ def pbx_native_target(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 708 + self.state = 712 self.match(PBXProjParser.REFERENCE) - self.state = 709 - self.match(PBXProjParser.T__3) - self.state = 710 + self.state = 713 + self.match(PBXProjParser.T__2) + self.state = 714 self.match(PBXProjParser.T__0) - self.state = 711 + self.state = 715 self.isa_pbx_native_target() - self.state = 712 + self.state = 716 self.build_configuration_list() - self.state = 713 + self.state = 717 self.build_phases() - self.state = 714 + self.state = 718 self.build_rules() - self.state = 715 + self.state = 719 self.dependencies() - self.state = 716 + self.state = 720 self.name() - self.state = 718 + self.state = 722 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==47: - self.state = 717 + if _la==59: + self.state = 721 self.product_install_path() - self.state = 721 + self.state = 725 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==51: - self.state = 720 + if _la==63: + self.state = 724 self.package_product_dependencies() - self.state = 723 + self.state = 727 self.product_name() - self.state = 724 + self.state = 728 self.product_reference() - self.state = 725 + self.state = 729 self.product_type() - self.state = 726 + self.state = 730 self.match(PBXProjParser.T__1) - self.state = 727 - self.match(PBXProjParser.T__4) + self.state = 731 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4048,36 +4075,36 @@ def pbx_legacy_target(self): self.enterRule(localctx, 76, self.RULE_pbx_legacy_target) try: self.enterOuterAlt(localctx, 1) - self.state = 729 + self.state = 733 self.match(PBXProjParser.REFERENCE) - self.state = 730 - self.match(PBXProjParser.T__3) - self.state = 731 + self.state = 734 + self.match(PBXProjParser.T__2) + self.state = 735 self.match(PBXProjParser.T__0) - self.state = 732 + self.state = 736 self.isa_pbx_legacy_target() - self.state = 733 + self.state = 737 self.build_arguments_string() - self.state = 734 + self.state = 738 self.build_configuration_list() - self.state = 735 + self.state = 739 self.build_phases() - self.state = 736 + self.state = 740 self.build_tool_path() - self.state = 737 + self.state = 741 self.build_working_directory() - self.state = 738 + self.state = 742 self.dependencies() - self.state = 739 + self.state = 743 self.name() - self.state = 740 + self.state = 744 self.pass_build_settings_in_environment() - self.state = 741 + self.state = 745 self.product_name() - self.state = 742 + self.state = 746 self.match(PBXProjParser.T__1) - self.state = 743 - self.match(PBXProjParser.T__4) + self.state = 747 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4174,80 +4201,80 @@ def pbx_project(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 745 + self.state = 749 self.match(PBXProjParser.REFERENCE) - self.state = 746 - self.match(PBXProjParser.T__3) - self.state = 747 + self.state = 750 + self.match(PBXProjParser.T__2) + self.state = 751 self.match(PBXProjParser.T__0) - self.state = 748 + self.state = 752 self.isa_pbx_project() - self.state = 750 + self.state = 754 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==75: - self.state = 749 + if _la==84: + self.state = 753 self.attributes() - self.state = 752 + self.state = 756 self.build_configuration_list() - self.state = 753 + self.state = 757 self.compatibility_version() - self.state = 755 + self.state = 759 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==90: - self.state = 754 + if _la==99: + self.state = 758 self.development_region() - self.state = 757 + self.state = 761 self.has_scanned_for_encodings() - self.state = 759 + self.state = 763 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==92: - self.state = 758 + if _la==101: + self.state = 762 self.known_regions() - self.state = 761 + self.state = 765 self.main_group() - self.state = 763 + self.state = 767 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==95: - self.state = 762 + if _la==104: + self.state = 766 self.package_references() - self.state = 766 + self.state = 770 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==94: - self.state = 765 + if _la==103: + self.state = 769 self.product_ref_group() - self.state = 768 + self.state = 772 self.project_dir_path() - self.state = 770 + self.state = 774 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==97: - self.state = 769 + if _la==106: + self.state = 773 self.project_references() - self.state = 772 + self.state = 776 self.project_root() - self.state = 773 + self.state = 777 self.targets() - self.state = 774 + self.state = 778 self.match(PBXProjParser.T__1) - self.state = 775 - self.match(PBXProjParser.T__4) + self.state = 779 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4312,34 +4339,34 @@ def pbx_reference_proxy(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 777 + self.state = 781 self.match(PBXProjParser.REFERENCE) - self.state = 778 - self.match(PBXProjParser.T__3) - self.state = 779 + self.state = 782 + self.match(PBXProjParser.T__2) + self.state = 783 self.match(PBXProjParser.T__0) - self.state = 780 + self.state = 784 self.isa_pbx_reference_proxy() - self.state = 781 + self.state = 785 self.file_type() - self.state = 783 + self.state = 787 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 782 + if _la==64: + self.state = 786 self.name() - self.state = 785 + self.state = 789 self.path() - self.state = 786 + self.state = 790 self.remote_ref() - self.state = 787 + self.state = 791 self.source_tree() - self.state = 788 + self.state = 792 self.match(PBXProjParser.T__1) - self.state = 789 - self.match(PBXProjParser.T__4) + self.state = 793 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4395,24 +4422,24 @@ def pbx_resources_build_phase(self): self.enterRule(localctx, 82, self.RULE_pbx_resources_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 791 + self.state = 795 self.match(PBXProjParser.REFERENCE) - self.state = 792 - self.match(PBXProjParser.T__3) - self.state = 793 + self.state = 796 + self.match(PBXProjParser.T__2) + self.state = 797 self.match(PBXProjParser.T__0) - self.state = 794 + self.state = 798 self.isa_pbx_resources_build_phase() - self.state = 795 + self.state = 799 self.build_action_mask() - self.state = 796 + self.state = 800 self.files() - self.state = 797 + self.state = 801 self.run_only_for_deployment_postprocessing() - self.state = 798 + self.state = 802 self.match(PBXProjParser.T__1) - self.state = 799 - self.match(PBXProjParser.T__4) + self.state = 803 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4501,76 +4528,76 @@ def pbx_shell_script_build_phase(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 801 + self.state = 805 self.match(PBXProjParser.REFERENCE) - self.state = 802 - self.match(PBXProjParser.T__3) - self.state = 803 + self.state = 806 + self.match(PBXProjParser.T__2) + self.state = 807 self.match(PBXProjParser.T__0) - self.state = 804 + self.state = 808 self.isa_pbx_shell_script_build_phase() - self.state = 805 + self.state = 809 self.build_action_mask() - self.state = 806 + self.state = 810 self.files() - self.state = 808 + self.state = 812 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==100: - self.state = 807 + if _la==109: + self.state = 811 self.input_file_list_paths() - self.state = 811 + self.state = 815 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==101: - self.state = 810 + if _la==110: + self.state = 814 self.input_paths() - self.state = 814 + self.state = 818 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 813 + if _la==64: + self.state = 817 self.name() - self.state = 817 + self.state = 821 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==102: - self.state = 816 + if _la==111: + self.state = 820 self.output_file_list_paths() - self.state = 820 + self.state = 824 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==103: - self.state = 819 + if _la==112: + self.state = 823 self.output_paths() - self.state = 822 + self.state = 826 self.run_only_for_deployment_postprocessing() - self.state = 823 + self.state = 827 self.shell_path() - self.state = 824 + self.state = 828 self.shell_script() - self.state = 826 + self.state = 830 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==106: - self.state = 825 + if _la==115: + self.state = 829 self.show_env_vars_in_log() - self.state = 828 + self.state = 832 self.match(PBXProjParser.T__1) - self.state = 829 - self.match(PBXProjParser.T__4) + self.state = 833 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4626,24 +4653,24 @@ def pbx_sources_build_phase(self): self.enterRule(localctx, 86, self.RULE_pbx_sources_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 831 + self.state = 835 self.match(PBXProjParser.REFERENCE) - self.state = 832 - self.match(PBXProjParser.T__3) - self.state = 833 + self.state = 836 + self.match(PBXProjParser.T__2) + self.state = 837 self.match(PBXProjParser.T__0) - self.state = 834 + self.state = 838 self.isa_pbx_sources_build_phase() - self.state = 835 + self.state = 839 self.build_action_mask() - self.state = 836 + self.state = 840 self.files() - self.state = 837 + self.state = 841 self.run_only_for_deployment_postprocessing() - self.state = 838 + self.state = 842 self.match(PBXProjParser.T__1) - self.state = 839 - self.match(PBXProjParser.T__4) + self.state = 843 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4708,52 +4735,52 @@ def pbx_target_dependency(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 841 + self.state = 845 self.match(PBXProjParser.REFERENCE) - self.state = 842 - self.match(PBXProjParser.T__3) - self.state = 843 + self.state = 846 + self.match(PBXProjParser.T__2) + self.state = 847 self.match(PBXProjParser.T__0) - self.state = 844 + self.state = 848 self.isa_pbx_target_dependency() - self.state = 846 + self.state = 850 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 845 + if _la==64: + self.state = 849 self.name() - self.state = 849 + self.state = 853 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==44: - self.state = 848 + if _la==56: + self.state = 852 self.platform_filter() - self.state = 852 + self.state = 856 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==45: - self.state = 851 + if _la==57: + self.state = 855 self.platform_filters() - self.state = 855 + self.state = 859 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==107: - self.state = 854 + if _la==116: + self.state = 858 self.target() - self.state = 857 + self.state = 861 self.target_proxy() - self.state = 858 + self.state = 862 self.match(PBXProjParser.T__1) - self.state = 859 - self.match(PBXProjParser.T__4) + self.state = 863 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4814,32 +4841,32 @@ def pbx_variant_group(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 861 + self.state = 865 self.match(PBXProjParser.REFERENCE) - self.state = 862 - self.match(PBXProjParser.T__3) - self.state = 863 + self.state = 866 + self.match(PBXProjParser.T__2) + self.state = 867 self.match(PBXProjParser.T__0) - self.state = 864 + self.state = 868 self.isa_pbx_variant_group() - self.state = 865 + self.state = 869 self.children() - self.state = 866 + self.state = 870 self.name() - self.state = 868 + self.state = 872 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==53: - self.state = 867 + if _la==65: + self.state = 871 self.path() - self.state = 870 + self.state = 874 self.source_tree() - self.state = 871 + self.state = 875 self.match(PBXProjParser.T__1) - self.state = 872 - self.match(PBXProjParser.T__4) + self.state = 876 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4896,30 +4923,30 @@ def xc_build_configuration(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 874 + self.state = 878 self.match(PBXProjParser.REFERENCE) - self.state = 875 - self.match(PBXProjParser.T__3) - self.state = 876 + self.state = 879 + self.match(PBXProjParser.T__2) + self.state = 880 self.match(PBXProjParser.T__0) - self.state = 877 + self.state = 881 self.isa_xc_build_configuration() - self.state = 879 + self.state = 883 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==111: - self.state = 878 + if _la==120: + self.state = 882 self.base_configuration_reference() - self.state = 881 + self.state = 885 self.build_settings() - self.state = 882 + self.state = 886 self.name() - self.state = 883 + self.state = 887 self.match(PBXProjParser.T__1) - self.state = 884 - self.match(PBXProjParser.T__4) + self.state = 888 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -4976,30 +5003,30 @@ def xc_configuration_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 886 + self.state = 890 self.match(PBXProjParser.REFERENCE) - self.state = 887 - self.match(PBXProjParser.T__3) - self.state = 888 + self.state = 891 + self.match(PBXProjParser.T__2) + self.state = 892 self.match(PBXProjParser.T__0) - self.state = 889 + self.state = 893 self.isa_xc_configuration_list() - self.state = 890 + self.state = 894 self.build_configurations() - self.state = 891 + self.state = 895 self.default_configuration_is_visible() - self.state = 893 + self.state = 897 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==119: - self.state = 892 + if _la==128: + self.state = 896 self.default_configuration_name() - self.state = 895 + self.state = 899 self.match(PBXProjParser.T__1) - self.state = 896 - self.match(PBXProjParser.T__4) + self.state = 900 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5051,22 +5078,22 @@ def xc_remote_swift_package_reference(self): self.enterRule(localctx, 96, self.RULE_xc_remote_swift_package_reference) try: self.enterOuterAlt(localctx, 1) - self.state = 898 + self.state = 902 self.match(PBXProjParser.REFERENCE) - self.state = 899 - self.match(PBXProjParser.T__3) - self.state = 900 + self.state = 903 + self.match(PBXProjParser.T__2) + self.state = 904 self.match(PBXProjParser.T__0) - self.state = 901 + self.state = 905 self.isa_xc_remote_swift_package_reference() - self.state = 902 + self.state = 906 self.repository_url() - self.state = 903 + self.state = 907 self.requirement() - self.state = 904 + self.state = 908 self.match(PBXProjParser.T__1) - self.state = 905 - self.match(PBXProjParser.T__4) + self.state = 909 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5119,28 +5146,28 @@ def xc_swift_package_product_dependency(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 907 + self.state = 911 self.match(PBXProjParser.REFERENCE) - self.state = 908 - self.match(PBXProjParser.T__3) - self.state = 909 + self.state = 912 + self.match(PBXProjParser.T__2) + self.state = 913 self.match(PBXProjParser.T__0) - self.state = 910 + self.state = 914 self.isa_xc_swift_package_product_dependency() - self.state = 912 + self.state = 916 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==50: - self.state = 911 + if _la==62: + self.state = 915 self.xc_package() - self.state = 914 + self.state = 918 self.product_name() - self.state = 915 + self.state = 919 self.match(PBXProjParser.T__1) - self.state = 916 - self.match(PBXProjParser.T__4) + self.state = 920 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5209,36 +5236,36 @@ def xc_version_group(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 918 + self.state = 922 self.match(PBXProjParser.REFERENCE) - self.state = 919 - self.match(PBXProjParser.T__3) - self.state = 920 + self.state = 923 + self.match(PBXProjParser.T__2) + self.state = 924 self.match(PBXProjParser.T__0) - self.state = 921 + self.state = 925 self.isa_xc_version_group() - self.state = 922 + self.state = 926 self.children() - self.state = 923 + self.state = 927 self.current_version() - self.state = 925 + self.state = 929 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==52: - self.state = 924 + if _la==64: + self.state = 928 self.name() - self.state = 927 + self.state = 931 self.path() - self.state = 928 + self.state = 932 self.source_tree() - self.state = 929 + self.state = 933 self.version_group_type() - self.state = 930 + self.state = 934 self.match(PBXProjParser.T__1) - self.state = 931 - self.match(PBXProjParser.T__4) + self.state = 935 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5258,6 +5285,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_AGGREGATE_TARGET(self): + return self.getToken(PBXProjParser.PBX_AGGREGATE_TARGET, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_aggregate_target @@ -5278,14 +5308,14 @@ def isa_pbx_aggregate_target(self): self.enterRule(localctx, 102, self.RULE_isa_pbx_aggregate_target) try: self.enterOuterAlt(localctx, 1) - self.state = 933 + self.state = 937 self.match(PBXProjParser.ISA) - self.state = 934 + self.state = 938 + self.match(PBXProjParser.T__2) + self.state = 939 + self.match(PBXProjParser.PBX_AGGREGATE_TARGET) + self.state = 940 self.match(PBXProjParser.T__3) - self.state = 935 - self.match(PBXProjParser.T__6) - self.state = 936 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5305,6 +5335,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_BUILD_FILE(self): + return self.getToken(PBXProjParser.PBX_BUILD_FILE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_build_file @@ -5325,14 +5358,14 @@ def isa_pbx_build_file(self): self.enterRule(localctx, 104, self.RULE_isa_pbx_build_file) try: self.enterOuterAlt(localctx, 1) - self.state = 938 + self.state = 942 self.match(PBXProjParser.ISA) - self.state = 939 + self.state = 943 + self.match(PBXProjParser.T__2) + self.state = 944 + self.match(PBXProjParser.PBX_BUILD_FILE) + self.state = 945 self.match(PBXProjParser.T__3) - self.state = 940 - self.match(PBXProjParser.T__7) - self.state = 941 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5352,6 +5385,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_CONTAINER_ITEM_PROXY(self): + return self.getToken(PBXProjParser.PBX_CONTAINER_ITEM_PROXY, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_container_item_proxy @@ -5372,14 +5408,14 @@ def isa_pbx_container_item_proxy(self): self.enterRule(localctx, 106, self.RULE_isa_pbx_container_item_proxy) try: self.enterOuterAlt(localctx, 1) - self.state = 943 + self.state = 947 self.match(PBXProjParser.ISA) - self.state = 944 + self.state = 948 + self.match(PBXProjParser.T__2) + self.state = 949 + self.match(PBXProjParser.PBX_CONTAINER_ITEM_PROXY) + self.state = 950 self.match(PBXProjParser.T__3) - self.state = 945 - self.match(PBXProjParser.T__8) - self.state = 946 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5399,6 +5435,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_COPY_FILES_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_COPY_FILES_BUILD_PHASE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_copy_files_build_phase @@ -5419,14 +5458,14 @@ def isa_pbx_copy_files_build_phase(self): self.enterRule(localctx, 108, self.RULE_isa_pbx_copy_files_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 948 + self.state = 952 self.match(PBXProjParser.ISA) - self.state = 949 + self.state = 953 + self.match(PBXProjParser.T__2) + self.state = 954 + self.match(PBXProjParser.PBX_COPY_FILES_BUILD_PHASE) + self.state = 955 self.match(PBXProjParser.T__3) - self.state = 950 - self.match(PBXProjParser.T__9) - self.state = 951 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5446,6 +5485,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_FILE_REFERENCE(self): + return self.getToken(PBXProjParser.PBX_FILE_REFERENCE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_file_reference @@ -5466,14 +5508,14 @@ def isa_pbx_file_reference(self): self.enterRule(localctx, 110, self.RULE_isa_pbx_file_reference) try: self.enterOuterAlt(localctx, 1) - self.state = 953 + self.state = 957 self.match(PBXProjParser.ISA) - self.state = 954 + self.state = 958 + self.match(PBXProjParser.T__2) + self.state = 959 + self.match(PBXProjParser.PBX_FILE_REFERENCE) + self.state = 960 self.match(PBXProjParser.T__3) - self.state = 955 - self.match(PBXProjParser.T__10) - self.state = 956 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5493,6 +5535,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_FRAMEWORKS_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_FRAMEWORKS_BUILD_PHASE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_frameworks_build_phase @@ -5513,14 +5558,14 @@ def isa_pbx_frameworks_build_phase(self): self.enterRule(localctx, 112, self.RULE_isa_pbx_frameworks_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 958 + self.state = 962 self.match(PBXProjParser.ISA) - self.state = 959 + self.state = 963 + self.match(PBXProjParser.T__2) + self.state = 964 + self.match(PBXProjParser.PBX_FRAMEWORKS_BUILD_PHASE) + self.state = 965 self.match(PBXProjParser.T__3) - self.state = 960 - self.match(PBXProjParser.T__11) - self.state = 961 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5540,6 +5585,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_GROUP(self): + return self.getToken(PBXProjParser.PBX_GROUP, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_group @@ -5560,14 +5608,14 @@ def isa_pbx_group(self): self.enterRule(localctx, 114, self.RULE_isa_pbx_group) try: self.enterOuterAlt(localctx, 1) - self.state = 963 + self.state = 967 self.match(PBXProjParser.ISA) - self.state = 964 + self.state = 968 + self.match(PBXProjParser.T__2) + self.state = 969 + self.match(PBXProjParser.PBX_GROUP) + self.state = 970 self.match(PBXProjParser.T__3) - self.state = 965 - self.match(PBXProjParser.T__12) - self.state = 966 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5587,6 +5635,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_HEADERS_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_HEADERS_BUILD_PHASE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_header_build_phase @@ -5607,14 +5658,14 @@ def isa_pbx_header_build_phase(self): self.enterRule(localctx, 116, self.RULE_isa_pbx_header_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 968 + self.state = 972 self.match(PBXProjParser.ISA) - self.state = 969 + self.state = 973 + self.match(PBXProjParser.T__2) + self.state = 974 + self.match(PBXProjParser.PBX_HEADERS_BUILD_PHASE) + self.state = 975 self.match(PBXProjParser.T__3) - self.state = 970 - self.match(PBXProjParser.T__13) - self.state = 971 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5634,6 +5685,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_NATIVE_TARGET(self): + return self.getToken(PBXProjParser.PBX_NATIVE_TARGET, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_native_target @@ -5654,14 +5708,14 @@ def isa_pbx_native_target(self): self.enterRule(localctx, 118, self.RULE_isa_pbx_native_target) try: self.enterOuterAlt(localctx, 1) - self.state = 973 + self.state = 977 self.match(PBXProjParser.ISA) - self.state = 974 + self.state = 978 + self.match(PBXProjParser.T__2) + self.state = 979 + self.match(PBXProjParser.PBX_NATIVE_TARGET) + self.state = 980 self.match(PBXProjParser.T__3) - self.state = 975 - self.match(PBXProjParser.T__14) - self.state = 976 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5681,6 +5735,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_LEGACY_TARGET(self): + return self.getToken(PBXProjParser.PBX_LEGACY_TARGET, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_legacy_target @@ -5701,14 +5758,14 @@ def isa_pbx_legacy_target(self): self.enterRule(localctx, 120, self.RULE_isa_pbx_legacy_target) try: self.enterOuterAlt(localctx, 1) - self.state = 978 + self.state = 982 self.match(PBXProjParser.ISA) - self.state = 979 + self.state = 983 + self.match(PBXProjParser.T__2) + self.state = 984 + self.match(PBXProjParser.PBX_LEGACY_TARGET) + self.state = 985 self.match(PBXProjParser.T__3) - self.state = 980 - self.match(PBXProjParser.T__15) - self.state = 981 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5728,6 +5785,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_PROJECT(self): + return self.getToken(PBXProjParser.PBX_PROJECT, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_project @@ -5748,14 +5808,14 @@ def isa_pbx_project(self): self.enterRule(localctx, 122, self.RULE_isa_pbx_project) try: self.enterOuterAlt(localctx, 1) - self.state = 983 + self.state = 987 self.match(PBXProjParser.ISA) - self.state = 984 + self.state = 988 + self.match(PBXProjParser.T__2) + self.state = 989 + self.match(PBXProjParser.PBX_PROJECT) + self.state = 990 self.match(PBXProjParser.T__3) - self.state = 985 - self.match(PBXProjParser.T__16) - self.state = 986 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5775,6 +5835,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_REFERENCE_PROXY(self): + return self.getToken(PBXProjParser.PBX_REFERENCE_PROXY, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_reference_proxy @@ -5795,14 +5858,14 @@ def isa_pbx_reference_proxy(self): self.enterRule(localctx, 124, self.RULE_isa_pbx_reference_proxy) try: self.enterOuterAlt(localctx, 1) - self.state = 988 + self.state = 992 self.match(PBXProjParser.ISA) - self.state = 989 + self.state = 993 + self.match(PBXProjParser.T__2) + self.state = 994 + self.match(PBXProjParser.PBX_REFERENCE_PROXY) + self.state = 995 self.match(PBXProjParser.T__3) - self.state = 990 - self.match(PBXProjParser.T__17) - self.state = 991 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5822,6 +5885,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_RESOURCES_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_RESOURCES_BUILD_PHASE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_resources_build_phase @@ -5842,14 +5908,14 @@ def isa_pbx_resources_build_phase(self): self.enterRule(localctx, 126, self.RULE_isa_pbx_resources_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 993 + self.state = 997 self.match(PBXProjParser.ISA) - self.state = 994 + self.state = 998 + self.match(PBXProjParser.T__2) + self.state = 999 + self.match(PBXProjParser.PBX_RESOURCES_BUILD_PHASE) + self.state = 1000 self.match(PBXProjParser.T__3) - self.state = 995 - self.match(PBXProjParser.T__18) - self.state = 996 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5869,6 +5935,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_SHELL_SCRIPT_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_SHELL_SCRIPT_BUILD_PHASE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_shell_script_build_phase @@ -5889,14 +5958,14 @@ def isa_pbx_shell_script_build_phase(self): self.enterRule(localctx, 128, self.RULE_isa_pbx_shell_script_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 998 + self.state = 1002 self.match(PBXProjParser.ISA) - self.state = 999 + self.state = 1003 + self.match(PBXProjParser.T__2) + self.state = 1004 + self.match(PBXProjParser.PBX_SHELL_SCRIPT_BUILD_PHASE) + self.state = 1005 self.match(PBXProjParser.T__3) - self.state = 1000 - self.match(PBXProjParser.T__19) - self.state = 1001 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5916,6 +5985,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_SOURCES_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_SOURCES_BUILD_PHASE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_sources_build_phase @@ -5936,14 +6008,14 @@ def isa_pbx_sources_build_phase(self): self.enterRule(localctx, 130, self.RULE_isa_pbx_sources_build_phase) try: self.enterOuterAlt(localctx, 1) - self.state = 1003 + self.state = 1007 self.match(PBXProjParser.ISA) - self.state = 1004 + self.state = 1008 + self.match(PBXProjParser.T__2) + self.state = 1009 + self.match(PBXProjParser.PBX_SOURCES_BUILD_PHASE) + self.state = 1010 self.match(PBXProjParser.T__3) - self.state = 1005 - self.match(PBXProjParser.T__20) - self.state = 1006 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -5963,6 +6035,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_TARGET_DEPENDENCY(self): + return self.getToken(PBXProjParser.PBX_TARGET_DEPENDENCY, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_target_dependency @@ -5983,14 +6058,14 @@ def isa_pbx_target_dependency(self): self.enterRule(localctx, 132, self.RULE_isa_pbx_target_dependency) try: self.enterOuterAlt(localctx, 1) - self.state = 1008 + self.state = 1012 self.match(PBXProjParser.ISA) - self.state = 1009 + self.state = 1013 + self.match(PBXProjParser.T__2) + self.state = 1014 + self.match(PBXProjParser.PBX_TARGET_DEPENDENCY) + self.state = 1015 self.match(PBXProjParser.T__3) - self.state = 1010 - self.match(PBXProjParser.T__21) - self.state = 1011 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6010,6 +6085,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def PBX_VARIANT_GROUP(self): + return self.getToken(PBXProjParser.PBX_VARIANT_GROUP, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_variant_group @@ -6030,14 +6108,14 @@ def isa_pbx_variant_group(self): self.enterRule(localctx, 134, self.RULE_isa_pbx_variant_group) try: self.enterOuterAlt(localctx, 1) - self.state = 1013 + self.state = 1017 self.match(PBXProjParser.ISA) - self.state = 1014 + self.state = 1018 + self.match(PBXProjParser.T__2) + self.state = 1019 + self.match(PBXProjParser.PBX_VARIANT_GROUP) + self.state = 1020 self.match(PBXProjParser.T__3) - self.state = 1015 - self.match(PBXProjParser.T__22) - self.state = 1016 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6057,6 +6135,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def XC_BUILD_CONFIGURATION(self): + return self.getToken(PBXProjParser.XC_BUILD_CONFIGURATION, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_build_configuration @@ -6077,14 +6158,14 @@ def isa_xc_build_configuration(self): self.enterRule(localctx, 136, self.RULE_isa_xc_build_configuration) try: self.enterOuterAlt(localctx, 1) - self.state = 1018 + self.state = 1022 self.match(PBXProjParser.ISA) - self.state = 1019 + self.state = 1023 + self.match(PBXProjParser.T__2) + self.state = 1024 + self.match(PBXProjParser.XC_BUILD_CONFIGURATION) + self.state = 1025 self.match(PBXProjParser.T__3) - self.state = 1020 - self.match(PBXProjParser.T__23) - self.state = 1021 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6104,6 +6185,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def XC_CONFIGURATION_LIST(self): + return self.getToken(PBXProjParser.XC_CONFIGURATION_LIST, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_configuration_list @@ -6124,14 +6208,14 @@ def isa_xc_configuration_list(self): self.enterRule(localctx, 138, self.RULE_isa_xc_configuration_list) try: self.enterOuterAlt(localctx, 1) - self.state = 1023 + self.state = 1027 self.match(PBXProjParser.ISA) - self.state = 1024 + self.state = 1028 + self.match(PBXProjParser.T__2) + self.state = 1029 + self.match(PBXProjParser.XC_CONFIGURATION_LIST) + self.state = 1030 self.match(PBXProjParser.T__3) - self.state = 1025 - self.match(PBXProjParser.T__24) - self.state = 1026 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6151,6 +6235,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def XC_REMOTE_SWIFT_PACKAGE_REFERENCE(self): + return self.getToken(PBXProjParser.XC_REMOTE_SWIFT_PACKAGE_REFERENCE, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_remote_swift_package_reference @@ -6171,14 +6258,14 @@ def isa_xc_remote_swift_package_reference(self): self.enterRule(localctx, 140, self.RULE_isa_xc_remote_swift_package_reference) try: self.enterOuterAlt(localctx, 1) - self.state = 1028 + self.state = 1032 self.match(PBXProjParser.ISA) - self.state = 1029 + self.state = 1033 + self.match(PBXProjParser.T__2) + self.state = 1034 + self.match(PBXProjParser.XC_REMOTE_SWIFT_PACKAGE_REFERENCE) + self.state = 1035 self.match(PBXProjParser.T__3) - self.state = 1030 - self.match(PBXProjParser.T__25) - self.state = 1031 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6198,6 +6285,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY(self): + return self.getToken(PBXProjParser.XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_swift_package_product_dependency @@ -6218,14 +6308,14 @@ def isa_xc_swift_package_product_dependency(self): self.enterRule(localctx, 142, self.RULE_isa_xc_swift_package_product_dependency) try: self.enterOuterAlt(localctx, 1) - self.state = 1033 + self.state = 1037 self.match(PBXProjParser.ISA) - self.state = 1034 + self.state = 1038 + self.match(PBXProjParser.T__2) + self.state = 1039 + self.match(PBXProjParser.XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY) + self.state = 1040 self.match(PBXProjParser.T__3) - self.state = 1035 - self.match(PBXProjParser.T__26) - self.state = 1036 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6245,6 +6335,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): def ISA(self): return self.getToken(PBXProjParser.ISA, 0) + def XC_VERSION_GROUP(self): + return self.getToken(PBXProjParser.XC_VERSION_GROUP, 0) + def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_version_group @@ -6265,14 +6358,14 @@ def isa_xc_version_group(self): self.enterRule(localctx, 144, self.RULE_isa_xc_version_group) try: self.enterOuterAlt(localctx, 1) - self.state = 1038 + self.state = 1042 self.match(PBXProjParser.ISA) - self.state = 1039 + self.state = 1043 + self.match(PBXProjParser.T__2) + self.state = 1044 + self.match(PBXProjParser.XC_VERSION_GROUP) + self.state = 1045 self.match(PBXProjParser.T__3) - self.state = 1040 - self.match(PBXProjParser.T__27) - self.state = 1041 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6289,6 +6382,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def FILE_REF(self): + return self.getToken(PBXProjParser.FILE_REF, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -6312,14 +6408,14 @@ def file_ref(self): self.enterRule(localctx, 146, self.RULE_file_ref) try: self.enterOuterAlt(localctx, 1) - self.state = 1043 - self.match(PBXProjParser.T__28) - self.state = 1044 - self.match(PBXProjParser.T__3) - self.state = 1045 + self.state = 1047 + self.match(PBXProjParser.FILE_REF) + self.state = 1048 + self.match(PBXProjParser.T__2) + self.state = 1049 self.match(PBXProjParser.REFERENCE) - self.state = 1046 - self.match(PBXProjParser.T__4) + self.state = 1050 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6336,6 +6432,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PRODUCT_REF(self): + return self.getToken(PBXProjParser.PRODUCT_REF, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -6359,14 +6458,14 @@ def product_ref(self): self.enterRule(localctx, 148, self.RULE_product_ref) try: self.enterOuterAlt(localctx, 1) - self.state = 1048 - self.match(PBXProjParser.T__29) - self.state = 1049 - self.match(PBXProjParser.T__3) - self.state = 1050 + self.state = 1052 + self.match(PBXProjParser.PRODUCT_REF) + self.state = 1053 + self.match(PBXProjParser.T__2) + self.state = 1054 self.match(PBXProjParser.REFERENCE) - self.state = 1051 - self.match(PBXProjParser.T__4) + self.state = 1055 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6383,6 +6482,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def CONTAINER_PORTAL(self): + return self.getToken(PBXProjParser.CONTAINER_PORTAL, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -6406,14 +6508,14 @@ def container_portal(self): self.enterRule(localctx, 150, self.RULE_container_portal) try: self.enterOuterAlt(localctx, 1) - self.state = 1053 - self.match(PBXProjParser.T__30) - self.state = 1054 - self.match(PBXProjParser.T__3) - self.state = 1055 + self.state = 1057 + self.match(PBXProjParser.CONTAINER_PORTAL) + self.state = 1058 + self.match(PBXProjParser.T__2) + self.state = 1059 self.match(PBXProjParser.REFERENCE) - self.state = 1056 - self.match(PBXProjParser.T__4) + self.state = 1060 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6430,6 +6532,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PROXY_TYPE(self): + return self.getToken(PBXProjParser.PROXY_TYPE, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6453,14 +6558,14 @@ def proxy_type(self): self.enterRule(localctx, 152, self.RULE_proxy_type) try: self.enterOuterAlt(localctx, 1) - self.state = 1058 - self.match(PBXProjParser.T__31) - self.state = 1059 - self.match(PBXProjParser.T__3) - self.state = 1060 + self.state = 1062 + self.match(PBXProjParser.PROXY_TYPE) + self.state = 1063 + self.match(PBXProjParser.T__2) + self.state = 1064 self.match(PBXProjParser.NUMBER) - self.state = 1061 - self.match(PBXProjParser.T__4) + self.state = 1065 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6477,6 +6582,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def REMOTE_GLOBAL_ID_STRING(self): + return self.getToken(PBXProjParser.REMOTE_GLOBAL_ID_STRING, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -6500,14 +6608,14 @@ def remote_global_id_string(self): self.enterRule(localctx, 154, self.RULE_remote_global_id_string) try: self.enterOuterAlt(localctx, 1) - self.state = 1063 - self.match(PBXProjParser.T__32) - self.state = 1064 - self.match(PBXProjParser.T__3) - self.state = 1065 + self.state = 1067 + self.match(PBXProjParser.REMOTE_GLOBAL_ID_STRING) + self.state = 1068 + self.match(PBXProjParser.T__2) + self.state = 1069 self.match(PBXProjParser.REFERENCE) - self.state = 1066 - self.match(PBXProjParser.T__4) + self.state = 1070 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6524,8 +6632,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def REMOTE_INFO(self): + return self.getToken(PBXProjParser.REMOTE_INFO, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -6548,14 +6659,14 @@ def remote_info(self): self.enterRule(localctx, 156, self.RULE_remote_info) try: self.enterOuterAlt(localctx, 1) - self.state = 1068 - self.match(PBXProjParser.T__33) - self.state = 1069 + self.state = 1072 + self.match(PBXProjParser.REMOTE_INFO) + self.state = 1073 + self.match(PBXProjParser.T__2) + self.state = 1074 + self.str_number_variable() + self.state = 1075 self.match(PBXProjParser.T__3) - self.state = 1070 - self.any_string() - self.state = 1071 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6572,6 +6683,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def FILE_ENCODING(self): + return self.getToken(PBXProjParser.FILE_ENCODING, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6595,14 +6709,14 @@ def file_encoding(self): self.enterRule(localctx, 158, self.RULE_file_encoding) try: self.enterOuterAlt(localctx, 1) - self.state = 1073 - self.match(PBXProjParser.T__34) - self.state = 1074 - self.match(PBXProjParser.T__3) - self.state = 1075 + self.state = 1077 + self.match(PBXProjParser.FILE_ENCODING) + self.state = 1078 + self.match(PBXProjParser.T__2) + self.state = 1079 self.match(PBXProjParser.NUMBER) - self.state = 1076 - self.match(PBXProjParser.T__4) + self.state = 1080 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6619,8 +6733,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def COMMENTS(self): + return self.getToken(PBXProjParser.COMMENTS, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -6643,14 +6760,14 @@ def comments(self): self.enterRule(localctx, 160, self.RULE_comments) try: self.enterOuterAlt(localctx, 1) - self.state = 1078 - self.match(PBXProjParser.T__35) - self.state = 1079 + self.state = 1082 + self.match(PBXProjParser.COMMENTS) + self.state = 1083 + self.match(PBXProjParser.T__2) + self.state = 1084 + self.str_number_variable() + self.state = 1085 self.match(PBXProjParser.T__3) - self.state = 1080 - self.any_string() - self.state = 1081 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6667,8 +6784,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def EXPLICIT_FILE_TYPE(self): + return self.getToken(PBXProjParser.EXPLICIT_FILE_TYPE, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -6691,14 +6811,14 @@ def explicit_file_type(self): self.enterRule(localctx, 162, self.RULE_explicit_file_type) try: self.enterOuterAlt(localctx, 1) - self.state = 1083 - self.match(PBXProjParser.T__36) - self.state = 1084 + self.state = 1087 + self.match(PBXProjParser.EXPLICIT_FILE_TYPE) + self.state = 1088 + self.match(PBXProjParser.T__2) + self.state = 1089 + self.str_number_variable() + self.state = 1090 self.match(PBXProjParser.T__3) - self.state = 1085 - self.any_string() - self.state = 1086 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6715,8 +6835,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def LAST_KNOWN_FILE_TYPE(self): + return self.getToken(PBXProjParser.LAST_KNOWN_FILE_TYPE, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -6739,14 +6862,14 @@ def last_known_file_type(self): self.enterRule(localctx, 164, self.RULE_last_known_file_type) try: self.enterOuterAlt(localctx, 1) - self.state = 1088 - self.match(PBXProjParser.T__37) - self.state = 1089 + self.state = 1092 + self.match(PBXProjParser.LAST_KNOWN_FILE_TYPE) + self.state = 1093 + self.match(PBXProjParser.T__2) + self.state = 1094 + self.str_number_variable() + self.state = 1095 self.match(PBXProjParser.T__3) - self.state = 1090 - self.any_string() - self.state = 1091 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6763,6 +6886,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def INCLUDE_IN_INDEX(self): + return self.getToken(PBXProjParser.INCLUDE_IN_INDEX, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6786,14 +6912,14 @@ def include_in_index(self): self.enterRule(localctx, 166, self.RULE_include_in_index) try: self.enterOuterAlt(localctx, 1) - self.state = 1093 - self.match(PBXProjParser.T__38) - self.state = 1094 - self.match(PBXProjParser.T__3) - self.state = 1095 + self.state = 1097 + self.match(PBXProjParser.INCLUDE_IN_INDEX) + self.state = 1098 + self.match(PBXProjParser.T__2) + self.state = 1099 self.match(PBXProjParser.NUMBER) - self.state = 1096 - self.match(PBXProjParser.T__4) + self.state = 1100 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6810,6 +6936,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def INDENT_WIDTH(self): + return self.getToken(PBXProjParser.INDENT_WIDTH, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6833,14 +6962,14 @@ def indent_width(self): self.enterRule(localctx, 168, self.RULE_indent_width) try: self.enterOuterAlt(localctx, 1) - self.state = 1098 - self.match(PBXProjParser.T__39) - self.state = 1099 - self.match(PBXProjParser.T__3) - self.state = 1100 + self.state = 1102 + self.match(PBXProjParser.INDENT_WIDTH) + self.state = 1103 + self.match(PBXProjParser.T__2) + self.state = 1104 self.match(PBXProjParser.NUMBER) - self.state = 1101 - self.match(PBXProjParser.T__4) + self.state = 1105 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6857,6 +6986,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def TAB_WIDTH(self): + return self.getToken(PBXProjParser.TAB_WIDTH, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6880,14 +7012,14 @@ def tab_width(self): self.enterRule(localctx, 170, self.RULE_tab_width) try: self.enterOuterAlt(localctx, 1) - self.state = 1103 - self.match(PBXProjParser.T__40) - self.state = 1104 - self.match(PBXProjParser.T__3) - self.state = 1105 + self.state = 1107 + self.match(PBXProjParser.TAB_WIDTH) + self.state = 1108 + self.match(PBXProjParser.T__2) + self.state = 1109 self.match(PBXProjParser.NUMBER) - self.state = 1106 - self.match(PBXProjParser.T__4) + self.state = 1110 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6904,6 +7036,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def USES_TABS(self): + return self.getToken(PBXProjParser.USES_TABS, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6927,14 +7062,14 @@ def uses_tabs(self): self.enterRule(localctx, 172, self.RULE_uses_tabs) try: self.enterOuterAlt(localctx, 1) - self.state = 1108 - self.match(PBXProjParser.T__41) - self.state = 1109 - self.match(PBXProjParser.T__3) - self.state = 1110 + self.state = 1112 + self.match(PBXProjParser.USES_TABS) + self.state = 1113 + self.match(PBXProjParser.T__2) + self.state = 1114 self.match(PBXProjParser.NUMBER) - self.state = 1111 - self.match(PBXProjParser.T__4) + self.state = 1115 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6951,6 +7086,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def WRAPS_LINES(self): + return self.getToken(PBXProjParser.WRAPS_LINES, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -6974,14 +7112,14 @@ def wraps_lines(self): self.enterRule(localctx, 174, self.RULE_wraps_lines) try: self.enterOuterAlt(localctx, 1) - self.state = 1113 - self.match(PBXProjParser.T__42) - self.state = 1114 - self.match(PBXProjParser.T__3) - self.state = 1115 + self.state = 1117 + self.match(PBXProjParser.WRAPS_LINES) + self.state = 1118 + self.match(PBXProjParser.T__2) + self.state = 1119 self.match(PBXProjParser.NUMBER) - self.state = 1116 - self.match(PBXProjParser.T__4) + self.state = 1120 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -6998,11 +7136,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def PLATFORM_FILTER(self): + return self.getToken(PBXProjParser.PLATFORM_FILTER, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_platform_filter @@ -7022,22 +7161,16 @@ def platform_filter(self): localctx = PBXProjParser.Platform_filterContext(self, self._ctx, self.state) self.enterRule(localctx, 176, self.RULE_platform_filter) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1118 - self.match(PBXProjParser.T__43) - self.state = 1119 + self.state = 1122 + self.match(PBXProjParser.PLATFORM_FILTER) + self.state = 1123 + self.match(PBXProjParser.T__2) + self.state = 1124 + self.any_string() + self.state = 1125 self.match(PBXProjParser.T__3) - self.state = 1120 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1121 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7054,6 +7187,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PLATFORM_FILTERS(self): + return self.getToken(PBXProjParser.PLATFORM_FILTERS, 0) + def any_string_list(self): return self.getTypedRuleContext(PBXProjParser.Any_string_listContext,0) @@ -7078,14 +7214,14 @@ def platform_filters(self): self.enterRule(localctx, 178, self.RULE_platform_filters) try: self.enterOuterAlt(localctx, 1) - self.state = 1123 - self.match(PBXProjParser.T__44) - self.state = 1124 - self.match(PBXProjParser.T__3) - self.state = 1125 + self.state = 1127 + self.match(PBXProjParser.PLATFORM_FILTERS) + self.state = 1128 + self.match(PBXProjParser.T__2) + self.state = 1129 self.any_string_list() - self.state = 1126 - self.match(PBXProjParser.T__4) + self.state = 1130 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7102,6 +7238,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def CHILDREN(self): + return self.getToken(PBXProjParser.CHILDREN, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -7126,14 +7265,14 @@ def children(self): self.enterRule(localctx, 180, self.RULE_children) try: self.enterOuterAlt(localctx, 1) - self.state = 1128 - self.match(PBXProjParser.T__45) - self.state = 1129 - self.match(PBXProjParser.T__3) - self.state = 1130 + self.state = 1132 + self.match(PBXProjParser.CHILDREN) + self.state = 1133 + self.match(PBXProjParser.T__2) + self.state = 1134 self.reference_list() - self.state = 1131 - self.match(PBXProjParser.T__4) + self.state = 1135 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7150,6 +7289,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PRODUCT_INSTALL_PATH(self): + return self.getToken(PBXProjParser.PRODUCT_INSTALL_PATH, 0) + def QUOTED_STRING(self): return self.getToken(PBXProjParser.QUOTED_STRING, 0) @@ -7173,14 +7315,14 @@ def product_install_path(self): self.enterRule(localctx, 182, self.RULE_product_install_path) try: self.enterOuterAlt(localctx, 1) - self.state = 1133 - self.match(PBXProjParser.T__46) - self.state = 1134 - self.match(PBXProjParser.T__3) - self.state = 1135 + self.state = 1137 + self.match(PBXProjParser.PRODUCT_INSTALL_PATH) + self.state = 1138 + self.match(PBXProjParser.T__2) + self.state = 1139 self.match(PBXProjParser.QUOTED_STRING) - self.state = 1136 - self.match(PBXProjParser.T__4) + self.state = 1140 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7197,6 +7339,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def REPOSITORY_URL(self): + return self.getToken(PBXProjParser.REPOSITORY_URL, 0) + def QUOTED_STRING(self): return self.getToken(PBXProjParser.QUOTED_STRING, 0) @@ -7220,14 +7365,14 @@ def repository_url(self): self.enterRule(localctx, 184, self.RULE_repository_url) try: self.enterOuterAlt(localctx, 1) - self.state = 1138 - self.match(PBXProjParser.T__47) - self.state = 1139 - self.match(PBXProjParser.T__3) - self.state = 1140 + self.state = 1142 + self.match(PBXProjParser.REPOSITORY_URL) + self.state = 1143 + self.match(PBXProjParser.T__2) + self.state = 1144 self.match(PBXProjParser.QUOTED_STRING) - self.state = 1141 - self.match(PBXProjParser.T__4) + self.state = 1145 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7244,6 +7389,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def REQUIREMENT(self): + return self.getToken(PBXProjParser.REQUIREMENT, 0) + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) @@ -7272,26 +7420,26 @@ def requirement(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1143 - self.match(PBXProjParser.T__48) - self.state = 1144 - self.match(PBXProjParser.T__3) - self.state = 1145 - self.match(PBXProjParser.T__0) + self.state = 1147 + self.match(PBXProjParser.REQUIREMENT) + self.state = 1148 + self.match(PBXProjParser.T__2) self.state = 1149 + self.match(PBXProjParser.T__0) + self.state = 1153 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0: - self.state = 1146 + while ((_la) & ~0x3f) == 0 and ((1 << _la) & -101059840) != 0 or (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0 or (((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 959) != 0: + self.state = 1150 self.key_value() - self.state = 1151 + self.state = 1155 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1152 + self.state = 1156 self.match(PBXProjParser.T__1) - self.state = 1153 - self.match(PBXProjParser.T__4) + self.state = 1157 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7308,6 +7456,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PACKAGE(self): + return self.getToken(PBXProjParser.PACKAGE, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -7331,14 +7482,14 @@ def xc_package(self): self.enterRule(localctx, 188, self.RULE_xc_package) try: self.enterOuterAlt(localctx, 1) - self.state = 1155 - self.match(PBXProjParser.T__49) - self.state = 1156 - self.match(PBXProjParser.T__3) - self.state = 1157 + self.state = 1159 + self.match(PBXProjParser.PACKAGE) + self.state = 1160 + self.match(PBXProjParser.T__2) + self.state = 1161 self.match(PBXProjParser.REFERENCE) - self.state = 1158 - self.match(PBXProjParser.T__4) + self.state = 1162 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7355,6 +7506,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PACKAGE_PRODUCT_DEPENDENCIES(self): + return self.getToken(PBXProjParser.PACKAGE_PRODUCT_DEPENDENCIES, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -7379,14 +7533,14 @@ def package_product_dependencies(self): self.enterRule(localctx, 190, self.RULE_package_product_dependencies) try: self.enterOuterAlt(localctx, 1) - self.state = 1160 - self.match(PBXProjParser.T__50) - self.state = 1161 - self.match(PBXProjParser.T__3) - self.state = 1162 + self.state = 1164 + self.match(PBXProjParser.PACKAGE_PRODUCT_DEPENDENCIES) + self.state = 1165 + self.match(PBXProjParser.T__2) + self.state = 1166 self.reference_list() - self.state = 1163 - self.match(PBXProjParser.T__4) + self.state = 1167 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7403,11 +7557,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def NAME(self): + return self.getToken(PBXProjParser.NAME, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_name @@ -7427,22 +7582,16 @@ def name(self): localctx = PBXProjParser.NameContext(self, self._ctx, self.state) self.enterRule(localctx, 192, self.RULE_name) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1165 - self.match(PBXProjParser.T__51) - self.state = 1166 + self.state = 1169 + self.match(PBXProjParser.NAME) + self.state = 1170 + self.match(PBXProjParser.T__2) + self.state = 1171 + self.any_string() + self.state = 1172 self.match(PBXProjParser.T__3) - self.state = 1167 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1168 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7459,11 +7608,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def PATH(self): + return self.getToken(PBXProjParser.PATH, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_path @@ -7483,22 +7633,16 @@ def path(self): localctx = PBXProjParser.PathContext(self, self._ctx, self.state) self.enterRule(localctx, 194, self.RULE_path) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1170 - self.match(PBXProjParser.T__52) - self.state = 1171 + self.state = 1174 + self.match(PBXProjParser.PATH) + self.state = 1175 + self.match(PBXProjParser.T__2) + self.state = 1176 + self.any_string() + self.state = 1177 self.match(PBXProjParser.T__3) - self.state = 1172 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1173 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7515,11 +7659,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def SOURCE_TREE(self): + return self.getToken(PBXProjParser.SOURCE_TREE, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_source_tree @@ -7539,22 +7684,16 @@ def source_tree(self): localctx = PBXProjParser.Source_treeContext(self, self._ctx, self.state) self.enterRule(localctx, 196, self.RULE_source_tree) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1175 - self.match(PBXProjParser.T__53) - self.state = 1176 + self.state = 1179 + self.match(PBXProjParser.SOURCE_TREE) + self.state = 1180 + self.match(PBXProjParser.T__2) + self.state = 1181 + self.any_string() + self.state = 1182 self.match(PBXProjParser.T__3) - self.state = 1177 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1178 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7571,6 +7710,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_ACTION_MASK(self): + return self.getToken(PBXProjParser.BUILD_ACTION_MASK, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -7594,14 +7736,14 @@ def build_action_mask(self): self.enterRule(localctx, 198, self.RULE_build_action_mask) try: self.enterOuterAlt(localctx, 1) - self.state = 1180 - self.match(PBXProjParser.T__54) - self.state = 1181 - self.match(PBXProjParser.T__3) - self.state = 1182 + self.state = 1184 + self.match(PBXProjParser.BUILD_ACTION_MASK) + self.state = 1185 + self.match(PBXProjParser.T__2) + self.state = 1186 self.match(PBXProjParser.NUMBER) - self.state = 1183 - self.match(PBXProjParser.T__4) + self.state = 1187 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7618,6 +7760,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def FILES(self): + return self.getToken(PBXProjParser.FILES, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -7642,14 +7787,14 @@ def files(self): self.enterRule(localctx, 200, self.RULE_files) try: self.enterOuterAlt(localctx, 1) - self.state = 1185 - self.match(PBXProjParser.T__55) - self.state = 1186 - self.match(PBXProjParser.T__3) - self.state = 1187 + self.state = 1189 + self.match(PBXProjParser.FILES) + self.state = 1190 + self.match(PBXProjParser.T__2) + self.state = 1191 self.reference_list() - self.state = 1188 - self.match(PBXProjParser.T__4) + self.state = 1192 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7666,6 +7811,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING(self): + return self.getToken(PBXProjParser.RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -7689,14 +7837,14 @@ def run_only_for_deployment_postprocessing(self): self.enterRule(localctx, 202, self.RULE_run_only_for_deployment_postprocessing) try: self.enterOuterAlt(localctx, 1) - self.state = 1190 - self.match(PBXProjParser.T__56) - self.state = 1191 - self.match(PBXProjParser.T__3) - self.state = 1192 + self.state = 1194 + self.match(PBXProjParser.RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING) + self.state = 1195 + self.match(PBXProjParser.T__2) + self.state = 1196 self.match(PBXProjParser.NUMBER) - self.state = 1193 - self.match(PBXProjParser.T__4) + self.state = 1197 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7740,22 +7888,22 @@ def reference_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1195 - self.match(PBXProjParser.T__57) - self.state = 1200 + self.state = 1199 + self.match(PBXProjParser.T__4) + self.state = 1204 self._errHandler.sync(self) _la = self._input.LA(1) while _la==134: - self.state = 1196 + self.state = 1200 self.match(PBXProjParser.REFERENCE) - self.state = 1197 - self.match(PBXProjParser.T__58) - self.state = 1202 + self.state = 1201 + self.match(PBXProjParser.T__5) + self.state = 1206 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1203 - self.match(PBXProjParser.T__59) + self.state = 1207 + self.match(PBXProjParser.T__6) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7772,11 +7920,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self, i:int=None): + def str_number_variable(self, i:int=None): if i is None: - return self.getTypedRuleContexts(PBXProjParser.Any_stringContext) + return self.getTypedRuleContexts(PBXProjParser.Str_number_variableContext) else: - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,i) + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,i) def getRuleIndex(self): @@ -7800,22 +7948,22 @@ def any_string_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1205 - self.match(PBXProjParser.T__57) - self.state = 1211 + self.state = 1209 + self.match(PBXProjParser.T__4) + self.state = 1215 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0: - self.state = 1206 - self.any_string() - self.state = 1207 - self.match(PBXProjParser.T__58) - self.state = 1213 + while ((_la) & ~0x3f) == 0 and ((1 << _la) & -101059840) != 0 or (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0 or (((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 959) != 0: + self.state = 1210 + self.str_number_variable() + self.state = 1211 + self.match(PBXProjParser.T__5) + self.state = 1217 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1214 - self.match(PBXProjParser.T__59) + self.state = 1218 + self.match(PBXProjParser.T__6) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7859,22 +8007,22 @@ def non_quoted_strings_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1216 - self.match(PBXProjParser.T__57) - self.state = 1221 + self.state = 1220 + self.match(PBXProjParser.T__4) + self.state = 1225 self._errHandler.sync(self) _la = self._input.LA(1) while _la==136: - self.state = 1217 + self.state = 1221 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1218 - self.match(PBXProjParser.T__58) - self.state = 1223 + self.state = 1222 + self.match(PBXProjParser.T__5) + self.state = 1227 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1224 - self.match(PBXProjParser.T__59) + self.state = 1228 + self.match(PBXProjParser.T__6) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7891,6 +8039,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_CONFIGURATION_LIST(self): + return self.getToken(PBXProjParser.BUILD_CONFIGURATION_LIST, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -7914,14 +8065,14 @@ def build_configuration_list(self): self.enterRule(localctx, 210, self.RULE_build_configuration_list) try: self.enterOuterAlt(localctx, 1) - self.state = 1226 - self.match(PBXProjParser.T__60) - self.state = 1227 - self.match(PBXProjParser.T__3) - self.state = 1228 + self.state = 1230 + self.match(PBXProjParser.BUILD_CONFIGURATION_LIST) + self.state = 1231 + self.match(PBXProjParser.T__2) + self.state = 1232 self.match(PBXProjParser.REFERENCE) - self.state = 1229 - self.match(PBXProjParser.T__4) + self.state = 1233 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7938,6 +8089,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_PHASES(self): + return self.getToken(PBXProjParser.BUILD_PHASES, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -7962,14 +8116,14 @@ def build_phases(self): self.enterRule(localctx, 212, self.RULE_build_phases) try: self.enterOuterAlt(localctx, 1) - self.state = 1231 - self.match(PBXProjParser.T__61) - self.state = 1232 - self.match(PBXProjParser.T__3) - self.state = 1233 + self.state = 1235 + self.match(PBXProjParser.BUILD_PHASES) + self.state = 1236 + self.match(PBXProjParser.T__2) + self.state = 1237 self.reference_list() - self.state = 1234 - self.match(PBXProjParser.T__4) + self.state = 1238 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -7986,6 +8140,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_RULES(self): + return self.getToken(PBXProjParser.BUILD_RULES, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -8010,14 +8167,14 @@ def build_rules(self): self.enterRule(localctx, 214, self.RULE_build_rules) try: self.enterOuterAlt(localctx, 1) - self.state = 1236 - self.match(PBXProjParser.T__62) - self.state = 1237 - self.match(PBXProjParser.T__3) - self.state = 1238 + self.state = 1240 + self.match(PBXProjParser.BUILD_RULES) + self.state = 1241 + self.match(PBXProjParser.T__2) + self.state = 1242 self.reference_list() - self.state = 1239 - self.match(PBXProjParser.T__4) + self.state = 1243 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8034,11 +8191,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def BUILD_ARGUMENTS_STRING(self): + return self.getToken(PBXProjParser.BUILD_ARGUMENTS_STRING, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_build_arguments_string @@ -8058,22 +8216,16 @@ def build_arguments_string(self): localctx = PBXProjParser.Build_arguments_stringContext(self, self._ctx, self.state) self.enterRule(localctx, 216, self.RULE_build_arguments_string) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1241 - self.match(PBXProjParser.T__63) - self.state = 1242 + self.state = 1245 + self.match(PBXProjParser.BUILD_ARGUMENTS_STRING) + self.state = 1246 + self.match(PBXProjParser.T__2) + self.state = 1247 + self.any_string() + self.state = 1248 self.match(PBXProjParser.T__3) - self.state = 1243 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1244 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8090,11 +8242,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def BUILD_TOOL_PATH(self): + return self.getToken(PBXProjParser.BUILD_TOOL_PATH, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_build_tool_path @@ -8114,22 +8267,16 @@ def build_tool_path(self): localctx = PBXProjParser.Build_tool_pathContext(self, self._ctx, self.state) self.enterRule(localctx, 218, self.RULE_build_tool_path) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1246 - self.match(PBXProjParser.T__64) - self.state = 1247 + self.state = 1250 + self.match(PBXProjParser.BUILD_TOOL_PATH) + self.state = 1251 + self.match(PBXProjParser.T__2) + self.state = 1252 + self.any_string() + self.state = 1253 self.match(PBXProjParser.T__3) - self.state = 1248 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1249 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8146,11 +8293,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def BUILD_WORKING_DIRECTORY(self): + return self.getToken(PBXProjParser.BUILD_WORKING_DIRECTORY, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_build_working_directory @@ -8170,22 +8318,16 @@ def build_working_directory(self): localctx = PBXProjParser.Build_working_directoryContext(self, self._ctx, self.state) self.enterRule(localctx, 220, self.RULE_build_working_directory) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1251 - self.match(PBXProjParser.T__65) - self.state = 1252 + self.state = 1255 + self.match(PBXProjParser.BUILD_WORKING_DIRECTORY) + self.state = 1256 + self.match(PBXProjParser.T__2) + self.state = 1257 + self.any_string() + self.state = 1258 self.match(PBXProjParser.T__3) - self.state = 1253 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1254 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8202,6 +8344,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PASS_BUILD_SETTINGS_IN_ENVIRONMENT(self): + return self.getToken(PBXProjParser.PASS_BUILD_SETTINGS_IN_ENVIRONMENT, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -8225,14 +8370,14 @@ def pass_build_settings_in_environment(self): self.enterRule(localctx, 222, self.RULE_pass_build_settings_in_environment) try: self.enterOuterAlt(localctx, 1) - self.state = 1256 - self.match(PBXProjParser.T__66) - self.state = 1257 - self.match(PBXProjParser.T__3) - self.state = 1258 + self.state = 1260 + self.match(PBXProjParser.PASS_BUILD_SETTINGS_IN_ENVIRONMENT) + self.state = 1261 + self.match(PBXProjParser.T__2) + self.state = 1262 self.match(PBXProjParser.NUMBER) - self.state = 1259 - self.match(PBXProjParser.T__4) + self.state = 1263 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8249,6 +8394,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def DEPENDENCIES(self): + return self.getToken(PBXProjParser.DEPENDENCIES, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -8273,14 +8421,14 @@ def dependencies(self): self.enterRule(localctx, 224, self.RULE_dependencies) try: self.enterOuterAlt(localctx, 1) - self.state = 1261 - self.match(PBXProjParser.T__67) - self.state = 1262 - self.match(PBXProjParser.T__3) - self.state = 1263 + self.state = 1265 + self.match(PBXProjParser.DEPENDENCIES) + self.state = 1266 + self.match(PBXProjParser.T__2) + self.state = 1267 self.reference_list() - self.state = 1264 - self.match(PBXProjParser.T__4) + self.state = 1268 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8297,8 +8445,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def PRODUCT_NAME(self): + return self.getToken(PBXProjParser.PRODUCT_NAME, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -8321,14 +8472,14 @@ def product_name(self): self.enterRule(localctx, 226, self.RULE_product_name) try: self.enterOuterAlt(localctx, 1) - self.state = 1266 - self.match(PBXProjParser.T__68) - self.state = 1267 + self.state = 1270 + self.match(PBXProjParser.PRODUCT_NAME) + self.state = 1271 + self.match(PBXProjParser.T__2) + self.state = 1272 + self.str_number_variable() + self.state = 1273 self.match(PBXProjParser.T__3) - self.state = 1268 - self.any_string() - self.state = 1269 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8345,6 +8496,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PRODUCT_REFERENCE(self): + return self.getToken(PBXProjParser.PRODUCT_REFERENCE, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -8368,14 +8522,14 @@ def product_reference(self): self.enterRule(localctx, 228, self.RULE_product_reference) try: self.enterOuterAlt(localctx, 1) - self.state = 1271 - self.match(PBXProjParser.T__69) - self.state = 1272 - self.match(PBXProjParser.T__3) - self.state = 1273 + self.state = 1275 + self.match(PBXProjParser.PRODUCT_REFERENCE) + self.state = 1276 + self.match(PBXProjParser.T__2) + self.state = 1277 self.match(PBXProjParser.REFERENCE) - self.state = 1274 - self.match(PBXProjParser.T__4) + self.state = 1278 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8392,6 +8546,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PRODUCT_TYPE(self): + return self.getToken(PBXProjParser.PRODUCT_TYPE, 0) + def QUOTED_STRING(self): return self.getToken(PBXProjParser.QUOTED_STRING, 0) @@ -8415,14 +8572,14 @@ def product_type(self): self.enterRule(localctx, 230, self.RULE_product_type) try: self.enterOuterAlt(localctx, 1) - self.state = 1276 - self.match(PBXProjParser.T__70) - self.state = 1277 - self.match(PBXProjParser.T__3) - self.state = 1278 + self.state = 1280 + self.match(PBXProjParser.PRODUCT_TYPE) + self.state = 1281 + self.match(PBXProjParser.T__2) + self.state = 1282 self.match(PBXProjParser.QUOTED_STRING) - self.state = 1279 - self.match(PBXProjParser.T__4) + self.state = 1283 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8439,6 +8596,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def LINE_ENDING(self): + return self.getToken(PBXProjParser.LINE_ENDING, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -8462,14 +8622,14 @@ def line_ending(self): self.enterRule(localctx, 232, self.RULE_line_ending) try: self.enterOuterAlt(localctx, 1) - self.state = 1281 - self.match(PBXProjParser.T__71) - self.state = 1282 - self.match(PBXProjParser.T__3) - self.state = 1283 + self.state = 1285 + self.match(PBXProjParser.LINE_ENDING) + self.state = 1286 + self.match(PBXProjParser.T__2) + self.state = 1287 self.match(PBXProjParser.NUMBER) - self.state = 1284 - self.match(PBXProjParser.T__4) + self.state = 1288 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8486,8 +8646,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def XC_LANGUAGE_SPECIFICATION_IDENTIFIER(self): + return self.getToken(PBXProjParser.XC_LANGUAGE_SPECIFICATION_IDENTIFIER, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -8510,14 +8673,14 @@ def xc_language_specification_identifier(self): self.enterRule(localctx, 234, self.RULE_xc_language_specification_identifier) try: self.enterOuterAlt(localctx, 1) - self.state = 1286 - self.match(PBXProjParser.T__72) - self.state = 1287 + self.state = 1290 + self.match(PBXProjParser.XC_LANGUAGE_SPECIFICATION_IDENTIFIER) + self.state = 1291 + self.match(PBXProjParser.T__2) + self.state = 1292 + self.str_number_variable() + self.state = 1293 self.match(PBXProjParser.T__3) - self.state = 1288 - self.any_string() - self.state = 1289 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8534,8 +8697,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def PLIST_STRUCTURE_DEFINITION_IDENTIFIER(self): + return self.getToken(PBXProjParser.PLIST_STRUCTURE_DEFINITION_IDENTIFIER, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -8558,14 +8724,14 @@ def plist_structure_definition_identifier(self): self.enterRule(localctx, 236, self.RULE_plist_structure_definition_identifier) try: self.enterOuterAlt(localctx, 1) - self.state = 1291 - self.match(PBXProjParser.T__73) - self.state = 1292 + self.state = 1295 + self.match(PBXProjParser.PLIST_STRUCTURE_DEFINITION_IDENTIFIER) + self.state = 1296 + self.match(PBXProjParser.T__2) + self.state = 1297 + self.str_number_variable() + self.state = 1298 self.match(PBXProjParser.T__3) - self.state = 1293 - self.any_string() - self.state = 1294 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8582,6 +8748,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def ATTRIBUTES(self): + return self.getToken(PBXProjParser.ATTRIBUTES, 0) + def build_targets_in_parallel(self): return self.getTypedRuleContext(PBXProjParser.Build_targets_in_parallelContext,0) @@ -8639,88 +8808,88 @@ def attributes(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1296 - self.match(PBXProjParser.T__74) - self.state = 1297 - self.match(PBXProjParser.T__3) - self.state = 1298 - self.match(PBXProjParser.T__0) self.state = 1300 + self.match(PBXProjParser.ATTRIBUTES) + self.state = 1301 + self.match(PBXProjParser.T__2) + self.state = 1302 + self.match(PBXProjParser.T__0) + self.state = 1304 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==79: - self.state = 1299 + if _la==88: + self.state = 1303 self.build_targets_in_parallel() - self.state = 1303 + self.state = 1307 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==124: - self.state = 1302 + if _la==133: + self.state = 1306 self.class_prefix() - self.state = 1306 + self.state = 1310 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==77: - self.state = 1305 + if _la==86: + self.state = 1309 self.default_build_system_type_for_workspace() - self.state = 1309 + self.state = 1313 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==76: - self.state = 1308 + if _la==85: + self.state = 1312 self.last_swift_migration() - self.state = 1312 + self.state = 1316 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==78: - self.state = 1311 + if _la==87: + self.state = 1315 self.last_swift_update_check() - self.state = 1315 + self.state = 1319 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==80: - self.state = 1314 + if _la==89: + self.state = 1318 self.last_testing_upgrade_check() - self.state = 1318 + self.state = 1322 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==81: - self.state = 1317 + if _la==90: + self.state = 1321 self.last_upgrade_check() - self.state = 1321 + self.state = 1325 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==82: - self.state = 1320 + if _la==91: + self.state = 1324 self.organization_name() - self.state = 1324 + self.state = 1328 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==83: - self.state = 1323 + if _la==92: + self.state = 1327 self.target_attributes() - self.state = 1326 + self.state = 1330 self.match(PBXProjParser.T__1) - self.state = 1327 - self.match(PBXProjParser.T__4) + self.state = 1331 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8737,6 +8906,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def LAST_SWIFT_MIGRATION(self): + return self.getToken(PBXProjParser.LAST_SWIFT_MIGRATION, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -8760,14 +8932,14 @@ def last_swift_migration(self): self.enterRule(localctx, 240, self.RULE_last_swift_migration) try: self.enterOuterAlt(localctx, 1) - self.state = 1329 - self.match(PBXProjParser.T__75) - self.state = 1330 - self.match(PBXProjParser.T__3) - self.state = 1331 + self.state = 1333 + self.match(PBXProjParser.LAST_SWIFT_MIGRATION) + self.state = 1334 + self.match(PBXProjParser.T__2) + self.state = 1335 self.match(PBXProjParser.NUMBER) - self.state = 1332 - self.match(PBXProjParser.T__4) + self.state = 1336 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8784,6 +8956,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE(self): + return self.getToken(PBXProjParser.DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE, 0) + def NON_QUOTED_STRING(self): return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) @@ -8807,14 +8982,14 @@ def default_build_system_type_for_workspace(self): self.enterRule(localctx, 242, self.RULE_default_build_system_type_for_workspace) try: self.enterOuterAlt(localctx, 1) - self.state = 1334 - self.match(PBXProjParser.T__76) - self.state = 1335 - self.match(PBXProjParser.T__3) - self.state = 1336 + self.state = 1338 + self.match(PBXProjParser.DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE) + self.state = 1339 + self.match(PBXProjParser.T__2) + self.state = 1340 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1337 - self.match(PBXProjParser.T__4) + self.state = 1341 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8831,6 +9006,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def LAST_SWIFT_UPDATE_CHECK(self): + return self.getToken(PBXProjParser.LAST_SWIFT_UPDATE_CHECK, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -8854,14 +9032,14 @@ def last_swift_update_check(self): self.enterRule(localctx, 244, self.RULE_last_swift_update_check) try: self.enterOuterAlt(localctx, 1) - self.state = 1339 - self.match(PBXProjParser.T__77) - self.state = 1340 - self.match(PBXProjParser.T__3) - self.state = 1341 + self.state = 1343 + self.match(PBXProjParser.LAST_SWIFT_UPDATE_CHECK) + self.state = 1344 + self.match(PBXProjParser.T__2) + self.state = 1345 self.match(PBXProjParser.NUMBER) - self.state = 1342 - self.match(PBXProjParser.T__4) + self.state = 1346 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8878,6 +9056,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_INDEPENDENT_TARGETS_IN_PARALLEL(self): + return self.getToken(PBXProjParser.BUILD_INDEPENDENT_TARGETS_IN_PARALLEL, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -8905,19 +9086,19 @@ def build_targets_in_parallel(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1344 - self.match(PBXProjParser.T__78) - self.state = 1345 - self.match(PBXProjParser.T__3) - self.state = 1346 + self.state = 1348 + self.match(PBXProjParser.BUILD_INDEPENDENT_TARGETS_IN_PARALLEL) + self.state = 1349 + self.match(PBXProjParser.T__2) + self.state = 1350 _la = self._input.LA(1) - if not(_la==129 or _la==136): + if not(_la==13 or _la==136): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 1347 - self.match(PBXProjParser.T__4) + self.state = 1351 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8934,6 +9115,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def LAST_TESTING_UPGRADE_CHECK(self): + return self.getToken(PBXProjParser.LAST_TESTING_UPGRADE_CHECK, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -8957,14 +9141,14 @@ def last_testing_upgrade_check(self): self.enterRule(localctx, 248, self.RULE_last_testing_upgrade_check) try: self.enterOuterAlt(localctx, 1) - self.state = 1349 - self.match(PBXProjParser.T__79) - self.state = 1350 - self.match(PBXProjParser.T__3) - self.state = 1351 + self.state = 1353 + self.match(PBXProjParser.LAST_TESTING_UPGRADE_CHECK) + self.state = 1354 + self.match(PBXProjParser.T__2) + self.state = 1355 self.match(PBXProjParser.NUMBER) - self.state = 1352 - self.match(PBXProjParser.T__4) + self.state = 1356 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -8981,6 +9165,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def LAST_UPGRADE_CHECK(self): + return self.getToken(PBXProjParser.LAST_UPGRADE_CHECK, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -9004,14 +9191,14 @@ def last_upgrade_check(self): self.enterRule(localctx, 250, self.RULE_last_upgrade_check) try: self.enterOuterAlt(localctx, 1) - self.state = 1354 - self.match(PBXProjParser.T__80) - self.state = 1355 - self.match(PBXProjParser.T__3) - self.state = 1356 + self.state = 1358 + self.match(PBXProjParser.LAST_UPGRADE_CHECK) + self.state = 1359 + self.match(PBXProjParser.T__2) + self.state = 1360 self.match(PBXProjParser.NUMBER) - self.state = 1357 - self.match(PBXProjParser.T__4) + self.state = 1361 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9028,8 +9215,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def ORGANIZATION_NAME(self): + return self.getToken(PBXProjParser.ORGANIZATION_NAME, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -9052,14 +9242,14 @@ def organization_name(self): self.enterRule(localctx, 252, self.RULE_organization_name) try: self.enterOuterAlt(localctx, 1) - self.state = 1359 - self.match(PBXProjParser.T__81) - self.state = 1360 + self.state = 1363 + self.match(PBXProjParser.ORGANIZATION_NAME) + self.state = 1364 + self.match(PBXProjParser.T__2) + self.state = 1365 + self.str_number_variable() + self.state = 1366 self.match(PBXProjParser.T__3) - self.state = 1361 - self.any_string() - self.state = 1362 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9076,6 +9266,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def TARGET_ATTRIBUTES(self): + return self.getToken(PBXProjParser.TARGET_ATTRIBUTES, 0) + def target_attribute(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Target_attributeContext) @@ -9104,26 +9297,26 @@ def target_attributes(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1364 - self.match(PBXProjParser.T__82) - self.state = 1365 - self.match(PBXProjParser.T__3) - self.state = 1366 - self.match(PBXProjParser.T__0) + self.state = 1368 + self.match(PBXProjParser.TARGET_ATTRIBUTES) + self.state = 1369 + self.match(PBXProjParser.T__2) self.state = 1370 + self.match(PBXProjParser.T__0) + self.state = 1374 self._errHandler.sync(self) _la = self._input.LA(1) while _la==134: - self.state = 1367 + self.state = 1371 self.target_attribute() - self.state = 1372 + self.state = 1376 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1373 + self.state = 1377 self.match(PBXProjParser.T__1) - self.state = 1374 - self.match(PBXProjParser.T__4) + self.state = 1378 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9195,80 +9388,80 @@ def target_attribute(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1376 + self.state = 1380 self.match(PBXProjParser.REFERENCE) - self.state = 1377 - self.match(PBXProjParser.T__3) - self.state = 1378 + self.state = 1381 + self.match(PBXProjParser.T__2) + self.state = 1382 self.match(PBXProjParser.T__0) - self.state = 1380 + self.state = 1384 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==84: - self.state = 1379 + if _la==93: + self.state = 1383 self.created_on_tools_version() - self.state = 1383 + self.state = 1387 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,106,self._ctx) if la_ == 1: - self.state = 1382 + self.state = 1386 self.test_target_id() - self.state = 1386 + self.state = 1390 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==86: - self.state = 1385 + if _la==95: + self.state = 1389 self.development_team() - self.state = 1389 + self.state = 1393 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==87: - self.state = 1388 + if _la==96: + self.state = 1392 self.development_team_name() - self.state = 1392 + self.state = 1396 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==76: - self.state = 1391 + if _la==85: + self.state = 1395 self.last_swift_migration() - self.state = 1395 + self.state = 1399 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==88: - self.state = 1394 + if _la==97: + self.state = 1398 self.provisioning_style() - self.state = 1398 + self.state = 1402 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==121: - self.state = 1397 + if _la==130: + self.state = 1401 self.system_capabilities() - self.state = 1401 + self.state = 1405 self._errHandler.sync(self) _la = self._input.LA(1) - if _la==85: - self.state = 1400 + if _la==94: + self.state = 1404 self.test_target_id() - self.state = 1403 + self.state = 1407 self.match(PBXProjParser.T__1) - self.state = 1404 - self.match(PBXProjParser.T__4) + self.state = 1408 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9285,6 +9478,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def CREATED_ON_TOOLS_VERSION(self): + return self.getToken(PBXProjParser.CREATED_ON_TOOLS_VERSION, 0) + def NON_QUOTED_STRING(self): return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) @@ -9308,14 +9504,14 @@ def created_on_tools_version(self): self.enterRule(localctx, 258, self.RULE_created_on_tools_version) try: self.enterOuterAlt(localctx, 1) - self.state = 1406 - self.match(PBXProjParser.T__83) - self.state = 1407 - self.match(PBXProjParser.T__3) - self.state = 1408 + self.state = 1410 + self.match(PBXProjParser.CREATED_ON_TOOLS_VERSION) + self.state = 1411 + self.match(PBXProjParser.T__2) + self.state = 1412 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1409 - self.match(PBXProjParser.T__4) + self.state = 1413 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9332,6 +9528,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def TEST_TARGET_ID(self): + return self.getToken(PBXProjParser.TEST_TARGET_ID, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -9355,14 +9554,14 @@ def test_target_id(self): self.enterRule(localctx, 260, self.RULE_test_target_id) try: self.enterOuterAlt(localctx, 1) - self.state = 1411 - self.match(PBXProjParser.T__84) - self.state = 1412 - self.match(PBXProjParser.T__3) - self.state = 1413 + self.state = 1415 + self.match(PBXProjParser.TEST_TARGET_ID) + self.state = 1416 + self.match(PBXProjParser.T__2) + self.state = 1417 self.match(PBXProjParser.REFERENCE) - self.state = 1414 - self.match(PBXProjParser.T__4) + self.state = 1418 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9379,11 +9578,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def DEVELOPMENT_TEAM(self): + return self.getToken(PBXProjParser.DEVELOPMENT_TEAM, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_development_team @@ -9403,22 +9603,16 @@ def development_team(self): localctx = PBXProjParser.Development_teamContext(self, self._ctx, self.state) self.enterRule(localctx, 262, self.RULE_development_team) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1416 - self.match(PBXProjParser.T__85) - self.state = 1417 + self.state = 1420 + self.match(PBXProjParser.DEVELOPMENT_TEAM) + self.state = 1421 + self.match(PBXProjParser.T__2) + self.state = 1422 + self.any_string() + self.state = 1423 self.match(PBXProjParser.T__3) - self.state = 1418 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1419 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9435,11 +9629,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) - - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) + def DEVELOPMENT_TEAM_NAME(self): + return self.getToken(PBXProjParser.DEVELOPMENT_TEAM_NAME, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def getRuleIndex(self): return PBXProjParser.RULE_development_team_name @@ -9459,22 +9654,16 @@ def development_team_name(self): localctx = PBXProjParser.Development_team_nameContext(self, self._ctx, self.state) self.enterRule(localctx, 264, self.RULE_development_team_name) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1421 - self.match(PBXProjParser.T__86) - self.state = 1422 + self.state = 1425 + self.match(PBXProjParser.DEVELOPMENT_TEAM_NAME) + self.state = 1426 + self.match(PBXProjParser.T__2) + self.state = 1427 + self.any_string() + self.state = 1428 self.match(PBXProjParser.T__3) - self.state = 1423 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1424 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9491,6 +9680,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PROVISIONING_STYLE(self): + return self.getToken(PBXProjParser.PROVISIONING_STYLE, 0) + def NON_QUOTED_STRING(self): return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) @@ -9514,14 +9706,14 @@ def provisioning_style(self): self.enterRule(localctx, 266, self.RULE_provisioning_style) try: self.enterOuterAlt(localctx, 1) - self.state = 1426 - self.match(PBXProjParser.T__87) - self.state = 1427 - self.match(PBXProjParser.T__3) - self.state = 1428 + self.state = 1430 + self.match(PBXProjParser.PROVISIONING_STYLE) + self.state = 1431 + self.match(PBXProjParser.T__2) + self.state = 1432 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1429 - self.match(PBXProjParser.T__4) + self.state = 1433 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9538,6 +9730,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def COMPATIBILITY_VERSION(self): + return self.getToken(PBXProjParser.COMPATIBILITY_VERSION, 0) + def QUOTED_STRING(self): return self.getToken(PBXProjParser.QUOTED_STRING, 0) @@ -9561,14 +9756,14 @@ def compatibility_version(self): self.enterRule(localctx, 268, self.RULE_compatibility_version) try: self.enterOuterAlt(localctx, 1) - self.state = 1431 - self.match(PBXProjParser.T__88) - self.state = 1432 - self.match(PBXProjParser.T__3) - self.state = 1433 + self.state = 1435 + self.match(PBXProjParser.COMPATIBILITY_VERSION) + self.state = 1436 + self.match(PBXProjParser.T__2) + self.state = 1437 self.match(PBXProjParser.QUOTED_STRING) - self.state = 1434 - self.match(PBXProjParser.T__4) + self.state = 1438 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9585,6 +9780,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def DEVELOPMENT_REGION(self): + return self.getToken(PBXProjParser.DEVELOPMENT_REGION, 0) + def NON_QUOTED_STRING(self): return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) @@ -9608,14 +9806,14 @@ def development_region(self): self.enterRule(localctx, 270, self.RULE_development_region) try: self.enterOuterAlt(localctx, 1) - self.state = 1436 - self.match(PBXProjParser.T__89) - self.state = 1437 - self.match(PBXProjParser.T__3) - self.state = 1438 + self.state = 1440 + self.match(PBXProjParser.DEVELOPMENT_REGION) + self.state = 1441 + self.match(PBXProjParser.T__2) + self.state = 1442 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1439 - self.match(PBXProjParser.T__4) + self.state = 1443 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9632,6 +9830,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def HAS_SCANNED_FOR_ENCODINGS(self): + return self.getToken(PBXProjParser.HAS_SCANNED_FOR_ENCODINGS, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -9655,14 +9856,14 @@ def has_scanned_for_encodings(self): self.enterRule(localctx, 272, self.RULE_has_scanned_for_encodings) try: self.enterOuterAlt(localctx, 1) - self.state = 1441 - self.match(PBXProjParser.T__90) - self.state = 1442 - self.match(PBXProjParser.T__3) - self.state = 1443 + self.state = 1445 + self.match(PBXProjParser.HAS_SCANNED_FOR_ENCODINGS) + self.state = 1446 + self.match(PBXProjParser.T__2) + self.state = 1447 self.match(PBXProjParser.NUMBER) - self.state = 1444 - self.match(PBXProjParser.T__4) + self.state = 1448 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9679,6 +9880,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def KNOWN_REGIONS(self): + return self.getToken(PBXProjParser.KNOWN_REGIONS, 0) + def any_string_list(self): return self.getTypedRuleContext(PBXProjParser.Any_string_listContext,0) @@ -9703,14 +9907,14 @@ def known_regions(self): self.enterRule(localctx, 274, self.RULE_known_regions) try: self.enterOuterAlt(localctx, 1) - self.state = 1446 - self.match(PBXProjParser.T__91) - self.state = 1447 - self.match(PBXProjParser.T__3) - self.state = 1448 + self.state = 1450 + self.match(PBXProjParser.KNOWN_REGIONS) + self.state = 1451 + self.match(PBXProjParser.T__2) + self.state = 1452 self.any_string_list() - self.state = 1449 - self.match(PBXProjParser.T__4) + self.state = 1453 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9727,6 +9931,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def MAIN_GROUP(self): + return self.getToken(PBXProjParser.MAIN_GROUP, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -9750,14 +9957,14 @@ def main_group(self): self.enterRule(localctx, 276, self.RULE_main_group) try: self.enterOuterAlt(localctx, 1) - self.state = 1451 - self.match(PBXProjParser.T__92) - self.state = 1452 - self.match(PBXProjParser.T__3) - self.state = 1453 + self.state = 1455 + self.match(PBXProjParser.MAIN_GROUP) + self.state = 1456 + self.match(PBXProjParser.T__2) + self.state = 1457 self.match(PBXProjParser.REFERENCE) - self.state = 1454 - self.match(PBXProjParser.T__4) + self.state = 1458 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9774,6 +9981,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PRODUCT_REF_GROUP(self): + return self.getToken(PBXProjParser.PRODUCT_REF_GROUP, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -9797,14 +10007,14 @@ def product_ref_group(self): self.enterRule(localctx, 278, self.RULE_product_ref_group) try: self.enterOuterAlt(localctx, 1) - self.state = 1456 - self.match(PBXProjParser.T__93) - self.state = 1457 - self.match(PBXProjParser.T__3) - self.state = 1458 + self.state = 1460 + self.match(PBXProjParser.PRODUCT_REF_GROUP) + self.state = 1461 + self.match(PBXProjParser.T__2) + self.state = 1462 self.match(PBXProjParser.REFERENCE) - self.state = 1459 - self.match(PBXProjParser.T__4) + self.state = 1463 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9821,6 +10031,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PACKAGE_REFERENCES(self): + return self.getToken(PBXProjParser.PACKAGE_REFERENCES, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -9845,14 +10058,14 @@ def package_references(self): self.enterRule(localctx, 280, self.RULE_package_references) try: self.enterOuterAlt(localctx, 1) - self.state = 1461 - self.match(PBXProjParser.T__94) - self.state = 1462 - self.match(PBXProjParser.T__3) - self.state = 1463 + self.state = 1465 + self.match(PBXProjParser.PACKAGE_REFERENCES) + self.state = 1466 + self.match(PBXProjParser.T__2) + self.state = 1467 self.reference_list() - self.state = 1464 - self.match(PBXProjParser.T__4) + self.state = 1468 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9869,11 +10082,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def PRODUCT_DIR_PATH(self): + return self.getToken(PBXProjParser.PRODUCT_DIR_PATH, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_project_dir_path @@ -9893,22 +10107,16 @@ def project_dir_path(self): localctx = PBXProjParser.Project_dir_pathContext(self, self._ctx, self.state) self.enterRule(localctx, 282, self.RULE_project_dir_path) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1466 - self.match(PBXProjParser.T__95) - self.state = 1467 + self.state = 1470 + self.match(PBXProjParser.PRODUCT_DIR_PATH) + self.state = 1471 + self.match(PBXProjParser.T__2) + self.state = 1472 + self.any_string() + self.state = 1473 self.match(PBXProjParser.T__3) - self.state = 1468 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1469 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -9925,8 +10133,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def PROJECT_REFERENCES(self): + return self.getToken(PBXProjParser.PROJECT_REFERENCES, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def project_references_list(self): @@ -9952,35 +10163,35 @@ def project_references(self): localctx = PBXProjParser.Project_referencesContext(self, self._ctx, self.state) self.enterRule(localctx, 284, self.RULE_project_references) try: - self.state = 1483 + self.state = 1487 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,113,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1471 - self.match(PBXProjParser.T__96) - self.state = 1472 + self.state = 1475 + self.match(PBXProjParser.PROJECT_REFERENCES) + self.state = 1476 + self.match(PBXProjParser.T__2) + self.state = 1477 + self.str_number_variable() + self.state = 1478 self.match(PBXProjParser.T__3) - self.state = 1473 - self.any_string() - self.state = 1474 - self.match(PBXProjParser.T__4) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1476 - self.match(PBXProjParser.T__96) - self.state = 1477 - self.match(PBXProjParser.T__3) - self.state = 1478 - self.match(PBXProjParser.T__57) - self.state = 1479 - self.project_references_list() self.state = 1480 - self.match(PBXProjParser.T__59) + self.match(PBXProjParser.PROJECT_REFERENCES) self.state = 1481 + self.match(PBXProjParser.T__2) + self.state = 1482 self.match(PBXProjParser.T__4) + self.state = 1483 + self.project_references_list() + self.state = 1484 + self.match(PBXProjParser.T__6) + self.state = 1485 + self.match(PBXProjParser.T__3) pass @@ -10000,11 +10211,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def PROJECT_ROOT(self): + return self.getToken(PBXProjParser.PROJECT_ROOT, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_project_root @@ -10024,22 +10236,16 @@ def project_root(self): localctx = PBXProjParser.Project_rootContext(self, self._ctx, self.state) self.enterRule(localctx, 286, self.RULE_project_root) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1485 - self.match(PBXProjParser.T__97) - self.state = 1486 + self.state = 1489 + self.match(PBXProjParser.PROJECT_ROOT) + self.state = 1490 + self.match(PBXProjParser.T__2) + self.state = 1491 + self.any_string() + self.state = 1492 self.match(PBXProjParser.T__3) - self.state = 1487 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1488 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10056,6 +10262,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def TARGETS(self): + return self.getToken(PBXProjParser.TARGETS, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -10080,14 +10289,14 @@ def targets(self): self.enterRule(localctx, 288, self.RULE_targets) try: self.enterOuterAlt(localctx, 1) - self.state = 1490 - self.match(PBXProjParser.T__98) - self.state = 1491 - self.match(PBXProjParser.T__3) - self.state = 1492 + self.state = 1494 + self.match(PBXProjParser.TARGETS) + self.state = 1495 + self.match(PBXProjParser.T__2) + self.state = 1496 self.reference_list() - self.state = 1493 - self.match(PBXProjParser.T__4) + self.state = 1497 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10104,6 +10313,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def INPUT_FILE_LIST_PATHS(self): + return self.getToken(PBXProjParser.INPUT_FILE_LIST_PATHS, 0) + def any_string_list(self): return self.getTypedRuleContext(PBXProjParser.Any_string_listContext,0) @@ -10128,14 +10340,14 @@ def input_file_list_paths(self): self.enterRule(localctx, 290, self.RULE_input_file_list_paths) try: self.enterOuterAlt(localctx, 1) - self.state = 1495 - self.match(PBXProjParser.T__99) - self.state = 1496 - self.match(PBXProjParser.T__3) - self.state = 1497 + self.state = 1499 + self.match(PBXProjParser.INPUT_FILE_LIST_PATHS) + self.state = 1500 + self.match(PBXProjParser.T__2) + self.state = 1501 self.any_string_list() - self.state = 1498 - self.match(PBXProjParser.T__4) + self.state = 1502 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10152,6 +10364,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def INPUT_PATHS(self): + return self.getToken(PBXProjParser.INPUT_PATHS, 0) + def any_string_list(self): return self.getTypedRuleContext(PBXProjParser.Any_string_listContext,0) @@ -10176,14 +10391,14 @@ def input_paths(self): self.enterRule(localctx, 292, self.RULE_input_paths) try: self.enterOuterAlt(localctx, 1) - self.state = 1500 - self.match(PBXProjParser.T__100) - self.state = 1501 - self.match(PBXProjParser.T__3) - self.state = 1502 + self.state = 1504 + self.match(PBXProjParser.INPUT_PATHS) + self.state = 1505 + self.match(PBXProjParser.T__2) + self.state = 1506 self.any_string_list() - self.state = 1503 - self.match(PBXProjParser.T__4) + self.state = 1507 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10200,6 +10415,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def OUTPUT_FILE_LIST_PATHS(self): + return self.getToken(PBXProjParser.OUTPUT_FILE_LIST_PATHS, 0) + def any_string_list(self): return self.getTypedRuleContext(PBXProjParser.Any_string_listContext,0) @@ -10224,14 +10442,14 @@ def output_file_list_paths(self): self.enterRule(localctx, 294, self.RULE_output_file_list_paths) try: self.enterOuterAlt(localctx, 1) - self.state = 1505 - self.match(PBXProjParser.T__101) - self.state = 1506 - self.match(PBXProjParser.T__3) - self.state = 1507 + self.state = 1509 + self.match(PBXProjParser.OUTPUT_FILE_LIST_PATHS) + self.state = 1510 + self.match(PBXProjParser.T__2) + self.state = 1511 self.any_string_list() - self.state = 1508 - self.match(PBXProjParser.T__4) + self.state = 1512 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10248,6 +10466,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def OUTPUT_PATHS(self): + return self.getToken(PBXProjParser.OUTPUT_PATHS, 0) + def any_string_list(self): return self.getTypedRuleContext(PBXProjParser.Any_string_listContext,0) @@ -10272,14 +10493,14 @@ def output_paths(self): self.enterRule(localctx, 296, self.RULE_output_paths) try: self.enterOuterAlt(localctx, 1) - self.state = 1510 - self.match(PBXProjParser.T__102) - self.state = 1511 - self.match(PBXProjParser.T__3) - self.state = 1512 + self.state = 1514 + self.match(PBXProjParser.OUTPUT_PATHS) + self.state = 1515 + self.match(PBXProjParser.T__2) + self.state = 1516 self.any_string_list() - self.state = 1513 - self.match(PBXProjParser.T__4) + self.state = 1517 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10296,6 +10517,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def SHELL_PATH(self): + return self.getToken(PBXProjParser.SHELL_PATH, 0) + def NON_QUOTED_STRING(self): return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) @@ -10319,14 +10543,14 @@ def shell_path(self): self.enterRule(localctx, 298, self.RULE_shell_path) try: self.enterOuterAlt(localctx, 1) - self.state = 1515 - self.match(PBXProjParser.T__103) - self.state = 1516 - self.match(PBXProjParser.T__3) - self.state = 1517 + self.state = 1519 + self.match(PBXProjParser.SHELL_PATH) + self.state = 1520 + self.match(PBXProjParser.T__2) + self.state = 1521 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1518 - self.match(PBXProjParser.T__4) + self.state = 1522 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10343,11 +10567,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def SHELL_SCRIPT(self): + return self.getToken(PBXProjParser.SHELL_SCRIPT, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_shell_script @@ -10367,22 +10592,16 @@ def shell_script(self): localctx = PBXProjParser.Shell_scriptContext(self, self._ctx, self.state) self.enterRule(localctx, 300, self.RULE_shell_script) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1520 - self.match(PBXProjParser.T__104) - self.state = 1521 + self.state = 1524 + self.match(PBXProjParser.SHELL_SCRIPT) + self.state = 1525 + self.match(PBXProjParser.T__2) + self.state = 1526 + self.any_string() + self.state = 1527 self.match(PBXProjParser.T__3) - self.state = 1522 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1523 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10399,6 +10618,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def SHOW_ENV_VARS_IN_LOG(self): + return self.getToken(PBXProjParser.SHOW_ENV_VARS_IN_LOG, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -10422,14 +10644,14 @@ def show_env_vars_in_log(self): self.enterRule(localctx, 302, self.RULE_show_env_vars_in_log) try: self.enterOuterAlt(localctx, 1) - self.state = 1525 - self.match(PBXProjParser.T__105) - self.state = 1526 - self.match(PBXProjParser.T__3) - self.state = 1527 - self.match(PBXProjParser.NUMBER) - self.state = 1528 - self.match(PBXProjParser.T__4) + self.state = 1529 + self.match(PBXProjParser.SHOW_ENV_VARS_IN_LOG) + self.state = 1530 + self.match(PBXProjParser.T__2) + self.state = 1531 + self.match(PBXProjParser.NUMBER) + self.state = 1532 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10446,6 +10668,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def TARGET(self): + return self.getToken(PBXProjParser.TARGET, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -10469,14 +10694,14 @@ def target(self): self.enterRule(localctx, 304, self.RULE_target) try: self.enterOuterAlt(localctx, 1) - self.state = 1530 - self.match(PBXProjParser.T__106) - self.state = 1531 - self.match(PBXProjParser.T__3) - self.state = 1532 + self.state = 1534 + self.match(PBXProjParser.TARGET) + self.state = 1535 + self.match(PBXProjParser.T__2) + self.state = 1536 self.match(PBXProjParser.REFERENCE) - self.state = 1533 - self.match(PBXProjParser.T__4) + self.state = 1537 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10493,6 +10718,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def TARGET_PROXY(self): + return self.getToken(PBXProjParser.TARGET_PROXY, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -10516,14 +10744,14 @@ def target_proxy(self): self.enterRule(localctx, 306, self.RULE_target_proxy) try: self.enterOuterAlt(localctx, 1) - self.state = 1535 - self.match(PBXProjParser.T__107) - self.state = 1536 - self.match(PBXProjParser.T__3) - self.state = 1537 + self.state = 1539 + self.match(PBXProjParser.TARGET_PROXY) + self.state = 1540 + self.match(PBXProjParser.T__2) + self.state = 1541 self.match(PBXProjParser.REFERENCE) - self.state = 1538 - self.match(PBXProjParser.T__4) + self.state = 1542 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10540,8 +10768,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def FILE_TYPE(self): + return self.getToken(PBXProjParser.FILE_TYPE, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -10564,14 +10795,14 @@ def file_type(self): self.enterRule(localctx, 308, self.RULE_file_type) try: self.enterOuterAlt(localctx, 1) - self.state = 1540 - self.match(PBXProjParser.T__108) - self.state = 1541 + self.state = 1544 + self.match(PBXProjParser.FILE_TYPE) + self.state = 1545 + self.match(PBXProjParser.T__2) + self.state = 1546 + self.str_number_variable() + self.state = 1547 self.match(PBXProjParser.T__3) - self.state = 1542 - self.any_string() - self.state = 1543 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10588,6 +10819,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def REMOTE_REF(self): + return self.getToken(PBXProjParser.REMOTE_REF, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -10611,14 +10845,14 @@ def remote_ref(self): self.enterRule(localctx, 310, self.RULE_remote_ref) try: self.enterOuterAlt(localctx, 1) - self.state = 1545 - self.match(PBXProjParser.T__109) - self.state = 1546 - self.match(PBXProjParser.T__3) - self.state = 1547 + self.state = 1549 + self.match(PBXProjParser.REMOTE_REF) + self.state = 1550 + self.match(PBXProjParser.T__2) + self.state = 1551 self.match(PBXProjParser.REFERENCE) - self.state = 1548 - self.match(PBXProjParser.T__4) + self.state = 1552 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10635,6 +10869,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BASE_CONFIGURATION_REFERENCE(self): + return self.getToken(PBXProjParser.BASE_CONFIGURATION_REFERENCE, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -10658,14 +10895,14 @@ def base_configuration_reference(self): self.enterRule(localctx, 312, self.RULE_base_configuration_reference) try: self.enterOuterAlt(localctx, 1) - self.state = 1550 - self.match(PBXProjParser.T__110) - self.state = 1551 - self.match(PBXProjParser.T__3) - self.state = 1552 + self.state = 1554 + self.match(PBXProjParser.BASE_CONFIGURATION_REFERENCE) + self.state = 1555 + self.match(PBXProjParser.T__2) + self.state = 1556 self.match(PBXProjParser.REFERENCE) - self.state = 1553 - self.match(PBXProjParser.T__4) + self.state = 1557 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10682,6 +10919,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_SETTINGS(self): + return self.getToken(PBXProjParser.BUILD_SETTINGS, 0) + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) @@ -10710,26 +10950,26 @@ def build_settings(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1555 - self.match(PBXProjParser.T__111) - self.state = 1556 - self.match(PBXProjParser.T__3) - self.state = 1557 - self.match(PBXProjParser.T__0) + self.state = 1559 + self.match(PBXProjParser.BUILD_SETTINGS) + self.state = 1560 + self.match(PBXProjParser.T__2) self.state = 1561 + self.match(PBXProjParser.T__0) + self.state = 1565 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0: - self.state = 1558 + while ((_la) & ~0x3f) == 0 and ((1 << _la) & -101059840) != 0 or (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0 or (((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 959) != 0: + self.state = 1562 self.key_value() - self.state = 1563 + self.state = 1567 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1564 + self.state = 1568 self.match(PBXProjParser.T__1) - self.state = 1565 - self.match(PBXProjParser.T__4) + self.state = 1569 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10746,11 +10986,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def DST_PATH(self): + return self.getToken(PBXProjParser.DST_PATH, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_dst_path @@ -10770,22 +11011,16 @@ def dst_path(self): localctx = PBXProjParser.Dst_pathContext(self, self._ctx, self.state) self.enterRule(localctx, 316, self.RULE_dst_path) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1567 - self.match(PBXProjParser.T__112) - self.state = 1568 + self.state = 1571 + self.match(PBXProjParser.DST_PATH) + self.state = 1572 + self.match(PBXProjParser.T__2) + self.state = 1573 + self.any_string() + self.state = 1574 self.match(PBXProjParser.T__3) - self.state = 1569 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1570 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10802,6 +11037,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def DST_SUBFOLDER_SPEC(self): + return self.getToken(PBXProjParser.DST_SUBFOLDER_SPEC, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -10825,14 +11063,14 @@ def dst_subfolder_spec(self): self.enterRule(localctx, 318, self.RULE_dst_subfolder_spec) try: self.enterOuterAlt(localctx, 1) - self.state = 1572 - self.match(PBXProjParser.T__113) - self.state = 1573 - self.match(PBXProjParser.T__3) - self.state = 1574 + self.state = 1576 + self.match(PBXProjParser.DST_SUBFOLDER_SPEC) + self.state = 1577 + self.match(PBXProjParser.T__2) + self.state = 1578 self.match(PBXProjParser.NUMBER) - self.state = 1575 - self.match(PBXProjParser.T__4) + self.state = 1579 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10877,13 +11115,13 @@ def project_references_list(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1580 + self.state = 1584 self._errHandler.sync(self) _la = self._input.LA(1) while _la==1: - self.state = 1577 + self.state = 1581 self.project_references_list_element() - self.state = 1582 + self.state = 1586 self._errHandler.sync(self) _la = self._input.LA(1) @@ -10903,12 +11141,18 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def PRODUCT_GROUP(self): + return self.getToken(PBXProjParser.PRODUCT_GROUP, 0) + def REFERENCE(self, i:int=None): if i is None: return self.getTokens(PBXProjParser.REFERENCE) else: return self.getToken(PBXProjParser.REFERENCE, i) + def PROJECT_REF(self): + return self.getToken(PBXProjParser.PROJECT_REF, 0) + def getRuleIndex(self): return PBXProjParser.RULE_project_references_list_element @@ -10929,28 +11173,28 @@ def project_references_list_element(self): self.enterRule(localctx, 322, self.RULE_project_references_list_element) try: self.enterOuterAlt(localctx, 1) - self.state = 1583 - self.match(PBXProjParser.T__0) - self.state = 1584 - self.match(PBXProjParser.T__114) - self.state = 1585 - self.match(PBXProjParser.T__3) - self.state = 1586 - self.match(PBXProjParser.REFERENCE) self.state = 1587 - self.match(PBXProjParser.T__4) + self.match(PBXProjParser.T__0) self.state = 1588 - self.match(PBXProjParser.T__115) + self.match(PBXProjParser.PRODUCT_GROUP) self.state = 1589 - self.match(PBXProjParser.T__3) + self.match(PBXProjParser.T__2) self.state = 1590 self.match(PBXProjParser.REFERENCE) self.state = 1591 - self.match(PBXProjParser.T__4) + self.match(PBXProjParser.T__3) self.state = 1592 - self.match(PBXProjParser.T__1) + self.match(PBXProjParser.PROJECT_REF) self.state = 1593 - self.match(PBXProjParser.T__58) + self.match(PBXProjParser.T__2) + self.state = 1594 + self.match(PBXProjParser.REFERENCE) + self.state = 1595 + self.match(PBXProjParser.T__3) + self.state = 1596 + self.match(PBXProjParser.T__1) + self.state = 1597 + self.match(PBXProjParser.T__5) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -10967,11 +11211,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self, i:int=None): + def str_number_variable(self, i:int=None): if i is None: - return self.getTypedRuleContexts(PBXProjParser.Any_stringContext) + return self.getTypedRuleContexts(PBXProjParser.Str_number_variableContext) else: - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,i) + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,i) def NUMBER(self): @@ -11004,85 +11248,85 @@ def key_value(self): self.enterRule(localctx, 324, self.RULE_key_value) self._la = 0 # Token type try: - self.state = 1631 + self.state = 1635 self._errHandler.sync(self) la_ = self._interp.adaptivePredict(self._input,117,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 1595 - self.any_string() - self.state = 1596 + self.state = 1599 + self.str_number_variable() + self.state = 1600 + self.match(PBXProjParser.T__2) + self.state = 1601 + self.str_number_variable() + self.state = 1602 self.match(PBXProjParser.T__3) - self.state = 1597 - self.any_string() - self.state = 1598 - self.match(PBXProjParser.T__4) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 1600 - self.any_string() - self.state = 1601 - self.match(PBXProjParser.T__3) - self.state = 1602 + self.state = 1604 + self.str_number_variable() + self.state = 1605 + self.match(PBXProjParser.T__2) + self.state = 1606 self.match(PBXProjParser.NUMBER) - self.state = 1603 - self.match(PBXProjParser.T__4) + self.state = 1607 + self.match(PBXProjParser.T__3) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 1605 - self.any_string() - self.state = 1606 - self.match(PBXProjParser.T__3) - self.state = 1607 + self.state = 1609 + self.str_number_variable() + self.state = 1610 + self.match(PBXProjParser.T__2) + self.state = 1611 self.match(PBXProjParser.ALPHA_NUMERIC) - self.state = 1608 - self.match(PBXProjParser.T__4) + self.state = 1612 + self.match(PBXProjParser.T__3) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 1610 - self.any_string() - self.state = 1611 - self.match(PBXProjParser.T__3) - self.state = 1612 + self.state = 1614 + self.str_number_variable() + self.state = 1615 + self.match(PBXProjParser.T__2) + self.state = 1616 self.match(PBXProjParser.T__0) - self.state = 1613 + self.state = 1617 self.key_value() - self.state = 1614 + self.state = 1618 self.match(PBXProjParser.T__1) - self.state = 1615 - self.match(PBXProjParser.T__4) + self.state = 1619 + self.match(PBXProjParser.T__3) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 1617 - self.any_string() - self.state = 1618 - self.match(PBXProjParser.T__3) - self.state = 1619 - self.match(PBXProjParser.T__57) - self.state = 1625 + self.state = 1621 + self.str_number_variable() + self.state = 1622 + self.match(PBXProjParser.T__2) + self.state = 1623 + self.match(PBXProjParser.T__4) + self.state = 1629 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0: - self.state = 1620 - self.any_string() - self.state = 1621 - self.match(PBXProjParser.T__58) - self.state = 1627 + while ((_la) & ~0x3f) == 0 and ((1 << _la) & -101059840) != 0 or (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0 or (((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 959) != 0: + self.state = 1624 + self.str_number_variable() + self.state = 1625 + self.match(PBXProjParser.T__5) + self.state = 1631 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1628 - self.match(PBXProjParser.T__59) - self.state = 1629 - self.match(PBXProjParser.T__4) + self.state = 1632 + self.match(PBXProjParser.T__6) + self.state = 1633 + self.match(PBXProjParser.T__3) pass @@ -11102,6 +11346,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def BUILD_CONFIGURATIONS(self): + return self.getToken(PBXProjParser.BUILD_CONFIGURATIONS, 0) + def reference_list(self): return self.getTypedRuleContext(PBXProjParser.Reference_listContext,0) @@ -11126,14 +11373,14 @@ def build_configurations(self): self.enterRule(localctx, 326, self.RULE_build_configurations) try: self.enterOuterAlt(localctx, 1) - self.state = 1633 - self.match(PBXProjParser.T__116) - self.state = 1634 - self.match(PBXProjParser.T__3) - self.state = 1635 + self.state = 1637 + self.match(PBXProjParser.BUILD_CONFIGURATIONS) + self.state = 1638 + self.match(PBXProjParser.T__2) + self.state = 1639 self.reference_list() - self.state = 1636 - self.match(PBXProjParser.T__4) + self.state = 1640 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11150,6 +11397,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def DEFAULT_CONFIGURATION_IS_VISIBLE(self): + return self.getToken(PBXProjParser.DEFAULT_CONFIGURATION_IS_VISIBLE, 0) + def NUMBER(self): return self.getToken(PBXProjParser.NUMBER, 0) @@ -11173,14 +11423,14 @@ def default_configuration_is_visible(self): self.enterRule(localctx, 328, self.RULE_default_configuration_is_visible) try: self.enterOuterAlt(localctx, 1) - self.state = 1638 - self.match(PBXProjParser.T__117) - self.state = 1639 - self.match(PBXProjParser.T__3) - self.state = 1640 + self.state = 1642 + self.match(PBXProjParser.DEFAULT_CONFIGURATION_IS_VISIBLE) + self.state = 1643 + self.match(PBXProjParser.T__2) + self.state = 1644 self.match(PBXProjParser.NUMBER) - self.state = 1641 - self.match(PBXProjParser.T__4) + self.state = 1645 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11197,11 +11447,12 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def QUOTED_STRING(self): - return self.getToken(PBXProjParser.QUOTED_STRING, 0) + def DEFAULT_CONFIGURATION_NAME(self): + return self.getToken(PBXProjParser.DEFAULT_CONFIGURATION_NAME, 0) + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) - def NON_QUOTED_STRING(self): - return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) def getRuleIndex(self): return PBXProjParser.RULE_default_configuration_name @@ -11221,22 +11472,16 @@ def default_configuration_name(self): localctx = PBXProjParser.Default_configuration_nameContext(self, self._ctx, self.state) self.enterRule(localctx, 330, self.RULE_default_configuration_name) - self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1643 - self.match(PBXProjParser.T__118) - self.state = 1644 + self.state = 1647 + self.match(PBXProjParser.DEFAULT_CONFIGURATION_NAME) + self.state = 1648 + self.match(PBXProjParser.T__2) + self.state = 1649 + self.any_string() + self.state = 1650 self.match(PBXProjParser.T__3) - self.state = 1645 - _la = self._input.LA(1) - if not(_la==135 or _la==136): - self._errHandler.recoverInline(self) - else: - self._errHandler.reportMatch(self) - self.consume() - self.state = 1646 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11253,6 +11498,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def SETTINGS(self): + return self.getToken(PBXProjParser.SETTINGS, 0) + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) @@ -11281,26 +11529,26 @@ def settings(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1648 - self.match(PBXProjParser.T__119) - self.state = 1649 - self.match(PBXProjParser.T__3) - self.state = 1650 - self.match(PBXProjParser.T__0) + self.state = 1652 + self.match(PBXProjParser.SETTINGS) + self.state = 1653 + self.match(PBXProjParser.T__2) self.state = 1654 + self.match(PBXProjParser.T__0) + self.state = 1658 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0: - self.state = 1651 + while ((_la) & ~0x3f) == 0 and ((1 << _la) & -101059840) != 0 or (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0 or (((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 959) != 0: + self.state = 1655 self.key_value() - self.state = 1656 + self.state = 1660 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1657 + self.state = 1661 self.match(PBXProjParser.T__1) - self.state = 1658 - self.match(PBXProjParser.T__4) + self.state = 1662 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11317,6 +11565,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def SYSTEM_CAPABILITIES(self): + return self.getToken(PBXProjParser.SYSTEM_CAPABILITIES, 0) + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) @@ -11345,26 +11596,26 @@ def system_capabilities(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1660 - self.match(PBXProjParser.T__120) - self.state = 1661 - self.match(PBXProjParser.T__3) - self.state = 1662 - self.match(PBXProjParser.T__0) + self.state = 1664 + self.match(PBXProjParser.SYSTEM_CAPABILITIES) + self.state = 1665 + self.match(PBXProjParser.T__2) self.state = 1666 + self.match(PBXProjParser.T__0) + self.state = 1670 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0: - self.state = 1663 + while ((_la) & ~0x3f) == 0 and ((1 << _la) & -101059840) != 0 or (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & -1) != 0 or (((_la - 128)) & ~0x3f) == 0 and ((1 << (_la - 128)) & 959) != 0: + self.state = 1667 self.key_value() - self.state = 1668 + self.state = 1672 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 1669 + self.state = 1673 self.match(PBXProjParser.T__1) - self.state = 1670 - self.match(PBXProjParser.T__4) + self.state = 1674 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11381,6 +11632,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def CURRENT_VERSION(self): + return self.getToken(PBXProjParser.CURRENT_VERSION, 0) + def REFERENCE(self): return self.getToken(PBXProjParser.REFERENCE, 0) @@ -11404,14 +11658,14 @@ def current_version(self): self.enterRule(localctx, 336, self.RULE_current_version) try: self.enterOuterAlt(localctx, 1) - self.state = 1672 - self.match(PBXProjParser.T__121) - self.state = 1673 - self.match(PBXProjParser.T__3) - self.state = 1674 + self.state = 1676 + self.match(PBXProjParser.CURRENT_VERSION) + self.state = 1677 + self.match(PBXProjParser.T__2) + self.state = 1678 self.match(PBXProjParser.REFERENCE) - self.state = 1675 - self.match(PBXProjParser.T__4) + self.state = 1679 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11428,6 +11682,9 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser + def VERSION_GROUP_TYPE(self): + return self.getToken(PBXProjParser.VERSION_GROUP_TYPE, 0) + def NON_QUOTED_STRING(self): return self.getToken(PBXProjParser.NON_QUOTED_STRING, 0) @@ -11451,14 +11708,14 @@ def version_group_type(self): self.enterRule(localctx, 338, self.RULE_version_group_type) try: self.enterOuterAlt(localctx, 1) - self.state = 1677 - self.match(PBXProjParser.T__122) - self.state = 1678 - self.match(PBXProjParser.T__3) - self.state = 1679 + self.state = 1681 + self.match(PBXProjParser.VERSION_GROUP_TYPE) + self.state = 1682 + self.match(PBXProjParser.T__2) + self.state = 1683 self.match(PBXProjParser.NON_QUOTED_STRING) - self.state = 1680 - self.match(PBXProjParser.T__4) + self.state = 1684 + self.match(PBXProjParser.T__3) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11475,8 +11732,11 @@ def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): super().__init__(parent, invokingState) self.parser = parser - def any_string(self): - return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + def CLASSPREFIX(self): + return self.getToken(PBXProjParser.CLASSPREFIX, 0) + + def str_number_variable(self): + return self.getTypedRuleContext(PBXProjParser.Str_number_variableContext,0) def getRuleIndex(self): @@ -11499,14 +11759,14 @@ def class_prefix(self): self.enterRule(localctx, 340, self.RULE_class_prefix) try: self.enterOuterAlt(localctx, 1) - self.state = 1682 - self.match(PBXProjParser.T__123) - self.state = 1683 + self.state = 1686 + self.match(PBXProjParser.CLASSPREFIX) + self.state = 1687 + self.match(PBXProjParser.T__2) + self.state = 1688 + self.str_number_variable() + self.state = 1689 self.match(PBXProjParser.T__3) - self.state = 1684 - self.any_string() - self.state = 1685 - self.match(PBXProjParser.T__4) except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -11529,11 +11789,9 @@ def NON_QUOTED_STRING(self): def QUOTED_STRING(self): return self.getToken(PBXProjParser.QUOTED_STRING, 0) - def NUMBER(self): - return self.getToken(PBXProjParser.NUMBER, 0) + def any_token(self): + return self.getTypedRuleContext(PBXProjParser.Any_tokenContext,0) - def VARIABLE(self): - return self.getToken(PBXProjParser.VARIABLE, 0) def getRuleIndex(self): return PBXProjParser.RULE_any_string @@ -11553,12 +11811,491 @@ def any_string(self): localctx = PBXProjParser.Any_stringContext(self, self._ctx, self.state) self.enterRule(localctx, 342, self.RULE_any_string) + try: + self.state = 1694 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [136]: + self.enterOuterAlt(localctx, 1) + self.state = 1691 + self.match(PBXProjParser.NON_QUOTED_STRING) + pass + elif token in [135]: + self.enterOuterAlt(localctx, 2) + self.state = 1692 + self.match(PBXProjParser.QUOTED_STRING) + pass + elif token in [8, 9, 12, 14, 15, 16, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133]: + self.enterOuterAlt(localctx, 3) + self.state = 1693 + self.any_token() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Str_number_variableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def any_string(self): + return self.getTypedRuleContext(PBXProjParser.Any_stringContext,0) + + + def NUMBER(self): + return self.getToken(PBXProjParser.NUMBER, 0) + + def VARIABLE(self): + return self.getToken(PBXProjParser.VARIABLE, 0) + + def getRuleIndex(self): + return PBXProjParser.RULE_str_number_variable + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStr_number_variable" ): + listener.enterStr_number_variable(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStr_number_variable" ): + listener.exitStr_number_variable(self) + + + + + def str_number_variable(self): + + localctx = PBXProjParser.Str_number_variableContext(self, self._ctx, self.state) + self.enterRule(localctx, 344, self.RULE_str_number_variable) + try: + self.state = 1699 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [8, 9, 12, 14, 15, 16, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 135, 136]: + self.enterOuterAlt(localctx, 1) + self.state = 1696 + self.any_string() + pass + elif token in [13]: + self.enterOuterAlt(localctx, 2) + self.state = 1697 + self.match(PBXProjParser.NUMBER) + pass + elif token in [137]: + self.enterOuterAlt(localctx, 3) + self.state = 1698 + self.match(PBXProjParser.VARIABLE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Any_tokenContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def ARCHIVE_VERSION(self): + return self.getToken(PBXProjParser.ARCHIVE_VERSION, 0) + + def CLASSES(self): + return self.getToken(PBXProjParser.CLASSES, 0) + + def ISA(self): + return self.getToken(PBXProjParser.ISA, 0) + + def OBJECT_VERSION(self): + return self.getToken(PBXProjParser.OBJECT_VERSION, 0) + + def OBJECTS(self): + return self.getToken(PBXProjParser.OBJECTS, 0) + + def ROOT_OBJECT(self): + return self.getToken(PBXProjParser.ROOT_OBJECT, 0) + + def PBX_AGGREGATE_TARGET(self): + return self.getToken(PBXProjParser.PBX_AGGREGATE_TARGET, 0) + + def PBX_BUILD_FILE(self): + return self.getToken(PBXProjParser.PBX_BUILD_FILE, 0) + + def PBX_CONTAINER_ITEM_PROXY(self): + return self.getToken(PBXProjParser.PBX_CONTAINER_ITEM_PROXY, 0) + + def PBX_COPY_FILES_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_COPY_FILES_BUILD_PHASE, 0) + + def PBX_FILE_REFERENCE(self): + return self.getToken(PBXProjParser.PBX_FILE_REFERENCE, 0) + + def PBX_FRAMEWORKS_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_FRAMEWORKS_BUILD_PHASE, 0) + + def PBX_NATIVE_TARGET(self): + return self.getToken(PBXProjParser.PBX_NATIVE_TARGET, 0) + + def PBX_LEGACY_TARGET(self): + return self.getToken(PBXProjParser.PBX_LEGACY_TARGET, 0) + + def PBX_PROJECT(self): + return self.getToken(PBXProjParser.PBX_PROJECT, 0) + + def PBX_REFERENCE_PROXY(self): + return self.getToken(PBXProjParser.PBX_REFERENCE_PROXY, 0) + + def PBX_RESOURCES_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_RESOURCES_BUILD_PHASE, 0) + + def PBX_SHELL_SCRIPT_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_SHELL_SCRIPT_BUILD_PHASE, 0) + + def PBX_SOURCES_BUILD_PHASE(self): + return self.getToken(PBXProjParser.PBX_SOURCES_BUILD_PHASE, 0) + + def PBX_TARGET_DEPENDENCY(self): + return self.getToken(PBXProjParser.PBX_TARGET_DEPENDENCY, 0) + + def PBX_VARIANT_GROUP(self): + return self.getToken(PBXProjParser.PBX_VARIANT_GROUP, 0) + + def XC_BUILD_CONFIGURATION(self): + return self.getToken(PBXProjParser.XC_BUILD_CONFIGURATION, 0) + + def XC_CONFIGURATION_LIST(self): + return self.getToken(PBXProjParser.XC_CONFIGURATION_LIST, 0) + + def XC_REMOTE_SWIFT_PACKAGE_REFERENCE(self): + return self.getToken(PBXProjParser.XC_REMOTE_SWIFT_PACKAGE_REFERENCE, 0) + + def XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY(self): + return self.getToken(PBXProjParser.XC_SWIFT_PACKAGE_PRODUCT_DEPENDENCY, 0) + + def XC_VERSION_GROUP(self): + return self.getToken(PBXProjParser.XC_VERSION_GROUP, 0) + + def FILE_REF(self): + return self.getToken(PBXProjParser.FILE_REF, 0) + + def PRODUCT_REF(self): + return self.getToken(PBXProjParser.PRODUCT_REF, 0) + + def CONTAINER_PORTAL(self): + return self.getToken(PBXProjParser.CONTAINER_PORTAL, 0) + + def PROXY_TYPE(self): + return self.getToken(PBXProjParser.PROXY_TYPE, 0) + + def REMOTE_GLOBAL_ID_STRING(self): + return self.getToken(PBXProjParser.REMOTE_GLOBAL_ID_STRING, 0) + + def REMOTE_INFO(self): + return self.getToken(PBXProjParser.REMOTE_INFO, 0) + + def FILE_ENCODING(self): + return self.getToken(PBXProjParser.FILE_ENCODING, 0) + + def COMMENTS(self): + return self.getToken(PBXProjParser.COMMENTS, 0) + + def EXPLICIT_FILE_TYPE(self): + return self.getToken(PBXProjParser.EXPLICIT_FILE_TYPE, 0) + + def LAST_KNOWN_FILE_TYPE(self): + return self.getToken(PBXProjParser.LAST_KNOWN_FILE_TYPE, 0) + + def INCLUDE_IN_INDEX(self): + return self.getToken(PBXProjParser.INCLUDE_IN_INDEX, 0) + + def INDENT_WIDTH(self): + return self.getToken(PBXProjParser.INDENT_WIDTH, 0) + + def TAB_WIDTH(self): + return self.getToken(PBXProjParser.TAB_WIDTH, 0) + + def USES_TABS(self): + return self.getToken(PBXProjParser.USES_TABS, 0) + + def WRAPS_LINES(self): + return self.getToken(PBXProjParser.WRAPS_LINES, 0) + + def PLATFORM_FILTER(self): + return self.getToken(PBXProjParser.PLATFORM_FILTER, 0) + + def PLATFORM_FILTERS(self): + return self.getToken(PBXProjParser.PLATFORM_FILTERS, 0) + + def CHILDREN(self): + return self.getToken(PBXProjParser.CHILDREN, 0) + + def PRODUCT_INSTALL_PATH(self): + return self.getToken(PBXProjParser.PRODUCT_INSTALL_PATH, 0) + + def REPOSITORY_URL(self): + return self.getToken(PBXProjParser.REPOSITORY_URL, 0) + + def REQUIREMENT(self): + return self.getToken(PBXProjParser.REQUIREMENT, 0) + + def PACKAGE(self): + return self.getToken(PBXProjParser.PACKAGE, 0) + + def PACKAGE_PRODUCT_DEPENDENCIES(self): + return self.getToken(PBXProjParser.PACKAGE_PRODUCT_DEPENDENCIES, 0) + + def NAME(self): + return self.getToken(PBXProjParser.NAME, 0) + + def PATH(self): + return self.getToken(PBXProjParser.PATH, 0) + + def SOURCE_TREE(self): + return self.getToken(PBXProjParser.SOURCE_TREE, 0) + + def BUILD_ACTION_MASK(self): + return self.getToken(PBXProjParser.BUILD_ACTION_MASK, 0) + + def FILES(self): + return self.getToken(PBXProjParser.FILES, 0) + + def RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING(self): + return self.getToken(PBXProjParser.RUN_ONLY_FOR_DEPLOYMENT_POSTPROCESSING, 0) + + def BUILD_CONFIGURATION_LIST(self): + return self.getToken(PBXProjParser.BUILD_CONFIGURATION_LIST, 0) + + def BUILD_PHASES(self): + return self.getToken(PBXProjParser.BUILD_PHASES, 0) + + def BUILD_RULES(self): + return self.getToken(PBXProjParser.BUILD_RULES, 0) + + def BUILD_ARGUMENTS_STRING(self): + return self.getToken(PBXProjParser.BUILD_ARGUMENTS_STRING, 0) + + def BUILD_TOOL_PATH(self): + return self.getToken(PBXProjParser.BUILD_TOOL_PATH, 0) + + def BUILD_WORKING_DIRECTORY(self): + return self.getToken(PBXProjParser.BUILD_WORKING_DIRECTORY, 0) + + def PASS_BUILD_SETTINGS_IN_ENVIRONMENT(self): + return self.getToken(PBXProjParser.PASS_BUILD_SETTINGS_IN_ENVIRONMENT, 0) + + def DEPENDENCIES(self): + return self.getToken(PBXProjParser.DEPENDENCIES, 0) + + def PRODUCT_NAME(self): + return self.getToken(PBXProjParser.PRODUCT_NAME, 0) + + def PRODUCT_REFERENCE(self): + return self.getToken(PBXProjParser.PRODUCT_REFERENCE, 0) + + def PRODUCT_TYPE(self): + return self.getToken(PBXProjParser.PRODUCT_TYPE, 0) + + def LINE_ENDING(self): + return self.getToken(PBXProjParser.LINE_ENDING, 0) + + def XC_LANGUAGE_SPECIFICATION_IDENTIFIER(self): + return self.getToken(PBXProjParser.XC_LANGUAGE_SPECIFICATION_IDENTIFIER, 0) + + def PLIST_STRUCTURE_DEFINITION_IDENTIFIER(self): + return self.getToken(PBXProjParser.PLIST_STRUCTURE_DEFINITION_IDENTIFIER, 0) + + def ATTRIBUTES(self): + return self.getToken(PBXProjParser.ATTRIBUTES, 0) + + def LAST_SWIFT_MIGRATION(self): + return self.getToken(PBXProjParser.LAST_SWIFT_MIGRATION, 0) + + def DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE(self): + return self.getToken(PBXProjParser.DEFAULT_BUILD_SYSTEM_TYPE_FOR_WORKSPACE, 0) + + def LAST_SWIFT_UPDATE_CHECK(self): + return self.getToken(PBXProjParser.LAST_SWIFT_UPDATE_CHECK, 0) + + def BUILD_INDEPENDENT_TARGETS_IN_PARALLEL(self): + return self.getToken(PBXProjParser.BUILD_INDEPENDENT_TARGETS_IN_PARALLEL, 0) + + def LAST_TESTING_UPGRADE_CHECK(self): + return self.getToken(PBXProjParser.LAST_TESTING_UPGRADE_CHECK, 0) + + def LAST_UPGRADE_CHECK(self): + return self.getToken(PBXProjParser.LAST_UPGRADE_CHECK, 0) + + def ORGANIZATION_NAME(self): + return self.getToken(PBXProjParser.ORGANIZATION_NAME, 0) + + def TARGET_ATTRIBUTES(self): + return self.getToken(PBXProjParser.TARGET_ATTRIBUTES, 0) + + def CREATED_ON_TOOLS_VERSION(self): + return self.getToken(PBXProjParser.CREATED_ON_TOOLS_VERSION, 0) + + def TEST_TARGET_ID(self): + return self.getToken(PBXProjParser.TEST_TARGET_ID, 0) + + def DEVELOPMENT_TEAM(self): + return self.getToken(PBXProjParser.DEVELOPMENT_TEAM, 0) + + def DEVELOPMENT_TEAM_NAME(self): + return self.getToken(PBXProjParser.DEVELOPMENT_TEAM_NAME, 0) + + def PROVISIONING_STYLE(self): + return self.getToken(PBXProjParser.PROVISIONING_STYLE, 0) + + def COMPATIBILITY_VERSION(self): + return self.getToken(PBXProjParser.COMPATIBILITY_VERSION, 0) + + def DEVELOPMENT_REGION(self): + return self.getToken(PBXProjParser.DEVELOPMENT_REGION, 0) + + def HAS_SCANNED_FOR_ENCODINGS(self): + return self.getToken(PBXProjParser.HAS_SCANNED_FOR_ENCODINGS, 0) + + def KNOWN_REGIONS(self): + return self.getToken(PBXProjParser.KNOWN_REGIONS, 0) + + def MAIN_GROUP(self): + return self.getToken(PBXProjParser.MAIN_GROUP, 0) + + def PRODUCT_REF_GROUP(self): + return self.getToken(PBXProjParser.PRODUCT_REF_GROUP, 0) + + def PACKAGE_REFERENCES(self): + return self.getToken(PBXProjParser.PACKAGE_REFERENCES, 0) + + def PRODUCT_DIR_PATH(self): + return self.getToken(PBXProjParser.PRODUCT_DIR_PATH, 0) + + def PROJECT_REFERENCES(self): + return self.getToken(PBXProjParser.PROJECT_REFERENCES, 0) + + def PROJECT_ROOT(self): + return self.getToken(PBXProjParser.PROJECT_ROOT, 0) + + def TARGETS(self): + return self.getToken(PBXProjParser.TARGETS, 0) + + def INPUT_FILE_LIST_PATHS(self): + return self.getToken(PBXProjParser.INPUT_FILE_LIST_PATHS, 0) + + def INPUT_PATHS(self): + return self.getToken(PBXProjParser.INPUT_PATHS, 0) + + def OUTPUT_FILE_LIST_PATHS(self): + return self.getToken(PBXProjParser.OUTPUT_FILE_LIST_PATHS, 0) + + def OUTPUT_PATHS(self): + return self.getToken(PBXProjParser.OUTPUT_PATHS, 0) + + def SHELL_PATH(self): + return self.getToken(PBXProjParser.SHELL_PATH, 0) + + def SHELL_SCRIPT(self): + return self.getToken(PBXProjParser.SHELL_SCRIPT, 0) + + def SHOW_ENV_VARS_IN_LOG(self): + return self.getToken(PBXProjParser.SHOW_ENV_VARS_IN_LOG, 0) + + def TARGET(self): + return self.getToken(PBXProjParser.TARGET, 0) + + def TARGET_PROXY(self): + return self.getToken(PBXProjParser.TARGET_PROXY, 0) + + def FILE_TYPE(self): + return self.getToken(PBXProjParser.FILE_TYPE, 0) + + def REMOTE_REF(self): + return self.getToken(PBXProjParser.REMOTE_REF, 0) + + def BASE_CONFIGURATION_REFERENCE(self): + return self.getToken(PBXProjParser.BASE_CONFIGURATION_REFERENCE, 0) + + def BUILD_SETTINGS(self): + return self.getToken(PBXProjParser.BUILD_SETTINGS, 0) + + def DST_PATH(self): + return self.getToken(PBXProjParser.DST_PATH, 0) + + def DST_SUBFOLDER_SPEC(self): + return self.getToken(PBXProjParser.DST_SUBFOLDER_SPEC, 0) + + def PRODUCT_GROUP(self): + return self.getToken(PBXProjParser.PRODUCT_GROUP, 0) + + def PROJECT_REF(self): + return self.getToken(PBXProjParser.PROJECT_REF, 0) + + def BUILD_CONFIGURATIONS(self): + return self.getToken(PBXProjParser.BUILD_CONFIGURATIONS, 0) + + def DEFAULT_CONFIGURATION_IS_VISIBLE(self): + return self.getToken(PBXProjParser.DEFAULT_CONFIGURATION_IS_VISIBLE, 0) + + def DEFAULT_CONFIGURATION_NAME(self): + return self.getToken(PBXProjParser.DEFAULT_CONFIGURATION_NAME, 0) + + def SETTINGS(self): + return self.getToken(PBXProjParser.SETTINGS, 0) + + def SYSTEM_CAPABILITIES(self): + return self.getToken(PBXProjParser.SYSTEM_CAPABILITIES, 0) + + def CURRENT_VERSION(self): + return self.getToken(PBXProjParser.CURRENT_VERSION, 0) + + def VERSION_GROUP_TYPE(self): + return self.getToken(PBXProjParser.VERSION_GROUP_TYPE, 0) + + def CLASSPREFIX(self): + return self.getToken(PBXProjParser.CLASSPREFIX, 0) + + def getRuleIndex(self): + return PBXProjParser.RULE_any_token + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAny_token" ): + listener.enterAny_token(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAny_token" ): + listener.exitAny_token(self) + + + + + def any_token(self): + + localctx = PBXProjParser.Any_tokenContext(self, self._ctx, self.state) + self.enterRule(localctx, 346, self.RULE_any_token) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 1687 + self.state = 1701 _la = self._input.LA(1) - if not((((_la - 129)) & ~0x3f) == 0 and ((1 << (_la - 129)) & 449) != 0): + if not((((_la - 8)) & ~0x3f) == 0 and ((1 << (_la - 8)) & -394797) != 0 or (((_la - 72)) & ~0x3f) == 0 and ((1 << (_la - 72)) & 4611686018427387903) != 0): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self)