ERC-20
Overview
Max Total Supply
214,170,418.22290763 scUSD
Holders
79
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
1.76529305 scUSDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
StableCreditProtocol
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-15 */ pragma solidity ^0.5.17; interface IERC20 { function totalSupply() external view returns (uint); function balanceOf(address account) external view returns (uint); function transfer(address recipient, uint amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint amount) external returns (bool); function transferFrom(address sender, address recipient, uint amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } contract Context { constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } } contract ERC20 is Context, IERC20 { using SafeMath for uint; mapping (address => uint) private _balances; mapping (address => mapping (address => uint)) private _allowances; uint private _totalSupply; function totalSupply() public view returns (uint) { return _totalSupply; } function balanceOf(address account) public view returns (uint) { return _balances[account]; } function transfer(address recipient, uint amount) public returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view returns (uint) { return _allowances[owner][spender]; } function approve(address spender, uint amount) public returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint amount) public 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, uint addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _transfer(address sender, address recipient, uint amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _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, uint amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _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, uint amount) internal { 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); } } contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } 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; } } library SafeMath { function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint a, uint b) internal pure returns (uint) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) { require(b <= a, errorMessage); uint c = a - b; return c; } function mul(uint a, uint b) internal pure returns (uint) { if (a == 0) { return 0; } uint c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint a, uint b) internal pure returns (uint) { return div(a, b, "SafeMath: division by zero"); } function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint c = a / b; return c; } } library Address { function isContract(address account) internal view returns (bool) { bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } } library SafeERC20 { using SafeMath for uint; using Address for address; function safeTransfer(IERC20 token, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint 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 callOptionalReturn(IERC20 token, bytes memory data) private { require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } interface UniswapPair { function mint(address to) external returns (uint liquidity); } interface Oracle { function getPriceUSD(address reserve) external view returns (uint); } interface UniswapRouter { function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); function factory() external view returns (address); } interface UniswapFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } contract StableCreditProtocol is ERC20, ERC20Detailed { using SafeERC20 for IERC20; using Address for address; using SafeMath for uint; // Oracle used for price debt data (external to the AMM balance to avoid internal manipulation) Oracle public constant LINK = Oracle(0x271bf4568fb737cc2e6277e9B1EE0034098cDA2a); UniswapRouter public constant UNI = UniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Maximum credit issued off of deposits (to avoid infinite leverage) uint public constant MAX = 7500; uint public constant BASE = 10000; mapping (address => uint) public userCredit; // user => token => credit mapping (address => mapping(address => uint)) public credit; // user => token => balance mapping (address => mapping(address => uint)) public balances; // user => address[] markets (credit markets supplied to) mapping (address => address[]) public markets; event Borrow(address indexed borrower, address indexed borrowed, uint creditIn, uint amountOut); event Repay(address indexed borrower, address indexed repaid, uint creditOut, uint amountIn); event Deposit(address indexed creditor, address indexed collateral, uint creditOut, uint amountIn, uint creditMinted); event Withdraw(address indexed creditor, address indexed collateral, uint creditIn, uint creditOut, uint amountOut); constructor () public ERC20Detailed("StableCredit", "scUSD", 8) {} // Borrow exact amount of token output, can have variable USD input up to inMax function borrowExactOut(address token, uint inMax, uint outExact) external { _transfer(msg.sender, address(this), inMax); IERC20(this).safeApprove(address(UNI), 0); IERC20(this).safeApprove(address(UNI), inMax); address[] memory _path = new address[](2); _path[0] = address(this); _path[1] = token; uint[] memory _amounts = UNI.swapTokensForExactTokens(outExact, inMax, _path, msg.sender, now.add(1800)); _transfer(address(this), msg.sender, balanceOf(address(this))); emit Borrow(msg.sender, token, _amounts[0], _amounts[1]); } // Borrow variable amount of token, given exact USD input function borrowExactIn(address token, uint inExact, uint outMin) external { _transfer(msg.sender, address(this), inExact); IERC20(this).safeApprove(address(UNI), 0); IERC20(this).safeApprove(address(UNI), inExact); address[] memory _path = new address[](2); _path[0] = address(this); _path[1] = token; uint[] memory _amounts = UNI.swapExactTokensForTokens(inExact, outMin, _path, msg.sender, now.add(1800)); emit Borrow(msg.sender, token, _amounts[0], _amounts[1]); } // Repay variable amount of token given exact output amount in USD function repayExactOut(address token, uint inMax, uint outExact) external { IERC20(token).safeTransferFrom(msg.sender, address(this), inMax); IERC20(token).safeApprove(address(UNI), 0); IERC20(token).safeApprove(address(UNI), inMax); address[] memory _path = new address[](2); _path[0] = token; _path[1] = address(this); uint[] memory _amounts = UNI.swapTokensForExactTokens(outExact, inMax, _path, msg.sender, now.add(1800)); IERC20(token).safeTransfer(msg.sender, IERC20(token).balanceOf(address(this))); emit Repay(msg.sender, token, _amounts[1], _amounts[0]); } // Repay variable amount of USD, given exact amount of token input function repayExactIn(address token, uint inExact, uint outMin) external { IERC20(token).safeTransferFrom(msg.sender, address(this), inExact); IERC20(token).safeApprove(address(UNI), 0); IERC20(token).safeApprove(address(UNI), inExact); address[] memory _path = new address[](2); _path[0] = token; _path[1] = address(this); uint[] memory _amounts = UNI.swapExactTokensForTokens(inExact, outMin, _path, msg.sender, now.add(1800)); emit Repay(msg.sender, token, _amounts[1], _amounts[0]); } function depositAll(address token) external { deposit(token, IERC20(token).balanceOf(msg.sender)); } function deposit(address token, uint amount) public { _deposit(token, amount); } // UNSAFE: No slippage protection, should not be called directly function _deposit(address token, uint amount) internal { uint _value = LINK.getPriceUSD(token).mul(amount).div(uint256(10)**ERC20Detailed(token).decimals()); require(_value > 0, "!value"); address _pair = UniswapFactory(UNI.factory()).getPair(token, address(this)); if (_pair == address(0)) { _pair = UniswapFactory(UNI.factory()).createPair(token, address(this)); } IERC20(token).safeTransferFrom(msg.sender, _pair, amount); _mint(_pair, _value); // Amount of aUSD to mint uint _before = IERC20(_pair).balanceOf(address(this)); UniswapPair(_pair).mint(address(this)); uint _after = IERC20(_pair).balanceOf(address(this)); // Assign LP tokens to user, token <> pair is deterministic thanks to CREATE2 balances[msg.sender][token] = balances[msg.sender][token].add(_after.sub(_before)); // Calculate utilization ratio of the asset. The more an asset contributes to the system, the less credit issued // This mechanism avoids large influx of deposits to overpower the system // Calculated after deposit to see impact of current deposit (prevents front-running credit) uint _credit = _value.mul(utilization(token)).div(BASE); credit[msg.sender][token] = credit[msg.sender][token].add(_credit); userCredit[msg.sender] = userCredit[msg.sender].add(_credit); _mint(msg.sender, _credit); markets[msg.sender].push(token); emit Deposit(msg.sender, token, _credit, amount, _value); } function withdrawAll(address token) external { _withdraw(token, IERC20(this).balanceOf(msg.sender)); } function withdraw(address token, uint amount) external { _withdraw(token, amount); } // UNSAFE: No slippage protection, should not be called directly function _withdraw(address token, uint amount) internal { uint _credit = credit[msg.sender][token]; uint _uni = balances[msg.sender][token]; if (_credit < amount) { amount = _credit; } _burn(msg.sender, amount); credit[msg.sender][token] = credit[msg.sender][token].sub(amount); userCredit[msg.sender] = userCredit[msg.sender].sub(amount); // Calculate % of collateral to release uint _burned = _uni.mul(amount).div(_credit); address _pair = UniswapFactory(UNI.factory()).getPair(token, address(this)); IERC20(_pair).safeApprove(address(UNI), 0); IERC20(_pair).safeApprove(address(UNI), _burned); uint _before = IERC20(_pair).balanceOf(address(this)); UNI.removeLiquidity( token, address(this), _burned, 0, 0, address(this), now.add(1800) ); uint _after = IERC20(_pair).balanceOf(address(this)); _burned = _before.sub(_after); if (_burned > _uni) { _burned = _uni; } balances[msg.sender][token] = balances[msg.sender][token].sub(_burned); uint _amountA = IERC20(token).balanceOf(address(this)); uint _amountB = balanceOf(address(this)); _burn(address(this), _amountB); // Amount of aUSD to burn (value of A leaving the system) IERC20(token).safeTransfer(msg.sender, _amountA); emit Withdraw(msg.sender, token, amount, _amountB, _amountA); } function getMarkets(address owner) external view returns (address[] memory) { return markets[owner]; } function utilization(address token) public view returns (uint) { return _utilization(token, 0); } // How much system liquidity is provided by this asset function _utilization(address token, uint amount) internal view returns (uint) { address _pair = UniswapFactory(UNI.factory()).getPair(token, address(this)); uint _ratio = BASE.sub(BASE.mul(balanceOf(_pair).add(amount)).div(totalSupply())); if (_ratio == 0) { return MAX; } return _ratio > MAX ? MAX : _ratio; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"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":"borrower","type":"address"},{"indexed":true,"internalType":"address","name":"borrowed","type":"address"},{"indexed":false,"internalType":"uint256","name":"creditIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"creditor","type":"address"},{"indexed":true,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"creditOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"creditMinted","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":true,"internalType":"address","name":"repaid","type":"address"},{"indexed":false,"internalType":"uint256","name":"creditOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"Repay","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":true,"internalType":"address","name":"creditor","type":"address"},{"indexed":true,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"uint256","name":"creditIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"creditOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Withdraw","type":"event"},{"constant":true,"inputs":[],"name":"BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LINK","outputs":[{"internalType":"contract Oracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNI","outputs":[{"internalType":"contract UniswapRouter","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"inExact","type":"uint256"},{"internalType":"uint256","name":"outMin","type":"uint256"}],"name":"borrowExactIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"inMax","type":"uint256"},{"internalType":"uint256","name":"outExact","type":"uint256"}],"name":"borrowExactOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"credit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"depositAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"getMarkets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"markets","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"inExact","type":"uint256"},{"internalType":"uint256","name":"outMin","type":"uint256"}],"name":"repayExactIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"inMax","type":"uint256"},{"internalType":"uint256","name":"outExact","type":"uint256"}],"name":"repayExactOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userCredit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"utilization","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f537461626c6543726564697400000000000000000000000000000000000000008152506040518060400160405280600581526020017f73635553440000000000000000000000000000000000000000000000000000008152506008826003908051906020019062000098929190620000d6565b508160049080519060200190620000b1929190620000d6565b5080600560006101000a81548160ff021916908360ff16021790555050505062000185565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011957805160ff19168380011785556200014a565b828001600101855582156200014a579182015b82811115620001495782518255916020019190600101906200012c565b5b5090506200015991906200015d565b5090565b6200018291905b808211156200017e57600081600090555060010162000164565b5090565b90565b6150f480620001956000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806395d89b4111610104578063cc1f0d2d116100a2578063e0eff0c511610071578063e0eff0c514610b1d578063ec342ad014610b75578063f3fef3a314610b93578063fa09e63014610be1576101cf565b8063cc1f0d2d14610976578063d49d5181146109ee578063d60d9bd714610a0c578063dd62ed3e14610aa5576101cf565b8063a9059cbb116100de578063a9059cbb146107e8578063bf20d9dc1461084e578063c23f001f146108a6578063c3397efe1461091e576101cf565b806395d89b41146106bb5780639f0d5f271461073e578063a457c2d714610782576101cf565b80633950935111610171578063541bcb761161014b578063541bcb761461056957806370a08231146105b35780638843c4c91461060b5780639396897e14610663576101cf565b8063395093511461045d5780634191c417146104c357806347e7ef241461051b576101cf565b806318160ddd116101ad57806318160ddd1461034b5780631b6b6d231461036957806323b872dd146103b3578063313ce56714610439576101cf565b806306fdde03146101d4578063095ea7b31461025757806317b3bba7146102bd575b600080fd5b6101dc610c25565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a36004803603604081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc7565b604051808215151515815260200191505060405180910390f35b610309600480360360408110156102d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610353610d30565b6040518082815260200191505060405180910390f35b610371610d3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61041f600480360360608110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d52565b604051808215151515815260200191505060405180910390f35b610441610e2b565b604051808260ff1660ff16815260200191505060405180910390f35b6104a96004803603604081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e42565b604051808215151515815260200191505060405180910390f35b610505600480360360208110156104d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef5565b6040518082815260200191505060405180910390f35b6105676004803603604081101561053157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f0d565b005b610571610f1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f5600480360360208110156105c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b6040518082815260200191505060405180910390f35b6106616004803603606081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610f7b565b005b6106b96004803603606081101561067957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611347565b005b6106c3611726565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107035780820151818401526020810190506106e8565b50505050905090810190601f1680156107305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107806004803603602081101561075457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c8565b005b6107ce6004803603604081101561079857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061188c565b604051808215151515815260200191505060405180910390f35b610834600480360360408110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611959565b604051808215151515815260200191505060405180910390f35b6108906004803603602081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611977565b6040518082815260200191505060405180910390f35b610908600480360360408110156108bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061198b565b6040518082815260200191505060405180910390f35b6109746004803603606081101561093457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506119b0565b005b6109d86004803603604081101561098c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d9e565b6040518082815260200191505060405180910390f35b6109f6611dc3565b6040518082815260200191505060405180910390f35b610a4e60048036036020811015610a2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a91578082015181840152602081019050610a76565b505050509050019250505060405180910390f35b610b0760048036036040811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e96565b6040518082815260200191505060405180910390f35b610b7360048036036060811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611f1d565b005b610b7d6123ed565b6040518082815260200191505060405180910390f35b610bdf60048036036040811015610ba957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123f3565b005b610c2360048036036020811015610bf757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612401565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b5050505050905090565b6000610cdb610cd46124c5565b84846124cd565b6001905092915050565b60096020528160005260406000208181548110610cfe57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b73271bf4568fb737cc2e6277e9b1ee0034098cda2a81565b6000610d5f8484846126c4565b610e2084610d6b6124c5565b610e1b85604051806060016040528060288152602001614fa960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd16124c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6124cd565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000610eeb610e4f6124c5565b84610ee68560016000610e606124c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b6124cd565b6001905092915050565b60066020528060005260406000206000915090505481565b610f178282612ac2565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f863330846126c4565b610fc6737a250d5630b4cf539739df2c5dacb4c659f2488d60003073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b611005737a250d5630b4cf539739df2c5dacb4c659f2488d833073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b606060026040519080825280602002602001820160405280156110375781602001602082028038833980820191505090505b509050308160008151811061104857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061109057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed17398585853361111561070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156111ab578082015181840152602081019050611190565b505050509050019650505050505050600060405180830381600087803b1580156111d457600080fd5b505af11580156111e8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561121257600080fd5b810190808051604051939291908464010000000082111561123257600080fd5b8382019150602082018581111561124857600080fd5b825186602082028301116401000000008211171561126557600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561129c578082015181840152602081019050611281565b5050505090500160405250505090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1561b330e73faa7d5d1ac03c968d8f359b0191ccdb9cc002cf7d8eb6ae038cb8360008151811061130757fe5b60200260200101518460018151811061131c57fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b6113523330846126c4565b611392737a250d5630b4cf539739df2c5dacb4c659f2488d60003073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b6113d1737a250d5630b4cf539739df2c5dacb4c659f2488d833073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b606060026040519080825280602002602001820160405280156114035781602001602082028038833980820191505090505b509050308160008151811061141457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061145c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16638803dbee848685336114e161070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561157757808201518184015260208101905061155c565b505050509050019650505050505050600060405180830381600087803b1580156115a057600080fd5b505af11580156115b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156115de57600080fd5b81019080805160405193929190846401000000008211156115fe57600080fd5b8382019150602082018581111561161457600080fd5b825186602082028301116401000000008211171561163157600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561166857808201518184015260208101905061164d565b50505050905001604052505050905061168a303361168530610f33565b6126c4565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1561b330e73faa7d5d1ac03c968d8f359b0191ccdb9cc002cf7d8eb6ae038cb836000815181106116e657fe5b6020026020010151846001815181106116fb57fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117be5780601f10611793576101008083540402835291602001916117be565b820191906000526020600020905b8154815290600101906020018083116117a157829003601f168201915b5050505050905090565b611889818273ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561184957600080fd5b505afa15801561185d573d6000803e3d6000fd5b505050506040513d602081101561187357600080fd5b8101908080519060200190929190505050610f0d565b50565b600061194f6118996124c5565b8461194a8560405180606001604052806025815260200161509b60259139600160006118c36124c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6124cd565b6001905092915050565b600061196d6119666124c5565b84846126c4565b6001905092915050565b600061198482600061389d565b9050919050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6119dd3330848673ffffffffffffffffffffffffffffffffffffffff16613ab5909392919063ffffffff16565b611a1d737a250d5630b4cf539739df2c5dacb4c659f2488d60008573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b611a5c737a250d5630b4cf539739df2c5dacb4c659f2488d838573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b60606002604051908082528060200260200182016040528015611a8e5781602001602082028038833980820191505090505b5090508381600081518110611a9f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611ae757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed173985858533611b6c61070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c02578082015181840152602081019050611be7565b505050509050019650505050505050600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611c6957600080fd5b8101908080516040519392919084640100000000821115611c8957600080fd5b83820191506020820185811115611c9f57600080fd5b8251866020820283011164010000000082111715611cbc57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611cf3578082015181840152602081019050611cd8565b5050505090500160405250505090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe4a1ae657f49cb1fb1c7d3a94ae6093565c4c8c0e03de488f79c377c3c3a24e083600181518110611d5e57fe5b602002602001015184600081518110611d7357fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b6007602052816000526040600020602052806000526040600020600091509150505481565b611d4c81565b6060600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611e8a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e40575b50505050509050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f4a3330848673ffffffffffffffffffffffffffffffffffffffff16613ab5909392919063ffffffff16565b611f8a737a250d5630b4cf539739df2c5dacb4c659f2488d60008573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b611fc9737a250d5630b4cf539739df2c5dacb4c659f2488d838573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b60606002604051908082528060200260200182016040528015611ffb5781602001602082028038833980820191505090505b509050838160008151811061200c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061205457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16638803dbee848685336120d961070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561216f578082015181840152602081019050612154565b505050509050019650505050505050600060405180830381600087803b15801561219857600080fd5b505af11580156121ac573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156121d657600080fd5b81019080805160405193929190846401000000008211156121f657600080fd5b8382019150602082018581111561220c57600080fd5b825186602082028301116401000000008211171561222957600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612260578082015181840152602081019050612245565b505050509050016040525050509050612351338673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122f057600080fd5b505afa158015612304573d6000803e3d6000fd5b505050506040513d602081101561231a57600080fd5b81019080805190602001909291905050508773ffffffffffffffffffffffffffffffffffffffff16613bbb9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe4a1ae657f49cb1fb1c7d3a94ae6093565c4c8c0e03de488f79c377c3c3a24e0836001815181106123ad57fe5b6020026020010151846000815181106123c257fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b61271081565b6123fd8282613c8c565b5050565b6124c2813073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561248257600080fd5b505afa158015612496573d6000803e3d6000fd5b505050506040513d60208110156124ac57600080fd5b8101908080519060200190929190505050613c8c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612553576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806150176024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f406022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561274a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ff26025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614efb6023913960400191505060405180910390fd5b61283b81604051806060016040528060268152602001614f62602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ce816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612a27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129ec5780820151818401526020810190506129d1565b50505050905090810190601f168015612a195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612c3a8373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0d57600080fd5b505afa158015612b21573d6000803e3d6000fd5b505050506040513d6020811015612b3757600080fd5b810190808051906020019092919050505060ff16600a0a612c2c8473271bf4568fb737cc2e6277e9b1ee0034098cda2a73ffffffffffffffffffffffffffffffffffffffff16635708447d886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612be357600080fd5b505afa158015612bf7573d6000803e3d6000fd5b505050506040513d6020811015612c0d57600080fd5b810190808051906020019092919050505061471190919063ffffffff16565b61479790919063ffffffff16565b905060008111612cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f2176616c7565000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0e57600080fd5b505afa158015612d22573d6000803e3d6000fd5b505050506040513d6020811015612d3857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a4390585306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612df957600080fd5b505afa158015612e0d573d6000803e3d6000fd5b505050506040513d6020811015612e2357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ff057737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612ec557600080fd5b505afa158015612ed9573d6000803e3d6000fd5b505050506040513d6020811015612eef57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c6539685306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612fb257600080fd5b505af1158015612fc6573d6000803e3d6000fd5b505050506040513d6020811015612fdc57600080fd5b810190808051906020019092919050505090505b61301d3382858773ffffffffffffffffffffffffffffffffffffffff16613ab5909392919063ffffffff16565b61302781836147e1565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156130a657600080fd5b505afa1580156130ba573d6000803e3d6000fd5b505050506040513d60208110156130d057600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff16636a627842306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561316257600080fd5b505af1158015613176573d6000803e3d6000fd5b505050506040513d602081101561318c57600080fd5b81019080805190602001909291905050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561321d57600080fd5b505afa158015613231573d6000803e3d6000fd5b505050506040513d602081101561324757600080fd5b810190808051906020019092919050505090506132fb613270838361499c90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006133ac61271061339e61338f8a611977565b8861471190919063ffffffff16565b61479790919063ffffffff16565b905061343d81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350f81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061355c33826147e1565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208790806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f683898960405180848152602001838152602001828152602001935050505060405180910390a350505050505050565b6000811480613777575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561373a57600080fd5b505afa15801561374e573d6000803e3d6000fd5b505050506040513d602081101561376457600080fd5b8101908080519060200190929190505050145b6137cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806150656036913960400191505060405180910390fd5b613898838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506149e6565b505050565b600080737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156138fa57600080fd5b505afa15801561390e573d6000803e3d6000fd5b505050506040513d602081101561392457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a4390585306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156139e557600080fd5b505afa1580156139f9573d6000803e3d6000fd5b505050506040513d6020811015613a0f57600080fd5b810190808051906020019092919050505090506000613a80613a6f613a32610d30565b613a61613a5088613a4288610f33565b612a3a90919063ffffffff16565b61271061471190919063ffffffff16565b61479790919063ffffffff16565b61271061499c90919063ffffffff16565b90506000811415613a9757611d4c92505050613aaf565b611d4c8111613aa65780613aaa565b611d4c5b925050505b92915050565b613bb5848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506149e6565b50505050565b613c87838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506149e6565b505050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082821015613d9a578192505b613da43384614c31565b613e3383600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461499c90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f0583600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461499c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613f6f83613f61868561471190919063ffffffff16565b61479790919063ffffffff16565b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613fcd57600080fd5b505afa158015613fe1573d6000803e3d6000fd5b505050506040513d6020811015613ff757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156140b857600080fd5b505afa1580156140cc573d6000803e3d6000fd5b505050506040513d60208110156140e257600080fd5b81019080805190602001909291905050509050614135737a250d5630b4cf539739df2c5dacb4c659f2488d60008373ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b614174737a250d5630b4cf539739df2c5dacb4c659f2488d838373ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156141f357600080fd5b505afa158015614207573d6000803e3d6000fd5b505050506040513d602081101561421d57600080fd5b81019080805190602001909291905050509050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663baa2abde8830866000803061427c61070842612a3a90919063ffffffff16565b6040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019750505050505050506040805180830381600087803b15801561435f57600080fd5b505af1158015614373573d6000803e3d6000fd5b505050506040513d604081101561438957600080fd5b810190808051906020019092919080519060200190929190505050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561442557600080fd5b505afa158015614439573d6000803e3d6000fd5b505050506040513d602081101561444f57600080fd5b81019080805190602001909291905050509050614475818361499c90919063ffffffff16565b935084841115614483578493505b61451284600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461499c90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561461157600080fd5b505afa158015614625573d6000803e3d6000fd5b505050506040513d602081101561463b57600080fd5b81019080805190602001909291905050509050600061465930610f33565b90506146653082614c31565b61469033838c73ffffffffffffffffffffffffffffffffffffffff16613bbb9092919063ffffffff16565b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8b848660405180848152602001838152602001828152602001935050505060405180910390a350505050505050505050565b6000808314156147245760009050614791565b600082840290508284828161473557fe5b041461478c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614f886021913960400191505060405180910390fd5b809150505b92915050565b60006147d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614de9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61489981600254612a3a90919063ffffffff16565b6002819055506148f0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006149de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061297a565b905092915050565b614a058273ffffffffffffffffffffffffffffffffffffffff16614eaf565b614a77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310614ac65780518252602082019150602081019050602083039250614aa3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b28576040519150601f19603f3d011682016040523d82523d6000602084013e614b2d565b606091505b509150915081614ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115614c2b57808060200190516020811015614bc457600080fd5b8101908080519060200190929190505050614c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061503b602a913960400191505060405180910390fd5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614fd16021913960400191505060405180910390fd5b614d2281604051806060016040528060228152602001614f1e602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d798160025461499c90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290614e95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614e5a578082015181840152602081019050614e3f565b50505050905090810190601f168015614e875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614ea157fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015614ef15750808214155b9250505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202475320698bc1f0dec8820a2d56803d834dbb74df9405f8594e5a236dad0540c64736f6c63430005110032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806395d89b4111610104578063cc1f0d2d116100a2578063e0eff0c511610071578063e0eff0c514610b1d578063ec342ad014610b75578063f3fef3a314610b93578063fa09e63014610be1576101cf565b8063cc1f0d2d14610976578063d49d5181146109ee578063d60d9bd714610a0c578063dd62ed3e14610aa5576101cf565b8063a9059cbb116100de578063a9059cbb146107e8578063bf20d9dc1461084e578063c23f001f146108a6578063c3397efe1461091e576101cf565b806395d89b41146106bb5780639f0d5f271461073e578063a457c2d714610782576101cf565b80633950935111610171578063541bcb761161014b578063541bcb761461056957806370a08231146105b35780638843c4c91461060b5780639396897e14610663576101cf565b8063395093511461045d5780634191c417146104c357806347e7ef241461051b576101cf565b806318160ddd116101ad57806318160ddd1461034b5780631b6b6d231461036957806323b872dd146103b3578063313ce56714610439576101cf565b806306fdde03146101d4578063095ea7b31461025757806317b3bba7146102bd575b600080fd5b6101dc610c25565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a36004803603604081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cc7565b604051808215151515815260200191505060405180910390f35b610309600480360360408110156102d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610353610d30565b6040518082815260200191505060405180910390f35b610371610d3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61041f600480360360608110156103c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d52565b604051808215151515815260200191505060405180910390f35b610441610e2b565b604051808260ff1660ff16815260200191505060405180910390f35b6104a96004803603604081101561047357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e42565b604051808215151515815260200191505060405180910390f35b610505600480360360208110156104d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ef5565b6040518082815260200191505060405180910390f35b6105676004803603604081101561053157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f0d565b005b610571610f1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f5600480360360208110156105c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b6040518082815260200191505060405180910390f35b6106616004803603606081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610f7b565b005b6106b96004803603606081101561067957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611347565b005b6106c3611726565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107035780820151818401526020810190506106e8565b50505050905090810190601f1680156107305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107806004803603602081101561075457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117c8565b005b6107ce6004803603604081101561079857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061188c565b604051808215151515815260200191505060405180910390f35b610834600480360360408110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611959565b604051808215151515815260200191505060405180910390f35b6108906004803603602081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611977565b6040518082815260200191505060405180910390f35b610908600480360360408110156108bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061198b565b6040518082815260200191505060405180910390f35b6109746004803603606081101561093457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291905050506119b0565b005b6109d86004803603604081101561098c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d9e565b6040518082815260200191505060405180910390f35b6109f6611dc3565b6040518082815260200191505060405180910390f35b610a4e60048036036020811015610a2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dc9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610a91578082015181840152602081019050610a76565b505050509050019250505060405180910390f35b610b0760048036036040811015610abb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e96565b6040518082815260200191505060405180910390f35b610b7360048036036060811015610b3357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611f1d565b005b610b7d6123ed565b6040518082815260200191505060405180910390f35b610bdf60048036036040811015610ba957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506123f3565b005b610c2360048036036020811015610bf757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612401565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b5050505050905090565b6000610cdb610cd46124c5565b84846124cd565b6001905092915050565b60096020528160005260406000208181548110610cfe57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b73271bf4568fb737cc2e6277e9b1ee0034098cda2a81565b6000610d5f8484846126c4565b610e2084610d6b6124c5565b610e1b85604051806060016040528060288152602001614fa960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dd16124c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6124cd565b600190509392505050565b6000600560009054906101000a900460ff16905090565b6000610eeb610e4f6124c5565b84610ee68560016000610e606124c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b6124cd565b6001905092915050565b60066020528060005260406000206000915090505481565b610f178282612ac2565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f863330846126c4565b610fc6737a250d5630b4cf539739df2c5dacb4c659f2488d60003073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b611005737a250d5630b4cf539739df2c5dacb4c659f2488d833073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b606060026040519080825280602002602001820160405280156110375781602001602082028038833980820191505090505b509050308160008151811061104857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061109057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed17398585853361111561070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156111ab578082015181840152602081019050611190565b505050509050019650505050505050600060405180830381600087803b1580156111d457600080fd5b505af11580156111e8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561121257600080fd5b810190808051604051939291908464010000000082111561123257600080fd5b8382019150602082018581111561124857600080fd5b825186602082028301116401000000008211171561126557600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561129c578082015181840152602081019050611281565b5050505090500160405250505090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1561b330e73faa7d5d1ac03c968d8f359b0191ccdb9cc002cf7d8eb6ae038cb8360008151811061130757fe5b60200260200101518460018151811061131c57fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b6113523330846126c4565b611392737a250d5630b4cf539739df2c5dacb4c659f2488d60003073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b6113d1737a250d5630b4cf539739df2c5dacb4c659f2488d833073ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b606060026040519080825280602002602001820160405280156114035781602001602082028038833980820191505090505b509050308160008151811061141457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811061145c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16638803dbee848685336114e161070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561157757808201518184015260208101905061155c565b505050509050019650505050505050600060405180830381600087803b1580156115a057600080fd5b505af11580156115b4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156115de57600080fd5b81019080805160405193929190846401000000008211156115fe57600080fd5b8382019150602082018581111561161457600080fd5b825186602082028301116401000000008211171561163157600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561166857808201518184015260208101905061164d565b50505050905001604052505050905061168a303361168530610f33565b6126c4565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc1561b330e73faa7d5d1ac03c968d8f359b0191ccdb9cc002cf7d8eb6ae038cb836000815181106116e657fe5b6020026020010151846001815181106116fb57fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117be5780601f10611793576101008083540402835291602001916117be565b820191906000526020600020905b8154815290600101906020018083116117a157829003601f168201915b5050505050905090565b611889818273ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561184957600080fd5b505afa15801561185d573d6000803e3d6000fd5b505050506040513d602081101561187357600080fd5b8101908080519060200190929190505050610f0d565b50565b600061194f6118996124c5565b8461194a8560405180606001604052806025815260200161509b60259139600160006118c36124c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6124cd565b6001905092915050565b600061196d6119666124c5565b84846126c4565b6001905092915050565b600061198482600061389d565b9050919050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6119dd3330848673ffffffffffffffffffffffffffffffffffffffff16613ab5909392919063ffffffff16565b611a1d737a250d5630b4cf539739df2c5dacb4c659f2488d60008573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b611a5c737a250d5630b4cf539739df2c5dacb4c659f2488d838573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b60606002604051908082528060200260200182016040528015611a8e5781602001602082028038833980820191505090505b5090508381600081518110611a9f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611ae757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166338ed173985858533611b6c61070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611c02578082015181840152602081019050611be7565b505050509050019650505050505050600060405180830381600087803b158015611c2b57600080fd5b505af1158015611c3f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015611c6957600080fd5b8101908080516040519392919084640100000000821115611c8957600080fd5b83820191506020820185811115611c9f57600080fd5b8251866020820283011164010000000082111715611cbc57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611cf3578082015181840152602081019050611cd8565b5050505090500160405250505090508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe4a1ae657f49cb1fb1c7d3a94ae6093565c4c8c0e03de488f79c377c3c3a24e083600181518110611d5e57fe5b602002602001015184600081518110611d7357fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b6007602052816000526040600020602052806000526040600020600091509150505481565b611d4c81565b6060600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611e8a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611e40575b50505050509050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f4a3330848673ffffffffffffffffffffffffffffffffffffffff16613ab5909392919063ffffffff16565b611f8a737a250d5630b4cf539739df2c5dacb4c659f2488d60008573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b611fc9737a250d5630b4cf539739df2c5dacb4c659f2488d838573ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b60606002604051908082528060200260200182016040528015611ffb5781602001602082028038833980820191505090505b509050838160008151811061200c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061205457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16638803dbee848685336120d961070842612a3a90919063ffffffff16565b6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561216f578082015181840152602081019050612154565b505050509050019650505050505050600060405180830381600087803b15801561219857600080fd5b505af11580156121ac573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156121d657600080fd5b81019080805160405193929190846401000000008211156121f657600080fd5b8382019150602082018581111561220c57600080fd5b825186602082028301116401000000008211171561222957600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612260578082015181840152602081019050612245565b505050509050016040525050509050612351338673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156122f057600080fd5b505afa158015612304573d6000803e3d6000fd5b505050506040513d602081101561231a57600080fd5b81019080805190602001909291905050508773ffffffffffffffffffffffffffffffffffffffff16613bbb9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe4a1ae657f49cb1fb1c7d3a94ae6093565c4c8c0e03de488f79c377c3c3a24e0836001815181106123ad57fe5b6020026020010151846000815181106123c257fe5b6020026020010151604051808381526020018281526020019250505060405180910390a35050505050565b61271081565b6123fd8282613c8c565b5050565b6124c2813073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561248257600080fd5b505afa158015612496573d6000803e3d6000fd5b505050506040513d60208110156124ac57600080fd5b8101908080519060200190929190505050613c8c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612553576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806150176024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614f406022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561274a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ff26025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180614efb6023913960400191505060405180910390fd5b61283b81604051806060016040528060268152602001614f62602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ce816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612a27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129ec5780820151818401526020810190506129d1565b50505050905090810190601f168015612a195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015612ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000612c3a8373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612b0d57600080fd5b505afa158015612b21573d6000803e3d6000fd5b505050506040513d6020811015612b3757600080fd5b810190808051906020019092919050505060ff16600a0a612c2c8473271bf4568fb737cc2e6277e9b1ee0034098cda2a73ffffffffffffffffffffffffffffffffffffffff16635708447d886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612be357600080fd5b505afa158015612bf7573d6000803e3d6000fd5b505050506040513d6020811015612c0d57600080fd5b810190808051906020019092919050505061471190919063ffffffff16565b61479790919063ffffffff16565b905060008111612cb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f2176616c7565000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612d0e57600080fd5b505afa158015612d22573d6000803e3d6000fd5b505050506040513d6020811015612d3857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a4390585306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612df957600080fd5b505afa158015612e0d573d6000803e3d6000fd5b505050506040513d6020811015612e2357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ff057737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015612ec557600080fd5b505afa158015612ed9573d6000803e3d6000fd5b505050506040513d6020811015612eef57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c6539685306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015612fb257600080fd5b505af1158015612fc6573d6000803e3d6000fd5b505050506040513d6020811015612fdc57600080fd5b810190808051906020019092919050505090505b61301d3382858773ffffffffffffffffffffffffffffffffffffffff16613ab5909392919063ffffffff16565b61302781836147e1565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156130a657600080fd5b505afa1580156130ba573d6000803e3d6000fd5b505050506040513d60208110156130d057600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff16636a627842306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561316257600080fd5b505af1158015613176573d6000803e3d6000fd5b505050506040513d602081101561318c57600080fd5b81019080805190602001909291905050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561321d57600080fd5b505afa158015613231573d6000803e3d6000fd5b505050506040513d602081101561324757600080fd5b810190808051906020019092919050505090506132fb613270838361499c90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006133ac61271061339e61338f8a611977565b8861471190919063ffffffff16565b61479790919063ffffffff16565b905061343d81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061350f81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061355c33826147e1565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208790806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f683898960405180848152602001838152602001828152602001935050505060405180910390a350505050505050565b6000811480613777575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561373a57600080fd5b505afa15801561374e573d6000803e3d6000fd5b505050506040513d602081101561376457600080fd5b8101908080519060200190929190505050145b6137cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806150656036913960400191505060405180910390fd5b613898838473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506149e6565b505050565b600080737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156138fa57600080fd5b505afa15801561390e573d6000803e3d6000fd5b505050506040513d602081101561392457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a4390585306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156139e557600080fd5b505afa1580156139f9573d6000803e3d6000fd5b505050506040513d6020811015613a0f57600080fd5b810190808051906020019092919050505090506000613a80613a6f613a32610d30565b613a61613a5088613a4288610f33565b612a3a90919063ffffffff16565b61271061471190919063ffffffff16565b61479790919063ffffffff16565b61271061499c90919063ffffffff16565b90506000811415613a9757611d4c92505050613aaf565b611d4c8111613aa65780613aaa565b611d4c5b925050505b92915050565b613bb5848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506149e6565b50505050565b613c87838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506149e6565b505050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082821015613d9a578192505b613da43384614c31565b613e3383600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461499c90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f0583600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461499c90919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000613f6f83613f61868561471190919063ffffffff16565b61479790919063ffffffff16565b90506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015613fcd57600080fd5b505afa158015613fe1573d6000803e3d6000fd5b505050506040513d6020811015613ff757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663e6a4390587306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156140b857600080fd5b505afa1580156140cc573d6000803e3d6000fd5b505050506040513d60208110156140e257600080fd5b81019080805190602001909291905050509050614135737a250d5630b4cf539739df2c5dacb4c659f2488d60008373ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b614174737a250d5630b4cf539739df2c5dacb4c659f2488d838373ffffffffffffffffffffffffffffffffffffffff1661367d9092919063ffffffff16565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156141f357600080fd5b505afa158015614207573d6000803e3d6000fd5b505050506040513d602081101561421d57600080fd5b81019080805190602001909291905050509050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663baa2abde8830866000803061427c61070842612a3a90919063ffffffff16565b6040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019750505050505050506040805180830381600087803b15801561435f57600080fd5b505af1158015614373573d6000803e3d6000fd5b505050506040513d604081101561438957600080fd5b810190808051906020019092919080519060200190929190505050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561442557600080fd5b505afa158015614439573d6000803e3d6000fd5b505050506040513d602081101561444f57600080fd5b81019080805190602001909291905050509050614475818361499c90919063ffffffff16565b935084841115614483578493505b61451284600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461499c90919063ffffffff16565b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561461157600080fd5b505afa158015614625573d6000803e3d6000fd5b505050506040513d602081101561463b57600080fd5b81019080805190602001909291905050509050600061465930610f33565b90506146653082614c31565b61469033838c73ffffffffffffffffffffffffffffffffffffffff16613bbb9092919063ffffffff16565b8973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8b848660405180848152602001838152602001828152602001935050505060405180910390a350505050505050505050565b6000808314156147245760009050614791565b600082840290508284828161473557fe5b041461478c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614f886021913960400191505060405180910390fd5b809150505b92915050565b60006147d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614de9565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61489981600254612a3a90919063ffffffff16565b6002819055506148f0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a3a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006149de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061297a565b905092915050565b614a058273ffffffffffffffffffffffffffffffffffffffff16614eaf565b614a77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310614ac65780518252602082019150602081019050602083039250614aa3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b28576040519150601f19603f3d011682016040523d82523d6000602084013e614b2d565b606091505b509150915081614ba5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115614c2b57808060200190516020811015614bc457600080fd5b8101908080519060200190929190505050614c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061503b602a913960400191505060405180910390fd5b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614fd16021913960400191505060405180910390fd5b614d2281604051806060016040528060228152602001614f1e602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d798160025461499c90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008083118290614e95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614e5a578082015181840152602081019050614e3f565b50505050905090810190601f168015614e875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614ea157fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015614ef15750808214155b9250505091905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202475320698bc1f0dec8820a2d56803d834dbb74df9405f8594e5a236dad0540c64736f6c63430005110032
Deployed Bytecode Sourcemap
9028:9041:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9028:9041:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4354:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4354:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:149;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1636:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9957:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9957:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1131:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9287:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1791:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1791:301:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4536:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2098:207;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2098:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9639:43;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9639:43:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13526:94;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13526:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9374:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1225:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1225:107:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11360:584;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11360:584:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10631:654;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10631:654:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4443:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4443:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13400:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13400:114:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2311:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2311:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1338:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1338:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17508:111;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17508:111:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9826:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9826:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12793:595;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12793:595:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9721:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9721:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9555:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17380:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17380:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17380:116:0;;;;;;;;;;;;;;;;;1499:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1499:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12028:681;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12028:681:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9593:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15493:98;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15493:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15365:116;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15365:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4354:83;4391:13;4424:5;4417:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4354:83;:::o;1636:149::-;1699:4;1716:39;1725:12;:10;:12::i;:::-;1739:7;1748:6;1716:8;:39::i;:::-;1773:4;1766:11;;1636:149;;;;:::o;9957:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1131:88::-;1175:4;1199:12;;1192:19;;1131:88;:::o;9287:80::-;9324:42;9287:80;:::o;1791:301::-;1877:4;1894:36;1904:6;1912:9;1923:6;1894:9;:36::i;:::-;1941:121;1950:6;1958:12;:10;:12::i;:::-;1972:89;2010:6;1972:89;;;;;;;;;;;;;;;;;:11;:19;1984:6;1972:19;;;;;;;;;;;;;;;:33;1992:12;:10;:12::i;:::-;1972:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;1941:8;:121::i;:::-;2080:4;2073:11;;1791:301;;;;;:::o;4536:83::-;4577:5;4602:9;;;;;;;;;;;4595:16;;4536:83;:::o;2098:207::-;2175:4;2192:83;2201:12;:10;:12::i;:::-;2215:7;2224:50;2263:10;2224:11;:25;2236:12;:10;:12::i;:::-;2224:25;;;;;;;;;;;;;;;:34;2250:7;2224:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;2192:8;:83::i;:::-;2293:4;2286:11;;2098:207;;;;:::o;9639:43::-;;;;;;;;;;;;;;;;;:::o;13526:94::-;13589:23;13598:5;13605:6;13589:8;:23::i;:::-;13526:94;;:::o;9374:93::-;9424:42;9374:93;:::o;1225:107::-;1282:4;1306:9;:18;1316:7;1306:18;;;;;;;;;;;;;;;;1299:25;;1225:107;;;:::o;11360:584::-;11445:45;11455:10;11475:4;11482:7;11445:9;:45::i;:::-;11511:41;9424:42;11550:1;11518:4;11511:24;;;;:41;;;;;:::i;:::-;11563:47;9424:42;11602:7;11570:4;11563:24;;;;:47;;;;;:::i;:::-;11631:22;11670:1;11656:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;11656:16:0;;;;11631:41;;11702:4;11683:5;11689:1;11683:8;;;;;;;;;;;;;:24;;;;;;;;;;;11729:5;11718;11724:1;11718:8;;;;;;;;;;;;;:16;;;;;;;;;;;11755:22;9424:42;11780:28;;;11809:7;11818:6;11826:5;11833:10;11845:13;11853:4;11845:3;:7;;:13;;;;:::i;:::-;11780:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11780:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11780:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11780:79:0;;;;;;39:16:-1;36:1;17:17;2:54;11780:79:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11780:79:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;11780:79:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11780:79:0;;;;;;;;;;;11755:104;;11904:5;11885:51;;11892:10;11885:51;;;11911:8;11920:1;11911:11;;;;;;;;;;;;;;11924:8;11933:1;11924:11;;;;;;;;;;;;;;11885:51;;;;;;;;;;;;;;;;;;;;;;;;11360:584;;;;;:::o;10631:654::-;10717:43;10727:10;10747:4;10754:5;10717:9;:43::i;:::-;10781:41;9424:42;10820:1;10788:4;10781:24;;;;:41;;;;;:::i;:::-;10833:45;9424:42;10872:5;10840:4;10833:24;;;;:45;;;;;:::i;:::-;10899:22;10938:1;10924:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;10924:16:0;;;;10899:41;;10970:4;10951:5;10957:1;10951:8;;;;;;;;;;;;;:24;;;;;;;;;;;10997:5;10986;10992:1;10986:8;;;;;;;;;;;;;:16;;;;;;;;;;;11023:22;9424:42;11048:28;;;11077:8;11087:5;11094;11101:10;11113:13;11121:4;11113:3;:7;;:13;;;;:::i;:::-;11048:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11048:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11048:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11048:79:0;;;;;;39:16:-1;36:1;17:17;2:54;11048:79:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11048:79:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;11048:79:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11048:79:0;;;;;;;;;;;11023:104;;11138:62;11156:4;11163:10;11175:24;11193:4;11175:9;:24::i;:::-;11138:9;:62::i;:::-;11245:5;11226:51;;11233:10;11226:51;;;11252:8;11261:1;11252:11;;;;;;;;;;;;;;11265:8;11274:1;11265:11;;;;;;;;;;;;;;11226:51;;;;;;;;;;;;;;;;;;;;;;;;10631:654;;;;;:::o;4443:87::-;4482:13;4515:7;4508:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4443:87;:::o;13400:114::-;13455:51;13463:5;13477;13470:23;;;13494:10;13470:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13470:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13470:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13470:35:0;;;;;;;;;;;;;;;;13455:7;:51::i;:::-;13400:114;:::o;2311:258::-;2393:4;2410:129;2419:12;:10;:12::i;:::-;2433:7;2442:96;2481:15;2442:96;;;;;;;;;;;;;;;;;:11;:25;2454:12;:10;:12::i;:::-;2442:25;;;;;;;;;;;;;;;:34;2468:7;2442:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;2410:8;:129::i;:::-;2557:4;2550:11;;2311:258;;;;:::o;1338:155::-;1404:4;1421:42;1431:12;:10;:12::i;:::-;1445:9;1456:6;1421:9;:42::i;:::-;1481:4;1474:11;;1338:155;;;;:::o;17508:111::-;17565:4;17589:22;17602:5;17609:1;17589:12;:22::i;:::-;17582:29;;17508:111;;;:::o;9826:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12793:595::-;12877:66;12908:10;12928:4;12935:7;12884:5;12877:30;;;;:66;;;;;;:::i;:::-;12964:42;9424;13004:1;12971:5;12964:25;;;;:42;;;;;:::i;:::-;13017:48;9424:42;13057:7;13024:5;13017:25;;;;:48;;;;;:::i;:::-;13086:22;13125:1;13111:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;13111:16:0;;;;13086:41;;13149:5;13138;13144:1;13138:8;;;;;;;;;;;;;:16;;;;;;;;;;;13184:4;13165:5;13171:1;13165:8;;;;;;;;;;;;;:24;;;;;;;;;;;13210:22;9424:42;13235:28;;;13264:7;13273:6;13281:5;13288:10;13300:13;13308:4;13300:3;:7;;:13;;;;:::i;:::-;13235:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13235:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13235:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13235:79:0;;;;;;39:16:-1;36:1;17:17;2:54;13235:79:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13235:79:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;13235:79:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13235:79:0;;;;;;;;;;;13210:104;;13348:5;13330:50;;13336:10;13330:50;;;13355:8;13364:1;13355:11;;;;;;;;;;;;;;13368:8;13377:1;13368:11;;;;;;;;;;;;;;13330:50;;;;;;;;;;;;;;;;;;;;;;;;12793:595;;;;;:::o;9721:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9555:31::-;9582:4;9555:31;:::o;17380:116::-;17438:16;17474:7;:14;17482:5;17474:14;;;;;;;;;;;;;;;17467:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17380:116;;;:::o;1499:131::-;1571:4;1595:11;:18;1607:5;1595:18;;;;;;;;;;;;;;;:27;1614:7;1595:27;;;;;;;;;;;;;;;;1588:34;;1499:131;;;;:::o;12028:681::-;12113:64;12144:10;12164:4;12171:5;12120;12113:30;;;;:64;;;;;;:::i;:::-;12198:42;9424;12238:1;12205:5;12198:25;;;;:42;;;;;:::i;:::-;12251:46;9424:42;12291:5;12258;12251:25;;;;:46;;;;;:::i;:::-;12318:22;12357:1;12343:16;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;12343:16:0;;;;12318:41;;12381:5;12370;12376:1;12370:8;;;;;;;;;;;;;:16;;;;;;;;;;;12416:4;12397:5;12403:1;12397:8;;;;;;;;;;;;;:24;;;;;;;;;;;12442:22;9424:42;12467:28;;;12496:8;12506:5;12513;12520:10;12532:13;12540:4;12532:3;:7;;:13;;;;:::i;:::-;12467:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12467:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12467:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12467:79:0;;;;;;39:16:-1;36:1;17:17;2:54;12467:79:0;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12467:79:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;12467:79:0;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12467:79:0;;;;;;;;;;;12442:104;;12557:78;12584:10;12603:5;12596:23;;;12628:4;12596:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12596:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12596:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12596:38:0;;;;;;;;;;;;;;;;12564:5;12557:26;;;;:78;;;;;:::i;:::-;12669:5;12651:50;;12657:10;12651:50;;;12676:8;12685:1;12676:11;;;;;;;;;;;;;;12689:8;12698:1;12689:11;;;;;;;;;;;;;;12651:50;;;;;;;;;;;;;;;;;;;;;;;;12028:681;;;;;:::o;9593:33::-;9621:5;9593:33;:::o;15493:98::-;15559:24;15569:5;15576:6;15559:9;:24::i;:::-;15493:98;;:::o;15365:116::-;15421:52;15431:5;15445:4;15438:22;;;15461:10;15438:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15438:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15438:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15438:34:0;;;;;;;;;;;;;;;;15421:9;:52::i;:::-;15365:116;:::o;794:98::-;839:15;874:10;867:17;;794:98;:::o;3711:335::-;3819:1;3802:19;;:5;:19;;;;3794:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3900:1;3881:21;;:7;:21;;;;3873:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3984:6;3954:11;:18;3966:5;3954:18;;;;;;;;;;;;;;;:27;3973:7;3954:27;;;;;;;;;;;;;;;:36;;;;4022:7;4006:32;;4015:5;4006:32;;;4031:6;4006:32;;;;;;;;;;;;;;;;;;3711:335;;;:::o;2575:468::-;2688:1;2670:20;;:6;:20;;;;2662:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2772:1;2751:23;;:9;:23;;;;2743:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2847;2869:6;2847:71;;;;;;;;;;;;;;;;;:9;:17;2857:6;2847:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;2827:9;:17;2837:6;2827:17;;;;;;;;;;;;;;;:91;;;;2952:32;2977:6;2952:9;:20;2962:9;2952:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;2929:9;:20;2939:9;2929:20;;;;;;;;;;;;;;;:55;;;;3017:9;3000:35;;3009:6;3000:35;;;3028:6;3000:35;;;;;;;;;;;;;;;;;;2575:468;;;:::o;4958:180::-;5038:4;5068:1;5063;:6;;5071:12;5055:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5055:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5095:6;5108:1;5104;:5;5095:14;;5129:1;5122:8;;;4958:180;;;;;:::o;4650:169::-;4702:4;4719:6;4732:1;4728;:5;4719:14;;4757:1;4752;:6;;4744:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4810:1;4803:8;;;4650:169;;;;:::o;13702:1651::-;13768:11;13782:85;13849:5;13835:29;;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13835:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13835:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13835:31:0;;;;;;;;;;;;;;;;13822:44;;13830:2;13822:44;13782:35;13810:6;9324:42;13782:16;;;13799:5;13782:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13782:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13782:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13782:23:0;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;:39;;:85;;;;:::i;:::-;13768:99;;13895:1;13886:6;:10;13878:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13928:13;9424:42;13959:11;;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13959:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13959:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13959:13:0;;;;;;;;;;;;;;;;13944:37;;;13982:5;13997:4;13944:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13944:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13944:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13944:59:0;;;;;;;;;;;;;;;;13928:75;;14035:1;14018:19;;:5;:19;;;14014:122;;;9424:42;14077:11;;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14077:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14077:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14077:13:0;;;;;;;;;;;;;;;;14062:40;;;14103:5;14118:4;14062:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14062:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14062:62:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14062:62:0;;;;;;;;;;;;;;;;14054:70;;14014:122;14156:57;14187:10;14199:5;14206:6;14163:5;14156:30;;;;:57;;;;;;:::i;:::-;14224:20;14230:5;14237:6;14224:5;:20::i;:::-;14291:12;14313:5;14306:23;;;14338:4;14306:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14306:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14306:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14306:38:0;;;;;;;;;;;;;;;;14291:53;;14367:5;14355:23;;;14387:4;14355:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14355:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14355:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14355:38:0;;;;;;;;;;;;;;;;;14404:11;14425:5;14418:23;;;14450:4;14418:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14418:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14418:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14418:38:0;;;;;;;;;;;;;;;;14404:52;;14596;14628:19;14639:7;14628:6;:10;;:19;;;;:::i;:::-;14596:8;:20;14605:10;14596:20;;;;;;;;;;;;;;;:27;14617:5;14596:27;;;;;;;;;;;;;;;;:31;;:52;;;;:::i;:::-;14566:8;:20;14575:10;14566:20;;;;;;;;;;;;;;;:27;14587:5;14566:27;;;;;;;;;;;;;;;:82;;;;14976:12;14991:40;9621:5;14991:30;15002:18;15014:5;15002:11;:18::i;:::-;14991:6;:10;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;14976:55;;15070:38;15100:7;15070:6;:18;15077:10;15070:18;;;;;;;;;;;;;;;:25;15089:5;15070:25;;;;;;;;;;;;;;;;:29;;:38;;;;:::i;:::-;15042:6;:18;15049:10;15042:18;;;;;;;;;;;;;;;:25;15061:5;15042:25;;;;;;;;;;;;;;;:66;;;;15144:35;15171:7;15144:10;:22;15155:10;15144:22;;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;15119:10;:22;15130:10;15119:22;;;;;;;;;;;;;;;:60;;;;15190:26;15196:10;15208:7;15190:5;:26::i;:::-;15247:7;:19;15255:10;15247:19;;;;;;;;;;;;;;;15272:5;15247:31;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;15247:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15314:5;15294:51;;15302:10;15294:51;;;15321:7;15330:6;15338;15294:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13702:1651;;;;;;;:::o;6653:344::-;6755:1;6746:5;:10;6745:62;;;;6805:1;6762:5;:15;;;6786:4;6793:7;6762:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6762:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6762:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6762:39:0;;;;;;;;;;;;;;;;:44;6745:62;6737:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6900:89;6919:5;6949;:13;;;:22;;;;6973:7;6982:5;6926:62;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6926:62:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;6926:62:0;6900:18;:89::i;:::-;6653:344;;;:::o;17691:375::-;17764:4;17781:13;9424:42;17812:11;;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17812:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17812:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17812:13:0;;;;;;;;;;;;;;;;17797:37;;;17835:5;17850:4;17797:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17797:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17797:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17797:59:0;;;;;;;;;;;;;;;;17781:75;;17867:11;17881:67;17890:57;17933:13;:11;:13::i;:::-;17890:38;17899:28;17920:6;17899:16;17909:5;17899:9;:16::i;:::-;:20;;:28;;;;:::i;:::-;9621:5;17890:8;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;9621:5;17881:8;;:67;;;;:::i;:::-;17867:81;;17973:1;17963:6;:11;17959:54;;;9582:4;17991:10;;;;;;17959:54;9582:4;18031:6;:12;:27;;18052:6;18031:27;;;9582:4;18031:27;18023:35;;;;17691:375;;;;;:::o;6444:201::-;6542:95;6561:5;6591;:18;;;:27;;;;6620:4;6626:2;6630:5;6568:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6568:68:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;6568:68:0;6542:18;:95::i;:::-;6444:201;;;;:::o;6263:173::-;6343:85;6362:5;6392;:14;;;:23;;;;6417:2;6421:5;6369:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6369:58:0;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;6369:58:0;6343:18;:85::i;:::-;6263:173;;;:::o;15669:1693::-;15746:12;15761:6;:18;15768:10;15761:18;;;;;;;;;;;;;;;:25;15780:5;15761:25;;;;;;;;;;;;;;;;15746:40;;15797:9;15809:8;:20;15818:10;15809:20;;;;;;;;;;;;;;;:27;15830:5;15809:27;;;;;;;;;;;;;;;;15797:39;;15871:6;15861:7;:16;15857:65;;;15903:7;15894:16;;15857:65;15942:25;15948:10;15960:6;15942:5;:25::i;:::-;16006:37;16036:6;16006;:18;16013:10;16006:18;;;;;;;;;;;;;;;:25;16025:5;16006:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;15978:6;:18;15985:10;15978:18;;;;;;;;;;;;;;;:25;15997:5;15978:25;;;;;;;;;;;;;;;:65;;;;16079:34;16106:6;16079:10;:22;16090:10;16079:22;;;;;;;;;;;;;;;;:26;;:34;;;;:::i;:::-;16054:10;:22;16065:10;16054:22;;;;;;;;;;;;;;;:59;;;;16183:12;16198:29;16219:7;16198:16;16207:6;16198:4;:8;;:16;;;;:::i;:::-;:20;;:29;;;;:::i;:::-;16183:44;;16248:13;9424:42;16279:11;;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16279:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16279:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16279:13:0;;;;;;;;;;;;;;;;16264:37;;;16302:5;16317:4;16264:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16264:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16264:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16264:59:0;;;;;;;;;;;;;;;;16248:75;;16344:42;9424;16384:1;16351:5;16344:25;;;;:42;;;;;:::i;:::-;16397:48;9424:42;16437:7;16404:5;16397:25;;;;:48;;;;;:::i;:::-;16466:12;16488:5;16481:23;;;16513:4;16481:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16481:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16481:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16481:38:0;;;;;;;;;;;;;;;;16466:53;;9424:42;16530:19;;;16562:5;16588:4;16606:7;16626:1;16640;16662:4;16680:13;16688:4;16680:3;:7;;:13;;;;:::i;:::-;16530:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16530:174:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16530:174:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16530:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16715:11;16736:5;16729:23;;;16761:4;16729:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16729:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16729:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16729:38:0;;;;;;;;;;;;;;;;16715:52;;16798:19;16810:6;16798:7;:11;;:19;;;;:::i;:::-;16788:29;;16842:4;16832:7;:14;16828:61;;;16873:4;16863:14;;16828:61;16939:40;16971:7;16939:8;:20;16948:10;16939:20;;;;;;;;;;;;;;;:27;16960:5;16939:27;;;;;;;;;;;;;;;;:31;;:40;;;;:::i;:::-;16909:8;:20;16918:10;16909:20;;;;;;;;;;;;;;;:27;16930:5;16909:27;;;;;;;;;;;;;;;:70;;;;17000:13;17023:5;17016:23;;;17048:4;17016:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17016:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17016:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17016:38:0;;;;;;;;;;;;;;;;17000:54;;17065:13;17081:24;17099:4;17081:9;:24::i;:::-;17065:40;;17126:30;17140:4;17147:8;17126:5;:30::i;:::-;17235:48;17262:10;17274:8;17242:5;17235:26;;;;:48;;;;;:::i;:::-;17320:5;17299:55;;17308:10;17299:55;;;17327:6;17335:8;17345;17299:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15669:1693;;;;;;;;;;:::o;5144:238::-;5196:4;5222:1;5217;:6;5213:47;;;5247:1;5240:8;;;;5213:47;5272:6;5285:1;5281;:5;5272:14;;5314:1;5309;5305;:5;;;;;;:10;5297:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5373:1;5366:8;;;5144:238;;;;;:::o;5388:123::-;5440:4;5464:39;5468:1;5471;5464:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5457:46;;5388:123;;;;:::o;3049:305::-;3141:1;3122:21;;:7;:21;;;;3114:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3207:24;3224:6;3207:12;;:16;;:24;;;;:::i;:::-;3192:12;:39;;;;3263:30;3286:6;3263:9;:18;3273:7;3263:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;3242:9;:18;3252:7;3242:18;;;;;;;;;;;;;;;:51;;;;3330:7;3309:37;;3326:1;3309:37;;;3339:6;3309:37;;;;;;;;;;;;;;;;;;3049:305;;:::o;4825:127::-;4877:4;4901:43;4905:1;4908;4901:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4894:50;;4825:127;;;;:::o;7003:598::-;7091:27;7099:5;7091:25;;;:27::i;:::-;7083:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7228:12;7242:23;7277:5;7269:19;;7289:4;7269:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;7269:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7227:67:0;;;;7313:7;7305:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7394:1;7374:10;:17;:21;7370:224;;;7516:10;7505:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7505:30:0;;;;;;;;;;;;;;;;7497:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7370:224;7003:598;;;;:::o;3360:345::-;3452:1;3433:21;;:7;:21;;;;3425:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3526:68;3549:6;3526:68;;;;;;;;;;;;;;;;;:9;:18;3536:7;3526:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;3505:9;:18;3515:7;3505:18;;;;;;;;;;;;;;;:89;;;;3620:24;3637:6;3620:12;;:16;;:24;;;;:::i;:::-;3605:12;:39;;;;3686:1;3660:37;;3669:7;3660:37;;;3690:6;3660:37;;;;;;;;;;;;;;;;;;3360:345;;:::o;5517:246::-;5597:4;5693:1;5689;:5;5696:12;5681:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5681:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5720:6;5733:1;5729;:5;;;;;;5720:14;;5754:1;5747:8;;;5517:246;;;;;:::o;5793:374::-;5853:4;5870:16;5897:19;5919:66;5897:88;;;;6088:7;6076:20;6064:32;;6128:3;6116:15;;:8;:15;;:42;;;;;6147:11;6135:8;:23;;6116:42;6108:51;;;;5793:374;;;:::o
Swarm Source
bzzr://2475320698bc1f0dec8820a2d56803d834dbb74df9405f8594e5a236dad0540c
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.