Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
328,282.896865 PRF
Holders
59
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
1.227158 PRFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
ProofCoin
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-05-22 */ /* * Proof Ethereum Token v 2.5 * Developed by Krasava Digital Solutions * Special thanks for the assistance provided by BelovITLab LC */ pragma solidity 0.6.6; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract ERC20DecimalsMock is ERC20 { constructor (string memory name, string memory symbol, uint8 decimals) public ERC20(name, symbol) { _setupDecimals(decimals); } } 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 sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } 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 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) { require(b > 0, errorMessage); uint256 c = a / b; 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 Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function _callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library EnumerableSet { struct Set { bytes32[] _values; mapping (bytes32 => uint256) _indexes; } function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); set._indexes[value] = set._values.length; return true; } else { return false; } } function _remove(Set storage set, bytes32 value) private returns (bool) { uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; bytes32 lastvalue = set._values[lastIndex]; set._values[toDeleteIndex] = lastvalue; set._indexes[lastvalue] = toDeleteIndex + 1; set._values.pop(); delete set._indexes[value]; return true; } else { return false; } } function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } function _length(Set storage set) private view returns (uint256) { return set._values.length; } function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } struct AddressSet { Set _inner; } function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(value))); } function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(value))); } function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(value))); } function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint256(_at(set._inner, index))); } struct UintSet { Set _inner; } function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } abstract contract AccessControl is Context { using EnumerableSet for EnumerableSet.AddressSet; using Address for address; struct RoleData { EnumerableSet.AddressSet members; bytes32 adminRole; } mapping (bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); function hasRole(bytes32 role, address account) public view returns (bool) { return _roles[role].members.contains(account); } function getRoleMemberCount(bytes32 role) public view returns (uint256) { return _roles[role].members.length(); } function getRoleMember(bytes32 role, uint256 index) public view returns (address) { return _roles[role].members.at(index); } function getRoleAdmin(bytes32 role) public view returns (bytes32) { return _roles[role].adminRole; } function grantRole(bytes32 role, address account) public virtual { require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant"); _grantRole(role, account); } function revokeRole(bytes32 role, address account) public virtual { require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke"); _revokeRole(role, account); } function renounceRole(bytes32 role, address account) public virtual { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } function _unsetRole(bytes32 role, address account) internal virtual { _revokeRole(role, account); } function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { emit RoleAdminChanged(role, _roles[role].adminRole, adminRole); _roles[role].adminRole = adminRole; } function _grantRole(bytes32 role, address account) private { if (_roles[role].members.add(account)) { emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (_roles[role].members.remove(account)) { emit RoleRevoked(role, account, _msgSender()); } } } contract Pausable is Context { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () internal { _paused = false; } function paused() public view returns (bool) { return _paused; } modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } interface EthRateInterface { function EthToUsdRate() external view returns(uint256); } contract ProofCoin is ERC20DecimalsMock("PROOF", "PRF", 6), Ownable, AccessControl, Pausable { using SafeERC20 for IERC20; struct User {address user_referer; uint32 last_transaction; uint256 user_profit;} bytes32 public constant contractAdmin = keccak256("contractAdmin"); bool public ethBuyOn = true; bool public usdtBuyOn = true; bool public daiBuyOn = true; address[] public founders; address[] public cashiers; address[] public managers; uint256 private eth_custom_rate; uint256 private usd_rate = 100; uint256 private initial_bounty = 2e10; uint256 private fixed_total_suply = 1e12; IERC20 public daiToken = IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F); IERC20 public usdtToken = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7); EthRateInterface public EthRateSource = EthRateInterface(0x9dd4C0a264B53e26B61Fa27922Ac4697f0b9dD8b); event ProfitPayout(uint32 timestamp, address indexed addr, uint256 amount); event TimeProfit(uint256 balance, uint256 hold, uint256 percent, uint256 min, uint256 tax, uint256 reward, uint256 total); event ReferalProfit(uint256 balance, uint256 profit, uint256 percent, uint256 min, uint256 tax, uint256 reward, uint256 total); mapping(address => User) public users; modifier onlyFounders() { for(uint256 i = 0; i < founders.length; i++) { if(founders[i] == msg.sender) { _; return; } } revert("Access denied"); } constructor() public { _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); _setupRole(contractAdmin, msg.sender); _setupRole(contractAdmin, 0x2589171E72A4aaa7b0e7Cc493DB6db7e32aC97d4); _setupRole(contractAdmin, 0x3d027e252A275650643cE83934f492B6914D3341); _setupRole(contractAdmin, 0xe74400179854ca60bCD0d3dA3BB0A2BA9028FB76); _setupRole(contractAdmin, 0x30517CaE41977fc9d4a21e2423b7D5Ce8D19d0cb); _setupRole(contractAdmin, 0x5e646586E572D5D6B44153e81224D26F23B00651); founders.push(0x2589171E72A4aaa7b0e7Cc493DB6db7e32aC97d4); founders.push(0x3d027e252A275650643cE83934f492B6914D3341); founders.push(0xe74400179854ca60bCD0d3dA3BB0A2BA9028FB76); founders.push(0x30517CaE41977fc9d4a21e2423b7D5Ce8D19d0cb); cashiers.push(0x1411B85AaE2Dc11927566042401a6DE158cE4413); managers.push(0x5e646586E572D5D6B44153e81224D26F23B00651); } function _beforeTokenTransfer(address _from, address _to, uint256 _amount) internal override { if(_from != address(0)) { uint256 f_profit = _timeProfit(_from); if(f_profit > 0 && users[_from].user_referer != address(0)) _refReward(users[_from].user_referer, f_profit); } if(_from != _to) { uint256 t_profit = _timeProfit(_to); if(t_profit > 0 && users[_to].user_referer != address(0)) _refReward(users[_to].user_referer, t_profit); if(users[_to].user_referer == address(0) && _from != address(0) && users[_from].user_referer != _to && _amount > 0) users[_to].user_referer = _from; if(users[_to].last_transaction == 0) users[_to].last_transaction = uint32(block.timestamp); } else { _profitPayout(_from); } } function _timeProfit(address _account) private returns(uint256 value) { uint256 balance = this.balanceOf(_account); uint256 hold = block.timestamp - users[_account].last_transaction; if(balance >= 1e7 && hold > 0) { uint256 percent; if(balance >= 1e7 && balance < 1e8) percent = 10; if(balance >= 1e8 && balance < 5e8) percent = 13; if(balance >= 5e8 && balance < 1e9) percent = 17; if(balance >= 1e9 && balance < 5e9) percent = 22; if(balance >= 5e9 && balance < 1e10) percent = 28; if(balance >= 1e10 && balance < 5e10) percent = 35; if(balance >= 5e10 && balance < 1e11) percent = 43; if(balance >= 1e11 && balance < 5e11) percent = 52; if(balance >= 5e11 && balance < 1e12) percent = 62; value = hold * balance * percent / 864 / 1e6; if(value > 0) { uint256 min = hold * balance / 2592 / 1e5; uint256 tax = this.totalSupply() < 1e15 ? value * this.totalSupply() / 1e15 : 0; value -= tax; if(value < min) value = min; users[_account].user_profit += value; emit TimeProfit(balance, hold, percent, min, tax, value, users[_account].user_profit); } } users[_account].last_transaction = uint32(block.timestamp); } function _refReward(address _referer, uint256 _amount) private returns(uint256 value) { uint256 balance = this.balanceOf(_referer); if(balance >= 1e8 && balance < 1e12) { uint256 percent; if(balance >= 1e8 && balance < 1e9) percent = 520; if(balance >= 1e9 && balance < 1e10) percent = 750; if(balance >= 1e10 && balance < 1e11) percent = 1280; if(balance >= 1e11 && balance < 1e12) percent = 2650; value =_amount * percent / 10000; uint256 min = _amount / 100; uint256 tax = this.totalSupply() < 1e15 ? value * this.totalSupply() / 1e15 : 0; value -= tax; if(value < min) value = min; users[_referer].user_profit = users[_referer].user_profit + value; emit ReferalProfit(balance, _amount, percent, min, tax, value, users[_referer].user_profit); } } function _profitPayout(address _account) private { uint256 userProfit = users[_account].user_profit; if(userProfit > 0) { users[_account].user_profit = 0; _mint(_account, userProfit); } emit ProfitPayout(uint32(block.timestamp), _account, userProfit); } receive() payable external whenNotPaused { require(ethBuyOn, "ETH buy is off"); require(this.ethRate() > 0, "Set ETH rate first"); uint256 amount = msg.value * this.ethRate() * 100 / usd_rate / 1e18; _buy(msg.sender, amount); } function _buy(address _account, uint256 _amount) private { require(_amount > 0, "Zero amount"); _mint(_account, _amount); } function ethRate() external view returns(uint256) { uint256 ext_rate = EthRateSource.EthToUsdRate(); if(eth_custom_rate > 0) { return ext_rate > 0 && eth_custom_rate > ext_rate ? ext_rate : eth_custom_rate; } else { return ext_rate; } } function ethBuySwitch(bool _value) external { require(hasRole(contractAdmin, msg.sender), "Caller is not a CONTRACT ADMIN"); ethBuyOn = _value; } function ethBuy() external payable whenNotPaused { require(ethBuyOn, "ETH buy is off"); require(this.ethRate() > 0, "Set ETH rate first"); uint256 amount = msg.value * this.ethRate() * 100 / usd_rate / 1e18; _buy(msg.sender, amount); } function ethRateSet(uint256 _value) external onlyFounders { eth_custom_rate = _value; } function ethRateUp(uint256 _value) external { require(hasRole(contractAdmin, msg.sender), "Caller is not a CONTRACT ADMIN"); require(eth_custom_rate > _value, "Wrong rate"); eth_custom_rate = _value; } function ethRateAddr(address _source) external onlyFounders { EthRateSource = EthRateInterface(_source); } function ethUniswapRate() external view returns(uint256) { return EthRateSource.EthToUsdRate(); } function ethCustomRate() external view returns(uint256) { return eth_custom_rate; } function daiBuySwitch(bool _value) external { require(hasRole(contractAdmin, msg.sender), "Caller is not a CONTRACT ADMIN"); daiBuyOn = _value; } function daiBuy(uint256 _value) external whenNotPaused { require(daiBuyOn, "DAI buy is off"); daiToken.safeTransferFrom(msg.sender, address(this), _value); uint256 amount = _value * 100 / usd_rate / 1e12; _buy(msg.sender, amount); } function usdtBuySwitch(bool _value) external { require(hasRole(contractAdmin, msg.sender), "Caller is not a CONTRACT ADMIN"); usdtBuyOn = _value; } function usdtBuy(uint256 _value) external whenNotPaused { require(usdtBuyOn, "Tether buy is off"); usdtToken.safeTransferFrom(msg.sender, address(this), _value); uint256 amount = _value * 100 / usd_rate; _buy(msg.sender, amount); } function usdRateSet(uint256 _value) external onlyFounders { require(_value >= 100, "Wrong rate"); usd_rate = _value; } function usdRateUp(uint256 _value) external { require(hasRole(contractAdmin, msg.sender), "Caller is not a CONTRACT ADMIN"); require(_value > usd_rate, "Wrong rate"); usd_rate = _value; } function usdRate() external view returns(uint256) { return usd_rate; } function getProfit() external { require(users[msg.sender].user_profit > 0, "This account has no PROFIT"); _profitPayout(msg.sender); } function getRefs() external { require(users[address(this)].user_profit > 0, "This account has no PROFIT"); _profitPayout(address(this)); } function getProofs() external { require(this.balanceOf(address(this)) > founders.length * 1e6 + 1e8, "Not enougth PRF"); uint256 amount = this.balanceOf(address(this)) - 1e8; for(uint8 i = 0; i < founders.length; i++) { _transfer(address(this), founders[i], amount / founders.length); } } function initialBounty(address _to, uint256 _value) external onlyFounders { require(initial_bounty > 0, "Initital bounty is over 20000 PRF"); if(_value > initial_bounty) _value = initial_bounty; initial_bounty -= _value; fixed_total_suply += _value * 100; _mint(_to, _value); } function getBounties() external { require(this.totalSupply() > (founders.length + managers.length) * 1e6 + fixed_total_suply, "Not enougth PRF"); uint256 amount = (this.totalSupply() - fixed_total_suply) / 200; for(uint8 i = 0; i < founders.length; i++) { _mint(founders[i], amount / founders.length); } for(uint8 i = 0; i < managers.length; i++) { _mint(managers[i], amount / managers.length); } fixed_total_suply = this.totalSupply(); } function getEthers() external { require(address(this).balance > (founders.length + cashiers.length) * 1e15, "Not enougth ETH"); uint256 amount = address(this).balance / 2; for(uint8 i = 0; i < founders.length; i++) { payable(founders[i]).transfer(amount / founders.length); } for(uint8 i = 0; i < cashiers.length; i++) { payable(cashiers[i]).transfer(amount / cashiers.length); } } function getTethers() external { require(usdtToken.balanceOf(address(this)) > (founders.length + cashiers.length) * 1e6, "Not enougth USDT"); uint256 amount = usdtToken.balanceOf(address(this)) / 2; for(uint8 i = 0; i < founders.length; i++) { usdtToken.safeTransfer(founders[i], amount / founders.length); } for(uint8 i = 0; i < cashiers.length; i++) { usdtToken.safeTransfer(cashiers[i], amount / cashiers.length); } } function getDais() external { require(daiToken.balanceOf(address(this)) > (founders.length + cashiers.length) * 1e18, "Not enougth DAI"); uint256 amount = daiToken.balanceOf(address(this)) / 2; for(uint8 i = 0; i < founders.length; i++) { daiToken.safeTransfer(founders[i], amount / founders.length); } for(uint8 i = 0; i < cashiers.length; i++) { daiToken.safeTransfer(cashiers[i], amount / cashiers.length); } } function initialBountyLimit() external view returns(uint256 limit) { return (initial_bounty); } function overTax() external view returns(uint256 tax) { return this.totalSupply() < 1e15 ? this.totalSupply() / 1e13 : 0; } function onBoard() external view returns(uint256 refs, uint256 bounty, uint256 prf, uint256 eth, uint256 usdt, uint256 dai) { bounty = this.totalSupply() > fixed_total_suply ? (this.totalSupply() - fixed_total_suply) / 100 : 0; return (users[address(this)].user_profit, bounty, this.balanceOf(address(this)), address(this).balance, usdtToken.balanceOf(address(this)), daiToken.balanceOf(address(this))); } function userInfo() external view returns(address referer, uint256 balance, uint256 last_transaction, uint256 profit) { return (users[msg.sender].user_referer, this.balanceOf(msg.sender), users[msg.sender].last_transaction, users[msg.sender].user_profit); } function setDefaultReferer() external { require(users[msg.sender].user_referer == address(0), "Your referrer will not understand"); users[msg.sender].user_referer = address(this); } function setManagers(uint256 _index, address _account) external onlyFounders { if(managers.length > _index) { if(_account == address(0)) { for(uint256 i = 0; i < managers.length - 1; i++) { managers[i] = i < _index ? managers[i] : managers[i + 1]; } managers.pop(); } else managers[_index] = _account; } else { require(_account != address(0), "Zero address"); managers.push(_account); } } function setCashiers(uint256 _index, address _account) external onlyFounders { if(cashiers.length > _index) { if(_account == address(0)) { for(uint256 i = 0; i < cashiers.length - 1; i++) { cashiers[i] = i < _index ? cashiers[i] : cashiers[i + 1]; } cashiers.pop(); } else cashiers[_index] = _account; } else { require(_account != address(0), "Zero address"); cashiers.push(_account); } } function pauseOn() external onlyFounders { _pause(); } function pauseOff() external onlyFounders { _unpause(); } function adminUnset(address _account) external onlyFounders { _unsetRole(contractAdmin, _account); } function adminSetup(address _account) external onlyFounders { _setupRole(contractAdmin, _account); } function burn(uint256 _amount) external{ _burn(msg.sender, _amount); } }
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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"timestamp","type":"uint32"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ProfitPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"profit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"min","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"ReferalProfit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"min","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"}],"name":"TimeProfit","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EthRateSource","outputs":[{"internalType":"contract EthRateInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"adminSetup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"adminUnset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cashiers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"daiBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"daiBuyOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"daiBuySwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"daiToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethBuy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"ethBuyOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"ethBuySwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethCustomRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_source","type":"address"}],"name":"ethRateAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"ethRateSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"ethRateUp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethUniswapRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"founders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBounties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDais","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEthers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getProfit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getProofs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRefs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTethers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"initialBounty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialBountyLimit","outputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"managers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onBoard","outputs":[{"internalType":"uint256","name":"refs","type":"uint256"},{"internalType":"uint256","name":"bounty","type":"uint256"},{"internalType":"uint256","name":"prf","type":"uint256"},{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"uint256","name":"usdt","type":"uint256"},{"internalType":"uint256","name":"dai","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"overTax","outputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauseOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"setCashiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDefaultReferer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"address","name":"_account","type":"address"}],"name":"setManagers","outputs":[],"stateMutability":"nonpayable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"usdRateSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"usdRateUp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"usdtBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtBuyOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"usdtBuySwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"userInfo","outputs":[{"internalType":"address","name":"referer","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"last_transaction","type":"uint256"},{"internalType":"uint256","name":"profit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"address","name":"user_referer","type":"address"},{"internalType":"uint32","name":"last_transaction","type":"uint32"},{"internalType":"uint256","name":"user_profit","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526007805463ff0000001962ff00001961ff0019909216610100179190911662010000171663010000001790556064600c556404a817c800600d5564e8d4a51000600e55600f80546001600160a01b0319908116736b175474e89094c44da98b954eedeac495271d0f1790915560108054821673dac17f958d2ee523a2206206994597c13d831ec717905560118054909116739dd4c0a264b53e26b61fa27922ac4697f0b9dd8b179055348015620000ba57600080fd5b5060405180604001604052806005815260200164282927a7a360d91b8152506040518060400160405280600381526020016228292360e91b8152506006828281600390805190602001906200011192919062000636565b5080516200012790600490602084019062000636565b50506005805460ff19166012179055506200014b816001600160e01b03620004e516565b505050600062000160620004fb60201b60201c565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506007805460ff19169055620001d66000336001600160e01b036200050016565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206200020d90336001600160e01b036200050016565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206200025890732589171e72a4aaa7b0e7cc493db6db7e32ac97d46001600160e01b036200050016565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020620002a390733d027e252a275650643ce83934f492b6914d33416001600160e01b036200050016565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020620002ee9073e74400179854ca60bcd0d3da3bb0a2ba9028fb766001600160e01b036200050016565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d01902062000339907330517cae41977fc9d4a21e2423b7d5ce8d19d0cb6001600160e01b036200050016565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206200038490735e646586e572d5d6b44153e81224d26f23b006516001600160e01b036200050016565b60088054600181810183557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee391820180546001600160a01b0319908116732589171e72a4aaa7b0e7cc493db6db7e32ac97d41790915583548083018555830180548216733d027e252a275650643ce83934f492b6914d33411790558354808301855583018054821673e74400179854ca60bcd0d3da3bb0a2ba9028fb76179055835480830190945592909101805483167330517cae41977fc9d4a21e2423b7d5ce8d19d0cb179055600980548083019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180548316731411b85aae2dc11927566042401a6de158ce4413179055600a805491820181556000527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8018054909116735e646586e572d5d6b44153e81224d26f23b00651179055620006d8565b6005805460ff191660ff92909216919091179055565b335b90565b6200051582826001600160e01b036200051916565b5050565b600082815260066020908152604090912062000540918390620041546200059d821b17901c565b156200051557620005596001600160e01b03620004fb16565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620005bd836001600160a01b0384166001600160e01b03620005c616565b90505b92915050565b6000620005dd83836001600160e01b036200061e16565b6200061557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620005c0565b506000620005c0565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200067957805160ff1916838001178555620006a9565b82800160010185558215620006a9579182015b82811115620006a95782518255916020019190600101906200068c565b50620006b7929150620006bb565b5090565b620004fd91905b80821115620006b75760008155600101620006c2565b614eb180620006e86000396000f3fe6080604052600436106103fe5760003560e01c80639010d07c11610213578063c125072a11610123578063d72a75d0116100ab578063e0b91e3d1161007a578063e0b91e3d14610ff2578063e74bc9211461101c578063e7c90a141461104f578063ea0e472014611088578063f2fde38b1461109d576105e0565b8063d72a75d014610f2e578063d8e75f6214610f61578063d955a88c14610f8b578063dd62ed3e14610fb7576105e0565b8063cfbbb575116100f2578063cfbbb57514610e7d578063d01dbc6214610e92578063d18a2c4c14610ea7578063d2d93f9014610ee0578063d547741f14610ef5576105e0565b8063c125072a14610e14578063c60760f914610e29578063c680340914610e3e578063ca15c87314610e53576105e0565b8063a87430ba116101a6578063b03e870311610175578063b03e870314610d72578063b07b460714610d87578063be22f54614610d9c578063bfe62eab14610db1578063c0523cb314610ddb576105e0565b8063a87430ba14610c91578063a9059cbb14610cf1578063a98ad46c14610d2a578063aec4a22e14610d3f576105e0565b8063a0cac470116101e2578063a0cac47014610c04578063a217fddf14610c2e578063a457c2d714610c43578063a7aa9f1b14610c7c576105e0565b80639010d07c14610b5c57806391d1485414610b8c57806395d89b4114610bc55780639845e3b414610bda576105e0565b80633d39c2601161030e578063679dffb4116102a1578063730762ba11610270578063730762ba14610ac7578063749d9a2a14610af15780637795524514610b1d57806379b37a8614610b325780638da5cb5b14610b47576105e0565b8063679dffb414610a55578063686dc57c14610a6a57806370a0823114610a7f578063715018a614610ab2576105e0565b8063584e5957116102dd578063584e595714610a015780635c975abb14610a165780635d6eb9d814610a2b5780635dbd37a614610a40576105e0565b80633d39c2601461093757806342966c681461097d57806343a6f4ee146109a757806350b23e85146109ec576105e0565b8063248a9ca3116103915780632f2ff15d116103605780632f2ff15d1461084c578063313ce5671461088557806336568abe146108b05780633882d223146108e957806339509351146108fe576105e0565b8063248a9ca3146107bd5780632582ad9d146107e757806328accc841461082f5780632c04f13914610837576105e0565b8063154131e2116103cd578063154131e2146106fd57806318160ddd146107275780631e370d161461074e57806323b872dd1461077a576105e0565b8063056b6dca146105e557806306fdde0314610611578063095ea7b31461069b5780630cf0ac1d146106e8576105e0565b366105e05760075460ff161561044e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600754610100900460ff1661049b576040805162461bcd60e51b815260206004820152600e60248201526d22aa2410313abc9034b99037b33360911b604482015290519081900360640190fd5b6000306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b505111610549576040805162461bcd60e51b815260206004820152601260248201527114d95d08115512081c985d1948199a5c9cdd60721b604482015290519081900360640190fd5b6000670de0b6b3a7640000600c54306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b50513402606402816105c857fe5b04816105d057fe5b0490506105dd33826110d0565b50005b600080fd5b3480156105f157600080fd5b5061060f6004803603602081101561060857600080fd5b5035611121565b005b34801561061d57600080fd5b506106266111b4565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610660578181015183820152602001610648565b50505050905090810190601f16801561068d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106a757600080fd5b506106d4600480360360408110156106be57600080fd5b506001600160a01b03813516906020013561124b565b604080519115158252519081900360200190f35b3480156106f457600080fd5b5061060f611269565b34801561070957600080fd5b5061060f6004803603602081101561072057600080fd5b50356114ae565b34801561073357600080fd5b5061073c611543565b60408051918252519081900360200190f35b34801561075a57600080fd5b5061060f6004803603602081101561077157600080fd5b50351515611549565b34801561078657600080fd5b506106d46004803603606081101561079d57600080fd5b506001600160a01b038135811691602081013590911690604001356115ce565b3480156107c957600080fd5b5061073c600480360360208110156107e057600080fd5b503561165b565b3480156107f357600080fd5b506107fc611670565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61060f6118e2565b34801561084357600080fd5b5061073c611abc565b34801561085857600080fd5b5061060f6004803603604081101561086f57600080fd5b50803590602001356001600160a01b0316611ac2565b34801561089157600080fd5b5061089a611b2a565b6040805160ff9092168252519081900360200190f35b3480156108bc57600080fd5b5061060f600480360360408110156108d357600080fd5b50803590602001356001600160a01b0316611b33565b3480156108f557600080fd5b5061060f611b94565b34801561090a57600080fd5b506106d46004803603604081101561092157600080fd5b506001600160a01b038135169060200135611c0a565b34801561094357600080fd5b506109616004803603602081101561095a57600080fd5b5035611c5e565b604080516001600160a01b039092168252519081900360200190f35b34801561098957600080fd5b5061060f600480360360208110156109a057600080fd5b5035611c85565b3480156109b357600080fd5b506109bc611c8f565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b3480156109f857600080fd5b5061073c611d4d565b348015610a0d57600080fd5b5061060f611dc3565b348015610a2257600080fd5b506106d4611e32565b348015610a3757600080fd5b5061073c611e3b565b348015610a4c57600080fd5b5061060f611f30565b348015610a6157600080fd5b5061060f61213f565b348015610a7657600080fd5b5061060f6121ac565b348015610a8b57600080fd5b5061073c60048036036020811015610aa257600080fd5b50356001600160a01b0316612201565b348015610abe57600080fd5b5061060f61221c565b348015610ad357600080fd5b5061060f60048036036020811015610aea57600080fd5b50356122db565b348015610afd57600080fd5b5061060f60048036036020811015610b1457600080fd5b5035151561238e565b348015610b2957600080fd5b5061073c612417565b348015610b3e57600080fd5b5061073c61243c565b348015610b5357600080fd5b50610961612442565b348015610b6857600080fd5b5061096160048036036040811015610b7f57600080fd5b5080359060200135612456565b348015610b9857600080fd5b506106d460048036036040811015610baf57600080fd5b50803590602001356001600160a01b031661247b565b348015610bd157600080fd5b50610626612499565b348015610be657600080fd5b5061060f60048036036020811015610bfd57600080fd5b50356124fa565b348015610c1057600080fd5b5061060f60048036036020811015610c2757600080fd5b50356125d1565b348015610c3a57600080fd5b5061073c6126a7565b348015610c4f57600080fd5b506106d460048036036040811015610c6657600080fd5b506001600160a01b0381351690602001356126ac565b348015610c8857600080fd5b5061060f61271a565b348015610c9d57600080fd5b50610cc460048036036020811015610cb457600080fd5b50356001600160a01b0316612925565b604080516001600160a01b03909416845263ffffffff909216602084015282820152519081900360600190f35b348015610cfd57600080fd5b506106d460048036036040811015610d1457600080fd5b506001600160a01b038135169060200135612957565b348015610d3657600080fd5b5061096161296b565b348015610d4b57600080fd5b5061060f60048036036020811015610d6257600080fd5b50356001600160a01b031661297a565b348015610d7e57600080fd5b506106d46129e2565b348015610d9357600080fd5b5061073c6129f1565b348015610da857600080fd5b506109616129f7565b348015610dbd57600080fd5b5061096160048036036020811015610dd457600080fd5b5035612a06565b348015610de757600080fd5b5061060f60048036036040811015610dfe57600080fd5b506001600160a01b038135169060200135612a13565b348015610e2057600080fd5b506106d4612acf565b348015610e3557600080fd5b5061060f612add565b348015610e4a57600080fd5b50610961612c7d565b348015610e5f57600080fd5b5061073c60048036036020811015610e7657600080fd5b5035612c8c565b348015610e8957600080fd5b506106d4612ca3565b348015610e9e57600080fd5b5061060f612cb3565b348015610eb357600080fd5b5061060f60048036036040811015610eca57600080fd5b50803590602001356001600160a01b0316612d02565b348015610eec57600080fd5b5061073c612f14565b348015610f0157600080fd5b5061060f60048036036040811015610f1857600080fd5b50803590602001356001600160a01b0316612fc3565b348015610f3a57600080fd5b5061060f60048036036020811015610f5157600080fd5b50356001600160a01b031661301c565b348015610f6d57600080fd5b5061096160048036036020811015610f8457600080fd5b5035613095565b348015610f9757600080fd5b5061060f60048036036020811015610fae57600080fd5b503515156130a2565b348015610fc357600080fd5b5061073c60048036036040811015610fda57600080fd5b506001600160a01b0381358116916020013516613129565b348015610ffe57600080fd5b5061060f6004803603602081101561101557600080fd5b5035613154565b34801561102857600080fd5b5061060f6004803603602081101561103f57600080fd5b50356001600160a01b0316613207565b34801561105b57600080fd5b5061060f6004803603604081101561107257600080fd5b50803590602001356001600160a01b031661327a565b34801561109457600080fd5b5061060f613431565b3480156110a957600080fd5b5061060f600480360360208110156110c057600080fd5b50356001600160a01b0316613583565b60008111611113576040805162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b604482015290519081900360640190fd5b61111d828261369e565b5050565b60005b60085481101561117357336001600160a01b03166008828154811061114557fe5b6000918252602090912001546001600160a01b0316141561116b5750600b8190556111b1565b600101611124565b506040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b604482015290519081900360640190fd5b50565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156112405780601f1061121557610100808354040283529160200191611240565b820191906000526020600020905b81548152906001019060200180831161122357829003601f168201915b505050505090505b90565b600061125f61125861379a565b848461379e565b5060015b92915050565b600e54600a8054905060088054905001620f42400201306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b857600080fd5b505afa1580156112cc573d6000803e3d6000fd5b505050506040513d60208110156112e257600080fd5b505111611328576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1032b737bab3ba341028292360891b604482015290519081900360640190fd5b600060c8600e54306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561136857600080fd5b505afa15801561137c573d6000803e3d6000fd5b505050506040513d602081101561139257600080fd5b5051038161139c57fe5b04905060005b60085460ff821610156113f3576113eb60088260ff16815481106113c257fe5b6000918252602090912001546008546001600160a01b039091169084816113e557fe5b0461369e565b6001016113a2565b5060005b600a5460ff821610156114425761143a600a8260ff168154811061141757fe5b600091825260209091200154600a546001600160a01b039091169084816113e557fe5b6001016113f7565b50306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b5051600e5550565b60005b60085481101561117357336001600160a01b0316600882815481106114d257fe5b6000918252602090912001546001600160a01b0316141561153b576064821015611530576040805162461bcd60e51b815260206004820152600a60248201526957726f6e67207261746560b01b604482015290519081900360640190fd5b50600c8190556111b1565b6001016114b1565b60025490565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020611575903361247b565b6115b4576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b600780549115156101000261ff0019909216919091179055565b60006115db84848461388a565b611651846115e761379a565b61164c85604051806060016040528060288152602001614d4b602891396001600160a01b038a1660009081526001602052604081209061162561379a565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6139f116565b61379e565b5060019392505050565b60009081526006602052604090206002015490565b600080600080600080600e54306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b557600080fd5b505afa1580156116c9573d6000803e3d6000fd5b505050506040513d60208110156116df57600080fd5b5051116116ed576000611761565b6064600e54306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d602081101561175557600080fd5b5051038161175f57fe5b045b306000818152601260209081526040918290206001015482516370a0823160e01b8152600481018590529251949950938993926370a08231926024808301939192829003018186803b1580156117b657600080fd5b505afa1580156117ca573d6000803e3d6000fd5b505050506040513d60208110156117e057600080fd5b5051601054604080516370a0823160e01b8152306004820152905147926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182c57600080fd5b505afa158015611840573d6000803e3d6000fd5b505050506040513d602081101561185657600080fd5b5051600f54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d60208110156118cd57600080fd5b5051949b939a50919850965094509092509050565b60075460ff161561192d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600754610100900460ff1661197a576040805162461bcd60e51b815260206004820152600e60248201526d22aa2410313abc9034b99037b33360911b604482015290519081900360640190fd5b6000306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b505111611a28576040805162461bcd60e51b815260206004820152601260248201527114d95d08115512081c985d1948199a5c9cdd60721b604482015290519081900360640190fd5b6000670de0b6b3a7640000600c54306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6f57600080fd5b505afa158015611a83573d6000803e3d6000fd5b505050506040513d6020811015611a9957600080fd5b5051340260640281611aa757fe5b0481611aaf57fe5b0490506111b133826110d0565b600d5490565b600082815260066020526040902060020154611ae590611ae061379a565b61247b565b611b205760405162461bcd60e51b815260040180806020018281038252602f815260200180614c1b602f913960400191505060405180910390fd5b61111d8282613a88565b60055460ff1690565b611b3b61379a565b6001600160a01b0316816001600160a01b031614611b8a5760405162461bcd60e51b815260040180806020018281038252602f815260200180614e4d602f913960400191505060405180910390fd5b61111d8282613af7565b336000908152601260205260409020546001600160a01b031615611be95760405162461bcd60e51b8152600401808060200182810382526021815260200180614d736021913960400191505060405180910390fd5b33600090815260126020526040902080546001600160a01b03191630179055565b600061125f611c1761379a565b8461164c8560016000611c2861379a565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff613b6616565b600a8181548110611c6b57fe5b6000918252602090912001546001600160a01b0316905081565b6111b13382613bc0565b3360008181526012602090815260408083205481516370a0823160e01b81526004810195909552905192938493849384936001600160a01b03169230926370a0823192602480840193919291829003018186803b158015611cef57600080fd5b505afa158015611d03573d6000803e3d6000fd5b505050506040513d6020811015611d1957600080fd5b505133600090815260126020526040902080546001909101549297919650600160a01b900463ffffffff1694509092509050565b60115460408051632c9fe11f60e11b815290516000926001600160a01b03169163593fc23e916004808301926020929190829003018186803b158015611d9257600080fd5b505afa158015611da6573d6000803e3d6000fd5b505050506040513d6020811015611dbc57600080fd5b5051905090565b30600090815260126020526040902060010154611e27576040805162461bcd60e51b815260206004820152601a60248201527f54686973206163636f756e7420686173206e6f2050524f464954000000000000604482015290519081900360640190fd5b611e3030613cc8565b565b60075460ff1690565b600066038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b505110611eb6576000611f2b565b6509184e72a000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef657600080fd5b505afa158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611f2057600080fd5b505181611f2957fe5b045b905090565b600954600854600f54604080516370a0823160e01b8152306004820152905192909301670de0b6b3a764000002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611f9057600080fd5b505afa158015611fa4573d6000803e3d6000fd5b505050506040513d6020811015611fba57600080fd5b505111612000576040805162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756774682044414960881b604482015290519081900360640190fd5b600f54604080516370a0823160e01b815230600482015290516000926002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561205157600080fd5b505afa158015612065573d6000803e3d6000fd5b505050506040513d602081101561207b57600080fd5b50518161208457fe5b04905060005b60085460ff821610156120f0576120e860088260ff16815481106120aa57fe5b6000918252602090912001546008546001600160a01b039091169084816120cd57fe5b600f546001600160a01b03169291900463ffffffff613d5d16565b60010161208a565b5060005b60095460ff8216101561111d5761213760098260ff168154811061211457fe5b6000918252602090912001546009546001600160a01b039091169084816120cd57fe5b6001016120f4565b336000908152601260205260409020600101546121a3576040805162461bcd60e51b815260206004820152601a60248201527f54686973206163636f756e7420686173206e6f2050524f464954000000000000604482015290519081900360640190fd5b611e3033613cc8565b60005b60085481101561117357336001600160a01b0316600882815481106121d057fe5b6000918252602090912001546001600160a01b031614156121f9576121f3613db4565b50611e30565b6001016121af565b6001600160a01b031660009081526020819052604090205490565b61222461379a565b60055461010090046001600160a01b0390811691161461228b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020612307903361247b565b612346576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b600c548111612389576040805162461bcd60e51b815260206004820152600a60248201526957726f6e67207261746560b01b604482015290519081900360640190fd5b600c55565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206123ba903361247b565b6123f9576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b6007805491151563010000000263ff00000019909216919091179055565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d01902081565b600c5490565b60055461010090046001600160a01b031690565b6000828152600660205260408120612474908363ffffffff613e5216565b9392505050565b6000828152600660205260408120612474908363ffffffff613e5e16565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156112405780601f1061121557610100808354040283529160200191611240565b60075460ff1615612545576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60075462010000900460ff16612596576040805162461bcd60e51b81526020600482015260116024820152702a32ba3432b910313abc9034b99037b33360791b604482015290519081900360640190fd5b6010546125b4906001600160a01b031633308463ffffffff613e7316565b6000600c5482606402816125c457fe5b04905061111d33826110d0565b60075460ff161561261c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6007546301000000900460ff1661266b576040805162461bcd60e51b815260206004820152600e60248201526d2220a490313abc9034b99037b33360911b604482015290519081900360640190fd5b600f54612689906001600160a01b031633308463ffffffff613e7316565b600064e8d4a51000600c54836064028161269f57fe5b04816125c457fe5b600081565b600061125f6126b961379a565b8461164c85604051806060016040528060258152602001614e2860259139600160006126e361379a565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6139f116565b600954600854601054604080516370a0823160e01b8152306004820152905192909301620f424002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561277557600080fd5b505afa158015612789573d6000803e3d6000fd5b505050506040513d602081101561279f57600080fd5b5051116127e6576040805162461bcd60e51b815260206004820152601060248201526f139bdd08195b9bdd59dd1a081554d11560821b604482015290519081900360640190fd5b601054604080516370a0823160e01b815230600482015290516000926002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561283757600080fd5b505afa15801561284b573d6000803e3d6000fd5b505050506040513d602081101561286157600080fd5b50518161286a57fe5b04905060005b60085460ff821610156128d6576128ce60088260ff168154811061289057fe5b6000918252602090912001546008546001600160a01b039091169084816128b357fe5b6010546001600160a01b03169291900463ffffffff613d5d16565b600101612870565b5060005b60095460ff8216101561111d5761291d60098260ff16815481106128fa57fe5b6000918252602090912001546009546001600160a01b039091169084816128b357fe5b6001016128da565b601260205260009081526040902080546001909101546001600160a01b03821691600160a01b900463ffffffff169083565b600061125f61296461379a565b848461388a565b6010546001600160a01b031681565b60005b60085481101561117357336001600160a01b03166008828154811061299e57fe5b6000918252602090912001546001600160a01b031614156129da5750601180546001600160a01b0319166001600160a01b0383161790556111b1565b60010161297d565b60075462010000900460ff1681565b600b5490565b600f546001600160a01b031681565b60098181548110611c6b57fe5b60005b60085481101561117357336001600160a01b031660088281548110612a3757fe5b6000918252602090912001546001600160a01b03161415612ac7576000600d5411612a935760405162461bcd60e51b8152600401808060200182810382526021815260200180614d0a6021913960400191505060405180910390fd5b600d54821115612aa357600d5491505b600d80548390039055600e805460648402019055612ac1838361369e565b5061111d565b600101612a16565b600754610100900460ff1681565b600854604080516370a0823160e01b815230600482018190529151620f42409093026305f5e10001926370a0823191602480820192602092909190829003018186803b158015612b2c57600080fd5b505afa158015612b40573d6000803e3d6000fd5b505050506040513d6020811015612b5657600080fd5b505111612b9c576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1032b737bab3ba341028292360891b604482015290519081900360640190fd5b60006305f5e100306001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612bf957600080fd5b505afa158015612c0d573d6000803e3d6000fd5b505050506040513d6020811015612c2357600080fd5b505103905060005b60085460ff8216101561111d57612c753060088360ff1681548110612c4c57fe5b6000918252602090912001546008546001600160a01b03909116908581612c6f57fe5b0461388a565b600101612c2b565b6011546001600160a01b031681565b600081815260066020526040812061126390613ed3565b6007546301000000900460ff1681565b60005b60085481101561117357336001600160a01b031660088281548110612cd757fe5b6000918252602090912001546001600160a01b03161415612cfa576121f3613ede565b600101612cb6565b60005b60085481101561117357336001600160a01b031660088281548110612d2657fe5b6000918252602090912001546001600160a01b03161415612f0c57600954831015612e71576001600160a01b038216612e2f5760005b60095460001901811015612dfc57838110612d9b5760098160010181548110612d8157fe5b6000918252602090912001546001600160a01b0316612dbe565b60098181548110612da857fe5b6000918252602090912001546001600160a01b03165b60098281548110612dcb57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101612d5c565b506009805480612e0857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055612e6c565b8160098481548110612e3d57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b612ac1565b6001600160a01b038216612ebb576040805162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015290519081900360640190fd5b50600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b03831617905561111d565b600101612d05565b600080601160009054906101000a90046001600160a01b03166001600160a01b031663593fc23e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6557600080fd5b505afa158015612f79573d6000803e3d6000fd5b505050506040513d6020811015612f8f57600080fd5b5051600b5490915015612fb957600081118015612fad575080600b54115b612fb957600b54612fbb565b805b915050611248565b600082815260066020526040902060020154612fe190611ae061379a565b611b8a5760405162461bcd60e51b8152600401808060200182810382526030815260200180614cda6030913960400191505060405180910390fd5b60005b60085481101561117357336001600160a01b03166008828154811061304057fe5b6000918252602090912001546001600160a01b0316141561308d57604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206130879083611b8a565b506111b1565b60010161301f565b60088181548110611c6b57fe5b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206130ce903361247b565b61310d576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b60078054911515620100000262ff000019909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020613180903361247b565b6131bf576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b80600b5411613202576040805162461bcd60e51b815260206004820152600a60248201526957726f6e67207261746560b01b604482015290519081900360640190fd5b600b55565b60005b60085481101561117357336001600160a01b03166008828154811061322b57fe5b6000918252602090912001546001600160a01b0316141561327257604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206130879083611b20565b60010161320a565b60005b60085481101561117357336001600160a01b03166008828154811061329e57fe5b6000918252602090912001546001600160a01b0316141561342957600a5483101561338e576001600160a01b0382166133805760005b600a54600019018110156133745783811061331357600a81600101815481106132f957fe5b6000918252602090912001546001600160a01b0316613336565b600a818154811061332057fe5b6000918252602090912001546001600160a01b03165b600a828154811061334357fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001016132d4565b50600a805480612e0857fe5b81600a8481548110612e3d57fe5b6001600160a01b0382166133d8576040805162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015290519081900360640190fd5b50600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b03831617905561111d565b60010161327d565b6009546008540166038d7ea4c68000024711613486576040805162461bcd60e51b815260206004820152600f60248201526e09cdee840cadcdeeacee8d0408aa89608b1b604482015290519081900360640190fd5b6002470460005b60085460ff821610156135065760088160ff16815481106134aa57fe5b6000918252602090912001546008546001600160a01b03909116906108fc9084816134d157fe5b049081150290604051600060405180830381858888f193505050501580156134fd573d6000803e3d6000fd5b5060010161348d565b5060005b60095460ff8216101561111d5760098160ff168154811061352757fe5b6000918252602090912001546009546001600160a01b03909116906108fc90848161354e57fe5b049081150290604051600060405180830381858888f1935050505015801561357a573d6000803e3d6000fd5b5060010161350a565b61358b61379a565b60055461010090046001600160a01b039081169116146135f2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166136375760405162461bcd60e51b8152600401808060200182810382526026815260200180614c6c6026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b0382166136f9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61370560008383613f5f565b600254613718908263ffffffff613b6616565b6002556001600160a01b038216600090815260208190526040902054613744908263ffffffff613b6616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b6001600160a01b0383166137e35760405162461bcd60e51b8152600401808060200182810382526024815260200180614dda6024913960400191505060405180910390fd5b6001600160a01b0382166138285760405162461bcd60e51b8152600401808060200182810382526022815260200180614c926022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166138cf5760405162461bcd60e51b8152600401808060200182810382526025815260200180614db56025913960400191505060405180910390fd5b6001600160a01b0382166139145760405162461bcd60e51b8152600401808060200182810382526023815260200180614bf86023913960400191505060405180910390fd5b61391f838383613f5f565b61396281604051806060016040528060268152602001614cb4602691396001600160a01b038616600090815260208190526040902054919063ffffffff6139f116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613997908263ffffffff613b6616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115613a805760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a45578181015183820152602001613a2d565b50505050905090810190601f168015613a725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828152600660205260409020613aa6908263ffffffff61415416565b1561111d57613ab361379a565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600660205260409020613b15908263ffffffff61416916565b1561111d57613b2261379a565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600082820183811015612474576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216613c055760405162461bcd60e51b8152600401808060200182810382526021815260200180614d946021913960400191505060405180910390fd5b613c1182600083613f5f565b613c5481604051806060016040528060228152602001614c4a602291396001600160a01b038516600090815260208190526040902054919063ffffffff6139f116565b6001600160a01b038316600090815260208190526040902055600254613c80908263ffffffff61417e16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0381166000908152601260205260409020600101548015613d10576001600160a01b038216600090815260126020526040812060010155613d10828261369e565b6040805163ffffffff421681526020810183905281516001600160a01b038516927f5c3b354425d92880121d42eb89725f341147fa6da780add8db203d5b63f434d8928290030190a25050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613daf9084906141c0565b505050565b60075460ff1615613dff576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613e3561379a565b604080516001600160a01b039092168252519081900360200190a1565b60006124748383614378565b6000612474836001600160a01b0384166143dc565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613ecd9085906141c0565b50505050565b6000611263826143f4565b60075460ff16613f2c576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613e3561379a565b6001600160a01b03831615613fd2576000613f79846143f8565b9050600081118015613fa457506001600160a01b038481166000908152601260205260409020541615155b15613fd0576001600160a01b03808516600090815260126020526040902054613fce9116826147c8565b505b505b816001600160a01b0316836001600160a01b03161461414b576000613ff6836143f8565b905060008111801561402157506001600160a01b038381166000908152601260205260409020541615155b1561404d576001600160a01b0380841660009081526012602052604090205461404b9116826147c8565b505b6001600160a01b038381166000908152601260205260409020541615801561407d57506001600160a01b03841615155b80156140a657506001600160a01b03848116600090815260126020526040902054811690841614155b80156140b25750600082115b156140e6576001600160a01b03838116600090815260126020526040902080546001600160a01b0319169186169190911790555b6001600160a01b038316600090815260126020526040902054600160a01b900463ffffffff16614145576001600160a01b0383166000908152601260205260409020805463ffffffff60a01b1916600160a01b4263ffffffff16021790555b50613daf565b613daf83613cc8565b6000612474836001600160a01b038416614a89565b6000612474836001600160a01b038416614ad3565b600061247483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139f1565b6141d2826001600160a01b0316614b99565b614223576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106142615780518252601f199092019160209182019101614242565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142c3576040519150601f19603f3d011682016040523d82523d6000602084013e6142c8565b606091505b50915091508161431f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115613ecd5780806020019051602081101561433b57600080fd5b5051613ecd5760405162461bcd60e51b815260040180806020018281038252602a815260200180614dfe602a913960400191505060405180910390fd5b815460009082106143ba5760405162461bcd60e51b8152600401808060200182810382526022815260200180614bd66022913960400191505060405180910390fd5b8260000182815481106143c957fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b604080516370a0823160e01b81526001600160a01b03831660048201529051600091829130916370a08231916024808301926020929190829003018186803b15801561444357600080fd5b505afa158015614457573d6000803e3d6000fd5b505050506040513d602081101561446d57600080fd5b50516001600160a01b038416600090815260126020526040902054909150600160a01b900463ffffffff1642036298968082108015906144ad5750600081115b1561478d5760006298968083101580156144ca57506305f5e10083105b156144d35750600a5b6305f5e10083101580156144ea5750631dcd650083105b156144f35750600d5b631dcd6500831015801561450a5750633b9aca0083105b15614513575060115b633b9aca00831015801561452b575064012a05f20083105b15614534575060165b64012a05f200831015801561454d57506402540be40083105b156145565750601c5b6402540be400831015801561456f5750640ba43b740083105b15614578575060235b640ba43b74008310158015614591575064174876e80083105b1561459a5750602b5b64174876e80083101580156145b3575064746a52880083105b156145bc575060345b64746a52880083101580156145d5575064e8d4a5100083105b156145de5750603e5b620f4240610360848402830204049350831561478b576000620186a0610a2085850204049050600066038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561464757600080fd5b505afa15801561465b573d6000803e3d6000fd5b505050506040513d602081101561467157600080fd5b50511061467f5760006146f7565b66038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156146c057600080fd5b505afa1580156146d4573d6000803e3d6000fd5b505050506040513d60208110156146ea57600080fd5b50518702816146f557fe5b045b905080860395508186101561470a578195505b6001600160a01b03871660009081526012602090815260409182902060010180548901908190558251888152918201879052818301869052606082018590526080820184905260a0820189905260c082015290517f992c77e9023dae2c0e76d2ebafc0819feb6b58ec9257ea5604347fa44e4a48989181900360e00190a150505b505b50506001600160a01b03919091166000908152601260205260409020805463ffffffff60a01b1916600160a01b4263ffffffff160217905590565b604080516370a0823160e01b81526001600160a01b03841660048201529051600091829130916370a08231916024808301926020929190829003018186803b15801561481357600080fd5b505afa158015614827573d6000803e3d6000fd5b505050506040513d602081101561483d57600080fd5b505190506305f5e1008110801590614859575064e8d4a5100081105b15614a825760006305f5e10082101580156148775750633b9aca0082105b1561488157506102085b633b9aca00821015801561489957506402540be40082105b156148a357506102ee5b6402540be40082101580156148bc575064174876e80082105b156148c657506105005b64174876e80082101580156148df575064e8d4a5100082105b156148e95750610a5a5b6127108482020492506000606485049050600066038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561493d57600080fd5b505afa158015614951573d6000803e3d6000fd5b505050506040513d602081101561496757600080fd5b5051106149755760006149ed565b66038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156149b657600080fd5b505afa1580156149ca573d6000803e3d6000fd5b505050506040513d60208110156149e057600080fd5b50518602816149eb57fe5b045b9050808503945081851015614a00578194505b6001600160a01b03871660009081526012602090815260409182902060010180548801908190558251878152918201899052818301869052606082018590526080820184905260a0820188905260c082015290517fa4e39e22bae2162d394efee88969c1c784052966f3130b268fe4dd501f2797bb9181900360e00190a15050505b5092915050565b6000614a9583836143dc565b614acb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611263565b506000611263565b60008181526001830160205260408120548015614b8f5783546000198083019190810190600090879083908110614b0657fe5b9060005260206000200154905080876000018481548110614b2357fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614b5357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611263565b6000915050611263565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590614bcd57508115155b94935050505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65496e69746974616c20626f756e7479206973206f7665722032303030302050524643616c6c6572206973206e6f74206120434f4e54524143542041444d494e000045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365596f75722072656665727265722077696c6c206e6f7420756e6465727374616e6445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220259586f1027408fccb4643f700e7df470bae1e31722ca5b26221aa756475936564736f6c63430006060033
Deployed Bytecode
0x6080604052600436106103fe5760003560e01c80639010d07c11610213578063c125072a11610123578063d72a75d0116100ab578063e0b91e3d1161007a578063e0b91e3d14610ff2578063e74bc9211461101c578063e7c90a141461104f578063ea0e472014611088578063f2fde38b1461109d576105e0565b8063d72a75d014610f2e578063d8e75f6214610f61578063d955a88c14610f8b578063dd62ed3e14610fb7576105e0565b8063cfbbb575116100f2578063cfbbb57514610e7d578063d01dbc6214610e92578063d18a2c4c14610ea7578063d2d93f9014610ee0578063d547741f14610ef5576105e0565b8063c125072a14610e14578063c60760f914610e29578063c680340914610e3e578063ca15c87314610e53576105e0565b8063a87430ba116101a6578063b03e870311610175578063b03e870314610d72578063b07b460714610d87578063be22f54614610d9c578063bfe62eab14610db1578063c0523cb314610ddb576105e0565b8063a87430ba14610c91578063a9059cbb14610cf1578063a98ad46c14610d2a578063aec4a22e14610d3f576105e0565b8063a0cac470116101e2578063a0cac47014610c04578063a217fddf14610c2e578063a457c2d714610c43578063a7aa9f1b14610c7c576105e0565b80639010d07c14610b5c57806391d1485414610b8c57806395d89b4114610bc55780639845e3b414610bda576105e0565b80633d39c2601161030e578063679dffb4116102a1578063730762ba11610270578063730762ba14610ac7578063749d9a2a14610af15780637795524514610b1d57806379b37a8614610b325780638da5cb5b14610b47576105e0565b8063679dffb414610a55578063686dc57c14610a6a57806370a0823114610a7f578063715018a614610ab2576105e0565b8063584e5957116102dd578063584e595714610a015780635c975abb14610a165780635d6eb9d814610a2b5780635dbd37a614610a40576105e0565b80633d39c2601461093757806342966c681461097d57806343a6f4ee146109a757806350b23e85146109ec576105e0565b8063248a9ca3116103915780632f2ff15d116103605780632f2ff15d1461084c578063313ce5671461088557806336568abe146108b05780633882d223146108e957806339509351146108fe576105e0565b8063248a9ca3146107bd5780632582ad9d146107e757806328accc841461082f5780632c04f13914610837576105e0565b8063154131e2116103cd578063154131e2146106fd57806318160ddd146107275780631e370d161461074e57806323b872dd1461077a576105e0565b8063056b6dca146105e557806306fdde0314610611578063095ea7b31461069b5780630cf0ac1d146106e8576105e0565b366105e05760075460ff161561044e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600754610100900460ff1661049b576040805162461bcd60e51b815260206004820152600e60248201526d22aa2410313abc9034b99037b33360911b604482015290519081900360640190fd5b6000306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b505111610549576040805162461bcd60e51b815260206004820152601260248201527114d95d08115512081c985d1948199a5c9cdd60721b604482015290519081900360640190fd5b6000670de0b6b3a7640000600c54306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b50513402606402816105c857fe5b04816105d057fe5b0490506105dd33826110d0565b50005b600080fd5b3480156105f157600080fd5b5061060f6004803603602081101561060857600080fd5b5035611121565b005b34801561061d57600080fd5b506106266111b4565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610660578181015183820152602001610648565b50505050905090810190601f16801561068d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106a757600080fd5b506106d4600480360360408110156106be57600080fd5b506001600160a01b03813516906020013561124b565b604080519115158252519081900360200190f35b3480156106f457600080fd5b5061060f611269565b34801561070957600080fd5b5061060f6004803603602081101561072057600080fd5b50356114ae565b34801561073357600080fd5b5061073c611543565b60408051918252519081900360200190f35b34801561075a57600080fd5b5061060f6004803603602081101561077157600080fd5b50351515611549565b34801561078657600080fd5b506106d46004803603606081101561079d57600080fd5b506001600160a01b038135811691602081013590911690604001356115ce565b3480156107c957600080fd5b5061073c600480360360208110156107e057600080fd5b503561165b565b3480156107f357600080fd5b506107fc611670565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61060f6118e2565b34801561084357600080fd5b5061073c611abc565b34801561085857600080fd5b5061060f6004803603604081101561086f57600080fd5b50803590602001356001600160a01b0316611ac2565b34801561089157600080fd5b5061089a611b2a565b6040805160ff9092168252519081900360200190f35b3480156108bc57600080fd5b5061060f600480360360408110156108d357600080fd5b50803590602001356001600160a01b0316611b33565b3480156108f557600080fd5b5061060f611b94565b34801561090a57600080fd5b506106d46004803603604081101561092157600080fd5b506001600160a01b038135169060200135611c0a565b34801561094357600080fd5b506109616004803603602081101561095a57600080fd5b5035611c5e565b604080516001600160a01b039092168252519081900360200190f35b34801561098957600080fd5b5061060f600480360360208110156109a057600080fd5b5035611c85565b3480156109b357600080fd5b506109bc611c8f565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b3480156109f857600080fd5b5061073c611d4d565b348015610a0d57600080fd5b5061060f611dc3565b348015610a2257600080fd5b506106d4611e32565b348015610a3757600080fd5b5061073c611e3b565b348015610a4c57600080fd5b5061060f611f30565b348015610a6157600080fd5b5061060f61213f565b348015610a7657600080fd5b5061060f6121ac565b348015610a8b57600080fd5b5061073c60048036036020811015610aa257600080fd5b50356001600160a01b0316612201565b348015610abe57600080fd5b5061060f61221c565b348015610ad357600080fd5b5061060f60048036036020811015610aea57600080fd5b50356122db565b348015610afd57600080fd5b5061060f60048036036020811015610b1457600080fd5b5035151561238e565b348015610b2957600080fd5b5061073c612417565b348015610b3e57600080fd5b5061073c61243c565b348015610b5357600080fd5b50610961612442565b348015610b6857600080fd5b5061096160048036036040811015610b7f57600080fd5b5080359060200135612456565b348015610b9857600080fd5b506106d460048036036040811015610baf57600080fd5b50803590602001356001600160a01b031661247b565b348015610bd157600080fd5b50610626612499565b348015610be657600080fd5b5061060f60048036036020811015610bfd57600080fd5b50356124fa565b348015610c1057600080fd5b5061060f60048036036020811015610c2757600080fd5b50356125d1565b348015610c3a57600080fd5b5061073c6126a7565b348015610c4f57600080fd5b506106d460048036036040811015610c6657600080fd5b506001600160a01b0381351690602001356126ac565b348015610c8857600080fd5b5061060f61271a565b348015610c9d57600080fd5b50610cc460048036036020811015610cb457600080fd5b50356001600160a01b0316612925565b604080516001600160a01b03909416845263ffffffff909216602084015282820152519081900360600190f35b348015610cfd57600080fd5b506106d460048036036040811015610d1457600080fd5b506001600160a01b038135169060200135612957565b348015610d3657600080fd5b5061096161296b565b348015610d4b57600080fd5b5061060f60048036036020811015610d6257600080fd5b50356001600160a01b031661297a565b348015610d7e57600080fd5b506106d46129e2565b348015610d9357600080fd5b5061073c6129f1565b348015610da857600080fd5b506109616129f7565b348015610dbd57600080fd5b5061096160048036036020811015610dd457600080fd5b5035612a06565b348015610de757600080fd5b5061060f60048036036040811015610dfe57600080fd5b506001600160a01b038135169060200135612a13565b348015610e2057600080fd5b506106d4612acf565b348015610e3557600080fd5b5061060f612add565b348015610e4a57600080fd5b50610961612c7d565b348015610e5f57600080fd5b5061073c60048036036020811015610e7657600080fd5b5035612c8c565b348015610e8957600080fd5b506106d4612ca3565b348015610e9e57600080fd5b5061060f612cb3565b348015610eb357600080fd5b5061060f60048036036040811015610eca57600080fd5b50803590602001356001600160a01b0316612d02565b348015610eec57600080fd5b5061073c612f14565b348015610f0157600080fd5b5061060f60048036036040811015610f1857600080fd5b50803590602001356001600160a01b0316612fc3565b348015610f3a57600080fd5b5061060f60048036036020811015610f5157600080fd5b50356001600160a01b031661301c565b348015610f6d57600080fd5b5061096160048036036020811015610f8457600080fd5b5035613095565b348015610f9757600080fd5b5061060f60048036036020811015610fae57600080fd5b503515156130a2565b348015610fc357600080fd5b5061073c60048036036040811015610fda57600080fd5b506001600160a01b0381358116916020013516613129565b348015610ffe57600080fd5b5061060f6004803603602081101561101557600080fd5b5035613154565b34801561102857600080fd5b5061060f6004803603602081101561103f57600080fd5b50356001600160a01b0316613207565b34801561105b57600080fd5b5061060f6004803603604081101561107257600080fd5b50803590602001356001600160a01b031661327a565b34801561109457600080fd5b5061060f613431565b3480156110a957600080fd5b5061060f600480360360208110156110c057600080fd5b50356001600160a01b0316613583565b60008111611113576040805162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b604482015290519081900360640190fd5b61111d828261369e565b5050565b60005b60085481101561117357336001600160a01b03166008828154811061114557fe5b6000918252602090912001546001600160a01b0316141561116b5750600b8190556111b1565b600101611124565b506040805162461bcd60e51b815260206004820152600d60248201526c1058d8d95cdcc819195b9a5959609a1b604482015290519081900360640190fd5b50565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156112405780601f1061121557610100808354040283529160200191611240565b820191906000526020600020905b81548152906001019060200180831161122357829003601f168201915b505050505090505b90565b600061125f61125861379a565b848461379e565b5060015b92915050565b600e54600a8054905060088054905001620f42400201306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b857600080fd5b505afa1580156112cc573d6000803e3d6000fd5b505050506040513d60208110156112e257600080fd5b505111611328576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1032b737bab3ba341028292360891b604482015290519081900360640190fd5b600060c8600e54306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561136857600080fd5b505afa15801561137c573d6000803e3d6000fd5b505050506040513d602081101561139257600080fd5b5051038161139c57fe5b04905060005b60085460ff821610156113f3576113eb60088260ff16815481106113c257fe5b6000918252602090912001546008546001600160a01b039091169084816113e557fe5b0461369e565b6001016113a2565b5060005b600a5460ff821610156114425761143a600a8260ff168154811061141757fe5b600091825260209091200154600a546001600160a01b039091169084816113e557fe5b6001016113f7565b50306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b5051600e5550565b60005b60085481101561117357336001600160a01b0316600882815481106114d257fe5b6000918252602090912001546001600160a01b0316141561153b576064821015611530576040805162461bcd60e51b815260206004820152600a60248201526957726f6e67207261746560b01b604482015290519081900360640190fd5b50600c8190556111b1565b6001016114b1565b60025490565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020611575903361247b565b6115b4576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b600780549115156101000261ff0019909216919091179055565b60006115db84848461388a565b611651846115e761379a565b61164c85604051806060016040528060288152602001614d4b602891396001600160a01b038a1660009081526001602052604081209061162561379a565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6139f116565b61379e565b5060019392505050565b60009081526006602052604090206002015490565b600080600080600080600e54306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b557600080fd5b505afa1580156116c9573d6000803e3d6000fd5b505050506040513d60208110156116df57600080fd5b5051116116ed576000611761565b6064600e54306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d602081101561175557600080fd5b5051038161175f57fe5b045b306000818152601260209081526040918290206001015482516370a0823160e01b8152600481018590529251949950938993926370a08231926024808301939192829003018186803b1580156117b657600080fd5b505afa1580156117ca573d6000803e3d6000fd5b505050506040513d60208110156117e057600080fd5b5051601054604080516370a0823160e01b8152306004820152905147926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182c57600080fd5b505afa158015611840573d6000803e3d6000fd5b505050506040513d602081101561185657600080fd5b5051600f54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156118a357600080fd5b505afa1580156118b7573d6000803e3d6000fd5b505050506040513d60208110156118cd57600080fd5b5051949b939a50919850965094509092509050565b60075460ff161561192d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600754610100900460ff1661197a576040805162461bcd60e51b815260206004820152600e60248201526d22aa2410313abc9034b99037b33360911b604482015290519081900360640190fd5b6000306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b505111611a28576040805162461bcd60e51b815260206004820152601260248201527114d95d08115512081c985d1948199a5c9cdd60721b604482015290519081900360640190fd5b6000670de0b6b3a7640000600c54306001600160a01b031663d2d93f906040518163ffffffff1660e01b815260040160206040518083038186803b158015611a6f57600080fd5b505afa158015611a83573d6000803e3d6000fd5b505050506040513d6020811015611a9957600080fd5b5051340260640281611aa757fe5b0481611aaf57fe5b0490506111b133826110d0565b600d5490565b600082815260066020526040902060020154611ae590611ae061379a565b61247b565b611b205760405162461bcd60e51b815260040180806020018281038252602f815260200180614c1b602f913960400191505060405180910390fd5b61111d8282613a88565b60055460ff1690565b611b3b61379a565b6001600160a01b0316816001600160a01b031614611b8a5760405162461bcd60e51b815260040180806020018281038252602f815260200180614e4d602f913960400191505060405180910390fd5b61111d8282613af7565b336000908152601260205260409020546001600160a01b031615611be95760405162461bcd60e51b8152600401808060200182810382526021815260200180614d736021913960400191505060405180910390fd5b33600090815260126020526040902080546001600160a01b03191630179055565b600061125f611c1761379a565b8461164c8560016000611c2861379a565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff613b6616565b600a8181548110611c6b57fe5b6000918252602090912001546001600160a01b0316905081565b6111b13382613bc0565b3360008181526012602090815260408083205481516370a0823160e01b81526004810195909552905192938493849384936001600160a01b03169230926370a0823192602480840193919291829003018186803b158015611cef57600080fd5b505afa158015611d03573d6000803e3d6000fd5b505050506040513d6020811015611d1957600080fd5b505133600090815260126020526040902080546001909101549297919650600160a01b900463ffffffff1694509092509050565b60115460408051632c9fe11f60e11b815290516000926001600160a01b03169163593fc23e916004808301926020929190829003018186803b158015611d9257600080fd5b505afa158015611da6573d6000803e3d6000fd5b505050506040513d6020811015611dbc57600080fd5b5051905090565b30600090815260126020526040902060010154611e27576040805162461bcd60e51b815260206004820152601a60248201527f54686973206163636f756e7420686173206e6f2050524f464954000000000000604482015290519081900360640190fd5b611e3030613cc8565b565b60075460ff1690565b600066038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b505110611eb6576000611f2b565b6509184e72a000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef657600080fd5b505afa158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611f2057600080fd5b505181611f2957fe5b045b905090565b600954600854600f54604080516370a0823160e01b8152306004820152905192909301670de0b6b3a764000002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015611f9057600080fd5b505afa158015611fa4573d6000803e3d6000fd5b505050506040513d6020811015611fba57600080fd5b505111612000576040805162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756774682044414960881b604482015290519081900360640190fd5b600f54604080516370a0823160e01b815230600482015290516000926002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561205157600080fd5b505afa158015612065573d6000803e3d6000fd5b505050506040513d602081101561207b57600080fd5b50518161208457fe5b04905060005b60085460ff821610156120f0576120e860088260ff16815481106120aa57fe5b6000918252602090912001546008546001600160a01b039091169084816120cd57fe5b600f546001600160a01b03169291900463ffffffff613d5d16565b60010161208a565b5060005b60095460ff8216101561111d5761213760098260ff168154811061211457fe5b6000918252602090912001546009546001600160a01b039091169084816120cd57fe5b6001016120f4565b336000908152601260205260409020600101546121a3576040805162461bcd60e51b815260206004820152601a60248201527f54686973206163636f756e7420686173206e6f2050524f464954000000000000604482015290519081900360640190fd5b611e3033613cc8565b60005b60085481101561117357336001600160a01b0316600882815481106121d057fe5b6000918252602090912001546001600160a01b031614156121f9576121f3613db4565b50611e30565b6001016121af565b6001600160a01b031660009081526020819052604090205490565b61222461379a565b60055461010090046001600160a01b0390811691161461228b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020612307903361247b565b612346576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b600c548111612389576040805162461bcd60e51b815260206004820152600a60248201526957726f6e67207261746560b01b604482015290519081900360640190fd5b600c55565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206123ba903361247b565b6123f9576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b6007805491151563010000000263ff00000019909216919091179055565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d01902081565b600c5490565b60055461010090046001600160a01b031690565b6000828152600660205260408120612474908363ffffffff613e5216565b9392505050565b6000828152600660205260408120612474908363ffffffff613e5e16565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156112405780601f1061121557610100808354040283529160200191611240565b60075460ff1615612545576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60075462010000900460ff16612596576040805162461bcd60e51b81526020600482015260116024820152702a32ba3432b910313abc9034b99037b33360791b604482015290519081900360640190fd5b6010546125b4906001600160a01b031633308463ffffffff613e7316565b6000600c5482606402816125c457fe5b04905061111d33826110d0565b60075460ff161561261c576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6007546301000000900460ff1661266b576040805162461bcd60e51b815260206004820152600e60248201526d2220a490313abc9034b99037b33360911b604482015290519081900360640190fd5b600f54612689906001600160a01b031633308463ffffffff613e7316565b600064e8d4a51000600c54836064028161269f57fe5b04816125c457fe5b600081565b600061125f6126b961379a565b8461164c85604051806060016040528060258152602001614e2860259139600160006126e361379a565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6139f116565b600954600854601054604080516370a0823160e01b8152306004820152905192909301620f424002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561277557600080fd5b505afa158015612789573d6000803e3d6000fd5b505050506040513d602081101561279f57600080fd5b5051116127e6576040805162461bcd60e51b815260206004820152601060248201526f139bdd08195b9bdd59dd1a081554d11560821b604482015290519081900360640190fd5b601054604080516370a0823160e01b815230600482015290516000926002926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561283757600080fd5b505afa15801561284b573d6000803e3d6000fd5b505050506040513d602081101561286157600080fd5b50518161286a57fe5b04905060005b60085460ff821610156128d6576128ce60088260ff168154811061289057fe5b6000918252602090912001546008546001600160a01b039091169084816128b357fe5b6010546001600160a01b03169291900463ffffffff613d5d16565b600101612870565b5060005b60095460ff8216101561111d5761291d60098260ff16815481106128fa57fe5b6000918252602090912001546009546001600160a01b039091169084816128b357fe5b6001016128da565b601260205260009081526040902080546001909101546001600160a01b03821691600160a01b900463ffffffff169083565b600061125f61296461379a565b848461388a565b6010546001600160a01b031681565b60005b60085481101561117357336001600160a01b03166008828154811061299e57fe5b6000918252602090912001546001600160a01b031614156129da5750601180546001600160a01b0319166001600160a01b0383161790556111b1565b60010161297d565b60075462010000900460ff1681565b600b5490565b600f546001600160a01b031681565b60098181548110611c6b57fe5b60005b60085481101561117357336001600160a01b031660088281548110612a3757fe5b6000918252602090912001546001600160a01b03161415612ac7576000600d5411612a935760405162461bcd60e51b8152600401808060200182810382526021815260200180614d0a6021913960400191505060405180910390fd5b600d54821115612aa357600d5491505b600d80548390039055600e805460648402019055612ac1838361369e565b5061111d565b600101612a16565b600754610100900460ff1681565b600854604080516370a0823160e01b815230600482018190529151620f42409093026305f5e10001926370a0823191602480820192602092909190829003018186803b158015612b2c57600080fd5b505afa158015612b40573d6000803e3d6000fd5b505050506040513d6020811015612b5657600080fd5b505111612b9c576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1032b737bab3ba341028292360891b604482015290519081900360640190fd5b60006305f5e100306001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612bf957600080fd5b505afa158015612c0d573d6000803e3d6000fd5b505050506040513d6020811015612c2357600080fd5b505103905060005b60085460ff8216101561111d57612c753060088360ff1681548110612c4c57fe5b6000918252602090912001546008546001600160a01b03909116908581612c6f57fe5b0461388a565b600101612c2b565b6011546001600160a01b031681565b600081815260066020526040812061126390613ed3565b6007546301000000900460ff1681565b60005b60085481101561117357336001600160a01b031660088281548110612cd757fe5b6000918252602090912001546001600160a01b03161415612cfa576121f3613ede565b600101612cb6565b60005b60085481101561117357336001600160a01b031660088281548110612d2657fe5b6000918252602090912001546001600160a01b03161415612f0c57600954831015612e71576001600160a01b038216612e2f5760005b60095460001901811015612dfc57838110612d9b5760098160010181548110612d8157fe5b6000918252602090912001546001600160a01b0316612dbe565b60098181548110612da857fe5b6000918252602090912001546001600160a01b03165b60098281548110612dcb57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101612d5c565b506009805480612e0857fe5b600082815260209020810160001990810180546001600160a01b0319169055019055612e6c565b8160098481548110612e3d57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b612ac1565b6001600160a01b038216612ebb576040805162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015290519081900360640190fd5b50600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b03831617905561111d565b600101612d05565b600080601160009054906101000a90046001600160a01b03166001600160a01b031663593fc23e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6557600080fd5b505afa158015612f79573d6000803e3d6000fd5b505050506040513d6020811015612f8f57600080fd5b5051600b5490915015612fb957600081118015612fad575080600b54115b612fb957600b54612fbb565b805b915050611248565b600082815260066020526040902060020154612fe190611ae061379a565b611b8a5760405162461bcd60e51b8152600401808060200182810382526030815260200180614cda6030913960400191505060405180910390fd5b60005b60085481101561117357336001600160a01b03166008828154811061304057fe5b6000918252602090912001546001600160a01b0316141561308d57604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206130879083611b8a565b506111b1565b60010161301f565b60088181548110611c6b57fe5b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206130ce903361247b565b61310d576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b60078054911515620100000262ff000019909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d019020613180903361247b565b6131bf576040805162461bcd60e51b815260206004820152601e6024820152600080516020614d2b833981519152604482015290519081900360640190fd5b80600b5411613202576040805162461bcd60e51b815260206004820152600a60248201526957726f6e67207261746560b01b604482015290519081900360640190fd5b600b55565b60005b60085481101561117357336001600160a01b03166008828154811061322b57fe5b6000918252602090912001546001600160a01b0316141561327257604080516c31b7b73a3930b1ba20b236b4b760991b8152905190819003600d0190206130879083611b20565b60010161320a565b60005b60085481101561117357336001600160a01b03166008828154811061329e57fe5b6000918252602090912001546001600160a01b0316141561342957600a5483101561338e576001600160a01b0382166133805760005b600a54600019018110156133745783811061331357600a81600101815481106132f957fe5b6000918252602090912001546001600160a01b0316613336565b600a818154811061332057fe5b6000918252602090912001546001600160a01b03165b600a828154811061334357fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001016132d4565b50600a805480612e0857fe5b81600a8481548110612e3d57fe5b6001600160a01b0382166133d8576040805162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b604482015290519081900360640190fd5b50600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b03831617905561111d565b60010161327d565b6009546008540166038d7ea4c68000024711613486576040805162461bcd60e51b815260206004820152600f60248201526e09cdee840cadcdeeacee8d0408aa89608b1b604482015290519081900360640190fd5b6002470460005b60085460ff821610156135065760088160ff16815481106134aa57fe5b6000918252602090912001546008546001600160a01b03909116906108fc9084816134d157fe5b049081150290604051600060405180830381858888f193505050501580156134fd573d6000803e3d6000fd5b5060010161348d565b5060005b60095460ff8216101561111d5760098160ff168154811061352757fe5b6000918252602090912001546009546001600160a01b03909116906108fc90848161354e57fe5b049081150290604051600060405180830381858888f1935050505015801561357a573d6000803e3d6000fd5b5060010161350a565b61358b61379a565b60055461010090046001600160a01b039081169116146135f2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166136375760405162461bcd60e51b8152600401808060200182810382526026815260200180614c6c6026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b0382166136f9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61370560008383613f5f565b600254613718908263ffffffff613b6616565b6002556001600160a01b038216600090815260208190526040902054613744908263ffffffff613b6616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b3390565b6001600160a01b0383166137e35760405162461bcd60e51b8152600401808060200182810382526024815260200180614dda6024913960400191505060405180910390fd5b6001600160a01b0382166138285760405162461bcd60e51b8152600401808060200182810382526022815260200180614c926022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166138cf5760405162461bcd60e51b8152600401808060200182810382526025815260200180614db56025913960400191505060405180910390fd5b6001600160a01b0382166139145760405162461bcd60e51b8152600401808060200182810382526023815260200180614bf86023913960400191505060405180910390fd5b61391f838383613f5f565b61396281604051806060016040528060268152602001614cb4602691396001600160a01b038616600090815260208190526040902054919063ffffffff6139f116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613997908263ffffffff613b6616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115613a805760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613a45578181015183820152602001613a2d565b50505050905090810190601f168015613a725780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828152600660205260409020613aa6908263ffffffff61415416565b1561111d57613ab361379a565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600660205260409020613b15908263ffffffff61416916565b1561111d57613b2261379a565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600082820183811015612474576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038216613c055760405162461bcd60e51b8152600401808060200182810382526021815260200180614d946021913960400191505060405180910390fd5b613c1182600083613f5f565b613c5481604051806060016040528060228152602001614c4a602291396001600160a01b038516600090815260208190526040902054919063ffffffff6139f116565b6001600160a01b038316600090815260208190526040902055600254613c80908263ffffffff61417e16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0381166000908152601260205260409020600101548015613d10576001600160a01b038216600090815260126020526040812060010155613d10828261369e565b6040805163ffffffff421681526020810183905281516001600160a01b038516927f5c3b354425d92880121d42eb89725f341147fa6da780add8db203d5b63f434d8928290030190a25050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613daf9084906141c0565b505050565b60075460ff1615613dff576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613e3561379a565b604080516001600160a01b039092168252519081900360200190a1565b60006124748383614378565b6000612474836001600160a01b0384166143dc565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613ecd9085906141c0565b50505050565b6000611263826143f4565b60075460ff16613f2c576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613e3561379a565b6001600160a01b03831615613fd2576000613f79846143f8565b9050600081118015613fa457506001600160a01b038481166000908152601260205260409020541615155b15613fd0576001600160a01b03808516600090815260126020526040902054613fce9116826147c8565b505b505b816001600160a01b0316836001600160a01b03161461414b576000613ff6836143f8565b905060008111801561402157506001600160a01b038381166000908152601260205260409020541615155b1561404d576001600160a01b0380841660009081526012602052604090205461404b9116826147c8565b505b6001600160a01b038381166000908152601260205260409020541615801561407d57506001600160a01b03841615155b80156140a657506001600160a01b03848116600090815260126020526040902054811690841614155b80156140b25750600082115b156140e6576001600160a01b03838116600090815260126020526040902080546001600160a01b0319169186169190911790555b6001600160a01b038316600090815260126020526040902054600160a01b900463ffffffff16614145576001600160a01b0383166000908152601260205260409020805463ffffffff60a01b1916600160a01b4263ffffffff16021790555b50613daf565b613daf83613cc8565b6000612474836001600160a01b038416614a89565b6000612474836001600160a01b038416614ad3565b600061247483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506139f1565b6141d2826001600160a01b0316614b99565b614223576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106142615780518252601f199092019160209182019101614242565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142c3576040519150601f19603f3d011682016040523d82523d6000602084013e6142c8565b606091505b50915091508161431f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115613ecd5780806020019051602081101561433b57600080fd5b5051613ecd5760405162461bcd60e51b815260040180806020018281038252602a815260200180614dfe602a913960400191505060405180910390fd5b815460009082106143ba5760405162461bcd60e51b8152600401808060200182810382526022815260200180614bd66022913960400191505060405180910390fd5b8260000182815481106143c957fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b604080516370a0823160e01b81526001600160a01b03831660048201529051600091829130916370a08231916024808301926020929190829003018186803b15801561444357600080fd5b505afa158015614457573d6000803e3d6000fd5b505050506040513d602081101561446d57600080fd5b50516001600160a01b038416600090815260126020526040902054909150600160a01b900463ffffffff1642036298968082108015906144ad5750600081115b1561478d5760006298968083101580156144ca57506305f5e10083105b156144d35750600a5b6305f5e10083101580156144ea5750631dcd650083105b156144f35750600d5b631dcd6500831015801561450a5750633b9aca0083105b15614513575060115b633b9aca00831015801561452b575064012a05f20083105b15614534575060165b64012a05f200831015801561454d57506402540be40083105b156145565750601c5b6402540be400831015801561456f5750640ba43b740083105b15614578575060235b640ba43b74008310158015614591575064174876e80083105b1561459a5750602b5b64174876e80083101580156145b3575064746a52880083105b156145bc575060345b64746a52880083101580156145d5575064e8d4a5100083105b156145de5750603e5b620f4240610360848402830204049350831561478b576000620186a0610a2085850204049050600066038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561464757600080fd5b505afa15801561465b573d6000803e3d6000fd5b505050506040513d602081101561467157600080fd5b50511061467f5760006146f7565b66038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156146c057600080fd5b505afa1580156146d4573d6000803e3d6000fd5b505050506040513d60208110156146ea57600080fd5b50518702816146f557fe5b045b905080860395508186101561470a578195505b6001600160a01b03871660009081526012602090815260409182902060010180548901908190558251888152918201879052818301869052606082018590526080820184905260a0820189905260c082015290517f992c77e9023dae2c0e76d2ebafc0819feb6b58ec9257ea5604347fa44e4a48989181900360e00190a150505b505b50506001600160a01b03919091166000908152601260205260409020805463ffffffff60a01b1916600160a01b4263ffffffff160217905590565b604080516370a0823160e01b81526001600160a01b03841660048201529051600091829130916370a08231916024808301926020929190829003018186803b15801561481357600080fd5b505afa158015614827573d6000803e3d6000fd5b505050506040513d602081101561483d57600080fd5b505190506305f5e1008110801590614859575064e8d4a5100081105b15614a825760006305f5e10082101580156148775750633b9aca0082105b1561488157506102085b633b9aca00821015801561489957506402540be40082105b156148a357506102ee5b6402540be40082101580156148bc575064174876e80082105b156148c657506105005b64174876e80082101580156148df575064e8d4a5100082105b156148e95750610a5a5b6127108482020492506000606485049050600066038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561493d57600080fd5b505afa158015614951573d6000803e3d6000fd5b505050506040513d602081101561496757600080fd5b5051106149755760006149ed565b66038d7ea4c68000306001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156149b657600080fd5b505afa1580156149ca573d6000803e3d6000fd5b505050506040513d60208110156149e057600080fd5b50518602816149eb57fe5b045b9050808503945081851015614a00578194505b6001600160a01b03871660009081526012602090815260409182902060010180548801908190558251878152918201899052818301869052606082018590526080820184905260a0820188905260c082015290517fa4e39e22bae2162d394efee88969c1c784052966f3130b268fe4dd501f2797bb9181900360e00190a15050505b5092915050565b6000614a9583836143dc565b614acb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611263565b506000611263565b60008181526001830160205260408120548015614b8f5783546000198083019190810190600090879083908110614b0657fe5b9060005260206000200154905080876000018481548110614b2357fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614b5357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611263565b6000915050611263565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590614bcd57508115155b94935050505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65496e69746974616c20626f756e7479206973206f7665722032303030302050524643616c6c6572206973206e6f74206120434f4e54524143542041444d494e000045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365596f75722072656665727265722077696c6c206e6f7420756e6465727374616e6445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220259586f1027408fccb4643f700e7df470bae1e31722ca5b26221aa756475936564736f6c63430006060033
Deployed Bytecode Sourcemap
17098:15153:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16598:7;;;;16597:8;16589:37;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;;;;23223:8:::1;::::0;::::1;::::0;::::1;;;23215:35;;;::::0;;-1:-1:-1;;;23215:35:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23215:35:0;;;;;;;;;;;;;::::1;;23286:1;23269:4;-1:-1:-1::0;;;;;23269:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23269:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23269:14:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23269:14:0;:18:::1;23261:49;;;::::0;;-1:-1:-1;;;23261:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23261:49:0;;;;;;;;;;;;;::::1;;23321:14;23384:4;23373:8;;23350:4;-1:-1:-1::0;;;;;23350:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23350:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23350:14:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23350:14:0;23338:9:::1;:26;23367:3;23338:32;:43:::0;::::1;;;;;:50;;;;;;23321:67;;23399:24;23404:10;23416:6;23399:4;:24::i;:::-;16637:1;17098:15153:::0;;12:1:-1;9;2:12;24362:101:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24362:101:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24362:101:0;;:::i;:::-;;1629:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1629:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1629:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2477:169;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2477:169:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2477:169:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;27455:532;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27455:532:0;;;:::i;25965:141::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25965:141:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25965:141:0;;:::i;1908:100::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1908:100:0;;;:::i;:::-;;;;;;;;;;;;;;;;23898:168;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23898:168:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23898:168:0;;;;:::i;2652:321::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2652:321:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2652:321:0;;;;;;;;;;;;;;;;;:::i;14635:114::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14635:114:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14635:114:0;;:::i;29747:428::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29747:428:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24072:284;;;:::i;29488:109::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29488:109:0;;;:::i;14755:225::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14755:225:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14755:225:0;;;;;;-1:-1:-1;;;;;14755:225:0;;:::i;1819:83::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1819:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15220:207;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15220:207:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15220:207:0;;;;;;-1:-1:-1;;;;;15220:207:0;;:::i;30458:204::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30458:204:0;;;:::i;2979:218::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2979:218:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2979:218:0;;;;;;;;:::i;17558:25::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17558:25:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17558:25:0;;:::i;:::-;;;;-1:-1:-1;;;;;17558:25:0;;;;;;;;;;;;;;32164:84;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32164:84:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32164:84:0;;:::i;30181:271::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30181:271:0;;;:::i;:::-;;;;-1:-1:-1;;;;;30181:271:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24838:111;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24838:111:0;;;:::i;26600:161::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26600:161:0;;;:::i;16469:78::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16469:78:0;;;:::i;29603:138::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29603:138:0;;;:::i;28984:498::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28984:498:0;;;:::i;26431:157::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26431:157:0;;;:::i;31769:68::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31769:68:0;;;:::i;2014:119::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2014:119:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2014:119:0;-1:-1:-1;;;;;2014:119:0;;:::i;10123:148::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10123:148:0;;;:::i;26112:219::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26112:219:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26112:219:0;;:::i;25058:168::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25058:168:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25058:168:0;;;;:::i;17318:66::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17318:66:0;;;:::i;26337:84::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26337:84:0;;;:::i;9913:79::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9913:79:0;;;:::i;14491:138::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14491:138:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14491:138:0;;;;;;;:::i;14213:139::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14213:139:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14213:139:0;;;;;;-1:-1:-1;;;;;14213:139:0;;:::i;1722:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1722:87:0;;;:::i;25687:272::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25687:272:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25687:272:0;;:::i;25232:273::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25232:273:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25232:273:0;;:::i;13851:49::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13851:49:0;;;:::i;3203:269::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3203:269:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;3203:269:0;;;;;;;;:::i;28469:505::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28469:505:0;;;:::i;18370:37::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18370:37:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18370:37:0;-1:-1:-1;;;;;18370:37:0;;:::i;:::-;;;;-1:-1:-1;;;;;18370:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;2139:175;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2139:175:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2139:175:0;;;;;;;;:::i;17838:76::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17838:76:0;;;:::i;24712:120::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24712:120:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24712:120:0;-1:-1:-1;;;;;24712:120:0;;:::i;17425:28::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17425:28:0;;;:::i;24955:97::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24955:97:0;;;:::i;17756:75::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17756:75:0;;;:::i;17526:25::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17526:25:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17526:25:0;;:::i;27122:327::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27122:327:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;27122:327:0;;;;;;;;:::i;17391:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17391:27:0;;;:::i;26770:342::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26770:342:0;;;:::i;17921:100::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17921:100:0;;;:::i;14358:127::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14358:127:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14358:127:0;;:::i;17460:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17460:27:0;;;:::i;31843:71::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31843:71:0;;;:::i;31218:545::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31218:545:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31218:545:0;;;;;;-1:-1:-1;;;;;31218:545:0;;:::i;23589:303::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23589:303:0;;;:::i;14986:228::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14986:228:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14986:228:0;;;;;;-1:-1:-1;;;;;14986:228:0;;:::i;31920:114::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31920:114:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31920:114:0;-1:-1:-1;;;;;31920:114:0;;:::i;17494:25::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17494:25:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17494:25:0;;:::i;25511:170::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25511:170:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25511:170:0;;;;:::i;2320:151::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2320:151:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2320:151:0;;;;;;;;;;:::i;24469:233::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24469:233:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24469:233:0;;:::i;32040:114::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32040:114:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;32040:114:0;-1:-1:-1;;;;;32040:114:0;;:::i;30668:544::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30668:544:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30668:544:0;;;;;;-1:-1:-1;;;;;30668:544:0;;:::i;27993:466::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27993:466:0;;;:::i;10277:244::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10277:244:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10277:244:0;-1:-1:-1;;;;;10277:244:0;;:::i;23437:146::-;23523:1;23513:7;:11;23505:35;;;;;-1:-1:-1;;;23505:35:0;;;;;;;;;;;;-1:-1:-1;;;23505:35:0;;;;;;;;;;;;;;;23551:24;23557:8;23567:7;23551:5;:24::i;:::-;23437:146;;:::o;24362:101::-;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;-1:-1:-1;24431:15:0::1;:24:::0;;;18578:7;;18509:91;18489:3;;18449:162;;;-1:-1:-1;18621:23:0;;;-1:-1:-1;;;18621:23:0;;;;;;;;;;;;-1:-1:-1;;;18621:23:0;;;;;;;;;;;;;;24362:101;;:::o;1629:83::-;1699:5;1692:12;;;;;;;;-1:-1:-1;;1692:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:13;;1692:12;;1699:5;;1692:12;;1699:5;1692:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1629:83;;:::o;2477:169::-;2560:4;2577:39;2586:12;:10;:12::i;:::-;2600:7;2609:6;2577:8;:39::i;:::-;-1:-1:-1;2634:4:0;2477:169;;;;;:::o;27455:532::-;27571:17;;27546:8;:15;;;;27528:8;:15;;;;:33;27565:3;27527:41;:61;27506:4;-1:-1:-1;;;;;27506:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27506:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27506:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27506:18:0;:82;27498:110;;;;;-1:-1:-1;;;27498:110:0;;;;;;;;;;;;-1:-1:-1;;;27498:110:0;;;;;;;;;;;;;;;27619:14;27679:3;27658:17;;27637:4;-1:-1:-1;;;;;27637:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27637:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27637:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27637:18:0;:38;27636:46;;;;;;;-1:-1:-1;27697:7:0;27693:114;27714:8;:15;27710:19;;;;27693:114;;;27751:44;27757:8;27766:1;27757:11;;;;;;;;;;;;;;;;;;;;27779:8;:15;-1:-1:-1;;;;;27757:11:0;;;;27770:6;27779:15;27770:24;;;;;27751:5;:44::i;:::-;27731:3;;27693:114;;;-1:-1:-1;27821:7:0;27817:114;27838:8;:15;27834:19;;;;27817:114;;;27875:44;27881:8;27890:1;27881:11;;;;;;;;;;;;;;;;;;;;27903:8;:15;-1:-1:-1;;;;;27881:11:0;;;;27894:6;27903:15;27894:24;;;27875:44;27855:3;;27817:114;;;;27961:4;-1:-1:-1;;;;;27961:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27961:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27961:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;27961:18:0;27941:17;:38;-1:-1:-1;27455:532:0:o;25965:141::-;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;26052:3:::1;26042:6;:13;;26034:36;;;::::0;;-1:-1:-1;;;26034:36:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26034:36:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;26081:8:0::1;:17:::0;;;18578:7;;18509:91;18489:3;;18449:162;;1908:100;1988:12;;1908:100;:::o;23898:168::-;17358:26;;;-1:-1:-1;;;17358:26:0;;;;;;;;;;;;23961:34;;23984:10;23961:7;:34::i;:::-;23953:77;;;;;-1:-1:-1;;;23953:77:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23953:77:0;;;;;;;;;;;;;;;24041:8;:17;;;;;;;-1:-1:-1;;24041:17:0;;;;;;;;;23898:168::o;2652:321::-;2758:4;2775:36;2785:6;2793:9;2804:6;2775:9;:36::i;:::-;2822:121;2831:6;2839:12;:10;:12::i;:::-;2853:89;2891:6;2853:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2853:19:0;;;;;;:11;:19;;;;;;2873:12;:10;:12::i;:::-;-1:-1:-1;;;;;2853:33:0;;;;;;;;;;;;-1:-1:-1;2853:33:0;;;:89;;:37;:89;:::i;:::-;2822:8;:121::i;:::-;-1:-1:-1;2961:4:0;2652:321;;;;;:::o;14635:114::-;14692:7;14719:12;;;:6;:12;;;;;:22;;;;14635:114::o;29747:428::-;29788:12;29802:14;29818:11;29831;29844:12;29858:11;29912:17;;29891:4;-1:-1:-1;;;;;29891:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29891:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29891:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29891:18:0;:38;:91;;29981:1;29891:91;;;29975:3;29954:17;;29933:4;-1:-1:-1;;;;;29933:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29933:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29933:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29933:18:0;:38;29932:46;;;;;;29891:91;30015:4;30001:20;;;;:5;:20;;;;;;;;;:32;;;30043:29;;-1:-1:-1;;;30043:29:0;;;;;;;;;;29882:100;;-1:-1:-1;30001:32:0;29882:100;;30015:4;30043:14;;:29;;;;;30001:20;;30043:29;;;;;30015:4;30043:29;;;2:2:-1;;;;27:1;24;17:12;2:2;30043:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30043:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30043:29:0;30097:9;;:34;;;-1:-1:-1;;;30097:34:0;;30125:4;30097:34;;;;;;30074:21;;-1:-1:-1;;;;;30097:9:0;;:19;;:34;;;;;30043:29;;30097:34;;;;;;;:9;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;30097:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30097:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30097:34:0;30133:8;;:33;;;-1:-1:-1;;;30133:33:0;;30160:4;30133:33;;;;;;-1:-1:-1;;;;;30133:8:0;;;;:18;;:33;;;;;30097:34;;30133:33;;;;;;;;:8;:33;;;2:2:-1;;;;27:1;24;17:12;2:2;30133:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30133:33:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30133:33:0;29993:174;;;;-1:-1:-1;29993:174:0;;-1:-1:-1;29993:174:0;-1:-1:-1;29993:174:0;-1:-1:-1;30133:33:0;;-1:-1:-1;29747:428:0;-1:-1:-1;29747:428:0:o;24072:284::-;16598:7;;;;16597:8;16589:37;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;;;;24140:8:::1;::::0;::::1;::::0;::::1;;;24132:35;;;::::0;;-1:-1:-1;;;24132:35:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24132:35:0;;;;;;;;;;;;;::::1;;24203:1;24186:4;-1:-1:-1::0;;;;;24186:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24186:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24186:14:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;24186:14:0;:18:::1;24178:49;;;::::0;;-1:-1:-1;;;24178:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24178:49:0;;;;;;;;;;;;;::::1;;24246:14;24309:4;24298:8;;24275:4;-1:-1:-1::0;;;;;24275:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;24275:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;24275:14:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;24275:14:0;24263:9:::1;:26;24292:3;24263:32;:43:::0;::::1;;;;;:50;;;;;;24246:67;;24324:24;24329:10;24341:6;24324:4;:24::i;29488:109::-:0;29574:14;;29488:109;:::o;14755:225::-;14847:12;;;;:6;:12;;;;;:22;;;14839:45;;14871:12;:10;:12::i;:::-;14839:7;:45::i;:::-;14831:105;;;;-1:-1:-1;;;14831:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:25;14958:4;14964:7;14947:10;:25::i;1819:83::-;1885:9;;;;1819:83;:::o;15220:207::-;15318:12;:10;:12::i;:::-;-1:-1:-1;;;;;15307:23:0;:7;-1:-1:-1;;;;;15307:23:0;;15299:83;;;;-1:-1:-1;;;15299:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15393:26;15405:4;15411:7;15393:11;:26::i;30458:204::-;30521:10;30557:1;30515:17;;;:5;:17;;;;;:30;-1:-1:-1;;;;;30515:30:0;:44;30507:90;;;;-1:-1:-1;;;30507:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30614:10;30608:17;;;;:5;:17;;;;;:46;;-1:-1:-1;;;;;;30608:46:0;30649:4;30608:46;;;30458:204::o;2979:218::-;3067:4;3084:83;3093:12;:10;:12::i;:::-;3107:7;3116:50;3155:10;3116:11;:25;3128:12;:10;:12::i;:::-;-1:-1:-1;;;;;3116:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;3116:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;17558:25::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17558:25:0;;-1:-1:-1;17558:25:0;:::o;32164:84::-;32214:26;32220:10;32232:7;32214:5;:26::i;30181:271::-;30324:10;30223:15;30318:17;;;:5;:17;;;;;;;;:30;30350:26;;-1:-1:-1;;;30350:26:0;;;;;;;;;;;30223:15;;;;;;;;-1:-1:-1;;;;;30318:30:0;;30350:4;;:14;;:26;;;;;30318:17;;30350:26;;;;;;:4;:26;;;2:2:-1;;;;27:1;24;17:12;2:2;30350:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30350:26:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30350:26:0;30384:10;30378:17;;;;:5;30350:26;30378:17;;;;:34;;30414:29;;;;;30310:134;;30350:26;;-1:-1:-1;;;;30378:34:0;;;;;-1:-1:-1;30414:29:0;;-1:-1:-1;30181:271:0;-1:-1:-1;30181:271:0:o;24838:111::-;24913:13;;:28;;;-1:-1:-1;;;24913:28:0;;;;24886:7;;-1:-1:-1;;;;;24913:13:0;;:26;;:28;;;;;;;;;;;;;;:13;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;24913:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24913:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24913:28:0;;-1:-1:-1;24838:111:0;:::o;26600:161::-;26661:4;26682:1;26647:20;;;:5;:20;;;;;:32;;;26639:75;;;;;-1:-1:-1;;;26639:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26725:28;26747:4;26725:13;:28::i;:::-;26600:161::o;16469:78::-;16532:7;;;;16469:78;:::o;29603:138::-;29644:11;29697:4;29676;-1:-1:-1;;;;;29676:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29676:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29676:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29676:18:0;:25;:57;;29732:1;29676:57;;;29725:4;29704;-1:-1:-1;;;;;29704:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29704:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29704:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29704:18:0;:25;;;;;;29676:57;29668:65;;29603:138;:::o;28984:498::-;29086:8;:15;29068:8;:15;29031:8;;:33;;;-1:-1:-1;;;29031:33:0;;29058:4;29031:33;;;;;;29068;;;;29105:4;29067:42;;-1:-1:-1;;;;;29031:8:0;;;;:18;;:33;;;;;;;;;;;;;;;:8;:33;;;2:2:-1;;;;27:1;24;17:12;2:2;29031:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29031:33:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29031:33:0;:78;29023:106;;;;;-1:-1:-1;;;29023:106:0;;;;;;;;;;;;-1:-1:-1;;;29023:106:0;;;;;;;;;;;;;;;29157:8;;:33;;;-1:-1:-1;;;29157:33:0;;29184:4;29157:33;;;;;;29140:14;;29193:1;;-1:-1:-1;;;;;29157:8:0;;;;:18;;:33;;;;;;;;;;;;;;;:8;:33;;;2:2:-1;;;;27:1;24;17:12;2:2;29157:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29157:33:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;29157:33:0;:37;;;;;;;-1:-1:-1;29209:7:0;29205:130;29226:8;:15;29222:19;;;;29205:130;;;29263:60;29285:8;29294:1;29285:11;;;;;;;;;;;;;;;;;;;;29307:8;:15;-1:-1:-1;;;;;29285:11:0;;;;29298:6;29307:15;29298:24;;;;29263:8;;-1:-1:-1;;;;;29263:8:0;;:60;29298:24;;29263:60;:21;:60;:::i;:::-;29243:3;;29205:130;;;-1:-1:-1;29349:7:0;29345:130;29366:8;:15;29362:19;;;;29345:130;;;29403:60;29425:8;29434:1;29425:11;;;;;;;;;;;;;;;;;;;;29447:8;:15;-1:-1:-1;;;;;29425:11:0;;;;29438:6;29447:15;29438:24;;;29403:60;29383:3;;29345:130;;26431:157;26486:10;26512:1;26480:17;;;:5;:17;;;;;:29;;;26472:72;;;;;-1:-1:-1;;;26472:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26555:25;26569:10;26555:13;:25::i;31769:68::-;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;31821:8:::1;:6;:8::i;:::-;18578:7:::0;;;18509:91;18489:3;;18449:162;;2014:119;-1:-1:-1;;;;;2107:18:0;2080:7;2107:18;;;;;;;;;;;;2014:119::o;10123:148::-;10048:12;:10;:12::i;:::-;10038:6;;;;;-1:-1:-1;;;;;10038:6:0;;;:22;;;10030:67;;;;;-1:-1:-1;;;10030:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10214:6:::1;::::0;10193:40:::1;::::0;10230:1:::1;::::0;10214:6:::1;::::0;::::1;-1:-1:-1::0;;;;;10214:6:0::1;::::0;10193:40:::1;::::0;10230:1;;10193:40:::1;10244:6;:19:::0;;-1:-1:-1;;;;;;10244:19:0::1;::::0;;10123:148::o;26112:219::-;17358:26;;;-1:-1:-1;;;17358:26:0;;;;;;;;;;;;26175:34;;26198:10;26175:7;:34::i;:::-;26167:77;;;;;-1:-1:-1;;;26167:77:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;26167:77:0;;;;;;;;;;;;;;;26272:8;;26263:6;:17;26255:40;;;;;-1:-1:-1;;;26255:40:0;;;;;;;;;;;;-1:-1:-1;;;26255:40:0;;;;;;;;;;;;;;;26306:8;:17;26112:219::o;25058:168::-;17358:26;;;-1:-1:-1;;;17358:26:0;;;;;;;;;;;;25121:34;;25144:10;25121:7;:34::i;:::-;25113:77;;;;;-1:-1:-1;;;25113:77:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25113:77:0;;;;;;;;;;;;;;;25201:8;:17;;;;;;;-1:-1:-1;;25201:17:0;;;;;;;;;25058:168::o;17318:66::-;17358:26;;;-1:-1:-1;;;17358:26:0;;;;;;;;;;;;17318:66;:::o;26337:84::-;26405:8;;26337:84;:::o;9913:79::-;9978:6;;;;;-1:-1:-1;;;;;9978:6:0;;9913:79::o;14491:138::-;14564:7;14591:12;;;:6;:12;;;;;:30;;14615:5;14591:30;:23;:30;:::i;:::-;14584:37;14491:138;-1:-1:-1;;;14491:138:0:o;14213:139::-;14282:4;14306:12;;;:6;:12;;;;;:38;;14336:7;14306:38;:29;:38;:::i;1722:87::-;1794:7;1787:14;;;;;;;;-1:-1:-1;;1787:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1761:13;;1787:14;;1794:7;;1787:14;;1794:7;1787:14;;;;;;;;;;;;;;;;;;;;;;;;25687:272;16598:7;;;;16597:8;16589:37;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;;;;25762:9:::1;::::0;;;::::1;;;25754:39;;;::::0;;-1:-1:-1;;;25754:39:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25754:39:0;;;;;;;;;;;;;::::1;;25804:9;::::0;:61:::1;::::0;-1:-1:-1;;;;;25804:9:0::1;25831:10;25851:4;25858:6:::0;25804:61:::1;:26;:61;:::i;:::-;25876:14;25908:8;;25893:6;25902:3;25893:12;:23;;;;;;25876:40;;25927:24;25932:10;25944:6;25927:4;:24::i;25232:273::-:0;16598:7;;;;16597:8;16589:37;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;;;;25306:8:::1;::::0;;;::::1;;;25298:35;;;::::0;;-1:-1:-1;;;25298:35:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;25298:35:0;;;;;;;;;;;;;::::1;;25344:8;::::0;:60:::1;::::0;-1:-1:-1;;;;;25344:8:0::1;25370:10;25390:4;25397:6:::0;25344:60:::1;:25;:60;:::i;:::-;25415:14;25458:4;25447:8;;25432:6;25441:3;25432:12;:23;;;;;;:30;;;;13851:49:::0;13896:4;13851:49;:::o;3203:269::-;3296:4;3313:129;3322:12;:10;:12::i;:::-;3336:7;3345:96;3384:15;3345:96;;;;;;;;;;;;;;;;;:11;:25;3357:12;:10;:12::i;:::-;-1:-1:-1;;;;;3345:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;3345:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;28469:505::-;28575:8;:15;28557:8;:15;28519:9;;:34;;;-1:-1:-1;;;28519:34:0;;28547:4;28519:34;;;;;;28557:33;;;;28594:3;28556:41;;-1:-1:-1;;;;;28519:9:0;;;;:19;;:34;;;;;;;;;;;;;;;:9;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;28519:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28519:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28519:34:0;:78;28511:107;;;;;-1:-1:-1;;;28511:107:0;;;;;;;;;;;;-1:-1:-1;;;28511:107:0;;;;;;;;;;;;;;;28646:9;;:34;;;-1:-1:-1;;;28646:34:0;;28674:4;28646:34;;;;;;28629:14;;28683:1;;-1:-1:-1;;;;;28646:9:0;;;;:19;;:34;;;;;;;;;;;;;;;:9;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;28646:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28646:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;28646:34:0;:38;;;;;;;-1:-1:-1;28699:7:0;28695:131;28716:8;:15;28712:19;;;;28695:131;;;28753:61;28776:8;28785:1;28776:11;;;;;;;;;;;;;;;;;;;;28798:8;:15;-1:-1:-1;;;;;28776:11:0;;;;28789:6;28798:15;28789:24;;;;28753:9;;-1:-1:-1;;;;;28753:9:0;;:61;28789:24;;28753:61;:22;:61;:::i;:::-;28733:3;;28695:131;;;-1:-1:-1;28840:7:0;28836:131;28857:8;:15;28853:19;;;;28836:131;;;28894:61;28917:8;28926:1;28917:11;;;;;;;;;;;;;;;;;;;;28939:8;:15;-1:-1:-1;;;;;28917:11:0;;;;28930:6;28939:15;28930:24;;;28894:61;28874:3;;28836:131;;18370:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18370:37:0;;;-1:-1:-1;;;18370:37:0;;;;;;:::o;2139:175::-;2225:4;2242:42;2252:12;:10;:12::i;:::-;2266:9;2277:6;2242:9;:42::i;17838:76::-;;;-1:-1:-1;;;;;17838:76:0;;:::o;24712:120::-;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;-1:-1:-1;24783:13:0::1;:41:::0;;-1:-1:-1;;;;;;24783:41:0::1;-1:-1:-1::0;;;;;24783:41:0;::::1;;::::0;;18578:7;;18509:91;18489:3;;18449:162;;17425:28;;;;;;;;;:::o;24955:97::-;25029:15;;24955:97;:::o;17756:75::-;;;-1:-1:-1;;;;;17756:75:0;;:::o;17526:25::-;;;;;;;;;;27122:327;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;27232:1:::1;27215:14;;:18;27207:64;;;;-1:-1:-1::0;;;27207:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27294:14;;27285:6;:23;27282:51;;;27319:14;;27310:23;;27282:51;27344:14;:24:::0;;;;::::1;::::0;;27379:17:::1;:33:::0;;27409:3:::1;27400:12:::0;::::1;27379:33;::::0;;27423:18:::1;27429:3:::0;27362:6;27423:5:::1;:18::i;:::-;18578:7:::0;;;18509:91;18489:3;;18449:162;;17391:27;;;;;;;;;:::o;26770:342::-;26851:8;:15;26819:29;;;-1:-1:-1;;;26819:29:0;;:4;:29;;;;;;;;26869:3;26851:21;;;26875:3;26851:27;;26819:14;;:29;;;;;;;;;;;;;;;:4;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;26819:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26819:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26819:29:0;:59;26811:87;;;;;-1:-1:-1;;;26811:87:0;;;;;;;;;;;;-1:-1:-1;;;26811:87:0;;;;;;;;;;;;;;;26909:14;26958:3;26926:4;-1:-1:-1;;;;;26926:14:0;;26949:4;26926:29;;;;;;;;;;;;;-1:-1:-1;;;;;26926:29:0;-1:-1:-1;;;;;26926:29:0;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26926:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26926:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;26926:29:0;:35;;-1:-1:-1;26976:7:0;26972:133;26993:8;:15;26989:19;;;;26972:133;;;27030:63;27048:4;27055:8;27064:1;27055:11;;;;;;;;;;;;;;;;;;;;27077:8;:15;-1:-1:-1;;;;;27055:11:0;;;;27068:6;27077:15;27068:24;;;;;27030:9;:63::i;:::-;27010:3;;26972:133;;17921:100;;;-1:-1:-1;;;;;17921:100:0;;:::o;14358:127::-;14421:7;14448:12;;;:6;:12;;;;;:29;;:27;:29::i;17460:27::-;;;;;;;;;:::o;31843:71::-;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;31896:10:::1;:8;:10::i;18509:91::-:0;18489:3;;18449:162;;31218:545;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;31309:8:::1;:15:::0;:24;-1:-1:-1;31306:450:0::1;;;-1:-1:-1::0;;;;;31353:22:0;::::1;31350:276;;31400:9;31396:149;31419:8;:15:::0;-1:-1:-1;;31419:19:0;31415:23;::::1;31396:149;;;31487:6;31483:1;:10;:42;;31510:8;31519:1;31523;31519:5;31510:15;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;31510:15:0::1;31483:42;;;31496:8;31505:1;31496:11;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;31496:11:0::1;31483:42;31468:8;31477:1;31468:11;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:57:::0;;-1:-1:-1;;;;;;31468:57:0::1;-1:-1:-1::0;;;;;31468:57:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;31440:3:0::1;31396:149;;;;31563:8;:14;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;31563:14:0;;;;;-1:-1:-1;;;;;;31563:14:0::1;::::0;;;;;31350:276:::1;;;31618:8;31599;31608:6;31599:16;;;;;;;;;;;;;;;;:27;;;;;-1:-1:-1::0;;;;;31599:27:0::1;;;;;-1:-1:-1::0;;;;;31599:27:0::1;;;;;;31350:276;31306:450;;;-1:-1:-1::0;;;;;31667:22:0;::::1;31659:47;;;::::0;;-1:-1:-1;;;31659:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31659:47:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;31721:8:0::1;27:10:-1::0;;39:1:::1;23:18:::0;::::1;45:23:::0;;-1:-1;31721:23:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;31721:23:0::1;-1:-1:-1::0;;;;;31721:23:0;::::1;;::::0;;18578:7;;18509:91;18489:3;;18449:162;;23589:303;23630:7;23650:16;23669:13;;;;;;;;;-1:-1:-1;;;;;23669:13:0;-1:-1:-1;;;;;23669:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23669:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23669:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23669:28:0;23711:15;;23669:28;;-1:-1:-1;23711:19:0;23708:177;;23765:1;23754:8;:12;:42;;;;;23788:8;23770:15;;:26;23754:42;:71;;23810:15;;23754:71;;;23799:8;23754:71;23747:78;;;;;14986:228;15079:12;;;;:6;:12;;;;;:22;;;15071:45;;15103:12;:10;:12::i;15071:45::-;15063:106;;;;-1:-1:-1;;;15063:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31920:114;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;17358:26:::1;::::0;;-1:-1:-1;;;17358:26:0;;;;;;;;::::1;::::0;;;31991:35:::1;::::0;32017:8;31991:10:::1;:35::i;:::-;18578:7:::0;;;18509:91;18489:3;;18449:162;;17494:25;;;;;;;;;;25511:170;17358:26;;;-1:-1:-1;;;17358:26:0;;;;;;;;;;;;25575:34;;25598:10;25575:7;:34::i;:::-;25567:77;;;;;-1:-1:-1;;;25567:77:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25567:77:0;;;;;;;;;;;;;;;25655:9;:18;;;;;;;-1:-1:-1;;25655:18:0;;;;;;;;;25511:170::o;2320:151::-;-1:-1:-1;;;;;2436:18:0;;;2409:7;2436:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2320:151::o;24469:233::-;17358:26;;;-1:-1:-1;;;17358:26:0;;;;;;;;;;;;24532:34;;24555:10;24532:7;:34::i;:::-;24524:77;;;;;-1:-1:-1;;;24524:77:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24524:77:0;;;;;;;;;;;;;;;24638:6;24620:15;;:24;24612:47;;;;;-1:-1:-1;;;24612:47:0;;;;;;;;;;;;-1:-1:-1;;;24612:47:0;;;;;;;;;;;;;;;24670:15;:24;24469:233::o;32040:114::-;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;17358:26:::1;::::0;;-1:-1:-1;;;17358:26:0;;;;;;;;::::1;::::0;;;32111:35:::1;::::0;32137:8;32111:10:::1;:35::i;18509:91::-:0;18489:3;;18449:162;;30668:544;18453:9;18449:162;18472:8;:15;18468:19;;18449:162;;;18527:10;-1:-1:-1;;;;;18512:25:0;:8;18521:1;18512:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18512:11:0;:25;18509:91;;;30759:8:::1;:15:::0;:24;-1:-1:-1;30756:449:0::1;;;-1:-1:-1::0;;;;;30803:22:0;::::1;30800:275;;30850:9;30846:148;30869:8;:15:::0;-1:-1:-1;;30869:19:0;30865:23;::::1;30846:148;;;30936:6;30932:1;:10;:42;;30959:8;30968:1;30972;30968:5;30959:15;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;30959:15:0::1;30932:42;;;30945:8;30954:1;30945:11;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;30945:11:0::1;30932:42;30918:8;30927:1;30918:11;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:56:::0;;-1:-1:-1;;;;;;30918:56:0::1;-1:-1:-1::0;;;;;30918:56:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;30890:3:0::1;30846:148;;;;31012:8;:14;;;;;;30800:275;31067:8;31048;31057:6;31048:16;;;;;;;30756:449;-1:-1:-1::0;;;;;31116:22:0;::::1;31108:47;;;::::0;;-1:-1:-1;;;31108:47:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31108:47:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;31170:8:0::1;27:10:-1::0;;39:1:::1;23:18:::0;::::1;45:23:::0;;-1:-1;31170:23:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;31170:23:0::1;-1:-1:-1::0;;;;;31170:23:0;::::1;;::::0;;18578:7;;18509:91;18489:3;;18449:162;;27993:466;28085:8;:15;28067:8;:15;:33;28104:4;28066:42;28042:21;:66;28034:94;;;;;-1:-1:-1;;;28034:94:0;;;;;;;;;;;;-1:-1:-1;;;28034:94:0;;;;;;;;;;;;;;;28180:1;28156:21;:25;28139:14;28192:125;28213:8;:15;28209:19;;;;28192:125;;;28258:8;28267:1;28258:11;;;;;;;;;;;;;;;;;;;;28289:8;:15;-1:-1:-1;;;;;28258:11:0;;;;28250:55;;28280:6;28289:15;28280:24;;;;;28250:55;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;28230:3:0;;28192:125;;;-1:-1:-1;28331:7:0;28327:125;28348:8;:15;28344:19;;;;28327:125;;;28393:8;28402:1;28393:11;;;;;;;;;;;;;;;;;;;;28424:8;:15;-1:-1:-1;;;;;28393:11:0;;;;28385:55;;28415:6;28424:15;28415:24;;;;;28385:55;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;28365:3:0;;28327:125;;10277:244;10048:12;:10;:12::i;:::-;10038:6;;;;;-1:-1:-1;;;;;10038:6:0;;;:22;;;10030:67;;;;;-1:-1:-1;;;10030:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10366:22:0;::::1;10358:73;;;;-1:-1:-1::0;;;10358:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10468:6;::::0;10447:38:::1;::::0;-1:-1:-1;;;;;10447:38:0;;::::1;::::0;10468:6:::1;::::0;::::1;;::::0;10447:38:::1;::::0;;;::::1;10496:6;:17:::0;;-1:-1:-1;;;;;10496:17:0;;::::1;;;-1:-1:-1::0;;;;;;10496:17:0;;::::1;::::0;;;::::1;::::0;;10277:244::o;4019:374::-;-1:-1:-1;;;;;4103:21:0;;4095:65;;;;;-1:-1:-1;;;4095:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4171:49;4200:1;4204:7;4213:6;4171:20;:49::i;:::-;4246:12;;:24;;4263:6;4246:24;:16;:24;:::i;:::-;4231:12;:39;-1:-1:-1;;;;;4302:18:0;;:9;:18;;;;;;;;;;;:30;;4325:6;4302:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;4281:18:0;;:9;:18;;;;;;;;;;;:51;;;;4348:37;;;;;;;4281:18;;:9;;4348:37;;;;;;;;;;4019:374;;:::o;208:106::-;296:10;208:106;:::o;4819:344::-;-1:-1:-1;;;;;4921:19:0;;4913:68;;;;-1:-1:-1;;;4913:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5000:21:0;;4992:68;;;;-1:-1:-1;;;4992:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5071:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5123:32;;;;;;;;;;;;;;;;;4819:344;;;:::o;3478:535::-;-1:-1:-1;;;;;3584:20:0;;3576:70;;;;-1:-1:-1;;;3576:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3665:23:0;;3657:71;;;;-1:-1:-1;;;3657:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3739:47;3760:6;3768:9;3779:6;3739:20;:47::i;:::-;3817:71;3839:6;3817:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3817:17:0;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;3797:17:0;;;:9;:17;;;;;;;;;;;:91;;;;3922:20;;;;;;;:32;;3947:6;3922:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;3899:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;3970:35;;;;;;;3899:20;;3970:35;;;;;;;;;;;;;3478:535;;;:::o;5906:190::-;5992:7;6028:12;6020:6;;;;6012:29;;;;-1:-1:-1;;;6012:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6012:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6064:5:0;;;5906:190::o;15875:188::-;15949:12;;;;:6;:12;;;;;:33;;15974:7;15949:33;:24;:33;:::i;:::-;15945:111;;;16031:12;:10;:12::i;:::-;-1:-1:-1;;;;;16004:40:0;16022:7;-1:-1:-1;;;;;16004:40:0;16016:4;16004:40;;;;;;;;;;15875:188;;:::o;16069:192::-;16144:12;;;;:6;:12;;;;;:36;;16172:7;16144:36;:27;:36;:::i;:::-;16140:114;;;16229:12;:10;:12::i;:::-;-1:-1:-1;;;;;16202:40:0;16220:7;-1:-1:-1;;;;;16202:40:0;16214:4;16202:40;;;;;;;;;;16069:192;;:::o;5579:179::-;5637:7;5669:5;;;5693:6;;;;5685:46;;;;;-1:-1:-1;;;5685:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4399:414;-1:-1:-1;;;;;4483:21:0;;4475:67;;;;-1:-1:-1;;;4475:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4553:49;4574:7;4591:1;4595:6;4553:20;:49::i;:::-;4634:68;4657:6;4634:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4634:18:0;;:9;:18;;;;;;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;4613:18:0;;:9;:18;;;;;;;;;;:89;4728:12;;:24;;4745:6;4728:24;:16;:24;:::i;:::-;4713:12;:39;4768:37;;;;;;;;4794:1;;-1:-1:-1;;;;;4768:37:0;;;;;;;;;;;;4399:414;;:::o;22837:320::-;-1:-1:-1;;;;;22918:15:0;;22897:18;22918:15;;;:5;:15;;;;;:27;;;22959:14;;22956:119;;-1:-1:-1;;;;;22990:15:0;;23020:1;22990:15;;;:5;:15;;;;;:27;;:31;23036:27;22996:8;23052:10;23036:5;:27::i;:::-;23090:59;;;;23110:15;23090:59;;;;;;;;;;;-1:-1:-1;;;;;23090:59:0;;;;;;;;;;;22837:320;;:::o;7756:177::-;7866:58;;;-1:-1:-1;;;;;7866:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7866:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7839:86:0;;7859:5;;7839:19;:86::i;:::-;7756:177;;;:::o;16751:118::-;16598:7;;;;16597:8;16589:37;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;-1:-1:-1;;;16589:37:0;;;;;;;;;;;;;;;16811:7:::1;:14:::0;;-1:-1:-1;;16811:14:0::1;16821:4;16811:14;::::0;;16841:20:::1;16848:12;:10;:12::i;:::-;16841:20;::::0;;-1:-1:-1;;;;;16841:20:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;16751:118::o:0;12661:149::-;12735:7;12778:22;12782:3;12794:5;12778:3;:22::i;12374:158::-;12454:4;12478:46;12488:3;-1:-1:-1;;;;;12508:14:0;;12478:9;:46::i;7939:205::-;8067:68;;;-1:-1:-1;;;;;8067:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8067:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8040:96:0;;8060:5;;8040:19;:96::i;:::-;7939:205;;;;:::o;12538:117::-;12601:7;12628:19;12636:3;12628:7;:19::i;16875:120::-;16693:7;;;;16685:40;;;;;-1:-1:-1;;;16685:40:0;;;;;;;;;;;;-1:-1:-1;;;16685:40:0;;;;;;;;;;;;;;;16934:7:::1;:15:::0;;-1:-1:-1;;16934:15:0::1;::::0;;16965:22:::1;16974:12;:10;:12::i;19602:848::-:0;-1:-1:-1;;;;;19709:19:0;;;19706:210;;19745:16;19764:18;19776:5;19764:11;:18::i;:::-;19745:37;;19811:1;19800:8;:12;:55;;;;-1:-1:-1;;;;;;19816:12:0;;;19853:1;19816:12;;;:5;:12;;;;;:25;;:39;;19800:55;19797:107;;;-1:-1:-1;;;;;19868:12:0;;;;;;;:5;:12;;;;;:25;19857:47;;19868:25;19895:8;19857:10;:47::i;:::-;;19797:107;19706:210;;19938:3;-1:-1:-1;;;;;19929:12:0;:5;-1:-1:-1;;;;;19929:12:0;;19926:517;;19958:16;19977;19989:3;19977:11;:16::i;:::-;19958:35;;20022:1;20011:8;:12;:53;;;;-1:-1:-1;;;;;;20027:10:0;;;20062:1;20027:10;;;:5;:10;;;;;:23;;:37;;20011:53;20008:103;;;-1:-1:-1;;;;;20077:10:0;;;;;;;:5;:10;;;;;:23;20066:45;;20077:23;20102:8;20066:10;:45::i;:::-;;20008:103;-1:-1:-1;;;;;20129:10:0;;;20164:1;20129:10;;;:5;:10;;;;;:23;;:37;:60;;;;-1:-1:-1;;;;;;20170:19:0;;;;20129:60;:96;;;;-1:-1:-1;;;;;;20193:12:0;;;;;;;:5;:12;;;;;:25;;;:32;;;;;20129:96;:111;;;;;20239:1;20229:7;:11;20129:111;20126:147;;;-1:-1:-1;;;;;20242:10:0;;;;;;;:5;:10;;;;;:31;;-1:-1:-1;;;;;;20242:31:0;;;;;;;;;;20126:147;-1:-1:-1;;;;;20291:10:0;;;;;;:5;:10;;;;;:27;-1:-1:-1;;;20291:27:0;;;;20288:90;;-1:-1:-1;;;;;20325:10:0;;;;;;:5;:10;;;;;:53;;-1:-1:-1;;;;20325:53:0;-1:-1:-1;;;20362:15:0;20325:53;;;;;;20288:90;19926:517;;;;20411:20;20425:5;20411:13;:20::i;12070:143::-;12140:4;12164:41;12169:3;-1:-1:-1;;;;;12189:14:0;;12164:4;:41::i;12219:149::-;12292:4;12316:44;12324:3;-1:-1:-1;;;;;12344:14:0;;12316:7;:44::i;5764:136::-;5822:7;5849:43;5853:1;5856;5849:43;;;;;;;;;;;;;;;;;:3;:43::i;9133:450::-;9222:27;9230:5;-1:-1:-1;;;;;9222:25:0;;:27::i;:::-;9214:71;;;;;-1:-1:-1;;;9214:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9297:12;9311:23;9346:5;-1:-1:-1;;;;;9338:19:0;9358:4;9338:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;9338:25:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;9296:67:0;;;;9382:7;9374:52;;;;;-1:-1:-1;;;9374:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9441:17;;:21;9437:139;;9498:10;9487:30;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9487:30:0;9479:85;;;;-1:-1:-1;;;9479:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:204;11902:18;;11874:7;;11902:26;-1:-1:-1;11894:73:0;;;;-1:-1:-1;;;11894:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11985:3;:11;;11997:5;11985:18;;;;;;;;;;;;;;;;11978:25;;11807:204;;;;:::o;11557:129::-;11630:4;11654:19;;;:12;;;;;:19;;;;;;:24;;;11557:129::o;11692:109::-;11775:18;;11692:109::o;20456:1432::-;20555:24;;;-1:-1:-1;;;20555:24:0;;-1:-1:-1;;;;;20555:24:0;;;;;;;;20511:13;;;;20555:4;;:14;;:24;;;;;;;;;;;;;;:4;:24;;;2:2:-1;;;;27:1;24;17:12;2:2;20555:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20555:24:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20555:24:0;-1:-1:-1;;;;;20623:15:0;;20590:12;20623:15;;;:5;20555:24;20623:15;;;;:32;20555:24;;-1:-1:-1;;;;20623:32:0;;;;20605:15;:50;20680:3;20669:14;;;;;:26;;;20694:1;20687:4;:8;20669:26;20666:1146;;;20712:15;20756:3;20745:7;:14;;:31;;;;;20773:3;20763:7;:13;20745:31;20742:48;;;-1:-1:-1;20788:2:0;20742:48;20819:3;20808:7;:14;;:31;;;;;20836:3;20826:7;:13;20808:31;20805:48;;;-1:-1:-1;20851:2:0;20805:48;20882:3;20871:7;:14;;:31;;;;;20899:3;20889:7;:13;20871:31;20868:48;;;-1:-1:-1;20914:2:0;20868:48;20945:3;20934:7;:14;;:31;;;;;20962:3;20952:7;:13;20934:31;20931:48;;;-1:-1:-1;20977:2:0;20931:48;21008:3;20997:7;:14;;:32;;;;;21025:4;21015:7;:14;20997:32;20994:49;;;-1:-1:-1;21041:2:0;20994:49;21072:4;21061:7;:15;;:33;;;;;21090:4;21080:7;:14;21061:33;21058:50;;;-1:-1:-1;21106:2:0;21058:50;21137:4;21126:7;:15;;:33;;;;;21155:4;21145:7;:14;21126:33;21123:50;;;-1:-1:-1;21171:2:0;21123:50;21202:4;21191:7;:15;;:33;;;;;21220:4;21210:7;:14;21191:33;21188:50;;;-1:-1:-1;21236:2:0;21188:50;21267:4;21256:7;:15;;:33;;;;;21285:4;21275:7;:14;21256:33;21253:50;;;-1:-1:-1;21301:2:0;21253:50;21359:3;21353;21326:14;;;:24;;:30;:36;;-1:-1:-1;21380:9:0;;21377:424;;21410:11;21448:3;21441:4;21424:14;;;:21;:27;21410:41;;21470:11;21505:4;21484;-1:-1:-1;;;;;21484:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21484:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21484:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21484:18:0;:25;:65;;21548:1;21484:65;;;21541:4;21520;-1:-1:-1;;;;;21520:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21520:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21520:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21520:18:0;21512:26;;:33;;;;;;21484:65;21470:79;;21577:3;21568:12;;;;21610:3;21602:5;:11;21599:27;;;21623:3;21615:11;;21599:27;-1:-1:-1;;;;;21645:15:0;;;;;;:5;:15;;;;;;;;;:27;;:36;;;;;;;;21705:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21377:424;;;20666:1146;;-1:-1:-1;;;;;;;21822:15:0;;;;;;;;:5;:15;;;;;:58;;-1:-1:-1;;;;21822:58:0;-1:-1:-1;;;21864:15:0;21822:58;;;;;;:15;20456:1432::o;21894:937::-;22009:24;;;-1:-1:-1;;;22009:24:0;;-1:-1:-1;;;;;22009:24:0;;;;;;;;21965:13;;;;22009:4;;:14;;:24;;;;;;;;;;;;;;:4;:24;;;2:2:-1;;;;27:1;24;17:12;2:2;22009:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22009:24:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22009:24:0;;-1:-1:-1;22058:3:0;22047:14;;;;;:32;;;22075:4;22065:7;:14;22047:32;22044:780;;;22096:15;22140:3;22129:7;:14;;:31;;;;;22157:3;22147:7;:13;22129:31;22126:49;;;-1:-1:-1;22172:3:0;22126:49;22204:3;22193:7;:14;;:32;;;;;22221:4;22211:7;:14;22193:32;22190:50;;;-1:-1:-1;22237:3:0;22190:50;22269:4;22258:7;:15;;:33;;;;;22287:4;22277:7;:14;22258:33;22255:52;;;-1:-1:-1;22303:4:0;22255:52;22336:4;22325:7;:15;;:33;;;;;22354:4;22344:7;:14;22325:33;22322:52;;;-1:-1:-1;22370:4:0;22322:52;22416:5;22396:17;;;:25;;-1:-1:-1;22436:11:0;22460:3;22450:7;:13;22436:27;;22478:11;22513:4;22492;-1:-1:-1;;;;;22492:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22492:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22492:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22492:18:0;:25;:65;;22556:1;22492:65;;;22549:4;22528;-1:-1:-1;;;;;22528:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22528:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22528:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22528:18:0;22520:26;;:33;;;;;;22492:65;22478:79;;22581:3;22572:12;;;;22610:3;22602:5;:11;22599:27;;;22623:3;22615:11;;22599:27;-1:-1:-1;;;;;22671:15:0;;;;;;:5;:15;;;;;;;;;:27;;;;:35;;22641:65;;;;22726:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22044:780;;;;21894:937;;;;;:::o;10658:291::-;10721:4;10743:21;10753:3;10758:5;10743:9;:21::i;:::-;10738:204;;-1:-1:-1;27:10;;39:1;23:18;;;45:23;;10781:11:0;:23;;;;;;;;;;;;;10841:18;;10819:19;;;:12;;;:19;;;;;;:40;;;;10874:11;;10738:204;-1:-1:-1;10925:5:0;10918:12;;10955:596;11021:4;11059:19;;;:12;;;:19;;;;;;11093:15;;11089:455;;11198:18;;-1:-1:-1;;11149:14:0;;;;11198:22;;;;11125:21;;11198:3;;:22;;11255;;;;;;;;;;;;;;11235:42;;11321:9;11292:3;:11;;11304:13;11292:26;;;;;;;;;;;;;;;;;;;:38;;;;11345:23;;;11387:1;11345:12;;;:23;;;;;;11371:17;;;11345:43;;11403:17;;11345:3;;11403:17;;;;;;;;;;;;;;;;;;;;;;11442:3;:12;;:19;11455:5;11442:19;;;;;;;;;;;11435:26;;;11483:4;11476:11;;;;;;;;11089:455;11527:5;11520:12;;;;;7019:317;7079:4;7245:20;;7145:66;7285:23;;;;;;:42;;-1:-1:-1;7312:15:0;;;7285:42;7277:51;7019:317;-1:-1:-1;;;;7019:317:0:o
Swarm Source
ipfs://259586f1027408fccb4643f700e7df470bae1e31722ca5b26221aa7564759365
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.