diff --git a/parser/ast/misc.go b/parser/ast/misc.go index 1ebbea0133..fc511575ad 100644 --- a/parser/ast/misc.go +++ b/parser/ast/misc.go @@ -3566,7 +3566,7 @@ func (n *TableOptimizerHint) Restore(ctx *format.RestoreCtx) error { ctx.WritePlainf("%d", n.HintData.(uint64)) case "nth_plan": ctx.WritePlainf("%d", n.HintData.(int64)) - case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "ordered_hash_join", "merge_join", "inl_join", "broadcast_join", "inl_hash_join", "inl_merge_join", "leading": + case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "hash_build", "hash_probe", "merge_join", "inl_join", "broadcast_join", "inl_hash_join", "inl_merge_join", "leading": for i, table := range n.Tables { if i != 0 { ctx.WritePlain(", ") diff --git a/parser/ast/misc_test.go b/parser/ast/misc_test.go index 2356fdb3be..4df5e75b5f 100644 --- a/parser/ast/misc_test.go +++ b/parser/ast/misc_test.go @@ -241,7 +241,8 @@ func TestTableOptimizerHintRestore(t *testing.T) { {"INL_MERGE_JOIN(t1,t2)", "INL_MERGE_JOIN(`t1`, `t2`)"}, {"INL_JOIN(t1,t2)", "INL_JOIN(`t1`, `t2`)"}, {"HASH_JOIN(t1,t2)", "HASH_JOIN(`t1`, `t2`)"}, - {"ORDERED_HASH_JOIN(t1,t2)", "ORDERED_HASH_JOIN(`t1`, `t2`)"}, + {"HASH_BUILD(t1)", "HASH_BUILD(`t1`)"}, + {"HASH_PROBE(t1)", "HASH_PROBE(`t1`)"}, {"LEADING(t1)", "LEADING(`t1`)"}, {"LEADING(t1, c1)", "LEADING(`t1`, `c1`)"}, {"LEADING(t1, c1, t2)", "LEADING(`t1`, `c1`, `t2`)"}, diff --git a/parser/hintparser.go b/parser/hintparser.go index 548860fbec..ef18ecb5e0 100644 --- a/parser/hintparser.go +++ b/parser/hintparser.go @@ -41,205 +41,207 @@ type yyhintXError struct { } const ( - yyhintDefault = 57419 + yyhintDefault = 57420 yyhintEOFCode = 57344 yyhintErrCode = 57345 - hintAggToCop = 57378 - hintBCJoin = 57391 + hintAggToCop = 57379 + hintBCJoin = 57392 hintBKA = 57355 hintBNL = 57357 - hintDupsWeedOut = 57415 - hintFalse = 57411 - hintFirstMatch = 57416 - hintForceIndex = 57402 - hintGB = 57414 - hintHashAgg = 57380 + hintDupsWeedOut = 57416 + hintFalse = 57412 + hintFirstMatch = 57417 + hintForceIndex = 57403 + hintGB = 57415 + hintHashAgg = 57381 + hintHashBuild = 57360 hintHashJoin = 57359 + hintHashProbe = 57361 hintIdentifier = 57347 - hintIgnoreIndex = 57381 - hintIgnorePlanCache = 57379 - hintIndexMerge = 57364 - hintInlHashJoin = 57382 - hintInlJoin = 57383 - hintInlMergeJoin = 57384 + hintIgnoreIndex = 57382 + hintIgnorePlanCache = 57380 + hintIndexMerge = 57365 + hintInlHashJoin = 57383 + hintInlJoin = 57384 + hintInlMergeJoin = 57385 hintIntLit = 57346 hintInvalid = 57348 hintJoinFixedOrder = 57351 hintJoinOrder = 57352 hintJoinPrefix = 57353 hintJoinSuffix = 57354 - hintLeading = 57404 - hintLimitToCop = 57401 - hintLooseScan = 57417 - hintMB = 57413 - hintMRR = 57366 - hintMaterialization = 57418 - hintMaxExecutionTime = 57374 - hintMemoryQuota = 57385 - hintMerge = 57362 + hintLeading = 57405 + hintLimitToCop = 57402 + hintLooseScan = 57418 + hintMB = 57414 + hintMRR = 57367 + hintMaterialization = 57419 + hintMaxExecutionTime = 57375 + hintMemoryQuota = 57386 + hintMerge = 57363 hintNoBKA = 57356 hintNoBNL = 57358 - hintNoHashJoin = 57361 - hintNoICP = 57368 - hintNoIndexMerge = 57365 - hintNoMRR = 57367 - hintNoMerge = 57363 - hintNoRangeOptimization = 57369 - hintNoSemijoin = 57373 - hintNoSkipScan = 57371 - hintNoSwapJoinInputs = 57386 - hintNthPlan = 57400 - hintOLAP = 57406 - hintOLTP = 57407 - hintOrderedHashJoin = 57360 - hintPartition = 57408 - hintQBName = 57377 - hintQueryType = 57387 - hintReadConsistentReplica = 57388 - hintReadFromStorage = 57389 - hintResourceGroup = 57376 - hintSMJoin = 57390 - hintSemiJoinRewrite = 57405 - hintSemijoin = 57372 - hintSetVar = 57375 + hintNoHashJoin = 57362 + hintNoICP = 57369 + hintNoIndexMerge = 57366 + hintNoMRR = 57368 + hintNoMerge = 57364 + hintNoRangeOptimization = 57370 + hintNoSemijoin = 57374 + hintNoSkipScan = 57372 + hintNoSwapJoinInputs = 57387 + hintNthPlan = 57401 + hintOLAP = 57407 + hintOLTP = 57408 + hintPartition = 57409 + hintQBName = 57378 + hintQueryType = 57388 + hintReadConsistentReplica = 57389 + hintReadFromStorage = 57390 + hintResourceGroup = 57377 + hintSMJoin = 57391 + hintSemiJoinRewrite = 57406 + hintSemijoin = 57373 + hintSetVar = 57376 hintSingleAtIdentifier = 57349 - hintSkipScan = 57370 - hintStraightJoin = 57403 - hintStreamAgg = 57392 + hintSkipScan = 57371 + hintStraightJoin = 57404 + hintStreamAgg = 57393 hintStringLit = 57350 - hintSwapJoinInputs = 57393 - hintTiFlash = 57410 - hintTiKV = 57409 - hintTimeRange = 57398 - hintTrue = 57412 - hintUseCascades = 57399 - hintUseIndex = 57395 - hintUseIndexMerge = 57394 - hintUsePlanCache = 57396 - hintUseToja = 57397 + hintSwapJoinInputs = 57394 + hintTiFlash = 57411 + hintTiKV = 57410 + hintTimeRange = 57399 + hintTrue = 57413 + hintUseCascades = 57400 + hintUseIndex = 57396 + hintUseIndexMerge = 57395 + hintUsePlanCache = 57397 + hintUseToja = 57398 yyhintMaxDepth = 200 - yyhintTabOfs = -178 + yyhintTabOfs = -180 ) var ( yyhintXLAT = map[int]int{ - 41: 0, // ')' (133x) - 57378: 1, // hintAggToCop (125x) - 57391: 2, // hintBCJoin (125x) - 57355: 3, // hintBKA (125x) - 57357: 4, // hintBNL (125x) - 57402: 5, // hintForceIndex (125x) - 57380: 6, // hintHashAgg (125x) - 57359: 7, // hintHashJoin (125x) - 57381: 8, // hintIgnoreIndex (125x) - 57379: 9, // hintIgnorePlanCache (125x) - 57364: 10, // hintIndexMerge (125x) - 57382: 11, // hintInlHashJoin (125x) - 57383: 12, // hintInlJoin (125x) - 57384: 13, // hintInlMergeJoin (125x) - 57351: 14, // hintJoinFixedOrder (125x) - 57352: 15, // hintJoinOrder (125x) - 57353: 16, // hintJoinPrefix (125x) - 57354: 17, // hintJoinSuffix (125x) - 57404: 18, // hintLeading (125x) - 57401: 19, // hintLimitToCop (125x) - 57374: 20, // hintMaxExecutionTime (125x) - 57385: 21, // hintMemoryQuota (125x) - 57362: 22, // hintMerge (125x) - 57366: 23, // hintMRR (125x) - 57356: 24, // hintNoBKA (125x) - 57358: 25, // hintNoBNL (125x) - 57361: 26, // hintNoHashJoin (125x) - 57368: 27, // hintNoICP (125x) - 57365: 28, // hintNoIndexMerge (125x) - 57363: 29, // hintNoMerge (125x) - 57367: 30, // hintNoMRR (125x) - 57369: 31, // hintNoRangeOptimization (125x) - 57373: 32, // hintNoSemijoin (125x) - 57371: 33, // hintNoSkipScan (125x) - 57386: 34, // hintNoSwapJoinInputs (125x) - 57400: 35, // hintNthPlan (125x) - 57360: 36, // hintOrderedHashJoin (125x) - 57377: 37, // hintQBName (125x) - 57387: 38, // hintQueryType (125x) - 57388: 39, // hintReadConsistentReplica (125x) - 57389: 40, // hintReadFromStorage (125x) - 57376: 41, // hintResourceGroup (125x) - 57372: 42, // hintSemijoin (125x) - 57405: 43, // hintSemiJoinRewrite (125x) - 57375: 44, // hintSetVar (125x) - 57370: 45, // hintSkipScan (125x) - 57390: 46, // hintSMJoin (125x) - 57403: 47, // hintStraightJoin (125x) - 57392: 48, // hintStreamAgg (125x) - 57393: 49, // hintSwapJoinInputs (125x) - 57398: 50, // hintTimeRange (125x) - 57399: 51, // hintUseCascades (125x) - 57395: 52, // hintUseIndex (125x) - 57394: 53, // hintUseIndexMerge (125x) - 57396: 54, // hintUsePlanCache (125x) - 57397: 55, // hintUseToja (125x) - 44: 56, // ',' (123x) - 57415: 57, // hintDupsWeedOut (103x) - 57416: 58, // hintFirstMatch (103x) - 57417: 59, // hintLooseScan (103x) - 57418: 60, // hintMaterialization (103x) - 57410: 61, // hintTiFlash (103x) - 57409: 62, // hintTiKV (103x) - 57411: 63, // hintFalse (102x) - 57406: 64, // hintOLAP (102x) - 57407: 65, // hintOLTP (102x) - 57412: 66, // hintTrue (102x) - 57414: 67, // hintGB (101x) - 57413: 68, // hintMB (101x) - 57347: 69, // hintIdentifier (100x) - 57349: 70, // hintSingleAtIdentifier (85x) - 93: 71, // ']' (79x) - 57408: 72, // hintPartition (73x) - 46: 73, // '.' (69x) - 61: 74, // '=' (69x) - 40: 75, // '(' (64x) - 57344: 76, // $end (24x) - 57439: 77, // QueryBlockOpt (17x) - 57431: 78, // Identifier (13x) - 57346: 79, // hintIntLit (8x) - 57350: 80, // hintStringLit (5x) - 57421: 81, // CommaOpt (4x) - 57427: 82, // HintTable (4x) - 57428: 83, // HintTableList (4x) - 91: 84, // '[' (3x) - 57420: 85, // BooleanHintName (2x) - 57422: 86, // HintIndexList (2x) - 57424: 87, // HintStorageType (2x) - 57425: 88, // HintStorageTypeAndTable (2x) - 57429: 89, // HintTableListOpt (2x) - 57434: 90, // JoinOrderOptimizerHintName (2x) - 57435: 91, // NullaryHintName (2x) - 57438: 92, // PartitionListOpt (2x) - 57441: 93, // StorageOptimizerHintOpt (2x) - 57442: 94, // SubqueryOptimizerHintName (2x) - 57445: 95, // SubqueryStrategy (2x) - 57446: 96, // SupportedIndexLevelOptimizerHintName (2x) - 57447: 97, // SupportedTableLevelOptimizerHintName (2x) - 57448: 98, // TableOptimizerHintOpt (2x) - 57450: 99, // UnsupportedIndexLevelOptimizerHintName (2x) - 57451: 100, // UnsupportedTableLevelOptimizerHintName (2x) - 57423: 101, // HintQueryType (1x) - 57426: 102, // HintStorageTypeAndTableList (1x) - 57430: 103, // HintTrueOrFalse (1x) - 57432: 104, // IndexNameList (1x) - 57433: 105, // IndexNameListOpt (1x) - 57436: 106, // OptimizerHintList (1x) - 57437: 107, // PartitionList (1x) - 57440: 108, // Start (1x) - 57443: 109, // SubqueryStrategies (1x) - 57444: 110, // SubqueryStrategiesOpt (1x) - 57449: 111, // UnitOfBytes (1x) - 57452: 112, // Value (1x) - 57419: 113, // $default (0x) - 57345: 114, // error (0x) - 57348: 115, // hintInvalid (0x) + 41: 0, // ')' (134x) + 57379: 1, // hintAggToCop (126x) + 57392: 2, // hintBCJoin (126x) + 57355: 3, // hintBKA (126x) + 57357: 4, // hintBNL (126x) + 57403: 5, // hintForceIndex (126x) + 57381: 6, // hintHashAgg (126x) + 57360: 7, // hintHashBuild (126x) + 57359: 8, // hintHashJoin (126x) + 57361: 9, // hintHashProbe (126x) + 57382: 10, // hintIgnoreIndex (126x) + 57380: 11, // hintIgnorePlanCache (126x) + 57365: 12, // hintIndexMerge (126x) + 57383: 13, // hintInlHashJoin (126x) + 57384: 14, // hintInlJoin (126x) + 57385: 15, // hintInlMergeJoin (126x) + 57351: 16, // hintJoinFixedOrder (126x) + 57352: 17, // hintJoinOrder (126x) + 57353: 18, // hintJoinPrefix (126x) + 57354: 19, // hintJoinSuffix (126x) + 57405: 20, // hintLeading (126x) + 57402: 21, // hintLimitToCop (126x) + 57375: 22, // hintMaxExecutionTime (126x) + 57386: 23, // hintMemoryQuota (126x) + 57363: 24, // hintMerge (126x) + 57367: 25, // hintMRR (126x) + 57356: 26, // hintNoBKA (126x) + 57358: 27, // hintNoBNL (126x) + 57362: 28, // hintNoHashJoin (126x) + 57369: 29, // hintNoICP (126x) + 57366: 30, // hintNoIndexMerge (126x) + 57364: 31, // hintNoMerge (126x) + 57368: 32, // hintNoMRR (126x) + 57370: 33, // hintNoRangeOptimization (126x) + 57374: 34, // hintNoSemijoin (126x) + 57372: 35, // hintNoSkipScan (126x) + 57387: 36, // hintNoSwapJoinInputs (126x) + 57401: 37, // hintNthPlan (126x) + 57378: 38, // hintQBName (126x) + 57388: 39, // hintQueryType (126x) + 57389: 40, // hintReadConsistentReplica (126x) + 57390: 41, // hintReadFromStorage (126x) + 57377: 42, // hintResourceGroup (126x) + 57373: 43, // hintSemijoin (126x) + 57406: 44, // hintSemiJoinRewrite (126x) + 57376: 45, // hintSetVar (126x) + 57371: 46, // hintSkipScan (126x) + 57391: 47, // hintSMJoin (126x) + 57404: 48, // hintStraightJoin (126x) + 57393: 49, // hintStreamAgg (126x) + 57394: 50, // hintSwapJoinInputs (126x) + 57399: 51, // hintTimeRange (126x) + 57400: 52, // hintUseCascades (126x) + 57396: 53, // hintUseIndex (126x) + 57395: 54, // hintUseIndexMerge (126x) + 57397: 55, // hintUsePlanCache (126x) + 57398: 56, // hintUseToja (126x) + 44: 57, // ',' (124x) + 57416: 58, // hintDupsWeedOut (104x) + 57417: 59, // hintFirstMatch (104x) + 57418: 60, // hintLooseScan (104x) + 57419: 61, // hintMaterialization (104x) + 57411: 62, // hintTiFlash (104x) + 57410: 63, // hintTiKV (104x) + 57412: 64, // hintFalse (103x) + 57407: 65, // hintOLAP (103x) + 57408: 66, // hintOLTP (103x) + 57413: 67, // hintTrue (103x) + 57415: 68, // hintGB (102x) + 57414: 69, // hintMB (102x) + 57347: 70, // hintIdentifier (101x) + 57349: 71, // hintSingleAtIdentifier (86x) + 93: 72, // ']' (80x) + 57409: 73, // hintPartition (74x) + 46: 74, // '.' (70x) + 61: 75, // '=' (70x) + 40: 76, // '(' (65x) + 57344: 77, // $end (24x) + 57440: 78, // QueryBlockOpt (17x) + 57432: 79, // Identifier (13x) + 57346: 80, // hintIntLit (8x) + 57350: 81, // hintStringLit (5x) + 57422: 82, // CommaOpt (4x) + 57428: 83, // HintTable (4x) + 57429: 84, // HintTableList (4x) + 91: 85, // '[' (3x) + 57421: 86, // BooleanHintName (2x) + 57423: 87, // HintIndexList (2x) + 57425: 88, // HintStorageType (2x) + 57426: 89, // HintStorageTypeAndTable (2x) + 57430: 90, // HintTableListOpt (2x) + 57435: 91, // JoinOrderOptimizerHintName (2x) + 57436: 92, // NullaryHintName (2x) + 57439: 93, // PartitionListOpt (2x) + 57442: 94, // StorageOptimizerHintOpt (2x) + 57443: 95, // SubqueryOptimizerHintName (2x) + 57446: 96, // SubqueryStrategy (2x) + 57447: 97, // SupportedIndexLevelOptimizerHintName (2x) + 57448: 98, // SupportedTableLevelOptimizerHintName (2x) + 57449: 99, // TableOptimizerHintOpt (2x) + 57451: 100, // UnsupportedIndexLevelOptimizerHintName (2x) + 57452: 101, // UnsupportedTableLevelOptimizerHintName (2x) + 57424: 102, // HintQueryType (1x) + 57427: 103, // HintStorageTypeAndTableList (1x) + 57431: 104, // HintTrueOrFalse (1x) + 57433: 105, // IndexNameList (1x) + 57434: 106, // IndexNameListOpt (1x) + 57437: 107, // OptimizerHintList (1x) + 57438: 108, // PartitionList (1x) + 57441: 109, // Start (1x) + 57444: 110, // SubqueryStrategies (1x) + 57445: 111, // SubqueryStrategiesOpt (1x) + 57450: 112, // UnitOfBytes (1x) + 57453: 113, // Value (1x) + 57420: 114, // $default (0x) + 57345: 115, // error (0x) + 57348: 116, // hintInvalid (0x) } yyhintSymNames = []string{ @@ -250,7 +252,9 @@ var ( "hintBNL", "hintForceIndex", "hintHashAgg", + "hintHashBuild", "hintHashJoin", + "hintHashProbe", "hintIgnoreIndex", "hintIgnorePlanCache", "hintIndexMerge", @@ -279,7 +283,6 @@ var ( "hintNoSkipScan", "hintNoSwapJoinInputs", "hintNthPlan", - "hintOrderedHashJoin", "hintQBName", "hintQueryType", "hintReadConsistentReplica", @@ -363,502 +366,506 @@ var ( yyhintReductions = []struct{ xsym, components int }{ {0, 1}, - {108, 1}, - {106, 1}, - {106, 3}, - {106, 1}, - {106, 3}, - {98, 4}, - {98, 4}, - {98, 4}, - {98, 4}, - {98, 4}, - {98, 4}, - {98, 5}, - {98, 5}, - {98, 5}, - {98, 6}, - {98, 4}, - {98, 4}, - {98, 6}, - {98, 6}, - {98, 5}, - {98, 4}, - {98, 5}, - {93, 5}, - {102, 1}, - {102, 3}, - {88, 4}, - {77, 0}, - {77, 1}, - {81, 0}, - {81, 1}, - {92, 0}, - {92, 4}, + {109, 1}, {107, 1}, {107, 3}, - {89, 1}, - {89, 1}, - {83, 2}, + {107, 1}, + {107, 3}, + {99, 4}, + {99, 4}, + {99, 4}, + {99, 4}, + {99, 4}, + {99, 4}, + {99, 5}, + {99, 5}, + {99, 5}, + {99, 6}, + {99, 4}, + {99, 4}, + {99, 6}, + {99, 6}, + {99, 5}, + {99, 4}, + {99, 5}, + {94, 5}, + {103, 1}, + {103, 3}, + {89, 4}, + {78, 0}, + {78, 1}, + {82, 0}, + {82, 1}, + {93, 0}, + {93, 4}, + {108, 1}, + {108, 3}, + {90, 1}, + {90, 1}, + {84, 2}, + {84, 3}, {83, 3}, - {82, 3}, - {82, 5}, - {86, 4}, - {105, 0}, + {83, 5}, + {87, 4}, + {106, 0}, + {106, 1}, {105, 1}, - {104, 1}, - {104, 3}, - {110, 0}, + {105, 3}, + {111, 0}, + {111, 1}, {110, 1}, - {109, 1}, - {109, 3}, + {110, 3}, + {113, 1}, + {113, 1}, + {113, 1}, {112, 1}, {112, 1}, - {112, 1}, - {111, 1}, - {111, 1}, - {103, 1}, - {103, 1}, - {90, 1}, - {90, 1}, - {90, 1}, - {100, 1}, - {100, 1}, - {100, 1}, - {100, 1}, - {100, 1}, - {100, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {97, 1}, - {99, 1}, - {99, 1}, - {99, 1}, - {99, 1}, - {99, 1}, - {99, 1}, - {99, 1}, - {96, 1}, - {96, 1}, - {96, 1}, - {96, 1}, - {94, 1}, - {94, 1}, - {95, 1}, - {95, 1}, - {95, 1}, - {95, 1}, - {85, 1}, - {85, 1}, - {91, 1}, - {91, 1}, - {91, 1}, - {91, 1}, - {91, 1}, - {91, 1}, - {91, 1}, + {104, 1}, + {104, 1}, {91, 1}, {91, 1}, {91, 1}, {101, 1}, {101, 1}, - {87, 1}, - {87, 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}, - {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}, + {101, 1}, + {101, 1}, + {101, 1}, + {101, 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}, + {100, 1}, + {100, 1}, + {100, 1}, + {100, 1}, + {100, 1}, + {100, 1}, + {100, 1}, + {97, 1}, + {97, 1}, + {97, 1}, + {97, 1}, + {95, 1}, + {95, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {96, 1}, + {86, 1}, + {86, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {92, 1}, + {102, 1}, + {102, 1}, + {88, 1}, + {88, 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}, + {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}, + {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}, } yyhintXErrors = map[yyhintXError]string{} - yyhintParseTab = [261][]uint16{ + yyhintParseTab = [263][]uint16{ // 0 - {1: 239, 211, 204, 206, 231, 237, 218, 229, 243, 221, 214, 212, 217, 183, 201, 202, 203, 220, 240, 190, 195, 213, 222, 205, 207, 208, 224, 241, 209, 223, 225, 233, 227, 216, 191, 219, 194, 199, 242, 200, 193, 232, 245, 192, 226, 210, 244, 238, 215, 196, 235, 228, 230, 236, 234, 85: 197, 90: 184, 198, 93: 182, 189, 96: 188, 186, 181, 187, 185, 106: 180, 108: 179}, - {76: 178}, - {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 336, 76: 177, 81: 436}, - {1: 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 76: 176}, - {1: 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 76: 174}, + {1: 242, 213, 206, 208, 234, 240, 221, 220, 222, 232, 246, 224, 216, 214, 219, 185, 203, 204, 205, 223, 243, 192, 197, 215, 225, 207, 209, 210, 227, 244, 211, 226, 228, 236, 230, 218, 193, 196, 201, 245, 202, 195, 235, 248, 194, 229, 212, 247, 241, 217, 198, 238, 231, 233, 239, 237, 86: 199, 91: 186, 200, 94: 184, 191, 97: 190, 188, 183, 189, 187, 107: 182, 109: 181}, + {77: 180}, + {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 340, 77: 179, 82: 440}, + {1: 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 77: 178}, + {1: 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 77: 176}, // 5 - {75: 433}, - {75: 430}, - {75: 427}, - {75: 422}, - {75: 419}, + {76: 437}, + {76: 434}, + {76: 431}, + {76: 426}, + {76: 423}, // 10 - {75: 408}, - {75: 396}, - {75: 392}, - {75: 388}, - {75: 380}, + {76: 412}, + {76: 400}, + {76: 396}, + {76: 392}, + {76: 384}, // 15 - {75: 377}, - {75: 374}, - {75: 367}, - {75: 362}, - {75: 356}, + {76: 381}, + {76: 378}, + {76: 371}, + {76: 366}, + {76: 360}, // 20 - {75: 353}, - {75: 347}, - {75: 246}, - {75: 121}, - {75: 120}, + {76: 357}, + {76: 351}, + {76: 249}, + {76: 123}, + {76: 122}, // 25 - {75: 119}, - {75: 118}, - {75: 117}, - {75: 116}, - {75: 115}, + {76: 121}, + {76: 120}, + {76: 119}, + {76: 118}, + {76: 117}, // 30 - {75: 114}, - {75: 113}, - {75: 112}, - {75: 111}, - {75: 110}, + {76: 116}, + {76: 115}, + {76: 114}, + {76: 113}, + {76: 112}, // 35 - {75: 109}, - {75: 108}, - {75: 107}, - {75: 106}, - {75: 105}, + {76: 111}, + {76: 110}, + {76: 109}, + {76: 108}, + {76: 107}, // 40 - {75: 104}, - {75: 103}, - {75: 102}, - {75: 101}, - {75: 100}, + {76: 106}, + {76: 105}, + {76: 104}, + {76: 103}, + {76: 102}, // 45 - {75: 99}, - {75: 98}, - {75: 97}, - {75: 96}, - {75: 95}, + {76: 101}, + {76: 100}, + {76: 99}, + {76: 98}, + {76: 97}, // 50 - {75: 94}, - {75: 93}, - {75: 92}, - {75: 91}, - {75: 90}, + {76: 96}, + {76: 95}, + {76: 94}, + {76: 93}, + {76: 92}, // 55 - {75: 89}, - {75: 84}, - {75: 83}, - {75: 82}, - {75: 81}, + {76: 91}, + {76: 90}, + {76: 85}, + {76: 84}, + {76: 83}, // 60 - {75: 80}, - {75: 79}, - {75: 78}, - {75: 77}, - {75: 76}, + {76: 82}, + {76: 81}, + {76: 80}, + {76: 79}, + {76: 78}, // 65 - {75: 75}, - {75: 74}, - {75: 73}, - {61: 151, 151, 70: 248, 77: 247}, - {61: 253, 252, 87: 251, 250, 102: 249}, + {76: 77}, + {76: 76}, + {76: 75}, + {76: 74}, + {62: 153, 153, 71: 251, 78: 250}, // 70 - {150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 71: 150, 150, 79: 150}, - {344, 56: 345}, - {154, 56: 154}, - {84: 254}, - {84: 70}, + {62: 256, 255, 88: 254, 253, 103: 252}, + {152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 72: 152, 152, 80: 152}, + {348, 57: 349}, + {156, 57: 156}, + {85: 257}, // 75 - {84: 69}, - {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 57: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 77: 256, 83: 255}, - {56: 342, 71: 341}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 258, 82: 257}, - {141, 56: 141, 71: 141}, + {85: 71}, + {85: 70}, + {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 58: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 78: 259, 84: 258}, + {57: 346, 72: 345}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 261, 83: 260}, // 80 - {151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 151, 151, 328, 77: 327}, - {68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}, - {67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67}, - {66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66}, - {65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}, + {143, 57: 143, 72: 143}, + {153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 153, 153, 332, 78: 331}, + {69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69}, + {68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}, + {67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67}, // 85 - {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, - {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, - {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62}, - {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, - {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, + {66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66}, + {65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65}, + {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}, + {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, + {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62}, // 90 - {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, - {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, - {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, - {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, - {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, + {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, + {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, + {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, + {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, + {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, // 95 - {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, - {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, - {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, - {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, - {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, + {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, + {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, + {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, + {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, + {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, // 100 - {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, - {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, - {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, - {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, - {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, + {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, + {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, + {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, + {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, + {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, // 105 - {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, - {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, - {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, - {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, - {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, + {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, + {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, + {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, + {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, + {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, // 110 - {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, - {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, - {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, - {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, - {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, + {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, + {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, + {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, + {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, + {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, // 115 - {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, - {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, - {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, - {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, + {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, + {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, + {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, + {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, // 120 - {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, - {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, - {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, - {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, - {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, + {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, + {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, + {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, + {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, // 125 - {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, - {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, - {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, - {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, - {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, + {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, + {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, + {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, + {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, + {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, // 130 - {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, - {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, - {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, - {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, - {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, + {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, + {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, + {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, + {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, // 135 - {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, - {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, - {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, - {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, - {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, + {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, + {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, // 140 - {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, - {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, - {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, - {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, - {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, + {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, + {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, + {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, + {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, + {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, // 145 - {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, - {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, - {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 71: 147, 331, 92: 340}, + {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, + {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, + {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, + {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, // 150 - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 329}, - {151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 151, 151, 77: 330}, - {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 71: 147, 331, 92: 332}, - {75: 333}, - {138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 71: 138}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 72: 149, 335, 93: 344}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 333}, + {153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 153, 153, 78: 334}, + {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 72: 149, 335, 93: 336}, // 155 - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 335, 107: 334}, - {337, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 336, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 81: 338}, - {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145}, - {148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 57: 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 80: 148}, - {146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 71: 146}, + {76: 337}, + {140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 72: 140}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 339, 108: 338}, + {341, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 340, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 82: 342}, + {147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147}, // 160 - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 339}, - {144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144}, - {139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 71: 139}, - {152, 56: 152}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 258, 82: 343}, + {150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 58: 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 81: 150}, + {148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 72: 148}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 343}, + {146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146}, + {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 72: 141}, // 165 - {140, 56: 140, 71: 140}, - {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 76: 155}, - {61: 253, 252, 87: 251, 346}, - {153, 56: 153}, - {64: 151, 151, 70: 248, 77: 348}, + {154, 57: 154}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 261, 83: 347}, + {142, 57: 142, 72: 142}, + {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 77: 157}, + {62: 256, 255, 88: 254, 350}, // 170 - {64: 350, 351, 101: 349}, - {352}, - {72}, - {71}, - {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 76: 156}, + {155, 57: 155}, + {65: 153, 153, 71: 251, 78: 352}, + {65: 354, 355, 102: 353}, + {356}, + {73}, // 175 - {151, 70: 248, 77: 354}, - {355}, - {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 76: 157}, - {63: 151, 66: 151, 70: 248, 77: 357}, - {63: 360, 66: 359, 103: 358}, + {72}, + {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 77: 158}, + {153, 71: 251, 78: 358}, + {359}, + {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 77: 159}, // 180 - {361}, - {123}, - {122}, - {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 76: 158}, - {80: 363}, - // 185 - {56: 336, 80: 149, 364}, - {80: 365}, - {366}, - {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 76: 159}, - {70: 248, 77: 368, 79: 151}, - // 190 - {79: 369}, - {67: 372, 371, 111: 370}, - {373}, + {64: 153, 67: 153, 71: 251, 78: 361}, + {64: 364, 67: 363, 104: 362}, + {365}, {125}, {124}, + // 185 + {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 77: 160}, + {81: 367}, + {57: 340, 81: 151, 368}, + {81: 369}, + {370}, + // 190 + {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 77: 161}, + {71: 251, 78: 372, 80: 153}, + {80: 373}, + {68: 376, 375, 112: 374}, + {377}, // 195 - {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 76: 160}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 375}, - {376}, - {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 76: 161}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 378}, - // 200 - {379}, - {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 76: 162}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 381}, - {74: 382}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 385, 386, 384, 112: 383}, - // 205 - {387}, - {128}, {127}, {126}, - {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 76: 163}, - // 210 - {70: 248, 77: 389, 79: 151}, - {79: 390}, + {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 77: 162}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 379}, + {380}, + // 200 + {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 77: 163}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 382}, + {383}, + {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 77: 164}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 385}, + // 205 + {75: 386}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 389, 390, 388, 113: 387}, {391}, - {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 76: 164}, - {70: 248, 77: 393, 79: 151}, - // 215 - {79: 394}, + {130}, + {129}, + // 210 + {128}, + {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 77: 165}, + {71: 251, 78: 393, 80: 153}, + {80: 394}, {395}, - {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 76: 165}, - {151, 57: 151, 151, 151, 151, 70: 248, 77: 397}, - {132, 57: 401, 402, 403, 404, 95: 400, 109: 399, 398}, + // 215 + {1: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 77: 166}, + {71: 251, 78: 397, 80: 153}, + {80: 398}, + {399}, + {1: 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 77: 167}, // 220 - {407}, - {131, 56: 405}, - {130, 56: 130}, - {88, 56: 88}, - {87, 56: 87}, + {153, 58: 153, 153, 153, 153, 71: 251, 78: 401}, + {134, 58: 405, 406, 407, 408, 96: 404, 110: 403, 402}, + {411}, + {133, 57: 409}, + {132, 57: 132}, // 225 - {86, 56: 86}, - {85, 56: 85}, - {57: 401, 402, 403, 404, 95: 406}, - {129, 56: 129}, - {1: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 76: 166}, + {89, 57: 89}, + {88, 57: 88}, + {87, 57: 87}, + {86, 57: 86}, + {58: 405, 406, 407, 408, 96: 410}, // 230 - {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 57: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 77: 410, 86: 409}, - {418}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 258, 82: 411}, - {149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 336, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 81: 412}, - {136, 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 415, 104: 414, 413}, + {131, 57: 131}, + {1: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 77: 168}, + {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 58: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 78: 414, 87: 413}, + {422}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 261, 83: 415}, // 235 - {137}, - {135, 56: 416}, - {134, 56: 134}, - {1: 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 417}, - {133, 56: 133}, + {151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 340, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 82: 416}, + {138, 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 419, 105: 418, 417}, + {139}, + {137, 57: 420}, + {136, 57: 136}, // 240 - {1: 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 76: 167}, - {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 57: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 77: 410, 86: 420}, - {421}, - {1: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 76: 168}, - {151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 57: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 77: 425, 83: 424, 89: 423}, + {1: 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 421}, + {135, 57: 135}, + {1: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 77: 169}, + {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 58: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 78: 414, 87: 424}, + {425}, // 245 - {426}, - {143, 56: 342}, - {142, 287, 301, 264, 266, 311, 290, 268, 291, 289, 273, 292, 293, 294, 260, 261, 262, 263, 313, 288, 283, 295, 271, 275, 265, 267, 270, 277, 274, 272, 276, 278, 282, 280, 296, 310, 269, 286, 297, 298, 299, 285, 281, 314, 284, 279, 300, 312, 302, 303, 308, 309, 305, 304, 306, 307, 57: 323, 324, 325, 326, 318, 317, 319, 315, 316, 320, 322, 321, 259, 78: 258, 82: 257}, - {1: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 76: 169}, - {151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 57: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 77: 425, 83: 424, 89: 428}, + {1: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 77: 170}, + {153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 58: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 78: 429, 84: 428, 90: 427}, + {430}, + {145, 57: 346}, + {144, 291, 305, 267, 269, 315, 294, 272, 271, 273, 295, 293, 277, 296, 297, 298, 263, 264, 265, 266, 317, 292, 287, 299, 275, 279, 268, 270, 274, 281, 278, 276, 280, 282, 286, 284, 300, 314, 290, 301, 302, 303, 289, 285, 318, 288, 283, 304, 316, 306, 307, 312, 313, 309, 308, 310, 311, 58: 327, 328, 329, 330, 322, 321, 323, 319, 320, 324, 326, 325, 262, 79: 261, 83: 260}, // 250 - {429}, - {1: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 76: 170}, - {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 57: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 248, 77: 256, 83: 431}, - {432, 56: 342}, - {1: 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 76: 171}, + {1: 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 77: 171}, + {153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 58: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 78: 429, 84: 428, 90: 432}, + {433}, + {1: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 77: 172}, + {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 58: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 251, 78: 259, 84: 435}, // 255 - {151, 70: 248, 77: 434}, - {435}, - {1: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 76: 172}, - {1: 239, 211, 204, 206, 231, 237, 218, 229, 243, 221, 214, 212, 217, 183, 201, 202, 203, 220, 240, 190, 195, 213, 222, 205, 207, 208, 224, 241, 209, 223, 225, 233, 227, 216, 191, 219, 194, 199, 242, 200, 193, 232, 245, 192, 226, 210, 244, 238, 215, 196, 235, 228, 230, 236, 234, 85: 197, 90: 184, 198, 93: 438, 189, 96: 188, 186, 437, 187, 185}, - {1: 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 76: 175}, + {436, 57: 346}, + {1: 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 77: 173}, + {153, 71: 251, 78: 438}, + {439}, + {1: 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 77: 174}, // 260 - {1: 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 76: 173}, + {1: 242, 213, 206, 208, 234, 240, 221, 220, 222, 232, 246, 224, 216, 214, 219, 185, 203, 204, 205, 223, 243, 192, 197, 215, 225, 207, 209, 210, 227, 244, 211, 226, 228, 236, 230, 218, 193, 196, 201, 245, 202, 195, 235, 248, 194, 229, 212, 247, 241, 217, 198, 238, 231, 233, 239, 237, 86: 199, 91: 186, 200, 94: 442, 191, 97: 190, 188, 441, 189, 187}, + {1: 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 77: 177}, + {1: 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 77: 175}, } ) @@ -898,7 +905,7 @@ func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) { } func yyhintParse(yylex yyhintLexer, parser *hintParser) int { - const yyError = 114 + const yyError = 115 yyEx, _ := yylex.(yyhintLexerEx) var yyn int diff --git a/parser/hintparser.y b/parser/hintparser.y index 3808a1fc33..488bc7af4d 100644 --- a/parser/hintparser.y +++ b/parser/hintparser.y @@ -61,7 +61,8 @@ import ( hintBNL "BNL" hintNoBNL "NO_BNL" hintHashJoin "HASH_JOIN" - hintOrderedHashJoin "ORDERED_HASH_JOIN" + hintHashBuild "HASH_BUILD" + hintHashProbe "HASH_PROBE" hintNoHashJoin "NO_HASH_JOIN" hintMerge "MERGE" hintNoMerge "NO_MERGE" @@ -543,7 +544,8 @@ SupportedTableLevelOptimizerHintName: | "NO_SWAP_JOIN_INPUTS" | "INL_MERGE_JOIN" | "HASH_JOIN" -| "ORDERED_HASH_JOIN" +| "HASH_BUILD" +| "HASH_PROBE" | "LEADING" UnsupportedIndexLevelOptimizerHintName: @@ -608,7 +610,8 @@ Identifier: | "BNL" | "NO_BNL" | "HASH_JOIN" -| "ORDERED_HASH_JOIN" +| "HASH_BUILD" +| "HASH_PROBE" | "NO_HASH_JOIN" | "MERGE" | "NO_MERGE" diff --git a/parser/misc.go b/parser/misc.go index 6c54150896..9df8c27259 100644 --- a/parser/misc.go +++ b/parser/misc.go @@ -895,7 +895,8 @@ var hintTokenMap = map[string]int{ "BNL": hintBNL, "NO_BNL": hintNoBNL, "HASH_JOIN": hintHashJoin, - "ORDERED_HASH_JOIN": hintOrderedHashJoin, + "HASH_BUILD": hintHashBuild, + "HASH_PROBE": hintHashProbe, "NO_HASH_JOIN": hintNoHashJoin, "MERGE": hintMerge, "NO_MERGE": hintNoMerge, diff --git a/parser/parser_test.go b/parser/parser_test.go index c2e949405d..ff4e66cfaf 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -3963,22 +3963,20 @@ func TestOptimizerHints(t *testing.T) { require.Equal(t, "t3", hints[1].Tables[0].TableName.L) require.Equal(t, "t4", hints[1].Tables[1].TableName.L) - // Test ORDERED_HASH_JOIN - stmt, _, err = p.Parse("select /*+ ORDERED_HASH_JOIN(t1, T2), ordered_hash_join(t3, t4) */ c1, c2 from t1, t2 where t1.c1 = t2.c1", "", "") + // Test HASH_BUILD and HASH_PROBE + stmt, _, err = p.Parse("select /*+ hash_build(t1), hash_probe(t4) */ c1, c2 from t1, t2 where t1.c1 = t2.c1", "", "") require.NoError(t, err) selectStmt = stmt[0].(*ast.SelectStmt) hints = selectStmt.TableHints require.Len(t, hints, 2) - require.Equal(t, "ordered_hash_join", hints[0].HintName.L) - require.Len(t, hints[0].Tables, 2) + require.Equal(t, "hash_build", hints[0].HintName.L) + require.Len(t, hints[0].Tables, 1) require.Equal(t, "t1", hints[0].Tables[0].TableName.L) - require.Equal(t, "t2", hints[0].Tables[1].TableName.L) - require.Equal(t, "ordered_hash_join", hints[1].HintName.L) - require.Len(t, hints[1].Tables, 2) - require.Equal(t, "t3", hints[1].Tables[0].TableName.L) - require.Equal(t, "t4", hints[1].Tables[1].TableName.L) + require.Equal(t, "hash_probe", hints[1].HintName.L) + require.Len(t, hints[1].Tables, 1) + require.Equal(t, "t4", hints[1].Tables[0].TableName.L) // Test HASH_JOIN with SWAP_JOIN_INPUTS/NO_SWAP_JOIN_INPUTS // t1 for build, t4 for probe