ERC-20
Overview
Max Total Supply
1,000,000,000,000 VAL
Holders
172
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
289,594,346.450684683985060877 VALValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Valhalla
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-22 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /* * tg: https://t.me/valhallatoken * * ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ * ⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿ * ⣿⡟⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⢻⣿ * ⣿⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⣿ * ⣿⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⣿ * ⣿⡆⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⡟⠋⠙⢻⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⢰⣿ * ⣿⣿⡀⠀⠀⢀⣴⠟⢉⣿⠟⠋⢹⣟⡛⢛⣻⡏⠙⠻⣿⡉⠻⣦⡀⠀⠀⢀⣿⣿ * ⣿⣿⣷⡀⣴⠟⢁⣴⠟⠁⠀⠀⢸⡏⠛⠛⢹⡇⠀⠀⠈⠻⣦⡈⠻⣦⢀⣾⣿⣿ * ⣿⣿⣿⣿⠋⣰⡟⠁⠀⠀⠀⠀⢸⣇⣀⣀⣸⡇⠀⠀⠀⠀⠈⢻⣆⠙⣿⣿⣿⣿ * ⣿⣿⣿⣿⣿⠏⠀⠀⠀⠀⠀⠀⢸⣿⣭⣭⣿⡇⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿ * ⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿ * ⣿⣿⣿⣿⣤⣤⣤⣤⣤⣤⣤⣤⣼⣷⠶⠶⣾⣧⣤⣤⣤⣤⣤⣤⣤⣤⣿⣿⣿⣿ * ⣿⣿⣿⣿⡀⣿⣁⠀⣈⣿⠀⠀⢸⡿⠶⠶⢿⡇⠀⠀⣿⣁⠀⣈⣿⢀⣿⣿⣿⣿ * ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ * ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ */ interface Callable { function tokenCallback(address _from, uint256 _tokens, bytes calldata _data) external returns (bool); } interface Router { function factory() external view returns (address); function positionManager() external view returns (address); function WETH9() external view returns (address); } interface Factory { function createPool(address _tokenA, address _tokenB, uint24 _fee) external returns (address); } interface Pool { function initialize(uint160 _sqrtPriceX96) external; } interface PositionManager { struct MintParams { address token0; address token1; uint24 fee; int24 tickLower; int24 tickUpper; uint256 amount0Desired; uint256 amount1Desired; uint256 amount0Min; uint256 amount1Min; address recipient; uint256 deadline; } struct CollectParams { uint256 tokenId; address recipient; uint128 amount0Max; uint128 amount1Max; } function mint(MintParams calldata) external payable returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1); function collect(CollectParams calldata) external payable returns (uint256 amount0, uint256 amount1); } contract Valhalla { uint256 constant private FLOAT_SCALAR = 2**64; uint256 constant private UINT_MAX = type(uint256).max; uint128 constant private UINT128_MAX = type(uint128).max; uint256 constant private INITIAL_SUPPLY = 1e30; // 1 Trillion Router constant private ROUTER = Router(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); uint256 constant private INITIAL_ETH_MC = 1 ether; uint256 constant private CONCENTRATED_PERCENT = 4; uint256 constant private UPPER_ETH_MC = 1e6 ether; // 1,000,000 ETH max market cap price int24 constant private MIN_TICK = -887272; int24 constant private MAX_TICK = -MIN_TICK; uint160 constant private MIN_SQRT_RATIO = 4295128739; uint160 constant private MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342; string constant public name = "Valhalla" ; string constant public symbol = "VAL"; uint8 constant public decimals = 18; struct User { uint256 balance; mapping(address => uint256) allowance; } struct Info { address owner; address pool; uint256 totalSupply; mapping(address => User) users; uint256 lowerPositionId1; uint256 lowerPositionId2; uint256 upperPositionId1; uint256 upperPositionId2; } Info private info; event Transfer(address indexed from, address indexed to, uint256 tokens); event Approval(address indexed owner, address indexed spender, uint256 tokens); constructor() { address _this = address(this); address _weth = ROUTER.WETH9(); (uint160 _initialSqrtPrice, ) = _getPriceAndTickFromValues(_weth < _this, INITIAL_SUPPLY, INITIAL_ETH_MC); info.pool = Factory(ROUTER.factory()).createPool(_this, _weth, 10000); Pool(pool()).initialize(_initialSqrtPrice); info.owner = msg.sender; } function initialize() payable external { require(totalSupply() == 0); address _this = address(this); address _weth = ROUTER.WETH9(); bool _weth0 = _weth < _this; PositionManager _pm = PositionManager(ROUTER.positionManager()); info.totalSupply = INITIAL_SUPPLY; info.users[_this].balance = INITIAL_SUPPLY; emit Transfer(address(0x0), _this, INITIAL_SUPPLY); _approve(_this, address(_pm), INITIAL_SUPPLY); ( , int24 _minTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, INITIAL_ETH_MC); ( , int24 _maxTick) = _getPriceAndTickFromValues(_weth0, INITIAL_SUPPLY, UPPER_ETH_MC); uint256 _concentratedTokens = CONCENTRATED_PERCENT * INITIAL_SUPPLY / 100; (info.lowerPositionId1, , , ) = _pm.mint(PositionManager.MintParams({ token0: _weth0 ? _weth : _this, token1: !_weth0 ? _weth : _this, fee: 10000, tickLower: _weth0 ? _minTick - 200 : _minTick, tickUpper: !_weth0 ? _minTick + 200 : _minTick, amount0Desired: _weth0 ? 0 : _concentratedTokens / 2, amount1Desired: !_weth0 ? 0 : _concentratedTokens / 2, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); (info.lowerPositionId2, , , ) = _pm.mint(PositionManager.MintParams({ token0: _weth0 ? _weth : _this, token1: !_weth0 ? _weth : _this, fee: 10000, tickLower: _weth0 ? _minTick - 200 : _minTick, tickUpper: !_weth0 ? _minTick + 200 : _minTick, amount0Desired: _weth0 ? 0 : _concentratedTokens / 2, amount1Desired: !_weth0 ? 0 : _concentratedTokens / 2, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); (info.upperPositionId1, , , ) = _pm.mint(PositionManager.MintParams({ token0: _weth0 ? _weth : _this, token1: !_weth0 ? _weth : _this, fee: 10000, tickLower: _weth0 ? _maxTick : _minTick + 200, tickUpper: !_weth0 ? _maxTick : _minTick - 200, amount0Desired: _weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2, amount1Desired: !_weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); (info.upperPositionId2, , , ) = _pm.mint(PositionManager.MintParams({ token0: _weth0 ? _weth : _this, token1: !_weth0 ? _weth : _this, fee: 10000, tickLower: _weth0 ? _maxTick : _minTick + 200, tickUpper: !_weth0 ? _maxTick : _minTick - 200, amount0Desired: _weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2, amount1Desired: !_weth0 ? 0 : (INITIAL_SUPPLY - _concentratedTokens) / 2, amount0Min: 0, amount1Min: 0, recipient: _this, deadline: block.timestamp })); } function collectTradingFees() external { PositionManager _pm = PositionManager(ROUTER.positionManager()); _pm.collect(PositionManager.CollectParams({ tokenId: info.lowerPositionId1, recipient: info.owner, amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); _pm.collect(PositionManager.CollectParams({ tokenId: info.lowerPositionId2, recipient: info.owner, amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); _pm.collect(PositionManager.CollectParams({ tokenId: info.upperPositionId1, recipient: info.owner, amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); _pm.collect(PositionManager.CollectParams({ tokenId: info.upperPositionId2, recipient: info.owner, amount0Max: UINT128_MAX, amount1Max: UINT128_MAX })); } function transfer(address _to, uint256 _tokens) external returns (bool) { return _transfer(msg.sender, _to, _tokens); } function approve(address _spender, uint256 _tokens) external returns (bool) { return _approve(msg.sender, _spender, _tokens); } function transferFrom(address _from, address _to, uint256 _tokens) external returns (bool) { uint256 _allowance = allowance(_from, msg.sender); require(_allowance >= _tokens); if (_allowance != UINT_MAX) { info.users[_from].allowance[msg.sender] -= _tokens; } return _transfer(_from, _to, _tokens); } function transferAndCall(address _to, uint256 _tokens, bytes calldata _data) external returns (bool) { _transfer(msg.sender, _to, _tokens); uint32 _size; assembly { _size := extcodesize(_to) } if (_size > 0) { require(Callable(_to).tokenCallback(msg.sender, _tokens, _data)); } return true; } function pool() public view returns (address) { return info.pool; } function totalSupply() public view returns (uint256) { return info.totalSupply; } function balanceOf(address _user) public view returns (uint256) { return info.users[_user].balance; } function allowance(address _user, address _spender) public view returns (uint256) { return info.users[_user].allowance[_spender]; } function positions() external view returns (uint256 lower1, uint256 lower2, uint256 upper1, uint256 upper2) { return (info.lowerPositionId1, info.lowerPositionId2, info.upperPositionId1, info.upperPositionId2); } function _approve(address _owner, address _spender, uint256 _tokens) internal returns (bool) { info.users[_owner].allowance[_spender] = _tokens; emit Approval(_owner, _spender, _tokens); return true; } function _transfer(address _from, address _to, uint256 _tokens) internal returns (bool) { unchecked { require(balanceOf(_from) >= _tokens); info.users[_from].balance -= _tokens; info.users[_to].balance += _tokens; emit Transfer(_from, _to, _tokens); return true; } } function _getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) { unchecked { uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick)); require(absTick <= uint256(int256(MAX_TICK)), 'T'); uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000; if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128; if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128; if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128; if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128; if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128; if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128; if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128; if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128; if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128; if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128; if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128; if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128; if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128; if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128; if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128; if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128; if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128; if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128; if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128; if (tick > 0) ratio = type(uint256).max / ratio; sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1)); } } function _getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) { unchecked { require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R'); uint256 ratio = uint256(sqrtPriceX96) << 32; uint256 r = ratio; uint256 msb = 0; assembly { let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(5, gt(r, 0xFFFFFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(4, gt(r, 0xFFFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(3, gt(r, 0xFF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(2, gt(r, 0xF)) msb := or(msb, f) r := shr(f, r) } assembly { let f := shl(1, gt(r, 0x3)) msb := or(msb, f) r := shr(f, r) } assembly { let f := gt(r, 0x1) msb := or(msb, f) } if (msb >= 128) r = ratio >> (msb - 127); else r = ratio << (127 - msb); int256 log_2 = (int256(msb) - 128) << 64; assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(63, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(62, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(61, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(60, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(59, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(58, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(57, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(56, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(55, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(54, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(53, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(52, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(51, f)) r := shr(f, r) } assembly { r := shr(127, mul(r, r)) let f := shr(128, r) log_2 := or(log_2, shl(50, f)) } int256 log_sqrt10001 = log_2 * 255738958999603826347141; int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128); int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128); tick = tickLow == tickHi ? tickLow : _getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow; } } function _sqrt(uint256 _n) internal pure returns (uint256 result) { unchecked { uint256 _tmp = (_n + 1) / 2; result = _n; while (_tmp < result) { result = _tmp; _tmp = (_n / _tmp + _tmp) / 2; } } } function _getPriceAndTickFromValues(bool _weth0, uint256 _tokens, uint256 _weth) internal pure returns (uint160 price, int24 tick) { uint160 _tmpPrice = uint160(_sqrt(2**192 / (!_weth0 ? _tokens : _weth) * (_weth0 ? _tokens : _weth))); tick = _getTickAtSqrtRatio(_tmpPrice); tick = tick - (tick % 200); price = _getSqrtRatioAtTick(tick); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectTradingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positions","outputs":[{"internalType":"uint256","name":"lower1","type":"uint256"},{"internalType":"uint256","name":"lower2","type":"uint256"},{"internalType":"uint256","name":"upper1","type":"uint256"},{"internalType":"uint256","name":"upper2","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801562000010575f80fd5b505f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000067573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200008d919062000987565b90505f620000c06001600160a01b03808516908416106c0c9f2c9cd04674edea40000000670de0b6b3a76400006200024c565b5090507368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000114573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013a919062000987565b60405163a167129560e01b81526001600160a01b03858116600483015284811660248301526127106044830152919091169063a1671295906064016020604051808303815f875af115801562000192573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b8919062000987565b600180546001600160a01b0319166001600160a01b0392909216918217905560405163f637731d60e01b81526001600160a01b038381166004830152919091169063f637731d906024015f604051808303815f87803b1580156200021a575f80fd5b505af11580156200022d573d5f803e3d5ffd5b50505f80546001600160a01b031916331790555062000a609350505050565b5f805f620002948662000260578462000262565b855b871562000270578562000272565b865b6200028290600160c01b620009de565b6200028e9190620009f4565b620002d4565b9050620002a1816200031f565b9150620002b060c88362000a14565b620002bc908362000a38565b9150620002c98262000644565b925050935093915050565b80600260018201045b818110156200031957809150600281828581620002fe57620002fe620009b6565b040181620003105762000310620009b6565b049050620002dd565b50919050565b5f6401000276a36001600160a01b038316108015906200035b575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b620003915760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b600160201b600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106200042557607f810383901c91506200042f565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1462000635576001600160a01b038916620006178262000644565b6001600160a01b031611156200062e578162000637565b8062000637565b815b9998505050505050505050565b5f805f8360020b126200065b578260020b62000662565b8260020b5f035b9050620d89e88111156200069d5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640162000388565b5f816001165f03620006b457600160801b620006c6565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615620006f1576ffff97272373d413259a46990580e213a0260801c5b600482161562000711576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161562000731576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161562000751576fffcb9843d60f6159c9db58835c9266440260801c5b602082161562000771576fff973b41fa98c081472e6896dfb254c00260801c5b604082161562000791576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615620007b1576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615620007d2576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615620007f3576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161562000814576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161562000835576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161562000856576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161562000877576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161562000898576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615620008b9576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615620008db576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615620008fc576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156200091c576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156200093a576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156200095d57805f1981620009595762000959620009b6565b0490505b6401000000008106156200097357600162000975565b5f5b60ff16602082901c0192505050919050565b5f6020828403121562000998575f80fd5b81516001600160a01b0381168114620009af575f80fd5b9392505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f82620009ef57620009ef620009b6565b500490565b808202811582820484141762000a0e5762000a0e620009ca565b92915050565b5f8260020b8062000a295762000a29620009b6565b808360020b0791505092915050565b600282810b9082900b03627fffff198112627fffff8213171562000a0e5762000a0e620009ca565b611b8a8062000a6e5f395ff3fe6080604052600436106100d9575f3560e01c806353f8b3031161007c57806395d89b411161005757806395d89b4114610250578063a9059cbb1461027e578063ba5b79821461029d578063dd62ed3e146102d5575f80fd5b806353f8b303146101fe57806370a08231146102145780638129fc1c14610248575f80fd5b806318160ddd116100b757806318160ddd1461017c57806323b872dd1461019a578063313ce567146101b95780634000aea0146101df575f80fd5b806306fdde03146100dd578063095ea7b31461012657806316f0115b14610155575b5f80fd5b3480156100e8575f80fd5b506101106040518060400160405280600881526020016756616c68616c6c6160c01b81525081565b60405161011d91906116ef565b60405180910390f35b348015610131575f80fd5b50610145610140366004611751565b61031d565b604051901515815260200161011d565b348015610160575f80fd5b506001546040516001600160a01b03909116815260200161011d565b348015610187575f80fd5b506002545b60405190815260200161011d565b3480156101a5575f80fd5b506101456101b436600461177b565b610332565b3480156101c4575f80fd5b506101cd601281565b60405160ff909116815260200161011d565b3480156101ea575f80fd5b506101456101f93660046117b9565b6103bb565b348015610209575f80fd5b5061021261045c565b005b34801561021f575f80fd5b5061018c61022e36600461183b565b6001600160a01b03165f9081526003602052604090205490565b610212610733565b34801561025b575f80fd5b506101106040518060400160405280600381526020016215905360ea1b81525081565b348015610289575f80fd5b50610145610298366004611751565b610eef565b3480156102a8575f80fd5b5060045460055460065460075460408051948552602085019390935291830152606082015260800161011d565b3480156102e0575f80fd5b5061018c6102ef36600461185d565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f610329338484610efb565b90505b92915050565b6001600160a01b0383165f90815260036020908152604080832033845260010190915281205482811015610364575f80fd5b5f1981146103a7576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906103a19084906118a8565b90915550505b6103b2858585610f67565b95945050505050565b5f6103c7338686610f67565b50843b63ffffffff81161561045057604051636be32e7360e01b81526001600160a01b03871690636be32e73906104089033908990899089906004016118bb565b6020604051808303815f875af1158015610424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104489190611902565b610450575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d19190611921565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f78659261052a92910161193c565b60408051808303815f875af1158015610545573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610569919061197f565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916105c19160040161193c565b60408051808303815f875af11580156105dc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610600919061197f565b50506040805160808101825260065481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916106589160040161193c565b60408051808303815f875af1158015610673573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610697919061197f565b50506040805160808101825260075481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916106ef9160040161193c565b60408051808303815f875af115801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e919061197f565b505050565b6002541561073f575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b89190611921565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108479190611921565b68327cb2734119d3b7a9601e1b60028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916108aa91815260200190565b60405180910390a36108c9848268327cb2734119d3b7a9601e1b610efb565b505f6108ea8368327cb2734119d3b7a9601e1b670de0b6b3a7640000610feb565b9150505f61090f8468327cb2734119d3b7a9601e1b69d3c21bcecceda1000000610feb565b91505f9050606461092d68327cb2734119d3b7a9601e1b60046119a1565b61093791906119cc565b9050836001600160a01b031663883164566040518061016001604052808861095f578a610961565b895b6001600160a01b03168152602001881561097b578a61097d565b895b6001600160a01b0316815261271060208201526040018861099e57866109a9565b6109a960c8886119df565b60020b815260200188156109bd57866109c8565b6109c88760c8611a04565b60020b8152602001886109e5576109e06002866119cc565b6109e7565b5f5b81526020018815610a02576109fd6002866119cc565b610a04565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a449190611a29565b6080604051808303815f875af1158015610a60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a849190611aed565b5050506004556040805161016081019091526001600160a01b038516906388316456908088610ab3578a610ab5565b895b6001600160a01b031681526020018815610acf578a610ad1565b895b6001600160a01b03168152612710602082015260400188610af25786610afd565b610afd60c8886119df565b60020b81526020018815610b115786610b1c565b610b1c8760c8611a04565b60020b815260200188610b3957610b346002866119cc565b610b3b565b5f5b81526020018815610b5657610b516002866119cc565b610b58565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610b989190611a29565b6080604051808303815f875af1158015610bb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd89190611aed565b5050506005556040805161016081019091526001600160a01b038516906388316456908088610c07578a610c09565b895b6001600160a01b031681526020018815610c23578a610c25565b895b6001600160a01b03168152612710602082015260400188610c5057610c4b8760c8611a04565b610c52565b855b60020b81526020018815610c7057610c6b60c8886119df565b610c72565b855b60020b815260200188610ca6576002610c978668327cb2734119d3b7a9601e1b6118a8565b610ca191906119cc565b610ca8565b5f5b81526020018815610cda576002610ccb8668327cb2734119d3b7a9601e1b6118a8565b610cd591906119cc565b610cdc565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610d1c9190611a29565b6080604051808303815f875af1158015610d38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5c9190611aed565b5050506006556040805161016081019091526001600160a01b038516906388316456908088610d8b578a610d8d565b895b6001600160a01b031681526020018815610da7578a610da9565b895b6001600160a01b03168152612710602082015260400188610dd457610dcf8760c8611a04565b610dd6565b855b60020b81526020018815610df457610def60c8886119df565b610df6565b855b60020b815260200188610e2a576002610e1b8668327cb2734119d3b7a9601e1b6118a8565b610e2591906119cc565b610e2c565b5f5b81526020018815610e5e576002610e4f8668327cb2734119d3b7a9601e1b6118a8565b610e5991906119cc565b610e60565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610ea09190611a29565b6080604051808303815f875af1158015610ebc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee09190611aed565b50505060075550505050505050565b5f610329338484610f67565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610f8a575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f559086815260200190565b5f805f61102986610ffc5784610ffe565b855b871561100a578561100c565b865b61101a90600160c01b6119cc565b61102491906119a1565b611061565b9050611034816110a4565b915061104160c883611b33565b61104b90836119df565b9150611056826113c1565b925050935093915050565b80600260018201045b8181101561109e57809150600281828581611087576110876119b8565b040181611096576110966119b8565b04905061106a565b50919050565b5f6401000276a36001600160a01b038316108015906110df575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6111145760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106111a857607f810383901c91506111b2565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146113b257886001600160a01b0316611397826113c1565b6001600160a01b031611156113ac57816113b4565b806113b4565b815b9998505050505050505050565b5f805f8360020b126113d6578260020b6113dd565b8260020b5f035b9050620d89e88111156114165760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640161110b565b5f816001165f0361142b57600160801b61143d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611471576ffff97272373d413259a46990580e213a0260801c5b6004821615611490576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156114af576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156114ce576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156114ed576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561150c576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561152b576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561154b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561156b576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561158b576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156115ab576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156115cb576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156115eb576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561160b576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561162b576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561164c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561166c576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561168b576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156116a8576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156116c757805f19816116c3576116c36119b8565b0490505b6401000000008106156116db5760016116dd565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b8181101561171a578581018301518582016040015282016116fe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461174e575f80fd5b50565b5f8060408385031215611762575f80fd5b823561176d8161173a565b946020939093013593505050565b5f805f6060848603121561178d575f80fd5b83356117988161173a565b925060208401356117a88161173a565b929592945050506040919091013590565b5f805f80606085870312156117cc575f80fd5b84356117d78161173a565b935060208501359250604085013567ffffffffffffffff808211156117fa575f80fd5b818701915087601f83011261180d575f80fd5b81358181111561181b575f80fd5b88602082850101111561182c575f80fd5b95989497505060200194505050565b5f6020828403121561184b575f80fd5b81356118568161173a565b9392505050565b5f806040838503121561186e575f80fd5b82356118798161173a565b915060208301356118898161173a565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561032c5761032c611894565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215611912575f80fd5b81518015158114611856575f80fd5b5f60208284031215611931575f80fd5b81516118568161173a565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f8060408385031215611990575f80fd5b505080516020909101519092909150565b808202811582820484141761032c5761032c611894565b634e487b7160e01b5f52601260045260245ffd5b5f826119da576119da6119b8565b500490565b600282810b9082900b03627fffff198112627fffff8213171561032c5761032c611894565b600281810b9083900b01627fffff8113627fffff198212171561032c5761032c611894565b81516001600160a01b0316815261016081016020830151611a5560208401826001600160a01b03169052565b506040830151611a6c604084018262ffffff169052565b506060830151611a81606084018260020b9052565b506080830151611a96608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611adc828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215611b00575f80fd5b8451935060208501516001600160801b0381168114611b1d575f80fd5b6040860151606090960151949790965092505050565b5f8260020b80611b4557611b456119b8565b808360020b079150509291505056fea2646970667358221220219834f1dec081aaff25c1c6629a638b2bae4b29f5eeac688ac1c46e87cc1c6564736f6c63430008140033
Deployed Bytecode
0x6080604052600436106100d9575f3560e01c806353f8b3031161007c57806395d89b411161005757806395d89b4114610250578063a9059cbb1461027e578063ba5b79821461029d578063dd62ed3e146102d5575f80fd5b806353f8b303146101fe57806370a08231146102145780638129fc1c14610248575f80fd5b806318160ddd116100b757806318160ddd1461017c57806323b872dd1461019a578063313ce567146101b95780634000aea0146101df575f80fd5b806306fdde03146100dd578063095ea7b31461012657806316f0115b14610155575b5f80fd5b3480156100e8575f80fd5b506101106040518060400160405280600881526020016756616c68616c6c6160c01b81525081565b60405161011d91906116ef565b60405180910390f35b348015610131575f80fd5b50610145610140366004611751565b61031d565b604051901515815260200161011d565b348015610160575f80fd5b506001546040516001600160a01b03909116815260200161011d565b348015610187575f80fd5b506002545b60405190815260200161011d565b3480156101a5575f80fd5b506101456101b436600461177b565b610332565b3480156101c4575f80fd5b506101cd601281565b60405160ff909116815260200161011d565b3480156101ea575f80fd5b506101456101f93660046117b9565b6103bb565b348015610209575f80fd5b5061021261045c565b005b34801561021f575f80fd5b5061018c61022e36600461183b565b6001600160a01b03165f9081526003602052604090205490565b610212610733565b34801561025b575f80fd5b506101106040518060400160405280600381526020016215905360ea1b81525081565b348015610289575f80fd5b50610145610298366004611751565b610eef565b3480156102a8575f80fd5b5060045460055460065460075460408051948552602085019390935291830152606082015260800161011d565b3480156102e0575f80fd5b5061018c6102ef36600461185d565b6001600160a01b039182165f9081526003602090815260408083209390941682526001909201909152205490565b5f610329338484610efb565b90505b92915050565b6001600160a01b0383165f90815260036020908152604080832033845260010190915281205482811015610364575f80fd5b5f1981146103a7576001600160a01b0385165f908152600360209081526040808320338452600101909152812080548592906103a19084906118a8565b90915550505b6103b2858585610f67565b95945050505050565b5f6103c7338686610f67565b50843b63ffffffff81161561045057604051636be32e7360e01b81526001600160a01b03871690636be32e73906104089033908990899089906004016118bb565b6020604051808303815f875af1158015610424573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104489190611902565b610450575f80fd5b50600195945050505050565b5f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d19190611921565b604080516080810182526004805482525f546001600160a01b0390811660208401526001600160801b038385018190526060840152925163fc6f786560e01b81529394509184169263fc6f78659261052a92910161193c565b60408051808303815f875af1158015610545573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610569919061197f565b50506040805160808101825260055481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916105c19160040161193c565b60408051808303815f875af11580156105dc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610600919061197f565b50506040805160808101825260065481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916106589160040161193c565b60408051808303815f875af1158015610673573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610697919061197f565b50506040805160808101825260075481525f546001600160a01b0390811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529183169163fc6f7865916106ef9160040161193c565b60408051808303815f875af115801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e919061197f565b505050565b6002541561073f575f80fd5b5f3090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b0316634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b89190611921565b90505f826001600160a01b0316826001600160a01b03161090505f7368b3465833fb72a70ecdf485e0e4c7bd8665fc456001600160a01b031663791b98bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108479190611921565b68327cb2734119d3b7a9601e1b60028190556001600160a01b0386165f8181526003602052604080822084905551939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916108aa91815260200190565b60405180910390a36108c9848268327cb2734119d3b7a9601e1b610efb565b505f6108ea8368327cb2734119d3b7a9601e1b670de0b6b3a7640000610feb565b9150505f61090f8468327cb2734119d3b7a9601e1b69d3c21bcecceda1000000610feb565b91505f9050606461092d68327cb2734119d3b7a9601e1b60046119a1565b61093791906119cc565b9050836001600160a01b031663883164566040518061016001604052808861095f578a610961565b895b6001600160a01b03168152602001881561097b578a61097d565b895b6001600160a01b0316815261271060208201526040018861099e57866109a9565b6109a960c8886119df565b60020b815260200188156109bd57866109c8565b6109c88760c8611a04565b60020b8152602001886109e5576109e06002866119cc565b6109e7565b5f5b81526020018815610a02576109fd6002866119cc565b610a04565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610a449190611a29565b6080604051808303815f875af1158015610a60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a849190611aed565b5050506004556040805161016081019091526001600160a01b038516906388316456908088610ab3578a610ab5565b895b6001600160a01b031681526020018815610acf578a610ad1565b895b6001600160a01b03168152612710602082015260400188610af25786610afd565b610afd60c8886119df565b60020b81526020018815610b115786610b1c565b610b1c8760c8611a04565b60020b815260200188610b3957610b346002866119cc565b610b3b565b5f5b81526020018815610b5657610b516002866119cc565b610b58565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610b989190611a29565b6080604051808303815f875af1158015610bb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd89190611aed565b5050506005556040805161016081019091526001600160a01b038516906388316456908088610c07578a610c09565b895b6001600160a01b031681526020018815610c23578a610c25565b895b6001600160a01b03168152612710602082015260400188610c5057610c4b8760c8611a04565b610c52565b855b60020b81526020018815610c7057610c6b60c8886119df565b610c72565b855b60020b815260200188610ca6576002610c978668327cb2734119d3b7a9601e1b6118a8565b610ca191906119cc565b610ca8565b5f5b81526020018815610cda576002610ccb8668327cb2734119d3b7a9601e1b6118a8565b610cd591906119cc565b610cdc565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610d1c9190611a29565b6080604051808303815f875af1158015610d38573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5c9190611aed565b5050506006556040805161016081019091526001600160a01b038516906388316456908088610d8b578a610d8d565b895b6001600160a01b031681526020018815610da7578a610da9565b895b6001600160a01b03168152612710602082015260400188610dd457610dcf8760c8611a04565b610dd6565b855b60020b81526020018815610df457610def60c8886119df565b610df6565b855b60020b815260200188610e2a576002610e1b8668327cb2734119d3b7a9601e1b6118a8565b610e2591906119cc565b610e2c565b5f5b81526020018815610e5e576002610e4f8668327cb2734119d3b7a9601e1b6118a8565b610e5991906119cc565b610e60565b5f5b81526020015f81526020015f81526020018a6001600160a01b03168152602001428152506040518263ffffffff1660e01b8152600401610ea09190611a29565b6080604051808303815f875af1158015610ebc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee09190611aed565b50505060075550505050505050565b5f610329338484610f67565b6001600160a01b038381165f8181526003602090815260408083209487168084526001909501825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060019392505050565b6001600160a01b0383165f90815260036020526040812054821115610f8a575f80fd5b6001600160a01b038085165f81815260036020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f559086815260200190565b5f805f61102986610ffc5784610ffe565b855b871561100a578561100c565b865b61101a90600160c01b6119cc565b61102491906119a1565b611061565b9050611034816110a4565b915061104160c883611b33565b61104b90836119df565b9150611056826113c1565b925050935093915050565b80600260018201045b8181101561109e57809150600281828581611087576110876119b8565b040181611096576110966119b8565b04905061106a565b50919050565b5f6401000276a36001600160a01b038316108015906110df575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b6111145760405162461bcd60e51b81526020600482015260016024820152602960f91b60448201526064015b60405180910390fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106111a857607f810383901c91506111b2565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146113b257886001600160a01b0316611397826113c1565b6001600160a01b031611156113ac57816113b4565b806113b4565b815b9998505050505050505050565b5f805f8360020b126113d6578260020b6113dd565b8260020b5f035b9050620d89e88111156114165760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640161110b565b5f816001165f0361142b57600160801b61143d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611471576ffff97272373d413259a46990580e213a0260801c5b6004821615611490576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156114af576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156114ce576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156114ed576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561150c576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561152b576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561154b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561156b576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561158b576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156115ab576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156115cb576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156115eb576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561160b576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561162b576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561164c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561166c576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561168b576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156116a8576b048a170391f7dc42444e8fa20260801c5b5f8460020b13156116c757805f19816116c3576116c36119b8565b0490505b6401000000008106156116db5760016116dd565b5f5b60ff16602082901c0192505050919050565b5f6020808352835180828501525f5b8181101561171a578581018301518582016040015282016116fe565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461174e575f80fd5b50565b5f8060408385031215611762575f80fd5b823561176d8161173a565b946020939093013593505050565b5f805f6060848603121561178d575f80fd5b83356117988161173a565b925060208401356117a88161173a565b929592945050506040919091013590565b5f805f80606085870312156117cc575f80fd5b84356117d78161173a565b935060208501359250604085013567ffffffffffffffff808211156117fa575f80fd5b818701915087601f83011261180d575f80fd5b81358181111561181b575f80fd5b88602082850101111561182c575f80fd5b95989497505060200194505050565b5f6020828403121561184b575f80fd5b81356118568161173a565b9392505050565b5f806040838503121561186e575f80fd5b82356118798161173a565b915060208301356118898161173a565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561032c5761032c611894565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f191601019392505050565b5f60208284031215611912575f80fd5b81518015158114611856575f80fd5b5f60208284031215611931575f80fd5b81516118568161173a565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f8060408385031215611990575f80fd5b505080516020909101519092909150565b808202811582820484141761032c5761032c611894565b634e487b7160e01b5f52601260045260245ffd5b5f826119da576119da6119b8565b500490565b600282810b9082900b03627fffff198112627fffff8213171561032c5761032c611894565b600281810b9083900b01627fffff8113627fffff198212171561032c5761032c611894565b81516001600160a01b0316815261016081016020830151611a5560208401826001600160a01b03169052565b506040830151611a6c604084018262ffffff169052565b506060830151611a81606084018260020b9052565b506080830151611a96608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611adc828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215611b00575f80fd5b8451935060208501516001600160801b0381168114611b1d575f80fd5b6040860151606090960151949790965092505050565b5f8260020b80611b4557611b456119b8565b808360020b079150509291505056fea2646970667358221220219834f1dec081aaff25c1c6629a638b2bae4b29f5eeac688ac1c46e87cc1c6564736f6c63430008140033
Deployed Bytecode Sourcemap
2714:13610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3499:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3499:40:0;;;;;;;;;;;;:::i;:::-;;;;;;;;8124:132;;;;;;;;;;-1:-1:-1;8124:132:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8124:132:0;1023:187:1;8918:72:0;;;;;;;;;;-1:-1:-1;8976:9:0;;8918:72;;-1:-1:-1;;;;;8976:9:0;;;1470:51:1;;1458:2;1443:18;8918:72:0;1324:203:1;8995:86:0;;;;;;;;;;-1:-1:-1;9060:16:0;;8995:86;;;1678:25:1;;;1666:2;1651:18;8995:86:0;1532:177:1;8261:321:0;;;;;;;;;;-1:-1:-1;8261:321:0;;;;;:::i;:::-;;:::i;3585:35::-;;;;;;;;;;;;3618:2;3585:35;;;;;2347:4:1;2335:17;;;2317:36;;2305:2;2290:18;3585:35:0;2175:184:1;8587:323:0;;;;;;;;;;-1:-1:-1;8587:323:0;;;;;:::i;:::-;;:::i;7178:812::-;;;;;;;;;;;;;:::i;:::-;;9086:106;;;;;;;;;;-1:-1:-1;9086:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;9162:17:0;9141:7;9162:17;;;:10;:17;;;;;:25;;9086:106;4480:2693;;;:::i;3544:37::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3544:37:0;;;;;7995:124;;;;;;;;;;-1:-1:-1;7995:124:0;;;;;:::i;:::-;;:::i;9338:217::-;;;;;;;;;;-1:-1:-1;9459:21:0;;9482;;9505;;9528;;9338:217;;;3646:25:1;;;3702:2;3687:18;;3680:34;;;;3730:18;;;3723:34;3788:2;3773:18;;3766:34;3633:3;3618:19;9338:217:0;3415:391:1;9197:136:0;;;;;;;;;;-1:-1:-1;9197:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;9291:17:0;;;9270:7;9291:17;;;:10;:17;;;;;;;;:37;;;;;;:27;;;;:37;;;;;;9197:136;8124:132;8194:4;8212:39;8221:10;8233:8;8243:7;8212:8;:39::i;:::-;8205:46;;8124:132;;;;;:::o;8261:321::-;-1:-1:-1;;;;;9291:17:0;;8346:4;9291:17;;;:10;:17;;;;;;;;8395:10;9291:37;;:27;;:37;;;;;;8433:7;8419:10;:21;;8411:30;;;;;;-1:-1:-1;;8450:10:0;:22;8446:90;;-1:-1:-1;;;;;8480:17:0;;:4;:17;;;:10;:17;;;;;;;;8508:10;8480:39;;:27;;:39;;;;;:50;;8523:7;;8480:4;:50;;8523:7;;8480:50;:::i;:::-;;;;-1:-1:-1;;8446:90:0;8547:30;8557:5;8564:3;8569:7;8547:9;:30::i;:::-;8540:37;8261:321;-1:-1:-1;;;;;8261:321:0:o;8587:323::-;8682:4;8693:35;8703:10;8715:3;8720:7;8693:9;:35::i;:::-;-1:-1:-1;8774:16:0;;8803:9;;;;8799:91;;8828:55;;-1:-1:-1;;;8828:55:0;;-1:-1:-1;;;;;8828:27:0;;;;;:55;;8856:10;;8868:7;;8877:5;;;;8828:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8820:64;;;;;;-1:-1:-1;8901:4:0;;8587:323;-1:-1:-1;;;;;8587:323:0:o;7178:812::-;7222:19;3008:42;-1:-1:-1;;;;;7260:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7302:157;;;;;;;;7347:21;;;7302:157;;-1:-1:-1;7385:10:0;-1:-1:-1;;;;;7385:10:0;;;7302:157;;;;-1:-1:-1;;;;;7302:157:0;;;;;;;;;;7290:170;;-1:-1:-1;;;7290:170:0;;7222:63;;-1:-1:-1;7290:11:0;;;;;;:170;;7302:157;7290:170;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;7477:157:0;;;;;;;;7522:21;;7477:157;;-1:-1:-1;7560:10:0;-1:-1:-1;;;;;7560:10:0;;;7477:157;;;;-1:-1:-1;;;;;7477:157:0;;;;;;;;;;7465:170;;-1:-1:-1;;;7465:170:0;;:11;;;;;;:170;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;7652:157:0;;;;;;;;7697:21;;7652:157;;-1:-1:-1;7735:10:0;-1:-1:-1;;;;;7735:10:0;;;7652:157;;;;-1:-1:-1;;;;;7652:157:0;;;;;;;;;;7640:170;;-1:-1:-1;;;7640:170:0;;:11;;;;;;:170;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;7827:157:0;;;;;;;;7872:21;;7827:157;;-1:-1:-1;7910:10:0;-1:-1:-1;;;;;7910:10:0;;;7827:157;;;;-1:-1:-1;;;;;7827:157:0;;;;;;;;;;7815:170;;-1:-1:-1;;;7815:170:0;;:11;;;;;;:170;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7217:773;7178:812::o;4480:2693::-;9060:16;;4532:18;4524:27;;;;;;4556:13;4580:4;4556:29;;4590:13;3008:42;-1:-1:-1;;;;;4606:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4590:30;;4625:11;4647:5;-1:-1:-1;;;;;4639:13:0;:5;-1:-1:-1;;;;;4639:13:0;;4625:27;;4657:19;3008:42;-1:-1:-1;;;;;4695:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;4725:16:0;:33;;;-1:-1:-1;;;;;4763:17:0;;4725:4;4763:17;;;:10;:17;;;;;;:42;;;4815:45;4657:63;;-1:-1:-1;4763:17:0;;4725:4;;4815:45;;;;1678:25:1;;1666:2;1651:18;;1532:177;4815:45:0;;;;;;;;4865;4874:5;4889:3;-1:-1:-1;;;4865:8:0;:45::i;:::-;;4919:14;4937:66;4964:6;-1:-1:-1;;;3097:7:0;4937:26;:66::i;:::-;4915:88;;;5012:14;5030:64;5057:6;-1:-1:-1;;;3201:9:0;5030:26;:64::i;:::-;5008:86;-1:-1:-1;5099:27:0;;-1:-1:-1;5169:3:0;5129:37;-1:-1:-1;;;3156:1:0;5129:37;:::i;:::-;:43;;;;:::i;:::-;5099:73;;5209:3;-1:-1:-1;;;;;5209:8:0;;5218:433;;;;;;;;5259:6;:22;;5276:5;5259:22;;;5268:5;5259:22;-1:-1:-1;;;;;5218:433:0;;;;;5296:6;5295:7;:23;;5313:5;5295:23;;;5305:5;5295:23;-1:-1:-1;;;;;5218:433:0;;;5329:5;5218:433;;;;;;5351:6;:34;;5377:8;5351:34;;;5360:14;5371:3;5360:8;:14;:::i;:::-;5218:433;;;;;;5403:6;5402:7;:35;;5429:8;5402:35;;;5412:14;:8;5423:3;5412:14;:::i;:::-;5218:433;;;;;;5459:6;:36;;5472:23;5494:1;5472:19;:23;:::i;:::-;5459:36;;;5468:1;5459:36;5218:433;;;;5518:6;5517:7;:37;;5531:23;5553:1;5531:19;:23;:::i;:::-;5517:37;;;5527:1;5517:37;5218:433;;;;5572:1;5218:433;;;;5591:1;5218:433;;;;5609:5;-1:-1:-1;;;;;5218:433:0;;;;;5630:15;5218:433;;;5209:443;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5178:21:0;5177:475;5698:433;;;;;;;;;-1:-1:-1;;;;;5689:8:0;;;;;5698:433;5739:6;:22;;5756:5;5739:22;;;5748:5;5739:22;-1:-1:-1;;;;;5698:433:0;;;;;5776:6;5775:7;:23;;5793:5;5775:23;;;5785:5;5775:23;-1:-1:-1;;;;;5698:433:0;;;5809:5;5698:433;;;;;;5831:6;:34;;5857:8;5831:34;;;5840:14;5851:3;5840:8;:14;:::i;:::-;5698:433;;;;;;5883:6;5882:7;:35;;5909:8;5882:35;;;5892:14;:8;5903:3;5892:14;:::i;:::-;5698:433;;;;;;5939:6;:36;;5952:23;5974:1;5952:19;:23;:::i;:::-;5939:36;;;5948:1;5939:36;5698:433;;;;5998:6;5997:7;:37;;6011:23;6033:1;6011:19;:23;:::i;:::-;5997:37;;;6007:1;5997:37;5698:433;;;;6052:1;5698:433;;;;6071:1;5698:433;;;;6089:5;-1:-1:-1;;;;;5698:433:0;;;;;6110:15;5698:433;;;5689:443;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;5658:21:0;5657:475;6178:471;;;;;;;;;-1:-1:-1;;;;;6169:8:0;;;;;6178:471;6219:6;:22;;6236:5;6219:22;;;6228:5;6219:22;-1:-1:-1;;;;;6178:471:0;;;;;6256:6;6255:7;:23;;6273:5;6255:23;;;6265:5;6255:23;-1:-1:-1;;;;;6178:471:0;;;6289:5;6178:471;;;;;;6311:6;:34;;6331:14;:8;6342:3;6331:14;:::i;:::-;6311:34;;;6320:8;6311:34;6178:471;;;;;;6363:6;6362:7;:35;;6383:14;6394:3;6383:8;:14;:::i;:::-;6362:35;;;6372:8;6362:35;6178:471;;;;;;6419:6;:55;;6473:1;6433:36;6450:19;-1:-1:-1;;;6433:36:0;:::i;:::-;6432:42;;;;:::i;:::-;6419:55;;;6428:1;6419:55;6178:471;;;;6497:6;6496:7;:56;;6551:1;6511:36;6528:19;-1:-1:-1;;;6511:36:0;:::i;:::-;6510:42;;;;:::i;:::-;6496:56;;;6506:1;6496:56;6178:471;;;;6570:1;6178:471;;;;6589:1;6178:471;;;;6607:5;-1:-1:-1;;;;;6178:471:0;;;;;6628:15;6178:471;;;6169:481;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;6138:21:0;6137:513;6696:471;;;;;;;;;-1:-1:-1;;;;;6687:8:0;;;;;6696:471;6737:6;:22;;6754:5;6737:22;;;6746:5;6737:22;-1:-1:-1;;;;;6696:471:0;;;;;6774:6;6773:7;:23;;6791:5;6773:23;;;6783:5;6773:23;-1:-1:-1;;;;;6696:471:0;;;6807:5;6696:471;;;;;;6829:6;:34;;6849:14;:8;6860:3;6849:14;:::i;:::-;6829:34;;;6838:8;6829:34;6696:471;;;;;;6881:6;6880:7;:35;;6901:14;6912:3;6901:8;:14;:::i;:::-;6880:35;;;6890:8;6880:35;6696:471;;;;;;6937:6;:55;;6991:1;6951:36;6968:19;-1:-1:-1;;;6951:36:0;:::i;:::-;6950:42;;;;:::i;:::-;6937:55;;;6946:1;6937:55;6696:471;;;;7015:6;7014:7;:56;;7069:1;7029:36;7046:19;-1:-1:-1;;;7029:36:0;:::i;:::-;7028:42;;;;:::i;:::-;7014:56;;;7024:1;7014:56;6696:471;;;;7088:1;6696:471;;;;7107:1;6696:471;;;;7125:5;-1:-1:-1;;;;;6696:471:0;;;;;7146:15;6696:471;;;6687:481;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;6656:21:0;6655:513;-1:-1:-1;;;;;;;4480:2693:0:o;7995:124::-;8061:4;8079:35;8089:10;8101:3;8106:7;8079:9;:35::i;9562:212::-;-1:-1:-1;;;;;9660:18:0;;;9649:4;9660:18;;;:10;:18;;;;;;;;:38;;;;;;:28;;;;:38;;;;;:48;;;9718:35;1678:25:1;;;9649:4:0;;9660:38;:18;9718:35;;1651:18:1;9718:35:0;;;;;;;;-1:-1:-1;9765:4:0;9562:212;;;;;:::o;9780:294::-;-1:-1:-1;;;;;9162:17:0;;9862:4;9162:17;;;:10;:17;;;;;:25;9917:7;-1:-1:-1;9897:27:0;9889:36;;;;;;-1:-1:-1;;;;;9931:17:0;;;:4;:17;;;:10;:17;;;;;;:36;;;;;;;9973:15;;;;;;;;;;:34;;;;;;10018:29;;;;;;9960:7;1678:25:1;;1666:2;1651:18;;1532:177;15968:353:0;16072:13;16087:10;16104:17;16132:72;16178:6;:24;;16197:5;16178:24;;;16187:7;16178:24;16149:6;16148:7;:25;;16168:5;16148:25;;;16158:7;16148:25;16138:36;;-1:-1:-1;;;16138:36:0;:::i;:::-;:65;;;;:::i;:::-;16132:5;:72::i;:::-;16104:101;;16217:30;16237:9;16217:19;:30::i;:::-;16210:37;-1:-1:-1;16267:10:0;16274:3;16210:37;16267:10;:::i;:::-;16259:19;;:4;:19;:::i;:::-;16252:26;;16291:25;16311:4;16291:19;:25::i;:::-;16283:33;;16099:222;15968:353;;;;;;:::o;15732:231::-;15835:6;15845:1;15840;15835:6;;15834:12;15869:85;15883:6;15876:4;:13;15869:85;;;15907:4;15898:13;;15946:1;15938:4;15931;15926:2;:9;;;;;:::i;:::-;;:16;15925:22;;;;;:::i;:::-;;15918:29;;15869:85;;;15803:156;15732:231;;;:::o;12301:3426::-;12375:10;3388;-1:-1:-1;;;;;12416:30:0;;;;;;:63;;-1:-1:-1;3444:49:0;-1:-1:-1;;;;;12450:29:0;;;12416:63;12408:77;;;;-1:-1:-1;;;12408:77:0;;9501:2:1;12408:77:0;;;9483:21:1;9540:1;9520:18;;;9513:29;-1:-1:-1;;;9558:18:1;;;9551:31;9599:18;;12408:77:0;;;;;;;;;-1:-1:-1;;;;;12532:2:0;12507:27;;;;-1:-1:-1;;;;;12620:41:0;;12617:1;12613:49;12696:9;;;12754:18;12748:25;;12745:1;12741:33;12808:9;;;12866:10;12860:17;;12857:1;12853:25;12912:9;;;12970:6;12964:13;;12961:1;12957:21;13012:9;;;13070:4;13064:11;;13061:1;13057:19;;;13110:9;;;13168:3;13162:10;;13159:1;13155:18;13207:9;;;13259:10;;;13256:1;13252:18;;;13304:9;;;;13349:10;;;12787;;12891;;;12991;;;13089;13186;;;13283;13372;13406:3;13399:10;;13395:75;;13431:3;13425;:9;13415:5;:20;;13411:24;;13395:75;;;13466:3;13460;:9;13450:5;:20;;13446:24;;13395:75;13556:9;;;13551:3;13547:19;;;13581:11;;;;13639:9;;;;13689;;13680:19;;;13714:11;;;13772:9;13822;;13813:19;;;13847:11;;;13905:9;13955;;13946:19;;;13980:11;;;14038:9;14088;;14079:19;;;14113:11;;;14171:9;14221;;14212:19;;;14246:11;;;14304:9;14354;;14345:19;;;14379:11;;;14437:9;14487;;14478:19;;;14512:11;;;14570:9;14620;;14611:19;;;14645:11;;;14703:9;14753;;14744:19;;;14778:11;;;14836:9;14886;;14877:19;;;14911:11;;;14969:9;15019;;15010:19;;;15044:11;;;15102:9;15152;;15143:19;;;15177:11;;;;15235:9;;;;15285;;15276:19;;;;;13556:9;-1:-1:-1;;13494:17:0;;13516:2;13493:25;13617:10;;;;;;;13607:21;13750:10;;;;;;;13740:21;;;;13883:10;;;;;;;13873:21;;;;14016:10;;;;;;;14006:21;;;;14149:10;;;;;;;14139:21;;;;14282:10;;;;;;;14272:21;;;;14415:10;;;;;;;14405:21;14548:10;;;;;;;14538:21;14681:10;;;;;;;14671:21;14814:10;;;;;;;14804:21;14947:10;;;;;;;14937:21;15080:10;;;;;;;15070:21;15213:10;;;;;;;15203:21;15346:10;;;;;;;15336:21;15401:24;15393:32;;-1:-1:-1;;15456:53:0;;13508:3;15455:62;;;;15562:39;15546:55;;15545:64;;15625:17;;;;;;;;;:92;;15686:12;-1:-1:-1;;;;;15655:43:0;:27;15675:6;15655:19;:27::i;:::-;-1:-1:-1;;;;;15655:43:0;;;:62;;15710:7;15625:92;;15655:62;15701:6;15625:92;;;15645:7;15625:92;15618:99;12301:3426;-1:-1:-1;;;;;;;;;12301:3426:0:o;10081:2215::-;10145:20;10188:15;10213:1;10206:4;:8;;;:57;;10257:4;10250:12;;10206:57;;;10233:4;10226:12;;10225:13;;10206:57;10188:75;-1:-1:-1;3333:9:0;10277:36;;;10269:50;;;;-1:-1:-1;;;10269:50:0;;9830:2:1;10269:50:0;;;9812:21:1;9869:1;9849:18;;;9842:29;-1:-1:-1;;;9887:18:1;;;9880:31;9928:18;;10269:50:0;9628:324:1;10269:50:0;10327:13;10343:7;10353:3;10343:13;10360:1;10343:18;:93;;-1:-1:-1;;;10343:93:0;;;10364:34;10343:93;10327:109;;;-1:-1:-1;10456:3:0;10446:13;;:18;10442:83;;10483:34;10475:42;10522:3;10474:51;10442:83;10545:3;10535:13;;:18;10531:83;;10572:34;10564:42;10611:3;10563:51;10531:83;10634:3;10624:13;;:18;10620:83;;10661:34;10653:42;10700:3;10652:51;10620:83;10723:4;10713:14;;:19;10709:84;;10751:34;10743:42;10790:3;10742:51;10709:84;10813:4;10803:14;;:19;10799:84;;10841:34;10833:42;10880:3;10832:51;10799:84;10903:4;10893:14;;:19;10889:84;;10931:34;10923:42;10970:3;10922:51;10889:84;10993:4;10983:14;;:19;10979:84;;11021:34;11013:42;11060:3;11012:51;10979:84;11083:5;11073:15;;:20;11069:85;;11112:34;11104:42;11151:3;11103:51;11069:85;11174:5;11164:15;;:20;11160:85;;11203:34;11195:42;11242:3;11194:51;11160:85;11265:5;11255:15;;:20;11251:85;;11294:34;11286:42;11333:3;11285:51;11251:85;11356:5;11346:15;;:20;11342:85;;11385:34;11377:42;11424:3;11376:51;11342:85;11447:6;11437:16;;:21;11433:86;;11477:34;11469:42;11516:3;11468:51;11433:86;11539:6;11529:16;;:21;11525:86;;11569:34;11561:42;11608:3;11560:51;11525:86;11631:6;11621:16;;:21;11617:86;;11661:34;11653:42;11700:3;11652:51;11617:86;11723:6;11713:16;;:21;11709:86;;11753:34;11745:42;11792:3;11744:51;11709:86;11815:7;11805:17;;:22;11801:86;;11846:33;11838:41;11884:3;11837:50;11801:86;11907:7;11897:17;;:22;11893:85;;11938:32;11930:40;11975:3;11929:49;11893:85;11998:7;11988:17;;:22;11984:83;;12029:30;12021:38;12064:3;12020:47;11984:83;12087:7;12077:17;;:22;12073:78;;12118:25;12110:33;12148:3;12109:42;12073:78;12170:1;12163:4;:8;;;12159:47;;;12201:5;-1:-1:-1;;12181:25:0;;;;;:::i;:::-;;12173:33;;12159:47;12263:7;12254:5;:17;:22;:30;;12283:1;12254:30;;;12279:1;12254:30;12237:48;;12247:2;12238:5;:11;;12237:48;12214:72;;10172:2120;;10081:2215;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1714:456::-;1791:6;1799;1807;1860:2;1848:9;1839:7;1835:23;1831:32;1828:52;;;1876:1;1873;1866:12;1828:52;1915:9;1902:23;1934:31;1959:5;1934:31;:::i;:::-;1984:5;-1:-1:-1;2041:2:1;2026:18;;2013:32;2054:33;2013:32;2054:33;:::i;:::-;1714:456;;2106:7;;-1:-1:-1;;;2160:2:1;2145:18;;;;2132:32;;1714:456::o;2364:794::-;2452:6;2460;2468;2476;2529:2;2517:9;2508:7;2504:23;2500:32;2497:52;;;2545:1;2542;2535:12;2497:52;2584:9;2571:23;2603:31;2628:5;2603:31;:::i;:::-;2653:5;-1:-1:-1;2705:2:1;2690:18;;2677:32;;-1:-1:-1;2760:2:1;2745:18;;2732:32;2783:18;2813:14;;;2810:34;;;2840:1;2837;2830:12;2810:34;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:55;;2945:1;2942;2935:12;2894:55;2985:2;2972:16;3011:2;3003:6;3000:14;2997:34;;;3027:1;3024;3017:12;2997:34;3072:7;3067:2;3058:6;3054:2;3050:15;3046:24;3043:37;3040:57;;;3093:1;3090;3083:12;3040:57;2364:794;;;;-1:-1:-1;;3124:2:1;3116:11;;-1:-1:-1;;;2364:794:1:o;3163:247::-;3222:6;3275:2;3263:9;3254:7;3250:23;3246:32;3243:52;;;3291:1;3288;3281:12;3243:52;3330:9;3317:23;3349:31;3374:5;3349:31;:::i;:::-;3399:5;3163:247;-1:-1:-1;;;3163:247:1:o;3811:388::-;3879:6;3887;3940:2;3928:9;3919:7;3915:23;3911:32;3908:52;;;3956:1;3953;3946:12;3908:52;3995:9;3982:23;4014:31;4039:5;4014:31;:::i;:::-;4064:5;-1:-1:-1;4121:2:1;4106:18;;4093:32;4134:33;4093:32;4134:33;:::i;:::-;4186:7;4176:17;;;3811:388;;;;;:::o;4204:127::-;4265:10;4260:3;4256:20;4253:1;4246:31;4296:4;4293:1;4286:15;4320:4;4317:1;4310:15;4336:128;4403:9;;;4424:11;;;4421:37;;;4438:18;;:::i;4469:559::-;-1:-1:-1;;;;;4682:32:1;;4664:51;;4746:2;4731:18;;4724:34;;;4794:2;4789;4774:18;;4767:30;;;4813:18;;4806:34;;;4833:6;4883;4877:3;4862:19;;4849:49;4948:1;4918:22;;;4942:3;4914:32;;;4907:43;;;;5011:2;4990:15;;;-1:-1:-1;;4986:29:1;4971:45;4967:55;;4469:559;-1:-1:-1;;;4469:559:1:o;5033:277::-;5100:6;5153:2;5141:9;5132:7;5128:23;5124:32;5121:52;;;5169:1;5166;5159:12;5121:52;5201:9;5195:16;5254:5;5247:13;5240:21;5233:5;5230:32;5220:60;;5276:1;5273;5266:12;5315:251;5385:6;5438:2;5426:9;5417:7;5413:23;5409:32;5406:52;;;5454:1;5451;5444:12;5406:52;5486:9;5480:16;5505:31;5530:5;5505:31;:::i;5571:570::-;5794:13;;5776:32;;5868:4;5856:17;;;5850:24;-1:-1:-1;;;;;5846:50:1;5824:20;;;5817:80;5944:4;5932:17;;;5926:24;-1:-1:-1;;;;;6041:21:1;;;6019:20;;;6012:51;;;;6123:4;6111:17;;;6105:24;6101:33;6079:20;;;6072:63;;;;5763:3;5748:19;;5571:570::o;6146:245::-;6225:6;6233;6286:2;6274:9;6265:7;6261:23;6257:32;6254:52;;;6302:1;6299;6292:12;6254:52;-1:-1:-1;;6325:16:1;;6381:2;6366:18;;;6360:25;6325:16;;6360:25;;-1:-1:-1;6146:245:1:o;6396:168::-;6469:9;;;6500;;6517:15;;;6511:22;;6497:37;6487:71;;6538:18;;:::i;6569:127::-;6630:10;6625:3;6621:20;6618:1;6611:31;6661:4;6658:1;6651:15;6685:4;6682:1;6675:15;6701:120;6741:1;6767;6757:35;;6772:18;;:::i;:::-;-1:-1:-1;6806:9:1;;6701:120::o;6826:193::-;6924:1;6913:16;;;6895;;;;6891:39;-1:-1:-1;;6945:23:1;;6980:8;6970:19;;6942:48;6939:74;;;6993:18;;:::i;7024:189::-;7120:1;7091:16;;;7109;;;;7087:39;7174:7;7141:18;;-1:-1:-1;;7161:22:1;;7138:46;7135:72;;;7187:18;;:::i;7411:1218::-;7629:13;;-1:-1:-1;;;;;1281:31:1;1269:44;;7597:3;7582:19;;7701:4;7693:6;7689:17;7683:24;7716:54;7764:4;7753:9;7749:20;7735:12;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;7716:54;;7819:4;7811:6;7807:17;7801:24;7834:55;7883:4;7872:9;7868:20;7852:14;7294:8;7283:20;7271:33;;7218:92;7834:55;;7938:4;7930:6;7926:17;7920:24;7953:54;8001:4;7990:9;7986:20;7970:14;7390:1;7379:20;7367:33;;7315:91;7953:54;;8056:4;8048:6;8044:17;8038:24;8071:54;8119:4;8108:9;8104:20;8088:14;7390:1;7379:20;7367:33;;7315:91;8071:54;;8181:4;8173:6;8169:17;8163:24;8156:4;8145:9;8141:20;8134:54;8244:4;8236:6;8232:17;8226:24;8219:4;8208:9;8204:20;8197:54;8307:4;8299:6;8295:17;8289:24;8282:4;8271:9;8267:20;8260:54;8333:6;8393:2;8385:6;8381:15;8375:22;8370:2;8359:9;8355:18;8348:50;;8417:6;8472:2;8464:6;8460:15;8454:22;8485:54;8535:2;8524:9;8520:18;8504:14;-1:-1:-1;;;;;1281:31:1;1269:44;;1215:104;8485:54;-1:-1:-1;;8558:6:1;8606:15;;;8600:22;8580:18;;;;8573:50;7411:1218;:::o;8634:489::-;8731:6;8739;8747;8755;8808:3;8796:9;8787:7;8783:23;8779:33;8776:53;;;8825:1;8822;8815:12;8776:53;8854:9;8848:16;8838:26;;8907:2;8896:9;8892:18;8886:25;-1:-1:-1;;;;;8944:5:1;8940:46;8933:5;8930:57;8920:85;;9001:1;8998;8991:12;8920:85;9069:2;9054:18;;9048:25;9113:2;9098:18;;;9092:25;8634:489;;9024:5;;-1:-1:-1;8634:489:1;-1:-1:-1;;;8634:489:1:o;9128:166::-;9158:1;9199;9196;9185:16;9220:3;9210:37;;9227:18;;:::i;:::-;9284:3;9280:1;9277;9266:16;9261:27;9256:32;;;9128:166;;;;:::o
Swarm Source
ipfs://219834f1dec081aaff25c1c6629a638b2bae4b29f5eeac688ac1c46e87cc1c65
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.