Files
tidb/pkg/parser/hintparser.go

1599 lines
88 KiB
Go

// 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/tidb/pkg/parser/ast"
)
type yyhintSymType struct {
yys int
offset int
ident string
number uint64
hint *ast.TableOptimizerHint
hints []*ast.TableOptimizerHint
table ast.HintTable
modelIdents []ast.CIStr
}
type yyhintXError struct {
state, xsym int
}
const (
yyhintDefault = 57435
yyhintEOFCode = 57344
yyhintErrCode = 57345
hintAggToCop = 57380
hintBCJoin = 57402
hintBKA = 57355
hintBNL = 57357
hintDupsWeedOut = 57431
hintFalse = 57427
hintFirstMatch = 57432
hintForceIndex = 57417
hintGB = 57430
hintHashAgg = 57382
hintHashJoin = 57359
hintHashJoinBuild = 57360
hintHashJoinProbe = 57361
hintHypoIndex = 57379
hintIdentifier = 57347
hintIgnoreIndex = 57385
hintIgnorePlanCache = 57381
hintIndexHashJoin = 57389
hintIndexJoin = 57386
hintIndexLookUpPushDown = 57410
hintIndexMerge = 57365
hintIndexMergeJoin = 57393
hintInlHashJoin = 57388
hintInlJoin = 57391
hintInlMergeJoin = 57392
hintIntLit = 57346
hintInvalid = 57348
hintJoinFixedOrder = 57351
hintJoinOrder = 57352
hintJoinPrefix = 57353
hintJoinSuffix = 57354
hintLeading = 57419
hintLimitToCop = 57416
hintLooseScan = 57433
hintMB = 57429
hintMRR = 57367
hintMaterialization = 57434
hintMaxExecutionTime = 57375
hintMemoryQuota = 57395
hintMerge = 57363
hintMpp1PhaseAgg = 57383
hintMpp2PhaseAgg = 57384
hintNoBKA = 57356
hintNoBNL = 57358
hintNoDecorrelate = 57421
hintNoHashJoin = 57362
hintNoICP = 57369
hintNoIndexHashJoin = 57390
hintNoIndexJoin = 57387
hintNoIndexMerge = 57366
hintNoIndexMergeJoin = 57394
hintNoMRR = 57368
hintNoMerge = 57364
hintNoOrderIndex = 57409
hintNoRangeOptimization = 57370
hintNoSMJoin = 57401
hintNoSemijoin = 57374
hintNoSkipScan = 57372
hintNoSwapJoinInputs = 57396
hintNthPlan = 57415
hintOLAP = 57422
hintOLTP = 57423
hintOrderIndex = 57408
hintPartition = 57424
hintQBName = 57378
hintQueryType = 57397
hintReadConsistentReplica = 57398
hintReadFromStorage = 57399
hintResourceGroup = 57377
hintSMJoin = 57400
hintSemiJoinRewrite = 57420
hintSemijoin = 57373
hintSetVar = 57376
hintShuffleJoin = 57403
hintSingleAtIdentifier = 57349
hintSkipScan = 57371
hintStraightJoin = 57418
hintStreamAgg = 57404
hintStringLit = 57350
hintSwapJoinInputs = 57405
hintTiFlash = 57426
hintTiKV = 57425
hintTimeRange = 57413
hintTrue = 57428
hintUseCascades = 57414
hintUseIndex = 57407
hintUseIndexMerge = 57406
hintUsePlanCache = 57411
hintUseToja = 57412
yyhintMaxDepth = 200
yyhintTabOfs = -221
)
var (
yyhintXLAT = map[int]int{
41: 0, // ')' (164x)
57380: 1, // hintAggToCop (153x)
57402: 2, // hintBCJoin (153x)
57355: 3, // hintBKA (153x)
57357: 4, // hintBNL (153x)
57417: 5, // hintForceIndex (153x)
57382: 6, // hintHashAgg (153x)
57359: 7, // hintHashJoin (153x)
57360: 8, // hintHashJoinBuild (153x)
57361: 9, // hintHashJoinProbe (153x)
57379: 10, // hintHypoIndex (153x)
57347: 11, // hintIdentifier (153x)
57385: 12, // hintIgnoreIndex (153x)
57381: 13, // hintIgnorePlanCache (153x)
57389: 14, // hintIndexHashJoin (153x)
57386: 15, // hintIndexJoin (153x)
57410: 16, // hintIndexLookUpPushDown (153x)
57365: 17, // hintIndexMerge (153x)
57393: 18, // hintIndexMergeJoin (153x)
57388: 19, // hintInlHashJoin (153x)
57391: 20, // hintInlJoin (153x)
57392: 21, // hintInlMergeJoin (153x)
57351: 22, // hintJoinFixedOrder (153x)
57352: 23, // hintJoinOrder (153x)
57353: 24, // hintJoinPrefix (153x)
57354: 25, // hintJoinSuffix (153x)
57419: 26, // hintLeading (153x)
57416: 27, // hintLimitToCop (153x)
57375: 28, // hintMaxExecutionTime (153x)
57395: 29, // hintMemoryQuota (153x)
57363: 30, // hintMerge (153x)
57383: 31, // hintMpp1PhaseAgg (153x)
57384: 32, // hintMpp2PhaseAgg (153x)
57367: 33, // hintMRR (153x)
57356: 34, // hintNoBKA (153x)
57358: 35, // hintNoBNL (153x)
57421: 36, // hintNoDecorrelate (153x)
57362: 37, // hintNoHashJoin (153x)
57369: 38, // hintNoICP (153x)
57390: 39, // hintNoIndexHashJoin (153x)
57387: 40, // hintNoIndexJoin (153x)
57366: 41, // hintNoIndexMerge (153x)
57394: 42, // hintNoIndexMergeJoin (153x)
57364: 43, // hintNoMerge (153x)
57368: 44, // hintNoMRR (153x)
57409: 45, // hintNoOrderIndex (153x)
57370: 46, // hintNoRangeOptimization (153x)
57374: 47, // hintNoSemijoin (153x)
57372: 48, // hintNoSkipScan (153x)
57401: 49, // hintNoSMJoin (153x)
57396: 50, // hintNoSwapJoinInputs (153x)
57415: 51, // hintNthPlan (153x)
57408: 52, // hintOrderIndex (153x)
57378: 53, // hintQBName (153x)
57397: 54, // hintQueryType (153x)
57398: 55, // hintReadConsistentReplica (153x)
57399: 56, // hintReadFromStorage (153x)
57377: 57, // hintResourceGroup (153x)
57373: 58, // hintSemijoin (153x)
57420: 59, // hintSemiJoinRewrite (153x)
57376: 60, // hintSetVar (153x)
57403: 61, // hintShuffleJoin (153x)
57371: 62, // hintSkipScan (153x)
57400: 63, // hintSMJoin (153x)
57418: 64, // hintStraightJoin (153x)
57404: 65, // hintStreamAgg (153x)
57405: 66, // hintSwapJoinInputs (153x)
57413: 67, // hintTimeRange (153x)
57414: 68, // hintUseCascades (153x)
57407: 69, // hintUseIndex (153x)
57406: 70, // hintUseIndexMerge (153x)
57411: 71, // hintUsePlanCache (153x)
57412: 72, // hintUseToja (153x)
44: 73, // ',' (147x)
57431: 74, // hintDupsWeedOut (126x)
57432: 75, // hintFirstMatch (126x)
57433: 76, // hintLooseScan (126x)
57434: 77, // hintMaterialization (126x)
57426: 78, // hintTiFlash (126x)
57425: 79, // hintTiKV (126x)
57427: 80, // hintFalse (125x)
57422: 81, // hintOLAP (125x)
57423: 82, // hintOLTP (125x)
57428: 83, // hintTrue (125x)
57430: 84, // hintGB (124x)
57429: 85, // hintMB (124x)
57349: 86, // hintSingleAtIdentifier (105x)
57346: 87, // hintIntLit (102x)
93: 88, // ']' (95x)
46: 89, // '.' (94x)
57424: 90, // hintPartition (89x)
61: 91, // '=' (86x)
40: 92, // '(' (81x)
57344: 93, // $end (29x)
57455: 94, // QueryBlockOpt (21x)
57447: 95, // Identifier (18x)
57350: 96, // hintStringLit (6x)
57437: 97, // CommaOpt (5x)
57443: 98, // HintTable (4x)
57444: 99, // HintTableList (4x)
91: 100, // '[' (3x)
43: 101, // '+' (2x)
45: 102, // '-' (2x)
57436: 103, // BooleanHintName (2x)
57438: 104, // HintIndexList (2x)
57440: 105, // HintStorageType (2x)
57441: 106, // HintStorageTypeAndTable (2x)
57445: 107, // HintTableListOpt (2x)
57450: 108, // JoinOrderOptimizerHintName (2x)
57451: 109, // NullaryHintName (2x)
57453: 110, // PartitionList (2x)
57454: 111, // PartitionListOpt (2x)
57457: 112, // StorageOptimizerHintOpt (2x)
57458: 113, // SubqueryOptimizerHintName (2x)
57461: 114, // SubqueryStrategy (2x)
57462: 115, // SupportedIndexLevelOptimizerHintName (2x)
57463: 116, // SupportedTableLevelOptimizerHintName (2x)
57464: 117, // TableOptimizerHintOpt (2x)
57466: 118, // UnsupportedIndexLevelOptimizerHintName (2x)
57467: 119, // UnsupportedTableLevelOptimizerHintName (2x)
57468: 120, // Value (2x)
57469: 121, // ViewName (2x)
57439: 122, // HintQueryType (1x)
57442: 123, // HintStorageTypeAndTableList (1x)
57446: 124, // HintTrueOrFalse (1x)
57448: 125, // IndexNameList (1x)
57449: 126, // IndexNameListOpt (1x)
57452: 127, // OptimizerHintList (1x)
57456: 128, // Start (1x)
57459: 129, // SubqueryStrategies (1x)
57460: 130, // SubqueryStrategiesOpt (1x)
57465: 131, // UnitOfBytes (1x)
57470: 132, // ViewNameList (1x)
57435: 133, // $default (0x)
57345: 134, // error (0x)
57348: 135, // hintInvalid (0x)
}
yyhintSymNames = []string{
"')'",
"hintAggToCop",
"hintBCJoin",
"hintBKA",
"hintBNL",
"hintForceIndex",
"hintHashAgg",
"hintHashJoin",
"hintHashJoinBuild",
"hintHashJoinProbe",
"hintHypoIndex",
"hintIdentifier",
"hintIgnoreIndex",
"hintIgnorePlanCache",
"hintIndexHashJoin",
"hintIndexJoin",
"hintIndexLookUpPushDown",
"hintIndexMerge",
"hintIndexMergeJoin",
"hintInlHashJoin",
"hintInlJoin",
"hintInlMergeJoin",
"hintJoinFixedOrder",
"hintJoinOrder",
"hintJoinPrefix",
"hintJoinSuffix",
"hintLeading",
"hintLimitToCop",
"hintMaxExecutionTime",
"hintMemoryQuota",
"hintMerge",
"hintMpp1PhaseAgg",
"hintMpp2PhaseAgg",
"hintMRR",
"hintNoBKA",
"hintNoBNL",
"hintNoDecorrelate",
"hintNoHashJoin",
"hintNoICP",
"hintNoIndexHashJoin",
"hintNoIndexJoin",
"hintNoIndexMerge",
"hintNoIndexMergeJoin",
"hintNoMerge",
"hintNoMRR",
"hintNoOrderIndex",
"hintNoRangeOptimization",
"hintNoSemijoin",
"hintNoSkipScan",
"hintNoSMJoin",
"hintNoSwapJoinInputs",
"hintNthPlan",
"hintOrderIndex",
"hintQBName",
"hintQueryType",
"hintReadConsistentReplica",
"hintReadFromStorage",
"hintResourceGroup",
"hintSemijoin",
"hintSemiJoinRewrite",
"hintSetVar",
"hintShuffleJoin",
"hintSkipScan",
"hintSMJoin",
"hintStraightJoin",
"hintStreamAgg",
"hintSwapJoinInputs",
"hintTimeRange",
"hintUseCascades",
"hintUseIndex",
"hintUseIndexMerge",
"hintUsePlanCache",
"hintUseToja",
"','",
"hintDupsWeedOut",
"hintFirstMatch",
"hintLooseScan",
"hintMaterialization",
"hintTiFlash",
"hintTiKV",
"hintFalse",
"hintOLAP",
"hintOLTP",
"hintTrue",
"hintGB",
"hintMB",
"hintSingleAtIdentifier",
"hintIntLit",
"']'",
"'.'",
"hintPartition",
"'='",
"'('",
"$end",
"QueryBlockOpt",
"Identifier",
"hintStringLit",
"CommaOpt",
"HintTable",
"HintTableList",
"'['",
"'+'",
"'-'",
"BooleanHintName",
"HintIndexList",
"HintStorageType",
"HintStorageTypeAndTable",
"HintTableListOpt",
"JoinOrderOptimizerHintName",
"NullaryHintName",
"PartitionList",
"PartitionListOpt",
"StorageOptimizerHintOpt",
"SubqueryOptimizerHintName",
"SubqueryStrategy",
"SupportedIndexLevelOptimizerHintName",
"SupportedTableLevelOptimizerHintName",
"TableOptimizerHintOpt",
"UnsupportedIndexLevelOptimizerHintName",
"UnsupportedTableLevelOptimizerHintName",
"Value",
"ViewName",
"HintQueryType",
"HintStorageTypeAndTableList",
"HintTrueOrFalse",
"IndexNameList",
"IndexNameListOpt",
"OptimizerHintList",
"Start",
"SubqueryStrategies",
"SubqueryStrategiesOpt",
"UnitOfBytes",
"ViewNameList",
"$default",
"error",
"hintInvalid",
}
yyhintReductions = []struct{ xsym, components int }{
{0, 1},
{128, 1},
{127, 1},
{127, 3},
{127, 1},
{127, 3},
{117, 4},
{117, 4},
{117, 4},
{117, 4},
{117, 4},
{117, 4},
{117, 5},
{117, 5},
{117, 5},
{117, 6},
{117, 4},
{117, 4},
{117, 6},
{117, 6},
{117, 6},
{117, 5},
{117, 4},
{117, 5},
{117, 5},
{117, 4},
{117, 6},
{117, 6},
{112, 5},
{123, 1},
{123, 3},
{106, 4},
{94, 0},
{94, 1},
{97, 0},
{97, 1},
{111, 0},
{111, 4},
{110, 1},
{110, 3},
{107, 1},
{107, 1},
{99, 2},
{99, 3},
{98, 3},
{98, 5},
{132, 3},
{132, 1},
{121, 2},
{121, 1},
{104, 4},
{126, 0},
{126, 1},
{125, 1},
{125, 3},
{130, 0},
{130, 1},
{129, 1},
{129, 3},
{120, 1},
{120, 1},
{120, 1},
{120, 2},
{120, 2},
{131, 1},
{131, 1},
{124, 1},
{124, 1},
{108, 1},
{108, 1},
{108, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{116, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{115, 1},
{113, 1},
{113, 1},
{114, 1},
{114, 1},
{114, 1},
{114, 1},
{103, 1},
{103, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{109, 1},
{122, 1},
{122, 1},
{105, 1},
{105, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
{95, 1},
}
yyhintXErrors = map[yyhintXError]string{}
yyhintParseTab = [320][]uint16{
// 0
{1: 298, 255, 248, 250, 285, 294, 269, 271, 272, 274, 243, 283, 302, 262, 258, 288, 275, 267, 261, 257, 266, 226, 245, 246, 247, 273, 299, 233, 238, 260, 295, 296, 276, 249, 251, 305, 270, 278, 263, 259, 300, 268, 252, 277, 287, 279, 290, 281, 254, 265, 234, 286, 237, 242, 301, 244, 236, 289, 304, 235, 256, 280, 253, 303, 297, 264, 239, 292, 282, 284, 293, 291, 103: 240, 108: 227, 241, 112: 225, 232, 115: 231, 229, 224, 230, 228, 127: 223, 222},
{93: 221},
{1: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 412, 93: 220, 97: 538},
{1: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 93: 219},
{1: 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 93: 217},
// 5
{92: 535},
{92: 532},
{92: 529},
{92: 524},
{92: 521},
// 10
{92: 510},
{92: 498},
{92: 494},
{92: 490},
{92: 485},
// 15
{92: 482},
{92: 470},
{92: 463},
{92: 458},
{92: 452},
// 20
{92: 449},
{92: 443},
{92: 423},
{92: 306},
{92: 153},
// 25
{92: 152},
{92: 151},
{92: 150},
{92: 149},
{92: 148},
// 30
{92: 147},
{92: 146},
{92: 145},
{92: 144},
{92: 143},
// 35
{92: 142},
{92: 141},
{92: 140},
{92: 139},
{92: 138},
// 40
{92: 137},
{92: 136},
{92: 135},
{92: 134},
{92: 133},
// 45
{92: 132},
{92: 131},
{92: 130},
{92: 129},
{92: 128},
// 50
{92: 127},
{92: 126},
{92: 125},
{92: 124},
{92: 123},
// 55
{92: 122},
{92: 121},
{92: 120},
{92: 119},
{92: 118},
// 60
{92: 117},
{92: 116},
{92: 115},
{92: 114},
{92: 113},
// 65
{92: 112},
{92: 111},
{92: 110},
{92: 109},
{92: 108},
// 70
{92: 103},
{92: 102},
{92: 101},
{92: 100},
{92: 99},
// 75
{92: 98},
{92: 97},
{92: 96},
{92: 95},
{92: 94},
// 80
{92: 93},
{92: 92},
{92: 91},
{92: 90},
{92: 89},
// 85
{78: 189, 189, 86: 308, 94: 307},
{78: 313, 312, 105: 311, 310, 123: 309},
{188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 87: 188, 188, 188, 188},
{420, 73: 421},
{192, 73: 192},
// 90
{100: 314},
{100: 86},
{100: 85},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 316, 99: 315},
{73: 418, 88: 417},
// 95
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 317},
{179, 73: 179, 88: 179},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 88: 189, 404, 189, 94: 403},
{84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84},
{83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83},
// 100
{82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82},
{81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81},
{80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80},
{79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79},
{78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78},
// 105
{77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77},
{76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76},
{75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75},
{74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74},
{73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73},
// 110
{72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72},
{71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71},
{70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70},
{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, 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, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68},
// 115
{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, 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, 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, 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, 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, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63},
// 120
{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, 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, 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, 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, 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, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58},
// 125
{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, 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, 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, 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, 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, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53},
// 130
{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, 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, 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, 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, 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, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48},
// 135
{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, 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, 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, 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, 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, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43},
// 140
{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, 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, 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, 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, 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, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38},
// 145
{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, 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, 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, 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, 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, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33},
// 150
{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, 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, 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, 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, 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, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28},
// 155
{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, 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, 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, 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, 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, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23},
// 160
{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, 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, 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, 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, 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, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18},
// 165
{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, 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, 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, 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, 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, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
// 170
{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, 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, 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, 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, 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, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
// 175
{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, 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, 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, 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, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
// 180
{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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 88: 185, 90: 407, 111: 416},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 405},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 88: 189, 90: 189, 94: 406},
// 185
{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 88: 185, 90: 407, 111: 408},
{92: 409},
{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, 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, 88: 176},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 411, 110: 410},
{413, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 412, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 97: 414},
// 190
{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183},
{186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 74: 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 87: 186, 96: 186},
{184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 88: 184},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 415},
{182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 87: 182},
// 195
{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, 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, 88: 177},
{190, 73: 190},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 419},
{178, 73: 178, 88: 178},
{1: 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 93: 193},
// 200
{78: 313, 312, 105: 311, 422},
{191, 73: 191},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 308, 189, 94: 424, 426, 110: 425},
{87: 441},
{437, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 412, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 87: 187, 97: 438},
// 205
{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 87: 183, 91: 427},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 87: 431, 95: 430, 429, 101: 432, 433, 120: 428},
{436},
{162},
{161},
// 210
{160},
{87: 435},
{87: 434},
{158},
{159},
// 215
{1: 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 93: 194},
{1: 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 93: 196},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 87: 439, 95: 415},
{440},
{1: 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 93: 195},
// 220
{442},
{1: 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 93: 197},
{81: 189, 189, 86: 308, 94: 444},
{81: 446, 447, 122: 445},
{448},
// 225
{88},
{87},
{1: 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 93: 198},
{189, 86: 308, 94: 450},
{451},
// 230
{1: 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 93: 199},
{80: 189, 83: 189, 86: 308, 94: 453},
{80: 456, 83: 455, 124: 454},
{457},
{155},
// 235
{154},
{1: 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 93: 200},
{96: 459},
{73: 412, 96: 187, 460},
{96: 461},
// 240
{462},
{1: 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 93: 201},
{86: 308, 189, 94: 464},
{87: 465},
{84: 468, 467, 131: 466},
// 245
{469},
{157},
{156},
{1: 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 93: 202},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 471},
// 250
{472, 73: 473},
{1: 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 93: 204},
{189, 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 308, 89: 189, 94: 477, 476, 121: 475, 132: 474},
{479, 89: 480},
{174, 89: 174},
// 255
{189, 86: 308, 89: 189, 94: 478},
{172, 89: 172},
{173, 89: 173},
{1: 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 93: 203},
{189, 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 308, 89: 189, 94: 477, 476, 121: 481},
// 260
{175, 89: 175},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 483},
{484},
{1: 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 93: 205},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 486},
// 265
{91: 487},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 87: 431, 95: 430, 429, 101: 432, 433, 120: 488},
{489},
{1: 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 93: 206},
{86: 308, 189, 94: 491},
// 270
{87: 492},
{493},
{1: 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 93: 207},
{86: 308, 189, 94: 495},
{87: 496},
// 275
{497},
{1: 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 93: 208},
{189, 74: 189, 189, 189, 189, 86: 308, 94: 499},
{166, 74: 503, 504, 505, 506, 114: 502, 129: 501, 500},
{509},
// 280
{165, 73: 507},
{164, 73: 164},
{107, 73: 107},
{106, 73: 106},
{105, 73: 105},
// 285
{104, 73: 104},
{74: 503, 504, 505, 506, 114: 508},
{163, 73: 163},
{1: 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 93: 209},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 512, 104: 511},
// 290
{520},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 513},
{187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 412, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 97: 514},
{170, 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 517, 125: 516, 515},
{171},
// 295
{169, 73: 518},
{168, 73: 168},
{1: 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 519},
{167, 73: 167},
{1: 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 93: 210},
// 300
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 512, 104: 522},
{523},
{1: 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 93: 211},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 527, 99: 526, 107: 525},
{528},
// 305
{181, 73: 418},
{180, 349, 372, 324, 326, 386, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 380, 334, 363, 356, 359, 362, 320, 321, 322, 323, 388, 350, 344, 365, 332, 353, 354, 336, 325, 327, 390, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 385, 378, 347, 367, 368, 369, 346, 342, 389, 345, 373, 340, 370, 387, 374, 375, 383, 384, 377, 376, 381, 382, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 317},
{1: 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 93: 212},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 527, 99: 526, 107: 530},
{531},
// 310
{1: 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 93: 213},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 316, 99: 533},
{534, 73: 418},
{1: 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 93: 214},
{189, 86: 308, 94: 536},
// 315
{537},
{1: 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 93: 215},
{1: 298, 255, 248, 250, 285, 294, 269, 271, 272, 274, 243, 283, 302, 262, 258, 288, 275, 267, 261, 257, 266, 226, 245, 246, 247, 273, 299, 233, 238, 260, 295, 296, 276, 249, 251, 305, 270, 278, 263, 259, 300, 268, 252, 277, 287, 279, 290, 281, 254, 265, 234, 286, 237, 242, 301, 244, 236, 289, 304, 235, 256, 280, 253, 303, 297, 264, 239, 292, 282, 284, 293, 291, 103: 240, 108: 227, 241, 112: 540, 232, 115: 231, 229, 539, 230, 228},
{1: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 93: 218},
{1: 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 93: 216},
}
)
var yyhintDebug = 0
type yyhintLexer interface {
Lex(lval *yyhintSymType) int
Errorf(format string, a ...interface{}) error
AppendError(err error)
AppendWarn(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 = 134
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 = ast.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 = ast.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: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: yyS[yypt-1].number,
}
}
case 14:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: int64(yyS[yypt-1].number),
}
}
case 15:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: ast.HintSetVar{
VarName: yyS[yypt-3].ident,
Value: yyS[yypt-1].ident,
},
}
}
case 16:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
HintData: yyS[yypt-1].ident,
}
}
case 17:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 18:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
QBName: ast.NewCIStr(yyS[yypt-3].ident),
Tables: yyS[yypt-1].hint.Tables,
}
}
case 19:
{
maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number
if yyS[yypt-2].number <= maxValue {
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number),
QBName: ast.NewCIStr(yyS[yypt-3].ident),
}
} else {
yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(math.MaxInt))
parser.lastErrorAsWarn()
parser.yyVAL.hint = nil
}
}
case 20:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: ast.HintTimeRange{
From: yyS[yypt-3].ident,
To: yyS[yypt-1].ident,
},
}
}
case 21:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-4].ident)
h.QBName = ast.NewCIStr(yyS[yypt-2].ident)
parser.yyVAL.hint = h
}
case 22:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 23:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 24:
{
parser.warnUnsupportedHint(yyS[yypt-4].ident)
parser.yyVAL.hint = nil
}
case 25:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 26:
{
parser.warnUnsupportedHint(yyS[yypt-5].ident)
parser.yyVAL.hint = nil
}
case 27:
{
parser.warnUnsupportedHint(yyS[yypt-5].ident)
parser.yyVAL.hint = nil
}
case 28:
{
hs := yyS[yypt-1].hints
name := ast.NewCIStr(yyS[yypt-4].ident)
qb := ast.NewCIStr(yyS[yypt-2].ident)
for _, h := range hs {
h.HintName = name
h.QBName = qb
}
parser.yyVAL.hints = hs
}
case 29:
{
parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
}
case 30:
{
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
}
case 31:
{
h := yyS[yypt-1].hint
h.HintData = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 32:
{
parser.yyVAL.ident = ""
}
case 36:
{
parser.yyVAL.modelIdents = nil
}
case 37:
{
parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents
}
case 38:
{
parser.yyVAL.modelIdents = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 39:
{
parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, ast.NewCIStr(yyS[yypt-0].ident))
}
case 41:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 42:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Tables: []ast.HintTable{yyS[yypt-0].table},
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 43:
{
h := yyS[yypt-2].hint
h.Tables = append(h.Tables, yyS[yypt-0].table)
parser.yyVAL.hint = h
}
case 44:
{
parser.yyVAL.table = ast.HintTable{
TableName: ast.NewCIStr(yyS[yypt-2].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
PartitionList: yyS[yypt-0].modelIdents,
}
}
case 45:
{
parser.yyVAL.table = ast.HintTable{
DBName: ast.NewCIStr(yyS[yypt-4].ident),
TableName: ast.NewCIStr(yyS[yypt-2].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
PartitionList: yyS[yypt-0].modelIdents,
}
}
case 46:
{
h := yyS[yypt-2].hint
h.Tables = append(h.Tables, yyS[yypt-0].table)
parser.yyVAL.hint = h
}
case 47:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Tables: []ast.HintTable{yyS[yypt-0].table},
}
}
case 48:
{
parser.yyVAL.table = ast.HintTable{
TableName: ast.NewCIStr(yyS[yypt-1].ident),
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 49:
{
parser.yyVAL.table = ast.HintTable{
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 50:
{
h := yyS[yypt-0].hint
h.Tables = []ast.HintTable{yyS[yypt-2].table}
h.QBName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 51:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{}
}
case 53:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Indexes: []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)},
}
}
case 54:
{
h := yyS[yypt-2].hint
h.Indexes = append(h.Indexes, ast.NewCIStr(yyS[yypt-0].ident))
parser.yyVAL.hint = h
}
case 61:
{
parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
}
case 62:
{
parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
}
case 63:
{
if yyS[yypt-0].number > 9223372036854775808 {
yylex.AppendError(yylex.Errorf("the Signed Value should be at the range of [-9223372036854775808, 9223372036854775807]."))
return 1
} else if yyS[yypt-0].number == 9223372036854775808 {
signed_one := int64(1)
parser.yyVAL.ident = strconv.FormatInt(signed_one<<63, 10)
} else {
parser.yyVAL.ident = strconv.FormatInt(-int64(yyS[yypt-0].number), 10)
}
}
case 64:
{
parser.yyVAL.number = 1024 * 1024
}
case 65:
{
parser.yyVAL.number = 1024 * 1024 * 1024
}
case 66:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true}
}
case 67:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: false}
}
}
if !parser.lexer.skipPositionRecording {
yyhintSetOffset(parser.yyVAL, parser.yyVAL.offset)
}
if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) {
return -1
}
goto yystack /* stack new state and value */
}