My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
CheeseSalad
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2021-01-22 */ // SPDX-License-Identifier: MIT /* * CheeseSalad one of 3 Elite Jobs from Keep3r BSC Network * 2020-2021 | Keeper Network Ltd. */ pragma solidity ^0.7.0; pragma experimental ABIEncoderV2; interface ICheeseSwapFactory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface ICheeseSwapPair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } library FixedPoint { struct uq112x112 { uint224 _x; } struct uq144x112 { uint _x; } uint8 private constant RESOLUTION = 112; function encode(uint112 x) internal pure returns (uq112x112 memory) { return uq112x112(uint224(x) << RESOLUTION); } function encode144(uint144 x) internal pure returns (uq144x112 memory) { return uq144x112(uint256(x) << RESOLUTION); } function div(uq112x112 memory self, uint112 x) internal pure returns (uq112x112 memory) { require(x != 0, 'FixedPoint: DIV_BY_ZERO'); return uq112x112(self._x / uint224(x)); } function mul(uq112x112 memory self, uint y) internal pure returns (uq144x112 memory) { uint z; require(y == 0 || (z = uint(self._x) * y) / y == uint(self._x), "FixedPoint: MULTIPLICATION_OVERFLOW"); return uq144x112(z); } function fraction(uint112 numerator, uint112 denominator) internal pure returns (uq112x112 memory) { require(denominator > 0, "FixedPoint: DIV_BY_ZERO"); return uq112x112((uint224(numerator) << RESOLUTION) / denominator); } function decode(uq112x112 memory self) internal pure returns (uint112) { return uint112(self._x >> RESOLUTION); } function decode144(uq144x112 memory self) internal pure returns (uint144) { return uint144(self._x >> RESOLUTION); } } library CheeseSaladLibrary { using FixedPoint for *; function currentBlockTimestamp() internal view returns (uint32) { return uint32(block.timestamp % 2 ** 32); } function currentCumulativePrices( address pair ) internal view returns (uint price0Cumulative, uint price1Cumulative, uint32 blockTimestamp) { blockTimestamp = currentBlockTimestamp(); price0Cumulative = ICheeseSwapPair(pair).price0CumulativeLast(); price1Cumulative = ICheeseSwapPair(pair).price1CumulativeLast(); (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) = ICheeseSwapPair(pair).getReserves(); if (blockTimestampLast != blockTimestamp) { uint32 timeElapsed = blockTimestamp - blockTimestampLast; price0Cumulative += uint(FixedPoint.fraction(reserve1, reserve0)._x) * timeElapsed; price1Cumulative += uint(FixedPoint.fraction(reserve0, reserve1)._x) * timeElapsed; } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library CheeseSwapLibrary { using SafeMath for uint; function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, 'CheeseSwapLibrary: IDENTICAL_ADDRESSES'); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'CheeseSwapLibrary: ZERO_ADDRESS'); } function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) { (address token0, address token1) = sortTokens(tokenA, tokenB); pair = address(uint(keccak256(abi.encodePacked( hex'ff', factory, keccak256(abi.encodePacked(token0, token1)), hex'f52c5189a89e7ca2ef4f19f2798e3900fba7a316de7cef6c5a9446621ba86286' // init code hash of CheeseSwap )))); } function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) { (address token0,) = sortTokens(tokenA, tokenB); (uint reserve0, uint reserve1,) = ICheeseSwapPair(pairFor(factory, tokenA, tokenB)).getReserves(); (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0); } function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) { require(amountA > 0, 'CheeseSwapLibrary: INSUFFICIENT_AMOUNT'); require(reserveA > 0 && reserveB > 0, 'CheeseSwapLibrary: INSUFFICIENT_LIQUIDITY'); amountB = amountA.mul(reserveB) / reserveA; } function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) { require(amountIn > 0, 'CheeseSwapLibrary: INSUFFICIENT_INPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'CheeseSwapLibrary: INSUFFICIENT_LIQUIDITY'); uint amountInWithFee = amountIn.mul(997); uint numerator = amountInWithFee.mul(reserveOut); uint denominator = reserveIn.mul(1000).add(amountInWithFee); amountOut = numerator / denominator; } function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) { require(amountOut > 0, 'CheeseSwapLibrary: INSUFFICIENT_OUTPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'CheeseSwapLibrary: INSUFFICIENT_LIQUIDITY'); uint numerator = reserveIn.mul(amountOut).mul(1000); uint denominator = reserveOut.sub(amountOut).mul(997); amountIn = (numerator / denominator).add(1); } function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'CheeseSwapLibrary: INVALID_PATH'); amounts = new uint[](path.length); amounts[0] = amountIn; for (uint i; i < path.length - 1; i++) { (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]); amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut); } } function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'CheeseSwapLibrary: INVALID_PATH'); amounts = new uint[](path.length); amounts[amounts.length - 1] = amountOut; for (uint i = path.length - 1; i > 0; i--) { (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]); amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut); } } } interface WETH9 { function withdraw(uint wad) external; } interface ICheeseSwapRouter { function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface IKeep3rb { function isMinKeeper(address keeper, uint minBond, uint earned, uint age) external returns (bool); function receipt(address credit, address keeper, uint amount) external; function unbond(address bonding, uint amount) external; function withdraw(address bonding) external; function bonds(address keeper, address credit) external view returns (uint); function unbondings(address keeper, address credit) external view returns (uint); function approve(address spender, uint amount) external returns (bool); function jobs(address job) external view returns (bool); function balanceOf(address account) external view returns (uint256); function worked(address keeper) external; function KPRH() external view returns (IKeep3rbHelper); } interface IKeep3rbHelper { function getQuoteLimit(uint gasUsed) external view returns (uint); } // slidingOracle that uses observations collected to provide MA prices in the past contract CheeseSalad { using FixedPoint for *; using SafeMath for uint; struct Observation { uint timestamp; uint price0Cumulative; uint price1Cumulative; } uint public minKeep = 1200e18; //minKeep set to 1200 kp3rb modifier keeper() { require(KP3RB.isMinKeeper(msg.sender, minKeep, 0, 0), "::isKeeper: keeper is not registered"); _; } modifier upkeep() { uint _gasUsed = gasleft(); require(KP3RB.isMinKeeper(msg.sender, minKeep, 0, 0), "::isKeeper: keeper is not registered"); _; uint _received = KP3RB.KPRH().getQuoteLimit(_gasUsed.sub(gasleft())); KP3RB.receipt(address(KP3RB), address(this), _received); _received = _swap(_received); msg.sender.transfer(_received); } address public governance; address public pendingGovernance; function setMinKeep(uint _keep) external { require(msg.sender == governance, "setGovernance: !gov"); minKeep = _keep; } function setGovernance(address _governance) external { require(msg.sender == governance, "setGovernance: !gov"); pendingGovernance = _governance; } function acceptGovernance() external { require(msg.sender == pendingGovernance, "acceptGovernance: !pendingGov"); governance = pendingGovernance; } IKeep3rb public constant KP3RB = IKeep3rb(0x5EA29eEe799aA7cC379FdE5cf370BC24f2Ea7c81); WETH9 public constant WETH = WETH9(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c); ICheeseSwapRouter public constant UNI = ICheeseSwapRouter(0x3047799262d8D2EF41eD2a222205968bC9B0d895); address public constant factory = 0xdd538E4Fd1b69B7863E1F741213276A6Cf1EfB3B; uint public constant periodSize = 900; /* * Period size reduced because BSC block time is much lower than Ethereum * Observation/hour increased 2x * In short window but more liquidity pairs */ address[] internal _pairs; mapping(address => bool) internal _known; function pairs() external view returns (address[] memory) { return _pairs; } mapping(address => Observation[]) public observations; function observationLength(address pair) external view returns (uint) { return observations[pair].length; } function pairFor(address tokenA, address tokenB) external pure returns (address) { return CheeseSwapLibrary.pairFor(factory, tokenA, tokenB); } function pairForWETH(address tokenA) external pure returns (address) { return CheeseSwapLibrary.pairFor(factory, tokenA, address(WETH)); } constructor() public { governance = msg.sender; } function updatePair(address pair) external keeper returns (bool) { return _update(pair); } function update(address tokenA, address tokenB) external keeper returns (bool) { address pair = CheeseSwapLibrary.pairFor(factory, tokenA, tokenB); return _update(pair); } function add(address tokenA, address tokenB) external { require(msg.sender == governance, "CheeseSwapOracle::add: !gov"); address pair = CheeseSwapLibrary.pairFor(factory, tokenA, tokenB); require(!_known[pair], "known"); _known[pair] = true; _pairs.push(pair); (uint price0Cumulative, uint price1Cumulative,) = CheeseSaladLibrary.currentCumulativePrices(pair); observations[pair].push(Observation(block.timestamp, price0Cumulative, price1Cumulative)); } function work() public upkeep { bool worked = _updateAll(); require(worked, "CheeseSwapOracle: !work"); } function workForFree() public keeper { bool worked = _updateAll(); require(worked, "CheeseSwapOracle: !work"); } function lastObservation(address pair) public view returns (Observation memory) { return observations[pair][observations[pair].length-1]; } function _updateAll() internal returns (bool updated) { for (uint i = 0; i < _pairs.length; i++) { if (_update(_pairs[i])) { updated = true; } } } function updateFor(uint i, uint length) external keeper returns (bool updated) { for (; i < length; i++) { if (_update(_pairs[i])) { updated = true; } } } function workable(address pair) public view returns (bool) { return (block.timestamp - lastObservation(pair).timestamp) > periodSize; } function workable() external view returns (bool) { for (uint i = 0; i < _pairs.length; i++) { if (workable(_pairs[i])) { return true; } } return false; } function _update(address pair) internal returns (bool) { // we only want to commit updates once per period (i.e. windowSize / granularity) Observation memory _point = lastObservation(pair); uint timeElapsed = block.timestamp - _point.timestamp; if (timeElapsed > periodSize) { (uint price0Cumulative, uint price1Cumulative,) = CheeseSaladLibrary.currentCumulativePrices(pair); observations[pair].push(Observation(block.timestamp, price0Cumulative, price1Cumulative)); return true; } return false; } function computeAmountOut( uint priceCumulativeStart, uint priceCumulativeEnd, uint timeElapsed, uint amountIn ) private pure returns (uint amountOut) { // overflow is desired. FixedPoint.uq112x112 memory priceAverage = FixedPoint.uq112x112( uint224((priceCumulativeEnd - priceCumulativeStart) / timeElapsed) ); amountOut = priceAverage.mul(amountIn).decode144(); } function _valid(address pair, uint age) internal view returns (bool) { return (block.timestamp - lastObservation(pair).timestamp) <= age; } function current(address tokenIn, uint amountIn, address tokenOut) external view returns (uint amountOut) { address pair = CheeseSwapLibrary.pairFor(factory, tokenIn, tokenOut); require(_valid(pair, periodSize.mul(2)), "CheeseSwapOracle::quote: stale prices"); (address token0,) = CheeseSwapLibrary.sortTokens(tokenIn, tokenOut); Observation memory _observation = lastObservation(pair); (uint price0Cumulative, uint price1Cumulative,) = CheeseSaladLibrary.currentCumulativePrices(pair); if (block.timestamp == _observation.timestamp) { _observation = observations[pair][observations[pair].length-2]; } uint timeElapsed = block.timestamp - _observation.timestamp; timeElapsed = timeElapsed == 0 ? 1 : timeElapsed; if (token0 == tokenIn) { return computeAmountOut(_observation.price0Cumulative, price0Cumulative, timeElapsed, amountIn); } else { return computeAmountOut(_observation.price1Cumulative, price1Cumulative, timeElapsed, amountIn); } } function quote(address tokenIn, uint amountIn, address tokenOut, uint granularity) external view returns (uint amountOut) { address pair = CheeseSwapLibrary.pairFor(factory, tokenIn, tokenOut); require(_valid(pair, periodSize.mul(granularity)), "CheeseSwapOracle::quote: stale prices"); (address token0,) = CheeseSwapLibrary.sortTokens(tokenIn, tokenOut); uint priceAverageCumulative = 0; uint length = observations[pair].length-1; uint i = length.sub(granularity); uint nextIndex = 0; if (token0 == tokenIn) { for (; i < length; i++) { nextIndex = i+1; priceAverageCumulative += computeAmountOut( observations[pair][i].price0Cumulative, observations[pair][nextIndex].price0Cumulative, observations[pair][nextIndex].timestamp - observations[pair][i].timestamp, amountIn); } } else { for (; i < length; i++) { nextIndex = i+1; priceAverageCumulative += computeAmountOut( observations[pair][i].price1Cumulative, observations[pair][nextIndex].price1Cumulative, observations[pair][nextIndex].timestamp - observations[pair][i].timestamp, amountIn); } } return priceAverageCumulative.div(granularity); } function prices(address tokenIn, uint amountIn, address tokenOut, uint points) external view returns (uint[] memory) { return sample(tokenIn, amountIn, tokenOut, points, 1); } function sample(address tokenIn, uint amountIn, address tokenOut, uint points, uint window) public view returns (uint[] memory) { address pair = CheeseSwapLibrary.pairFor(factory, tokenIn, tokenOut); (address token0,) = CheeseSwapLibrary.sortTokens(tokenIn, tokenOut); uint[] memory _prices = new uint[](points); uint length = observations[pair].length-1; uint i = length.sub(points * window); uint nextIndex = 0; uint index = 0; if (token0 == tokenIn) { for (; i < length; i+=window) { nextIndex = i + window; _prices[index] = computeAmountOut( observations[pair][i].price0Cumulative, observations[pair][nextIndex].price0Cumulative, observations[pair][nextIndex].timestamp - observations[pair][i].timestamp, amountIn); index = index + 1; } } else { for (; i < length; i+=window) { nextIndex = i + window; _prices[index] = computeAmountOut( observations[pair][i].price1Cumulative, observations[pair][nextIndex].price1Cumulative, observations[pair][nextIndex].timestamp - observations[pair][i].timestamp, amountIn); index = index + 1; } } return _prices; } function hourly(address tokenIn, uint amountIn, address tokenOut, uint points) external view returns (uint[] memory) { return sample(tokenIn, amountIn, tokenOut, points, 4); } function daily(address tokenIn, uint amountIn, address tokenOut, uint points) external view returns (uint[] memory) { return sample(tokenIn, amountIn, tokenOut, points, 96); } function weekly(address tokenIn, uint amountIn, address tokenOut, uint points) external view returns (uint[] memory) { return sample(tokenIn, amountIn, tokenOut, points, 672); } function realizedVolatility(address tokenIn, uint amountIn, address tokenOut, uint points, uint window) external view returns (uint) { return stddev(sample(tokenIn, amountIn, tokenOut, points, window)); } function realizedVolatilityHourly(address tokenIn, uint amountIn, address tokenOut) external view returns (uint) { return stddev(sample(tokenIn, amountIn, tokenOut, 1, 4)); } function realizedVolatilityDaily(address tokenIn, uint amountIn, address tokenOut) external view returns (uint) { return stddev(sample(tokenIn, amountIn, tokenOut, 1, 96)); } function realizedVolatilityWeekly(address tokenIn, uint amountIn, address tokenOut) external view returns (uint) { return stddev(sample(tokenIn, amountIn, tokenOut, 1, 672)); } function sqrt(uint256 x) public pure returns (uint256) { uint256 c = (x + 1) / 2; uint256 b = x; while (c < b) { b = c; c = (x / c + c) / 2; } return b; } function stddev(uint[] memory numbers) public pure returns (uint256 sd) { uint sum = 0; for(uint i = 0; i < numbers.length; i++) { sum += numbers[i]; } uint256 mean = sum / numbers.length; // Integral value; float not supported in Solidity sum = 0; uint i; for(i = 0; i < numbers.length; i++) { sum += (numbers[i] - mean) ** 2; } sd = sqrt(sum / (numbers.length - 1)); //Integral value; float not supported in Solidity return sd; } function blackScholesEstimate( uint256 _vol, uint256 _underlying, uint256 _time ) public pure returns (uint256 estimate) { estimate = 40 * _vol * _underlying * sqrt(_time); return estimate; } function retBasedBlackScholesEstimate( uint256[] memory _numbers, uint256 _underlying, uint256 _time ) public pure { uint _vol = stddev(_numbers); blackScholesEstimate(_vol, _underlying, _time); } receive() external payable {} function _swap(uint _amount) internal returns (uint) { KP3RB.approve(address(UNI), _amount); address[] memory path = new address[](2); path[0] = address(KP3RB); path[1] = address(WETH); uint[] memory amounts = UNI.swapExactTokensForTokens(_amount, uint256(0), path, address(this), block.timestamp.add(1800)); WETH.withdraw(amounts[1]); return amounts[1]; } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"KP3RB","outputs":[{"internalType":"contract IKeep3rb","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNI","outputs":[{"internalType":"contract ICheeseSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract WETH9","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vol","type":"uint256"},{"internalType":"uint256","name":"_underlying","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"blackScholesEstimate","outputs":[{"internalType":"uint256","name":"estimate","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"current","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"daily","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"hourly","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"lastObservation","outputs":[{"components":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"price0Cumulative","type":"uint256"},{"internalType":"uint256","name":"price1Cumulative","type":"uint256"}],"internalType":"struct CheeseSalad.Observation","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minKeep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"observationLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"observations","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"price0Cumulative","type":"uint256"},{"internalType":"uint256","name":"price1Cumulative","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"pairFor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"}],"name":"pairForWETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pairs","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGovernance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"prices","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"granularity","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"name":"realizedVolatility","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"realizedVolatilityDaily","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"realizedVolatilityHourly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"realizedVolatilityWeekly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_numbers","type":"uint256[]"},{"internalType":"uint256","name":"_underlying","type":"uint256"},{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"retBasedBlackScholesEstimate","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"points","type":"uint256"},{"internalType":"uint256","name":"window","type":"uint256"}],"name":"sample","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_keep","type":"uint256"}],"name":"setMinKeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"sqrt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"numbers","type":"uint256[]"}],"name":"stddev","outputs":[{"internalType":"uint256","name":"sd","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"update","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"updateFor","outputs":[{"internalType":"bool","name":"updated","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"updatePair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"points","type":"uint256"}],"name":"weekly","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"work","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"workForFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"workable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"workable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405268410d586a20a4c0000060005534801561001d57600080fd5b50600180546001600160a01b03191633179055612d418061003f6000396000f3fe60806040526004361061023f5760003560e01c8063886d24a91161012e578063bc9c5941116100ab578063de4b5e071161006f578063de4b5e0714610698578063e4463eb2146106b8578063efa7dbbd146106cd578063f39c38a0146106ed578063ffb0a4a01461070257610246565b8063bc9c594114610603578063c45a015514610623578063c640752d14610638578063c88fa15914610658578063c9ff6f4d1461067857610246565b8063a75d39c2116100f2578063a75d39c21461056e578063ab033ea91461058e578063ad5c4648146105ae578063ae6ec9b7146105c3578063b1f0cad1146105e357610246565b8063886d24a9146104d95780639119a8d5146104ee57806396ed28f91461050e5780639f4713031461052e578063a10d04381461054e57610246565b8063470838a0116101bc5780635aa6e675116101805780635aa6e6751461044f578063677342ce1461046457806380bb2bac1461048457806381bfb885146104995780638373a7ab146104b957610246565b8063470838a0146103ad5780634761703c146103da5780634b71c33c146103fa57806352c28fab1461041a578063541bcb761461043a57610246565b8063202e1e4311610203578063202e1e4314610321578063238efcbc1461034e578063322e9f0414610363578063399b2fb9146103785780634411935e1461038d57610246565b8063024599661461024b578063064141e5146102835780630a793398146102a557806311a9b128146102d25780631b56bbf9146102f457610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026b610266366004612435565b610724565b60405161027a93929190612c84565b60405180910390f35b34801561028f57600080fd5b506102a361029e3660046125fc565b610763565b005b3480156102b157600080fd5b506102c56102c03660046124e8565b610782565b60405161027a9190612893565b3480156102de57600080fd5b506102e7610a67565b60405161027a9190612c3f565b34801561030057600080fd5b5061031461030f3660046123e1565b610a6d565b60405161027a91906128d7565b34801561032d57600080fd5b5061034161033c3660046123e1565b610b34565b60405161027a9190612c1e565b34801561035a57600080fd5b506102a3610ba2565b34801561036f57600080fd5b506102a3610bf0565b34801561038457600080fd5b506102a3610e88565b34801561039957600080fd5b506102e76103a836600461271e565b610f60565b3480156103b957600080fd5b506103cd6103c83660046123e1565b610f7c565b60405161027a9190612809565b3480156103e657600080fd5b506102c56103f53660046124a1565b610fb1565b34801561040657600080fd5b506102c56104153660046124a1565b610fcb565b34801561042657600080fd5b506102a36104353660046123fd565b610fdb565b34801561044657600080fd5b506103cd611137565b34801561045b57600080fd5b506103cd61114f565b34801561047057600080fd5b506102e761047f3660046126cd565b61115e565b34801561049057600080fd5b50610314611190565b3480156104a557600080fd5b506102e76104b43660046123e1565b6111e8565b3480156104c557600080fd5b506102e76104d4366004612539565b611203565b3480156104e557600080fd5b506103cd611296565b3480156104fa57600080fd5b506102e7610509366004612460565b6112ae565b34801561051a57600080fd5b506103cd6105293660046123fd565b6112ca565b34801561053a57600080fd5b506103146105493660046123e1565b6112f4565b34801561055a57600080fd5b506102e7610569366004612460565b61130c565b34801561057a57600080fd5b506102e7610589366004612460565b611320565b34801561059a57600080fd5b506102a36105a93660046123e1565b611471565b3480156105ba57600080fd5b506103cd6114bd565b3480156105cf57600080fd5b506102e76105de3660046124a1565b6114d5565b3480156105ef57600080fd5b506102e76105fe3660046124e8565b61177b565b34801561060f57600080fd5b506102c561061e3660046124a1565b611797565b34801561062f57600080fd5b506103cd6117a7565b34801561064457600080fd5b506103146106533660046123fd565b6117bf565b34801561066457600080fd5b506102a36106733660046126cd565b611898565b34801561068457600080fd5b506103146106933660046126fd565b6118c7565b3480156106a457600080fd5b506102e76106b3366004612460565b6119ba565b3480156106c457600080fd5b506102e76119cf565b3480156106d957600080fd5b506102c56106e83660046124a1565b6119d5565b3480156106f957600080fd5b506103cd6119e5565b34801561070e57600080fd5b506107176119f4565b60405161027a9190612880565b6005602052816000526040600020818154811061073d57fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b600061076e84611203565b905061077b818484610f60565b5050505050565b606060006107a573dd538e4fd1b69b7863e1f741213276a6cf1efb3b8887611a56565b905060006107b38887611ac6565b50905060608567ffffffffffffffff811180156107cf57600080fd5b506040519080825280602002602001820160405280156107f9578160200160208202803683370190505b506001600160a01b0384166000908152600560205260408120549192506000199091019061082982898902611b50565b90506000808c6001600160a01b0316866001600160a01b03161415610979575b83831015610974576001600160a01b03871660009081526005602052604090208054848b01935061095191908590811061087f57fe5b906000526020600020906003020160010154600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002084815481106108c157fe5b906000526020600020906003020160010154600560008b6001600160a01b03166001600160a01b03168152602001908152602001600020868154811061090357fe5b600091825260208083206003909202909101546001600160a01b038d1683526005909152604090912080548790811061093857fe5b906000526020600020906003020160000154038f611b92565b85828151811061095d57fe5b602090810291909101015291880191600101610849565b610a56565b83831015610a56576001600160a01b03871660009081526005602052604090208054848b019350610a339190859081106109af57fe5b906000526020600020906003020160020154600560008a6001600160a01b03166001600160a01b0316815260200190815260200160002084815481106109f157fe5b906000526020600020906003020160020154600560008b6001600160a01b03166001600160a01b03168152602001908152602001600020868154811061090357fe5b858281518110610a3f57fe5b602090810291909101015291880191600101610979565b50929b9a5050505050505050505050565b60005481565b60008054604051630ffaf9ed60e11b8152735ea29eee799aa7cc379fde5cf370bc24f2ea7c8191631ff5f3da91610aac9133918690819060040161281d565b602060405180830381600087803b158015610ac657600080fd5b505af1158015610ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afe9190612648565b610b235760405162461bcd60e51b8152600401610b1a90612b60565b60405180910390fd5b610b2c82611bf0565b90505b919050565b610b3c61232d565b6001600160a01b038216600090815260056020526040902080546000198101908110610b6457fe5b906000526020600020906003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509050919050565b6002546001600160a01b03163314610bcc5760405162461bcd60e51b8152600401610b1a90612b29565b600254600180546001600160a01b0319166001600160a01b03909216919091179055565b60005a60008054604051630ffaf9ed60e11b8152929350735ea29eee799aa7cc379fde5cf370bc24f2ea7c8192631ff5f3da92610c36923392909190819060040161281d565b602060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c889190612648565b610ca45760405162461bcd60e51b8152600401610b1a90612b60565b6000610cae611c95565b905080610ccd5760405162461bcd60e51b8152600401610b1a90612935565b506000735ea29eee799aa7cc379fde5cf370bc24f2ea7c816001600160a01b03166309aff02b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612668565b6001600160a01b031663525ea631610d6e5a8590611b50565b6040518263ffffffff1660e01b8152600401610d8a9190612c3f565b60206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda91906126e5565b6040516346cd669760e11b8152909150735ea29eee799aa7cc379fde5cf370bc24f2ea7c8190638d9acd2e90610e1890839030908690600401612843565b600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b50505050610e5381611cc9565b604051909150339082156108fc029083906000818181858888f19350505050158015610e83573d6000803e3d6000fd5b505050565b60008054604051630ffaf9ed60e11b8152735ea29eee799aa7cc379fde5cf370bc24f2ea7c8192631ff5f3da92610ec692339290819060040161281d565b602060405180830381600087803b158015610ee057600080fd5b505af1158015610ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f189190612648565b610f345760405162461bcd60e51b8152600401610b1a90612b60565b6000610f3e611c95565b905080610f5d5760405162461bcd60e51b8152600401610b1a90612935565b50565b6000610f6b8261115e565b8385602802020290505b9392505050565b6000610b2c73dd538e4fd1b69b7863e1f741213276a6cf1efb3b8373bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c611a56565b6060610fc2858585856102a0610782565b95945050505050565b6060610fc2858585856060610782565b6001546001600160a01b031633146110055760405162461bcd60e51b8152600401610b1a90612a92565b600061102673dd538e4fd1b69b7863e1f741213276a6cf1efb3b8484611a56565b6001600160a01b03811660009081526004602052604090205490915060ff16156110625760405162461bcd60e51b8152600401610b1a90612b0a565b6001600160a01b0381166000818152600460205260408120805460ff1916600190811790915560038054918201815582527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909217909155806110d183611f51565b506001600160a01b0390941660009081526005602090815260408083208151606081018352428152808401958652918201978852805460018181018355918552929093209051600390920201908155915190820155925160029093019290925550505050565b733047799262d8d2ef41ed2a222205968bc9b0d89581565b6001546001600160a01b031681565b600060026001830104825b80821015610f7557508060028180868161117f57fe5b04018161118857fe5b049150611169565b6000805b6003548110156111df576111c8600382815481106111ae57fe5b6000918252602090912001546001600160a01b03166112f4565b156111d75760019150506111e5565b600101611194565b50600090505b90565b6001600160a01b031660009081526005602052604090205490565b600080805b83518110156112365783818151811061121d57fe5b6020026020010151820191508080600101915050611208565b5060008351828161124357fe5b0490506000915060005b84518110156112805760028286838151811061126557fe5b6020026020010151030a83019250808060010191505061124d565b610fc26001865103848161129057fe5b0461115e565b735ea29eee799aa7cc379fde5cf370bc24f2ea7c8181565b60006112c26104d485858560016060610782565b949350505050565b60006112eb73dd538e4fd1b69b7863e1f741213276a6cf1efb3b8484611a56565b90505b92915050565b600061038461130283610b34565b5142031192915050565b60006112c26104d485858560016004610782565b60008061134273dd538e4fd1b69b7863e1f741213276a6cf1efb3b8685611a56565b905061135a816113556103846002612126565b612160565b6113765760405162461bcd60e51b8152600401610b1a90612a4d565b60006113828685611ac6565b50905061138d61232d565b61139683610b34565b90506000806113a485611f51565b5084519193509150421415611415576001600160a01b0385166000908152600560205260409020805460011981019081106113db57fe5b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505b8251420380156114255780611428565b60015b9050896001600160a01b0316856001600160a01b0316141561146157611454846020015184838c611b92565b9650505050505050610f75565b611454846040015183838c611b92565b6001546001600160a01b0316331461149b5760405162461bcd60e51b8152600401610b1a906129da565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b73bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81565b6000806114f773dd538e4fd1b69b7863e1f741213276a6cf1efb3b8786611a56565b90506115098161135561038486612126565b6115255760405162461bcd60e51b8152600401610b1a90612a4d565b60006115318786611ac6565b506001600160a01b03831660009081526005602052604081205491925090600019018161155e8288611b50565b905060008a6001600160a01b0316856001600160a01b03161415611699575b8282101561169457506001600160a01b03851660009081526005602052604090208054600183019161168591849081106115b357fe5b90600052602060002090600302016001015460056000896001600160a01b03166001600160a01b0316815260200190815260200160002083815481106115f557fe5b906000526020600020906003020160010154600560008a6001600160a01b03166001600160a01b03168152602001908152602001600020858154811061163757fe5b600091825260208083206003909202909101546001600160a01b038c1683526005909152604090912080548690811061166c57fe5b906000526020600020906003020160000154038d611b92565b9093019260019091019061157d565b611762565b8282101561176257506001600160a01b03851660009081526005602052604090208054600183019161175391849081106116cf57fe5b90600052602060002090600302016002015460056000896001600160a01b03166001600160a01b03168152602001908152602001600020838154811061171157fe5b906000526020600020906003020160020154600560008a6001600160a01b03166001600160a01b03168152602001908152602001600020858154811061163757fe5b90930192600190910190611699565b61176c8489612178565b9b9a5050505050505050505050565b600061178d6104d48787878787610782565b9695505050505050565b6060610fc2858585856001610782565b73dd538e4fd1b69b7863e1f741213276a6cf1efb3b81565b60008054604051630ffaf9ed60e11b8152735ea29eee799aa7cc379fde5cf370bc24f2ea7c8191631ff5f3da916117fe9133918690819060040161281d565b602060405180830381600087803b15801561181857600080fd5b505af115801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190612648565b61186c5760405162461bcd60e51b8152600401610b1a90612b60565b600061188d73dd538e4fd1b69b7863e1f741213276a6cf1efb3b8585611a56565b90506112c281611bf0565b6001546001600160a01b031633146118c25760405162461bcd60e51b8152600401610b1a906129da565b600055565b60008054604051630ffaf9ed60e11b8152735ea29eee799aa7cc379fde5cf370bc24f2ea7c8191631ff5f3da916119069133918690819060040161281d565b602060405180830381600087803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119589190612648565b6119745760405162461bcd60e51b8152600401610b1a90612b60565b818310156112ee576119a66003848154811061198c57fe5b6000918252602090912001546001600160a01b0316611bf0565b156119af575060015b600190920191611974565b60006112c26104d485858560016102a0610782565b61038481565b6060610fc2858585856004610782565b6002546001600160a01b031681565b60606003805480602002602001604051908101604052809291908181526020018280548015611a4c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a2e575b5050505050905090565b6000806000611a658585611ac6565b91509150858282604051602001611a7d92919061278c565b60405160208183030381529060405280519060200120604051602001611aa49291906127b3565b60408051601f1981840301815291905280516020909101209695505050505050565b600080826001600160a01b0316846001600160a01b03161415611afb5760405162461bcd60e51b8152600401610b1a90612a07565b826001600160a01b0316846001600160a01b031610611b1b578284611b1e565b83835b90925090506001600160a01b038216611b495760405162461bcd60e51b8152600401610b1a906129a3565b9250929050565b60006112eb83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506121ba565b6000611b9c61234e565b60405180602001604052808588880381611bb257fe5b046001600160e01b031690529050611bd2611bcd82856121e6565b612245565b71ffffffffffffffffffffffffffffffffffff169695505050505050565b6000611bfa61232d565b611c0383610b34565b80519091504203610384811115611c8b57600080611c2086611f51565b506001600160a01b0388166000908152600560209081526040808320815160608101835242815280840196875291820194855280546001818101835591855292909320905160039092020190815592518382015590516002909201919091559450610b2f9350505050565b5060009392505050565b6000805b600354811015611cc557611cb36003828154811061198c57fe5b15611cbd57600191505b600101611c99565b5090565b60405163095ea7b360e01b8152600090735ea29eee799aa7cc379fde5cf370bc24f2ea7c819063095ea7b390611d1990733047799262d8d2ef41ed2a222205968bc9b0d895908690600401612867565b602060405180830381600087803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6b9190612648565b506040805160028082526060808301845292602083019080368337019050509050735ea29eee799aa7cc379fde5cf370bc24f2ea7c8181600081518110611dae57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c81600181518110611df057fe5b6001600160a01b03909216602092830291909101909101526060733047799262d8d2ef41ed2a222205968bc9b0d8956338ed17398560008530611e354261070861224c565b6040518663ffffffff1660e01b8152600401611e55959493929190612c48565b600060405180830381600087803b158015611e6f57600080fd5b505af1158015611e83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611eab919081019061256c565b905073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6001600160a01b0316632e1a7d4d82600181518110611edd57fe5b60200260200101516040518263ffffffff1660e01b8152600401611f019190612c3f565b600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b5050505080600181518110611f4057fe5b602002602001015192505050919050565b6000806000611f5e612271565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9957600080fd5b505afa158015611fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd191906126e5565b9250836001600160a01b0316635a3d54936040518163ffffffff1660e01b815260040160206040518083038186803b15801561200c57600080fd5b505afa158015612020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204491906126e5565b91506000806000866001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561208457600080fd5b505afa158015612098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bc9190612684565b9250925092508363ffffffff168163ffffffff161461211c5780840363ffffffff81166120e9848661227b565b516001600160e01b031602969096019563ffffffff811661210a858561227b565b516001600160e01b0316029590950194505b5050509193909250565b600082612135575060006112ee565b8282028284828161214257fe5b04146112eb5760405162461bcd60e51b8152600401610b1a90612ac9565b60008161216c84610b34565b51420311159392505050565b60006112eb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122f6565b600081848411156121de5760405162461bcd60e51b8152600401610b1a91906128e2565b505050900390565b6121ee612360565b600082158061221457505082516001600160e01b03168281029083828161221157fe5b04145b6122305760405162461bcd60e51b8152600401610b1a90612ba4565b60408051602081019091529081529392505050565b5160701c90565b6000828201838110156112eb5760405162461bcd60e51b8152600401610b1a9061296c565b63ffffffff421690565b61228361234e565b6000826001600160701b0316116122ac5760405162461bcd60e51b8152600401610b1a90612be7565b6040805160208101909152806001600160701b0384166dffffffffffffffffffffffffffff60701b607087901b16816122e157fe5b046001600160e01b0316815250905092915050565b600081836123175760405162461bcd60e51b8152600401610b1a91906128e2565b50600083858161232357fe5b0495945050505050565b60405180606001604052806000815260200160008152602001600081525090565b60408051602081019091526000815290565b6040518060200160405280600081525090565b600082601f830112612383578081fd5b813561239661239182612cc1565b612c9a565b8181529150602080830190848101818402860182018710156123b757600080fd5b60005b848110156123d6578135845292820192908201906001016123ba565b505050505092915050565b6000602082840312156123f2578081fd5b81356112eb81612ce1565b6000806040838503121561240f578081fd5b823561241a81612ce1565b9150602083013561242a81612ce1565b809150509250929050565b60008060408385031215612447578182fd5b823561245281612ce1565b946020939093013593505050565b600080600060608486031215612474578081fd5b833561247f81612ce1565b925060208401359150604084013561249681612ce1565b809150509250925092565b600080600080608085870312156124b6578081fd5b84356124c181612ce1565b93506020850135925060408501356124d881612ce1565b9396929550929360600135925050565b600080600080600060a086880312156124ff578081fd5b853561250a81612ce1565b945060208601359350604086013561252181612ce1565b94979396509394606081013594506080013592915050565b60006020828403121561254a578081fd5b813567ffffffffffffffff811115612560578182fd5b6112c284828501612373565b6000602080838503121561257e578182fd5b825167ffffffffffffffff811115612594578283fd5b8301601f810185136125a4578283fd5b80516125b261239182612cc1565b81815283810190838501858402850186018910156125ce578687fd5b8694505b838510156125f05780518352600194909401939185019185016125d2565b50979650505050505050565b600080600060608486031215612610578283fd5b833567ffffffffffffffff811115612626578384fd5b61263286828701612373565b9660208601359650604090950135949350505050565b600060208284031215612659578081fd5b815180151581146112eb578182fd5b600060208284031215612679578081fd5b81516112eb81612ce1565b600080600060608486031215612698578283fd5b83516126a381612cf6565b60208501519093506126b481612cf6565b604085015190925063ffffffff81168114612496578182fd5b6000602082840312156126de578081fd5b5035919050565b6000602082840312156126f6578081fd5b5051919050565b6000806040838503121561270f578182fd5b50508035926020909101359150565b600080600060608486031215612732578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156127815781516001600160a01b03168752958201959082019060010161275c565b509495945050505050565b6bffffffffffffffffffffffff19606093841b811682529190921b16601482015260280190565b6001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527ff52c5189a89e7ca2ef4f19f2798e3900fba7a316de7cef6c5a9446621ba86286603582015260550190565b6001600160a01b0391909116815260200190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6000602082526112eb6020830184612749565b6020808252825182820181905260009190848201906040850190845b818110156128cb578351835292840192918401916001016128af565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b8181101561290e578581018301518582016040015282016128f2565b8181111561291f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526017908201527f436865657365537761704f7261636c653a2021776f726b000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f436865657365537761704c6962726172793a205a45524f5f4144445245535300604082015260600190565b60208082526013908201527239b2ba23b7bb32b93730b731b29d1010b3b7bb60691b604082015260600190565b60208082526026908201527f436865657365537761704c6962726172793a204944454e544943414c5f41444460408201526552455353455360d01b606082015260800190565b60208082526025908201527f436865657365537761704f7261636c653a3a71756f74653a207374616c652070604082015264726963657360d81b606082015260800190565b6020808252601b908201527f436865657365537761704f7261636c653a3a6164643a2021676f760000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526005908201526435b737bbb760d91b604082015260600190565b6020808252601d908201527f616363657074476f7665726e616e63653a202170656e64696e67476f76000000604082015260600190565b60208082526024908201527f3a3a69734b65657065723a206b6565706572206973206e6f7420726567697374604082015263195c995960e21b606082015260800190565b60208082526023908201527f4669786564506f696e743a204d554c5449504c49434154494f4e5f4f564552466040820152624c4f5760e81b606082015260800190565b60208082526017908201527f4669786564506f696e743a204449565f42595f5a45524f000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b90815260200190565b600086825285602083015260a06040830152612c6760a0830186612749565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff81118282101715612cb957600080fd5b604052919050565b600067ffffffffffffffff821115612cd7578081fd5b5060209081020190565b6001600160a01b0381168114610f5d57600080fd5b6001600160701b0381168114610f5d57600080fdfea264697066735822122092f083ba388aae930a4eaaeacb887e25ce9ff6204bed002d94ed6d06c7b4cbfb64736f6c63430007000033
Deployed ByteCode Sourcemap
12801:13539:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14998:53;;;;;;;;;;-1:-1:-1;14998:53:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;25613:251;;;;;;;;;;-1:-1:-1;25613:251:0;;;;;:::i;:::-;;:::i;:::-;;21693:1443;;;;;;;;;;-1:-1:-1;21693:1443:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13014:29::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15585:104::-;;;;;;;;;;-1:-1:-1;15585:104:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16710:153::-;;;;;;;;;;-1:-1:-1;16710:153:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14040:170::-;;;;;;;;;;;;;:::i;16431:128::-;;;;;;;;;;;;;:::i;16567:135::-;;;;;;;;;;;;;:::i;25361:246::-;;;;;;;;;;-1:-1:-1;25361:246:0;;;;;:::i;:::-;;:::i;15354:152::-;;;;;;;;;;-1:-1:-1;15354:152:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23538:191::-;;;;;;;;;;-1:-1:-1;23538:191:0;;;;;:::i;:::-;;:::i;23341:189::-;;;;;;;;;;-1:-1:-1;23341:189:0;;;;;:::i;:::-;;:::i;15899:524::-;;;;;;;;;;-1:-1:-1;15899:524:0;;;;;:::i;:::-;;:::i;14395:101::-;;;;;;;;;;;;;:::i;13646:25::-;;;;;;;;;;;;;:::i;24553:230::-;;;;;;;;;;-1:-1:-1;24553:230:0;;;;;:::i;:::-;;:::i;17476:228::-;;;;;;;;;;;;;:::i;15060:121::-;;;;;;;;;;-1:-1:-1;15060:121:0;;;;;:::i;:::-;;:::i;24791:564::-;;;;;;;;;;-1:-1:-1;24791:564:0;;;;;:::i;:::-;;:::i;14218:85::-;;;;;;;;;;;;;:::i;24159:188::-;;;;;;;;;;-1:-1:-1;24159:188:0;;;;;:::i;:::-;;:::i;15189:157::-;;;;;;;;;;-1:-1:-1;15189:157:0;;;;;:::i;:::-;;:::i;17319:149::-;;;;;;;;;;-1:-1:-1;17319:149:0;;;;;:::i;:::-;;:::i;23963:188::-;;;;;;;;;;-1:-1:-1;23963:188:0;;;;;:::i;:::-;;:::i;18927:1100::-;;;;;;;;;;-1:-1:-1;18927:1100:0;;;;;:::i;:::-;;:::i;13866:170::-;;;;;;;;;;-1:-1:-1;13866:170:0;;;;;:::i;:::-;;:::i;14310:78::-;;;;;;;;;;;;;:::i;20035:1453::-;;;;;;;;;;-1:-1:-1;20035:1453:0;;;;;:::i;:::-;;:::i;23737:218::-;;;;;;;;;;-1:-1:-1;23737:218:0;;;;;:::i;:::-;;:::i;21496:189::-;;;;;;;;;;-1:-1:-1;21496:189:0;;;;;:::i;:::-;;:::i;14505:76::-;;;;;;;;;;;;;:::i;15697:194::-;;;;;;;;;;-1:-1:-1;15697:194:0;;;;;:::i;:::-;;:::i;13719:142::-;;;;;;;;;;-1:-1:-1;13719:142:0;;;;;:::i;:::-;;:::i;17091:220::-;;;;;;;;;;-1:-1:-1;17091:220:0;;;;;:::i;:::-;;:::i;24355:190::-;;;;;;;;;;-1:-1:-1;24355:190:0;;;;;:::i;:::-;;:::i;14588:37::-;;;;;;;;;;;;;:::i;23144:189::-;;;;;;;;;;-1:-1:-1;23144:189:0;;;;;:::i;:::-;;:::i;13678:32::-;;;;;;;;;;;;;:::i;14900:90::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14998:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14998:53:0;;-1:-1:-1;14998:53:0;:::o;25613:251::-;25771:9;25783:16;25790:8;25783:6;:16::i;:::-;25771:28;;25810:46;25831:4;25837:11;25850:5;25810:20;:46::i;:::-;;25613:251;;;;:::o;21693:1443::-;21806:13;21832:12;21847:53;14539:42;21882:7;21891:8;21847:25;:53::i;:::-;21832:68;;21912:14;21931:47;21960:7;21969:8;21931:28;:47::i;:::-;21911:67;;;21989:21;22024:6;22013:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22013:18:0;-1:-1:-1;;;;;;22058:18:0;;22044:11;22058:18;;;:12;:18;;;;;:25;21989:42;;-1:-1:-1;;;22058:27:0;;;;22105;22058;22116:15;;;22105:10;:27::i;:::-;22096:36;;22143:14;22172:10;22213:7;-1:-1:-1;;;;;22203:17:0;:6;-1:-1:-1;;;;;22203:17:0;;22199:905;;;22237:412;22248:6;22244:1;:10;22237:412;;;-1:-1:-1;;;;;22383:18:0;;;;;;:12;:18;;;;;:21;;22298:10;;;;-1:-1:-1;22344:253:0;;22383:18;22298:1;;22383:21;;;;;;;;;;;;;;;;:38;;;22444:12;:18;22457:4;-1:-1:-1;;;;;22444:18:0;-1:-1:-1;;;;;22444:18:0;;;;;;;;;;;;22463:9;22444:29;;;;;;;;;;;;;;;;;;:46;;;22555:12;:18;22568:4;-1:-1:-1;;;;;22555:18:0;-1:-1:-1;;;;;22555:18:0;;;;;;;;;;;;22574:1;22555:21;;;;;;;;;;;;;;;;;;;;;;;:31;-1:-1:-1;;;;;22513:18:0;;;;:12;:18;;;;;;;:29;;22532:9;;22513:29;;;;;;;;;;;;;;;;:39;;;:73;22588:8;22344:16;:253::i;:::-;22327:7;22335:5;22327:14;;;;;;;;;;;;;;;;;:270;22256:9;;;;22632:1;22624:9;22237:412;;;22199:905;;;22692:6;22688:1;:10;22681:412;;;-1:-1:-1;;;;;22827:18:0;;;;;;:12;:18;;;;;:21;;22742:10;;;;-1:-1:-1;22788:253:0;;22827:18;22742:1;;22827:21;;;;;;;;;;;;;;;;:38;;;22888:12;:18;22901:4;-1:-1:-1;;;;;22888:18:0;-1:-1:-1;;;;;22888:18:0;;;;;;;;;;;;22907:9;22888:29;;;;;;;;;;;;;;;;;;:46;;;22999:12;:18;23012:4;-1:-1:-1;;;;;22999:18:0;-1:-1:-1;;;;;22999:18:0;;;;;;;;;;;;23018:1;22999:21;;;;;;;22788:253;22771:7;22779:5;22771:14;;;;;;;;;;;;;;;;;:270;22700:9;;;;23076:1;23068:9;22681:412;;;-1:-1:-1;23121:7:0;;21693:1443;-1:-1:-1;;;;;;;;;;;21693:1443:0:o;13014:29::-;;;;:::o;15585:104::-;15644:4;13152:7;;13122:44;;-1:-1:-1;;;13122:44:0;;14260:42;;13122:17;;:44;;13140:10;;15644:4;;;;13122:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13114:93;;;;-1:-1:-1;;;13114:93:0;;;;;;;:::i;:::-;;;;;;;;;15668:13:::1;15676:4;15668:7;:13::i;:::-;15661:20;;13218:1;15585:104:::0;;;:::o;16710:153::-;16770:18;;:::i;:::-;-1:-1:-1;;;;;16808:18:0;;;;;;:12;:18;;;;;16827:25;;-1:-1:-1;;16827:27:0;;;16808:47;;;;;;;;;;;;;;;;16801:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16710:153;;;:::o;14040:170::-;14110:17;;-1:-1:-1;;;;;14110:17:0;14096:10;:31;14088:73;;;;-1:-1:-1;;;14088:73:0;;;;;;;:::i;:::-;14185:17;;;14172:30;;-1:-1:-1;;;;;;14172:30:0;-1:-1:-1;;;;;14185:17:0;;;14172:30;;;;;;14040:170::o;16431:128::-;13264:13;13280:9;13338:7;;;13308:44;;-1:-1:-1;;;13308:44:0;;13264:25;;-1:-1:-1;14260:42:0;;13308:17;;:44;;13326:10;;13338:7;;;;;13308:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13300:93;;;;-1:-1:-1;;;13300:93:0;;;;;;;:::i;:::-;16472:11:::1;16486:12;:10;:12::i;:::-;16472:26;;16517:6;16509:42;;;;-1:-1:-1::0;;;16509:42:0::1;;;;;;;:::i;:::-;13404:1;13416:14:::0;14260:42;-1:-1:-1;;;;;13433:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13433:26:0;;13460:23;13473:9;13460:8;;:12;:23::i;:::-;13433:51;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13495:55;;-1:-1:-1;;;13495:55:0;;13416:68;;-1:-1:-1;14260:42:0;;13495:13;;:55;;14260:42;;13533:4;;13416:68;;13495:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13573:16;13579:9;13573:5;:16::i;:::-;13600:30;;13561:28;;-1:-1:-1;13600:10:0;;:30;;;;;13561:28;;13600:30;;;;13561:28;13600:10;:30;;;;;;;;;;;;;;;;;;;;;16431:128;;:::o;16567:135::-;13152:7;;;13122:44;;-1:-1:-1;;;13122:44:0;;14260:42;;13122:17;;:44;;13140:10;;13152:7;;;13122:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13114:93;;;;-1:-1:-1;;;13114:93:0;;;;;;;:::i;:::-;16615:11:::1;16629:12;:10;:12::i;:::-;16615:26;;16660:6;16652:42;;;;-1:-1:-1::0;;;16652:42:0::1;;;;;;;:::i;:::-;13218:1;16567:135::o:0;25361:246::-;25496:16;25562:11;25567:5;25562:4;:11::i;:::-;25548;25541:4;25536:2;:9;:23;:37;25525:48;;25361:246;;;;;;:::o;15354:152::-;15414:7;15441:57;14539:42;15476:6;14345:42;15441:25;:57::i;23538:191::-;23640:13;23673:48;23680:7;23689:8;23699;23709:6;23717:3;23673:6;:48::i;:::-;23666:55;23538:191;-1:-1:-1;;;;;23538:191:0:o;23341:189::-;23442:13;23475:47;23482:7;23491:8;23501;23511:6;23519:2;23475:6;:47::i;15899:524::-;15986:10;;-1:-1:-1;;;;;15986:10:0;15972;:24;15964:64;;;;-1:-1:-1;;;15964:64:0;;;;;;;:::i;:::-;16039:12;16054:50;14539:42;16089:6;16097;16054:25;:50::i;:::-;-1:-1:-1;;;;;16124:12:0;;;;;;:6;:12;;;;;;16039:65;;-1:-1:-1;16124:12:0;;16123:13;16115:31;;;;-1:-1:-1;;;16115:31:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16157:12:0;;;;;;:6;:12;;;;;:19;;-1:-1:-1;;16157:19:0;16172:4;16157:19;;;;;;16187:6;:17;;;;;;;;;;;;;-1:-1:-1;;;;;;16187:17:0;;;;;;;16157:12;16267:48;16164:4;16267:42;:48::i;:::-;-1:-1:-1;;;;;;16326:18:0;;;;;;;:12;:18;;;;;;;;16350:64;;;;;;;16362:15;16350:64;;;;;;;;;;;;;;16326:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;15899:524:0:o;14395:101::-;14453:42;14395:101;:::o;13646:25::-;;;-1:-1:-1;;;;;13646:25:0;;:::o;24553:230::-;24599:7;24641:1;24636;24632:5;;24631:11;24632:5;24677:80;24688:1;24684;:5;24677:80;;;-1:-1:-1;24710:1:0;24744;24710;;24731;24710;24731:5;;;;;:9;24730:15;;;;;;24726:19;;24677:80;;17476:228;17519:4;;17536:138;17557:6;:13;17553:17;;17536:138;;;17596:19;17605:6;17612:1;17605:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17605:9:0;17596:8;:19::i;:::-;17592:71;;;17643:4;17636:11;;;;;17592:71;17572:3;;17536:138;;;;17691:5;17684:12;;17476:228;;:::o;15060:121::-;-1:-1:-1;;;;;15148:18:0;15124:4;15148:18;;;:12;:18;;;;;:25;;15060:121::o;24791:564::-;24851:10;;;24897:85;24917:7;:14;24913:1;:18;24897:85;;;24960:7;24968:1;24960:10;;;;;;;;;;;;;;24953:17;;;;24933:3;;;;;;;24897:85;;;;24992:12;25013:7;:14;25007:3;:20;;;;;;24992:35;;25102:1;25096:7;;25114:6;25131:94;25146:7;:14;25142:1;:18;25131:94;;;25212:1;25203:4;25190:7;25198:1;25190:10;;;;;;;;;;;;;;:17;25189:24;25182:31;;;;25162:3;;;;;;;25131:94;;;25240:32;25269:1;25252:7;:14;:18;25245:3;:26;;;;;;25240:4;:32::i;14218:85::-;14260:42;14218:85;:::o;24159:188::-;24265:4;24289:50;24296:42;24303:7;24312:8;24322;24332:1;24335:2;24296:6;:42::i;24289:50::-;24282:57;24159:188;-1:-1:-1;;;;24159:188:0:o;15189:157::-;15261:7;15288:50;14539:42;15323:6;15331;15288:25;:50::i;:::-;15281:57;;15189:157;;;;;:::o;17319:149::-;17372:4;14622:3;17415:21;17431:4;17415:15;:21::i;:::-;:31;17397:15;:49;17396:64;;17319:149;-1:-1:-1;;17319:149:0:o;23963:188::-;24070:4;24094:49;24101:41;24108:7;24117:8;24127;24137:1;24140;24101:6;:41::i;18927:1100::-;19017:14;19044:12;19059:53;14539:42;19094:7;19103:8;19059:25;:53::i;:::-;19044:68;-1:-1:-1;19131:31:0;19044:68;19144:17;14622:3;19159:1;19144:14;:17::i;:::-;19131:6;:31::i;:::-;19123:81;;;;-1:-1:-1;;;19123:81:0;;;;;;;:::i;:::-;19216:14;19235:47;19264:7;19273:8;19235:28;:47::i;:::-;19215:67;;;19295:31;;:::i;:::-;19329:21;19345:4;19329:15;:21::i;:::-;19295:55;;19362:21;19385;19411:48;19454:4;19411:42;:48::i;:::-;-1:-1:-1;19493:22:0;;19361:98;;-1:-1:-1;19361:98:0;-1:-1:-1;19474:15:0;:41;19470:136;;;-1:-1:-1;;;;;19547:18:0;;;;;;:12;:18;;;;;19566:25;;-1:-1:-1;;19566:27:0;;;19547:47;;;;;;;;;;;;;;;;19532:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19470:136;19655:22;;19637:15;:40;19702:16;;:34;;19725:11;19702:34;;;19721:1;19702:34;19688:48;;19761:7;-1:-1:-1;;;;;19751:17:0;:6;-1:-1:-1;;;;;19751:17:0;;19747:273;;;19792:88;19809:12;:29;;;19840:16;19858:11;19871:8;19792:16;:88::i;:::-;19785:95;;;;;;;;;;19747:273;19920:88;19937:12;:29;;;19968:16;19986:11;19999:8;19920:16;:88::i;13866:170::-;13952:10;;-1:-1:-1;;;;;13952:10:0;13938;:24;13930:56;;;;-1:-1:-1;;;13930:56:0;;;;;;;:::i;:::-;13997:17;:31;;-1:-1:-1;;;;;;13997:31:0;-1:-1:-1;;;;;13997:31:0;;;;;;;;;;13866:170::o;14310:78::-;14345:42;14310:78;:::o;20035:1453::-;20141:14;20168:12;20183:53;14539:42;20218:7;20227:8;20183:25;:53::i;:::-;20168:68;-1:-1:-1;20255:41:0;20168:68;20268:27;14622:3;20283:11;20268:14;:27::i;20255:41::-;20247:91;;;;-1:-1:-1;;;20247:91:0;;;;;;;:::i;:::-;20350:14;20369:47;20398:7;20407:8;20369:28;:47::i;:::-;-1:-1:-1;;;;;;20485:18:0;;20429:27;20485:18;;;:12;:18;;;;;:25;20349:67;;-1:-1:-1;20429:27:0;-1:-1:-1;;20485:27:0;20429;20532:23;20485:27;20543:11;20532:10;:23::i;:::-;20523:32;;20570:14;20613:7;-1:-1:-1;;;;;20603:17:0;:6;-1:-1:-1;;;;;20603:17:0;;20599:825;;;20637:372;20648:6;20644:1;:10;20637:372;;;-1:-1:-1;;;;;;20779:18:0;;;;;;:12;:18;;;;;:21;;20694:1;20692:3;;;20740:253;;20692:1;;20779:21;;;;;;;;;;;;;;;;:38;;;20840:12;:18;20853:4;-1:-1:-1;;;;;20840:18:0;-1:-1:-1;;;;;20840:18:0;;;;;;;;;;;;20859:9;20840:29;;;;;;;;;;;;;;;;;;:46;;;20951:12;:18;20964:4;-1:-1:-1;;;;;20951:18:0;-1:-1:-1;;;;;20951:18:0;;;;;;;;;;;;20970:1;20951:21;;;;;;;;;;;;;;;;;;;;;;;:31;-1:-1:-1;;;;;20909:18:0;;;;:12;:18;;;;;;;:29;;20928:9;;20909:29;;;;;;;;;;;;;;;;:39;;;:73;20984:8;20740:16;:253::i;:::-;20714:279;;;;20656:3;;;;;20637:372;;;20599:825;;;21052:6;21048:1;:10;21041:372;;;-1:-1:-1;;;;;;21183:18:0;;;;;;:12;:18;;;;;:21;;21098:1;21096:3;;;21144:253;;21096:1;;21183:21;;;;;;;;;;;;;;;;:38;;;21244:12;:18;21257:4;-1:-1:-1;;;;;21244:18:0;-1:-1:-1;;;;;21244:18:0;;;;;;;;;;;;21263:9;21244:29;;;;;;;;;;;;;;;;;;:46;;;21355:12;:18;21368:4;-1:-1:-1;;;;;21355:18:0;-1:-1:-1;;;;;21355:18:0;;;;;;;;;;;;21374:1;21355:21;;;;;;;21144:253;21118:279;;;;21060:3;;;;;21041:372;;;21441:39;:22;21468:11;21441:26;:39::i;:::-;21434:46;20035:1453;-1:-1:-1;;;;;;;;;;;20035:1453:0:o;23737:218::-;23864:4;23888:59;23895:51;23902:7;23911:8;23921;23931:6;23939;23895;:51::i;23888:59::-;23881:66;23737:218;-1:-1:-1;;;;;;23737:218:0:o;21496:189::-;21598:13;21631:46;21638:7;21647:8;21657;21667:6;21675:1;21631:6;:46::i;14505:76::-;14539:42;14505:76;:::o;15697:194::-;15770:4;13152:7;;13122:44;;-1:-1:-1;;;13122:44:0;;14260:42;;13122:17;;:44;;13140:10;;15770:4;;;;13122:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13114:93;;;;-1:-1:-1;;;13114:93:0;;;;;;;:::i;:::-;15787:12:::1;15802:50;14539:42;15837:6;15845;15802:25;:50::i;:::-;15787:65;;15870:13;15878:4;15870:7;:13::i;13719:142::-:0;13793:10;;-1:-1:-1;;;;;13793:10:0;13779;:24;13771:56;;;;-1:-1:-1;;;13771:56:0;;;;;;;:::i;:::-;13838:7;:15;13719:142::o;17091:220::-;17156:12;13152:7;;13122:44;;-1:-1:-1;;;13122:44:0;;14260:42;;13122:17;;:44;;13140:10;;17156:12;;;;13122:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13114:93;;;;-1:-1:-1;;;13114:93:0;;;;;;;:::i;:::-;17192:6:::1;17188:1;:10;17181:123;;;17224:18;17232:6;17239:1;17232:9;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;17232:9:0::1;17224:7;:18::i;:::-;17220:73;;;-1:-1:-1::0;17273:4:0::1;17220:73;17200:3;::::0;;::::1;::::0;17181:123:::1;;24355:190:::0;24462:4;24486:51;24493:43;24500:7;24509:8;24519;24529:1;24532:3;24493:6;:43::i;14588:37::-;14622:3;14588:37;:::o;23144:189::-;23246:13;23279:46;23286:7;23295:8;23305;23315:6;23323:1;23279:6;:46::i;13678:32::-;;;-1:-1:-1;;;;;13678:32:0;;:::o;14900:90::-;14940:16;14976:6;14969:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14969:13:0;;;;;;;;;;;;;;;;;;;;;;;14900:90;:::o;8203:492::-;8292:12;8318:14;8334;8352:26;8363:6;8371;8352:10;:26::i;:::-;8317:61;;;;8480:7;8533:6;8541;8516:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8506:43;;;;;;8419:265;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8419:265:0;;;;;;;;;8409:276;;8419:265;8409:276;;;;;8203:492;-1:-1:-1;;;;;;8203:492:0:o;7847:351::-;7922:14;7938;7983:6;-1:-1:-1;;;;;7973:16:0;:6;-1:-1:-1;;;;;7973:16:0;;;7965:67;;;;-1:-1:-1;;;7965:67:0;;;;;;;:::i;:::-;8071:6;-1:-1:-1;;;;;8062:15:0;:6;-1:-1:-1;;;;;8062:15:0;;:53;;8100:6;8108;8062:53;;;8081:6;8089;8062:53;8043:72;;-1:-1:-1;8043:72:0;-1:-1:-1;;;;;;8134:20:0;;8126:64;;;;-1:-1:-1;;;8126:64:0;;;;;;;:::i;:::-;7847:351;;;;;:::o;6160:137::-;6218:7;6245:44;6249:1;6252;6245:44;;;;;;;;;;;;;;;;;:3;:44::i;18316:442::-;18474:14;18534:40;;:::i;:::-;18577:112;;;;;;;;18666:11;18642:20;18621:18;:41;18620:57;;;;;;-1:-1:-1;;;;;18577:112:0;;;18534:155;-1:-1:-1;18712:38:0;:26;18534:155;18729:8;18712:16;:26::i;:::-;:36;:38::i;:::-;18700:50;;;18316:442;-1:-1:-1;;;;;;18316:442:0:o;17712:596::-;17761:4;17869:25;;:::i;:::-;17897:21;17913:4;17897:15;:21::i;:::-;17966:16;;17869:49;;-1:-1:-1;17948:15:0;:34;14622:3;17997:24;;17993:285;;;18039:21;18062;18088:48;18131:4;18088:42;:48::i;:::-;-1:-1:-1;;;;;;18151:18:0;;;;;;:12;:18;;;;;;;;18175:64;;;;;;;18187:15;18175:64;;;;;;;;;;;;;;18151:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18255:11:0;;-1:-1:-1;;;;18255:11:0;17993:285;-1:-1:-1;18295:5:0;;17712:596;-1:-1:-1;;;17712:596:0:o;16871:212::-;16911:12;;16936:140;16957:6;:13;16953:17;;16936:140;;;16996:18;17004:6;17011:1;17004:9;;;;;;;16996:18;16992:73;;;17045:4;17035:14;;16992:73;16972:3;;16936:140;;;;16871:212;:::o;25909:428::-;25973:36;;-1:-1:-1;;;25973:36:0;;25956:4;;14260:42;;25973:13;;:36;;14453:42;;26001:7;;25973:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;26046:16:0;;;26060:1;26046:16;;;26022:21;26046:16;;;;;26022:21;26046:16;;;;;;;;;;-1:-1:-1;26046:16:0;26022:40;;14260:42;26073:4;26078:1;26073:7;;;;;;;;;;;;;:24;-1:-1:-1;;;;;26073:24:0;;;-1:-1:-1;;;;;26073:24:0;;;;;14345:42;26108:4;26113:1;26108:7;;;;;;;;-1:-1:-1;;;;;26108:23:0;;;:7;;;;;;;;;;;:23;26144:21;14453:42;26168:28;26197:7;26214:1;26218:4;26232;26239:25;:15;26259:4;26239:19;:25::i;:::-;26168:97;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26168:97:0;;;;;;;;;;;;:::i;:::-;26144:121;;14345:42;-1:-1:-1;;;;;26276:13:0;;26290:7;26298:1;26290:10;;;;;;;;;;;;;;26276:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26319:7;26327:1;26319:10;;;;;;;;;;;;;;26312:17;;;;25909:428;;;:::o;4957:797::-;5043:21;5066;5089;5140:23;:21;:23::i;:::-;5123:40;;5209:4;-1:-1:-1;;;;;5193:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5174:63;;5283:4;-1:-1:-1;;;;;5267:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5248:63;;5323:16;5341;5359:25;5404:4;-1:-1:-1;;;;;5388:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5322:101;;;;;;5460:14;5438:36;;:18;:36;;;5434:313;;5510:35;;;5578:62;;;5583:39;5603:8;5613;5583:19;:39::i;:::-;:42;-1:-1:-1;;;;;5578:48:0;:62;5558:82;;;;;5673:62;;;5678:39;5698:8;5708;5678:19;:39::i;:::-;:42;-1:-1:-1;;;;;5673:48:0;:62;5653:82;;;;;-1:-1:-1;5434:313:0;4957:797;;;;;;;;:::o;6495:240::-;6553:7;6575:6;6571:47;;-1:-1:-1;6605:1:0;6598:8;;6571:47;6638:5;;;6642:1;6638;:5;:1;6660:5;;;;;:10;6652:56;;;;-1:-1:-1;;;6652:56:0;;;;;;;:::i;18766:153::-;18829:4;18908:3;18872:21;18888:4;18872:15;:21::i;:::-;:31;18854:15;:49;18853:58;;;18766:153;-1:-1:-1;;;18766:153:0:o;6996:132::-;7054:7;7081:39;7085:1;7088;7081:39;;;;;;;;;;;;;;;;;:3;:39::i;6301:190::-;6387:7;6423:12;6415:6;;;;6407:29;;;;-1:-1:-1;;;6407:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;6459:5:0;;;6301:190::o;3974:253::-;4041:16;;:::i;:::-;4070:6;4095;;;:54;;-1:-1:-1;;4141:7:0;;-1:-1:-1;;;;;4136:13:0;4110:17;;;;4131:1;4110:17;4131:1;4105:27;;;;;:44;4095:54;4087:102;;;;-1:-1:-1;;;4087:102:0;;;;;;;:::i;:::-;4207:12;;;;;;;;;;;;;3974:253;-1:-1:-1;;;3974:253:0:o;4624:130::-;4724:7;3477:3;4724:21;;4624:130::o;5783:179::-;5841:7;5873:5;;;5897:6;;;;5889:46;;;;-1:-1:-1;;;5889:46:0;;;;;;;:::i;4826:123::-;4915:25;:15;:25;;4826:123::o;4235:246::-;4316:16;;:::i;:::-;4367:1;4353:11;-1:-1:-1;;;;;4353:15:0;;4345:51;;;;-1:-1:-1;;;4345:51:0;;;;;;;:::i;:::-;4414:59;;;;;;;;;;-1:-1:-1;;;;;4424:48:0;;-1:-1:-1;;;3477:3:0;4425:32;;;;4424:48;;;;;;-1:-1:-1;;;;;4414:59:0;;;;4407:66;;4235:246;;;;:::o;7132:341::-;7218:7;7320:12;7313:5;7305:28;;;;-1:-1:-1;;;7305:28:0;;;;;;;;:::i;:::-;;7344:9;7360:1;7356;:5;;;;;;;7132:341;-1:-1:-1;;;;;7132:341:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;160:707::-;;277:3;270:4;262:6;258:17;254:27;244:2;;-1:-1;;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;:::i;:::-;354:80;:::i;:::-;462:21;;;345:89;-1:-1;506:4;519:14;;;;494:17;;;608;;;599:27;;;;596:36;-1:-1;593:2;;;645:1;;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;2153:20;;748:50;;812:14;;;;840;;;;702:1;695:9;655:206;;;659:14;;;;;237:630;;;;:::o;2503:241::-;;2607:2;2595:9;2586:7;2582:23;2578:32;2575:2;;;-1:-1;;2613:12;2575:2;85:6;72:20;97:33;124:5;97:33;:::i;2751:366::-;;;2872:2;2860:9;2851:7;2847:23;2843:32;2840:2;;;-1:-1;;2878:12;2840:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2930:63;-1:-1;3030:2;3069:22;;72:20;97:33;72:20;97:33;:::i;:::-;3038:63;;;;2834:283;;;;;:::o;3124:366::-;;;3245:2;3233:9;3224:7;3220:23;3216:32;3213:2;;;-1:-1;;3251:12;3213:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3303:63;3403:2;3442:22;;;;2153:20;;-1:-1;;;3207:283::o;3497:491::-;;;;3635:2;3623:9;3614:7;3610:23;3606:32;3603:2;;;-1:-1;;3641:12;3603:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3693:63;-1:-1;3793:2;3832:22;;2153:20;;-1:-1;3901:2;3940:22;;72:20;97:33;72:20;97:33;:::i;:::-;3909:63;;;;3597:391;;;;;:::o;3995:617::-;;;;;4150:3;4138:9;4129:7;4125:23;4121:33;4118:2;;;-1:-1;;4157:12;4118:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4209:63;-1:-1;4309:2;4348:22;;2153:20;;-1:-1;4417:2;4456:22;;72:20;97:33;72:20;97:33;:::i;:::-;4112:500;;;;-1:-1;4425:63;;4525:2;4564:22;2153:20;;-1:-1;;4112:500::o;4619:743::-;;;;;;4791:3;4779:9;4770:7;4766:23;4762:33;4759:2;;;-1:-1;;4798:12;4759:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4850:63;-1:-1;4950:2;4989:22;;2153:20;;-1:-1;5058:2;5097:22;;72:20;97:33;72:20;97:33;:::i;:::-;4753:609;;;;-1:-1;5066:63;;5166:2;5205:22;;2153:20;;-1:-1;5274:3;5314:22;2153:20;;4753:609;-1:-1;;4753:609::o;5369:377::-;;5498:2;5486:9;5477:7;5473:23;5469:32;5466:2;;;-1:-1;;5504:12;5466:2;5562:17;5549:31;5600:18;5592:6;5589:30;5586:2;;;-1:-1;;5622:12;5586:2;5652:78;5722:7;5713:6;5702:9;5698:22;5652:78;:::i;5753:392::-;;5893:2;;5881:9;5872:7;5868:23;5864:32;5861:2;;;-1:-1;;5899:12;5861:2;5950:17;5944:24;5988:18;5980:6;5977:30;5974:2;;;-1:-1;;6010:12;5974:2;6097:22;;1014:4;1002:17;;998:27;-1:-1;988:2;;-1:-1;;1029:12;988:2;1069:6;1063:13;1091:80;1106:64;1163:6;1106:64;:::i;1091:80::-;1199:21;;;1256:14;;;;1231:17;;;1345;;;1336:27;;;;1333:36;-1:-1;1330:2;;;-1:-1;;1372:12;1330:2;-1:-1;1398:10;;1392:217;1417:6;1414:1;1411:13;1392:217;;;2301:13;;1485:61;;1439:1;1432:9;;;;;1560:14;;;;1588;;1392:217;;;-1:-1;6030:99;5855:290;-1:-1;;;;;;;5855:290::o;6152:627::-;;;;6315:2;6303:9;6294:7;6290:23;6286:32;6283:2;;;-1:-1;;6321:12;6283:2;6379:17;6366:31;6417:18;6409:6;6406:30;6403:2;;;-1:-1;;6439:12;6403:2;6469:78;6539:7;6530:6;6519:9;6515:22;6469:78;:::i;:::-;6459:88;6584:2;6623:22;;2153:20;;-1:-1;6692:2;6731:22;;;2153:20;;6277:502;-1:-1;;;;6277:502::o;6786:257::-;;6898:2;6886:9;6877:7;6873:23;6869:32;6866:2;;;-1:-1;;6904:12;6866:2;1704:6;1698:13;37142:5;34128:13;34121:21;37120:5;37117:32;37107:2;;-1:-1;;37153:12;7050:309;;7188:2;7176:9;7167:7;7163:23;7159:32;7156:2;;;-1:-1;;7194:12;7156:2;1865:6;1859:13;1877:56;1927:5;1877:56;:::i;7366:533::-;;;;7514:2;7502:9;7493:7;7489:23;7485:32;7482:2;;;-1:-1;;7520:12;7482:2;2029:6;2023:13;2041:33;2068:5;2041:33;:::i;:::-;7683:2;7733:22;;2023:13;7572:74;;-1:-1;2041:33;2023:13;2041:33;:::i;:::-;7802:2;7851:22;;2441:13;7691:74;;-1:-1;34749:10;34738:22;;37655:34;;37645:2;;-1:-1;;37693:12;7906:241;;8010:2;7998:9;7989:7;7985:23;7981:32;7978:2;;;-1:-1;;8016:12;7978:2;-1:-1;2153:20;;7972:175;-1:-1;7972:175::o;8154:263::-;;8269:2;8257:9;8248:7;8244:23;8240:32;8237:2;;;-1:-1;;8275:12;8237:2;-1:-1;2301:13;;8231:186;-1:-1;8231:186::o;8424:366::-;;;8545:2;8533:9;8524:7;8520:23;8516:32;8513:2;;;-1:-1;;8551:12;8513:2;-1:-1;;2153:20;;;8703:2;8742:22;;;2153:20;;-1:-1;8507:283::o;8797:491::-;;;;8935:2;8923:9;8914:7;8910:23;8906:32;8903:2;;;-1:-1;;8941:12;8903:2;-1:-1;;2153:20;;;9093:2;9132:22;;2153:20;;-1:-1;9201:2;9240:22;;;2153:20;;8897:391;-1:-1;8897:391::o;10228:690::-;;10421:5;32720:12;33395:6;33390:3;33383:19;33432:4;;33427:3;33423:14;10433:93;;33432:4;10597:5;32416:14;-1:-1;10636:260;10661:6;10658:1;10655:13;10636:260;;;10722:13;;-1:-1;;;;;34532:54;9869:37;;9449:14;;;;33123;;;;5600:18;10676:9;10636:260;;;-1:-1;10902:10;;10352:566;-1:-1;;;;;10352:566::o;19296:392::-;-1:-1;;36909:2;36905:14;;;;;10127:58;;36905:14;;;;;19549:2;19540:12;;10127:58;19651:12;;;19440:248::o;19695:926::-;-1:-1;;;;;;16065:87;;36909:2;36905:14;;;;-1:-1;;36905:14;16050:1;16171:11;;10127:58;20307:12;;;11855:58;15677:66;20418:12;;;15657:87;15763:12;;;20041:580::o;20628:222::-;-1:-1;;;;;34532:54;;;;9869:37;;20755:2;20740:18;;20726:124::o;20857:604::-;-1:-1;;;;;34532:54;;;;9738:58;;21265:2;21250:18;;11855:58;;;;21356:2;21341:18;;12517:58;21447:2;21432:18;;12517:58;21092:3;21077:19;;21063:398::o;21468:460::-;-1:-1;;;;;34532:54;;;9869:37;;34532:54;;;;21831:2;21816:18;;9738:58;21914:2;21899:18;;11855:58;;;;21659:2;21644:18;;21630:298::o;21935:333::-;-1:-1;;;;;34532:54;;;;9869:37;;22254:2;22239:18;;11855:58;22090:2;22075:18;;22061:207::o;22275:370::-;;22452:2;22473:17;22466:47;22527:108;22452:2;22441:9;22437:18;22621:6;22527:108;:::i;22652:370::-;22829:2;22843:47;;;32720:12;;22814:18;;;33383:19;;;22652:370;;22829:2;32416:14;;;;33423;;;;22652:370;11365:260;11390:6;11387:1;11384:13;11365:260;;;11451:13;;11855:58;;33123:14;;;;9631;;;;11412:1;11405:9;11365:260;;;-1:-1;22896:116;;22800:222;-1:-1;;;;;;22800:222::o;23029:210::-;34128:13;;34121:21;11720:34;;23150:2;23135:18;;23121:118::o;24047:310::-;;24194:2;;24215:17;24208:47;12732:5;32720:12;33395:6;24194:2;24183:9;24179:18;33383:19;-1:-1;36247:101;36261:6;36258:1;36255:13;36247:101;;;36328:11;;;;;36322:18;36309:11;;;33423:14;36309:11;36302:39;36276:10;;36247:101;;;36363:6;36360:1;36357:13;36354:2;;;-1:-1;33423:14;36419:6;24183:9;36410:16;;36403:27;36354:2;-1:-1;36814:7;36798:14;-1:-1;;36794:28;12890:39;;;;33423:14;12890:39;;24165:192;-1:-1;;;24165:192::o;24364:416::-;24564:2;24578:47;;;13166:2;24549:18;;;33383:19;13202:25;33423:14;;;13182:46;13247:12;;;24535:245::o;24787:416::-;24987:2;25001:47;;;13498:2;24972:18;;;33383:19;13534:29;33423:14;;;13514:50;13583:12;;;24958:245::o;25210:416::-;25410:2;25424:47;;;13834:2;25395:18;;;33383:19;13870:33;33423:14;;;13850:54;13923:12;;;25381:245::o;25633:416::-;25833:2;25847:47;;;14174:2;25818:18;;;33383:19;-1:-1;;;33423:14;;;14190:42;14251:12;;;25804:245::o;26056:416::-;26256:2;26270:47;;;14502:2;26241:18;;;33383:19;14538:34;33423:14;;;14518:55;-1:-1;;;14593:12;;;14586:30;14635:12;;;26227:245::o;26479:416::-;26679:2;26693:47;;;14886:2;26664:18;;;33383:19;14922:34;33423:14;;;14902:55;-1:-1;;;14977:12;;;14970:29;15018:12;;;26650:245::o;26902:416::-;27102:2;27116:47;;;15269:2;27087:18;;;33383:19;15305:29;33423:14;;;15285:50;15354:12;;;27073:245::o;27325:416::-;27525:2;27539:47;;;16421:2;27510:18;;;33383:19;16457:34;33423:14;;;16437:55;-1:-1;;;16512:12;;;16505:25;16549:12;;;27496:245::o;27748:416::-;27948:2;27962:47;;;16800:1;27933:18;;;33383:19;-1:-1;;;33423:14;;;16815:28;16862:12;;;27919:245::o;28171:416::-;28371:2;28385:47;;;17113:2;28356:18;;;33383:19;17149:31;33423:14;;;17129:52;17200:12;;;28342:245::o;28594:416::-;28794:2;28808:47;;;17451:2;28779:18;;;33383:19;17487:34;33423:14;;;17467:55;-1:-1;;;17542:12;;;17535:28;17582:12;;;28765:245::o;29017:416::-;29217:2;29231:47;;;17833:2;29202:18;;;33383:19;17869:34;33423:14;;;17849:55;-1:-1;;;17924:12;;;17917:27;17963:12;;;29188:245::o;29440:416::-;29640:2;29654:47;;;18214:2;29625:18;;;33383:19;18250:25;33423:14;;;18230:46;18295:12;;;29611:245::o;29863:338::-;18614:23;;11855:58;;18797:4;18786:16;;;18780:23;18857:14;;;11855:58;18963:4;18952:16;;;18946:23;19023:14;;;11855:58;;;;30048:2;30033:18;;30019:182::o;30208:222::-;11855:58;;;30335:2;30320:18;;30306:124::o;30437:832::-;;11905:5;11862:3;11855:58;11905:5;30899:2;30888:9;30884:18;11855:58;30734:3;30936:2;30925:9;30921:18;30914:48;30976:108;30734:3;30723:9;30719:19;31070:6;30976:108;:::i;:::-;-1:-1;;;;;34532:54;;;;31171:2;31156:18;;9738:58;-1:-1;31254:3;31239:19;11855:58;30968:116;30705:564;-1:-1;;;30705:564::o;31276:444::-;11855:58;;;31623:2;31608:18;;11855:58;;;;31706:2;31691:18;;11855:58;31459:2;31444:18;;31430:290::o;31727:256::-;31789:2;31783:9;31815:17;;;31890:18;31875:34;;31911:22;;;31872:62;31869:2;;;31947:1;;31937:12;31869:2;31789;31956:22;31767:216;;-1:-1;31767:216::o;31990:304::-;;32149:18;32141:6;32138:30;32135:2;;;-1:-1;;32171:12;32135:2;-1:-1;32216:4;32204:17;;;32269:15;;32072:222::o;36937:117::-;-1:-1;;;;;34532:54;;36996:35;;36986:2;;37045:1;;37035:12;37349:117;-1:-1;;;;;37436:5;34416:42;37411:5;37408:35;37398:2;;37457:1;;37447:12
Swarm Source
ipfs://92f083ba388aae930a4eaaeacb887e25ce9ff6204bed002d94ed6d06c7b4cbfb
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.