ERC-20
Overview
Max Total Supply
1,476,904.193376 GEM
Holders
17,404
Total Transfers
-
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
KeepGem
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2024-09-16 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; contract Context { function _msgSender() internal view returns (address) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } library ECDSA { function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { require(signature.length == 65, "ECDSA: invalid signature length"); bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } uint256 sUint = uint256(s); require(sUint <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, "ECDSA: invalid signature 's' value"); require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value"); return ecrecover(hash, v, r, s); } function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function burn(uint256 amount) external; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function burn(uint256 amount) external virtual override { _burn(_msgSender(), amount); } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 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); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract KeepGem is ERC20, Ownable { using ECDSA for bytes32; bool public transfersPaused; bool public transfersPermanentlyUnpaused; bool public mintingPermanentlyStopped; address private treasury; address private treasuryFee1; address private treasuryFee2; address private authorizedSigner = 0xFf7B1BE93c0928bCD866fd1bf611BBA85F36a55e; mapping(address => bool) private _whitelistedAddresses; uint256 public mintFee; uint256 public purchaseUpgradeFee; address public mintFeeRecipient; address public purchaseUpgradeFeeRecipient; uint256 public maxFreeClaims = 16; mapping(address => uint256) public freeClaimsUsed; uint256 public timeLimit; mapping(address => uint256) public lastMintCall; uint256 private signatureValidity = 120; uint256 public maxMintAmount = 75 * 10**decimals(); mapping(address => uint256) public _miningLevel; mapping(address => uint256) public _loadingLevel; mapping(address => uint256) public _transportationLevel; address[] public _distributionWallets; event FreeClaimUsed(address indexed user, uint256 claimsUsed); event Mint(address indexed to, uint256 amount); event MintWithReferrer(address indexed to, uint256 amount, address indexed referrer); event MintWithReferrers(address indexed to, uint256 amount, address indexed referrer, address indexed secondaryReferrer); event MaxFreeClaimsChanged(uint256 maxFreeClaims); event WhitelistedAddressAdded(address account); event WhitelistedAddressRemoved(address account); event PurchaseUpgrade(address indexed buyer, uint256 cost); constructor() ERC20("KeepGem Wallet", "GEM") { transfersPaused = true; transfersPermanentlyUnpaused = false; mintingPermanentlyStopped = false; treasury = 0x3D6D96436f100c5EdcD568d41B8d173c2b74D5e8; treasuryFee1 = 0x4eFf29cF9b9Fea89bd28c9528Bda10B9F7951970; treasuryFee2 = 0xb631aD55353fab86FBCF593f46625F5251105141; _distributionWallets = [ 0xB4744fBbE290C512f1673A356E4B641b5663f565, 0x399728D4019C0d28F4A161a920fbDF2CbCe69259, 0x9bEF7fA77C5f07Aa7aa3748600037197d1507c63, 0x2be735b22D6db30DEb8fC37F775B0727c3A1F116, 0x9CA6B9983615B296FafA3C4dd55Bf6783f83B620 ]; mintFee = 0.000004 ether; purchaseUpgradeFee = 0.000006 ether; mintFeeRecipient = treasuryFee1; purchaseUpgradeFeeRecipient = treasuryFee2; timeLimit = 1500; _whitelistedAddresses[treasury] = true; } function decimals() public view virtual override returns (uint8) { return 6; } modifier whenMintingAllowed() { require(!mintingPermanentlyStopped, "Minting has been permanently stopped"); _; } modifier onlyWhitelisted() { require( !transfersPaused || _whitelistedAddresses[_msgSender()] || _msgSender() == treasury || transfersPermanentlyUnpaused, "Transfers are currently paused and sender is not whitelisted" ); _; } function setAuthorizedSigner(address _authorizedSigner) public onlyOwner { authorizedSigner = _authorizedSigner; } function recoverSigner(bytes32 message, bytes memory signature) internal pure returns (address) { return ECDSA.recover(message.toEthSignedMessageHash(), signature); } function setMintFee(uint256 _mintFee) public onlyOwner { mintFee = _mintFee; } function setPurchaseUpgradeFee(uint256 _purchaseUpgradeFee) public onlyOwner { purchaseUpgradeFee = _purchaseUpgradeFee; } function setMintFeeRecipient(address _mintFeeRecipient) public onlyOwner { mintFeeRecipient = _mintFeeRecipient; } function setPurchaseUpgradeFeeRecipient(address _purchaseUpgradeFeeRecipient) public onlyOwner { purchaseUpgradeFeeRecipient = _purchaseUpgradeFeeRecipient; } function setTreasury(address _treasury) public onlyOwner { treasury = _treasury; } function setMaxFreeClaims(uint256 _maxFreeClaims) public onlyOwner { maxFreeClaims = _maxFreeClaims; emit MaxFreeClaimsChanged(_maxFreeClaims); } function addWhitelistedAddress(address account) public onlyOwner { _whitelistedAddresses[account] = true; emit WhitelistedAddressAdded(account); } function removeWhitelistedAddress(address account) public onlyOwner { _whitelistedAddresses[account] = false; emit WhitelistedAddressRemoved(account); } function setTimeLimit(uint256 newTimeLimit) public onlyOwner { timeLimit = newTimeLimit; } function setSignatureValidity(uint256 _signatureValidity) public onlyOwner { signatureValidity = _signatureValidity; } function setMaxMintAmount(uint256 _maxMintAmount) public onlyOwner { maxMintAmount = _maxMintAmount * 10**decimals(); } function updateDistributionWallets(address[] memory wallets) public onlyOwner { require(wallets.length == 5, "There must be exactly 5 wallets in the distribution list"); _distributionWallets = wallets; } function updateMiningLevel(address to, uint256 newLevel) external onlyOwner { _miningLevel[to] = newLevel; } function updateLoadingLevel(address to, uint256 newLevel) external onlyOwner { _loadingLevel[to] = newLevel; } function updateTransportationLevel(address to, uint256 newLevel) external onlyOwner { _transportationLevel[to] = newLevel; } function calculateAmount( address to, uint256 blockTimestamp ) public view returns (uint256) { uint256 miningLevel = _miningLevel[to] == 0 ? 100 : _miningLevel[to]; uint256 loadingLevel = _loadingLevel[to] == 0 ? 2778 : _loadingLevel[to]; uint256 transportationLevel = _transportationLevel[to] == 0 ? 7200 : _transportationLevel[to]; uint256 timeSinceLastMint = blockTimestamp - lastMintCall[to]; uint256 effectiveTimeSinceLastMint = timeSinceLastMint > transportationLevel ? transportationLevel : timeSinceLastMint; uint256 rawAmount = (miningLevel * loadingLevel * effectiveTimeSinceLastMint) / 10000; return rawAmount; } function mintWithSignature( address to, uint256 nonce, bytes memory signature, bool isFreeClaim, uint256 blockTimestamp ) public payable whenMintingAllowed { require(block.timestamp - lastMintCall[to] >= timeLimit, "Minting too frequently"); uint256 amount = calculateAmount(to, block.timestamp); require(amount <= maxMintAmount, "Amount exceeds the maximum mint limit"); lastMintCall[to] = block.timestamp; address payer = isFreeClaim ? to : msg.sender; if (isFreeClaim) { require(freeClaimsUsed[payer] < maxFreeClaims, "Maximum free claims reached"); freeClaimsUsed[payer] += 1; } else { require(msg.value == mintFee, "Insufficient mint fee"); } require(block.timestamp <= blockTimestamp + signatureValidity, "Signature has expired"); bytes32 message = keccak256(abi.encodePacked(to, nonce, blockTimestamp)); require(recoverSigner(message, signature) == authorizedSigner, "Invalid signature"); _mint(to, amount); uint256 extraAmount = (amount * 50) / 100; distributeExtraAmount(extraAmount); (bool sent, ) = mintFeeRecipient.call{value: mintFee}(""); require(sent, "Failed to send Ether"); } function mintWithReferrerWithSignature( address to, address referrer, uint256 nonce, bytes memory signature, bool isFreeClaim, uint256 blockTimestamp ) public payable whenMintingAllowed { require(block.timestamp - lastMintCall[to] >= timeLimit, "Minting too frequently"); uint256 amount = calculateAmount(to, block.timestamp); require(amount <= maxMintAmount, "Amount exceeds the maximum mint limit"); lastMintCall[to] = block.timestamp; address payer = isFreeClaim ? to : msg.sender; if (isFreeClaim) { require(freeClaimsUsed[payer] < maxFreeClaims, "Maximum free claims reached"); freeClaimsUsed[payer] += 1; } else { require(msg.value == mintFee, "Insufficient mint fee"); } require(block.timestamp <= blockTimestamp + signatureValidity, "Signature has expired"); bytes32 message = keccak256(abi.encodePacked(to, referrer, nonce, blockTimestamp)); require(recoverSigner(message, signature) == authorizedSigner, "Invalid signature"); _mint(to, amount); if (referrer != address(0)) { uint256 referrerAmount = (amount * 15) / 100; _mint(referrer, referrerAmount); } uint256 extraAmount = (amount * 50) / 100; distributeExtraAmount(extraAmount); (bool sent, ) = mintFeeRecipient.call{value: mintFee}(""); require(sent, "Failed to send Ether"); } function mintWithReferrersWithSignature( address to, address referrer, address secondaryReferrer, uint256 nonce, bytes memory signature, bool isFreeClaim, uint256 blockTimestamp ) public payable whenMintingAllowed { require(block.timestamp - lastMintCall[to] >= timeLimit, "Minting too frequently"); uint256 amount = calculateAmount(to, block.timestamp); require(amount <= maxMintAmount, "Amount exceeds the maximum mint limit"); lastMintCall[to] = block.timestamp; address payer = isFreeClaim ? to : msg.sender; if (isFreeClaim) { require(freeClaimsUsed[payer] < maxFreeClaims, "Maximum free claims reached"); freeClaimsUsed[payer] += 1; } else { require(msg.value == mintFee, "Insufficient mint fee"); } require(block.timestamp <= blockTimestamp + signatureValidity, "Signature has expired"); bytes32 message = keccak256(abi.encodePacked(to, referrer, secondaryReferrer, nonce, blockTimestamp)); require(recoverSigner(message, signature) == authorizedSigner, "Invalid signature"); _mint(to, amount); if (referrer != address(0)) { uint256 referrerAmount = (amount * 15) / 100; _mint(referrer, referrerAmount); } if (secondaryReferrer != address(0)) { uint256 secondaryReferrerAmount = (amount * 5) / 100; _mint(secondaryReferrer, secondaryReferrerAmount); } uint256 extraAmount = (amount * 50) / 100; distributeExtraAmount(extraAmount); (bool sent, ) = mintFeeRecipient.call{value: mintFee}(""); require(sent, "Failed to send Ether"); } function distributeExtraAmount(uint256 extraAmount) internal { _mint(_distributionWallets[0], (extraAmount * 40) / 100); _mint(_distributionWallets[1], (extraAmount * 15) / 100); _mint(_distributionWallets[2], (extraAmount * 10) / 100); _mint(_distributionWallets[3], (extraAmount * 20) / 100); _mint(_distributionWallets[4], (extraAmount * 15) / 100); } function stopMintingPermanently() public onlyOwner { mintingPermanentlyStopped = true; } function unpauseTransfers() public onlyOwner { require(!transfersPermanentlyUnpaused, "Transfers have already been permanently unpaused"); transfersPaused = false; transfersPermanentlyUnpaused = true; } function burn(uint256 amount) public override { _burn(_msgSender(), amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal override onlyWhitelisted { super._beforeTokenTransfer(from, to, amount); } function transfer(address recipient, uint256 amount) public virtual override onlyWhitelisted returns (bool) { _beforeTokenTransfer(_msgSender(), recipient, amount); return super.transfer(recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) public virtual override onlyWhitelisted returns (bool) { _beforeTokenTransfer(sender, recipient, amount); return super.transferFrom(sender, recipient, amount); } function approve(address spender, uint256 amount) public virtual override onlyWhitelisted returns (bool) { _beforeTokenTransfer(_msgSender(), spender, amount); return super.approve(spender, amount); } function withdraw() public onlyOwner { uint256 balance = address(this).balance; require(balance > 0, "No balance to withdraw"); (bool success, ) = owner().call{value: balance}(""); require(success, "Withdraw failed"); } function UpgradeMining() public payable { uint256 currentLevel = _miningLevel[msg.sender]; if (currentLevel == 0) { currentLevel = 100; } uint256 cost; if (currentLevel == 100) { // 1.00 cost = 2 * 10**decimals(); } else if (currentLevel == 125) { // 1.25 cost = 5 * 10**decimals(); } else if (currentLevel == 150) { // 1.50 cost = 25 * 10**decimals(); } else if (currentLevel == 175) { // 1.75 cost = 50 * 10**decimals(); } else { revert("Maximum level reached"); } require(balanceOf(msg.sender) >= cost, "Insufficient GEM balance"); _transfer(msg.sender, treasury, cost); if (currentLevel == 100) { _miningLevel[msg.sender] = 125; } else if (currentLevel == 125) { _miningLevel[msg.sender] = 150; } else if (currentLevel == 150) { _miningLevel[msg.sender] = 175; } else if (currentLevel == 175) { _miningLevel[msg.sender] = 200; } require(msg.value == purchaseUpgradeFee, "Incorrect Ether value sent for upgrade fee"); (bool sent, ) = purchaseUpgradeFeeRecipient.call{value: purchaseUpgradeFee}(""); require(sent, "Failed to send Ether"); } function UpgradeLoading() public payable { uint256 currentLevel = _loadingLevel[msg.sender]; if (currentLevel == 0) { currentLevel = 2778; } uint256 cost; if (currentLevel == 2778) { // 0.10 cost = 3 * 10**decimals(); } else if (currentLevel == 5556) { // 0.20 cost = 10 * 10**decimals(); } else if (currentLevel == 8334) { // 0.30 cost = 20 * 10**decimals(); } else if (currentLevel == 13890) { // 0.50 cost = 60 * 10**decimals(); } else if (currentLevel == 19446) { // 0.70 cost = 120 * 10**decimals(); } else if (currentLevel == 27780) { // 1.00 cost = 180 * 10**decimals(); } else { revert("Maximum level reached"); } require(balanceOf(msg.sender) >= cost, "Insufficient GEM balance"); _transfer(msg.sender, treasury, cost); if (currentLevel == 2778) { _loadingLevel[msg.sender] = 5556; } else if (currentLevel == 5556) { _loadingLevel[msg.sender] = 8334; } else if (currentLevel == 8334) { _loadingLevel[msg.sender] = 13890; } else if (currentLevel == 13890) { _loadingLevel[msg.sender] = 19446; } else if (currentLevel == 19446) { _loadingLevel[msg.sender] = 27780; } else if (currentLevel == 27780) { _loadingLevel[msg.sender] = 41670; } require(msg.value == purchaseUpgradeFee, "Incorrect Ether value sent for upgrade fee"); (bool sent, ) = purchaseUpgradeFeeRecipient.call{value: purchaseUpgradeFee}(""); require(sent, "Failed to send Ether"); } function UpgradeTransportation() public payable { uint256 currentLevel = _transportationLevel[msg.sender]; if (currentLevel == 0) { currentLevel = 7200; } uint256 cost; if (currentLevel == 7200) { cost = 3 * 10**decimals(); } else if (currentLevel == 10800) { cost = 10 * 10**decimals(); } else if (currentLevel == 14400) { cost = 20 * 10**decimals(); } else if (currentLevel == 21600) { cost = 60 * 10**decimals(); } else if (currentLevel == 28800) { cost = 120 * 10**decimals(); } else if (currentLevel == 43200) { cost = 180 * 10**decimals(); } else { revert("Maximum level reached"); } require(balanceOf(msg.sender) >= cost, "Insufficient GEM balance"); _transfer(msg.sender, treasury, cost); if (currentLevel == 7200) { _transportationLevel[msg.sender] = 10800; } else if (currentLevel == 10800) { _transportationLevel[msg.sender] = 14400; } else if (currentLevel == 14400) { _transportationLevel[msg.sender] = 21600; } else if (currentLevel == 21600) { _transportationLevel[msg.sender] = 28800; } else if (currentLevel == 28800) { _transportationLevel[msg.sender] = 43200; } else if (currentLevel == 43200) { _transportationLevel[msg.sender] = 86400; } require(msg.value == purchaseUpgradeFee, "Incorrect Ether value sent for upgrade fee"); (bool sent, ) = purchaseUpgradeFeeRecipient.call{value: purchaseUpgradeFee}(""); require(sent, "Failed to send Ether"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"claimsUsed","type":"uint256"}],"name":"FreeClaimUsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxFreeClaims","type":"uint256"}],"name":"MaxFreeClaimsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"}],"name":"MintWithReferrer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"secondaryReferrer","type":"address"}],"name":"MintWithReferrers","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"}],"name":"PurchaseUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistedAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistedAddressRemoved","type":"event"},{"inputs":[],"name":"UpgradeLoading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"UpgradeMining","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"UpgradeTransportation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_distributionWallets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_loadingLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_miningLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_transportationLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"calculateAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freeClaimsUsed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastMintCall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFreeClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bool","name":"isFreeClaim","type":"bool"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"mintWithReferrerWithSignature","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"address","name":"secondaryReferrer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bool","name":"isFreeClaim","type":"bool"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"mintWithReferrersWithSignature","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bool","name":"isFreeClaim","type":"bool"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"mintWithSignature","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintingPermanentlyStopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseUpgradeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseUpgradeFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_authorizedSigner","type":"address"}],"name":"setAuthorizedSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxFreeClaims","type":"uint256"}],"name":"setMaxFreeClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintAmount","type":"uint256"}],"name":"setMaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintFee","type":"uint256"}],"name":"setMintFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mintFeeRecipient","type":"address"}],"name":"setMintFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_purchaseUpgradeFee","type":"uint256"}],"name":"setPurchaseUpgradeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_purchaseUpgradeFeeRecipient","type":"address"}],"name":"setPurchaseUpgradeFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_signatureValidity","type":"uint256"}],"name":"setSignatureValidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTimeLimit","type":"uint256"}],"name":"setTimeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopMintingPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transfersPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfersPermanentlyUnpaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpauseTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"updateDistributionWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"updateLoadingLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"updateMiningLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"newLevel","type":"uint256"}],"name":"updateTransportationLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600980546001600160a01b03191673ff7b1be93c0928bcd866fd1bf611bba85f36a55e1790556010600f5560786013556200003d600690565b6200004a90600a6200044d565b6200005790604b62000464565b60145534801562000066575f80fd5b506040518060400160405280600e81526020016d12d9595c11d95b4815d85b1b195d60921b8152506040518060400160405280600381526020016247454d60e81b8152508160039081620000bb91906200051e565b506004620000ca82826200051e565b505050620000e7620000e16200026b60201b60201c565b6200026f565b6005805462ffffff60a01b1916600160a01b178155600680546001600160a01b0319908116733d6d96436f100c5edcd568d41b8d173c2b74d5e817909155600780548216734eff29cf9b9fea89bd28c9528bda10b9f79519701790556008805490911673b631ad55353fab86fbcf593f46625f52511051411790556040805160a08101825273b4744fbbe290c512f1673a356e4b641b5663f565815273399728d4019c0d28f4a161a920fbdf2cbce692596020820152739bef7fa77c5f07aa7aa3748600037197d1507c6391810191909152732be735b22d6db30deb8fc37f775b0727c3a1f1166060820152739ca6b9983615b296fafa3c4dd55bf6783f83b6206080820152620001fc9160189190620002c0565b506503a352944000600b55650574fbde6000600c55600754600d80546001600160a01b03199081166001600160a01b0393841617909155600854600e80549092169083161790556105dc601155600654165f908152600a60205260409020805460ff19166001179055620005e6565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b828054828255905f5260205f2090810192821562000316579160200282015b828111156200031657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002df565b506200032492915062000328565b5090565b5b8082111562000324575f815560010162000329565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200039257815f19048211156200037657620003766200033e565b808516156200038457918102915b93841c939080029062000357565b509250929050565b5f82620003aa5750600162000447565b81620003b857505f62000447565b8160018114620003d15760028114620003dc57620003fc565b600191505062000447565b60ff841115620003f057620003f06200033e565b50506001821b62000447565b5060208310610133831016604e8410600b841016171562000421575081810a62000447565b6200042d838362000352565b805f19048211156200044357620004436200033e565b0290505b92915050565b5f6200045d60ff8416836200039a565b9392505050565b80820281158282048414176200044757620004476200033e565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620004a757607f821691505b602082108103620004c657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000519575f81815260208120601f850160051c81016020861015620004f45750805b601f850160051c820191505b81811015620005155782815560010162000500565b5050505b505050565b81516001600160401b038111156200053a576200053a6200047e565b62000552816200054b845462000492565b84620004cc565b602080601f83116001811462000588575f8415620005705750858301515b5f19600386901b1c1916600185901b17855562000515565b5f85815260208120601f198616915b82811015620005b85788860151825594840194600190910190840162000597565b5085821015620005d657878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61388280620005f45f395ff3fe608060405260043610610366575f3560e01c8063715018a6116101c8578063c2f45525116100fd578063dd62ed3e1161009d578063e78edd241161006d578063e78edd241461099e578063eddd0d9c146109c9578063f0f44260146109e8578063f2fde38b14610a07575f80fd5b8063dd62ed3e14610909578063e0df2b1c1461094d578063e2889c8214610960578063e43b73f81461097f575f80fd5b8063d279b0ca116100d8578063d279b0ca14610881578063d701c4c5146108a0578063d8625a19146108cb578063d9a23a6d146108ea575f80fd5b8063c2f455251461082e578063c530fead1461084d578063c83a957714610862575f80fd5b8063a44cf62011610168578063b23a611211610143578063b23a6112146107a3578063b3096f69146107ce578063b4091e59146107ee578063c08d1fe514610819575f80fd5b8063a44cf6201461075d578063a457c2d714610765578063a9059cbb14610784575f80fd5b80638da5cb5b116101a35780638da5cb5b146106fa57806395d89b4114610717578063a02e923b1461072b578063a104e2a71461074a575f80fd5b8063715018a6146106b3578063765b0c36146106c75780638936a91f146106e6575f80fd5b8063313ce5671161029e578063530cd5ab1161023e5780636316b81e116102195780636316b81e1461062257806363fc904e1461064d5780636704a73b1461066057806370a082311461067f575f80fd5b8063530cd5ab146105dc5780635d49fdb8146105fb57806361861b401461061a575f80fd5b80633ccfd60b116102795780633ccfd60b1461058157806342966c681461059557806343dd6fb1146105b45780634563f30a146105bc575f80fd5b8063313ce567146105285780633788fb6a146105435780633950935114610562575f80fd5b806313966db511610309578063239c70ae116102e4578063239c70ae146104b657806323b872dd146104cb57806329550f97146104ea57806329975b4314610509575f80fd5b806313966db51461046e57806318160ddd146104835780631939b0cc14610497575f80fd5b8063088a4ed011610344578063088a4ed0146103e3578063095ea7b31461040457806309de0b5e14610423578063120ab2191461045a575f80fd5b806303212e361461036a57806306fdde031461039f57806307cf016d146103c0575b5f80fd5b348015610375575f80fd5b5060055461038a90600160b01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103aa575f80fd5b506103b3610a26565b6040516103969190612fe4565b3480156103cb575f80fd5b506103d5600c5481565b604051908152602001610396565b3480156103ee575f80fd5b506104026103fd36600461302f565b610ab6565b005b34801561040f575f80fd5b5061038a61041e366004613061565b610b05565b34801561042e575f80fd5b50600e54610442906001600160a01b031681565b6040516001600160a01b039091168152602001610396565b348015610465575f80fd5b50610402610b9b565b348015610479575f80fd5b506103d5600b5481565b34801561048e575f80fd5b506002546103d5565b3480156104a2575f80fd5b506104026104b136600461302f565b610bda565b3480156104c1575f80fd5b506103d560145481565b3480156104d6575f80fd5b5061038a6104e5366004613089565b610c40565b3480156104f5575f80fd5b506103d5610504366004613061565b610cd5565b348015610514575f80fd5b506104026105233660046130c2565b610e02565b348015610533575f80fd5b5060405160068152602001610396565b34801561054e575f80fd5b5061040261055d3660046130c2565b610e7f565b34801561056d575f80fd5b5061038a61057c366004613061565b610ecb565b34801561058c575f80fd5b50610402610f0f565b3480156105a0575f80fd5b506104026105af36600461302f565b611026565b610402611033565b3480156105c7575f80fd5b5060055461038a90600160a01b900460ff1681565b3480156105e7575f80fd5b506104026105f63660046130c2565b611268565b348015610606575f80fd5b50610402610615366004613061565b6112e2565b610402611327565b34801561062d575f80fd5b506103d561063c3660046130c2565b60156020525f908152604090205481565b61040261065b36600461319b565b611533565b34801561066b575f80fd5b5061040261067a366004613228565b611862565b34801561068a575f80fd5b506103d56106993660046130c2565b6001600160a01b03165f9081526020819052604090205490565b3480156106be575f80fd5b50610402611916565b3480156106d2575f80fd5b50600d54610442906001600160a01b031681565b3480156106f1575f80fd5b5061040261194b565b348015610705575f80fd5b506005546001600160a01b0316610442565b348015610722575f80fd5b506103b36119fe565b348015610736575f80fd5b50610402610745366004613061565b611a0d565b6104026107583660046132d0565b611a52565b610402611d41565b348015610770575f80fd5b5061038a61077f366004613061565b611f4e565b34801561078f575f80fd5b5061038a61079e366004613061565b611fe8565b3480156107ae575f80fd5b506103d56107bd3660046130c2565b60166020525f908152604090205481565b3480156107d9575f80fd5b5060055461038a90600160a81b900460ff1681565b3480156107f9575f80fd5b506103d56108083660046130c2565b60106020525f908152604090205481565b348015610824575f80fd5b506103d560115481565b348015610839575f80fd5b506104026108483660046130c2565b612072565b348015610858575f80fd5b506103d5600f5481565b34801561086d575f80fd5b5061040261087c36600461302f565b6120be565b34801561088c575f80fd5b5061040261089b3660046130c2565b6120ed565b3480156108ab575f80fd5b506103d56108ba3660046130c2565b60126020525f908152604090205481565b3480156108d6575f80fd5b506104426108e536600461302f565b612139565b3480156108f5575f80fd5b5061040261090436600461302f565b612161565b348015610914575f80fd5b506103d561092336600461334c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61040261095b36600461337d565b612190565b34801561096b575f80fd5b5061040261097a36600461302f565b61243f565b34801561098a575f80fd5b50610402610999366004613061565b61246e565b3480156109a9575f80fd5b506103d56109b83660046130c2565b60176020525f908152604090205481565b3480156109d4575f80fd5b506104026109e336600461302f565b6124b3565b3480156109f3575f80fd5b50610402610a023660046130c2565b6124e2565b348015610a12575f80fd5b50610402610a213660046130c2565b61252e565b606060038054610a35906133e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a61906133e8565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b5050505050905090565b6005546001600160a01b03163314610ae95760405162461bcd60e51b8152600401610ae090613420565b60405180910390fd5b610af56006600a613549565b610aff9082613557565b60145550565b6005545f90600160a01b900460ff161580610b2e5750335f908152600a602052604090205460ff165b80610b4c57506006546001600160a01b0316336001600160a01b0316145b80610b605750600554600160a81b900460ff165b610b7c5760405162461bcd60e51b8152600401610ae09061356e565b610b88335b84846125c6565b610b92838361263b565b90505b92915050565b6005546001600160a01b03163314610bc55760405162461bcd60e51b8152600401610ae090613420565b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b03163314610c045760405162461bcd60e51b8152600401610ae090613420565b600f8190556040518181527ffcb00db387baab0c72747136c5d3b51cec86d298c4e8e815943bc60beaede0bc906020015b60405180910390a150565b6005545f90600160a01b900460ff161580610c695750335f908152600a602052604090205460ff165b80610c8757506006546001600160a01b0316336001600160a01b0316145b80610c9b5750600554600160a81b900460ff165b610cb75760405162461bcd60e51b8152600401610ae09061356e565b610cc28484846125c6565b610ccd848484612647565b949350505050565b6001600160a01b0382165f90815260156020526040812054819015610d11576001600160a01b0384165f90815260156020526040902054610d14565b60645b6001600160a01b0385165f908152601660205260408120549192509015610d52576001600160a01b0385165f90815260166020526040902054610d56565b610ada5b6001600160a01b0386165f908152601760205260408120549192509015610d94576001600160a01b0386165f90815260176020526040902054610d98565b611c205b6001600160a01b0387165f9081526012602052604081205491925090610dbe90876135cb565b90505f828211610dce5781610dd0565b825b90505f61271082610de18789613557565b610deb9190613557565b610df591906135de565b9998505050505050505050565b6005546001600160a01b03163314610e2c5760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b0381165f818152600a6020908152604091829020805460ff1916600117905590519182527fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f9101610c35565b6005546001600160a01b03163314610ea95760405162461bcd60e51b8152600401610ae090613420565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610f06918590610f019086906135fd565b6126f1565b50600192915050565b6005546001600160a01b03163314610f395760405162461bcd60e51b8152600401610ae090613420565b4780610f805760405162461bcd60e51b81526020600482015260166024820152754e6f2062616c616e636520746f20776974686472617760501b6044820152606401610ae0565b5f610f936005546001600160a01b031690565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610fda576040519150601f19603f3d011682016040523d82523d5f602084013e610fdf565b606091505b50509050806110225760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b6044820152606401610ae0565b5050565b6110303382612815565b50565b335f908152601560205260408120549081900361104e575060645b5f81606403611075576110636006600a613549565b61106e906002613557565b9050611112565b81607d03611094576110896006600a613549565b61106e906005613557565b816096036110b3576110a86006600a613549565b61106e906019613557565b8160af036110d2576110c76006600a613549565b61106e906032613557565b60405162461bcd60e51b815260206004820152601560248201527413585e1a5b5d5b481b195d995b081c995858da1959605a1b6044820152606401610ae0565b335f908152602081905260409020548111156111405760405162461bcd60e51b8152600401610ae090613610565b6006546111589033906001600160a01b031683612961565b8160640361117757335f908152601560205260409020607d90556111d0565b81607d0361119657335f908152601560205260409020609690556111d0565b816096036111b557335f90815260156020526040902060af90556111d0565b8160af036111d057335f90815260156020526040902060c890555b600c5434146111f15760405162461bcd60e51b8152600401610ae090613647565b600e54600c546040515f926001600160a01b031691908381818185875af1925050503d805f811461123d576040519150601f19603f3d011682016040523d82523d5f602084013e611242565b606091505b50509050806112635760405162461bcd60e51b8152600401610ae090613691565b505050565b6005546001600160a01b031633146112925760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b0381165f818152600a6020908152604091829020805460ff1916905590519182527ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a9101610c35565b6005546001600160a01b0316331461130c5760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b039091165f90815260176020526040902055565b335f90815260166020526040812054908190036113435750610ada5b5f81610ada0361136b576113596006600a613549565b611364906003613557565b905061140b565b816115b40361138b576113806006600a613549565b61136490600a613557565b8161208e036113ab576113a06006600a613549565b611364906014613557565b81613642036113cb576113c06006600a613549565b61136490603c613557565b81614bf6036113eb576113e06006600a613549565b611364906078613557565b81616c84036110d2576114006006600a613549565b6113649060b4613557565b335f908152602081905260409020548111156114395760405162461bcd60e51b8152600401610ae090613610565b6006546114519033906001600160a01b031683612961565b81610ada0361147257335f9081526016602052604090206115b490556111d0565b816115b40361149357335f90815260166020526040902061208e90556111d0565b8161208e036114b457335f90815260166020526040902061364290556111d0565b81613642036114d557335f908152601660205260409020614bf690556111d0565b81614bf6036114f657335f908152601660205260409020616c8490556111d0565b81616c84036111d057335f90815260166020526040902061a2c69055600c5434146111f15760405162461bcd60e51b8152600401610ae090613647565b600554600160b01b900460ff161561155d5760405162461bcd60e51b8152600401610ae0906136bf565b6011546001600160a01b0388165f9081526012602052604090205461158290426135cb565b10156115a05760405162461bcd60e51b8152600401610ae090613703565b5f6115ab8842610cd5565b90506014548111156115cf5760405162461bcd60e51b8152600401610ae090613733565b6001600160a01b0388165f908152601260205260408120429055836115f457336115f6565b885b9050831561166957600f546001600160a01b0382165f90815260106020526040902054106116365760405162461bcd60e51b8152600401610ae090613778565b6001600160a01b0381165f90815260106020526040812080546001929061165e9084906135fd565b9091555061168a9050565b600b54341461168a5760405162461bcd60e51b8152600401610ae0906137af565b60135461169790846135fd565b4211156116b65760405162461bcd60e51b8152600401610ae0906137de565b6040516001600160601b031960608b811b821660208401528a811b8216603484015289901b166048820152605c8101879052607c81018490525f90609c0160408051601f1981840301815291905280516020909101206009549091506001600160a01b03166117258288612b37565b6001600160a01b03161461174b5760405162461bcd60e51b8152600401610ae09061380d565b6117558a84612b97565b6001600160a01b0389161561178a575f606461177285600f613557565b61177c91906135de565b90506117888a82612b97565b505b6001600160a01b038816156117bf575f60646117a7856005613557565b6117b191906135de565b90506117bd8982612b97565b505b5f60646117cd856032613557565b6117d791906135de565b90506117e281612c73565b600d54600b546040515f926001600160a01b031691908381818185875af1925050503d805f811461182e576040519150601f19603f3d011682016040523d82523d5f602084013e611833565b606091505b50509050806118545760405162461bcd60e51b8152600401610ae090613691565b505050505050505050505050565b6005546001600160a01b0316331461188c5760405162461bcd60e51b8152600401610ae090613420565b80516005146119035760405162461bcd60e51b815260206004820152603860248201527f5468657265206d7573742062652065786163746c7920352077616c6c6574732060448201527f696e2074686520646973747269627574696f6e206c69737400000000000000006064820152608401610ae0565b8051611022906018906020840190612f6d565b6005546001600160a01b031633146119405760405162461bcd60e51b8152600401610ae090613420565b6119495f612d78565b565b6005546001600160a01b031633146119755760405162461bcd60e51b8152600401610ae090613420565b600554600160a81b900460ff16156119e85760405162461bcd60e51b815260206004820152603060248201527f5472616e7366657273206861766520616c7265616479206265656e207065726d60448201526f185b995b9d1b1e481d5b9c185d5cd95960821b6064820152608401610ae0565b6005805461ffff60a01b1916600160a81b179055565b606060048054610a35906133e8565b6005546001600160a01b03163314611a375760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b039091165f90815260156020526040902055565b600554600160b01b900460ff1615611a7c5760405162461bcd60e51b8152600401610ae0906136bf565b6011546001600160a01b0387165f90815260126020526040902054611aa190426135cb565b1015611abf5760405162461bcd60e51b8152600401610ae090613703565b5f611aca8742610cd5565b9050601454811115611aee5760405162461bcd60e51b8152600401610ae090613733565b6001600160a01b0387165f90815260126020526040812042905583611b135733611b15565b875b90508315611b8857600f546001600160a01b0382165f9081526010602052604090205410611b555760405162461bcd60e51b8152600401610ae090613778565b6001600160a01b0381165f908152601060205260408120805460019290611b7d9084906135fd565b90915550611ba99050565b600b543414611ba95760405162461bcd60e51b8152600401610ae0906137af565b601354611bb690846135fd565b421115611bd55760405162461bcd60e51b8152600401610ae0906137de565b6040516001600160601b031960608a811b8216602084015289901b16603482015260488101879052606881018490525f9060880160408051601f1981840301815291905280516020909101206009549091506001600160a01b0316611c3a8288612b37565b6001600160a01b031614611c605760405162461bcd60e51b8152600401610ae09061380d565b611c6a8984612b97565b6001600160a01b03881615611c9f575f6064611c8785600f613557565b611c9191906135de565b9050611c9d8982612b97565b505b5f6064611cad856032613557565b611cb791906135de565b9050611cc281612c73565b600d54600b546040515f926001600160a01b031691908381818185875af1925050503d805f8114611d0e576040519150601f19603f3d011682016040523d82523d5f602084013e611d13565b606091505b5050905080611d345760405162461bcd60e51b8152600401610ae090613691565b5050505050505050505050565b335f9081526017602052604081205490819003611d5d5750611c205b5f81611c2003611d8557611d736006600a613549565b611d7e906003613557565b9050611e25565b81612a3003611da557611d9a6006600a613549565b611d7e90600a613557565b8161384003611dc557611dba6006600a613549565b611d7e906014613557565b8161546003611de557611dda6006600a613549565b611d7e90603c613557565b8161708003611e0557611dfa6006600a613549565b611d7e906078613557565b8161a8c0036110d257611e1a6006600a613549565b611d7e9060b4613557565b335f90815260208190526040902054811115611e535760405162461bcd60e51b8152600401610ae090613610565b600654611e6b9033906001600160a01b031683612961565b81611c2003611e8c57335f908152601760205260409020612a3090556111d0565b81612a3003611ead57335f90815260176020526040902061384090556111d0565b8161384003611ece57335f90815260176020526040902061546090556111d0565b8161546003611eef57335f90815260176020526040902061708090556111d0565b8161708003611f1057335f90815260176020526040902061a8c090556111d0565b8161a8c0036111d057335f908152601760205260409020620151809055600c5434146111f15760405162461bcd60e51b8152600401610ae090613647565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015611fcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae0565b611fde3385610f0186856135cb565b5060019392505050565b6005545f90600160a01b900460ff1615806120115750335f908152600a602052604090205460ff165b8061202f57506006546001600160a01b0316336001600160a01b0316145b806120435750600554600160a81b900460ff165b61205f5760405162461bcd60e51b8152600401610ae09061356e565b61206833610b81565b610b928383612dc9565b6005546001600160a01b0316331461209c5760405162461bcd60e51b8152600401610ae090613420565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146120e85760405162461bcd60e51b8152600401610ae090613420565b600c55565b6005546001600160a01b031633146121175760405162461bcd60e51b8152600401610ae090613420565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60188181548110612148575f80fd5b5f918252602090912001546001600160a01b0316905081565b6005546001600160a01b0316331461218b5760405162461bcd60e51b8152600401610ae090613420565b601355565b600554600160b01b900460ff16156121ba5760405162461bcd60e51b8152600401610ae0906136bf565b6011546001600160a01b0386165f908152601260205260409020546121df90426135cb565b10156121fd5760405162461bcd60e51b8152600401610ae090613703565b5f6122088642610cd5565b905060145481111561222c5760405162461bcd60e51b8152600401610ae090613733565b6001600160a01b0386165f908152601260205260408120429055836122515733612253565b865b905083156122c657600f546001600160a01b0382165f90815260106020526040902054106122935760405162461bcd60e51b8152600401610ae090613778565b6001600160a01b0381165f9081526010602052604081208054600192906122bb9084906135fd565b909155506122e79050565b600b5434146122e75760405162461bcd60e51b8152600401610ae0906137af565b6013546122f490846135fd565b4211156123135760405162461bcd60e51b8152600401610ae0906137de565b6040516001600160601b0319606089901b16602082015260348101879052605481018490525f9060740160408051601f1981840301815291905280516020909101206009549091506001600160a01b031661236e8288612b37565b6001600160a01b0316146123945760405162461bcd60e51b8152600401610ae09061380d565b61239e8884612b97565b5f60646123ac856032613557565b6123b691906135de565b90506123c181612c73565b600d54600b546040515f926001600160a01b031691908381818185875af1925050503d805f811461240d576040519150601f19603f3d011682016040523d82523d5f602084013e612412565b606091505b50509050806124335760405162461bcd60e51b8152600401610ae090613691565b50505050505050505050565b6005546001600160a01b031633146124695760405162461bcd60e51b8152600401610ae090613420565b601155565b6005546001600160a01b031633146124985760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b039091165f90815260166020526040902055565b6005546001600160a01b031633146124dd5760405162461bcd60e51b8152600401610ae090613420565b600b55565b6005546001600160a01b0316331461250c5760405162461bcd60e51b8152600401610ae090613420565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146125585760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b0381166125bd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae0565b61103081612d78565b600554600160a01b900460ff1615806125ed5750335f908152600a602052604090205460ff165b8061260b57506006546001600160a01b0316336001600160a01b0316145b8061261f5750600554600160a81b900460ff165b6112635760405162461bcd60e51b8152600401610ae09061356e565b5f610f063384846126f1565b5f612653848484612961565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156126d75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae0565b6126e68533610f0186856135cb565b506001949350505050565b6001600160a01b0383166127535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae0565b6001600160a01b0382166127b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166128755760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ae0565b6001600160a01b0382165f90815260208190526040902054818110156128e85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ae0565b6128f282826135cb565b6001600160a01b0384165f908152602081905260408120919091556002805484929061291f9084906135cb565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612808565b6001600160a01b0383166129c55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ae0565b6001600160a01b038216612a275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ae0565b6001600160a01b0383165f9081526020819052604090205481811015612a9e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae0565b612aa882826135cb565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290612add9084906135fd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b2991815260200190565b60405180910390a350505050565b5f610b92612b91846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018290525f90605c01604051602081830303815290604052805190602001209050919050565b83612dd5565b6001600160a01b038216612bed5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ae0565b8060025f828254612bfe91906135fd565b90915550506001600160a01b0382165f9081526020819052604081208054839290612c2a9084906135fd565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b612cb960185f81548110612c8957612c89613838565b5f918252602090912001546001600160a01b03166064612caa846028613557565b612cb491906135de565b612b97565b612cf16018600181548110612cd057612cd0613838565b5f918252602090912001546001600160a01b03166064612caa84600f613557565b612d296018600281548110612d0857612d08613838565b5f918252602090912001546001600160a01b03166064612caa84600a613557565b612d616018600381548110612d4057612d40613838565b5f918252602090912001546001600160a01b03166064612caa846014613557565b6110306018600481548110612cd057612cd0613838565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f610f06338484612961565b5f8151604114612e275760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ae0565b6020820151604083015160608401515f1a816001600160ff1b03811115612e9b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ae0565b8160ff16601b1480612eb057508160ff16601c145b612f075760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ae0565b604080515f81526020810180835289905260ff841691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612f57573d5f803e3d5ffd5b5050604051601f19015198975050505050505050565b828054828255905f5260205f20908101928215612fc0579160200282015b82811115612fc057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f8b565b50612fcc929150612fd0565b5090565b5b80821115612fcc575f8155600101612fd1565b5f6020808352835180828501525f5b8181101561300f57858101830151858201604001528201612ff3565b505f604082860101526040601f19601f8301168501019250505092915050565b5f6020828403121561303f575f80fd5b5035919050565b80356001600160a01b038116811461305c575f80fd5b919050565b5f8060408385031215613072575f80fd5b61307b83613046565b946020939093013593505050565b5f805f6060848603121561309b575f80fd5b6130a484613046565b92506130b260208501613046565b9150604084013590509250925092565b5f602082840312156130d2575f80fd5b610b9282613046565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613118576131186130db565b604052919050565b5f82601f83011261312f575f80fd5b813567ffffffffffffffff811115613149576131496130db565b61315c601f8201601f19166020016130ef565b818152846020838601011115613170575f80fd5b816020850160208301375f918101602001919091529392505050565b8035801515811461305c575f80fd5b5f805f805f805f60e0888a0312156131b1575f80fd5b6131ba88613046565b96506131c860208901613046565b95506131d660408901613046565b945060608801359350608088013567ffffffffffffffff8111156131f8575f80fd5b6132048a828b01613120565b93505061321360a0890161318c565b915060c0880135905092959891949750929550565b5f6020808385031215613239575f80fd5b823567ffffffffffffffff80821115613250575f80fd5b818501915085601f830112613263575f80fd5b813581811115613275576132756130db565b8060051b91506132868483016130ef565b818152918301840191848101908884111561329f575f80fd5b938501935b838510156132c4576132b585613046565b825293850193908501906132a4565b98975050505050505050565b5f805f805f8060c087890312156132e5575f80fd5b6132ee87613046565b95506132fc60208801613046565b945060408701359350606087013567ffffffffffffffff81111561331e575f80fd5b61332a89828a01613120565b9350506133396080880161318c565b915060a087013590509295509295509295565b5f806040838503121561335d575f80fd5b61336683613046565b915061337460208401613046565b90509250929050565b5f805f805f60a08688031215613391575f80fd5b61339a86613046565b945060208601359350604086013567ffffffffffffffff8111156133bc575f80fd5b6133c888828901613120565b9350506133d76060870161318c565b949793965091946080013592915050565b600181811c908216806133fc57607f821691505b60208210810361341a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156134a357815f190482111561348957613489613455565b8085161561349657918102915b93841c939080029061346e565b509250929050565b5f826134b957506001610b95565b816134c557505f610b95565b81600181146134db57600281146134e557613501565b6001915050610b95565b60ff8411156134f6576134f6613455565b50506001821b610b95565b5060208310610133831016604e8410600b8410161715613524575081810a610b95565b61352e8383613469565b805f190482111561354157613541613455565b029392505050565b5f610b9260ff8416836134ab565b8082028115828204841417610b9557610b95613455565b6020808252603c908201527f5472616e7366657273206172652063757272656e746c7920706175736564206160408201527f6e642073656e646572206973206e6f742077686974656c697374656400000000606082015260800190565b81810381811115610b9557610b95613455565b5f826135f857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610b9557610b95613455565b60208082526018908201527f496e73756666696369656e742047454d2062616c616e63650000000000000000604082015260600190565b6020808252602a908201527f496e636f72726563742045746865722076616c75652073656e7420666f7220756040820152697067726164652066656560b01b606082015260800190565b6020808252601490820152732330b4b632b2103a379039b2b7321022ba3432b960611b604082015260600190565b60208082526024908201527f4d696e74696e6720686173206265656e207065726d616e656e746c792073746f6040820152631c1c195960e21b606082015260800190565b6020808252601690820152754d696e74696e6720746f6f206672657175656e746c7960501b604082015260600190565b60208082526025908201527f416d6f756e74206578636565647320746865206d6178696d756d206d696e74206040820152641b1a5b5a5d60da1b606082015260800190565b6020808252601b908201527f4d6178696d756d206672656520636c61696d7320726561636865640000000000604082015260600190565b602080825260159082015274496e73756666696369656e74206d696e742066656560581b604082015260600190565b60208082526015908201527414da59db985d1d5c99481a185cc8195e1c1a5c9959605a1b604082015260600190565b602080825260119082015270496e76616c6964207369676e617475726560781b604082015260600190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220969043f205daa772bf9261b379768b2615d4a13634e810967509f52a685c0c6164736f6c63430008140033
Deployed Bytecode
0x608060405260043610610366575f3560e01c8063715018a6116101c8578063c2f45525116100fd578063dd62ed3e1161009d578063e78edd241161006d578063e78edd241461099e578063eddd0d9c146109c9578063f0f44260146109e8578063f2fde38b14610a07575f80fd5b8063dd62ed3e14610909578063e0df2b1c1461094d578063e2889c8214610960578063e43b73f81461097f575f80fd5b8063d279b0ca116100d8578063d279b0ca14610881578063d701c4c5146108a0578063d8625a19146108cb578063d9a23a6d146108ea575f80fd5b8063c2f455251461082e578063c530fead1461084d578063c83a957714610862575f80fd5b8063a44cf62011610168578063b23a611211610143578063b23a6112146107a3578063b3096f69146107ce578063b4091e59146107ee578063c08d1fe514610819575f80fd5b8063a44cf6201461075d578063a457c2d714610765578063a9059cbb14610784575f80fd5b80638da5cb5b116101a35780638da5cb5b146106fa57806395d89b4114610717578063a02e923b1461072b578063a104e2a71461074a575f80fd5b8063715018a6146106b3578063765b0c36146106c75780638936a91f146106e6575f80fd5b8063313ce5671161029e578063530cd5ab1161023e5780636316b81e116102195780636316b81e1461062257806363fc904e1461064d5780636704a73b1461066057806370a082311461067f575f80fd5b8063530cd5ab146105dc5780635d49fdb8146105fb57806361861b401461061a575f80fd5b80633ccfd60b116102795780633ccfd60b1461058157806342966c681461059557806343dd6fb1146105b45780634563f30a146105bc575f80fd5b8063313ce567146105285780633788fb6a146105435780633950935114610562575f80fd5b806313966db511610309578063239c70ae116102e4578063239c70ae146104b657806323b872dd146104cb57806329550f97146104ea57806329975b4314610509575f80fd5b806313966db51461046e57806318160ddd146104835780631939b0cc14610497575f80fd5b8063088a4ed011610344578063088a4ed0146103e3578063095ea7b31461040457806309de0b5e14610423578063120ab2191461045a575f80fd5b806303212e361461036a57806306fdde031461039f57806307cf016d146103c0575b5f80fd5b348015610375575f80fd5b5060055461038a90600160b01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103aa575f80fd5b506103b3610a26565b6040516103969190612fe4565b3480156103cb575f80fd5b506103d5600c5481565b604051908152602001610396565b3480156103ee575f80fd5b506104026103fd36600461302f565b610ab6565b005b34801561040f575f80fd5b5061038a61041e366004613061565b610b05565b34801561042e575f80fd5b50600e54610442906001600160a01b031681565b6040516001600160a01b039091168152602001610396565b348015610465575f80fd5b50610402610b9b565b348015610479575f80fd5b506103d5600b5481565b34801561048e575f80fd5b506002546103d5565b3480156104a2575f80fd5b506104026104b136600461302f565b610bda565b3480156104c1575f80fd5b506103d560145481565b3480156104d6575f80fd5b5061038a6104e5366004613089565b610c40565b3480156104f5575f80fd5b506103d5610504366004613061565b610cd5565b348015610514575f80fd5b506104026105233660046130c2565b610e02565b348015610533575f80fd5b5060405160068152602001610396565b34801561054e575f80fd5b5061040261055d3660046130c2565b610e7f565b34801561056d575f80fd5b5061038a61057c366004613061565b610ecb565b34801561058c575f80fd5b50610402610f0f565b3480156105a0575f80fd5b506104026105af36600461302f565b611026565b610402611033565b3480156105c7575f80fd5b5060055461038a90600160a01b900460ff1681565b3480156105e7575f80fd5b506104026105f63660046130c2565b611268565b348015610606575f80fd5b50610402610615366004613061565b6112e2565b610402611327565b34801561062d575f80fd5b506103d561063c3660046130c2565b60156020525f908152604090205481565b61040261065b36600461319b565b611533565b34801561066b575f80fd5b5061040261067a366004613228565b611862565b34801561068a575f80fd5b506103d56106993660046130c2565b6001600160a01b03165f9081526020819052604090205490565b3480156106be575f80fd5b50610402611916565b3480156106d2575f80fd5b50600d54610442906001600160a01b031681565b3480156106f1575f80fd5b5061040261194b565b348015610705575f80fd5b506005546001600160a01b0316610442565b348015610722575f80fd5b506103b36119fe565b348015610736575f80fd5b50610402610745366004613061565b611a0d565b6104026107583660046132d0565b611a52565b610402611d41565b348015610770575f80fd5b5061038a61077f366004613061565b611f4e565b34801561078f575f80fd5b5061038a61079e366004613061565b611fe8565b3480156107ae575f80fd5b506103d56107bd3660046130c2565b60166020525f908152604090205481565b3480156107d9575f80fd5b5060055461038a90600160a81b900460ff1681565b3480156107f9575f80fd5b506103d56108083660046130c2565b60106020525f908152604090205481565b348015610824575f80fd5b506103d560115481565b348015610839575f80fd5b506104026108483660046130c2565b612072565b348015610858575f80fd5b506103d5600f5481565b34801561086d575f80fd5b5061040261087c36600461302f565b6120be565b34801561088c575f80fd5b5061040261089b3660046130c2565b6120ed565b3480156108ab575f80fd5b506103d56108ba3660046130c2565b60126020525f908152604090205481565b3480156108d6575f80fd5b506104426108e536600461302f565b612139565b3480156108f5575f80fd5b5061040261090436600461302f565b612161565b348015610914575f80fd5b506103d561092336600461334c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61040261095b36600461337d565b612190565b34801561096b575f80fd5b5061040261097a36600461302f565b61243f565b34801561098a575f80fd5b50610402610999366004613061565b61246e565b3480156109a9575f80fd5b506103d56109b83660046130c2565b60176020525f908152604090205481565b3480156109d4575f80fd5b506104026109e336600461302f565b6124b3565b3480156109f3575f80fd5b50610402610a023660046130c2565b6124e2565b348015610a12575f80fd5b50610402610a213660046130c2565b61252e565b606060038054610a35906133e8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a61906133e8565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b5050505050905090565b6005546001600160a01b03163314610ae95760405162461bcd60e51b8152600401610ae090613420565b60405180910390fd5b610af56006600a613549565b610aff9082613557565b60145550565b6005545f90600160a01b900460ff161580610b2e5750335f908152600a602052604090205460ff165b80610b4c57506006546001600160a01b0316336001600160a01b0316145b80610b605750600554600160a81b900460ff165b610b7c5760405162461bcd60e51b8152600401610ae09061356e565b610b88335b84846125c6565b610b92838361263b565b90505b92915050565b6005546001600160a01b03163314610bc55760405162461bcd60e51b8152600401610ae090613420565b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b03163314610c045760405162461bcd60e51b8152600401610ae090613420565b600f8190556040518181527ffcb00db387baab0c72747136c5d3b51cec86d298c4e8e815943bc60beaede0bc906020015b60405180910390a150565b6005545f90600160a01b900460ff161580610c695750335f908152600a602052604090205460ff165b80610c8757506006546001600160a01b0316336001600160a01b0316145b80610c9b5750600554600160a81b900460ff165b610cb75760405162461bcd60e51b8152600401610ae09061356e565b610cc28484846125c6565b610ccd848484612647565b949350505050565b6001600160a01b0382165f90815260156020526040812054819015610d11576001600160a01b0384165f90815260156020526040902054610d14565b60645b6001600160a01b0385165f908152601660205260408120549192509015610d52576001600160a01b0385165f90815260166020526040902054610d56565b610ada5b6001600160a01b0386165f908152601760205260408120549192509015610d94576001600160a01b0386165f90815260176020526040902054610d98565b611c205b6001600160a01b0387165f9081526012602052604081205491925090610dbe90876135cb565b90505f828211610dce5781610dd0565b825b90505f61271082610de18789613557565b610deb9190613557565b610df591906135de565b9998505050505050505050565b6005546001600160a01b03163314610e2c5760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b0381165f818152600a6020908152604091829020805460ff1916600117905590519182527fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f9101610c35565b6005546001600160a01b03163314610ea95760405162461bcd60e51b8152600401610ae090613420565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610f06918590610f019086906135fd565b6126f1565b50600192915050565b6005546001600160a01b03163314610f395760405162461bcd60e51b8152600401610ae090613420565b4780610f805760405162461bcd60e51b81526020600482015260166024820152754e6f2062616c616e636520746f20776974686472617760501b6044820152606401610ae0565b5f610f936005546001600160a01b031690565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610fda576040519150601f19603f3d011682016040523d82523d5f602084013e610fdf565b606091505b50509050806110225760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b6044820152606401610ae0565b5050565b6110303382612815565b50565b335f908152601560205260408120549081900361104e575060645b5f81606403611075576110636006600a613549565b61106e906002613557565b9050611112565b81607d03611094576110896006600a613549565b61106e906005613557565b816096036110b3576110a86006600a613549565b61106e906019613557565b8160af036110d2576110c76006600a613549565b61106e906032613557565b60405162461bcd60e51b815260206004820152601560248201527413585e1a5b5d5b481b195d995b081c995858da1959605a1b6044820152606401610ae0565b335f908152602081905260409020548111156111405760405162461bcd60e51b8152600401610ae090613610565b6006546111589033906001600160a01b031683612961565b8160640361117757335f908152601560205260409020607d90556111d0565b81607d0361119657335f908152601560205260409020609690556111d0565b816096036111b557335f90815260156020526040902060af90556111d0565b8160af036111d057335f90815260156020526040902060c890555b600c5434146111f15760405162461bcd60e51b8152600401610ae090613647565b600e54600c546040515f926001600160a01b031691908381818185875af1925050503d805f811461123d576040519150601f19603f3d011682016040523d82523d5f602084013e611242565b606091505b50509050806112635760405162461bcd60e51b8152600401610ae090613691565b505050565b6005546001600160a01b031633146112925760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b0381165f818152600a6020908152604091829020805460ff1916905590519182527ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a9101610c35565b6005546001600160a01b0316331461130c5760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b039091165f90815260176020526040902055565b335f90815260166020526040812054908190036113435750610ada5b5f81610ada0361136b576113596006600a613549565b611364906003613557565b905061140b565b816115b40361138b576113806006600a613549565b61136490600a613557565b8161208e036113ab576113a06006600a613549565b611364906014613557565b81613642036113cb576113c06006600a613549565b61136490603c613557565b81614bf6036113eb576113e06006600a613549565b611364906078613557565b81616c84036110d2576114006006600a613549565b6113649060b4613557565b335f908152602081905260409020548111156114395760405162461bcd60e51b8152600401610ae090613610565b6006546114519033906001600160a01b031683612961565b81610ada0361147257335f9081526016602052604090206115b490556111d0565b816115b40361149357335f90815260166020526040902061208e90556111d0565b8161208e036114b457335f90815260166020526040902061364290556111d0565b81613642036114d557335f908152601660205260409020614bf690556111d0565b81614bf6036114f657335f908152601660205260409020616c8490556111d0565b81616c84036111d057335f90815260166020526040902061a2c69055600c5434146111f15760405162461bcd60e51b8152600401610ae090613647565b600554600160b01b900460ff161561155d5760405162461bcd60e51b8152600401610ae0906136bf565b6011546001600160a01b0388165f9081526012602052604090205461158290426135cb565b10156115a05760405162461bcd60e51b8152600401610ae090613703565b5f6115ab8842610cd5565b90506014548111156115cf5760405162461bcd60e51b8152600401610ae090613733565b6001600160a01b0388165f908152601260205260408120429055836115f457336115f6565b885b9050831561166957600f546001600160a01b0382165f90815260106020526040902054106116365760405162461bcd60e51b8152600401610ae090613778565b6001600160a01b0381165f90815260106020526040812080546001929061165e9084906135fd565b9091555061168a9050565b600b54341461168a5760405162461bcd60e51b8152600401610ae0906137af565b60135461169790846135fd565b4211156116b65760405162461bcd60e51b8152600401610ae0906137de565b6040516001600160601b031960608b811b821660208401528a811b8216603484015289901b166048820152605c8101879052607c81018490525f90609c0160408051601f1981840301815291905280516020909101206009549091506001600160a01b03166117258288612b37565b6001600160a01b03161461174b5760405162461bcd60e51b8152600401610ae09061380d565b6117558a84612b97565b6001600160a01b0389161561178a575f606461177285600f613557565b61177c91906135de565b90506117888a82612b97565b505b6001600160a01b038816156117bf575f60646117a7856005613557565b6117b191906135de565b90506117bd8982612b97565b505b5f60646117cd856032613557565b6117d791906135de565b90506117e281612c73565b600d54600b546040515f926001600160a01b031691908381818185875af1925050503d805f811461182e576040519150601f19603f3d011682016040523d82523d5f602084013e611833565b606091505b50509050806118545760405162461bcd60e51b8152600401610ae090613691565b505050505050505050505050565b6005546001600160a01b0316331461188c5760405162461bcd60e51b8152600401610ae090613420565b80516005146119035760405162461bcd60e51b815260206004820152603860248201527f5468657265206d7573742062652065786163746c7920352077616c6c6574732060448201527f696e2074686520646973747269627574696f6e206c69737400000000000000006064820152608401610ae0565b8051611022906018906020840190612f6d565b6005546001600160a01b031633146119405760405162461bcd60e51b8152600401610ae090613420565b6119495f612d78565b565b6005546001600160a01b031633146119755760405162461bcd60e51b8152600401610ae090613420565b600554600160a81b900460ff16156119e85760405162461bcd60e51b815260206004820152603060248201527f5472616e7366657273206861766520616c7265616479206265656e207065726d60448201526f185b995b9d1b1e481d5b9c185d5cd95960821b6064820152608401610ae0565b6005805461ffff60a01b1916600160a81b179055565b606060048054610a35906133e8565b6005546001600160a01b03163314611a375760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b039091165f90815260156020526040902055565b600554600160b01b900460ff1615611a7c5760405162461bcd60e51b8152600401610ae0906136bf565b6011546001600160a01b0387165f90815260126020526040902054611aa190426135cb565b1015611abf5760405162461bcd60e51b8152600401610ae090613703565b5f611aca8742610cd5565b9050601454811115611aee5760405162461bcd60e51b8152600401610ae090613733565b6001600160a01b0387165f90815260126020526040812042905583611b135733611b15565b875b90508315611b8857600f546001600160a01b0382165f9081526010602052604090205410611b555760405162461bcd60e51b8152600401610ae090613778565b6001600160a01b0381165f908152601060205260408120805460019290611b7d9084906135fd565b90915550611ba99050565b600b543414611ba95760405162461bcd60e51b8152600401610ae0906137af565b601354611bb690846135fd565b421115611bd55760405162461bcd60e51b8152600401610ae0906137de565b6040516001600160601b031960608a811b8216602084015289901b16603482015260488101879052606881018490525f9060880160408051601f1981840301815291905280516020909101206009549091506001600160a01b0316611c3a8288612b37565b6001600160a01b031614611c605760405162461bcd60e51b8152600401610ae09061380d565b611c6a8984612b97565b6001600160a01b03881615611c9f575f6064611c8785600f613557565b611c9191906135de565b9050611c9d8982612b97565b505b5f6064611cad856032613557565b611cb791906135de565b9050611cc281612c73565b600d54600b546040515f926001600160a01b031691908381818185875af1925050503d805f8114611d0e576040519150601f19603f3d011682016040523d82523d5f602084013e611d13565b606091505b5050905080611d345760405162461bcd60e51b8152600401610ae090613691565b5050505050505050505050565b335f9081526017602052604081205490819003611d5d5750611c205b5f81611c2003611d8557611d736006600a613549565b611d7e906003613557565b9050611e25565b81612a3003611da557611d9a6006600a613549565b611d7e90600a613557565b8161384003611dc557611dba6006600a613549565b611d7e906014613557565b8161546003611de557611dda6006600a613549565b611d7e90603c613557565b8161708003611e0557611dfa6006600a613549565b611d7e906078613557565b8161a8c0036110d257611e1a6006600a613549565b611d7e9060b4613557565b335f90815260208190526040902054811115611e535760405162461bcd60e51b8152600401610ae090613610565b600654611e6b9033906001600160a01b031683612961565b81611c2003611e8c57335f908152601760205260409020612a3090556111d0565b81612a3003611ead57335f90815260176020526040902061384090556111d0565b8161384003611ece57335f90815260176020526040902061546090556111d0565b8161546003611eef57335f90815260176020526040902061708090556111d0565b8161708003611f1057335f90815260176020526040902061a8c090556111d0565b8161a8c0036111d057335f908152601760205260409020620151809055600c5434146111f15760405162461bcd60e51b8152600401610ae090613647565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015611fcf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae0565b611fde3385610f0186856135cb565b5060019392505050565b6005545f90600160a01b900460ff1615806120115750335f908152600a602052604090205460ff165b8061202f57506006546001600160a01b0316336001600160a01b0316145b806120435750600554600160a81b900460ff165b61205f5760405162461bcd60e51b8152600401610ae09061356e565b61206833610b81565b610b928383612dc9565b6005546001600160a01b0316331461209c5760405162461bcd60e51b8152600401610ae090613420565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146120e85760405162461bcd60e51b8152600401610ae090613420565b600c55565b6005546001600160a01b031633146121175760405162461bcd60e51b8152600401610ae090613420565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60188181548110612148575f80fd5b5f918252602090912001546001600160a01b0316905081565b6005546001600160a01b0316331461218b5760405162461bcd60e51b8152600401610ae090613420565b601355565b600554600160b01b900460ff16156121ba5760405162461bcd60e51b8152600401610ae0906136bf565b6011546001600160a01b0386165f908152601260205260409020546121df90426135cb565b10156121fd5760405162461bcd60e51b8152600401610ae090613703565b5f6122088642610cd5565b905060145481111561222c5760405162461bcd60e51b8152600401610ae090613733565b6001600160a01b0386165f908152601260205260408120429055836122515733612253565b865b905083156122c657600f546001600160a01b0382165f90815260106020526040902054106122935760405162461bcd60e51b8152600401610ae090613778565b6001600160a01b0381165f9081526010602052604081208054600192906122bb9084906135fd565b909155506122e79050565b600b5434146122e75760405162461bcd60e51b8152600401610ae0906137af565b6013546122f490846135fd565b4211156123135760405162461bcd60e51b8152600401610ae0906137de565b6040516001600160601b0319606089901b16602082015260348101879052605481018490525f9060740160408051601f1981840301815291905280516020909101206009549091506001600160a01b031661236e8288612b37565b6001600160a01b0316146123945760405162461bcd60e51b8152600401610ae09061380d565b61239e8884612b97565b5f60646123ac856032613557565b6123b691906135de565b90506123c181612c73565b600d54600b546040515f926001600160a01b031691908381818185875af1925050503d805f811461240d576040519150601f19603f3d011682016040523d82523d5f602084013e612412565b606091505b50509050806124335760405162461bcd60e51b8152600401610ae090613691565b50505050505050505050565b6005546001600160a01b031633146124695760405162461bcd60e51b8152600401610ae090613420565b601155565b6005546001600160a01b031633146124985760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b039091165f90815260166020526040902055565b6005546001600160a01b031633146124dd5760405162461bcd60e51b8152600401610ae090613420565b600b55565b6005546001600160a01b0316331461250c5760405162461bcd60e51b8152600401610ae090613420565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146125585760405162461bcd60e51b8152600401610ae090613420565b6001600160a01b0381166125bd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae0565b61103081612d78565b600554600160a01b900460ff1615806125ed5750335f908152600a602052604090205460ff165b8061260b57506006546001600160a01b0316336001600160a01b0316145b8061261f5750600554600160a81b900460ff165b6112635760405162461bcd60e51b8152600401610ae09061356e565b5f610f063384846126f1565b5f612653848484612961565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156126d75760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae0565b6126e68533610f0186856135cb565b506001949350505050565b6001600160a01b0383166127535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae0565b6001600160a01b0382166127b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae0565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166128755760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ae0565b6001600160a01b0382165f90815260208190526040902054818110156128e85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ae0565b6128f282826135cb565b6001600160a01b0384165f908152602081905260408120919091556002805484929061291f9084906135cb565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612808565b6001600160a01b0383166129c55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ae0565b6001600160a01b038216612a275760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ae0565b6001600160a01b0383165f9081526020819052604090205481811015612a9e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae0565b612aa882826135cb565b6001600160a01b038086165f908152602081905260408082209390935590851681529081208054849290612add9084906135fd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b2991815260200190565b60405180910390a350505050565b5f610b92612b91846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c81018290525f90605c01604051602081830303815290604052805190602001209050919050565b83612dd5565b6001600160a01b038216612bed5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ae0565b8060025f828254612bfe91906135fd565b90915550506001600160a01b0382165f9081526020819052604081208054839290612c2a9084906135fd565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b612cb960185f81548110612c8957612c89613838565b5f918252602090912001546001600160a01b03166064612caa846028613557565b612cb491906135de565b612b97565b612cf16018600181548110612cd057612cd0613838565b5f918252602090912001546001600160a01b03166064612caa84600f613557565b612d296018600281548110612d0857612d08613838565b5f918252602090912001546001600160a01b03166064612caa84600a613557565b612d616018600381548110612d4057612d40613838565b5f918252602090912001546001600160a01b03166064612caa846014613557565b6110306018600481548110612cd057612cd0613838565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f610f06338484612961565b5f8151604114612e275760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ae0565b6020820151604083015160608401515f1a816001600160ff1b03811115612e9b5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ae0565b8160ff16601b1480612eb057508160ff16601c145b612f075760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ae0565b604080515f81526020810180835289905260ff841691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612f57573d5f803e3d5ffd5b5050604051601f19015198975050505050505050565b828054828255905f5260205f20908101928215612fc0579160200282015b82811115612fc057825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f8b565b50612fcc929150612fd0565b5090565b5b80821115612fcc575f8155600101612fd1565b5f6020808352835180828501525f5b8181101561300f57858101830151858201604001528201612ff3565b505f604082860101526040601f19601f8301168501019250505092915050565b5f6020828403121561303f575f80fd5b5035919050565b80356001600160a01b038116811461305c575f80fd5b919050565b5f8060408385031215613072575f80fd5b61307b83613046565b946020939093013593505050565b5f805f6060848603121561309b575f80fd5b6130a484613046565b92506130b260208501613046565b9150604084013590509250925092565b5f602082840312156130d2575f80fd5b610b9282613046565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613118576131186130db565b604052919050565b5f82601f83011261312f575f80fd5b813567ffffffffffffffff811115613149576131496130db565b61315c601f8201601f19166020016130ef565b818152846020838601011115613170575f80fd5b816020850160208301375f918101602001919091529392505050565b8035801515811461305c575f80fd5b5f805f805f805f60e0888a0312156131b1575f80fd5b6131ba88613046565b96506131c860208901613046565b95506131d660408901613046565b945060608801359350608088013567ffffffffffffffff8111156131f8575f80fd5b6132048a828b01613120565b93505061321360a0890161318c565b915060c0880135905092959891949750929550565b5f6020808385031215613239575f80fd5b823567ffffffffffffffff80821115613250575f80fd5b818501915085601f830112613263575f80fd5b813581811115613275576132756130db565b8060051b91506132868483016130ef565b818152918301840191848101908884111561329f575f80fd5b938501935b838510156132c4576132b585613046565b825293850193908501906132a4565b98975050505050505050565b5f805f805f8060c087890312156132e5575f80fd5b6132ee87613046565b95506132fc60208801613046565b945060408701359350606087013567ffffffffffffffff81111561331e575f80fd5b61332a89828a01613120565b9350506133396080880161318c565b915060a087013590509295509295509295565b5f806040838503121561335d575f80fd5b61336683613046565b915061337460208401613046565b90509250929050565b5f805f805f60a08688031215613391575f80fd5b61339a86613046565b945060208601359350604086013567ffffffffffffffff8111156133bc575f80fd5b6133c888828901613120565b9350506133d76060870161318c565b949793965091946080013592915050565b600181811c908216806133fc57607f821691505b60208210810361341a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156134a357815f190482111561348957613489613455565b8085161561349657918102915b93841c939080029061346e565b509250929050565b5f826134b957506001610b95565b816134c557505f610b95565b81600181146134db57600281146134e557613501565b6001915050610b95565b60ff8411156134f6576134f6613455565b50506001821b610b95565b5060208310610133831016604e8410600b8410161715613524575081810a610b95565b61352e8383613469565b805f190482111561354157613541613455565b029392505050565b5f610b9260ff8416836134ab565b8082028115828204841417610b9557610b95613455565b6020808252603c908201527f5472616e7366657273206172652063757272656e746c7920706175736564206160408201527f6e642073656e646572206973206e6f742077686974656c697374656400000000606082015260800190565b81810381811115610b9557610b95613455565b5f826135f857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610b9557610b95613455565b60208082526018908201527f496e73756666696369656e742047454d2062616c616e63650000000000000000604082015260600190565b6020808252602a908201527f496e636f72726563742045746865722076616c75652073656e7420666f7220756040820152697067726164652066656560b01b606082015260800190565b6020808252601490820152732330b4b632b2103a379039b2b7321022ba3432b960611b604082015260600190565b60208082526024908201527f4d696e74696e6720686173206265656e207065726d616e656e746c792073746f6040820152631c1c195960e21b606082015260800190565b6020808252601690820152754d696e74696e6720746f6f206672657175656e746c7960501b604082015260600190565b60208082526025908201527f416d6f756e74206578636565647320746865206d6178696d756d206d696e74206040820152641b1a5b5a5d60da1b606082015260800190565b6020808252601b908201527f4d6178696d756d206672656520636c61696d7320726561636865640000000000604082015260600190565b602080825260159082015274496e73756666696369656e74206d696e742066656560581b604082015260600190565b60208082526015908201527414da59db985d1d5c99481a185cc8195e1c1a5c9959605a1b604082015260600190565b602080825260119082015270496e76616c6964207369676e617475726560781b604082015260600190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220969043f205daa772bf9261b379768b2615d4a13634e810967509f52a685c0c6164736f6c63430008140033
Deployed Bytecode Sourcemap
7131:18233:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7286:37;;;;;;;;;;-1:-1:-1;7286:37:0;;;;-1:-1:-1;;;7286:37:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;7286:37:0;;;;;;;;3270:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7608:33::-;;;;;;;;;;;;;;;;;;;905:25:1;;;893:2;878:18;7608:33:0;759:177:1;12135:133:0;;;;;;;;;;-1:-1:-1;12135:133:0;;;;;:::i;:::-;;:::i;:::-;;19917:223;;;;;;;;;;-1:-1:-1;19917:223:0;;;;;:::i;:::-;;:::i;7686:42::-;;;;;;;;;;-1:-1:-1;7686:42:0;;;;-1:-1:-1;;;;;7686:42:0;;;;;;-1:-1:-1;;;;;1727:32:1;;;1709:51;;1697:2;1682:18;7686:42:0;1563:203:1;18784:102:0;;;;;;;;;;;;;:::i;7579:22::-;;;;;;;;;;;;;;;;3548:100;;;;;;;;;;-1:-1:-1;3628:12:0;;3548:100;;11347:168;;;;;;;;;;-1:-1:-1;11347:168:0;;;;;:::i;:::-;;:::i;7964:50::-;;;;;;;;;;;;;;;;19652:257;;;;;;;;;;-1:-1:-1;19652:257:0;;;;;:::i;:::-;;:::i;12918:718::-;;;;;;;;;;-1:-1:-1;12918:718:0;;;;;:::i;:::-;;:::i;11523:169::-;;;;;;;;;;-1:-1:-1;11523:169:0;;;;;:::i;:::-;;:::i;9781:92::-;;;;;;;;;;-1:-1:-1;9781:92:0;;9864:1;2437:36:1;;2425:2;2410:18;9781:92:0;2295:184:1;10927:128:0;;;;;;;;;;-1:-1:-1;10927:128:0;;;;;:::i;:::-;;:::i;4732:207::-;;;;;;;;;;-1:-1:-1;4732:207:0;;;;;:::i;:::-;;:::i;20148:262::-;;;;;;;;;;;;;:::i;19136:92::-;;;;;;;;;;-1:-1:-1;19136:92:0;;;;;:::i;:::-;;:::i;20418:1371::-;;;:::i;7205:27::-;;;;;;;;;;-1:-1:-1;7205:27:0;;;;-1:-1:-1;;;7205:27:0;;;;;;11700:175;;;;;;;;;;-1:-1:-1;11700:175:0;;;;;:::i;:::-;;:::i;12772:138::-;;;;;;;;;;-1:-1:-1;12772:138:0;;;;;:::i;:::-;;:::i;21797:1771::-;;;:::i;8021:47::-;;;;;;;;;;-1:-1:-1;8021:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;16565:1799;;;;;;:::i;:::-;;:::i;12276:226::-;;;;;;;;;;-1:-1:-1;12276:226:0;;;;;:::i;:::-;;:::i;3656:119::-;;;;;;;;;;-1:-1:-1;3656:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;3749:18:0;3722:7;3749:18;;;;;;;;;;;;3656:119;751:95;;;;;;;;;;;;;:::i;7648:31::-;;;;;;;;;;-1:-1:-1;7648:31:0;;;;-1:-1:-1;;;;;7648:31:0;;;18894:234;;;;;;;;;;;;;:::i;536:79::-;;;;;;;;;;-1:-1:-1;601:6:0;;-1:-1:-1;;;;;601:6:0;536:79;;3361:87;;;;;;;;;;;;;:::i;12510:122::-;;;;;;;;;;-1:-1:-1;12510:122:0;;;;;:::i;:::-;;:::i;15004:1553::-;;;;;;:::i;:::-;;:::i;23576:1785::-;;;:::i;4947:369::-;;;;;;;;;;-1:-1:-1;4947:369:0;;;;;:::i;:::-;;:::i;19413:231::-;;;;;;;;;;-1:-1:-1;19413:231:0;;;;;:::i;:::-;;:::i;8075:48::-;;;;;;;;;;-1:-1:-1;8075:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;7239:40;;;;;;;;;;-1:-1:-1;7239:40:0;;;;-1:-1:-1;;;7239:40:0;;;;;;7777:49;;;;;;;;;;-1:-1:-1;7777:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;7833:24;;;;;;;;;;;;;;;;11063:172;;;;;;;;;;-1:-1:-1;11063:172:0;;;;;:::i;:::-;;:::i;7737:33::-;;;;;;;;;;;;;;;;10783:136;;;;;;;;;;-1:-1:-1;10783:136:0;;;;;:::i;:::-;;:::i;10359:128::-;;;;;;;;;;-1:-1:-1;10359:128:0;;;;;:::i;:::-;;:::i;7864:47::-;;;;;;;;;;-1:-1:-1;7864:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;8192:37;;;;;;;;;;-1:-1:-1;8192:37:0;;;;;:::i;:::-;;:::i;11995:132::-;;;;;;;;;;-1:-1:-1;11995:132:0;;;;;:::i;:::-;;:::i;3966:151::-;;;;;;;;;;-1:-1:-1;3966:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4082:18:0;;;4055:7;4082:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3966:151;13644:1352;;;;;;:::i;:::-;;:::i;11883:104::-;;;;;;;;;;-1:-1:-1;11883:104:0;;;;;:::i;:::-;;:::i;12640:124::-;;;;;;;;;;-1:-1:-1;12640:124:0;;;;;:::i;:::-;;:::i;8130:55::-;;;;;;;;;;-1:-1:-1;8130:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;10683:92;;;;;;;;;;-1:-1:-1;10683:92:0;;;;;:::i;:::-;;:::i;11243:96::-;;;;;;;;;;-1:-1:-1;11243:96:0;;;;;:::i;:::-;;:::i;854:193::-;;;;;;;;;;-1:-1:-1;854:193:0;;;;;:::i;:::-;;:::i;3270:83::-;3307:13;3340:5;3333:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3270:83;:::o;12135:133::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;;;;;;;;;12246:14:::1;9864:1:::0;12246:2:::1;:14;:::i;:::-;12229:31;::::0;:14;:31:::1;:::i;:::-;12213:13;:47:::0;-1:-1:-1;12135:133:0:o;19917:223::-;10086:15;;20016:4;;-1:-1:-1;;;10086:15:0;;;;10085:16;;:69;;-1:-1:-1;157:10:0;10119:35;;;;:21;:35;;;;;;;;10085:69;:111;;;-1:-1:-1;10188:8:0;;-1:-1:-1;;;;;10188:8:0;157:10;-1:-1:-1;;;;;10172:24:0;;10085:111;:157;;;-1:-1:-1;10214:28:0;;-1:-1:-1;;;10214:28:0;;;;10085:157;10063:268;;;;-1:-1:-1;;;10063:268:0;;;;;;;:::i;:::-;20033:51:::1;157:10:::0;20054:12:::1;20068:7;20077:6;20033:20;:51::i;:::-;20102:30;20116:7;20125:6;20102:13;:30::i;:::-;20095:37;;10342:1;19917:223:::0;;;;:::o;18784:102::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;18846:25:::1;:32:::0;;-1:-1:-1;;;;18846:32:0::1;-1:-1:-1::0;;;18846:32:0::1;::::0;;18784:102::o;11347:168::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;11425:13:::1;:30:::0;;;11471:36:::1;::::0;905:25:1;;;11471:36:0::1;::::0;893:2:1;878:18;11471:36:0::1;;;;;;;;11347:168:::0;:::o;19652:257::-;10086:15;;19774:4;;-1:-1:-1;;;10086:15:0;;;;10085:16;;:69;;-1:-1:-1;157:10:0;10119:35;;;;:21;:35;;;;;;;;10085:69;:111;;;-1:-1:-1;10188:8:0;;-1:-1:-1;;;;;10188:8:0;157:10;-1:-1:-1;;;;;10172:24:0;;10085:111;:157;;;-1:-1:-1;10214:28:0;;-1:-1:-1;;;10214:28:0;;;;10085:157;10063:268;;;;-1:-1:-1;;;10063:268:0;;;;;;;:::i;:::-;19791:47:::1;19812:6;19820:9;19831:6;19791:20;:47::i;:::-;19856:45;19875:6;19883:9;19894:6;19856:18;:45::i;:::-;19849:52:::0;19652:257;-1:-1:-1;;;;19652:257:0:o;12918:718::-;-1:-1:-1;;;;;13067:16:0;;13025:7;13067:16;;;:12;:16;;;;;;13025:7;;13067:21;:46;;-1:-1:-1;;;;;13097:16:0;;;;;;:12;:16;;;;;;13067:46;;;13091:3;13067:46;-1:-1:-1;;;;;13147:17:0;;13124:20;13147:17;;;:13;:17;;;;;;13045:68;;-1:-1:-1;13124:20:0;13147:22;:49;;-1:-1:-1;;;;;13179:17:0;;;;;;:13;:17;;;;;;13147:49;;;13172:4;13147:49;-1:-1:-1;;;;;13237:24:0;;13207:27;13237:24;;;:20;:24;;;;;;13124:72;;-1:-1:-1;13207:27:0;13237:29;:63;;-1:-1:-1;;;;;13276:24:0;;;;;;:20;:24;;;;;;13237:63;;;13269:4;13237:63;-1:-1:-1;;;;;13358:16:0;;13313:25;13358:16;;;:12;:16;;;;;;13207:93;;-1:-1:-1;13313:25:0;13341:33;;:14;:33;:::i;:::-;13313:61;;13385:34;13442:19;13422:17;:39;:81;;13486:17;13422:81;;;13464:19;13422:81;13385:118;-1:-1:-1;13514:17:0;13594:5;13385:118;13535:26;13549:12;13535:11;:26;:::i;:::-;:55;;;;:::i;:::-;13534:65;;;;:::i;:::-;13514:85;12918:718;-1:-1:-1;;;;;;;;;12918:718:0:o;11523:169::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11599:30:0;::::1;;::::0;;;:21:::1;:30;::::0;;;;;;;;:37;;-1:-1:-1;;11599:37:0::1;11632:4;11599:37;::::0;;11652:32;;1709:51:1;;;11652:32:0::1;::::0;1682:18:1;11652:32:0::1;1563:203:1::0;10927:128:0;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;11011:16:::1;:36:::0;;-1:-1:-1;;;;;;11011:36:0::1;-1:-1:-1::0;;;;;11011:36:0;;;::::1;::::0;;;::::1;::::0;;10927:128::o;4732:207::-;157:10;4812:4;4861:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4861:34:0;;;;;;;;;;4812:4;;4829:80;;4852:7;;4861:47;;4898:10;;4861:47;:::i;:::-;4829:8;:80::i;:::-;-1:-1:-1;4927:4:0;4732:207;;;;:::o;20148:262::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;20214:21:::1;20254:11:::0;20246:46:::1;;;::::0;-1:-1:-1;;;20246:46:0;;10408:2:1;20246:46:0::1;::::0;::::1;10390:21:1::0;10447:2;10427:18;;;10420:30;-1:-1:-1;;;10466:18:1;;;10459:52;10528:18;;20246:46:0::1;10206:346:1::0;20246:46:0::1;20306:12;20324:7;601:6:::0;;-1:-1:-1;;;;;601:6:0;;536:79;20324:7:::1;-1:-1:-1::0;;;;;20324:12:0::1;20344:7;20324:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20305:51;;;20375:7;20367:35;;;::::0;-1:-1:-1;;;20367:35:0;;10969:2:1;20367:35:0::1;::::0;::::1;10951:21:1::0;11008:2;10988:18;;;10981:30;-1:-1:-1;;;11027:18:1;;;11020:45;11082:18;;20367:35:0::1;10767:339:1::0;20367:35:0::1;20185:225;;20148:262::o:0;19136:92::-;19193:27;157:10;19213:6;19193:5;:27::i;:::-;19136:92;:::o;20418:1371::-;20505:10;20469:20;20492:24;;;:12;:24;;;;;;;20533:17;;;20529:68;;-1:-1:-1;20582:3:0;20529:68;20609:12;20636;20652:3;20636:19;20632:424;;20691:14;9864:1;20691:2;:14;:::i;:::-;20687:18;;:1;:18;:::i;:::-;20680:25;;20632:424;;;20727:12;20743:3;20727:19;20723:333;;20782:14;9864:1;20782:2;:14;:::i;:::-;20778:18;;:1;:18;:::i;20723:333::-;20818:12;20834:3;20818:19;20814:242;;20874:14;9864:1;20874:2;:14;:::i;:::-;20869:19;;:2;:19;:::i;20814:242::-;20910:12;20926:3;20910:19;20906:150;;20966:14;9864:1;20966:2;:14;:::i;:::-;20961:19;;:2;:19;:::i;20906:150::-;21013:31;;-1:-1:-1;;;21013:31:0;;11313:2:1;21013:31:0;;;11295:21:1;11352:2;11332:18;;;11325:30;-1:-1:-1;;;11371:18:1;;;11364:51;11432:18;;21013:31:0;11111:345:1;20906:150:0;21086:10;3722:7;3749:18;;;;;;;;;;;21101:4;-1:-1:-1;21076:29:0;21068:66;;;;-1:-1:-1;;;21068:66:0;;;;;;;:::i;:::-;21169:8;;21147:37;;21157:10;;-1:-1:-1;;;;;21169:8:0;21179:4;21147:9;:37::i;:::-;21201:12;21217:3;21201:19;21197:346;;21250:10;21237:24;;;;:12;:24;;;;;21264:3;21237:30;;21197:346;;;21289:12;21305:3;21289:19;21285:258;;21338:10;21325:24;;;;:12;:24;;;;;21352:3;21325:30;;21285:258;;;21377:12;21393:3;21377:19;21373:170;;21426:10;21413:24;;;;:12;:24;;;;;21440:3;21413:30;;21373:170;;;21465:12;21481:3;21465:19;21461:82;;21514:10;21501:24;;;;:12;:24;;;;;21528:3;21501:30;;21461:82;21576:18;;21563:9;:31;21555:86;;;;-1:-1:-1;;;21555:86:0;;;;;;;:::i;:::-;21670:27;;21710:18;;21670:63;;21655:9;;-1:-1:-1;;;;;21670:27:0;;21710:18;21655:9;21670:63;21655:9;21670:63;21710:18;21670:27;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21654:79;;;21752:4;21744:37;;;;-1:-1:-1;;;21744:37:0;;;;;;;:::i;:::-;20458:1331;;;20418:1371::o;11700:175::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11779:30:0;::::1;11812:5;11779:30:::0;;;:21:::1;:30;::::0;;;;;;;;:38;;-1:-1:-1;;11779:38:0::1;::::0;;11833:34;;1709:51:1;;;11833:34:0::1;::::0;1682:18:1;11833:34:0::1;1563:203:1::0;12772:138:0;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12867:24:0;;::::1;;::::0;;;:20:::1;:24;::::0;;;;:35;12772:138::o;21797:1771::-;21886:10;21849:20;21872:25;;;:13;:25;;;;;;;21914:17;;;21910:69;;-1:-1:-1;21963:4:0;21910:69;21991:12;22018;22034:4;22018:20;22014:620;;22074:14;9864:1;22074:2;:14;:::i;:::-;22070:18;;:1;:18;:::i;:::-;22063:25;;22014:620;;;22110:12;22126:4;22110:20;22106:528;;22167:14;9864:1;22167:2;:14;:::i;:::-;22162:19;;:2;:19;:::i;22106:528::-;22203:12;22219:4;22203:20;22199:435;;22260:14;9864:1;22260:2;:14;:::i;:::-;22255:19;;:2;:19;:::i;22199:435::-;22296:12;22312:5;22296:21;22292:342;;22354:14;9864:1;22354:2;:14;:::i;:::-;22349:19;;:2;:19;:::i;22292:342::-;22390:12;22406:5;22390:21;22386:248;;22449:14;9864:1;22449:2;:14;:::i;:::-;22443:20;;:3;:20;:::i;22386:248::-;22485:12;22501:5;22485:21;22481:153;;22544:14;9864:1;22544:2;:14;:::i;:::-;22538:20;;:3;:20;:::i;22481:153::-;22664:10;3722:7;3749:18;;;;;;;;;;;22679:4;-1:-1:-1;22654:29:0;22646:66;;;;-1:-1:-1;;;22646:66:0;;;;;;;:::i;:::-;22747:8;;22725:37;;22735:10;;-1:-1:-1;;;;;22747:8:0;22757:4;22725:9;:37::i;:::-;22779:12;22795:4;22779:20;22775:547;;22830:10;22816:25;;;;:13;:25;;;;;22844:4;22816:32;;22775:547;;;22870:12;22886:4;22870:20;22866:456;;22921:10;22907:25;;;;:13;:25;;;;;22935:4;22907:32;;22866:456;;;22961:12;22977:4;22961:20;22957:365;;23012:10;22998:25;;;;:13;:25;;;;;23026:5;22998:33;;22957:365;;;23053:12;23069:5;23053:21;23049:273;;23105:10;23091:25;;;;:13;:25;;;;;23119:5;23091:33;;23049:273;;;23146:12;23162:5;23146:21;23142:180;;23198:10;23184:25;;;;:13;:25;;;;;23212:5;23184:33;;23142:180;;;23239:12;23255:5;23239:21;23235:87;;23291:10;23277:25;;;;:13;:25;;;;;23305:5;23277:33;;23355:18;;23342:9;:31;23334:86;;;;-1:-1:-1;;;23334:86:0;;;;;;;:::i;16565:1799::-;9931:25;;-1:-1:-1;;;9931:25:0;;;;9930:26;9922:75;;;;-1:-1:-1;;;9922:75:0;;;;;;;:::i;:::-;16904:9:::1;::::0;-1:-1:-1;;;;;16884:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;16866:34:::1;::::0;:15:::1;:34;:::i;:::-;:47;;16858:82;;;;-1:-1:-1::0;;;16858:82:0::1;;;;;;;:::i;:::-;16953:14;16970:36;16986:2;16990:15;16970;:36::i;:::-;16953:53;;17037:13;;17027:6;:23;;17019:73;;;;-1:-1:-1::0;;;17019:73:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17105:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;17124:15:::1;17105:34:::0;;17168:11;:29:::1;;17187:10;17168:29;;;17182:2;17168:29;17152:45;;17212:11;17208:249;;;17272:13;::::0;-1:-1:-1;;;;;17248:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;:37:::1;17240:77;;;;-1:-1:-1::0;;;17240:77:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17332:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;:26;;17357:1:::1;::::0;17332:21;:26:::1;::::0;17357:1;;17332:26:::1;:::i;:::-;::::0;;;-1:-1:-1;17208:249:0::1;::::0;-1:-1:-1;17208:249:0::1;;17412:7;;17399:9;:20;17391:54;;;;-1:-1:-1::0;;;17391:54:0::1;;;;;;;:::i;:::-;17513:17;::::0;17496:34:::1;::::0;:14;:34:::1;:::i;:::-;17477:15;:53;;17469:87;;;;-1:-1:-1::0;;;17469:87:0::1;;;;;;;:::i;:::-;17597:72;::::0;-1:-1:-1;;;;;;15103:2:1;15099:15;;;15095:24;;17597:72:0::1;::::0;::::1;15083:37:1::0;15154:15;;;15150:24;;15136:12;;;15129:46;15209:15;;;15205:24;15191:12;;;15184:46;15246:12;;;15239:28;;;15283:12;;;15276:28;;;17569:15:0::1;::::0;15320:13:1;;17597:72:0::1;::::0;;-1:-1:-1;;17597:72:0;;::::1;::::0;;;;;;17587:83;;17597:72:::1;17587:83:::0;;::::1;::::0;17726:16:::1;::::0;17587:83;;-1:-1:-1;;;;;;17726:16:0::1;17689:33;17587:83:::0;17712:9;17689:13:::1;:33::i;:::-;-1:-1:-1::0;;;;;17689:53:0::1;;17681:83;;;;-1:-1:-1::0;;;17681:83:0::1;;;;;;;:::i;:::-;17777:17;17783:2;17787:6;17777:5;:17::i;:::-;-1:-1:-1::0;;;;;17809:22:0;::::1;::::0;17805:145:::1;;17848:22;17889:3;17874:11;:6:::0;17883:2:::1;17874:11;:::i;:::-;17873:19;;;;:::i;:::-;17848:44;;17907:31;17913:8;17923:14;17907:5;:31::i;:::-;17833:117;17805:145;-1:-1:-1::0;;;;;17964:31:0;::::1;::::0;17960:180:::1;;18012:31;18061:3;18047:10;:6:::0;18056:1:::1;18047:10;:::i;:::-;18046:18;;;;:::i;:::-;18012:52;;18079:49;18085:17;18104:23;18079:5;:49::i;:::-;17997:143;17960:180;18152:19;18190:3;18175:11;:6:::0;18184:2:::1;18175:11;:::i;:::-;18174:19;;;;:::i;:::-;18152:41;;18204:34;18226:11;18204:21;:34::i;:::-;18267:16;::::0;18296:7:::1;::::0;18267:41:::1;::::0;18252:9:::1;::::0;-1:-1:-1;;;;;18267:16:0::1;::::0;18296:7;18252:9;18267:41;18252:9;18267:41;18296:7;18267:16;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18251:57;;;18327:4;18319:37;;;;-1:-1:-1::0;;;18319:37:0::1;;;;;;;:::i;:::-;16847:1517;;;;;16565:1799:::0;;;;;;;:::o;12276:226::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;12373:7:::1;:14;12391:1;12373:19;12365:88;;;::::0;-1:-1:-1;;;12365:88:0;;15892:2:1;12365:88:0::1;::::0;::::1;15874:21:1::0;15931:2;15911:18;;;15904:30;15970:34;15950:18;;;15943:62;16041:26;16021:18;;;16014:54;16085:19;;12365:88:0::1;15690:420:1::0;12365:88:0::1;12464:30:::0;;::::1;::::0;:20:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;751:95::-:0;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;808:30:::1;835:1;808:18;:30::i;:::-;751:95::o:0;18894:234::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;18959:28:::1;::::0;-1:-1:-1;;;18959:28:0;::::1;;;18958:29;18950:90;;;::::0;-1:-1:-1;;;18950:90:0;;16317:2:1;18950:90:0::1;::::0;::::1;16299:21:1::0;16356:2;16336:18;;;16329:30;16395:34;16375:18;;;16368:62;-1:-1:-1;;;16446:18:1;;;16439:46;16502:19;;18950:90:0::1;16115:412:1::0;18950:90:0::1;19051:15;:23:::0;;-1:-1:-1;;;;19085:35:0;-1:-1:-1;;;19085:35:0::1;::::0;;18894:234::o;3361:87::-;3400:13;3433:7;3426:14;;;;;:::i;12510:122::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12597:16:0;;::::1;;::::0;;;:12:::1;:16;::::0;;;;:27;12510:122::o;15004:1553::-;9931:25;;-1:-1:-1;;;9931:25:0;;;;9930:26;9922:75;;;;-1:-1:-1;;;9922:75:0;;;;;;;:::i;:::-;15306:9:::1;::::0;-1:-1:-1;;;;;15286:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;15268:34:::1;::::0;:15:::1;:34;:::i;:::-;:47;;15260:82;;;;-1:-1:-1::0;;;15260:82:0::1;;;;;;;:::i;:::-;15355:14;15372:36;15388:2;15392:15;15372;:36::i;:::-;15355:53;;15439:13;;15429:6;:23;;15421:73;;;;-1:-1:-1::0;;;15421:73:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15507:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;15526:15:::1;15507:34:::0;;15570:11;:29:::1;;15589:10;15570:29;;;15584:2;15570:29;15554:45;;15614:11;15610:249;;;15674:13;::::0;-1:-1:-1;;;;;15650:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;:37:::1;15642:77;;;;-1:-1:-1::0;;;15642:77:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15734:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;:26;;15759:1:::1;::::0;15734:21;:26:::1;::::0;15759:1;;15734:26:::1;:::i;:::-;::::0;;;-1:-1:-1;15610:249:0::1;::::0;-1:-1:-1;15610:249:0::1;;15814:7;;15801:9;:20;15793:54;;;;-1:-1:-1::0;;;15793:54:0::1;;;;;;;:::i;:::-;15915:17;::::0;15898:34:::1;::::0;:14;:34:::1;:::i;:::-;15879:15;:53;;15871:87;;;;-1:-1:-1::0;;;15871:87:0::1;;;;;;;:::i;:::-;15999:53;::::0;-1:-1:-1;;;;;;16815:2:1;16811:15;;;16807:24;;15999:53:0::1;::::0;::::1;16795:37:1::0;16866:15;;;16862:24;16848:12;;;16841:46;16903:12;;;16896:28;;;16940:12;;;16933:28;;;15971:15:0::1;::::0;16977:13:1;;15999:53:0::1;::::0;;-1:-1:-1;;15999:53:0;;::::1;::::0;;;;;;15989:64;;15999:53:::1;15989:64:::0;;::::1;::::0;16109:16:::1;::::0;15989:64;;-1:-1:-1;;;;;;16109:16:0::1;16072:33;15989:64:::0;16095:9;16072:13:::1;:33::i;:::-;-1:-1:-1::0;;;;;16072:53:0::1;;16064:83;;;;-1:-1:-1::0;;;16064:83:0::1;;;;;;;:::i;:::-;16160:17;16166:2;16170:6;16160:5;:17::i;:::-;-1:-1:-1::0;;;;;16192:22:0;::::1;::::0;16188:145:::1;;16231:22;16272:3;16257:11;:6:::0;16266:2:::1;16257:11;:::i;:::-;16256:19;;;;:::i;:::-;16231:44;;16290:31;16296:8;16306:14;16290:5;:31::i;:::-;16216:117;16188:145;16345:19;16383:3;16368:11;:6:::0;16377:2:::1;16368:11;:::i;:::-;16367:19;;;;:::i;:::-;16345:41;;16397:34;16419:11;16397:21;:34::i;:::-;16460:16;::::0;16489:7:::1;::::0;16460:41:::1;::::0;16445:9:::1;::::0;-1:-1:-1;;;;;16460:16:0::1;::::0;16489:7;16445:9;16460:41;16445:9;16460:41;16489:7;16460:16;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16444:57;;;16520:4;16512:37;;;;-1:-1:-1::0;;;16512:37:0::1;;;;;;;:::i;:::-;15249:1308;;;;;15004:1553:::0;;;;;;:::o;23576:1785::-;23679:10;23635:20;23658:32;;;:20;:32;;;;;;;23707:17;;;23703:69;;-1:-1:-1;23756:4:0;23703:69;23784:12;23811;23827:4;23811:20;23807:574;;23859:14;9864:1;23859:2;:14;:::i;:::-;23855:18;;:1;:18;:::i;:::-;23848:25;;23807:574;;;23895:12;23911:5;23895:21;23891:490;;23945:14;9864:1;23945:2;:14;:::i;:::-;23940:19;;:2;:19;:::i;23891:490::-;23981:12;23997:5;23981:21;23977:404;;24031:14;9864:1;24031:2;:14;:::i;:::-;24026:19;;:2;:19;:::i;23977:404::-;24067:12;24083:5;24067:21;24063:318;;24117:14;9864:1;24117:2;:14;:::i;:::-;24112:19;;:2;:19;:::i;24063:318::-;24153:12;24169:5;24153:21;24149:232;;24204:14;9864:1;24204:2;:14;:::i;:::-;24198:20;;:3;:20;:::i;24149:232::-;24240:12;24256:5;24240:21;24236:145;;24291:14;9864:1;24291:2;:14;:::i;:::-;24285:20;;:3;:20;:::i;24236:145::-;24411:10;3722:7;3749:18;;;;;;;;;;;24426:4;-1:-1:-1;24401:29:0;24393:66;;;;-1:-1:-1;;;24393:66:0;;;;;;;:::i;:::-;24494:8;;24472:37;;24482:10;;-1:-1:-1;;;;;24494:8:0;24504:4;24472:9;:37::i;:::-;24526:12;24542:4;24526:20;24522:593;;24584:10;24563:32;;;;:20;:32;;;;;24598:5;24563:40;;24522:593;;;24625:12;24641:5;24625:21;24621:494;;24684:10;24663:32;;;;:20;:32;;;;;24698:5;24663:40;;24621:494;;;24725:12;24741:5;24725:21;24721:394;;24784:10;24763:32;;;;:20;:32;;;;;24798:5;24763:40;;24721:394;;;24825:12;24841:5;24825:21;24821:294;;24884:10;24863:32;;;;:20;:32;;;;;24898:5;24863:40;;24821:294;;;24925:12;24941:5;24925:21;24921:194;;24984:10;24963:32;;;;:20;:32;;;;;24998:5;24963:40;;24921:194;;;25025:12;25041:5;25025:21;25021:94;;25084:10;25063:32;;;;:20;:32;;;;;25098:5;25063:40;;25148:18;;25135:9;:31;25127:86;;;;-1:-1:-1;;;25127:86:0;;;;;;;:::i;4947:369::-;157:10;5032:4;5076:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5076:34:0;;;;;;;;;;5129:35;;;;5121:85;;;;-1:-1:-1;;;5121:85:0;;17203:2:1;5121:85:0;;;17185:21:1;17242:2;17222:18;;;17215:30;17281:34;17261:18;;;17254:62;-1:-1:-1;;;17332:18:1;;;17325:35;17377:19;;5121:85:0;17001:401:1;5121:85:0;5217:67;157:10;5240:7;5249:34;5268:15;5249:16;:34;:::i;5217:67::-;-1:-1:-1;5304:4:0;;4947:369;-1:-1:-1;;;4947:369:0:o;19413:231::-;10086:15;;19515:4;;-1:-1:-1;;;10086:15:0;;;;10085:16;;:69;;-1:-1:-1;157:10:0;10119:35;;;;:21;:35;;;;;;;;10085:69;:111;;;-1:-1:-1;10188:8:0;;-1:-1:-1;;;;;10188:8:0;157:10;-1:-1:-1;;;;;10172:24:0;;10085:111;:157;;;-1:-1:-1;10214:28:0;;-1:-1:-1;;;10214:28:0;;;;10085:157;10063:268;;;;-1:-1:-1;;;10063:268:0;;;;;;;:::i;:::-;19532:53:::1;157:10:::0;19553:12:::1;85:90:::0;19532:53:::1;19603:33;19618:9;19629:6;19603:14;:33::i;11063:172::-:0;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;11169:27:::1;:58:::0;;-1:-1:-1;;;;;;11169:58:0::1;-1:-1:-1::0;;;;;11169:58:0;;;::::1;::::0;;;::::1;::::0;;11063:172::o;10783:136::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;10871:18:::1;:40:::0;10783:136::o;10359:128::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;10443:16:::1;:36:::0;;-1:-1:-1;;;;;;10443:36:0::1;-1:-1:-1::0;;;;;10443:36:0;;;::::1;::::0;;;::::1;::::0;;10359:128::o;8192:37::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8192:37:0;;-1:-1:-1;8192:37:0;:::o;11995:132::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;12081:17:::1;:38:::0;11995:132::o;13644:1352::-;9931:25;;-1:-1:-1;;;9931:25:0;;;;9930:26;9922:75;;;;-1:-1:-1;;;9922:75:0;;;;;;;:::i;:::-;13910:9:::1;::::0;-1:-1:-1;;;;;13890:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;;13872:34:::1;::::0;:15:::1;:34;:::i;:::-;:47;;13864:82;;;;-1:-1:-1::0;;;13864:82:0::1;;;;;;;:::i;:::-;13959:14;13976:36;13992:2;13996:15;13976;:36::i;:::-;13959:53;;14043:13;;14033:6;:23;;14025:73;;;;-1:-1:-1::0;;;14025:73:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14111:16:0;::::1;;::::0;;;:12:::1;:16;::::0;;;;14130:15:::1;14111:34:::0;;14174:11;:29:::1;;14193:10;14174:29;;;14188:2;14174:29;14158:45;;14218:11;14214:249;;;14278:13;::::0;-1:-1:-1;;;;;14254:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;;:37:::1;14246:77;;;;-1:-1:-1::0;;;14246:77:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14338:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;:26;;14363:1:::1;::::0;14338:21;:26:::1;::::0;14363:1;;14338:26:::1;:::i;:::-;::::0;;;-1:-1:-1;14214:249:0::1;::::0;-1:-1:-1;14214:249:0::1;;14418:7;;14405:9;:20;14397:54;;;;-1:-1:-1::0;;;14397:54:0::1;;;;;;;:::i;:::-;14519:17;::::0;14502:34:::1;::::0;:14;:34:::1;:::i;:::-;14483:15;:53;;14475:87;;;;-1:-1:-1::0;;;14475:87:0::1;;;;;;;:::i;:::-;14603:43;::::0;-1:-1:-1;;;;;;17612:2:1;17608:15;;;17604:53;14603:43:0::1;::::0;::::1;17592:66:1::0;17674:12;;;17667:28;;;17711:12;;;17704:28;;;14575:15:0::1;::::0;17748:12:1;;14603:43:0::1;::::0;;-1:-1:-1;;14603:43:0;;::::1;::::0;;;;;;14593:54;;14603:43:::1;14593:54:::0;;::::1;::::0;14703:16:::1;::::0;14593:54;;-1:-1:-1;;;;;;14703:16:0::1;14666:33;14593:54:::0;14689:9;14666:13:::1;:33::i;:::-;-1:-1:-1::0;;;;;14666:53:0::1;;14658:83;;;;-1:-1:-1::0;;;14658:83:0::1;;;;;;;:::i;:::-;14754:17;14760:2;14764:6;14754:5;:17::i;:::-;14784:19;14822:3;14807:11;:6:::0;14816:2:::1;14807:11;:::i;:::-;14806:19;;;;:::i;:::-;14784:41;;14836:34;14858:11;14836:21;:34::i;:::-;14899:16;::::0;14928:7:::1;::::0;14899:41:::1;::::0;14884:9:::1;::::0;-1:-1:-1;;;;;14899:16:0::1;::::0;14928:7;14884:9;14899:41;14884:9;14899:41;14928:7;14899:16;:41:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14883:57;;;14959:4;14951:37;;;;-1:-1:-1::0;;;14951:37:0::1;;;;;;;:::i;:::-;13853:1143;;;;;13644:1352:::0;;;;;:::o;11883:104::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;11955:9:::1;:24:::0;11883:104::o;12640:124::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12728:17:0;;::::1;;::::0;;;:13:::1;:17;::::0;;;;:28;12640:124::o;10683:92::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;10749:7:::1;:18:::0;10683:92::o;11243:96::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;11311:8:::1;:20:::0;;-1:-1:-1;;;;;;11311:20:0::1;-1:-1:-1::0;;;;;11311:20:0;;;::::1;::::0;;;::::1;::::0;;11243:96::o;854:193::-;601:6;;-1:-1:-1;;;;;601:6:0;157:10;663:23;655:68;;;;-1:-1:-1;;;655:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;935:22:0;::::1;927:73;;;::::0;-1:-1:-1;;;927:73:0;;17973:2:1;927:73:0::1;::::0;::::1;17955:21:1::0;18012:2;17992:18;;;17985:30;18051:34;18031:18;;;18024:62;-1:-1:-1;;;18102:18:1;;;18095:36;18148:19;;927:73:0::1;17771:402:1::0;927:73:0::1;1011:28;1030:8;1011:18;:28::i;19236:169::-:0;10086:15;;-1:-1:-1;;;10086:15:0;;;;10085:16;;:69;;-1:-1:-1;157:10:0;10119:35;;;;:21;:35;;;;;;;;10085:69;:111;;;-1:-1:-1;10188:8:0;;-1:-1:-1;;;;;10188:8:0;157:10;-1:-1:-1;;;;;10172:24:0;;10085:111;:157;;;-1:-1:-1;10214:28:0;;-1:-1:-1;;;10214:28:0;;;;10085:157;10063:268;;;;-1:-1:-1;;;10063:268:0;;;;;;;:::i;4125:169::-;4208:4;4225:39;157:10;4248:7;4257:6;4225:8;:39::i;4302:422::-;4408:4;4425:36;4435:6;4443:9;4454:6;4425:9;:36::i;:::-;-1:-1:-1;;;;;4501:19:0;;4474:24;4501:19;;;:11;:19;;;;;;;;157:10;4501:33;;;;;;;;4553:26;;;;4545:79;;;;-1:-1:-1;;;4545:79:0;;18380:2:1;4545:79:0;;;18362:21:1;18419:2;18399:18;;;18392:30;18458:34;18438:18;;;18431:62;-1:-1:-1;;;18509:18:1;;;18502:38;18557:19;;4545:79:0;18178:404:1;4545:79:0;4635:57;4644:6;157:10;4666:25;4685:6;4666:16;:25;:::i;4635:57::-;-1:-1:-1;4712:4:0;;4302:422;-1:-1:-1;;;;4302:422:0:o;6686:338::-;-1:-1:-1;;;;;6780:19:0;;6772:68;;;;-1:-1:-1;;;6772:68:0;;18789:2:1;6772:68:0;;;18771:21:1;18828:2;18808:18;;;18801:30;18867:34;18847:18;;;18840:62;-1:-1:-1;;;18918:18:1;;;18911:34;18962:19;;6772:68:0;18587:400:1;6772:68:0;-1:-1:-1;;;;;6859:21:0;;6851:68;;;;-1:-1:-1;;;6851:68:0;;19194:2:1;6851:68:0;;;19176:21:1;19233:2;19213:18;;;19206:30;19272:34;19252:18;;;19245:62;-1:-1:-1;;;19323:18:1;;;19316:32;19365:19;;6851:68:0;18992:398:1;6851:68:0;-1:-1:-1;;;;;6932:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6984:32;;905:25:1;;;6984:32:0;;878:18:1;6984:32:0;;;;;;;;6686:338;;;:::o;6254:424::-;-1:-1:-1;;;;;6330:21:0;;6322:67;;;;-1:-1:-1;;;6322:67:0;;19597:2:1;6322:67:0;;;19579:21:1;19636:2;19616:18;;;19609:30;19675:34;19655:18;;;19648:62;-1:-1:-1;;;19726:18:1;;;19719:31;19767:19;;6322:67:0;19395:397:1;6322:67:0;-1:-1:-1;;;;;6427:18:0;;6402:22;6427:18;;;;;;;;;;;6464:24;;;;6456:71;;;;-1:-1:-1;;;6456:71:0;;19999:2:1;6456:71:0;;;19981:21:1;20038:2;20018:18;;;20011:30;20077:34;20057:18;;;20050:62;-1:-1:-1;;;20128:18:1;;;20121:32;20170:19;;6456:71:0;19797:398:1;6456:71:0;6559:23;6576:6;6559:14;:23;:::i;:::-;-1:-1:-1;;;;;6538:18:0;;:9;:18;;;;;;;;;;:44;;;;6593:12;:22;;6609:6;;6538:9;6593:22;;6609:6;;6593:22;:::i;:::-;;;;-1:-1:-1;;6633:37:0;;905:25:1;;;6659:1:0;;-1:-1:-1;;;;;6633:37:0;;;;;893:2:1;878:18;6633:37:0;759:177:1;5434:536:0;-1:-1:-1;;;;;5532:20:0;;5524:70;;;;-1:-1:-1;;;5524:70:0;;20402:2:1;5524:70:0;;;20384:21:1;20441:2;20421:18;;;20414:30;20480:34;20460:18;;;20453:62;-1:-1:-1;;;20531:18:1;;;20524:35;20576:19;;5524:70:0;20200:401:1;5524:70:0;-1:-1:-1;;;;;5613:23:0;;5605:71;;;;-1:-1:-1;;;5605:71:0;;20808:2:1;5605:71:0;;;20790:21:1;20847:2;20827:18;;;20820:30;20886:34;20866:18;;;20859:62;-1:-1:-1;;;20937:18:1;;;20930:33;20980:19;;5605:71:0;20606:399:1;5605:71:0;-1:-1:-1;;;;;5713:17:0;;5689:21;5713:17;;;;;;;;;;;5749:23;;;;5741:74;;;;-1:-1:-1;;;5741:74:0;;21212:2:1;5741:74:0;;;21194:21:1;21251:2;21231:18;;;21224:30;21290:34;21270:18;;;21263:62;-1:-1:-1;;;21341:18:1;;;21334:36;21387:19;;5741:74:0;21010:402:1;5741:74:0;5846:22;5862:6;5846:13;:22;:::i;:::-;-1:-1:-1;;;;;5826:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5879:20;;;;;;;;:30;;5903:6;;5826:9;5879:30;;5903:6;;5879:30;:::i;:::-;;;;;;;;5944:9;-1:-1:-1;;;;;5927:35:0;5936:6;-1:-1:-1;;;;;5927:35:0;;5955:6;5927:35;;;;905:25:1;;893:2;878:18;;759:177;5927:35:0;;;;;;;;5513:457;5434:536;;;:::o;10495:180::-;10582:7;10609:58;10623:32;:7;2084:58;;22151:66:1;2084:58:0;;;22139:79:1;22234:12;;;22227:28;;;2047:7:0;;22271:12:1;;2084:58:0;;;;;;;;;;;;2074:69;;;;;;2067:76;;1978:173;;;;10623:32;10657:9;10609:13;:58::i;5978:268::-;-1:-1:-1;;;;;6054:21:0;;6046:65;;;;-1:-1:-1;;;6046:65:0;;21619:2:1;6046:65:0;;;21601:21:1;21658:2;21638:18;;;21631:30;21697:33;21677:18;;;21670:61;21748:18;;6046:65:0;21417:355:1;6046:65:0;6140:6;6124:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6157:18:0;;:9;:18;;;;;;;;;;:28;;6179:6;;6157:9;:28;;6179:6;;6157:28;:::i;:::-;;;;-1:-1:-1;;6201:37:0;;905:25:1;;;-1:-1:-1;;;;;6201:37:0;;;6218:1;;6201:37;;893:2:1;878:18;6201:37:0;;;;;;;5978:268;;:::o;18372:404::-;18444:56;18450:20;18471:1;18450:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18450:23:0;18496:3;18476:16;:11;18490:2;18476:16;:::i;:::-;18475:24;;;;:::i;:::-;18444:5;:56::i;:::-;18511;18517:20;18538:1;18517:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18517:23:0;18563:3;18543:16;:11;18557:2;18543:16;:::i;18511:56::-;18578;18584:20;18605:1;18584:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18584:23:0;18630:3;18610:16;:11;18624:2;18610:16;:::i;18578:56::-;18645;18651:20;18672:1;18651:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18651:23:0;18697:3;18677:16;:11;18691:2;18677:16;:::i;18645:56::-;18712;18718:20;18739:1;18718:23;;;;;;;;:::i;1055:183::-;1140:6;;;-1:-1:-1;;;;;1157:17:0;;;-1:-1:-1;;;;;;1157:17:0;;;;;;;1190:40;;1140:6;;;1157:17;1140:6;;1190:40;;1121:16;;1190:40;1110:128;1055:183;:::o;3783:175::-;3869:4;3886:42;157:10;3910:9;3921:6;3886:9;:42::i;1266:704::-;1344:7;1372:9;:16;1392:2;1372:22;1364:66;;;;-1:-1:-1;;;1364:66:0;;22496:2:1;1364:66:0;;;22478:21:1;22535:2;22515:18;;;22508:30;22574:33;22554:18;;;22547:61;22625:18;;1364:66:0;22294:355:1;1364:66:0;1553:4;1538:20;;1532:27;1599:4;1584:20;;1578:27;1653:4;1638:20;;1632:27;1443:9;1624:36;1578:27;-1:-1:-1;;;;;1728:75:0;;;1720:122;;;;-1:-1:-1;;;1720:122:0;;22856:2:1;1720:122:0;;;22838:21:1;22895:2;22875:18;;;22868:30;22934:34;22914:18;;;22907:62;-1:-1:-1;;;22985:18:1;;;22978:32;23027:19;;1720:122:0;22654:398:1;1720:122:0;1861:1;:7;;1866:2;1861:7;:18;;;;1872:1;:7;;1877:2;1872:7;1861:18;1853:65;;;;-1:-1:-1;;;1853:65:0;;23259:2:1;1853:65:0;;;23241:21:1;23298:2;23278:18;;;23271:30;23337:34;23317:18;;;23310:62;-1:-1:-1;;;23388:18:1;;;23381:32;23430:19;;1853:65:0;23057:398:1;1853:65:0;1938:24;;;;;;;;;;;;23687:25:1;;;23760:4;23748:17;;23728:18;;;23721:45;;;;23782:18;;;23775:34;;;23825:18;;;23818:34;;;1938:24:0;;23659:19:1;;1938:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1938:24:0;;-1:-1:-1;;1938:24:0;;;1266:704;-1:-1:-1;;;;;;;;1266:704:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;206:548:1;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;941:180::-;1000:6;1053:2;1041:9;1032:7;1028:23;1024:32;1021:52;;;1069:1;1066;1059:12;1021:52;-1:-1:-1;1092:23:1;;941:180;-1:-1:-1;941:180:1:o;1126:173::-;1194:20;;-1:-1:-1;;;;;1243:31:1;;1233:42;;1223:70;;1289:1;1286;1279:12;1223:70;1126:173;;;:::o;1304:254::-;1372:6;1380;1433:2;1421:9;1412:7;1408:23;1404:32;1401:52;;;1449:1;1446;1439:12;1401:52;1472:29;1491:9;1472:29;:::i;:::-;1462:39;1548:2;1533:18;;;;1520:32;;-1:-1:-1;;;1304:254:1:o;1771:328::-;1848:6;1856;1864;1917:2;1905:9;1896:7;1892:23;1888:32;1885:52;;;1933:1;1930;1923:12;1885:52;1956:29;1975:9;1956:29;:::i;:::-;1946:39;;2004:38;2038:2;2027:9;2023:18;2004:38;:::i;:::-;1994:48;;2089:2;2078:9;2074:18;2061:32;2051:42;;1771:328;;;;;:::o;2104:186::-;2163:6;2216:2;2204:9;2195:7;2191:23;2187:32;2184:52;;;2232:1;2229;2222:12;2184:52;2255:29;2274:9;2255:29;:::i;2484:127::-;2545:10;2540:3;2536:20;2533:1;2526:31;2576:4;2573:1;2566:15;2600:4;2597:1;2590:15;2616:275;2687:2;2681:9;2752:2;2733:13;;-1:-1:-1;;2729:27:1;2717:40;;2787:18;2772:34;;2808:22;;;2769:62;2766:88;;;2834:18;;:::i;:::-;2870:2;2863:22;2616:275;;-1:-1:-1;2616:275:1:o;2896:530::-;2938:5;2991:3;2984:4;2976:6;2972:17;2968:27;2958:55;;3009:1;3006;2999:12;2958:55;3045:6;3032:20;3071:18;3067:2;3064:26;3061:52;;;3093:18;;:::i;:::-;3137:55;3180:2;3161:13;;-1:-1:-1;;3157:27:1;3186:4;3153:38;3137:55;:::i;:::-;3217:2;3208:7;3201:19;3263:3;3256:4;3251:2;3243:6;3239:15;3235:26;3232:35;3229:55;;;3280:1;3277;3270:12;3229:55;3345:2;3338:4;3330:6;3326:17;3319:4;3310:7;3306:18;3293:55;3393:1;3368:16;;;3386:4;3364:27;3357:38;;;;3372:7;2896:530;-1:-1:-1;;;2896:530:1:o;3431:160::-;3496:20;;3552:13;;3545:21;3535:32;;3525:60;;3581:1;3578;3571:12;3596:750;3715:6;3723;3731;3739;3747;3755;3763;3816:3;3804:9;3795:7;3791:23;3787:33;3784:53;;;3833:1;3830;3823:12;3784:53;3856:29;3875:9;3856:29;:::i;:::-;3846:39;;3904:38;3938:2;3927:9;3923:18;3904:38;:::i;:::-;3894:48;;3961:38;3995:2;3984:9;3980:18;3961:38;:::i;:::-;3951:48;;4046:2;4035:9;4031:18;4018:32;4008:42;;4101:3;4090:9;4086:19;4073:33;4129:18;4121:6;4118:30;4115:50;;;4161:1;4158;4151:12;4115:50;4184:49;4225:7;4216:6;4205:9;4201:22;4184:49;:::i;:::-;4174:59;;;4252:36;4283:3;4272:9;4268:19;4252:36;:::i;:::-;4242:46;;4335:3;4324:9;4320:19;4307:33;4297:43;;3596:750;;;;;;;;;;:::o;4351:952::-;4435:6;4466:2;4509;4497:9;4488:7;4484:23;4480:32;4477:52;;;4525:1;4522;4515:12;4477:52;4565:9;4552:23;4594:18;4635:2;4627:6;4624:14;4621:34;;;4651:1;4648;4641:12;4621:34;4689:6;4678:9;4674:22;4664:32;;4734:7;4727:4;4723:2;4719:13;4715:27;4705:55;;4756:1;4753;4746:12;4705:55;4792:2;4779:16;4814:2;4810;4807:10;4804:36;;;4820:18;;:::i;:::-;4866:2;4863:1;4859:10;4849:20;;4889:28;4913:2;4909;4905:11;4889:28;:::i;:::-;4951:15;;;5021:11;;;5017:20;;;4982:12;;;;5049:19;;;5046:39;;;5081:1;5078;5071:12;5046:39;5105:11;;;;5125:148;5141:6;5136:3;5133:15;5125:148;;;5207:23;5226:3;5207:23;:::i;:::-;5195:36;;5158:12;;;;5251;;;;5125:148;;;5292:5;4351:952;-1:-1:-1;;;;;;;;4351:952:1:o;5308:675::-;5418:6;5426;5434;5442;5450;5458;5511:3;5499:9;5490:7;5486:23;5482:33;5479:53;;;5528:1;5525;5518:12;5479:53;5551:29;5570:9;5551:29;:::i;:::-;5541:39;;5599:38;5633:2;5622:9;5618:18;5599:38;:::i;:::-;5589:48;;5684:2;5673:9;5669:18;5656:32;5646:42;;5739:2;5728:9;5724:18;5711:32;5766:18;5758:6;5755:30;5752:50;;;5798:1;5795;5788:12;5752:50;5821:49;5862:7;5853:6;5842:9;5838:22;5821:49;:::i;:::-;5811:59;;;5889:36;5920:3;5909:9;5905:19;5889:36;:::i;:::-;5879:46;;5972:3;5961:9;5957:19;5944:33;5934:43;;5308:675;;;;;;;;:::o;5988:260::-;6056:6;6064;6117:2;6105:9;6096:7;6092:23;6088:32;6085:52;;;6133:1;6130;6123:12;6085:52;6156:29;6175:9;6156:29;:::i;:::-;6146:39;;6204:38;6238:2;6227:9;6223:18;6204:38;:::i;:::-;6194:48;;5988:260;;;;;:::o;6253:600::-;6354:6;6362;6370;6378;6386;6439:3;6427:9;6418:7;6414:23;6410:33;6407:53;;;6456:1;6453;6446:12;6407:53;6479:29;6498:9;6479:29;:::i;:::-;6469:39;;6555:2;6544:9;6540:18;6527:32;6517:42;;6610:2;6599:9;6595:18;6582:32;6637:18;6629:6;6626:30;6623:50;;;6669:1;6666;6659:12;6623:50;6692:49;6733:7;6724:6;6713:9;6709:22;6692:49;:::i;:::-;6682:59;;;6760:35;6791:2;6780:9;6776:18;6760:35;:::i;:::-;6253:600;;;;-1:-1:-1;6253:600:1;;6842:3;6827:19;6814:33;;6253:600;-1:-1:-1;;6253:600:1:o;6858:380::-;6937:1;6933:12;;;;6980;;;7001:61;;7055:4;7047:6;7043:17;7033:27;;7001:61;7108:2;7100:6;7097:14;7077:18;7074:38;7071:161;;7154:10;7149:3;7145:20;7142:1;7135:31;7189:4;7186:1;7179:15;7217:4;7214:1;7207:15;7071:161;;6858:380;;;:::o;7243:356::-;7445:2;7427:21;;;7464:18;;;7457:30;7523:34;7518:2;7503:18;;7496:62;7590:2;7575:18;;7243:356::o;7604:127::-;7665:10;7660:3;7656:20;7653:1;7646:31;7696:4;7693:1;7686:15;7720:4;7717:1;7710:15;7736:422;7825:1;7868:5;7825:1;7882:270;7903:7;7893:8;7890:21;7882:270;;;7962:4;7958:1;7954:6;7950:17;7944:4;7941:27;7938:53;;;7971:18;;:::i;:::-;8021:7;8011:8;8007:22;8004:55;;;8041:16;;;;8004:55;8120:22;;;;8080:15;;;;7882:270;;;7886:3;7736:422;;;;;:::o;8163:806::-;8212:5;8242:8;8232:80;;-1:-1:-1;8283:1:1;8297:5;;8232:80;8331:4;8321:76;;-1:-1:-1;8368:1:1;8382:5;;8321:76;8413:4;8431:1;8426:59;;;;8499:1;8494:130;;;;8406:218;;8426:59;8456:1;8447:10;;8470:5;;;8494:130;8531:3;8521:8;8518:17;8515:43;;;8538:18;;:::i;:::-;-1:-1:-1;;8594:1:1;8580:16;;8609:5;;8406:218;;8708:2;8698:8;8695:16;8689:3;8683:4;8680:13;8676:36;8670:2;8660:8;8657:16;8652:2;8646:4;8643:12;8639:35;8636:77;8633:159;;;-1:-1:-1;8745:19:1;;;8777:5;;8633:159;8824:34;8849:8;8843:4;8824:34;:::i;:::-;8894:6;8890:1;8886:6;8882:19;8873:7;8870:32;8867:58;;;8905:18;;:::i;:::-;8943:20;;8163:806;-1:-1:-1;;;8163:806:1:o;8974:140::-;9032:5;9061:47;9102:4;9092:8;9088:19;9082:4;9061:47;:::i;9119:168::-;9192:9;;;9223;;9240:15;;;9234:22;;9220:37;9210:71;;9261:18;;:::i;9292:424::-;9494:2;9476:21;;;9533:2;9513:18;;;9506:30;9572:34;9567:2;9552:18;;9545:62;9643:30;9638:2;9623:18;;9616:58;9706:3;9691:19;;9292:424::o;9721:128::-;9788:9;;;9809:11;;;9806:37;;;9823:18;;:::i;9854:217::-;9894:1;9920;9910:132;;9964:10;9959:3;9955:20;9952:1;9945:31;9999:4;9996:1;9989:15;10027:4;10024:1;10017:15;9910:132;-1:-1:-1;10056:9:1;;9854:217::o;10076:125::-;10141:9;;;10162:10;;;10159:36;;;10175:18;;:::i;11461:348::-;11663:2;11645:21;;;11702:2;11682:18;;;11675:30;11741:26;11736:2;11721:18;;11714:54;11800:2;11785:18;;11461:348::o;11814:406::-;12016:2;11998:21;;;12055:2;12035:18;;;12028:30;12094:34;12089:2;12074:18;;12067:62;-1:-1:-1;;;12160:2:1;12145:18;;12138:40;12210:3;12195:19;;11814:406::o;12225:344::-;12427:2;12409:21;;;12466:2;12446:18;;;12439:30;-1:-1:-1;;;12500:2:1;12485:18;;12478:50;12560:2;12545:18;;12225:344::o;12574:400::-;12776:2;12758:21;;;12815:2;12795:18;;;12788:30;12854:34;12849:2;12834:18;;12827:62;-1:-1:-1;;;12920:2:1;12905:18;;12898:34;12964:3;12949:19;;12574:400::o;12979:346::-;13181:2;13163:21;;;13220:2;13200:18;;;13193:30;-1:-1:-1;;;13254:2:1;13239:18;;13232:52;13316:2;13301:18;;12979:346::o;13330:401::-;13532:2;13514:21;;;13571:2;13551:18;;;13544:30;13610:34;13605:2;13590:18;;13583:62;-1:-1:-1;;;13676:2:1;13661:18;;13654:35;13721:3;13706:19;;13330:401::o;13736:351::-;13938:2;13920:21;;;13977:2;13957:18;;;13950:30;14016:29;14011:2;13996:18;;13989:57;14078:2;14063:18;;13736:351::o;14092:345::-;14294:2;14276:21;;;14333:2;14313:18;;;14306:30;-1:-1:-1;;;14367:2:1;14352:18;;14345:51;14428:2;14413:18;;14092:345::o;14442:::-;14644:2;14626:21;;;14683:2;14663:18;;;14656:30;-1:-1:-1;;;14717:2:1;14702:18;;14695:51;14778:2;14763:18;;14442:345::o;15344:341::-;15546:2;15528:21;;;15585:2;15565:18;;;15558:30;-1:-1:-1;;;15619:2:1;15604:18;;15597:47;15676:2;15661:18;;15344:341::o;21777:127::-;21838:10;21833:3;21829:20;21826:1;21819:31;21869:4;21866:1;21859:15;21893:4;21890:1;21883:15
Swarm Source
ipfs://969043f205daa772bf9261b379768b2615d4a13634e810967509f52a685c0c61
[ 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.