Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
286,273.7394069444441 PLASMA
Holders
503
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
680.8079 PLASMAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Plasma
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-16 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* ERC20I (ERC20 0xInuarashi Edition) Minified and Gas Optimized From the efforts of the 0x Collective https://0xcollective.net */ contract ERC20I { // Token Params string public name; string public symbol; constructor(string memory name_, string memory symbol_) { name = name_; symbol = symbol_; } // Decimals uint8 public constant decimals = 18; // Supply uint256 public totalSupply; // Mappings of Balances mapping(address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; // Events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); // Internal Functions function _mint(address to_, uint256 amount_) internal virtual { totalSupply += amount_; balanceOf[to_] += amount_; emit Transfer(address(0x0), to_, amount_); } function _burn(address from_, uint256 amount_) internal virtual { balanceOf[from_] -= amount_; totalSupply -= amount_; emit Transfer(from_, address(0x0), amount_); } function _approve(address owner_, address spender_, uint256 amount_) internal virtual { allowance[owner_][spender_] = amount_; emit Approval(owner_, spender_, amount_); } // Public Functions function approve(address spender_, uint256 amount_) public virtual returns (bool) { _approve(msg.sender, spender_, amount_); return true; } function transfer(address to_, uint256 amount_) public virtual returns (bool) { balanceOf[msg.sender] -= amount_; balanceOf[to_] += amount_; emit Transfer(msg.sender, to_, amount_); return true; } function transferFrom(address from_, address to_, uint256 amount_) public virtual returns (bool) { if (allowance[from_][msg.sender] != type(uint256).max) { allowance[from_][msg.sender] -= amount_; } balanceOf[from_] -= amount_; balanceOf[to_] += amount_; emit Transfer(from_, to_, amount_); return true; } // 0xInuarashi Custom Functions function multiTransfer(address[] memory to_, uint256[] memory amounts_) public virtual { require(to_.length == amounts_.length, "ERC20I: To and Amounts length Mismatch!"); for (uint256 i = 0; i < to_.length; i++) { transfer(to_[i], amounts_[i]); } } function multiTransferFrom(address[] memory from_, address[] memory to_, uint256[] memory amounts_) public virtual { require(from_.length == to_.length && from_.length == amounts_.length, "ERC20I: From, To, and Amounts length Mismatch!"); for (uint256 i = 0; i < from_.length; i++) { transferFrom(from_[i], to_[i], amounts_[i]); } } } abstract contract ERC20IBurnable is ERC20I { function burn(uint256 amount_) external virtual { _burn(msg.sender, amount_); } function burnFrom(address from_, uint256 amount_) public virtual { uint256 _currentAllowance = allowance[from_][msg.sender]; require(_currentAllowance >= amount_, "ERC20IBurnable: Burn amount requested exceeds allowance!"); if (allowance[from_][msg.sender] != type(uint256).max) { allowance[from_][msg.sender] -= amount_; } _burn(from_, amount_); } } // Open0x Ownable (by 0xInuarashi) abstract contract Ownable { address public owner; event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_); constructor() { owner = msg.sender; } modifier onlyOwner { require(owner == msg.sender, "Ownable: caller is not the owner"); _; } function _transferOwnership(address newOwner_) internal virtual { address _oldOwner = owner; owner = newOwner_; emit OwnershipTransferred(_oldOwner, newOwner_); } function transferOwnership(address newOwner_) public virtual onlyOwner { require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!"); _transferOwnership(newOwner_); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0x0)); } } interface iSpaceYetis { function balanceOf(address address_) external view returns (uint256); } interface iPlasmaOld { struct Yield { uint40 lastUpdatedTime_; uint176 pendingRewards_; } function addressToYield(address address_) external view returns (Yield memory); function getTotalClaimableTokens(address address_) external view returns (uint256); function raw_getTotalClaimableTokens(address address_) external view returns (uint256); function balanceOf(address address_) external view returns (uint256); } contract Plasma is ERC20IBurnable, Ownable { constructor() ERC20I("Plasma", "PLASMA") {} // Interface with Space Yetis iSpaceYetis public SpaceYetis = iSpaceYetis(0x33a39af0F83E9D46a055e6eEbde3296D26d916F4); function setSpaceYetis(address address_) external onlyOwner { SpaceYetis = iSpaceYetis(address_); } // Interface with Plasma (Old) iPlasmaOld public PO = iPlasmaOld(0x194cc053324C919f9c0Aa0caAbC3ac7c15fF6375); function setPlasmaOld(address address_) external onlyOwner { PO = iPlasmaOld(address_); } // Times uint40 public yieldStartTime = 1640221200; // 2021-12-22_20-00 EST uint40 public yieldEndTime = 1955754000; // 2031-12-22_20-00 EST function setYieldEndTime(uint40 yieldEndTime_) external onlyOwner { yieldEndTime = yieldEndTime_; } // Yield Info uint256 public globalModulus = (10 ** 14); // 14 Digits Expansion and Compression uint40 public yieldRatePerYeti = uint40(5 ether / globalModulus); // Yield Rate Compressed struct Yield { uint40 lastUpdatedTime_; uint176 pendingRewards_; } mapping(address => Yield) public addressToYield; // Events event Claim(address to_, uint256 amount_); event CreditsDeducted(address from_, uint256 amount_); event CreditsAdded(address to_, uint256 amount_); // Controllers mapping(address => bool) public plasmaControllers; modifier onlyControllers { require(plasmaControllers[msg.sender], "You are not a controller!"); _; } function setControllers(address address_, bool bool_) external onlyOwner { plasmaControllers[address_] = bool_; } // Credit System function deductCredits(address from_, uint256 amount_) external onlyControllers { require(amount_ % globalModulus == 0, "Amount does not conform to Global Modulus standard!"); uint176 _compressedAmount = uint176(amount_ / globalModulus); require(addressToYield[from_].pendingRewards_ >= _compressedAmount, "Not enough credit balance to deduct!"); // Deduct the credits addressToYield[from_].pendingRewards_ -= _compressedAmount; emit CreditsDeducted(from_, amount_); } function addCredits(address to_, uint256 amount_) external onlyControllers { require(amount_ % globalModulus == 0, "Amount does not conform to Global Modulus standard!"); uint176 _compressedAmount = uint176(amount_ / globalModulus); // Add the credits addressToYield[to_].pendingRewards_ += _compressedAmount; emit CreditsAdded(to_, amount_); } // ERC20 Burn by Controllers function burnByController(address from_, uint256 amount_) external onlyControllers { _burn(from_, amount_); } // ERC20 Airdrop for Migration function airdropMigration(address[] calldata addresses_) external onlyOwner { for (uint256 i = 0; i < addresses_.length; i++) { // Migration Logic for Claimed Tokens require( balanceOf[addresses_[i]] == 0, "This address already has balance!"); // Check the old contract balance of the tokens uint256 _balanceOfPO = PO.balanceOf(addresses_[i]); _mint(addresses_[i], _balanceOfPO); } } function airdropMigration2(address[] calldata addresses_, uint256[] calldata amounts_) external onlyOwner { require(addresses_.length == amounts_.length, "Array length mismatch!"); for (uint256 i = 0; i < addresses_.length; i++) { _mint(addresses_[i], amounts_[i]); } } // Migrator : This is to unstuck these addresses function migrateSetNewTimestampOnAddresses(address[] calldata addresses_) external onlyOwner { for (uint256 i = 0; i < addresses_.length; i++) { addressToYield[addresses_[i]].lastUpdatedTime_ = uint40(block.timestamp); } } // Internal View Functions function __getSmallerValueUint40(uint40 a, uint40 b) internal pure returns (uint40) { return a < b ? a : b; } function __getTimestamp() internal view returns (uint40) { return __getSmallerValueUint40( uint40(block.timestamp), yieldEndTime ); } function __getYieldRate(address address_) internal view returns (uint40) { return uint40( uint40(SpaceYetis.balanceOf(address_)) * yieldRatePerYeti ); } function __calculateYieldReward(address address_) internal view returns (uint176) { // Expand the Values uint256 _totalYieldRate = uint256(__getYieldRate(address_)); if (_totalYieldRate == 0) { return 0; } uint256 _time = uint256(__getTimestamp()); uint256 _lastUpdate = uint256(addressToYield[address_].lastUpdatedTime_); if (_lastUpdate > yieldStartTime) { return uint176( (_totalYieldRate * (_time - _lastUpdate) / 1 days) ); } else { return 0; } } // Migration Logic bool public migrationEnabled = true; function setMigrationEnabled(bool bool_) external onlyOwner { migrationEnabled = bool_; } function migrateRewards() public { __migrateRewards(msg.sender); } function migrateRewardsFor(address address_) public { __migrateRewards(address_); } // Internal Write Functions function __migrateRewards(address address_) internal { require(migrationEnabled, "Migration is not enabled!"); uint40 _time = __getTimestamp(); uint40 _lastUpdate = addressToYield[address_].lastUpdatedTime_; // If _lastUpdate is not 0, the migration logic already ran! require(_lastUpdate == 0, "You have already migrated!"); // First, set the time (0) to _time. This starts yield generation. addressToYield[address_].lastUpdatedTime_ = _time; // Second, we check for any pending rewards from PO. uint176 _pendingRewards = uint176(PO.raw_getTotalClaimableTokens(address_)); // Then, we update the contract's pending rewards to PO rewards if it is > 0 if (_pendingRewards > 0) { addressToYield[address_].pendingRewards_ = _pendingRewards; } // Hooray! Credits Migration has been done. } function __updateYieldReward(address address_) internal { // We don't need to expand these as we're not doing arithmetics on them uint40 _time = __getTimestamp(); uint40 _lastUpdate = addressToYield[address_].lastUpdatedTime_; // This is not triggered in the case that the user has never minted / held a token before. if (_lastUpdate > 0) { addressToYield[address_].pendingRewards_ += __calculateYieldReward(address_); } else { /* /!\ Migration Logic Here! /!\ People are calling this function through Character Transfer passively. Due to this, we need to be able to hook it on the first transfer to migrate the required datas of the old Plasma contract. In this condition, the default _lastUpdate of the address will be 0. We call the necessary migration logic. We also run an IF statement on State Storage to reduce gas cost in the future for cross-contract checking. */ if (migrationEnabled) { __migrateRewards(address_); } } // This sets the new timestamp for pending rewards calculation. If already ended yield, skip. if (_lastUpdate != yieldEndTime) { addressToYield[address_].lastUpdatedTime_ = _time; } } function __claimYieldReward(address address_) internal { uint176 _pendingRewards = addressToYield[address_].pendingRewards_; if (_pendingRewards > 0) { addressToYield[address_].pendingRewards_ = 0; uint256 _expandedReward = uint256( uint256(_pendingRewards) * globalModulus); _mint(address_, _expandedReward); emit Claim(address_, _expandedReward); } } // Public Write Functions function updateReward(address address_) public { __updateYieldReward(address_); } function claimTokens() public { __updateYieldReward(msg.sender); __claimYieldReward(msg.sender); } function claimTokensFor(address address_) public onlyControllers { __updateYieldReward(address_); __claimYieldReward(address_); } // Public View Functions function getStorageClaimableTokens(address address_) public view returns (uint256) { return uint256( uint256(addressToYield[address_].pendingRewards_) * globalModulus); } function getPendingClaimableTokens(address address_) public view returns (uint256) { return uint256( uint256(__calculateYieldReward(address_)) * globalModulus); } function getTotalClaimableTokens(address address_) public view returns (uint256) { return uint256( ( uint256(addressToYield[address_].pendingRewards_) + uint256(__calculateYieldReward(address_)) ) * globalModulus ); } function getYieldRateOfAddress(address address_) public view returns (uint256) { return uint256( uint256(__getYieldRate(address_)) * globalModulus); } function raw_getStorageClaimableTokens(address address_) public view returns (uint256) { return uint256(addressToYield[address_].pendingRewards_); } function raw_getPendingClaimableTokens(address address_) public view returns (uint256) { return uint256(__calculateYieldReward(address_)); } function raw_getTotalClaimableTokens(address address_) public view returns (uint256) { return uint256( uint256(addressToYield[address_].pendingRewards_) + uint256(__calculateYieldReward(address_)) ); } }
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":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"CreditsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from_","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"CreditsDeducted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner_","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner_","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[],"name":"PO","outputs":[{"internalType":"contract iPlasmaOld","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SpaceYetis","outputs":[{"internalType":"contract iSpaceYetis","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"addCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToYield","outputs":[{"internalType":"uint40","name":"lastUpdatedTime_","type":"uint40"},{"internalType":"uint176","name":"pendingRewards_","type":"uint176"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses_","type":"address[]"}],"name":"airdropMigration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"airdropMigration2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","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":"","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":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnByController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"claimTokensFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"deductCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getPendingClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getStorageClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getTotalClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"getYieldRateOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalModulus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"migrateRewardsFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses_","type":"address[]"}],"name":"migrateSetNewTimestampOnAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"to_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"from_","type":"address[]"},{"internalType":"address[]","name":"to_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"plasmaControllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getPendingClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getStorageClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"raw_getTotalClaimableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setControllers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"}],"name":"setMigrationEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setPlasmaOld","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setSpaceYetis","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint40","name":"yieldEndTime_","type":"uint40"}],"name":"setYieldEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"address","name":"address_","type":"address"}],"name":"updateReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yieldEndTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldRatePerYeti","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yieldStartTime","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600680546001600160a01b0319167333a39af0f83e9d46a055e6eebde3296d26d916f4179055600780547c749270100061c3ca10194cc053324c919f9c0aa0caabc3ac7c15ff63756001600160f01b0319909116179055655af3107a400060088190556200007b90674563918244f40000620001df565b6009805464ffffffffff191664ffffffffff92909216919091179055600c805460ff19166001179055348015620000b157600080fd5b5060405180604001604052806006815260200165506c61736d6160d01b81525060405180604001604052806006815260200165504c41534d4160d01b81525081600090805190602001906200010892919062000139565b5080516200011e90600190602084019062000139565b5050600580546001600160a01b03191633179055506200023f565b828054620001479062000202565b90600052602060002090601f0160209004810192826200016b5760008555620001b6565b82601f106200018657805160ff1916838001178555620001b6565b82800160010185558215620001b6579182015b82811115620001b657825182559160200191906001019062000199565b50620001c4929150620001c8565b5090565b5b80821115620001c45760008155600101620001c9565b600082620001fd57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806200021757607f821691505b602082108114156200023957634e487b7160e01b600052602260045260246000fd5b50919050565b612458806200024f6000396000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c8063820aed1911610167578063c071bd3d116100ce578063e520a6e811610087578063e520a6e814610691578063e701fa4f146106a4578063eb0d22be146106b7578063ee0b04be146106c0578063ef3baf6b146106d3578063f2fde38b146106e657600080fd5b8063c071bd3d146105be578063c4fedb141461061c578063c7e6cc3f1461062d578063d363440c14610640578063d5d2f3c214610653578063dd62ed3e1461066657600080fd5b806395d89b411161012057806395d89b41146105575780639b3901351461055f578063a3f0a43a14610572578063a9059cbb14610585578063ba52158014610598578063bfe5c983146105ab57600080fd5b8063820aed19146104e557806382596f01146104f8578063871ff4051461050b578063877e139b1461051e5780638da5cb5b1461053157806394a3b4b91461054457600080fd5b80634dfc50c01161020b57806370a08231116101c457806370a082311461046c578063715018a61461048c578063752fd6101461049457806379cc6790146104a75780637bde17a3146104ba5780637c073ede146104cd57600080fd5b80634dfc50c0146103f5578063518e9e6f14610418578063521c27f21461042b578063632447c91461043e578063649d35fd14610451578063669459931461046457600080fd5b806323b872dd1161025d57806323b872dd14610372578063313ce56714610385578063314ca0391461039f57806335b944bf146103cd57806342966c68146103da57806348c54b9d146103ed57600080fd5b806302b343b1146102a557806306fdde03146102f1578063095ea7b3146103065780630d5fb5a61461032957806318160ddd146103545780631e89d5451461035d575b600080fd5b6102de6102b3366004611e09565b6001600160a01b03166000908152600a6020526040902054600160281b90046001600160b01b031690565b6040519081526020015b60405180910390f35b6102f96106f9565b6040516102e891906120f5565b610319610314366004611ebd565b610787565b60405190151581526020016102e8565b60075461033c906001600160a01b031681565b6040516001600160a01b0390911681526020016102e8565b6102de60025481565b61037061036b36600461201d565b61079d565b005b610319610380366004611e57565b610863565b61038d601281565b60405160ff90911681526020016102e8565b6007546103b790600160c81b900464ffffffffff1681565b60405164ffffffffff90911681526020016102e8565b600c546103199060ff1681565b6103706103e836600461209c565b610969565b610370610976565b610319610403366004611e09565b600b6020526000908152604090205460ff1681565b610370610426366004611ee7565b61098a565b610370610439366004612081565b610b52565b61037061044c366004611e09565b610b8f565b6102de61045f366004611e09565b610b98565b610370610bd5565b6102de61047a366004611e09565b60036020526000908152604090205481565b610370610bde565b6102de6104a2366004611e09565b610c12565b6103706104b5366004611ebd565b610c33565b6103706104c8366004611f95565b610d3c565b6007546103b790600160a01b900464ffffffffff1681565b60065461033c906001600160a01b031681565b610370610506366004611ebd565b610e2c565b610370610519366004611ebd565b610fd0565b61037061052c366004611e09565b6110df565b60055461033c906001600160a01b031681565b610370610552366004611e93565b61112b565b6102f9611180565b61037061056d3660046120ce565b61118d565b6102de610580366004611e09565b6111df565b610319610593366004611ebd565b61122d565b6102de6105a6366004611e09565b6112b7565b6103706105b9366004611f29565b6112f8565b6105f76105cc366004611e09565b600a6020526000908152604090205464ffffffffff811690600160281b90046001600160b01b031682565b6040805164ffffffffff90931683526001600160b01b039091166020830152016102e8565b6009546103b79064ffffffffff1681565b6102de61063b366004611e09565b6113d6565b61037061064e366004611e09565b6113f5565b610370610661366004611e09565b6113fe565b6102de610674366004611e24565b600460209081526000928352604080842090915290825290205481565b61037061069f366004611ee7565b61144a565b6103706106b2366004611ebd565b6114f0565b6102de60085481565b6103706106ce366004611e09565b61152d565b6102de6106e1366004611e09565b61156e565b6103706106f4366004611e09565b611588565b6000805461070690612340565b80601f016020809104026020016040519081016040528092919081815260200182805461073290612340565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b505050505081565b6000610794338484611621565b50600192915050565b80518251146108035760405162461bcd60e51b815260206004820152602760248201527f4552433230493a20546f20616e6420416d6f756e7473206c656e677468204d69604482015266736d617463682160c81b60648201526084015b60405180910390fd5b60005b825181101561085e5761084b838281518110610824576108246123d6565b602002602001015183838151811061083e5761083e6123d6565b602002602001015161122d565b50806108568161237b565b915050610806565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146108c8576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906108c2908490612329565b90915550505b6001600160a01b038416600090815260036020526040812080548492906108f0908490612329565b90915550506001600160a01b0383166000908152600360205260408120805484929061091d908490612289565b92505081905550826001600160a01b0316846001600160a01b03166000805160206124038339815191528460405161095791815260200190565b60405180910390a35060019392505050565b6109733382611682565b50565b61097f336116fc565b610988336117fb565b565b6005546001600160a01b031633146109b45760405162461bcd60e51b81526004016107fa9061219d565b60005b8181101561085e57600360008484848181106109d5576109d56123d6565b90506020020160208101906109ea9190611e09565b6001600160a01b0316815260208101919091526040016000205415610a5b5760405162461bcd60e51b815260206004820152602160248201527f54686973206164647265737320616c7265616479206861732062616c616e63656044820152602160f81b60648201526084016107fa565b6007546000906001600160a01b03166370a08231858585818110610a8157610a816123d6565b9050602002016020810190610a969190611e09565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d91906120b5565b9050610b3f848484818110610b2457610b246123d6565b9050602002016020810190610b399190611e09565b826118b6565b5080610b4a8161237b565b9150506109b7565b6005546001600160a01b03163314610b7c5760405162461bcd60e51b81526004016107fa9061219d565b600c805460ff1916911515919091179055565b610973816116fc565b6008546001600160a01b0382166000908152600a60205260408120549091610bcf91600160281b90046001600160b01b03166122b5565b92915050565b61098833611926565b6005546001600160a01b03163314610c085760405162461bcd60e51b81526004016107fa9061219d565b6109886000611aeb565b6000600854610c2083611b3d565b6001600160b01b0316610bcf91906122b5565b6001600160a01b038216600090815260046020908152604080832033845290915290205481811015610ccd5760405162461bcd60e51b815260206004820152603860248201527f4552433230494275726e61626c653a204275726e20616d6f756e74207265717560448201527f6573746564206578636565647320616c6c6f77616e636521000000000000000060648201526084016107fa565b6001600160a01b038316600090815260046020908152604080832033845290915290205460001914610d32576001600160a01b038316600090815260046020908152604080832033845290915281208054849290610d2c908490612329565b90915550505b61085e8383611682565b81518351148015610d4e575080518351145b610db15760405162461bcd60e51b815260206004820152602e60248201527f4552433230493a2046726f6d2c20546f2c20616e6420416d6f756e7473206c6560448201526d6e677468204d69736d617463682160901b60648201526084016107fa565b60005b8351811015610e2657610e13848281518110610dd257610dd26123d6565b6020026020010151848381518110610dec57610dec6123d6565b6020026020010151848481518110610e0657610e066123d6565b6020026020010151610863565b5080610e1e8161237b565b915050610db4565b50505050565b336000908152600b602052604090205460ff16610e5b5760405162461bcd60e51b81526004016107fa906121d2565b600854610e689082612396565b15610e855760405162461bcd60e51b81526004016107fa9061214a565b600060085482610e9591906122a1565b6001600160a01b0384166000908152600a60205260409020549091506001600160b01b03808316600160281b909204161015610f1f5760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f756768206372656469742062616c616e636520746f206465646044820152637563742160e01b60648201526084016107fa565b6001600160a01b0383166000908152600a602052604090208054829190600590610f5a908490600160281b90046001600160b01b0316612301565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507f1d9ca186c626e0ca14771900912a91678cb02770905264643d1f0d1cd2fded5e8383604051610fc39291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b336000908152600b602052604090205460ff16610fff5760405162461bcd60e51b81526004016107fa906121d2565b60085461100c9082612396565b156110295760405162461bcd60e51b81526004016107fa9061214a565b60006008548261103991906122a1565b6001600160a01b0384166000908152600a6020526040902080549192508291600590611076908490600160281b90046001600160b01b031661225e565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507fed46984c46e11f42ec323727ba7d99dc16be2d248a8aaa8982d492688497f09d8383604051610fc39291906001600160a01b03929092168252602082015260400190565b6005546001600160a01b031633146111095760405162461bcd60e51b81526004016107fa9061219d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111555760405162461bcd60e51b81526004016107fa9061219d565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001805461070690612340565b6005546001600160a01b031633146111b75760405162461bcd60e51b81526004016107fa9061219d565b6007805464ffffffffff909216600160c81b0264ffffffffff60c81b19909216919091179055565b60006008546111ed83611b3d565b6001600160a01b0384166000908152600a6020526040902054611223916001600160b01b0390811691600160281b900416612289565b610bcf91906122b5565b3360009081526003602052604081208054839190839061124e908490612329565b90915550506001600160a01b0383166000908152600360205260408120805484929061127b908490612289565b90915550506040518281526001600160a01b0384169033906000805160206124038339815191529060200160405180910390a350600192915050565b60006112c282611b3d565b6001600160a01b0383166000908152600a6020526040902054610bcf916001600160b01b0390811691600160281b900416612289565b6005546001600160a01b031633146113225760405162461bcd60e51b81526004016107fa9061219d565b82811461136a5760405162461bcd60e51b81526020600482015260166024820152754172726179206c656e677468206d69736d617463682160501b60448201526064016107fa565b60005b838110156113cf576113bd85858381811061138a5761138a6123d6565b905060200201602081019061139f9190611e09565b8484848181106113b1576113b16123d6565b905060200201356118b6565b806113c78161237b565b91505061136d565b5050505050565b60006008546113e483611bdb565b64ffffffffff16610bcf91906122b5565b61097381611926565b6005546001600160a01b031633146114285760405162461bcd60e51b81526004016107fa9061219d565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114745760405162461bcd60e51b81526004016107fa9061219d565b60005b8181101561085e5742600a6000858585818110611496576114966123d6565b90506020020160208101906114ab9190611e09565b6001600160a01b031681526020810191909152604001600020805464ffffffffff191664ffffffffff92909216919091179055806114e88161237b565b915050611477565b336000908152600b602052604090205460ff1661151f5760405162461bcd60e51b81526004016107fa906121d2565b6115298282611682565b5050565b336000908152600b602052604090205460ff1661155c5760405162461bcd60e51b81526004016107fa906121d2565b611565816116fc565b610973816117fb565b600061157982611b3d565b6001600160b01b031692915050565b6005546001600160a01b031633146115b25760405162461bcd60e51b81526004016107fa9061219d565b6001600160a01b0381166116185760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b60648201526084016107fa565b61097381611aeb565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216600090815260036020526040812080548392906116aa908490612329565b9250508190555080600260008282546116c39190612329565b90915550506040518181526000906001600160a01b03841690600080516020612403833981519152906020015b60405180910390a35050565b6000611706611c6e565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff1680156117995761173883611b3d565b6001600160a01b0384166000908152600a602052604090208054600590611770908490600160281b90046001600160b01b031661225e565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055506117ad565b600c5460ff16156117ad576117ad83611926565b60075464ffffffffff828116600160c81b909204161461085e576001600160a01b0383166000908152600a60205260409020805464ffffffffff841664ffffffffff19909116179055505050565b6001600160a01b0381166000908152600a6020526040902054600160281b90046001600160b01b03168015611529576001600160a01b0382166000908152600a60205260408120805465010000000000600160d81b031916905560085461186b906001600160b01b0384166122b5565b905061187783826118b6565b604080516001600160a01b0385168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49101610fc3565b80600260008282546118c89190612289565b90915550506001600160a01b038216600090815260036020526040812080548392906118f5908490612289565b90915550506040518181526001600160a01b03831690600090600080516020612403833981519152906020016116f0565b600c5460ff166119785760405162461bcd60e51b815260206004820152601960248201527f4d6967726174696f6e206973206e6f7420656e61626c6564210000000000000060448201526064016107fa565b6000611982611c6e565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff1680156119f35760405162461bcd60e51b815260206004820152601a60248201527f596f75206861766520616c7265616479206d696772617465642100000000000060448201526064016107fa565b6001600160a01b038381166000818152600a6020526040808220805464ffffffffff191664ffffffffff88161790556007549051630174a42b60e71b815260048101939093529092169063ba5215809060240160206040518083038186803b158015611a5e57600080fd5b505afa158015611a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9691906120b5565b90506001600160b01b03811615610e26576001600160a01b0384166000908152600a6020526040902080546001600160b01b038316600160281b0265010000000000600160d81b031990911617905550505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080611b4983611bdb565b64ffffffffff16905080611b605750600092915050565b6000611b6a611c6e565b6001600160a01b0385166000908152600a602052604090205460075464ffffffffff928316935090821691600160a01b90910416811115611bd05762015180611bb38284612329565b611bbd90856122b5565b611bc791906122a1565b95945050505050565b506000949350505050565b6009546006546040516370a0823160e01b81526001600160a01b03848116600483015260009364ffffffffff169216906370a082319060240160206040518083038186803b158015611c2c57600080fd5b505afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906120b5565b610bcf91906122d4565b6000611c8d42600760199054906101000a900464ffffffffff16611c92565b905090565b60008164ffffffffff168364ffffffffff1610611caf5781611cb1565b825b9392505050565b80356001600160a01b0381168114611ccf57600080fd5b919050565b60008083601f840112611ce657600080fd5b50813567ffffffffffffffff811115611cfe57600080fd5b6020830191508360208260051b8501011115611d1957600080fd5b9250929050565b600082601f830112611d3157600080fd5b81356020611d46611d418361223a565b612209565b80838252828201915082860187848660051b8901011115611d6657600080fd5b60005b85811015611d8c57611d7a82611cb8565b84529284019290840190600101611d69565b5090979650505050505050565b600082601f830112611daa57600080fd5b81356020611dba611d418361223a565b80838252828201915082860187848660051b8901011115611dda57600080fd5b60005b85811015611d8c57813584529284019290840190600101611ddd565b80358015158114611ccf57600080fd5b600060208284031215611e1b57600080fd5b611cb182611cb8565b60008060408385031215611e3757600080fd5b611e4083611cb8565b9150611e4e60208401611cb8565b90509250929050565b600080600060608486031215611e6c57600080fd5b611e7584611cb8565b9250611e8360208501611cb8565b9150604084013590509250925092565b60008060408385031215611ea657600080fd5b611eaf83611cb8565b9150611e4e60208401611df9565b60008060408385031215611ed057600080fd5b611ed983611cb8565b946020939093013593505050565b60008060208385031215611efa57600080fd5b823567ffffffffffffffff811115611f1157600080fd5b611f1d85828601611cd4565b90969095509350505050565b60008060008060408587031215611f3f57600080fd5b843567ffffffffffffffff80821115611f5757600080fd5b611f6388838901611cd4565b90965094506020870135915080821115611f7c57600080fd5b50611f8987828801611cd4565b95989497509550505050565b600080600060608486031215611faa57600080fd5b833567ffffffffffffffff80821115611fc257600080fd5b611fce87838801611d20565b94506020860135915080821115611fe457600080fd5b611ff087838801611d20565b9350604086013591508082111561200657600080fd5b5061201386828701611d99565b9150509250925092565b6000806040838503121561203057600080fd5b823567ffffffffffffffff8082111561204857600080fd5b61205486838701611d20565b9350602085013591508082111561206a57600080fd5b5061207785828601611d99565b9150509250929050565b60006020828403121561209357600080fd5b611cb182611df9565b6000602082840312156120ae57600080fd5b5035919050565b6000602082840312156120c757600080fd5b5051919050565b6000602082840312156120e057600080fd5b813564ffffffffff81168114611cb157600080fd5b600060208083528351808285015260005b8181101561212257858101830151858201604001528201612106565b81811115612134576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526033908201527f416d6f756e7420646f6573206e6f7420636f6e666f726d20746f20476c6f62616040820152726c204d6f64756c7573207374616e646172642160681b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526019908201527f596f7520617265206e6f74206120636f6e74726f6c6c65722100000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612232576122326123ec565b604052919050565b600067ffffffffffffffff821115612254576122546123ec565b5060051b60200190565b60006001600160b01b03828116848216808303821115612280576122806123aa565b01949350505050565b6000821982111561229c5761229c6123aa565b500190565b6000826122b0576122b06123c0565b500490565b60008160001904831182151516156122cf576122cf6123aa565b500290565b600064ffffffffff808316818516818304811182151516156122f8576122f86123aa565b02949350505050565b60006001600160b01b0383811690831681811015612321576123216123aa565b039392505050565b60008282101561233b5761233b6123aa565b500390565b600181811c9082168061235457607f821691505b6020821081141561237557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561238f5761238f6123aa565b5060010190565b6000826123a5576123a56123c0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209975d0aecd1056c723e33eaea59adc4081142b59d2a7c01bd0df039e9176a68b64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102a05760003560e01c8063820aed1911610167578063c071bd3d116100ce578063e520a6e811610087578063e520a6e814610691578063e701fa4f146106a4578063eb0d22be146106b7578063ee0b04be146106c0578063ef3baf6b146106d3578063f2fde38b146106e657600080fd5b8063c071bd3d146105be578063c4fedb141461061c578063c7e6cc3f1461062d578063d363440c14610640578063d5d2f3c214610653578063dd62ed3e1461066657600080fd5b806395d89b411161012057806395d89b41146105575780639b3901351461055f578063a3f0a43a14610572578063a9059cbb14610585578063ba52158014610598578063bfe5c983146105ab57600080fd5b8063820aed19146104e557806382596f01146104f8578063871ff4051461050b578063877e139b1461051e5780638da5cb5b1461053157806394a3b4b91461054457600080fd5b80634dfc50c01161020b57806370a08231116101c457806370a082311461046c578063715018a61461048c578063752fd6101461049457806379cc6790146104a75780637bde17a3146104ba5780637c073ede146104cd57600080fd5b80634dfc50c0146103f5578063518e9e6f14610418578063521c27f21461042b578063632447c91461043e578063649d35fd14610451578063669459931461046457600080fd5b806323b872dd1161025d57806323b872dd14610372578063313ce56714610385578063314ca0391461039f57806335b944bf146103cd57806342966c68146103da57806348c54b9d146103ed57600080fd5b806302b343b1146102a557806306fdde03146102f1578063095ea7b3146103065780630d5fb5a61461032957806318160ddd146103545780631e89d5451461035d575b600080fd5b6102de6102b3366004611e09565b6001600160a01b03166000908152600a6020526040902054600160281b90046001600160b01b031690565b6040519081526020015b60405180910390f35b6102f96106f9565b6040516102e891906120f5565b610319610314366004611ebd565b610787565b60405190151581526020016102e8565b60075461033c906001600160a01b031681565b6040516001600160a01b0390911681526020016102e8565b6102de60025481565b61037061036b36600461201d565b61079d565b005b610319610380366004611e57565b610863565b61038d601281565b60405160ff90911681526020016102e8565b6007546103b790600160c81b900464ffffffffff1681565b60405164ffffffffff90911681526020016102e8565b600c546103199060ff1681565b6103706103e836600461209c565b610969565b610370610976565b610319610403366004611e09565b600b6020526000908152604090205460ff1681565b610370610426366004611ee7565b61098a565b610370610439366004612081565b610b52565b61037061044c366004611e09565b610b8f565b6102de61045f366004611e09565b610b98565b610370610bd5565b6102de61047a366004611e09565b60036020526000908152604090205481565b610370610bde565b6102de6104a2366004611e09565b610c12565b6103706104b5366004611ebd565b610c33565b6103706104c8366004611f95565b610d3c565b6007546103b790600160a01b900464ffffffffff1681565b60065461033c906001600160a01b031681565b610370610506366004611ebd565b610e2c565b610370610519366004611ebd565b610fd0565b61037061052c366004611e09565b6110df565b60055461033c906001600160a01b031681565b610370610552366004611e93565b61112b565b6102f9611180565b61037061056d3660046120ce565b61118d565b6102de610580366004611e09565b6111df565b610319610593366004611ebd565b61122d565b6102de6105a6366004611e09565b6112b7565b6103706105b9366004611f29565b6112f8565b6105f76105cc366004611e09565b600a6020526000908152604090205464ffffffffff811690600160281b90046001600160b01b031682565b6040805164ffffffffff90931683526001600160b01b039091166020830152016102e8565b6009546103b79064ffffffffff1681565b6102de61063b366004611e09565b6113d6565b61037061064e366004611e09565b6113f5565b610370610661366004611e09565b6113fe565b6102de610674366004611e24565b600460209081526000928352604080842090915290825290205481565b61037061069f366004611ee7565b61144a565b6103706106b2366004611ebd565b6114f0565b6102de60085481565b6103706106ce366004611e09565b61152d565b6102de6106e1366004611e09565b61156e565b6103706106f4366004611e09565b611588565b6000805461070690612340565b80601f016020809104026020016040519081016040528092919081815260200182805461073290612340565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b505050505081565b6000610794338484611621565b50600192915050565b80518251146108035760405162461bcd60e51b815260206004820152602760248201527f4552433230493a20546f20616e6420416d6f756e7473206c656e677468204d69604482015266736d617463682160c81b60648201526084015b60405180910390fd5b60005b825181101561085e5761084b838281518110610824576108246123d6565b602002602001015183838151811061083e5761083e6123d6565b602002602001015161122d565b50806108568161237b565b915050610806565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146108c8576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906108c2908490612329565b90915550505b6001600160a01b038416600090815260036020526040812080548492906108f0908490612329565b90915550506001600160a01b0383166000908152600360205260408120805484929061091d908490612289565b92505081905550826001600160a01b0316846001600160a01b03166000805160206124038339815191528460405161095791815260200190565b60405180910390a35060019392505050565b6109733382611682565b50565b61097f336116fc565b610988336117fb565b565b6005546001600160a01b031633146109b45760405162461bcd60e51b81526004016107fa9061219d565b60005b8181101561085e57600360008484848181106109d5576109d56123d6565b90506020020160208101906109ea9190611e09565b6001600160a01b0316815260208101919091526040016000205415610a5b5760405162461bcd60e51b815260206004820152602160248201527f54686973206164647265737320616c7265616479206861732062616c616e63656044820152602160f81b60648201526084016107fa565b6007546000906001600160a01b03166370a08231858585818110610a8157610a816123d6565b9050602002016020810190610a969190611e09565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0d91906120b5565b9050610b3f848484818110610b2457610b246123d6565b9050602002016020810190610b399190611e09565b826118b6565b5080610b4a8161237b565b9150506109b7565b6005546001600160a01b03163314610b7c5760405162461bcd60e51b81526004016107fa9061219d565b600c805460ff1916911515919091179055565b610973816116fc565b6008546001600160a01b0382166000908152600a60205260408120549091610bcf91600160281b90046001600160b01b03166122b5565b92915050565b61098833611926565b6005546001600160a01b03163314610c085760405162461bcd60e51b81526004016107fa9061219d565b6109886000611aeb565b6000600854610c2083611b3d565b6001600160b01b0316610bcf91906122b5565b6001600160a01b038216600090815260046020908152604080832033845290915290205481811015610ccd5760405162461bcd60e51b815260206004820152603860248201527f4552433230494275726e61626c653a204275726e20616d6f756e74207265717560448201527f6573746564206578636565647320616c6c6f77616e636521000000000000000060648201526084016107fa565b6001600160a01b038316600090815260046020908152604080832033845290915290205460001914610d32576001600160a01b038316600090815260046020908152604080832033845290915281208054849290610d2c908490612329565b90915550505b61085e8383611682565b81518351148015610d4e575080518351145b610db15760405162461bcd60e51b815260206004820152602e60248201527f4552433230493a2046726f6d2c20546f2c20616e6420416d6f756e7473206c6560448201526d6e677468204d69736d617463682160901b60648201526084016107fa565b60005b8351811015610e2657610e13848281518110610dd257610dd26123d6565b6020026020010151848381518110610dec57610dec6123d6565b6020026020010151848481518110610e0657610e066123d6565b6020026020010151610863565b5080610e1e8161237b565b915050610db4565b50505050565b336000908152600b602052604090205460ff16610e5b5760405162461bcd60e51b81526004016107fa906121d2565b600854610e689082612396565b15610e855760405162461bcd60e51b81526004016107fa9061214a565b600060085482610e9591906122a1565b6001600160a01b0384166000908152600a60205260409020549091506001600160b01b03808316600160281b909204161015610f1f5760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f756768206372656469742062616c616e636520746f206465646044820152637563742160e01b60648201526084016107fa565b6001600160a01b0383166000908152600a602052604090208054829190600590610f5a908490600160281b90046001600160b01b0316612301565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507f1d9ca186c626e0ca14771900912a91678cb02770905264643d1f0d1cd2fded5e8383604051610fc39291906001600160a01b03929092168252602082015260400190565b60405180910390a1505050565b336000908152600b602052604090205460ff16610fff5760405162461bcd60e51b81526004016107fa906121d2565b60085461100c9082612396565b156110295760405162461bcd60e51b81526004016107fa9061214a565b60006008548261103991906122a1565b6001600160a01b0384166000908152600a6020526040902080549192508291600590611076908490600160281b90046001600160b01b031661225e565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055507fed46984c46e11f42ec323727ba7d99dc16be2d248a8aaa8982d492688497f09d8383604051610fc39291906001600160a01b03929092168252602082015260400190565b6005546001600160a01b031633146111095760405162461bcd60e51b81526004016107fa9061219d565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111555760405162461bcd60e51b81526004016107fa9061219d565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001805461070690612340565b6005546001600160a01b031633146111b75760405162461bcd60e51b81526004016107fa9061219d565b6007805464ffffffffff909216600160c81b0264ffffffffff60c81b19909216919091179055565b60006008546111ed83611b3d565b6001600160a01b0384166000908152600a6020526040902054611223916001600160b01b0390811691600160281b900416612289565b610bcf91906122b5565b3360009081526003602052604081208054839190839061124e908490612329565b90915550506001600160a01b0383166000908152600360205260408120805484929061127b908490612289565b90915550506040518281526001600160a01b0384169033906000805160206124038339815191529060200160405180910390a350600192915050565b60006112c282611b3d565b6001600160a01b0383166000908152600a6020526040902054610bcf916001600160b01b0390811691600160281b900416612289565b6005546001600160a01b031633146113225760405162461bcd60e51b81526004016107fa9061219d565b82811461136a5760405162461bcd60e51b81526020600482015260166024820152754172726179206c656e677468206d69736d617463682160501b60448201526064016107fa565b60005b838110156113cf576113bd85858381811061138a5761138a6123d6565b905060200201602081019061139f9190611e09565b8484848181106113b1576113b16123d6565b905060200201356118b6565b806113c78161237b565b91505061136d565b5050505050565b60006008546113e483611bdb565b64ffffffffff16610bcf91906122b5565b61097381611926565b6005546001600160a01b031633146114285760405162461bcd60e51b81526004016107fa9061219d565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114745760405162461bcd60e51b81526004016107fa9061219d565b60005b8181101561085e5742600a6000858585818110611496576114966123d6565b90506020020160208101906114ab9190611e09565b6001600160a01b031681526020810191909152604001600020805464ffffffffff191664ffffffffff92909216919091179055806114e88161237b565b915050611477565b336000908152600b602052604090205460ff1661151f5760405162461bcd60e51b81526004016107fa906121d2565b6115298282611682565b5050565b336000908152600b602052604090205460ff1661155c5760405162461bcd60e51b81526004016107fa906121d2565b611565816116fc565b610973816117fb565b600061157982611b3d565b6001600160b01b031692915050565b6005546001600160a01b031633146115b25760405162461bcd60e51b81526004016107fa9061219d565b6001600160a01b0381166116185760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b60648201526084016107fa565b61097381611aeb565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216600090815260036020526040812080548392906116aa908490612329565b9250508190555080600260008282546116c39190612329565b90915550506040518181526000906001600160a01b03841690600080516020612403833981519152906020015b60405180910390a35050565b6000611706611c6e565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff1680156117995761173883611b3d565b6001600160a01b0384166000908152600a602052604090208054600590611770908490600160281b90046001600160b01b031661225e565b92506101000a8154816001600160b01b0302191690836001600160b01b031602179055506117ad565b600c5460ff16156117ad576117ad83611926565b60075464ffffffffff828116600160c81b909204161461085e576001600160a01b0383166000908152600a60205260409020805464ffffffffff841664ffffffffff19909116179055505050565b6001600160a01b0381166000908152600a6020526040902054600160281b90046001600160b01b03168015611529576001600160a01b0382166000908152600a60205260408120805465010000000000600160d81b031916905560085461186b906001600160b01b0384166122b5565b905061187783826118b6565b604080516001600160a01b0385168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d49101610fc3565b80600260008282546118c89190612289565b90915550506001600160a01b038216600090815260036020526040812080548392906118f5908490612289565b90915550506040518181526001600160a01b03831690600090600080516020612403833981519152906020016116f0565b600c5460ff166119785760405162461bcd60e51b815260206004820152601960248201527f4d6967726174696f6e206973206e6f7420656e61626c6564210000000000000060448201526064016107fa565b6000611982611c6e565b6001600160a01b0383166000908152600a602052604090205490915064ffffffffff1680156119f35760405162461bcd60e51b815260206004820152601a60248201527f596f75206861766520616c7265616479206d696772617465642100000000000060448201526064016107fa565b6001600160a01b038381166000818152600a6020526040808220805464ffffffffff191664ffffffffff88161790556007549051630174a42b60e71b815260048101939093529092169063ba5215809060240160206040518083038186803b158015611a5e57600080fd5b505afa158015611a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9691906120b5565b90506001600160b01b03811615610e26576001600160a01b0384166000908152600a6020526040902080546001600160b01b038316600160281b0265010000000000600160d81b031990911617905550505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080611b4983611bdb565b64ffffffffff16905080611b605750600092915050565b6000611b6a611c6e565b6001600160a01b0385166000908152600a602052604090205460075464ffffffffff928316935090821691600160a01b90910416811115611bd05762015180611bb38284612329565b611bbd90856122b5565b611bc791906122a1565b95945050505050565b506000949350505050565b6009546006546040516370a0823160e01b81526001600160a01b03848116600483015260009364ffffffffff169216906370a082319060240160206040518083038186803b158015611c2c57600080fd5b505afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906120b5565b610bcf91906122d4565b6000611c8d42600760199054906101000a900464ffffffffff16611c92565b905090565b60008164ffffffffff168364ffffffffff1610611caf5781611cb1565b825b9392505050565b80356001600160a01b0381168114611ccf57600080fd5b919050565b60008083601f840112611ce657600080fd5b50813567ffffffffffffffff811115611cfe57600080fd5b6020830191508360208260051b8501011115611d1957600080fd5b9250929050565b600082601f830112611d3157600080fd5b81356020611d46611d418361223a565b612209565b80838252828201915082860187848660051b8901011115611d6657600080fd5b60005b85811015611d8c57611d7a82611cb8565b84529284019290840190600101611d69565b5090979650505050505050565b600082601f830112611daa57600080fd5b81356020611dba611d418361223a565b80838252828201915082860187848660051b8901011115611dda57600080fd5b60005b85811015611d8c57813584529284019290840190600101611ddd565b80358015158114611ccf57600080fd5b600060208284031215611e1b57600080fd5b611cb182611cb8565b60008060408385031215611e3757600080fd5b611e4083611cb8565b9150611e4e60208401611cb8565b90509250929050565b600080600060608486031215611e6c57600080fd5b611e7584611cb8565b9250611e8360208501611cb8565b9150604084013590509250925092565b60008060408385031215611ea657600080fd5b611eaf83611cb8565b9150611e4e60208401611df9565b60008060408385031215611ed057600080fd5b611ed983611cb8565b946020939093013593505050565b60008060208385031215611efa57600080fd5b823567ffffffffffffffff811115611f1157600080fd5b611f1d85828601611cd4565b90969095509350505050565b60008060008060408587031215611f3f57600080fd5b843567ffffffffffffffff80821115611f5757600080fd5b611f6388838901611cd4565b90965094506020870135915080821115611f7c57600080fd5b50611f8987828801611cd4565b95989497509550505050565b600080600060608486031215611faa57600080fd5b833567ffffffffffffffff80821115611fc257600080fd5b611fce87838801611d20565b94506020860135915080821115611fe457600080fd5b611ff087838801611d20565b9350604086013591508082111561200657600080fd5b5061201386828701611d99565b9150509250925092565b6000806040838503121561203057600080fd5b823567ffffffffffffffff8082111561204857600080fd5b61205486838701611d20565b9350602085013591508082111561206a57600080fd5b5061207785828601611d99565b9150509250929050565b60006020828403121561209357600080fd5b611cb182611df9565b6000602082840312156120ae57600080fd5b5035919050565b6000602082840312156120c757600080fd5b5051919050565b6000602082840312156120e057600080fd5b813564ffffffffff81168114611cb157600080fd5b600060208083528351808285015260005b8181101561212257858101830151858201604001528201612106565b81811115612134576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526033908201527f416d6f756e7420646f6573206e6f7420636f6e666f726d20746f20476c6f62616040820152726c204d6f64756c7573207374616e646172642160681b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526019908201527f596f7520617265206e6f74206120636f6e74726f6c6c65722100000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612232576122326123ec565b604052919050565b600067ffffffffffffffff821115612254576122546123ec565b5060051b60200190565b60006001600160b01b03828116848216808303821115612280576122806123aa565b01949350505050565b6000821982111561229c5761229c6123aa565b500190565b6000826122b0576122b06123c0565b500490565b60008160001904831182151516156122cf576122cf6123aa565b500290565b600064ffffffffff808316818516818304811182151516156122f8576122f86123aa565b02949350505050565b60006001600160b01b0383811690831681811015612321576123216123aa565b039392505050565b60008282101561233b5761233b6123aa565b500390565b600181811c9082168061235457607f821691505b6020821081141561237557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561238f5761238f6123aa565b5060010190565b6000826123a5576123a56123c0565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209975d0aecd1056c723e33eaea59adc4081142b59d2a7c01bd0df039e9176a68b64736f6c63430008070033
Deployed Bytecode Sourcemap
5057:10184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14695:162;;;;;;:::i;:::-;-1:-1:-1;;;;;14808:24:0;14773:7;14808:24;;;:14;:24;;;;;:40;-1:-1:-1;;;14808:40:0;;-1:-1:-1;;;;;14808:40:0;;14695:162;;;;13424:25:1;;;13412:2;13397:18;14695:162:0;;;;;;;;259:18;;;:::i;:::-;;;;;;;:::i;1533:162::-;;;;;;:::i;:::-;;:::i;:::-;;;7538:14:1;;7531:22;7513:41;;7501:2;7486:18;1533:162:0;7373:187:1;5443:77:0;;;;;-1:-1:-1;;;;;5443:77:0;;;;;;-1:-1:-1;;;;;7050:32:1;;;7032:51;;7020:2;7005:18;5443:77:0;6886:203:1;509:26:0;;;;;;2357:294;;;;;;:::i;:::-;;:::i;:::-;;1944:368;;;;;;:::i;:::-;;:::i;450:35::-;;483:2;450:35;;;;;14127:4:1;14115:17;;;14097:36;;14085:2;14070:18;450:35:0;13955:184:1;5719:39:0;;;;;-1:-1:-1;;;5719:39:0;;;;;;;;;13634:12:1;13622:25;;;13604:44;;13592:2;13577:18;5719:39:0;13460:194:1;10191:35:0;;;;;;;;;3091:93;;;;;;:::i;:::-;;:::i;13598:121::-;;;:::i;6462:49::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7983:492;;;;;;:::i;:::-;;:::i;10233:98::-;;;;;;:::i;:::-;;:::i;13497:95::-;;;;;;:::i;:::-;;:::i;13915:184::-;;;;;;:::i;:::-;;:::i;10343:80::-;;;:::i;577:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;4366:105;;;:::i;14105:176::-;;;;;;:::i;:::-;;:::i;3190:406::-;;;;;;:::i;:::-;;:::i;2657:377::-;;;;;;:::i;:::-;;:::i;5647:41::-;;;;;-1:-1:-1;;;5647:41:0;;;;;;5193:87;;;;;-1:-1:-1;;;;;5193:87:0;;;6786:562;;;;;;:::i;:::-;;:::i;7354:420::-;;;;;;:::i;:::-;;:::i;5287:108::-;;;;;;:::i;:::-;;:::i;3672:20::-;;;;;-1:-1:-1;;;;;3672:20:0;;;6634:122;;;;;;:::i;:::-;;:::i;284:20::-;;;:::i;5789:108::-;;;;;;:::i;:::-;;:::i;14287:231::-;;;;;;:::i;:::-;;:::i;1701:237::-;;;;;;:::i;:::-;;:::i;15023:215::-;;;;;;:::i;:::-;;:::i;8481:329::-;;;;;;:::i;:::-;;:::i;6206:47::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;6206:47:0;;-1:-1:-1;;;;;6206:47:0;;;;;;;13861:12:1;13849:25;;;13831:44;;-1:-1:-1;;;;;13911:32:1;;;13906:2;13891:18;;13884:60;13804:18;6206:47:0;13659:291:1;6011:64:0;;;;;;;;;14524:165;;;;;;:::i;:::-;;:::i;10431:97::-;;;;;;:::i;:::-;;:::i;5527:98::-;;;;;;:::i;:::-;;:::i;628:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8872:258;;;;;;:::i;:::-;;:::i;7816:123::-;;;;;;:::i;:::-;;:::i;5924:41::-;;;;;;13725:152;;;;;;:::i;:::-;;:::i;14863:154::-;;;;;;:::i;:::-;;:::i;4153:207::-;;;;;;:::i;:::-;;:::i;259:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1533:162::-;1609:4;1626:39;1635:10;1647:8;1657:7;1626:8;:39::i;:::-;-1:-1:-1;1683:4:0;1533:162;;;;:::o;2357:294::-;2477:8;:15;2463:3;:10;:29;2455:81;;;;-1:-1:-1;;;2455:81:0;;9650:2:1;2455:81:0;;;9632:21:1;9689:2;9669:18;;;9662:30;9728:34;9708:18;;;9701:62;-1:-1:-1;;;9779:18:1;;;9772:37;9826:19;;2455:81:0;;;;;;;;;2552:9;2547:97;2571:3;:10;2567:1;:14;2547:97;;;2603:29;2612:3;2616:1;2612:6;;;;;;;;:::i;:::-;;;;;;;2620:8;2629:1;2620:11;;;;;;;;:::i;:::-;;;;;;;2603:8;:29::i;:::-;-1:-1:-1;2583:3:0;;;;:::i;:::-;;;;2547:97;;;;2357:294;;:::o;1944:368::-;-1:-1:-1;;;;;2056:16:0;;2035:4;2056:16;;;:9;:16;;;;;;;;2073:10;2056:28;;;;;;;;-1:-1:-1;;2056:49:0;2052:112;;-1:-1:-1;;;;;2122:16:0;;;;;;:9;:16;;;;;;;;2139:10;2122:28;;;;;;;:39;;2154:7;;2122:16;:39;;2154:7;;2122:39;:::i;:::-;;;;-1:-1:-1;;2052:112:0;-1:-1:-1;;;;;2174:16:0;;;;;;:9;:16;;;;;:27;;2194:7;;2174:16;:27;;2194:7;;2174:27;:::i;:::-;;;;-1:-1:-1;;;;;;;2212:14:0;;;;;;:9;:14;;;;;:25;;2230:7;;2212:14;:25;;2230:7;;2212:25;:::i;:::-;;;;;;;;2269:3;-1:-1:-1;;;;;2253:29:0;2262:5;-1:-1:-1;;;;;2253:29:0;-1:-1:-1;;;;;;;;;;;2274:7:0;2253:29;;;;13424:25:1;;13412:2;13397:18;;13278:177;2253:29:0;;;;;;;;-1:-1:-1;2300:4:0;1944:368;;;;;:::o;3091:93::-;3150:26;3156:10;3168:7;3150:5;:26::i;:::-;3091:93;:::o;13598:121::-;13639:31;13659:10;13639:19;:31::i;:::-;13681:30;13700:10;13681:18;:30::i;:::-;13598:121::o;7983:492::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;8075:9:::1;8070:398;8090:21:::0;;::::1;8070:398;;;8193:9;:24;8203:10;;8214:1;8203:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8193:24:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8193:24:0;;:29;8184:93:::1;;;::::0;-1:-1:-1;;;8184:93:0;;13078:2:1;8184:93:0::1;::::0;::::1;13060:21:1::0;13117:2;13097:18;;;13090:30;13156:34;13136:18;;;13129:62;-1:-1:-1;;;13207:18:1;;;13200:31;13248:19;;8184:93:0::1;12876:397:1::0;8184:93:0::1;8378:2;::::0;8355:20:::1;::::0;-1:-1:-1;;;;;8378:2:0::1;:12;8391:10:::0;;8402:1;8391:13;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8378:27;::::0;-1:-1:-1;;;;;;8378:27:0::1;::::0;;;;;;-1:-1:-1;;;;;7050:32:1;;;8378:27:0::1;::::0;::::1;7032:51:1::0;7005:18;;8378:27:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8355:50;;8422:34;8428:10;;8439:1;8428:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8443:12;8422:5;:34::i;:::-;-1:-1:-1::0;8113:3:0;::::1;::::0;::::1;:::i;:::-;;;;8070:398;;10233:98:::0;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;10304:16:::1;:24:::0;;-1:-1:-1;;10304:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10233:98::o;13497:95::-;13555:29;13575:8;13555:19;:29::i;13915:184::-;14077:13;;-1:-1:-1;;;;;14033:24:0;;13989:7;14033:24;;;:14;:24;;;;;:40;13989:7;;14025:65;;-1:-1:-1;;;14033:40:0;;-1:-1:-1;;;;;14033:40:0;14025:65;:::i;:::-;14009:82;13915:184;-1:-1:-1;;13915:184:0:o;10343:80::-;10387:28;10404:10;10387:16;:28::i;4366:105::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;4431:32:::1;4458:3;4431:18;:32::i;14105:176::-:0;14179:7;14259:13;;14223:32;14246:8;14223:22;:32::i;:::-;-1:-1:-1;;;;;14215:41:0;:57;;;;:::i;3190:406::-;-1:-1:-1;;;;;3294:16:0;;3266:25;3294:16;;;:9;:16;;;;;;;;3311:10;3294:28;;;;;;;;3341;;;;3333:97;;;;-1:-1:-1;;;3333:97:0;;12653:2:1;3333:97:0;;;12635:21:1;12692:2;12672:18;;;12665:30;12731:34;12711:18;;;12704:62;12802:26;12782:18;;;12775:54;12846:19;;3333:97:0;12451:420:1;3333:97:0;-1:-1:-1;;;;;3447:16:0;;;;;;:9;:16;;;;;;;;3464:10;3447:28;;;;;;;;-1:-1:-1;;3447:49:0;3443:112;;-1:-1:-1;;;;;3513:16:0;;;;;;:9;:16;;;;;;;;3530:10;3513:28;;;;;;;:39;;3545:7;;3513:16;:39;;3545:7;;3513:39;:::i;:::-;;;;-1:-1:-1;;3443:112:0;3567:21;3573:5;3580:7;3567:5;:21::i;2657:377::-;2807:3;:10;2791:5;:12;:26;:61;;;;;2837:8;:15;2821:5;:12;:31;2791:61;2783:120;;;;-1:-1:-1;;;2783:120:0;;11533:2:1;2783:120:0;;;11515:21:1;11572:2;11552:18;;;11545:30;11611:34;11591:18;;;11584:62;-1:-1:-1;;;11662:18:1;;;11655:44;11716:19;;2783:120:0;11331:410:1;2783:120:0;2919:9;2914:113;2938:5;:12;2934:1;:16;2914:113;;;2972:43;2985:5;2991:1;2985:8;;;;;;;;:::i;:::-;;;;;;;2995:3;2999:1;2995:6;;;;;;;;:::i;:::-;;;;;;;3003:8;3012:1;3003:11;;;;;;;;:::i;:::-;;;;;;;2972:12;:43::i;:::-;-1:-1:-1;2952:3:0;;;;:::i;:::-;;;;2914:113;;;;2657:377;;;:::o;6786:562::-;6581:10;6563:29;;;;:17;:29;;;;;;;;6555:67;;;;-1:-1:-1;;;6555:67:0;;;;;;;:::i;:::-;6895:13:::1;::::0;6885:23:::1;::::0;:7;:23:::1;:::i;:::-;:28:::0;6877:106:::1;;;;-1:-1:-1::0;;;6877:106:0::1;;;;;;;:::i;:::-;6996:25;7042:13;;7032:7;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;7077:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;:37;6996:60;;-1:-1:-1;;;;;;7077:58:0;;::::1;-1:-1:-1::0;;;7077:37:0;;::::1;;:58;;7069:121;;;::::0;-1:-1:-1;;;7069:121:0;;10058:2:1;7069:121:0::1;::::0;::::1;10040:21:1::0;10097:2;10077:18;;;10070:30;10136:34;10116:18;;;10109:62;-1:-1:-1;;;10187:18:1;;;10180:34;10231:19;;7069:121:0::1;9856:400:1::0;7069:121:0::1;-1:-1:-1::0;;;;;7235:21:0;::::1;;::::0;;;:14:::1;:21;::::0;;;;:58;;7276:17;;7235:21;:37:::1;::::0;:58:::1;::::0;7276:17;;-1:-1:-1;;;7235:58:0;::::1;-1:-1:-1::0;;;;;7235:58:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;7235:58:0::1;;;;;-1:-1:-1::0;;;;;7235:58:0::1;;;;;;7309:31;7325:5;7332:7;7309:31;;;;;;-1:-1:-1::0;;;;;7286:32:1;;;;7268:51;;7350:2;7335:18;;7328:34;7256:2;7241:18;;7094:274;7309:31:0::1;;;;;;;;6866:482;6786:562:::0;;:::o;7354:420::-;6581:10;6563:29;;;;:17;:29;;;;;;;;6555:67;;;;-1:-1:-1;;;6555:67:0;;;;;;;:::i;:::-;7458:13:::1;::::0;7448:23:::1;::::0;:7;:23:::1;:::i;:::-;:28:::0;7440:105:::1;;;;-1:-1:-1::0;;;7440:105:0::1;;;;;;;:::i;:::-;7566:25;7612:13;;7602:7;:23;;;;:::i;:::-;-1:-1:-1::0;;;;;7668:19:0;::::1;;::::0;;;:14:::1;:19;::::0;;;;:56;;7566:60;;-1:-1:-1;7566:60:0;;7668:35:::1;::::0;:56:::1;::::0;7566:60;;-1:-1:-1;;;7668:56:0;::::1;-1:-1:-1::0;;;;;7668:56:0::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;7668:56:0::1;;;;;-1:-1:-1::0;;;;;7668:56:0::1;;;;;;7740:26;7753:3;7758:7;7740:26;;;;;;-1:-1:-1::0;;;;;7286:32:1;;;;7268:51;;7350:2;7335:18;;7328:34;7256:2;7241:18;;7094:274;5287:108:0;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;5358:10:::1;:34:::0;;-1:-1:-1;;;;;;5358:34:0::1;-1:-1:-1::0;;;;;5358:34:0;;;::::1;::::0;;;::::1;::::0;;5287:108::o;6634:122::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6718:27:0;;;::::1;;::::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;6718:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6634:122::o;284:20::-;;;;;;;:::i;5789:108::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;5866:12:::1;:28:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5866:28:0::1;-1:-1:-1::0;;;;5866:28:0;;::::1;::::0;;;::::1;::::0;;5789:108::o;14287:231::-;14359:7;14495:13;;14457:32;14480:8;14457:22;:32::i;:::-;-1:-1:-1;;;;;14405:24:0;;;;;;:14;:24;;;;;:40;14397:93;;-1:-1:-1;;;;;14449:41:0;;;;-1:-1:-1;;;14405:40:0;;;14397:93;:::i;:::-;14395:113;;;;:::i;1701:237::-;1800:10;1773:4;1790:21;;;:9;:21;;;;;:32;;1815:7;;1790:21;1773:4;;1790:32;;1815:7;;1790:32;:::i;:::-;;;;-1:-1:-1;;;;;;;1833:14:0;;;;;;:9;:14;;;;;:25;;1851:7;;1833:14;:25;;1851:7;;1833:25;:::i;:::-;;;;-1:-1:-1;;1874:34:0;;13424:25:1;;;-1:-1:-1;;;;;1874:34:0;;;1883:10;;-1:-1:-1;;;;;;;;;;;1874:34:0;13412:2:1;13397:18;1874:34:0;;;;;;;-1:-1:-1;1926:4:0;1701:237;;;;:::o;15023:215::-;15099:7;15195:32;15218:8;15195:22;:32::i;:::-;-1:-1:-1;;;;;15143:24:0;;;;;;:14;:24;;;;;:40;15135:93;;-1:-1:-1;;;;;15187:41:0;;;;-1:-1:-1;;;15143:40:0;;;15135:93;:::i;8481:329::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;8606:36;;::::1;8598:84;;;::::0;-1:-1:-1;;;8598:84:0;;11948:2:1;8598:84:0::1;::::0;::::1;11930:21:1::0;11987:2;11967:18;;;11960:30;-1:-1:-1;;;12006:18:1;;;11999:52;12068:18;;8598:84:0::1;11746:346:1::0;8598:84:0::1;8700:9;8695:108;8715:21:::0;;::::1;8695:108;;;8758:33;8764:10;;8775:1;8764:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8779:8;;8788:1;8779:11;;;;;;;:::i;:::-;;;;;;;8758:5;:33::i;:::-;8738:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8695:108;;;;8481:329:::0;;;;:::o;14524:165::-;14594:7;14666:13;;14638:24;14653:8;14638:14;:24::i;:::-;14630:33;;:49;;;;:::i;10431:97::-;10494:26;10511:8;10494:16;:26::i;5527:98::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;5597:2:::1;:25:::0;;-1:-1:-1;;;;;;5597:25:0::1;-1:-1:-1::0;;;;;5597:25:0;;;::::1;::::0;;;::::1;::::0;;5527:98::o;8872:258::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;8981:9:::1;8976:147;8996:21:::0;;::::1;8976:147;;;9095:15;9039:14;:29;9054:10;;9065:1;9054:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9039:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9039:29:0;:72;;-1:-1:-1;;9039:72:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;9019:3;::::1;::::0;::::1;:::i;:::-;;;;8976:147;;7816:123:::0;6581:10;6563:29;;;;:17;:29;;;;;;;;6555:67;;;;-1:-1:-1;;;6555:67:0;;;;;;;:::i;:::-;7910:21:::1;7916:5;7923:7;7910:5;:21::i;:::-;7816:123:::0;;:::o;13725:152::-;6581:10;6563:29;;;;:17;:29;;;;;;;;6555:67;;;;-1:-1:-1;;;6555:67:0;;;;;;;:::i;:::-;13801:29:::1;13821:8;13801:19;:29::i;:::-;13841:28;13860:8;13841:18;:28::i;14863:154::-:0;14941:7;14976:32;14999:8;14976:22;:32::i;:::-;-1:-1:-1;;;;;14968:41:0;;14863:154;-1:-1:-1;;14863:154:0:o;4153:207::-;3867:5;;-1:-1:-1;;;;;3867:5:0;3876:10;3867:19;3859:64;;;;-1:-1:-1;;;3859:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4243:25:0;::::1;4235:77;;;::::0;-1:-1:-1;;;4235:77:0;;8822:2:1;4235:77:0::1;::::0;::::1;8804:21:1::0;8861:2;8841:18;;;8834:30;8900:34;8880:18;;;8873:62;-1:-1:-1;;;8951:18:1;;;8944:37;8998:19;;4235:77:0::1;8620:403:1::0;4235:77:0::1;4323:29;4342:9;4323:18;:29::i;1307:193::-:0;-1:-1:-1;;;;;1404:17:0;;;;;;;:9;:17;;;;;;;;:27;;;;;;;;;;;;;:37;;;1457:35;;13424:25:1;;;1457:35:0;;13397:18:1;1457:35:0;;;;;;;1307:193;;;:::o;1104:197::-;-1:-1:-1;;;;;1179:16:0;;;;;;:9;:16;;;;;:27;;1199:7;;1179:16;:27;;1199:7;;1179:27;:::i;:::-;;;;;;;;1232:7;1217:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;1255:38:0;;13424:25:1;;;1279:3:0;;-1:-1:-1;;;;;1255:38:0;;;-1:-1:-1;;;;;;;;;;;1255:38:0;13412:2:1;13397:18;1255:38:0;;;;;;;;1104:197;;:::o;11543:1466::-;11691:12;11706:16;:14;:16::i;:::-;-1:-1:-1;;;;;11755:24:0;;11734:18;11755:24;;;:14;:24;;;;;:41;11691:31;;-1:-1:-1;11755:41:0;;11913:15;;11909:869;;11989:32;12012:8;11989:22;:32::i;:::-;-1:-1:-1;;;;;11945:24:0;;;;;;:14;:24;;;;;:76;;:40;;:76;;;;-1:-1:-1;;;11945:76:0;;-1:-1:-1;;;;;11945:76:0;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;11945:76:0;;;;;-1:-1:-1;;;;;11945:76:0;;;;;;11909:869;;;12688:16;;;;12684:83;;;12725:26;12742:8;12725:16;:26::i;:::-;12912:12;;;12897:27;;;-1:-1:-1;;;12912:12:0;;;;12897:27;12893:109;;-1:-1:-1;;;;;12941:24:0;;;;;;:14;:24;;;;;:49;;;;;-1:-1:-1;;12941:49:0;;;;;;11599:1410;;11543:1466;:::o;13015:443::-;-1:-1:-1;;;;;13108:24:0;;13082:23;13108:24;;;:14;:24;;;;;:40;-1:-1:-1;;;13108:40:0;;-1:-1:-1;;;;;13108:40:0;13165:19;;13161:290;;-1:-1:-1;;;;;13201:24:0;;13244:1;13201:24;;;:14;:24;;;;;:44;;-1:-1:-1;;;;;;13201:44:0;;;13324:13;;13297:40;;-1:-1:-1;;;;;13297:24:0;;:40;:::i;:::-;13262:76;;13355:32;13361:8;13371:15;13355:5;:32::i;:::-;13407;;;-1:-1:-1;;;;;7286:32:1;;7268:51;;7350:2;7335:18;;7328:34;;;13407:32:0;;7241:18:1;13407:32:0;7094:274:1;907:191:0;995:7;980:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;1013:14:0;;;;;;:9;:14;;;;;:25;;1031:7;;1013:14;:25;;1031:7;;1013:25;:::i;:::-;;;;-1:-1:-1;;1054:36:0;;13424:25:1;;;-1:-1:-1;;;;;1054:36:0;;;1071:3;;-1:-1:-1;;;;;;;;;;;1054:36:0;13412:2:1;13397:18;1054:36:0;13278:177:1;10569:968:0;10641:16;;;;10633:67;;;;-1:-1:-1;;;10633:67:0;;10463:2:1;10633:67:0;;;10445:21:1;10502:2;10482:18;;;10475:30;10541:27;10521:18;;;10514:55;10586:18;;10633:67:0;10261:349:1;10633:67:0;10713:12;10728:16;:14;:16::i;:::-;-1:-1:-1;;;;;10776:24:0;;10755:18;10776:24;;;:14;:24;;;;;:41;10713:31;;-1:-1:-1;10776:41:0;;10908:16;;10900:68;;;;-1:-1:-1;;;10900:68:0;;11178:2:1;10900:68:0;;;11160:21:1;11217:2;11197:18;;;11190:30;11256:28;11236:18;;;11229:56;11302:18;;10900:68:0;10976:350:1;10900:68:0;-1:-1:-1;;;;;11065:24:0;;;;;;;:14;:24;;;;;;:49;;-1:-1:-1;;11065:49:0;;;;;;;11223:2;;:40;;-1:-1:-1;;;11223:40:0;;;;;7032:51:1;;;;11065:24:0;;11223:2;;:30;;7005:18:1;;11223:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11189:75;-1:-1:-1;;;;;;11367:19:0;;;11363:110;;-1:-1:-1;;;;;11403:24:0;;;;;;:14;:24;;;;;:58;;-1:-1:-1;;;;;11403:58:0;;-1:-1:-1;;;11403:58:0;-1:-1:-1;;;;;;11403:58:0;;;;;;10622:915;;;10569:968;:::o;3949:198::-;4044:5;;;-1:-1:-1;;;;;4060:17:0;;;-1:-1:-1;;;;;;4060:17:0;;;;;;;4093:42;;4044:5;;;4060:17;4044:5;;4093:42;;4024:17;;4093:42;4013:134;3949:198;:::o;9625:534::-;9698:7;9748:23;9782:24;9797:8;9782:14;:24::i;:::-;9774:33;;;-1:-1:-1;9822:20:0;9818:39;;-1:-1:-1;9853:1:0;;9625:534;-1:-1:-1;;9625:534:0:o;9818:39::-;9867:13;9891:16;:14;:16::i;:::-;-1:-1:-1;;;;;9949:24:0;;9919:19;9949:24;;;:14;:24;;;;;:41;10022:14;;9883:25;;;;;-1:-1:-1;9949:41:0;;;;-1:-1:-1;;;10022:14:0;;;;10008:28;;10004:148;;;10112:6;10089:19;10097:11;10089:5;:19;:::i;:::-;10070:39;;:15;:39;:::i;:::-;:48;;;;:::i;:::-;10053:68;9625:534;-1:-1:-1;;;;;9625:534:0:o;10004:148::-;-1:-1:-1;10148:1:0;;9625:534;-1:-1:-1;;;;9625:534:0:o;9453:166::-;9593:16;;9559:10;;:30;;-1:-1:-1;;;9559:30:0;;-1:-1:-1;;;;;7050:32:1;;;9559:30:0;;;7032:51:1;9518:6:0;;9593:16;;;9559:10;;:20;;7005:18:1;;9559:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9552:57;;;;:::i;9300:147::-;9349:6;9375:64;9407:15;9425:12;;;;;;;;;;;9375:23;:64::i;:::-;9368:71;;9300:147;:::o;9170:124::-;9246:6;9276:1;9272:5;;:1;:5;;;:13;;9284:1;9272:13;;;9280:1;9272:13;9265:20;9170:124;-1:-1:-1;;;9170:124:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:367::-;255:8;265:6;319:3;312:4;304:6;300:17;296:27;286:55;;337:1;334;327:12;286:55;-1:-1:-1;360:20:1;;403:18;392:30;;389:50;;;435:1;432;425:12;389:50;472:4;464:6;460:17;448:29;;532:3;525:4;515:6;512:1;508:14;500:6;496:27;492:38;489:47;486:67;;;549:1;546;539:12;486:67;192:367;;;;;:::o;564:679::-;618:5;671:3;664:4;656:6;652:17;648:27;638:55;;689:1;686;679:12;638:55;725:6;712:20;751:4;775:60;791:43;831:2;791:43;:::i;:::-;775:60;:::i;:::-;857:3;881:2;876:3;869:15;909:2;904:3;900:12;893:19;;944:2;936:6;932:15;996:3;991:2;985;982:1;978:10;970:6;966:23;962:32;959:41;956:61;;;1013:1;1010;1003:12;956:61;1035:1;1045:169;1059:2;1056:1;1053:9;1045:169;;;1116:23;1135:3;1116:23;:::i;:::-;1104:36;;1160:12;;;;1192;;;;1077:1;1070:9;1045:169;;;-1:-1:-1;1232:5:1;;564:679;-1:-1:-1;;;;;;;564:679:1:o;1248:673::-;1302:5;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;1409:6;1396:20;1435:4;1459:60;1475:43;1515:2;1475:43;:::i;1459:60::-;1541:3;1565:2;1560:3;1553:15;1593:2;1588:3;1584:12;1577:19;;1628:2;1620:6;1616:15;1680:3;1675:2;1669;1666:1;1662:10;1654:6;1650:23;1646:32;1643:41;1640:61;;;1697:1;1694;1687:12;1640:61;1719:1;1729:163;1743:2;1740:1;1737:9;1729:163;;;1800:17;;1788:30;;1838:12;;;;1870;;;;1761:1;1754:9;1729:163;;1926:160;1991:20;;2047:13;;2040:21;2030:32;;2020:60;;2076:1;2073;2066:12;2091:186;2150:6;2203:2;2191:9;2182:7;2178:23;2174:32;2171:52;;;2219:1;2216;2209:12;2171:52;2242:29;2261:9;2242:29;:::i;2282:260::-;2350:6;2358;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;2450:29;2469:9;2450:29;:::i;:::-;2440:39;;2498:38;2532:2;2521:9;2517:18;2498:38;:::i;:::-;2488:48;;2282:260;;;;;:::o;2547:328::-;2624:6;2632;2640;2693:2;2681:9;2672:7;2668:23;2664:32;2661:52;;;2709:1;2706;2699:12;2661:52;2732:29;2751:9;2732:29;:::i;:::-;2722:39;;2780:38;2814:2;2803:9;2799:18;2780:38;:::i;:::-;2770:48;;2865:2;2854:9;2850:18;2837:32;2827:42;;2547:328;;;;;:::o;2880:254::-;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3045:29;3064:9;3045:29;:::i;:::-;3035:39;;3093:35;3124:2;3113:9;3109:18;3093:35;:::i;3139:254::-;3207:6;3215;3268:2;3256:9;3247:7;3243:23;3239:32;3236:52;;;3284:1;3281;3274:12;3236:52;3307:29;3326:9;3307:29;:::i;:::-;3297:39;3383:2;3368:18;;;;3355:32;;-1:-1:-1;;;3139:254:1:o;3398:437::-;3484:6;3492;3545:2;3533:9;3524:7;3520:23;3516:32;3513:52;;;3561:1;3558;3551:12;3513:52;3601:9;3588:23;3634:18;3626:6;3623:30;3620:50;;;3666:1;3663;3656:12;3620:50;3705:70;3767:7;3758:6;3747:9;3743:22;3705:70;:::i;:::-;3794:8;;3679:96;;-1:-1:-1;3398:437:1;-1:-1:-1;;;;3398:437:1:o;3840:773::-;3962:6;3970;3978;3986;4039:2;4027:9;4018:7;4014:23;4010:32;4007:52;;;4055:1;4052;4045:12;4007:52;4095:9;4082:23;4124:18;4165:2;4157:6;4154:14;4151:34;;;4181:1;4178;4171:12;4151:34;4220:70;4282:7;4273:6;4262:9;4258:22;4220:70;:::i;:::-;4309:8;;-1:-1:-1;4194:96:1;-1:-1:-1;4397:2:1;4382:18;;4369:32;;-1:-1:-1;4413:16:1;;;4410:36;;;4442:1;4439;4432:12;4410:36;;4481:72;4545:7;4534:8;4523:9;4519:24;4481:72;:::i;:::-;3840:773;;;;-1:-1:-1;4572:8:1;-1:-1:-1;;;;3840:773:1:o;4618:821::-;4770:6;4778;4786;4839:2;4827:9;4818:7;4814:23;4810:32;4807:52;;;4855:1;4852;4845:12;4807:52;4895:9;4882:23;4924:18;4965:2;4957:6;4954:14;4951:34;;;4981:1;4978;4971:12;4951:34;5004:61;5057:7;5048:6;5037:9;5033:22;5004:61;:::i;:::-;4994:71;;5118:2;5107:9;5103:18;5090:32;5074:48;;5147:2;5137:8;5134:16;5131:36;;;5163:1;5160;5153:12;5131:36;5186:63;5241:7;5230:8;5219:9;5215:24;5186:63;:::i;:::-;5176:73;;5302:2;5291:9;5287:18;5274:32;5258:48;;5331:2;5321:8;5318:16;5315:36;;;5347:1;5344;5337:12;5315:36;;5370:63;5425:7;5414:8;5403:9;5399:24;5370:63;:::i;:::-;5360:73;;;4618:821;;;;;:::o;5444:595::-;5562:6;5570;5623:2;5611:9;5602:7;5598:23;5594:32;5591:52;;;5639:1;5636;5629:12;5591:52;5679:9;5666:23;5708:18;5749:2;5741:6;5738:14;5735:34;;;5765:1;5762;5755:12;5735:34;5788:61;5841:7;5832:6;5821:9;5817:22;5788:61;:::i;:::-;5778:71;;5902:2;5891:9;5887:18;5874:32;5858:48;;5931:2;5921:8;5918:16;5915:36;;;5947:1;5944;5937:12;5915:36;;5970:63;6025:7;6014:8;6003:9;5999:24;5970:63;:::i;:::-;5960:73;;;5444:595;;;;;:::o;6044:180::-;6100:6;6153:2;6141:9;6132:7;6128:23;6124:32;6121:52;;;6169:1;6166;6159:12;6121:52;6192:26;6208:9;6192:26;:::i;6229:180::-;6288:6;6341:2;6329:9;6320:7;6316:23;6312:32;6309:52;;;6357:1;6354;6347:12;6309:52;-1:-1:-1;6380:23:1;;6229:180;-1:-1:-1;6229:180:1:o;6414:184::-;6484:6;6537:2;6525:9;6516:7;6512:23;6508:32;6505:52;;;6553:1;6550;6543:12;6505:52;-1:-1:-1;6576:16:1;;6414:184;-1:-1:-1;6414:184:1:o;6603:278::-;6661:6;6714:2;6702:9;6693:7;6689:23;6685:32;6682:52;;;6730:1;6727;6720:12;6682:52;6769:9;6756:23;6819:12;6812:5;6808:24;6801:5;6798:35;6788:63;;6847:1;6844;6837:12;8018:597;8130:4;8159:2;8188;8177:9;8170:21;8220:6;8214:13;8263:6;8258:2;8247:9;8243:18;8236:34;8288:1;8298:140;8312:6;8309:1;8306:13;8298:140;;;8407:14;;;8403:23;;8397:30;8373:17;;;8392:2;8369:26;8362:66;8327:10;;8298:140;;;8456:6;8453:1;8450:13;8447:91;;;8526:1;8521:2;8512:6;8501:9;8497:22;8493:31;8486:42;8447:91;-1:-1:-1;8599:2:1;8578:15;-1:-1:-1;;8574:29:1;8559:45;;;;8606:2;8555:54;;8018:597;-1:-1:-1;;;8018:597:1:o;9028:415::-;9230:2;9212:21;;;9269:2;9249:18;;;9242:30;9308:34;9303:2;9288:18;;9281:62;-1:-1:-1;;;9374:2:1;9359:18;;9352:49;9433:3;9418:19;;9028:415::o;10615:356::-;10817:2;10799:21;;;10836:18;;;10829:30;10895:34;10890:2;10875:18;;10868:62;10962:2;10947:18;;10615:356::o;12097:349::-;12299:2;12281:21;;;12338:2;12318:18;;;12311:30;12377:27;12372:2;12357:18;;12350:55;12437:2;12422:18;;12097:349::o;14144:275::-;14215:2;14209:9;14280:2;14261:13;;-1:-1:-1;;14257:27:1;14245:40;;14315:18;14300:34;;14336:22;;;14297:62;14294:88;;;14362:18;;:::i;:::-;14398:2;14391:22;14144:275;;-1:-1:-1;14144:275:1:o;14424:183::-;14484:4;14517:18;14509:6;14506:30;14503:56;;;14539:18;;:::i;:::-;-1:-1:-1;14584:1:1;14580:14;14596:4;14576:25;;14424:183::o;14612:238::-;14652:3;-1:-1:-1;;;;;14719:10:1;;;14749;;;14779:12;;;14771:21;;14768:47;;;14795:18;;:::i;:::-;14831:13;;14612:238;-1:-1:-1;;;;14612:238:1:o;14855:128::-;14895:3;14926:1;14922:6;14919:1;14916:13;14913:39;;;14932:18;;:::i;:::-;-1:-1:-1;14968:9:1;;14855:128::o;14988:120::-;15028:1;15054;15044:35;;15059:18;;:::i;:::-;-1:-1:-1;15093:9:1;;14988:120::o;15113:168::-;15153:7;15219:1;15215;15211:6;15207:14;15204:1;15201:21;15196:1;15189:9;15182:17;15178:45;15175:71;;;15226:18;;:::i;:::-;-1:-1:-1;15266:9:1;;15113:168::o;15286:264::-;15325:7;15357:12;15396:2;15393:1;15389:10;15426:2;15423:1;15419:10;15482:3;15478:2;15474:12;15469:3;15466:21;15459:3;15452:11;15445:19;15441:47;15438:73;;;15491:18;;:::i;:::-;15531:13;;15286:264;-1:-1:-1;;;;15286:264:1:o;15555:231::-;15595:4;-1:-1:-1;;;;;15693:10:1;;;;15663;;15715:12;;;15712:38;;;15730:18;;:::i;:::-;15767:13;;15555:231;-1:-1:-1;;;15555:231:1:o;15791:125::-;15831:4;15859:1;15856;15853:8;15850:34;;;15864:18;;:::i;:::-;-1:-1:-1;15901:9:1;;15791:125::o;15921:380::-;16000:1;15996:12;;;;16043;;;16064:61;;16118:4;16110:6;16106:17;16096:27;;16064:61;16171:2;16163:6;16160:14;16140:18;16137:38;16134:161;;;16217:10;16212:3;16208:20;16205:1;16198:31;16252:4;16249:1;16242:15;16280:4;16277:1;16270:15;16134:161;;15921:380;;;:::o;16306:135::-;16345:3;-1:-1:-1;;16366:17:1;;16363:43;;;16386:18;;:::i;:::-;-1:-1:-1;16433:1:1;16422:13;;16306:135::o;16446:112::-;16478:1;16504;16494:35;;16509:18;;:::i;:::-;-1:-1:-1;16543:9:1;;16446:112::o;16563:127::-;16624:10;16619:3;16615:20;16612:1;16605:31;16655:4;16652:1;16645:15;16679:4;16676:1;16669:15;16695:127;16756:10;16751:3;16747:20;16744:1;16737:31;16787:4;16784:1;16777:15;16811:4;16808:1;16801:15;16827:127;16888:10;16883:3;16879:20;16876:1;16869:31;16919:4;16916:1;16909:15;16943:4;16940:1;16933:15;16959:127;17020:10;17015:3;17011:20;17008:1;17001:31;17051:4;17048:1;17041:15;17075:4;17072:1;17065:15
Swarm Source
ipfs://9975d0aecd1056c723e33eaea59adc4081142b59d2a7c01bd0df039e9176a68b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.