// Code generated by goyacc DO NOT EDIT. // Copyright 2020 PingCAP, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // See the License for the specific language governing permissions and // limitations under the License. package parser import __yyfmt__ "fmt" import ( "math" "strconv" "github.com/pingcap/parser/ast" "github.com/pingcap/parser/model" ) type yyhintSymType struct { yys int ident string number uint64 hint *ast.TableOptimizerHint hints []*ast.TableOptimizerHint table ast.HintTable } type yyhintXError struct { state, xsym int } const ( yyhintDefault = 57407 yyhintEOFCode = 57344 yyhintErrCode = 57345 hintAggToCop = 57376 hintBKA = 57354 hintBNL = 57356 hintDupsWeedOut = 57403 hintEnablePlanCache = 57377 hintFalse = 57399 hintFirstMatch = 57404 hintGB = 57402 hintHashAgg = 57378 hintHashJoin = 57358 hintIdentifier = 57347 hintIgnoreIndex = 57379 hintIndexMerge = 57362 hintInlHashJoin = 57380 hintInlJoin = 57381 hintInlMergeJoin = 57382 hintIntLit = 57346 hintJoinFixedOrder = 57350 hintJoinOrder = 57351 hintJoinPrefix = 57352 hintJoinSuffix = 57353 hintLooseScan = 57405 hintMB = 57401 hintMRR = 57364 hintMaterialization = 57406 hintMaxExecutionTime = 57372 hintMemoryQuota = 57383 hintMerge = 57360 hintNoBKA = 57355 hintNoBNL = 57357 hintNoHashJoin = 57359 hintNoICP = 57366 hintNoIndexMerge = 57363 hintNoMRR = 57365 hintNoMerge = 57361 hintNoRangeOptimization = 57367 hintNoSemijoin = 57371 hintNoSkipScan = 57369 hintNoSwapJoinInputs = 57384 hintOLAP = 57395 hintOLTP = 57396 hintQBName = 57375 hintQueryType = 57385 hintReadConsistentReplica = 57386 hintReadFromStorage = 57387 hintResourceGroup = 57374 hintSMJoin = 57388 hintSemijoin = 57370 hintSetVar = 57373 hintSingleAtIdentifier = 57348 hintSkipScan = 57368 hintStreamAgg = 57389 hintStringLit = 57349 hintSwapJoinInputs = 57390 hintTiFlash = 57398 hintTiKV = 57397 hintTrue = 57400 hintUseIndex = 57392 hintUseIndexMerge = 57391 hintUsePlanCache = 57393 hintUseToja = 57394 yyhintMaxDepth = 200 yyhintTabOfs = -154 ) var ( yyhintXLAT = map[int]int{ 41: 0, // ')' (115x) 57376: 1, // hintAggToCop (105x) 57354: 2, // hintBKA (105x) 57356: 3, // hintBNL (105x) 57377: 4, // hintEnablePlanCache (105x) 57378: 5, // hintHashAgg (105x) 57358: 6, // hintHashJoin (105x) 57379: 7, // hintIgnoreIndex (105x) 57362: 8, // hintIndexMerge (105x) 57380: 9, // hintInlHashJoin (105x) 57381: 10, // hintInlJoin (105x) 57382: 11, // hintInlMergeJoin (105x) 57350: 12, // hintJoinFixedOrder (105x) 57351: 13, // hintJoinOrder (105x) 57352: 14, // hintJoinPrefix (105x) 57353: 15, // hintJoinSuffix (105x) 57372: 16, // hintMaxExecutionTime (105x) 57383: 17, // hintMemoryQuota (105x) 57360: 18, // hintMerge (105x) 57364: 19, // hintMRR (105x) 57355: 20, // hintNoBKA (105x) 57357: 21, // hintNoBNL (105x) 57359: 22, // hintNoHashJoin (105x) 57366: 23, // hintNoICP (105x) 57363: 24, // hintNoIndexMerge (105x) 57361: 25, // hintNoMerge (105x) 57365: 26, // hintNoMRR (105x) 57367: 27, // hintNoRangeOptimization (105x) 57371: 28, // hintNoSemijoin (105x) 57369: 29, // hintNoSkipScan (105x) 57384: 30, // hintNoSwapJoinInputs (105x) 57375: 31, // hintQBName (105x) 57385: 32, // hintQueryType (105x) 57386: 33, // hintReadConsistentReplica (105x) 57387: 34, // hintReadFromStorage (105x) 57374: 35, // hintResourceGroup (105x) 57370: 36, // hintSemijoin (105x) 57373: 37, // hintSetVar (105x) 57368: 38, // hintSkipScan (105x) 57388: 39, // hintSMJoin (105x) 57389: 40, // hintStreamAgg (105x) 57390: 41, // hintSwapJoinInputs (105x) 57392: 42, // hintUseIndex (105x) 57391: 43, // hintUseIndexMerge (105x) 57393: 44, // hintUsePlanCache (105x) 57394: 45, // hintUseToja (105x) 44: 46, // ',' (104x) 57403: 47, // hintDupsWeedOut (85x) 57404: 48, // hintFirstMatch (85x) 57405: 49, // hintLooseScan (85x) 57406: 50, // hintMaterialization (85x) 57398: 51, // hintTiFlash (85x) 57397: 52, // hintTiKV (85x) 57399: 53, // hintFalse (84x) 57395: 54, // hintOLAP (84x) 57396: 55, // hintOLTP (84x) 57400: 56, // hintTrue (84x) 57402: 57, // hintGB (83x) 57401: 58, // hintMB (83x) 57347: 59, // hintIdentifier (82x) 57348: 60, // hintSingleAtIdentifier (74x) 93: 61, // ']' (66x) 46: 62, // '.' (59x) 61: 63, // '=' (59x) 40: 64, // '(' (53x) 57344: 65, // $end (22x) 57425: 66, // QueryBlockOpt (16x) 57419: 67, // Identifier (11x) 57346: 68, // hintIntLit (6x) 57415: 69, // HintTable (4x) 57416: 70, // HintTableList (4x) 91: 71, // '[' (3x) 57408: 72, // BooleanHintName (2x) 57409: 73, // CommaOpt (2x) 57410: 74, // HintIndexList (2x) 57412: 75, // HintStorageType (2x) 57413: 76, // HintStorageTypeAndTable (2x) 57417: 77, // HintTableListOpt (2x) 57422: 78, // JoinOrderOptimizerHintName (2x) 57423: 79, // NullaryHintName (2x) 57427: 80, // StorageOptimizerHintOpt (2x) 57428: 81, // SubqueryOptimizerHintName (2x) 57431: 82, // SubqueryStrategy (2x) 57432: 83, // SupportedIndexLevelOptimizerHintName (2x) 57433: 84, // SupportedTableLevelOptimizerHintName (2x) 57434: 85, // TableOptimizerHintOpt (2x) 57436: 86, // UnsupportedIndexLevelOptimizerHintName (2x) 57437: 87, // UnsupportedTableLevelOptimizerHintName (2x) 57411: 88, // HintQueryType (1x) 57414: 89, // HintStorageTypeAndTableList (1x) 57349: 90, // hintStringLit (1x) 57418: 91, // HintTrueOrFalse (1x) 57420: 92, // IndexNameList (1x) 57421: 93, // IndexNameListOpt (1x) 57424: 94, // OptimizerHintList (1x) 57426: 95, // Start (1x) 57429: 96, // SubqueryStrategies (1x) 57430: 97, // SubqueryStrategiesOpt (1x) 57435: 98, // UnitOfBytes (1x) 57438: 99, // Value (1x) 57407: 100, // $default (0x) 57345: 101, // error (0x) } yyhintSymNames = []string{ "')'", "hintAggToCop", "hintBKA", "hintBNL", "hintEnablePlanCache", "hintHashAgg", "hintHashJoin", "hintIgnoreIndex", "hintIndexMerge", "hintInlHashJoin", "hintInlJoin", "hintInlMergeJoin", "hintJoinFixedOrder", "hintJoinOrder", "hintJoinPrefix", "hintJoinSuffix", "hintMaxExecutionTime", "hintMemoryQuota", "hintMerge", "hintMRR", "hintNoBKA", "hintNoBNL", "hintNoHashJoin", "hintNoICP", "hintNoIndexMerge", "hintNoMerge", "hintNoMRR", "hintNoRangeOptimization", "hintNoSemijoin", "hintNoSkipScan", "hintNoSwapJoinInputs", "hintQBName", "hintQueryType", "hintReadConsistentReplica", "hintReadFromStorage", "hintResourceGroup", "hintSemijoin", "hintSetVar", "hintSkipScan", "hintSMJoin", "hintStreamAgg", "hintSwapJoinInputs", "hintUseIndex", "hintUseIndexMerge", "hintUsePlanCache", "hintUseToja", "','", "hintDupsWeedOut", "hintFirstMatch", "hintLooseScan", "hintMaterialization", "hintTiFlash", "hintTiKV", "hintFalse", "hintOLAP", "hintOLTP", "hintTrue", "hintGB", "hintMB", "hintIdentifier", "hintSingleAtIdentifier", "']'", "'.'", "'='", "'('", "$end", "QueryBlockOpt", "Identifier", "hintIntLit", "HintTable", "HintTableList", "'['", "BooleanHintName", "CommaOpt", "HintIndexList", "HintStorageType", "HintStorageTypeAndTable", "HintTableListOpt", "JoinOrderOptimizerHintName", "NullaryHintName", "StorageOptimizerHintOpt", "SubqueryOptimizerHintName", "SubqueryStrategy", "SupportedIndexLevelOptimizerHintName", "SupportedTableLevelOptimizerHintName", "TableOptimizerHintOpt", "UnsupportedIndexLevelOptimizerHintName", "UnsupportedTableLevelOptimizerHintName", "HintQueryType", "HintStorageTypeAndTableList", "hintStringLit", "HintTrueOrFalse", "IndexNameList", "IndexNameListOpt", "OptimizerHintList", "Start", "SubqueryStrategies", "SubqueryStrategiesOpt", "UnitOfBytes", "Value", "$default", "error", } yyhintReductions = []struct{ xsym, components int }{ {0, 1}, {95, 1}, {94, 1}, {94, 3}, {94, 1}, {94, 3}, {85, 4}, {85, 4}, {85, 4}, {85, 4}, {85, 4}, {85, 4}, {85, 5}, {85, 5}, {85, 6}, {85, 4}, {85, 4}, {85, 6}, {85, 5}, {85, 4}, {85, 5}, {80, 5}, {89, 1}, {89, 3}, {76, 4}, {66, 0}, {66, 1}, {73, 0}, {73, 1}, {77, 1}, {77, 1}, {70, 2}, {70, 3}, {69, 2}, {69, 4}, {74, 4}, {93, 0}, {93, 1}, {92, 1}, {92, 3}, {97, 0}, {97, 1}, {96, 1}, {96, 3}, {99, 1}, {99, 1}, {99, 1}, {98, 1}, {98, 1}, {91, 1}, {91, 1}, {78, 1}, {78, 1}, {78, 1}, {87, 1}, {87, 1}, {87, 1}, {87, 1}, {87, 1}, {87, 1}, {87, 1}, {84, 1}, {84, 1}, {84, 1}, {84, 1}, {84, 1}, {84, 1}, {84, 1}, {86, 1}, {86, 1}, {86, 1}, {86, 1}, {86, 1}, {86, 1}, {86, 1}, {83, 1}, {83, 1}, {83, 1}, {81, 1}, {81, 1}, {82, 1}, {82, 1}, {82, 1}, {82, 1}, {72, 1}, {72, 1}, {79, 1}, {79, 1}, {79, 1}, {79, 1}, {79, 1}, {79, 1}, {88, 1}, {88, 1}, {75, 1}, {75, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, {67, 1}, } yyhintXErrors = map[yyhintXError]string{} yyhintParseTab = [223][]uint16{ // 0 {1: 209, 178, 180, 205, 207, 191, 200, 192, 187, 186, 190, 159, 175, 176, 177, 166, 170, 183, 193, 179, 181, 182, 195, 210, 184, 194, 196, 203, 198, 189, 169, 173, 211, 174, 168, 202, 167, 197, 185, 208, 188, 199, 201, 206, 204, 72: 171, 78: 160, 172, 158, 165, 83: 164, 162, 157, 163, 161, 94: 156, 155}, {65: 154}, {1: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 349, 65: 153, 73: 374}, {1: 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, 65: 152}, {1: 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, 65: 150}, // 5 {64: 371}, {64: 368}, {64: 365}, {64: 360}, {64: 357}, // 10 {64: 345}, {64: 333}, {64: 329}, {64: 321}, {64: 318}, // 15 {64: 315}, {64: 308}, {64: 302}, {64: 299}, {64: 293}, // 20 {64: 212}, {64: 103}, {64: 102}, {64: 101}, {64: 100}, // 25 {64: 99}, {64: 98}, {64: 97}, {64: 96}, {64: 95}, // 30 {64: 94}, {64: 93}, {64: 92}, {64: 91}, {64: 90}, // 35 {64: 89}, {64: 88}, {64: 87}, {64: 86}, {64: 85}, // 40 {64: 84}, {64: 83}, {64: 82}, {64: 81}, {64: 80}, // 45 {64: 79}, {64: 78}, {64: 77}, {64: 76}, {64: 75}, // 50 {64: 70}, {64: 69}, {64: 68}, {64: 67}, {64: 66}, // 55 {64: 65}, {64: 64}, {64: 63}, {51: 129, 129, 60: 214, 66: 213}, {51: 219, 218, 75: 217, 216, 89: 215}, // 60 {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 61: 128, 68: 128}, {290, 46: 291}, {132, 46: 132}, {71: 220}, {71: 60}, // 65 {71: 59}, {1: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 47: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 66: 222, 70: 221}, {46: 288, 61: 287}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 224, 69: 223}, {123, 46: 123, 61: 123}, // 70 {129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 129, 284, 66: 283}, {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}, {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}, // 75 {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}, {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}, {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}, // 80 {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}, {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}, {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}, // 85 {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}, {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}, {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}, // 90 {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}, {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}, {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}, // 95 {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}, {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}, {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}, // 100 {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}, {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}, {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}, // 105 {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}, {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}, {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}, // 110 {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}, {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}, {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}, // 115 {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}, {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}, {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}, // 120 {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}, {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}, {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}, // 125 {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}, {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}, {121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 61: 121}, // 130 {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 285}, {129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 129, 66: 286}, {120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 61: 120}, {130, 46: 130}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 224, 69: 289}, // 135 {122, 46: 122, 61: 122}, {1: 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 65: 133}, {51: 219, 218, 75: 217, 292}, {131, 46: 131}, {54: 129, 129, 60: 214, 66: 294}, // 140 {54: 296, 297, 88: 295}, {298}, {62}, {61}, {1: 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 65: 134}, // 145 {129, 60: 214, 66: 300}, {301}, {1: 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 65: 135}, {53: 129, 56: 129, 60: 214, 66: 303}, {53: 306, 56: 305, 91: 304}, // 150 {307}, {105}, {104}, {1: 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 65: 136}, {60: 214, 66: 309, 68: 129}, // 155 {68: 310}, {57: 313, 312, 98: 311}, {314}, {107}, {106}, // 160 {1: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 65: 137}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 316}, {317}, {1: 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, 65: 138}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 319}, // 165 {320}, {1: 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, 65: 139}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 322}, {63: 323}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 326, 327, 90: 325, 99: 324}, // 170 {328}, {110}, {109}, {108}, {1: 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, 65: 140}, // 175 {60: 214, 66: 330, 68: 129}, {68: 331}, {332}, {1: 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, 65: 141}, {129, 47: 129, 129, 129, 129, 60: 214, 66: 334}, // 180 {114, 47: 338, 339, 340, 341, 82: 337, 96: 336, 335}, {344}, {113, 46: 342}, {112, 46: 112}, {74, 46: 74}, // 185 {73, 46: 73}, {72, 46: 72}, {71, 46: 71}, {47: 338, 339, 340, 341, 82: 343}, {111, 46: 111}, // 190 {1: 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 65: 142}, {1: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 47: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 66: 347, 74: 346}, {356}, {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 224, 69: 348}, {127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 349, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 73: 350}, // 195 {126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 47: 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126}, {118, 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 353, 92: 352, 351}, {119}, {117, 46: 354}, {116, 46: 116}, // 200 {1: 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 355}, {115, 46: 115}, {1: 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 65: 143}, {1: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 47: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 66: 347, 74: 358}, {359}, // 205 {1: 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, 65: 144}, {129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 47: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 66: 363, 70: 362, 77: 361}, {364}, {125, 46: 288}, {124, 252, 230, 232, 253, 254, 234, 255, 238, 256, 257, 258, 226, 227, 228, 229, 248, 259, 236, 240, 231, 233, 235, 242, 239, 237, 241, 243, 247, 245, 260, 251, 261, 262, 263, 250, 246, 249, 244, 264, 265, 266, 268, 267, 269, 270, 47: 279, 280, 281, 282, 274, 273, 275, 271, 272, 276, 278, 277, 225, 67: 224, 69: 223}, // 210 {1: 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, 65: 145}, {129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 47: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 66: 363, 70: 362, 77: 366}, {367}, {1: 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, 65: 146}, {1: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 47: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 214, 66: 222, 70: 369}, // 215 {370, 46: 288}, {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, 65: 147}, {129, 60: 214, 66: 372}, {373}, {1: 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, 65: 148}, // 220 {1: 209, 178, 180, 205, 207, 191, 200, 192, 187, 186, 190, 159, 175, 176, 177, 166, 170, 183, 193, 179, 181, 182, 195, 210, 184, 194, 196, 203, 198, 189, 169, 173, 211, 174, 168, 202, 167, 197, 185, 208, 188, 199, 201, 206, 204, 72: 171, 78: 160, 172, 376, 165, 83: 164, 162, 375, 163, 161}, {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, 65: 151}, {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, 65: 149}, } ) var yyhintDebug = 0 type yyhintLexer interface { Lex(lval *yyhintSymType) int Errorf(format string, a ...interface{}) error AppendError(err error) Errors() (warns []error, errs []error) } type yyhintLexerEx interface { yyhintLexer Reduced(rule, state int, lval *yyhintSymType) bool } func yyhintSymName(c int) (s string) { x, ok := yyhintXLAT[c] if ok { return yyhintSymNames[x] } return __yyfmt__.Sprintf("%d", c) } func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) { n = yylex.Lex(lval) if n <= 0 { n = yyhintEOFCode } if yyhintDebug >= 3 { __yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yyhintSymName(n), n, n, lval) } return n } func yyhintParse(yylex yyhintLexer, parser *hintParser) int { const yyError = 101 yyEx, _ := yylex.(yyhintLexerEx) var yyn int parser.yylval = yyhintSymType{} yyS := parser.cache Nerrs := 0 /* number of errors */ Errflag := 0 /* error recovery flag */ yyerrok := func() { if yyhintDebug >= 2 { __yyfmt__.Printf("yyerrok()\n") } Errflag = 0 } _ = yyerrok yystate := 0 yychar := -1 var yyxchar int var yyshift int yyp := -1 goto yystack ret0: return 0 ret1: return 1 yystack: /* put a state and value onto the stack */ yyp++ if yyp+1 >= len(yyS) { nyys := make([]yyhintSymType, len(yyS)*2) copy(nyys, yyS) yyS = nyys parser.cache = yyS } parser.yyVAL = &yyS[yyp+1] yyS[yyp].yys = yystate yynewstate: if yychar < 0 { yychar = yyhintlex1(yylex, &parser.yylval) var ok bool if yyxchar, ok = yyhintXLAT[yychar]; !ok { yyxchar = len(yyhintSymNames) // > tab width } } if yyhintDebug >= 4 { var a []int for _, v := range yyS[:yyp+1] { a = append(a, v.yys) } __yyfmt__.Printf("state stack %v\n", a) } row := yyhintParseTab[yystate] yyn = 0 if yyxchar < len(row) { if yyn = int(row[yyxchar]); yyn != 0 { yyn += yyhintTabOfs } } switch { case yyn > 0: // shift yychar = -1 *parser.yyVAL = parser.yylval yystate = yyn yyshift = yyn if yyhintDebug >= 2 { __yyfmt__.Printf("shift, and goto state %d\n", yystate) } if Errflag > 0 { Errflag-- } goto yystack case yyn < 0: // reduce case yystate == 1: // accept if yyhintDebug >= 2 { __yyfmt__.Println("accept") } goto ret0 } if yyn == 0 { /* error ... attempt to resume parsing */ switch Errflag { case 0: /* brand new error */ if yyhintDebug >= 1 { __yyfmt__.Printf("no action for %s in state %d\n", yyhintSymName(yychar), yystate) } msg, ok := yyhintXErrors[yyhintXError{yystate, yyxchar}] if !ok { msg, ok = yyhintXErrors[yyhintXError{yystate, -1}] } if !ok && yyshift != 0 { msg, ok = yyhintXErrors[yyhintXError{yyshift, yyxchar}] } if !ok { msg, ok = yyhintXErrors[yyhintXError{yyshift, -1}] } if !ok || msg == "" { msg = "syntax error" } // ignore goyacc error message yylex.AppendError(yylex.Errorf("")) Nerrs++ fallthrough case 1, 2: /* incompletely recovered error ... try again */ Errflag = 3 /* find a state where "error" is a legal shift action */ for yyp >= 0 { row := yyhintParseTab[yyS[yyp].yys] if yyError < len(row) { yyn = int(row[yyError]) + yyhintTabOfs if yyn > 0 { // hit if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys) } yystate = yyn /* simulate a shift of "error" */ goto yystack } } /* the current p has no shift on "error", pop stack */ if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys) } yyp-- } /* there is no state on the stack with an error shift ... abort */ if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery failed\n") } goto ret1 case 3: /* no shift yet; clobber input char */ if yyhintDebug >= 2 { __yyfmt__.Printf("error recovery discards %s\n", yyhintSymName(yychar)) } if yychar == yyhintEOFCode { goto ret1 } yychar = -1 goto yynewstate /* try again in the same state */ } } r := -yyn x0 := yyhintReductions[r] x, n := x0.xsym, x0.components yypt := yyp _ = yypt // guard against "declared and not used" yyp -= n if yyp+1 >= len(yyS) { nyys := make([]yyhintSymType, len(yyS)*2) copy(nyys, yyS) yyS = nyys parser.cache = yyS } parser.yyVAL = &yyS[yyp+1] /* consult goto table to find next state */ exState := yystate yystate = int(yyhintParseTab[yyS[yyp].yys][x]) + yyhintTabOfs /* reduction by production r */ if yyhintDebug >= 2 { __yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yyhintSymNames[x], yystate) } switch r { case 1: { parser.result = yyS[yypt-0].hints } case 2: { if yyS[yypt-0].hint != nil { parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint} } } case 3: { if yyS[yypt-0].hint != nil { parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint) } else { parser.yyVAL.hints = yyS[yypt-2].hints } } case 4: { parser.yyVAL.hints = yyS[yypt-0].hints } case 5: { parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hints...) } case 6: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 7: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 8: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 9: { h := yyS[yypt-1].hint h.HintName = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 10: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 11: { h := yyS[yypt-1].hint h.HintName = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 12: { parser.warnUnsupportedHint(yyS[yypt-4].ident) parser.yyVAL.hint = nil } case 13: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-4].ident), QBName: model.NewCIStr(yyS[yypt-2].ident), MaxExecutionTime: yyS[yypt-1].number, } } case 14: { parser.warnUnsupportedHint(yyS[yypt-5].ident) parser.yyVAL.hint = nil } case 15: { parser.warnUnsupportedHint(yyS[yypt-3].ident) parser.yyVAL.hint = nil } case 16: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-3].ident), QBName: model.NewCIStr(yyS[yypt-1].ident), } } case 17: { maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number if yyS[yypt-2].number <= maxValue { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-5].ident), MemoryQuota: int64(yyS[yypt-2].number * yyS[yypt-1].number), QBName: model.NewCIStr(yyS[yypt-3].ident), } } else { yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(math.MaxInt64)) parser.lastErrorAsWarn() parser.yyVAL.hint = nil } } case 18: { h := yyS[yypt-1].hint h.HintName = model.NewCIStr(yyS[yypt-4].ident) h.QBName = model.NewCIStr(yyS[yypt-2].ident) parser.yyVAL.hint = h } case 19: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-3].ident), QBName: model.NewCIStr(yyS[yypt-1].ident), } } case 20: { parser.yyVAL.hint = &ast.TableOptimizerHint{ HintName: model.NewCIStr(yyS[yypt-4].ident), QBName: model.NewCIStr(yyS[yypt-2].ident), QueryType: model.NewCIStr(yyS[yypt-1].ident), } } case 21: { hs := yyS[yypt-1].hints name := model.NewCIStr(yyS[yypt-4].ident) qb := model.NewCIStr(yyS[yypt-2].ident) for _, h := range hs { h.HintName = name h.QBName = qb } parser.yyVAL.hints = hs } case 22: { parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint} } case 23: { parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint) } case 24: { h := yyS[yypt-1].hint h.StoreType = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 25: { parser.yyVAL.ident = "" } case 30: { parser.yyVAL.hint = &ast.TableOptimizerHint{ QBName: model.NewCIStr(yyS[yypt-0].ident), } } case 31: { parser.yyVAL.hint = &ast.TableOptimizerHint{ Tables: []ast.HintTable{yyS[yypt-0].table}, QBName: model.NewCIStr(yyS[yypt-1].ident), } } case 32: { h := yyS[yypt-2].hint h.Tables = append(h.Tables, yyS[yypt-0].table) parser.yyVAL.hint = h } case 33: { parser.yyVAL.table = ast.HintTable{ TableName: model.NewCIStr(yyS[yypt-1].ident), QBName: model.NewCIStr(yyS[yypt-0].ident), } } case 34: { parser.yyVAL.table = ast.HintTable{ DBName: model.NewCIStr(yyS[yypt-3].ident), TableName: model.NewCIStr(yyS[yypt-1].ident), QBName: model.NewCIStr(yyS[yypt-0].ident), } } case 35: { h := yyS[yypt-0].hint h.Tables = []ast.HintTable{yyS[yypt-2].table} h.QBName = model.NewCIStr(yyS[yypt-3].ident) parser.yyVAL.hint = h } case 36: { parser.yyVAL.hint = &ast.TableOptimizerHint{} } case 38: { parser.yyVAL.hint = &ast.TableOptimizerHint{ Indexes: []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)}, } } case 39: { h := yyS[yypt-2].hint h.Indexes = append(h.Indexes, model.NewCIStr(yyS[yypt-0].ident)) parser.yyVAL.hint = h } case 46: { parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10) } case 47: { parser.yyVAL.number = 1024 * 1024 } case 48: { parser.yyVAL.number = 1024 * 1024 * 1024 } case 49: { parser.yyVAL.hint = &ast.TableOptimizerHint{HintFlag: true} } case 50: { parser.yyVAL.hint = &ast.TableOptimizerHint{HintFlag: false} } } if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) { return -1 } goto yystack /* stack new state and value */ }