0 txs
0 calls
constructor
No constructor.
functions
getAccountOrders
viewfunction getAccountOrders(address dataStore, address account, uint256 start, uint256 end) view returns (tuple[])
getAccountPositionInfoList
viewfunction getAccountPositionInfoList(address dataStore, address referralStorage, address account, address[] markets, tuple[] marketPrices, address uiFeeReceiver, uint256 start, uint256 end) view returns (tuple[])
getAccountPositions
viewfunction getAccountPositions(address dataStore, address account, uint256 start, uint256 end) view returns (tuple[])
getAdlState
viewfunction getAdlState(address dataStore, address market, bool isLong, tuple prices) view returns (uint256, bool, int256, uint256)
getDeposit
viewfunction getDeposit(address dataStore, bytes32 key) view returns (tuple)
getDepositAmountOut
viewfunction getDepositAmountOut(address dataStore, tuple market, tuple prices, uint256 longTokenAmount, uint256 shortTokenAmount, address uiFeeReceiver, uint8 swapPricingType, bool includeVirtualInventoryImpact) view returns (uint256)
getExecutionPrice
viewfunction getExecutionPrice(address dataStore, address marketKey, tuple indexTokenPrice, uint256 positionSizeInUsd, uint256 positionSizeInTokens, int256 sizeDeltaUsd, bool isLong) view returns (tuple)
getMarket
viewfunction getMarket(address dataStore, address key) view returns (tuple)
getMarketBySalt
viewfunction getMarketBySalt(address dataStore, bytes32 salt) view returns (tuple)
getMarketInfo
viewfunction getMarketInfo(address dataStore, tuple prices, address marketKey) view returns (tuple)
getMarketInfoList
viewfunction getMarketInfoList(address dataStore, tuple[] marketPricesList, uint256 start, uint256 end) view returns (tuple[])
getMarkets
viewfunction getMarkets(address dataStore, uint256 start, uint256 end) view returns (tuple[])
getMarketTokenPrice
viewfunction getMarketTokenPrice(address dataStore, tuple market, tuple indexTokenPrice, tuple longTokenPrice, tuple shortTokenPrice, bytes32 pnlFactorType, bool maximize) view returns (int256, tuple)
getNetPnl
viewfunction getNetPnl(address dataStore, tuple market, tuple indexTokenPrice, bool maximize) view returns (int256)
getOpenInterestWithPnl
viewfunction getOpenInterestWithPnl(address dataStore, tuple market, tuple indexTokenPrice, bool isLong, bool maximize) view returns (int256)
getOrder
viewfunction getOrder(address dataStore, bytes32 key) view returns (tuple)
getPendingPositionImpactPoolDistributionAmount
viewfunction getPendingPositionImpactPoolDistributionAmount(address dataStore, address market) view returns (uint256, uint256)
getPnl
viewfunction getPnl(address dataStore, tuple market, tuple indexTokenPrice, bool isLong, bool maximize) view returns (int256)
getPnlToPoolFactor
viewfunction getPnlToPoolFactor(address dataStore, address marketAddress, tuple prices, bool isLong, bool maximize) view returns (int256)
getPosition
viewfunction getPosition(address dataStore, bytes32 key) view returns (tuple)
getPositionInfo
viewfunction getPositionInfo(address dataStore, address referralStorage, bytes32 positionKey, tuple prices, uint256 sizeDeltaUsd, address uiFeeReceiver, bool usePositionSizeAsSizeDeltaUsd) view returns (tuple)
getPositionInfoList
viewfunction getPositionInfoList(address dataStore, address referralStorage, bytes32[] positionKeys, tuple[] prices, address uiFeeReceiver) view returns (tuple[])
getPositionPnlUsd
viewfunction getPositionPnlUsd(address dataStore, tuple market, tuple prices, bytes32 positionKey, uint256 sizeDeltaUsd) view returns (int256, int256, uint256)
getShift
viewfunction getShift(address dataStore, bytes32 key) view returns (tuple)
getSwapAmountOut
viewfunction getSwapAmountOut(address dataStore, tuple market, tuple prices, address tokenIn, uint256 amountIn, address uiFeeReceiver) view returns (uint256, int256, tuple fees)
getSwapPriceImpact
viewfunction getSwapPriceImpact(address dataStore, address marketKey, address tokenIn, address tokenOut, uint256 amountIn, tuple tokenInPrice, tuple tokenOutPrice) view returns (int256, int256, int256)
getWithdrawal
viewfunction getWithdrawal(address dataStore, bytes32 key) view returns (tuple)
getWithdrawalAmountOut
viewfunction getWithdrawalAmountOut(address dataStore, tuple market, tuple prices, uint256 marketTokenAmount, address uiFeeReceiver, uint8 swapPricingType) view returns (uint256, uint256)
isPositionLiquidatable
viewfunction isPositionLiquidatable(address dataStore, address referralStorage, bytes32 positionKey, tuple market, tuple prices, bool shouldValidateMinCollateralUsd) view returns (bool, string, tuple)
events
No events.
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506159e480620000216000396000f3fe608060405234801561001057600080fd5b506004361061015e5760003560e01c8062e261b7146101635780630815bce11461018e578063095ce6c5146101ae5780630fa8f516146102575780631485d2971461027757806324c029e0146102975780632572d8f9146102b85780632b17b4fd146102e0578063409f37c71461031357806342a6f8d31461038557806349651b6a146103a55780635d2b44f9146103c55780635d5c6efe146103e55780635deceb8414610413578063714af34b1461042657806377cfb16214610446578063847bb4691461046657806393703f8714610486578063971de27d14610499578063a0140938146104ac578063a4f0d550146104bf578063addac2e0146104d2578063b05e0ea014610571578063b4976dae14610591578063bc7b5bba146105a4578063bfbf451a146105c4578063ce3264bf146105d7578063ceeea3bf146105f7578063fd50649d14610617575b600080fd5b610176610171366004612bca565b61062a565b60405161018593929190612c67565b60405180910390f35b6101a161019c366004612cc1565b61076c565b6040516101859190613059565b6101c16101bc366004613068565b610807565b60405161018592919060006101808201905083825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e083015161010081818501528085015191505061012081818501528085015191505061014081818501528085015161016085015250509392505050565b61026a6102653660046130e5565b6108fb565b6040516101859190613111565b61028a6102853660046130e5565b610987565b6040516101859190613164565b6102aa6102a5366004613268565b610a0d565b604051908152602001610185565b6102cb6102c63660046132e8565b610a28565b60408051928352602083019190915201610185565b6102f36102ee36600461335f565b610abb565b604080519485529215156020850152918301526060820152608001610185565b6103266103213660046133bb565b610b51565b604080519384526020808501939093528151848201529181015160608085019190915291810151608080850191909152918101516001600160a01b031660a0808501919091529181015160c0840152015160e082015261010001610185565b610398610393366004613428565b610c2b565b604051610185919061362c565b6103b86103b33660046130e5565b610cb0565b604051610185919061368e565b6103d86103d33660046136a1565b610d35565b604051610185919061370c565b6103f86103f336600461371a565b610e4e565b60408051938452602084019290925290820152606001610185565b6102aa6104213660046137a4565b610f69565b61043961043436600461383c565b611001565b60405161018591906138a8565b610459610454366004613428565b611083565b60405161018591906138b6565b610479610474366004613905565b611108565b6040516101859190613a27565b6102cb61049436600461383c565b611197565b6102aa6104a7366004613a36565b6111b0565b6102aa6104ba366004613268565b61123c565b6104396104cd3660046130e5565b61124b565b6104e56104e03660046130e5565b61128c565b60408051825180516001600160a01b0390811683526020808301518216818501528285015182168486015260608084015183168186015260808085015184168187015260a0948501519093169385019390935294850151805160c08501529485015160e08401529284015161010083015283015161012082015291015161014082015261016001610185565b61058461057f366004613b33565b61130f565b6040516101859190613c52565b6103f861059f366004613c95565b61139c565b6105b76105b2366004613cf1565b6114b2565b6040516101859190613d50565b6105846105d2366004613d93565b611537565b6105ea6105e5366004613e83565b6115be565b6040516101859190613eb8565b61060a6106053660046130e5565b61164f565b6040516101859190613efa565b6102aa610625366004613fc3565b6116d5565b6000606061065260405180606001604052806000815260200160008152602001600081525090565b60405163fdfc26f360e01b81526000907362de729c2529998d28f59cf75a8300630d2f18bc9063fdfc26f39061068e908d908c9060040161401e565b6101a060405180830381865af41580156106ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d09190614193565b604051633e2d58cd60e21b815290915073c4bb9a78e82aa1cd437db1bed9285bab3e3c85119063f8b5633490610714908d908d9086908d908d908d906004016141e0565b600060405180830381865af4158015610731573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107599190810190614270565b9350935093505096509650969350505050565b6107746122d1565b6040516306bc109960e31b815273fffe94dd6ec5c076b8e0b0fcdd5ac5d30f6c9d87906335e084c8906107b7908b908b908b908b908b908b908b90600401614329565b6107c060405180830381865af41580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906146ab565b90505b979650505050505050565b600061086660405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051637d494dc360e01b815273091821658bc02784e90c700e34382d1657242cb790637d494dc3906108a9908c908c908c908c908c908c908c906004016146c8565b61018060405180830381865af41580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb919061472a565b9150915097509795505050505050565b610903612321565b60405163fdfc26f360e01b81527362de729c2529998d28f59cf75a8300630d2f18bc9063fdfc26f39061093c908690869060040161401e565b6101a060405180830381865af415801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190614193565b90505b92915050565b61098f6123b7565b60405163fdfc26f360e01b815273035a9a047d20a486e14a613b04d5a95d7a617c5d9063fdfc26f3906109c8908690869060040161401e565b600060405180830381865af41580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097e919081019061484d565b6000610a1c86868686866116e3565b90505b95945050505050565b60008073c7eb480912be3cf3447327978ffc19abd6d21eac63b027d32d8989898989896040518763ffffffff1660e01b8152600401610a6c969594939291906149b7565b6040805180830381865af4158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614a02565b91509150965096945050505050565b600080600080739e2cd7e301c19098fc99c6ae0c0053a3dcbe1ac2631d81085c898989896040518563ffffffff1660e01b8152600401610afe9493929190614a26565b608060405180830381865af4158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3f9190614a54565b929b919a509850909650945050505050565b600080610b966040518060c0016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b60405163dafa66bf60e01b8152733b753c0d0ae55530f24532b8bb9d0bacd5b675c09063dafa66bf90610bd7908c908c908c908c908c908c90600401614a92565b61010060405180830381865af4158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c199190614ae4565b92509250925096509650969350505050565b604051635b4df72360e11b8152606090739e2cd7e301c19098fc99c6ae0c0053a3dcbe1ac29063b69bee4690610c6b908890889088908890600401614b6c565b600060405180830381865af4158015610c88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1f9190810190614dbb565b610cb8612449565b6040516218cbb560eb1b8152739e2cd7e301c19098fc99c6ae0c0053a3dcbe1ac29063c65da80090610cf0908690869060040161401e565b600060405180830381865af4158015610d0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097e9190810190614e6b565b610d3d612520565b60405163a8d8fff560e01b815260009073846d1b8c17adfa67fffefe83b7dbebfd598f91069063a8d8fff590610d79908c908c90600401614e9f565b608060405180830381865af4158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba9190614f16565b604051630a37d4c760e11b8152909150733b753c0d0ae55530f24532b8bb9d0bacd5b675c09063146fa98e90610e00908c9085908c908c908c908c908c90600401614f32565b606060405180830381865af4158015610e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e419190614f86565b9998505050505050505050565b60008060008073846d1b8c17adfa67fffefe83b7dbebfd598f910663a8d8fff58c8c6040518363ffffffff1660e01b8152600401610e8d929190614e9f565b608060405180830381865af4158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ece9190614f16565b6040516340f5d44f60e11b8152909150733b753c0d0ae55530f24532b8bb9d0bacd5b675c0906381eba89e90610f14908e9085908e908e908e908e908e90600401614fa2565b606060405180830381865af4158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190614ff4565b935093509350509750975097945050505050565b604051632bf0549960e11b8152600090739dd91b77201920917c4e7e713899586b2832d8fb906357e0a93290610fb1908c908c908c908c908c908c908c908c90600401615022565b602060405180830381865af4158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff2919061508b565b90505b98975050505050505050565b611009612541565b60405163a8d8fff560e01b815273846d1b8c17adfa67fffefe83b7dbebfd598f91069063a8d8fff5906110429086908690600401614e9f565b608060405180830381865af415801561105f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190614f16565b60405163282ece5960e11b815260609073fffe94dd6ec5c076b8e0b0fcdd5ac5d30f6c9d879063505d9cb2906110c3908890889088908890600401614b6c565b600060405180830381865af41580156110e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1f91908101906150a4565b611110612568565b60405163619c4ddb60e01b8152739e2cd7e301c19098fc99c6ae0c0053a3dcbe1ac29063619c4ddb9061114b9087908790879060040161513e565b6103a060405180830381865af4158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906152d8565b90505b9392505050565b6000806111a48484611774565b915091505b9250929050565b60008073846d1b8c17adfa67fffefe83b7dbebfd598f910663a8d8fff588886040518363ffffffff1660e01b81526004016111ec929190614e9f565b608060405180830381865af4158015611209573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122d9190614f16565b90506107fc8782878787611909565b6000610a1c868686868661194d565b611253612541565b6040516329bc01e160e11b815273846d1b8c17adfa67fffefe83b7dbebfd598f91069063537803c290611042908690869060040161401e565b6112946125d9565b60405163fdfc26f360e01b81527376218bccd03933e3339458a60b00b0b86b07f4b29063fdfc26f3906112cd908690869060040161401e565b61016060405180830381865af41580156112eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190615343565b604051637810908160e01b815260609073fffe94dd6ec5c076b8e0b0fcdd5ac5d30f6c9d8790637810908190611357908c908c908c908c908c908c908c908c9060040161543a565b600060405180830381865af4158015611374573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ff291908101906154d7565b6000806000807362de729c2529998d28f59cf75a8300630d2f18bc63fdfc26f38a886040518363ffffffff1660e01b81526004016113db92919061401e565b6101a060405180830381865af41580156113f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141d9190614193565b60405163e22de79360e01b815290915073c4bb9a78e82aa1cd437db1bed9285bab3e3c85119063e22de7939061145f908c908c908c9087908c90600401615565565b606060405180830381865af415801561147c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a09190614ff4565b93509350935050955095509592505050565b6040516340c774bb60e11b8152606090739e2cd7e301c19098fc99c6ae0c0053a3dcbe1ac29063818ee976906114f29088908890889088906004016155af565b600060405180830381865af415801561150f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1f91908101906155e6565b604051636aeb875560e01b815260609073fffe94dd6ec5c076b8e0b0fcdd5ac5d30f6c9d8790636aeb8755906115799089908990899089908990600401615674565b600060405180830381865af4158015611596573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1c91908101906154d7565b6040516326d0fa7f60e21b81526001600160a01b03841660048201526024810183905260448101829052606090739e2cd7e301c19098fc99c6ae0c0053a3dcbe1ac290639b43e9fc90606401600060405180830381865af4158015611627573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261118d91908101906156f2565b61165761264a565b60405163fdfc26f360e01b815273f06ba26a6ab2c43f471d1099e6f24b1b4832df959063fdfc26f390611690908690869060040161401e565b600060405180830381865af41580156116ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261097e9190810190615782565b6000610a1f85858585611978565b6000806116f96116f48888876119a7565b6119fa565b90506000611708888887611a6d565b9050811580611715575080155b1561172557600092505050610a1f565b6000611732878787611ab4565b905060006117436116f483856158ce565b905060008761175b5761175682866158e5565b611765565b61176585836158e5565b9b9a5050505050505050505050565b60008060006117838585611aed565b905080600003611798576000925090506111a9565b6000856001600160a01b031663bd02d0f56117b287611b66565b6040518263ffffffff1660e01b81526004016117d091815260200190565b602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611811919061508b565b90508060000361182757506000925090506111a9565b6000866001600160a01b031663bd02d0f561184188611c02565b6040518263ffffffff1660e01b815260040161185f91815260200190565b602060405180830381865afa15801561187c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a0919061508b565b90508083116118b857600083945094505050506111a9565b60006118c4828561590c565b905060006118d28989611c45565b905060006118e08286611ce5565b9050828111156118ed5750815b806118f8818861590c565b975097505050505050509250929050565b60008061191a878787878715611cfe565b90508060000361192e576000915050610a1f565b60006119418888886000015188886116e3565b9050610ff58183611d77565b60008061195b8787866119a7565b9050600061196c88888888886116e3565b9050610ff58282611db6565b6000806119898686866001876116e3565b9050600061199b8787876000886116e3565b90506107fc818361591f565b6000806119bc84604001518560600151611dcc565b905060006119d586866000015187604001518786611dfb565b905060006119ee87876000015188606001518887611dfb565b90506107fc8183615947565b60006001600160ff1b03821115611a695760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084015b60405180910390fd5b5090565b600080611a8284604001518560600151611dcc565b90506000611a9b86866000015187604001518786611e81565b905060006119ee87876000015188606001518887611e81565b60008215611ad55781611ac8578351611ace565b83602001515b9050611190565b81611ae457836020015161118d565b50509051919050565b6000826001600160a01b031663bd02d0f5611b0784611e9e565b6040518263ffffffff1660e01b8152600401611b2591815260200190565b602060405180830381865afa158015611b42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e919061508b565b6000604051602001611bb89060208082526026908201527f504f534954494f4e5f494d504143545f504f4f4c5f444953545249425554494f6040820152654e5f5241544560d01b606082015260800190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03841690820152606001604051602081830303815290604052805190602001209050919050565b6000604051602001611bb8906020808252601f908201527f4d494e5f504f534954494f4e5f494d504143545f504f4f4c5f414d4f554e5400604082015260600190565b600080836001600160a01b031663bd02d0f5611c6085611edf565b6040518263ffffffff1660e01b8152600401611c7e91815260200190565b602060405180830381865afa158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf919061508b565b905080600003611cd3576000915050610981565b611cdd814261590c565b949350505050565b600061097e838368327cb2734119d3b7a9601e1b611f2e565b60008083611d10578560600151611d16565b85604001515b90506000611d25888884611f3b565b905060008415611d535785611d4257866040015160200151611d4c565b8660200151602001515b9050611d6d565b85611d6357604087015151611d6a565b6020870151515b90505b610e4181836158ce565b600080611d8c611d8685611fd9565b84611fea565b905060008413611dad57611d9f816119fa565b611da89061595a565b611cdd565b611cdd816119fa565b600081611dc2846119fa565b61097e919061591f565b6000816001600160a01b0316836001600160a01b031614611dee576001611df1565b60025b60ff169392505050565b600081866001600160a01b031663bd02d0f5611e18888888611ff8565b6040518263ffffffff1660e01b8152600401611e3691815260200190565b602060405180830381865afa158015611e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e77919061508b565b610a1c919061598c565b600081866001600160a01b031663bd02d0f5611e1888888861208a565b6000604051602001611bb8906020808252601b908201527a1413d4d2551253d397d253541050d517d413d3d317d05353d55395602a1b604082015260600190565b6000604051602001611bb89060208082526023908201527f504f534954494f4e5f494d504143545f504f4f4c5f444953545249425554454460408201526217d05560ea1b606082015260800190565b600061118d8484846120c7565b600080611f5084604001518560600151611dcc565b905080856001600160a01b031663bd02d0f5611f708760000151876121b1565b6040518263ffffffff1660e01b8152600401611f8e91815260200190565b602060405180830381865afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf919061508b565b610a1f919061598c565b600080821215611a69575060000390565b600061097e83836000612238565b600060405160200161202b906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0016040516020818303038152906040528051906020012090509392505050565b600060405160200161202b906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b6000808060001985870985870292508281108382030391505080600003612101578382816120f7576120f7615976565b0492505050611190565b8084116121485760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611a60565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006040516020016121e2906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03808616918301919091528316606082015260800160405160208183030381529060405280519060200120905092915050565b60008360000361224a57506000611190565b811561226957611ace8468327cb2734119d3b7a9601e1b856001612280565b61118d8468327cb2734119d3b7a9601e1b856120c7565b60008061228e8686866120c7565b905060018360028111156122a4576122a461346e565b1480156122c15750600084806122bc576122bc615976565b868809115b15610a1f57610a1c600182615947565b6040805160e0810190915260008152602081016122ec612321565b81526020016122f9612692565b8152602001612306612520565b81526020016000815260200160008152602001600081525090565b6040805160c081019091526000606082018181526080830182905260a08301919091528190815260200161239a6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526040805160208181019092526000815291015290565b905290565b604080516101808101909152600060608083018281526080840183905260a0840183905260c0840183905260e084018390526101008401839052610120840192909252610140830181905261016083015281905b815260200161239a6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101608101909152600060608083018281526080840183905260a0840183905260c0840183905260e0840183905261010084018390526101208401929092526101408301528152602081016124f66040805161016081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526040805160808101825260008082526020828101829052928201819052606082015291015290565b60405180606001604052806000815260200160008152602001600081525090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518060e0016040528061257b612541565b8152602001600081526020016000815260200161259661285e565b81526020016125a361287e565b81526020016125cc60405180606001604052806000815260200160008152602001600081525090565b8152600060209091015290565b60408051610100810182526000918101828152606082018390526080820183905260a0820183905260c0820183905260e082019290925290819081526020016123b26040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516101408101909152600060608083018281526080840183905260a0840183905260c0840183905260e08401929092526101008301819052610120830152819061240b565b6040518061022001604052806127096040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200161273260405180606001604052806000815260200160008152602001600081525090565b81526020016127706040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020016127a06040518060800160405280600081526020016000815260200160008152602001600081525090565b815260408051606081018252600080825260208281018290529282015291019081526020016127f06040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001612812604051806040016040528060008152602001600081525090565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60405180604001604052806128716128a4565b81526020016123b26128a4565b6040518060a0016040528060001515815260200160008152602001600081526020016128715b604080516080810182526000918101828152606082019290925290819081526020016123b2604051806040016040528060008152602001600081525090565b6001600160a01b03811681146128f857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612933576129336128fb565b60405290565b604080519081016001600160401b0381118282101715612933576129336128fb565b604051606081016001600160401b0381118282101715612933576129336128fb565b60405161012081016001600160401b0381118282101715612933576129336128fb565b60405161014081016001600160401b0381118282101715612933576129336128fb565b60405160c081016001600160401b0381118282101715612933576129336128fb565b60405160e081016001600160401b0381118282101715612933576129336128fb565b60405161022081016001600160401b0381118282101715612933576129336128fb565b60405161016081016001600160401b0381118282101715612933576129336128fb565b60405161010081016001600160401b0381118282101715612933576129336128fb565b60405160a081016001600160401b0381118282101715612933576129336128fb565b604051601f8201601f191681016001600160401b0381118282101715612aba57612aba6128fb565b604052919050565b8035612acd816128e3565b919050565b600060808284031215612ae457600080fd5b612aec612911565b90508135612af9816128e3565b81526020820135612b09816128e3565b60208201526040820135612b1c816128e3565b60408201526060820135612b2f816128e3565b606082015292915050565b600060408284031215612b4c57600080fd5b612b54612939565b9050813581526020820135602082015292915050565b600060c08284031215612b7c57600080fd5b612b8461295b565b9050612b908383612b3a565b8152612b9f8360408401612b3a565b6020820152612bb18360808401612b3a565b604082015292915050565b80151581146128f857600080fd5b6000806000806000806101c08789031215612be457600080fd5b8635612bef816128e3565b95506020870135612bff816128e3565b945060408701359350612c158860608901612ad2565b9250612c248860e08901612b6a565b91506101a0870135612c3581612bbc565b809150509295509295509295565b60005b83811015612c5e578181015183820152602001612c46565b50506000910152565b831515815260a06020820152600083518060a0840152612c8e8160c0850160208801612c43565b60c0601f19601f830116840101915050825160408301526020830151606083015260408301516080830152949350505050565b6000806000806000806000610180888a031215612cdd57600080fd5b8735612ce8816128e3565b96506020880135612cf8816128e3565b955060408801359450612d0e8960608a01612b6a565b93506101208801359250610140880135612d27816128e3565b9150610160880135612d3881612bbc565b8091505092959891949750929550565b6001600160a01b03169052565b805160018060a01b03808251168452806020830151166020850152806040830151166040850152505060208101518051606084015260208101516080840152604081015160a0840152606081015160c0840152608081015160e084015260a0810151610100818186015260c083015161012086015260e08301516101408601528083015161016086015250505060408101515115156101808301525050565b805182526020810151612e0a6020840182612d48565b506040810151612e1d6040840182612d48565b50606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152505050565b8051825260208082015190830152604090810151910152565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b805182526020810151602083015260408101516040830152606081015160608301525050565b80518252602090810151910152565b805182526020810151612f0a6020840182612d55565b5060408101516101c0612f208185018351612df4565b6020820151612f33610300860182612e6c565b506040820151612f47610360860182612e85565b506060820151612f5b610420860182612ebf565b50608082015180516001600160a01b03166104a086015260208101516104c0860152604001516104e085015260a0820151612f9a610500860182612ebf565b5060c0820151612fae610580860182612ee5565b5060e08201516105c08501526101008201516105e08501526101208201516106008501526101408201516106208501526101608201516106408501526101808201516106608501526101a08201516106808501528101516106a08401526101e08101516106c084015261020001516106e08301526060810151613035610700840182612e6c565b50608081015161076083015260a081015161078083015260c001516107a090910152565b6107c081016109818284612ef4565b60008060008060008060006101a0888a03121561308457600080fd5b873561308f816128e3565b965061309e8960208a01612ad2565b95506130ad8960a08a01612b3a565b94506130bc8960e08a01612b3a565b93506130cc896101208a01612b3a565b92506101608801359150610180880135612d3881612bbc565b600080604083850312156130f857600080fd5b8235613103816128e3565b946020939093013593505050565b6101a081016109818284612d55565b600081518084526020808501945080840160005b838110156131595781516001600160a01b031687529582019590820190600101613134565b509495945050505050565b60208152600061012083516101008060208601526131858386018351612d48565b6020820151613198610140870182612d48565b5060408201516131ac610160870182612d48565b5060608201516131c0610180870182612d48565b5060808201516131d46101a0870182612d48565b5060a08201516131e86101c0870182612d48565b5060c08201516131fc6101e0870182612d48565b5060e082015183610200870152613217610240870182613120565b9282015186840361011f190161022088015292935061323890508383613120565b92506020860151915061324e6040860183612e85565b6040860151805115158683015291505b5090949350505050565b6000806000806000610120868803121561328157600080fd5b853561328c816128e3565b945061329b8760208801612ad2565b93506132aa8760a08801612b3a565b925060e08601356132ba81612bbc565b91506101008601356132cb81612bbc565b809150509295509295909350565b803560068110612acd57600080fd5b6000806000806000806101c0878903121561330257600080fd5b863561330d816128e3565b955061331c8860208901612ad2565b945061332b8860a08901612b6a565b93506101608701359250610180870135613344816128e3565b91506133536101a088016132d9565b90509295509295509295565b600080600080610120858703121561337657600080fd5b8435613381816128e3565b93506020850135613391816128e3565b925060408501356133a181612bbc565b91506133b08660608701612b6a565b905092959194509250565b6000806000806000806101c087890312156133d557600080fd5b86356133e0816128e3565b95506133ef8860208901612ad2565b94506133fe8860a08901612b6a565b935061016087013561340f816128e3565b925061018087013591506101a0870135612c35816128e3565b6000806000806080858703121561343e57600080fd5b8435613449816128e3565b93506020850135613459816128e3565b93969395505050506040820135916060013590565b634e487b7160e01b600052602160045260246000fd5b600981106134945761349461346e565b9052565b600381106134945761349461346e565b6134b3828251613484565b60208101516134c56020840182613498565b5060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015181840152505050565b805161020080845281516001600160a01b03908116918501919091526020820151166102208401526040810151600091613568610240860183612d48565b6060810151915061357d610260860183612d48565b60808101519150613592610280860183612d48565b60a081015191506135a76102a0860183612d48565b60c081015191506135bc6102c0860183612d48565b60e001516101006102e086015290506135d9610300850182613120565b905060208301516135ed60208601826134a8565b5060408381015180511515610180870152602081015115156101a08701529081015115156101c0860152606081015115156101e0860152509392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561368157603f1988860301845261366f85835161352a565b94509285019290850190600101613653565b5092979650505050505050565b60208152600061097e602083018461352a565b6000806000806000806000610100888a0312156136bd57600080fd5b87356136c8816128e3565b965060208801356136d8816128e3565b95506136e78960408a01612b3a565b94506080880135935060a0880135925060c0880135915060e0880135612d3881612bbc565b606081016109818284612e6c565b6000806000806000806000610120888a03121561373657600080fd5b8735613741816128e3565b96506020880135613751816128e3565b95506040880135613761816128e3565b94506060880135613771816128e3565b9350608088013592506137878960a08a01612b3a565b91506137968960e08a01612b3a565b905092959891949750929550565b600080600080600080600080610200898b0312156137c157600080fd5b88356137cc816128e3565b97506137db8a60208b01612ad2565b96506137ea8a60a08b01612b6a565b9550610160890135945061018089013593506101a089013561380b816128e3565b925061381a6101c08a016132d9565b91506101e089013561382b81612bbc565b809150509295985092959890939650565b6000806040838503121561384f57600080fd5b823561385a816128e3565b9150602083013561386a816128e3565b809150509250929050565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b608081016109818284613875565b6020808252825182820181905260009190848201906040850190845b818110156138f9576138e5838551612d55565b928401926101a092909201916001016138d2565b50909695505050505050565b6000806000610100848603121561391b57600080fd5b8335613926816128e3565b92506139358560208601612b6a565b915060e0840135613945816128e3565b809150509250925092565b61395b828251612ee5565b602081015161396d6040840182612ee5565b505050565b61397d828251613875565b60208101516080830152604081015160a083015260608101516139a460c084018251613950565b602001516139b6610140840182613950565b506080810151805115156101c084015260208101516101e0840152604081015161020084015260608101516139ef610220850182613950565b5060800151613a026102a0840182613950565b5060a0810151613a16610320840182612e6c565b5060c0015115156103809190910152565b6103a081016109818284613972565b60008060008060006101408688031215613a4f57600080fd5b8535613a5a816128e3565b94506020860135613a6a816128e3565b9350613a798760408801612b6a565b9250610100860135613a8a81612bbc565b91506101208601356132cb81612bbc565b60006001600160401b03821115613ab457613ab46128fb565b5060051b60200190565b600082601f830112613acf57600080fd5b81356020613ae4613adf83613a9b565b612a92565b82815260c09283028501820192828201919087851115613b0357600080fd5b8387015b85811015613b2657613b198982612b6a565b8452928401928101613b07565b5090979650505050505050565b600080600080600080600080610100898b031215613b5057600080fd5b8835613b5b816128e3565b9750602089810135613b6c816128e3565b975060408a0135613b7c816128e3565b965060608a01356001600160401b0380821115613b9857600080fd5b818c0191508c601f830112613bac57600080fd5b8135613bba613adf82613a9b565b81815260059190911b8301840190848101908f831115613bd957600080fd5b938501935b82851015613c00578435613bf1816128e3565b82529385019390850190613bde565b9950505060808c0135925080831115613c1857600080fd5b5050613c268b828c01613abe565b945050613c3560a08a01612ac2565b925060c0890135915060e089013590509295985092959890939650565b6020808252825182820181905260009190848201906040850190845b818110156138f957613c81838551612ef4565b928401926107c09290920191600101613c6e565b60008060008060006101a08688031215613cae57600080fd5b8535613cb9816128e3565b9450613cc88760208801612ad2565b9350613cd78760a08801612b6a565b949793965093946101608101359450610180013592915050565b60008060008060808587031215613d0757600080fd5b8435613d12816128e3565b935060208501356001600160401b03811115613d2d57600080fd5b613d3987828801613abe565b949794965050505060408301359260600135919050565b6020808252825182820181905260009190848201906040850190845b818110156138f957613d7f838551613972565b928401926103a09290920191600101613d6c565b600080600080600060a08688031215613dab57600080fd5b8535613db6816128e3565b9450602086810135613dc7816128e3565b945060408701356001600160401b0380821115613de357600080fd5b818901915089601f830112613df757600080fd5b8135613e05613adf82613a9b565b81815260059190911b8301840190848101908c831115613e2457600080fd5b938501935b82851015613e4257843582529385019390850190613e29565b975050506060890135925080831115613e5a57600080fd5b5050613e6888828901613abe565b925050613e7760808701612ac2565b90509295509295909350565b600080600060608486031215613e9857600080fd5b8335613ea3816128e3565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b818110156138f957613ee7838551613875565b9284019260809290920191600101613ed4565b602081526000825161010080602085015260018060a01b03808351166101208601528060208401511661014086015280604084015116610160860152506060820151613f4a610180860182612d48565b506080820151613f5e6101a0860182612d48565b5060a082015160e06101c0860152613f7a610200860182613120565b905060c0830151925061011f19858203016101e0860152613f9b8184613120565b9250506020850151613fb06040860182612e85565b506040850151805115158583015261325e565b6000806000806101008587031215613fda57600080fd5b8435613fe5816128e3565b9350613ff48660208701612ad2565b92506140038660a08701612b3a565b915060e085013561401381612bbc565b939692955090935050565b6001600160a01b03929092168252602082015260400190565b8051612acd816128e3565b8051612acd81612bbc565b60006020828403121561405f57600080fd5b604051602081016001600160401b0381118282101715614081576140816128fb565b8060405250809150825161409481612bbc565b905292915050565b60008183036101a08112156140b057600080fd5b6140b861295b565b915060608112156140c857600080fd5b6140d061295b565b83516140db816128e3565b815260208401516140eb816128e3565b602082015260408401516140fe816128e3565b60408201528252610120605f19820181131561411957600080fd5b61412161297d565b9150606084015182526080840151602083015260a0840151604083015260c0840151606083015260e084015160808301526101008085015160a08401528185015160c084015261014085015160e084015261016085015181840152505080602083015250612bb183610180840161404d565b60006101a082840312156141a657600080fd5b61097e838361409c565b6141bb828251612ee5565b60208101516141cd6040840182612ee5565b50604081015161396d6080840182612ee5565b6001600160a01b0387811682528616602082015261034081016142066040830187612d55565b6142146101e0830186613875565b6142226102608301856141b0565b821515610320830152979650505050505050565b60006060828403121561424857600080fd5b61425061295b565b905081518152602082015160208201526040820151604082015292915050565b600080600060a0848603121561428557600080fd5b835161429081612bbc565b60208501519093506001600160401b03808211156142ad57600080fd5b818601915086601f8301126142c157600080fd5b8151818111156142d3576142d36128fb565b6142e6601f8201601f1916602001612a92565b91508082528760208285010111156142fd57600080fd5b61430e816020840160208601612c43565b50925061432090508560408601614236565b90509250925092565b6001600160a01b03888116825287811660208301526040820187905261018082019061435860608401886141b0565b856101208401528085166101408401525082151561016083015298975050505050505050565b6000610140828403121561439157600080fd5b6143996129a0565b9050815181526143ab60208301614037565b60208201526143bc60408301614037565b6040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b600060c0828403121561442357600080fd5b61442b6129c3565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015292915050565b60006080828403121561447b57600080fd5b614483612911565b90508151815260208201516020820152604082015160408201526060820151606082015292915050565b6000606082840312156144bf57600080fd5b6144c761295b565b905081516144d4816128e3565b80825250602082015160208201526040820151604082015292915050565b60006040828403121561450457600080fd5b61450c612939565b9050815181526020820151602082015292915050565b60008183036107c081121561453657600080fd5b61453e6129e5565b915082518252614551846020850161409c565b60208301526101c06105406101bf198301121561456d57600080fd5b614575612a07565b91506145838582860161437e565b8252614593856103008601614236565b60208301526145a6856103608601614411565b60408301526145b9856104208601614469565b60608301526145cc856104a086016144ad565b60808301526145df856105008601614469565b60a08301526145f28561058086016144f2565b60c08301526105c084015160e08301526105e08401516101008301526106008401516101208301526106208401516101408301526106408401516101608301526106608401516101808301526106808401516101a08301526106a0840151908201526106c08301516101e08201526106e0830151610200820152604082015261467f836107008401614236565b6060820152610760820151608082015261078082015160a08201526107a082015160c082015292915050565b60006107c082840312156146be57600080fd5b61097e8383614522565b6001600160a01b03881681526101a081016146e66020830189613875565b6146f360a0830188612ee5565b61470060e0830187612ee5565b61470e610120830186612ee5565b8361016083015282151561018083015298975050505050505050565b60008082840361018081121561473f57600080fd5b8351925061016080601f198301121561475757600080fd5b61475f612a2a565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b600082601f8301126147ef57600080fd5b815160206147ff613adf83613a9b565b82815260059290921b8401810191818101908684111561481e57600080fd5b8286015b84811015614842578051614835816128e3565b8352918301918301614822565b509695505050505050565b60006020828403121561485f57600080fd5b81516001600160401b038082111561487657600080fd5b818401915061010080838703121561488d57600080fd5b61489561295b565b8351838111156148a457600080fd5b840161012081890312156148b757600080fd5b6148bf61297d565b6148c882614037565b81526148d660208301614037565b60208201526148e760408301614037565b60408201526148f860608301614037565b606082015261490960808301614037565b608082015261491a60a08301614037565b60a082015261492b60c08301614037565b60c082015260e08201518581111561494257600080fd5b61494e8a8285016147de565b60e083015250838201518581111561496557600080fd5b6149718a8285016147de565b82860152508252506149868760208601614411565b60208201526149988760e0860161404d565b60408201529695505050505050565b600681106134945761349461346e565b6001600160a01b0387811682526101c08201906149d76020840189613875565b6149e460a08401886141b0565b610160830186905284166101808301526107fc6101a08301846149a7565b60008060408385031215614a1557600080fd5b505080516020909101519092909150565b6001600160a01b0385811682528416602082015282151560408201526101208101610a1f60608301846141b0565b60008060008060808587031215614a6a57600080fd5b845193506020850151614a7c81612bbc565b6040860151606090960151949790965092505050565b6001600160a01b0387811682526101c0820190614ab26020840189613875565b614abf60a08401886141b0565b808616610160840152846101808401528084166101a084015250979650505050505050565b6000806000838503610100811215614afb57600080fd5b845193506020850151925060c0603f1982011215614b1857600080fd5b50614b216129c3565b60408501518152606085015160208201526080850151604082015260a0850151614b4a816128e3565b606082015260c0850151608082015260e09094015160a0850152509093909250565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b805160098110612acd57600080fd5b805160038110612acd57600080fd5b60006101608284031215614bc657600080fd5b614bce612a2a565b9050614bd982614b95565b8152614be760208301614ba4565b602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b600060808284031215614c6457600080fd5b614c6c612911565b90508151614c7981612bbc565b81526020820151614c8981612bbc565b60208201526040820151614c9c81612bbc565b60408201526060820151612b2f81612bbc565b60006102008284031215614cc257600080fd5b614cca61295b565b82519091506001600160401b0380821115614ce457600080fd5b908301906101008286031215614cf957600080fd5b614d01612a4d565b614d0a83614037565b8152614d1860208401614037565b6020820152614d2960408401614037565b6040820152614d3a60608401614037565b6060820152614d4b60808401614037565b6080820152614d5c60a08401614037565b60a0820152614d6d60c08401614037565b60c082015260e083015182811115614d8457600080fd5b614d90878286016147de565b60e083015250835250614da890508360208401614bb3565b6020820152612bb1836101808401614c52565b60006020808385031215614dce57600080fd5b82516001600160401b0380821115614de557600080fd5b818501915085601f830112614df957600080fd5b8151614e07613adf82613a9b565b81815260059190911b83018401908481019088831115614e2657600080fd5b8585015b83811015614e5e57805185811115614e425760008081fd5b614e508b89838a0101614caf565b845250918601918601614e2a565b5098975050505050505050565b600060208284031215614e7d57600080fd5b81516001600160401b03811115614e9357600080fd5b611cdd84828501614caf565b6001600160a01b0392831681529116602082015260400190565b600060808284031215614ecb57600080fd5b614ed3612911565b90508151614ee0816128e3565b81526020820151614ef0816128e3565b60208201526040820151614f03816128e3565b60408201526060820151612b2f816128e3565b600060808284031215614f2857600080fd5b61097e8383614eb9565b6001600160a01b03881681526101608101614f506020830189613875565b614f5d60a0830188612ee5565b8560e0830152846101008301528361012083015282151561014083015298975050505050505050565b600060608284031215614f9857600080fd5b61097e8383614236565b6001600160a01b038881168252610180820190614fc2602084018a613875565b87811660a0840152861660c083015260e08201859052614fe6610100830185612ee5565b610ff5610140830184612ee5565b60008060006060848603121561500957600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b038981168252610200820190615042602084018b613875565b61504f60a084018a6141b0565b87610160840152866101808401528086166101a0840152506150756101c08301856149a7565b8215156101e08301529998505050505050505050565b60006020828403121561509d57600080fd5b5051919050565b600060208083850312156150b757600080fd5b82516001600160401b038111156150cd57600080fd5b8301601f810185136150de57600080fd5b80516150ec613adf82613a9b565b8181526101a0918202830184019184820191908884111561510c57600080fd5b938501935b8385101561513257615123898661409c565b83529384019391850191615111565b50979650505050505050565b6001600160a01b03848116825261010082019061515e60208401866141b0565b80841660e084015250949350505050565b60006080828403121561518157600080fd5b615189612939565b905061519583836144f2565b81526151a483604084016144f2565b602082015292915050565b600061016082840312156151c257600080fd5b6151ca612a70565b905081516151d781612bbc565b8082525060208201516020820152604082015160408201526151fc836060840161516f565b606082015261520e8360e0840161516f565b608082015292915050565b60008183036103a081121561522d57600080fd5b6152356129e5565b91506152418484614eb9565b82526080830151602083015260a0830151604083015261010060bf198201121561526a57600080fd5b50615273612939565b6152808460c0850161516f565b815261529084610140850161516f565b602082015260608201526152a8836101c084016151af565b60808201526152bb836103208401614236565b60a08201526152cd6103808301614042565b60c082015292915050565b60006103a082840312156152eb57600080fd5b61097e8383615219565b600060a0828403121561530757600080fd5b61530f612a70565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015292915050565b600081830361016081121561535757600080fd5b61535f612939565b60c082121561536d57600080fd5b6153756129c3565b91508351615382816128e3565b82526020840151615392816128e3565b602083015260408401516153a5816128e3565b604083015260608401516153b8816128e3565b606083015260808401516153cb816128e3565b608083015260a08401516153de816128e3565b60a08301528181526153f38560c086016152f5565b6020820152949350505050565b600081518084526020808501945080840160005b83811015613159576154278783516141b0565b60c0969096019590820190600101615414565b6001600160a01b03898116825288811660208084019190915288821660408401526101006060840181905288519084018190526000926101208501928a810192855b8181101561549a57845184168652948201949382019360010161547c565b505050505082810360808401526154b18188615400565b9150506154c160a0830186612d48565b60c082019390935260e001529695505050505050565b600060208083850312156154ea57600080fd5b82516001600160401b0381111561550057600080fd5b8301601f8101851361551157600080fd5b805161551f613adf82613a9b565b8181526107c0918202830184019184820191908884111561553f57600080fd5b938501935b83851015615132576155568986614522565b83529384019391850191615544565b6001600160a01b038616815261032081016155836020830187613875565b61559060a08301866141b0565b61559e610160830185612d55565b826103008301529695505050505050565b6001600160a01b03851681526080602082018190526000906155d390830186615400565b6040830194909452506060015292915050565b600060208083850312156155f957600080fd5b82516001600160401b0381111561560f57600080fd5b8301601f8101851361562057600080fd5b805161562e613adf82613a9b565b8181526103a0918202830184019184820191908884111561564e57600080fd5b938501935b83851015615132576156658986615219565b83529384019391850191615653565b600060a0820160018060a01b03808916845260208189168186015260a0604086015282885180855260c087019150828a01945060005b818110156156c6578551835294830194918301916001016156aa565b505085810360608701526156da8189615400565b94505050808516608085015250509695505050505050565b6000602080838503121561570557600080fd5b82516001600160401b0381111561571b57600080fd5b8301601f8101851361572c57600080fd5b805161573a613adf82613a9b565b81815260079190911b8201830190838101908783111561575957600080fd5b928401925b828410156107fc576157708885614eb9565b8252848201915060808401935061575e565b60006020828403121561579457600080fd5b81516001600160401b03808211156157ab57600080fd5b9083019061010082860312156157c057600080fd5b6157c861295b565b8251828111156157d757600080fd5b830160e081880312156157e957600080fd5b6157f16129e5565b6157fa82614037565b815261580860208301614037565b602082015261581960408301614037565b604082015261582a60608301614037565b606082015261583b60808301614037565b608082015260a08201518481111561585257600080fd5b61585e898285016147de565b60a08301525060c08201518481111561587657600080fd5b615882898285016147de565b60c0830152508252506158988660208501614411565b60208201526158aa8660e0850161404d565b604082015295945050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610981576109816158b8565b8181036000831280158383131683831282161715615905576159056158b8565b5092915050565b81810381811115610981576109816158b8565b808201828112600083128015821682158216171561593f5761593f6158b8565b505092915050565b80820180821115610981576109816158b8565b6000600160ff1b820161596f5761596f6158b8565b5060000390565b634e487b7160e01b600052601260045260246000fd5b6000826159a957634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212206c2f9bfeeb30f090f3f0b5209a5bd887c891c3cac607075de2ac7bea451e599364736f6c63430008120033