Contract 0xB26A49dAD928C6A045e23f00683e3ee9F65dEB23 10
Contract Overview
Balance:
0 ETH
EtherValue:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 3 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xf3972655b96f29901b88a6d8fd0b9b7ef006c7621bce42b55b2bd514bcb38f6b | 105907192 | 280 days 19 hrs ago | 0xb26a49dad928c6a045e23f00683e3ee9f65deb23 | 0x0000000000000000000000000000000000000001 | 0 ETH | ||
0xa05a1f25ad02671c0c824399d8b7122127f63f22c105a456125533704d6fb21b | 105905763 | 280 days 20 hrs ago | 0xb26a49dad928c6a045e23f00683e3ee9f65deb23 | 0x0000000000000000000000000000000000000001 | 0 ETH | ||
0x4a93042b254f6ec44ed0910b6a7ad78246cbede4b0912d5f3ea3f076065d8ed7 | 105782058 | 283 days 17 hrs ago | 0xb26a49dad928c6a045e23f00683e3ee9f65deb23 | 0x0000000000000000000000000000000000000001 | 0 ETH |
[ Download CSV Export ]
Contract Name:
ChipTable
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Optimistic.Etherscan.io on 2022-08-23 */ pragma solidity ^0.8.5; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File contracts/intf/IChipTable.sol /*** * == Developer History (NAME, ORG, DATE, DESCR) == * Isaac Dubuque, Verilink, 7/24/22, Initial Commit * ================================================ * * File: IChipTable.sol * Description: Chip Table Interface */ /*** * IChipTable * Provides the interface for the ERS interim on-chain chip resolution * The Chip Table allows the owner to register Trusted Service Managers (TSM) * TSMs can add chips allowing for a decentralized chip resolution * Chips can be look up their TSM for device information and redirect resolution */ interface IChipTable is IERC165 { /** * Registered TSM */ event TSMRegistered(address tsmAddress, string tsmUri); /** * TSM approved operator */ event TSMApproved(address tsmAddress, address operator); /** * Chip Registered with ERS */ event ChipRegistered(bytes32 chipId, address tsmAddress); /** * TSM updated */ event TSMUpdate(address tsmAddress, string tsmUri); /** Registry Version */ function registryVersion() external returns (string memory); /** * Registers a TSM * Permissions: Owner */ function registerTSM( address tsmAddress, string calldata uri) external; /** * Registers Chip Ids without signatures * Permissions: Owner */ function registerChipIds( address tsmAddress, bytes32[] calldata chipIds ) external; /** * Registers Chip Ids with Signatures * Permissions: Owner */ function safeRegisterChipIds( address tsmAddress, bytes32[] calldata chipIds, bytes[] calldata signatures ) external; /** * Returns the number of registered TSMs */ function totalTSMs() external view returns (uint256); /** * Returns the TSM Id by Index */ function tsmByIndex(uint256 index) external view returns (address); /** * Returns the TSM uri */ function tsmUri(address tsmAddress) external view returns (string memory); /** * Sets the TSM uri */ function tsmSetUri(string calldata uri) external; /** * Returns the TSM operator */ function tsmOperator(address tsmAddress) external view returns (address); /** * Approves an operator for a TSM */ function approve(address operator) external; /** * Adds a ChipId * requires a signature * Permissions: TSM */ function addChipId( address tsmAddress, bytes32 chipId, bytes calldata signature) external; /** * Adds ChipIds * requires a signature * Permissions: TSM */ function addChipIds( address tsmAddress, bytes32[] calldata chipIds, bytes[] calldata signatures ) external; /** * gets a Chip's TSM Id */ function chipTSM(bytes32 chipId) external view returns (address); /** * Gets the Chip Redirect Uri */ function chipUri(bytes32 chipId) external view returns (string memory); /** * Get whether chip exists */ function chipExists(bytes32 chipId) external view returns (bool); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/src/chipTable.sol /*** * == Developer History (NAME, ORG, DATE, DESCR) == * Isaac Dubuque, Verilink, 7/24/22, Initial Commit * ================================================ * * File: ChipTable.sol * Description: Chip Table Implementation */ /*** * ChipTable * Provides the implementation for the ERS interim on-chain chip resolution * The Chip Table allows the owner to register Trusted Service Managers (TSM) * TSMs can add chips allowing for a decentralized chip resolution * Chips can be look up their TSM for device information and redirect resolution */ contract ChipTable is IChipTable, Context, Ownable { struct TSM { bool _isRegistered; address _operator; string _uri; } struct ChipInfo { address _tsmAddress; } mapping(address => TSM) private _tsms; /* mapping tsmAddress => TSM */ mapping(bytes32 => ChipInfo) private _chipIds; /* mapping from chipId => ChipInfo */ mapping(uint256 => address) private _tsmIndex; /* mapping from TSM index => tsmAddress */ uint256 private _tsmCount; string private VERSION; constructor(address _contractOwner, string memory _registryVersion) { transferOwnership(_contractOwner); _tsmCount = 0; VERSION = _registryVersion; } function supportsInterface(bytes4 interfaceId) external pure override returns (bool) { return interfaceId == type(IChipTable).interfaceId; } function registryVersion() external view override returns (string memory) { return VERSION; } /*=== OWNER ===*/ function registerTSM( address tsmAddress, string calldata uri) external override onlyOwner { _registerTSM(tsmAddress, uri); /* update indexing */ _tsmIndex[_tsmCount] = tsmAddress; _tsmCount = _tsmCount + 1; } function registerChipIds( address tsmAddress, bytes32[] calldata chipIds ) external override onlyOwner { require(_tsmExists(tsmAddress), "Owner: TSM does not exist"); for(uint256 i = 0; i < chipIds.length; i++) { _addChip(tsmAddress, chipIds[i]); } } function safeRegisterChipIds( address tsmAddress, bytes32[] calldata chipIds, bytes[] calldata signatures ) external override onlyOwner { require(_tsmExists(tsmAddress), "Owner: TSM does not exist"); require(chipIds.length == signatures.length, "Owner: chipIds and signatures length mismatch"); for(uint256 i = 0; i < chipIds.length; i++) { _addChipSafe(tsmAddress, chipIds[i], signatures[i]); } } /*=== END OWNER ===*/ /*=== TSM ===*/ modifier onlyTSM(address tsmAddress) { _checkTSM(tsmAddress); _; } function _checkTSM(address tsmAddress) internal view { require(_tsmExists(tsmAddress), "TSM: tsm does not exist"); } modifier onlyTSMOrApproved(address tsmAddress) { _checkTSMOrApproved(tsmAddress); _; } function _checkTSMOrApproved(address tsmAddress) internal view { require(_tsmExists(tsmAddress) && ( (_msgSender() == tsmOperator(tsmAddress)) || (_msgSender() == tsmAddress)), "TSM: caller is not TSM or approved"); } function _registerTSM( address tsmAddress, string calldata uri) internal { require(!_tsmExists(tsmAddress), "Owner: TSM already registered"); _tsms[tsmAddress]._isRegistered = true; _tsms[tsmAddress]._operator = address(0); _tsms[tsmAddress]._uri = uri; emit TSMRegistered(tsmAddress, uri); } function _tsmExists(address tsmAddress) internal view returns (bool) { return _tsms[tsmAddress]._isRegistered != false; } function totalTSMs() external override view returns (uint256) { return _tsmCount; } function tsmByIndex(uint256 index) external override view returns (address) { require(index < _tsmCount, "TSM: index out of bounds"); return _tsmIndex[index]; } function tsmUri(address tsmAddress) public override view onlyTSM(tsmAddress) returns (string memory) { return _tsms[tsmAddress]._uri; } function tsmSetUri(string calldata uri) public override onlyTSM(_msgSender()) { _tsms[_msgSender()]._uri = uri; emit TSMUpdate(_msgSender(), uri); } function tsmOperator(address tsmAddress) public override view onlyTSM(tsmAddress) returns (address) { return _tsms[tsmAddress]._operator; } function approve(address operator) external override onlyTSM(_msgSender()) { _tsms[_msgSender()]._operator = operator; emit TSMApproved(_msgSender(), operator); } function addChipId( address tsmAddress, bytes32 chipId, bytes calldata signature) external override onlyTSMOrApproved(tsmAddress) { _addChipSafe(tsmAddress, chipId, signature); } function addChipIds( address tsmAddress, bytes32[] calldata chipIds, bytes[] calldata signatures ) external override onlyTSMOrApproved(tsmAddress) { require(chipIds.length == signatures.length, "TSM: chipIds and signatures length mismatch"); for(uint256 i = 0; i < chipIds.length; i++) { _addChipSafe(tsmAddress, chipIds[i], signatures[i]); } } /*=== END TSM ===*/ /*=== CHIP ===*/ function _chipExists(bytes32 chipId) internal view returns (bool) { return _chipIds[chipId]._tsmAddress != address(0); } function _isValidChipSignature(address tsmAddress, bytes32 chipId, bytes calldata signature) internal pure returns (bool) { address _signer; bytes32 msgHash; bytes32 _r; bytes32 _s; uint8 _v; /* Implementation for Kong Halo Chip 2021 Edition */ require(signature.length == 65, "Chip: invalid sig length"); /* unpack v, s, r */ _r = bytes32(signature[0:32]); _s = bytes32(signature[32:64]); _v = uint8(signature[64]); if(uint256(_s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { revert("Chip: invalid sig `s`"); } if(_v != 27 && _v != 28) { revert("Chip: invalid sig `v`"); } msgHash = keccak256( abi.encodePacked( "\x19Ethereum Signed Message:\n32", keccak256(abi.encodePacked(tsmAddress)) ) ); _signer = ecrecover(msgHash, _v, _r, _s); require(_signer != address(0x0), "Chip: invalid signer"); return _signer == address(uint160(uint256(chipId))); } function _addChipSafe(address tsmAddress, bytes32 chipId, bytes calldata signature) internal { require(_isValidChipSignature(tsmAddress, chipId, signature), "Chip: chip signature invalid"); _addChip(tsmAddress, chipId); } function _addChip(address tsmAddress, bytes32 chipId) internal { require(!_chipExists(chipId), "Chip: chip already exists"); _chipIds[chipId]._tsmAddress = tsmAddress; emit ChipRegistered(chipId, tsmAddress); } function chipTSM(bytes32 chipId) public override view returns (address) { require(_chipExists(chipId), "Chip: chip doesn't exist"); return _chipIds[chipId]._tsmAddress; } function chipUri(bytes32 chipId) external override view returns (string memory) { return tsmUri(chipTSM(chipId)); } function chipExists(bytes32 chipId) public override view returns (bool) { return _chipExists(chipId); } /*=== END CHIP ===*/ }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"string","name":"_registryVersion","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"chipId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"tsmAddress","type":"address"}],"name":"ChipRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tsmAddress","type":"address"},{"indexed":false,"internalType":"address","name":"operator","type":"address"}],"name":"TSMApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tsmAddress","type":"address"},{"indexed":false,"internalType":"string","name":"tsmUri","type":"string"}],"name":"TSMRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tsmAddress","type":"address"},{"indexed":false,"internalType":"string","name":"tsmUri","type":"string"}],"name":"TSMUpdate","type":"event"},{"inputs":[{"internalType":"address","name":"tsmAddress","type":"address"},{"internalType":"bytes32","name":"chipId","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"addChipId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tsmAddress","type":"address"},{"internalType":"bytes32[]","name":"chipIds","type":"bytes32[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"addChipIds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"chipId","type":"bytes32"}],"name":"chipExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"chipId","type":"bytes32"}],"name":"chipTSM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"chipId","type":"bytes32"}],"name":"chipUri","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":"tsmAddress","type":"address"},{"internalType":"bytes32[]","name":"chipIds","type":"bytes32[]"}],"name":"registerChipIds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tsmAddress","type":"address"},{"internalType":"string","name":"uri","type":"string"}],"name":"registerTSM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registryVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tsmAddress","type":"address"},{"internalType":"bytes32[]","name":"chipIds","type":"bytes32[]"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"safeRegisterChipIds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalTSMs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tsmByIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tsmAddress","type":"address"}],"name":"tsmOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"tsmSetUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tsmAddress","type":"address"}],"name":"tsmUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162003067380380620030678339818101604052810190620000379190620003f3565b620000576200004b6200009160201b60201c565b6200009960201b60201c565b62000068826200015d60201b60201c565b6000600481905550806005908051906020019062000088929190620002ae565b50505062000746565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200016d620001f460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001d790620004a7565b60405180910390fd5b620001f1816200009960201b60201c565b50565b620002046200009160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200022a6200028560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027a90620004c9565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002bc90620005c5565b90600052602060002090601f016020900481019282620002e057600085556200032c565b82601f10620002fb57805160ff19168380011785556200032c565b828001600101855582156200032c579182015b828111156200032b5782518255916020019190600101906200030e565b5b5090506200033b91906200033f565b5090565b5b808211156200035a57600081600090555060010162000340565b5090565b6000620003756200036f8462000514565b620004eb565b90508281526020810184848401111562000394576200039362000694565b5b620003a18482856200058f565b509392505050565b600081519050620003ba816200072c565b92915050565b600082601f830112620003d857620003d76200068f565b5b8151620003ea8482602086016200035e565b91505092915050565b600080604083850312156200040d576200040c6200069e565b5b60006200041d85828601620003a9565b925050602083015167ffffffffffffffff81111562000441576200044062000699565b5b6200044f85828601620003c0565b9150509250929050565b6000620004686026836200054a565b91506200047582620006b4565b604082019050919050565b60006200048f6020836200054a565b91506200049c8262000703565b602082019050919050565b60006020820190508181036000830152620004c28162000459565b9050919050565b60006020820190508181036000830152620004e48162000480565b9050919050565b6000620004f76200050a565b9050620005058282620005fb565b919050565b6000604051905090565b600067ffffffffffffffff82111562000532576200053162000660565b5b6200053d82620006a3565b9050602081019050919050565b600082825260208201905092915050565b600062000568826200056f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015620005af57808201518184015260208101905062000592565b83811115620005bf576000848401525b50505050565b60006002820490506001821680620005de57607f821691505b60208210811415620005f557620005f462000631565b5b50919050565b6200060682620006a3565b810181811067ffffffffffffffff8211171562000628576200062762000660565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000737816200055b565b81146200074357600080fd5b50565b61291180620007566000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063d143d21e11610071578063d143d21e1461031a578063daea85c514610336578063f2fde38b14610352578063fc2c2e251461036e578063fe44ba7f1461038a57610121565b8063715018a6146102765780638da5cb5b14610280578063a845891e1461029e578063b7e83957146102ce578063bc9300bc146102fe57610121565b806334bcec73116100f457806334bcec73146101d45780633b71cad0146101f05780633f41f6561461020e5780636381fcdd1461022a57806363d99f2c1461025a57610121565b806301ffc9a71461012657806308306567146101565780630f9be51c146101865780632cc7a4ce146101a4575b600080fd5b610140600480360381019061013b91906119f3565b6103ba565b60405161014d9190611e83565b60405180910390f35b610170600480360381019061016b91906117d0565b610424565b60405161017d9190611e0d565b60405180910390f35b61018e61049b565b60405161019b9190611f0c565b60405180910390f35b6101be60048036038101906101b991906117d0565b61052d565b6040516101cb9190611f0c565b60405180910390f35b6101ee60048036038101906101e991906117fd565b61060c565b005b6101f86106a6565b604051610205919061212e565b60405180910390f35b6102286004803603810190610223919061185d565b6106b0565b005b610244600480360381019061023f91906119c6565b6107b9565b6040516102519190611f0c565b60405180910390f35b610274600480360381019061026f9190611a20565b6107d3565b005b61027e610884565b005b610288610898565b6040516102959190611e0d565b60405180910390f35b6102b860048036038101906102b391906119c6565b6108c1565b6040516102c59190611e0d565b60405180910390f35b6102e860048036038101906102e39190611a6d565b610949565b6040516102f59190611e0d565b60405180910390f35b6103186004803603810190610313919061185d565b6109ca565b005b610334600480360381019061032f9190611966565b610a8e565b005b610350600480360381019061034b91906117d0565b610b0f565b005b61036c600480360381019061036791906117d0565b610bec565b005b610388600480360381019061038391906118f2565b610c70565b005b6103a4600480360381019061039f91906119c6565b610c8d565b6040516103b19190611e83565b60405180910390f35b60007fb147e4c5000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008161043081610c9f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6060600580546104aa9061239b565b80601f01602080910402602001604051908101604052809291908181526020018280546104d69061239b565b80156105235780601f106104f857610100808354040283529160200191610523565b820191906000526020600020905b81548152906001019060200180831161050657829003601f168201915b5050505050905090565b60608161053981610c9f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546105869061239b565b80601f01602080910402602001604051908101604052809291908181526020018280546105b29061239b565b80156105ff5780601f106105d4576101008083540402835291602001916105ff565b820191906000526020600020905b8154815290600101906020018083116105e257829003601f168201915b5050505050915050919050565b610614610cea565b61061d83610d68565b61065c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065390611f2e565b60405180910390fd5b60005b828290508110156106a05761068d84848484818110610681576106806124a2565b5b90506020020135610dc8565b8080610698906123cd565b91505061065f565b50505050565b6000600454905090565b6106b8610cea565b6106c185610d68565b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f790611f2e565b60405180910390fd5b818190508484905014610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f9061206e565b60405180910390fd5b60005b848490508110156107b15761079e8686868481811061076d5761076c6124a2565b5b90506020020135858585818110610787576107866124a2565b5b90506020028101906107999190612149565b610ea3565b80806107a9906123cd565b91505061074b565b505050505050565b60606107cc6107c7836108c1565b61052d565b9050919050565b6107db610efe565b6107e481610c9f565b8282600160006107f2610efe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101919061083c929190611581565b507f3adb29fcd1e7fdc7b33cf5ab90f08845658f1dac367203673f7e4d37ef86510c610866610efe565b848460405161087793929190611e51565b60405180910390a1505050565b61088c610cea565b6108966000610f06565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006108cc82610fca565b61090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290611fce565b60405180910390fd5b6002600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600454821061098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690611fee565b60405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b846109d481611039565b828290508585905014610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390611f8e565b60405180910390fd5b60005b85859050811015610a8557610a7287878784818110610a4157610a406124a2565b5b90506020020135868685818110610a5b57610a5a6124a2565b5b9050602002810190610a6d9190612149565b610ea3565b8080610a7d906123cd565b915050610a1f565b50505050505050565b610a96610cea565b610aa1838383611107565b8260036000600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600454610b049190612219565b600481905550505050565b610b17610efe565b610b2081610c9f565b8160016000610b2d610efe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd948d2cc3b872740335be8a37ccf228cc17495c3195dc4a75c161bf8dcd568e8610bd1610efe565b83604051610be0929190611e28565b60405180910390a15050565b610bf4610cea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90611f4e565b60405180910390fd5b610c6d81610f06565b50565b83610c7a81611039565b610c8685858585610ea3565b5050505050565b6000610c9882610fca565b9050919050565b610ca881610d68565b610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906120ee565b60405180910390fd5b50565b610cf2610efe565b73ffffffffffffffffffffffffffffffffffffffff16610d10610898565b73ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9061204e565b60405180910390fd5b565b6000801515600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151514159050919050565b610dd181610fca565b15610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890611fae565b60405180910390fd5b816002600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffb004b53ebb7ed06e66f56949caf0ba61d9c4cf9909c2eece0347f65210435fd8183604051610e97929190611e9e565b60405180910390a15050565b610eaf848484846112be565b610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee5906120ae565b60405180910390fd5b610ef88484610dc8565b50505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61104281610d68565b80156110c5575061105281610424565b73ffffffffffffffffffffffffffffffffffffffff16611070610efe565b73ffffffffffffffffffffffffffffffffffffffff1614806110c457508073ffffffffffffffffffffffffffffffffffffffff166110ac610efe565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb9061210e565b60405180910390fd5b50565b61111083610d68565b15611150576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111479061200e565b60405180910390fd5b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101919061127d929190611581565b507fa0650bbfdaba1081dc90b421075337a344c6d3def1a3fdfc6190a4cc906701598383836040516112b193929190611e51565b60405180910390a1505050565b6000806000806000806041888890501461130d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611304906120ce565b60405180910390fd5b8787600090602092611321939291906121de565b9061132c91906122fa565b92508787602090604092611342939291906121de565b9061134d91906122fa565b915087876040818110611363576113626124a2565b5b9050013560f81c60f81b60f81c90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf9061202e565b60405180910390fd5b601b8160ff16141580156113f05750601c8160ff1614155b15611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790611f6e565b60405180910390fd5b896040516020016114419190611dcc565b604051602081830303815290604052805190602001206040516020016114679190611de7565b604051602081830303815290604052805190602001209350600184828585604051600081526020016040526040516114a29493929190611ec7565b6020604051602081039080840390855afa1580156114c4573d6000803e3d6000fd5b505050602060405103519450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115379061208e565b60405180910390fd5b8860001c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161495505050505050949350505050565b82805461158d9061239b565b90600052602060002090601f0160209004810192826115af57600085556115f6565b82601f106115c857803560ff19168380011785556115f6565b828001600101855582156115f6579182015b828111156115f55782358255916020019190600101906115da565b5b5090506116039190611607565b5090565b5b80821115611620576000816000905550600101611608565b5090565b6000813590506116338161287f565b92915050565b60008083601f84011261164f5761164e6124d6565b5b8235905067ffffffffffffffff81111561166c5761166b6124d1565b5b602083019150836020820283011115611688576116876124ef565b5b9250929050565b60008083601f8401126116a5576116a46124d6565b5b8235905067ffffffffffffffff8111156116c2576116c16124d1565b5b6020830191508360208202830111156116de576116dd6124ef565b5b9250929050565b6000813590506116f481612896565b92915050565b600081359050611709816128ad565b92915050565b60008083601f840112611725576117246124d6565b5b8235905067ffffffffffffffff811115611742576117416124d1565b5b60208301915083600182028301111561175e5761175d6124ef565b5b9250929050565b60008083601f84011261177b5761177a6124d6565b5b8235905067ffffffffffffffff811115611798576117976124d1565b5b6020830191508360018202830111156117b4576117b36124ef565b5b9250929050565b6000813590506117ca816128c4565b92915050565b6000602082840312156117e6576117e56124fe565b5b60006117f484828501611624565b91505092915050565b600080600060408486031215611816576118156124fe565b5b600061182486828701611624565b935050602084013567ffffffffffffffff811115611845576118446124f9565b5b61185186828701611639565b92509250509250925092565b600080600080600060608688031215611879576118786124fe565b5b600061188788828901611624565b955050602086013567ffffffffffffffff8111156118a8576118a76124f9565b5b6118b488828901611639565b9450945050604086013567ffffffffffffffff8111156118d7576118d66124f9565b5b6118e38882890161168f565b92509250509295509295909350565b6000806000806060858703121561190c5761190b6124fe565b5b600061191a87828801611624565b945050602061192b878288016116e5565b935050604085013567ffffffffffffffff81111561194c5761194b6124f9565b5b6119588782880161170f565b925092505092959194509250565b60008060006040848603121561197f5761197e6124fe565b5b600061198d86828701611624565b935050602084013567ffffffffffffffff8111156119ae576119ad6124f9565b5b6119ba86828701611765565b92509250509250925092565b6000602082840312156119dc576119db6124fe565b5b60006119ea848285016116e5565b91505092915050565b600060208284031215611a0957611a086124fe565b5b6000611a17848285016116fa565b91505092915050565b60008060208385031215611a3757611a366124fe565b5b600083013567ffffffffffffffff811115611a5557611a546124f9565b5b611a6185828601611765565b92509250509250929050565b600060208284031215611a8357611a826124fe565b5b6000611a91848285016117bb565b91505092915050565b611aa38161226f565b82525050565b611aba611ab58261226f565b612416565b82525050565b611ac981612281565b82525050565b611ad88161228d565b82525050565b611aef611aea8261228d565b612428565b82525050565b6000611b0183856121c2565b9350611b0e838584612359565b611b1783612503565b840190509392505050565b6000611b2d826121b7565b611b3781856121c2565b9350611b47818560208601612368565b611b5081612503565b840191505092915050565b6000611b68601c836121d3565b9150611b738261252e565b601c82019050919050565b6000611b8b6019836121c2565b9150611b9682612557565b602082019050919050565b6000611bae6026836121c2565b9150611bb982612580565b604082019050919050565b6000611bd16015836121c2565b9150611bdc826125cf565b602082019050919050565b6000611bf4602b836121c2565b9150611bff826125f8565b604082019050919050565b6000611c176019836121c2565b9150611c2282612647565b602082019050919050565b6000611c3a6018836121c2565b9150611c4582612670565b602082019050919050565b6000611c5d6018836121c2565b9150611c6882612699565b602082019050919050565b6000611c80601d836121c2565b9150611c8b826126c2565b602082019050919050565b6000611ca36015836121c2565b9150611cae826126eb565b602082019050919050565b6000611cc66020836121c2565b9150611cd182612714565b602082019050919050565b6000611ce9602d836121c2565b9150611cf48261273d565b604082019050919050565b6000611d0c6014836121c2565b9150611d178261278c565b602082019050919050565b6000611d2f601c836121c2565b9150611d3a826127b5565b602082019050919050565b6000611d526018836121c2565b9150611d5d826127de565b602082019050919050565b6000611d756017836121c2565b9150611d8082612807565b602082019050919050565b6000611d986022836121c2565b9150611da382612830565b604082019050919050565b611db7816122e3565b82525050565b611dc6816122ed565b82525050565b6000611dd88284611aa9565b60148201915081905092915050565b6000611df282611b5b565b9150611dfe8284611ade565b60208201915081905092915050565b6000602082019050611e226000830184611a9a565b92915050565b6000604082019050611e3d6000830185611a9a565b611e4a6020830184611a9a565b9392505050565b6000604082019050611e666000830186611a9a565b8181036020830152611e79818486611af5565b9050949350505050565b6000602082019050611e986000830184611ac0565b92915050565b6000604082019050611eb36000830185611acf565b611ec06020830184611a9a565b9392505050565b6000608082019050611edc6000830187611acf565b611ee96020830186611dbd565b611ef66040830185611acf565b611f036060830184611acf565b95945050505050565b60006020820190508181036000830152611f268184611b22565b905092915050565b60006020820190508181036000830152611f4781611b7e565b9050919050565b60006020820190508181036000830152611f6781611ba1565b9050919050565b60006020820190508181036000830152611f8781611bc4565b9050919050565b60006020820190508181036000830152611fa781611be7565b9050919050565b60006020820190508181036000830152611fc781611c0a565b9050919050565b60006020820190508181036000830152611fe781611c2d565b9050919050565b6000602082019050818103600083015261200781611c50565b9050919050565b6000602082019050818103600083015261202781611c73565b9050919050565b6000602082019050818103600083015261204781611c96565b9050919050565b6000602082019050818103600083015261206781611cb9565b9050919050565b6000602082019050818103600083015261208781611cdc565b9050919050565b600060208201905081810360008301526120a781611cff565b9050919050565b600060208201905081810360008301526120c781611d22565b9050919050565b600060208201905081810360008301526120e781611d45565b9050919050565b6000602082019050818103600083015261210781611d68565b9050919050565b6000602082019050818103600083015261212781611d8b565b9050919050565b60006020820190506121436000830184611dae565b92915050565b60008083356001602003843603038112612166576121656124e0565b5b80840192508235915067ffffffffffffffff821115612188576121876124db565b5b6020830192506001820236038313156121a4576121a36124f4565b5b509250929050565b600082905092915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600080858511156121f2576121f16124ea565b5b83861115612203576122026124e5565b5b6001850283019150848603905094509492505050565b6000612224826122e3565b915061222f836122e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561226457612263612444565b5b828201905092915050565b600061227a826122c3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061230683836121ac565b82612311813561228d565b925060208210156123515761234c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612521565b831692505b505092915050565b82818337600083830152505050565b60005b8381101561238657808201518184015260208101905061236b565b83811115612395576000848401525b50505050565b600060028204905060018216806123b357607f821691505b602082108114156123c7576123c6612473565b5b50919050565b60006123d8826122e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561240b5761240a612444565b5b600182019050919050565b600061242182612432565b9050919050565b6000819050919050565b600061243d82612514565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600082821b905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4f776e65723a2054534d20646f6573206e6f7420657869737400000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f436869703a20696e76616c696420736967206076600000000000000000000000600082015250565b7f54534d3a206368697049647320616e64207369676e617475726573206c656e6760008201527f7468206d69736d61746368000000000000000000000000000000000000000000602082015250565b7f436869703a206368697020616c72656164792065786973747300000000000000600082015250565b7f436869703a206368697020646f65736e27742065786973740000000000000000600082015250565b7f54534d3a20696e646578206f7574206f6620626f756e64730000000000000000600082015250565b7f4f776e65723a2054534d20616c72656164792072656769737465726564000000600082015250565b7f436869703a20696e76616c696420736967206073600000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4f776e65723a206368697049647320616e64207369676e617475726573206c6560008201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b7f436869703a20696e76616c6964207369676e6572000000000000000000000000600082015250565b7f436869703a2063686970207369676e617475726520696e76616c696400000000600082015250565b7f436869703a20696e76616c696420736967206c656e6774680000000000000000600082015250565b7f54534d3a2074736d20646f6573206e6f74206578697374000000000000000000600082015250565b7f54534d3a2063616c6c6572206973206e6f742054534d206f7220617070726f7660008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6128888161226f565b811461289357600080fd5b50565b61289f8161228d565b81146128aa57600080fd5b50565b6128b681612297565b81146128c157600080fd5b50565b6128cd816122e3565b81146128d857600080fd5b5056fea2646970667358221220bade09347903113b68932e82e18eb0533491c685e8c9f563c7c12566e39bf59864736f6c63430008050033000000000000000000000000ab35d3476251c6b614dc2eb36380d7af1232d822000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063d143d21e11610071578063d143d21e1461031a578063daea85c514610336578063f2fde38b14610352578063fc2c2e251461036e578063fe44ba7f1461038a57610121565b8063715018a6146102765780638da5cb5b14610280578063a845891e1461029e578063b7e83957146102ce578063bc9300bc146102fe57610121565b806334bcec73116100f457806334bcec73146101d45780633b71cad0146101f05780633f41f6561461020e5780636381fcdd1461022a57806363d99f2c1461025a57610121565b806301ffc9a71461012657806308306567146101565780630f9be51c146101865780632cc7a4ce146101a4575b600080fd5b610140600480360381019061013b91906119f3565b6103ba565b60405161014d9190611e83565b60405180910390f35b610170600480360381019061016b91906117d0565b610424565b60405161017d9190611e0d565b60405180910390f35b61018e61049b565b60405161019b9190611f0c565b60405180910390f35b6101be60048036038101906101b991906117d0565b61052d565b6040516101cb9190611f0c565b60405180910390f35b6101ee60048036038101906101e991906117fd565b61060c565b005b6101f86106a6565b604051610205919061212e565b60405180910390f35b6102286004803603810190610223919061185d565b6106b0565b005b610244600480360381019061023f91906119c6565b6107b9565b6040516102519190611f0c565b60405180910390f35b610274600480360381019061026f9190611a20565b6107d3565b005b61027e610884565b005b610288610898565b6040516102959190611e0d565b60405180910390f35b6102b860048036038101906102b391906119c6565b6108c1565b6040516102c59190611e0d565b60405180910390f35b6102e860048036038101906102e39190611a6d565b610949565b6040516102f59190611e0d565b60405180910390f35b6103186004803603810190610313919061185d565b6109ca565b005b610334600480360381019061032f9190611966565b610a8e565b005b610350600480360381019061034b91906117d0565b610b0f565b005b61036c600480360381019061036791906117d0565b610bec565b005b610388600480360381019061038391906118f2565b610c70565b005b6103a4600480360381019061039f91906119c6565b610c8d565b6040516103b19190611e83565b60405180910390f35b60007fb147e4c5000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008161043081610c9f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6060600580546104aa9061239b565b80601f01602080910402602001604051908101604052809291908181526020018280546104d69061239b565b80156105235780601f106104f857610100808354040283529160200191610523565b820191906000526020600020905b81548152906001019060200180831161050657829003601f168201915b5050505050905090565b60608161053981610c9f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546105869061239b565b80601f01602080910402602001604051908101604052809291908181526020018280546105b29061239b565b80156105ff5780601f106105d4576101008083540402835291602001916105ff565b820191906000526020600020905b8154815290600101906020018083116105e257829003601f168201915b5050505050915050919050565b610614610cea565b61061d83610d68565b61065c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065390611f2e565b60405180910390fd5b60005b828290508110156106a05761068d84848484818110610681576106806124a2565b5b90506020020135610dc8565b8080610698906123cd565b91505061065f565b50505050565b6000600454905090565b6106b8610cea565b6106c185610d68565b610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f790611f2e565b60405180910390fd5b818190508484905014610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f9061206e565b60405180910390fd5b60005b848490508110156107b15761079e8686868481811061076d5761076c6124a2565b5b90506020020135858585818110610787576107866124a2565b5b90506020028101906107999190612149565b610ea3565b80806107a9906123cd565b91505061074b565b505050505050565b60606107cc6107c7836108c1565b61052d565b9050919050565b6107db610efe565b6107e481610c9f565b8282600160006107f2610efe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101919061083c929190611581565b507f3adb29fcd1e7fdc7b33cf5ab90f08845658f1dac367203673f7e4d37ef86510c610866610efe565b848460405161087793929190611e51565b60405180910390a1505050565b61088c610cea565b6108966000610f06565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006108cc82610fca565b61090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290611fce565b60405180910390fd5b6002600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600454821061098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690611fee565b60405180910390fd5b6003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b846109d481611039565b828290508585905014610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390611f8e565b60405180910390fd5b60005b85859050811015610a8557610a7287878784818110610a4157610a406124a2565b5b90506020020135868685818110610a5b57610a5a6124a2565b5b9050602002810190610a6d9190612149565b610ea3565b8080610a7d906123cd565b915050610a1f565b50505050505050565b610a96610cea565b610aa1838383611107565b8260036000600454815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600454610b049190612219565b600481905550505050565b610b17610efe565b610b2081610c9f565b8160016000610b2d610efe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd948d2cc3b872740335be8a37ccf228cc17495c3195dc4a75c161bf8dcd568e8610bd1610efe565b83604051610be0929190611e28565b60405180910390a15050565b610bf4610cea565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90611f4e565b60405180910390fd5b610c6d81610f06565b50565b83610c7a81611039565b610c8685858585610ea3565b5050505050565b6000610c9882610fca565b9050919050565b610ca881610d68565b610ce7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cde906120ee565b60405180910390fd5b50565b610cf2610efe565b73ffffffffffffffffffffffffffffffffffffffff16610d10610898565b73ffffffffffffffffffffffffffffffffffffffff1614610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9061204e565b60405180910390fd5b565b6000801515600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151514159050919050565b610dd181610fca565b15610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890611fae565b60405180910390fd5b816002600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffb004b53ebb7ed06e66f56949caf0ba61d9c4cf9909c2eece0347f65210435fd8183604051610e97929190611e9e565b60405180910390a15050565b610eaf848484846112be565b610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee5906120ae565b60405180910390fd5b610ef88484610dc8565b50505050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61104281610d68565b80156110c5575061105281610424565b73ffffffffffffffffffffffffffffffffffffffff16611070610efe565b73ffffffffffffffffffffffffffffffffffffffff1614806110c457508073ffffffffffffffffffffffffffffffffffffffff166110ac610efe565b73ffffffffffffffffffffffffffffffffffffffff16145b5b611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb9061210e565b60405180910390fd5b50565b61111083610d68565b15611150576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111479061200e565b60405180910390fd5b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101919061127d929190611581565b507fa0650bbfdaba1081dc90b421075337a344c6d3def1a3fdfc6190a4cc906701598383836040516112b193929190611e51565b60405180910390a1505050565b6000806000806000806041888890501461130d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611304906120ce565b60405180910390fd5b8787600090602092611321939291906121de565b9061132c91906122fa565b92508787602090604092611342939291906121de565b9061134d91906122fa565b915087876040818110611363576113626124a2565b5b9050013560f81c60f81b60f81c90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf9061202e565b60405180910390fd5b601b8160ff16141580156113f05750601c8160ff1614155b15611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790611f6e565b60405180910390fd5b896040516020016114419190611dcc565b604051602081830303815290604052805190602001206040516020016114679190611de7565b604051602081830303815290604052805190602001209350600184828585604051600081526020016040526040516114a29493929190611ec7565b6020604051602081039080840390855afa1580156114c4573d6000803e3d6000fd5b505050602060405103519450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115379061208e565b60405180910390fd5b8860001c73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161495505050505050949350505050565b82805461158d9061239b565b90600052602060002090601f0160209004810192826115af57600085556115f6565b82601f106115c857803560ff19168380011785556115f6565b828001600101855582156115f6579182015b828111156115f55782358255916020019190600101906115da565b5b5090506116039190611607565b5090565b5b80821115611620576000816000905550600101611608565b5090565b6000813590506116338161287f565b92915050565b60008083601f84011261164f5761164e6124d6565b5b8235905067ffffffffffffffff81111561166c5761166b6124d1565b5b602083019150836020820283011115611688576116876124ef565b5b9250929050565b60008083601f8401126116a5576116a46124d6565b5b8235905067ffffffffffffffff8111156116c2576116c16124d1565b5b6020830191508360208202830111156116de576116dd6124ef565b5b9250929050565b6000813590506116f481612896565b92915050565b600081359050611709816128ad565b92915050565b60008083601f840112611725576117246124d6565b5b8235905067ffffffffffffffff811115611742576117416124d1565b5b60208301915083600182028301111561175e5761175d6124ef565b5b9250929050565b60008083601f84011261177b5761177a6124d6565b5b8235905067ffffffffffffffff811115611798576117976124d1565b5b6020830191508360018202830111156117b4576117b36124ef565b5b9250929050565b6000813590506117ca816128c4565b92915050565b6000602082840312156117e6576117e56124fe565b5b60006117f484828501611624565b91505092915050565b600080600060408486031215611816576118156124fe565b5b600061182486828701611624565b935050602084013567ffffffffffffffff811115611845576118446124f9565b5b61185186828701611639565b92509250509250925092565b600080600080600060608688031215611879576118786124fe565b5b600061188788828901611624565b955050602086013567ffffffffffffffff8111156118a8576118a76124f9565b5b6118b488828901611639565b9450945050604086013567ffffffffffffffff8111156118d7576118d66124f9565b5b6118e38882890161168f565b92509250509295509295909350565b6000806000806060858703121561190c5761190b6124fe565b5b600061191a87828801611624565b945050602061192b878288016116e5565b935050604085013567ffffffffffffffff81111561194c5761194b6124f9565b5b6119588782880161170f565b925092505092959194509250565b60008060006040848603121561197f5761197e6124fe565b5b600061198d86828701611624565b935050602084013567ffffffffffffffff8111156119ae576119ad6124f9565b5b6119ba86828701611765565b92509250509250925092565b6000602082840312156119dc576119db6124fe565b5b60006119ea848285016116e5565b91505092915050565b600060208284031215611a0957611a086124fe565b5b6000611a17848285016116fa565b91505092915050565b60008060208385031215611a3757611a366124fe565b5b600083013567ffffffffffffffff811115611a5557611a546124f9565b5b611a6185828601611765565b92509250509250929050565b600060208284031215611a8357611a826124fe565b5b6000611a91848285016117bb565b91505092915050565b611aa38161226f565b82525050565b611aba611ab58261226f565b612416565b82525050565b611ac981612281565b82525050565b611ad88161228d565b82525050565b611aef611aea8261228d565b612428565b82525050565b6000611b0183856121c2565b9350611b0e838584612359565b611b1783612503565b840190509392505050565b6000611b2d826121b7565b611b3781856121c2565b9350611b47818560208601612368565b611b5081612503565b840191505092915050565b6000611b68601c836121d3565b9150611b738261252e565b601c82019050919050565b6000611b8b6019836121c2565b9150611b9682612557565b602082019050919050565b6000611bae6026836121c2565b9150611bb982612580565b604082019050919050565b6000611bd16015836121c2565b9150611bdc826125cf565b602082019050919050565b6000611bf4602b836121c2565b9150611bff826125f8565b604082019050919050565b6000611c176019836121c2565b9150611c2282612647565b602082019050919050565b6000611c3a6018836121c2565b9150611c4582612670565b602082019050919050565b6000611c5d6018836121c2565b9150611c6882612699565b602082019050919050565b6000611c80601d836121c2565b9150611c8b826126c2565b602082019050919050565b6000611ca36015836121c2565b9150611cae826126eb565b602082019050919050565b6000611cc66020836121c2565b9150611cd182612714565b602082019050919050565b6000611ce9602d836121c2565b9150611cf48261273d565b604082019050919050565b6000611d0c6014836121c2565b9150611d178261278c565b602082019050919050565b6000611d2f601c836121c2565b9150611d3a826127b5565b602082019050919050565b6000611d526018836121c2565b9150611d5d826127de565b602082019050919050565b6000611d756017836121c2565b9150611d8082612807565b602082019050919050565b6000611d986022836121c2565b9150611da382612830565b604082019050919050565b611db7816122e3565b82525050565b611dc6816122ed565b82525050565b6000611dd88284611aa9565b60148201915081905092915050565b6000611df282611b5b565b9150611dfe8284611ade565b60208201915081905092915050565b6000602082019050611e226000830184611a9a565b92915050565b6000604082019050611e3d6000830185611a9a565b611e4a6020830184611a9a565b9392505050565b6000604082019050611e666000830186611a9a565b8181036020830152611e79818486611af5565b9050949350505050565b6000602082019050611e986000830184611ac0565b92915050565b6000604082019050611eb36000830185611acf565b611ec06020830184611a9a565b9392505050565b6000608082019050611edc6000830187611acf565b611ee96020830186611dbd565b611ef66040830185611acf565b611f036060830184611acf565b95945050505050565b60006020820190508181036000830152611f268184611b22565b905092915050565b60006020820190508181036000830152611f4781611b7e565b9050919050565b60006020820190508181036000830152611f6781611ba1565b9050919050565b60006020820190508181036000830152611f8781611bc4565b9050919050565b60006020820190508181036000830152611fa781611be7565b9050919050565b60006020820190508181036000830152611fc781611c0a565b9050919050565b60006020820190508181036000830152611fe781611c2d565b9050919050565b6000602082019050818103600083015261200781611c50565b9050919050565b6000602082019050818103600083015261202781611c73565b9050919050565b6000602082019050818103600083015261204781611c96565b9050919050565b6000602082019050818103600083015261206781611cb9565b9050919050565b6000602082019050818103600083015261208781611cdc565b9050919050565b600060208201905081810360008301526120a781611cff565b9050919050565b600060208201905081810360008301526120c781611d22565b9050919050565b600060208201905081810360008301526120e781611d45565b9050919050565b6000602082019050818103600083015261210781611d68565b9050919050565b6000602082019050818103600083015261212781611d8b565b9050919050565b60006020820190506121436000830184611dae565b92915050565b60008083356001602003843603038112612166576121656124e0565b5b80840192508235915067ffffffffffffffff821115612188576121876124db565b5b6020830192506001820236038313156121a4576121a36124f4565b5b509250929050565b600082905092915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600080858511156121f2576121f16124ea565b5b83861115612203576122026124e5565b5b6001850283019150848603905094509492505050565b6000612224826122e3565b915061222f836122e3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561226457612263612444565b5b828201905092915050565b600061227a826122c3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061230683836121ac565b82612311813561228d565b925060208210156123515761234c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612521565b831692505b505092915050565b82818337600083830152505050565b60005b8381101561238657808201518184015260208101905061236b565b83811115612395576000848401525b50505050565b600060028204905060018216806123b357607f821691505b602082108114156123c7576123c6612473565b5b50919050565b60006123d8826122e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561240b5761240a612444565b5b600182019050919050565b600061242182612432565b9050919050565b6000819050919050565b600061243d82612514565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600082821b905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4f776e65723a2054534d20646f6573206e6f7420657869737400000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f436869703a20696e76616c696420736967206076600000000000000000000000600082015250565b7f54534d3a206368697049647320616e64207369676e617475726573206c656e6760008201527f7468206d69736d61746368000000000000000000000000000000000000000000602082015250565b7f436869703a206368697020616c72656164792065786973747300000000000000600082015250565b7f436869703a206368697020646f65736e27742065786973740000000000000000600082015250565b7f54534d3a20696e646578206f7574206f6620626f756e64730000000000000000600082015250565b7f4f776e65723a2054534d20616c72656164792072656769737465726564000000600082015250565b7f436869703a20696e76616c696420736967206073600000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4f776e65723a206368697049647320616e64207369676e617475726573206c6560008201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b7f436869703a20696e76616c6964207369676e6572000000000000000000000000600082015250565b7f436869703a2063686970207369676e617475726520696e76616c696400000000600082015250565b7f436869703a20696e76616c696420736967206c656e6774680000000000000000600082015250565b7f54534d3a2074736d20646f6573206e6f74206578697374000000000000000000600082015250565b7f54534d3a2063616c6c6572206973206e6f742054534d206f7220617070726f7660008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6128888161226f565b811461289357600080fd5b50565b61289f8161228d565b81146128aa57600080fd5b50565b6128b681612297565b81146128c157600080fd5b50565b6128cd816122e3565b81146128d857600080fd5b5056fea2646970667358221220bade09347903113b68932e82e18eb0533491c685e8c9f563c7c12566e39bf59864736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ab35d3476251c6b614dc2eb36380d7af1232d822000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0xAB35D3476251C6b614dC2eb36380D7AF1232D822
Arg [1] : _registryVersion (string): 1
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000ab35d3476251c6b614dc2eb36380d7af1232d822
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 3100000000000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
8154:6907:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8854:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11897;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9016:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11560:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9402:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11278:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9705:454;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14786:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11719:170;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6715:103;;;:::i;:::-;;6067:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14592:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11378:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12455:396;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9147:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12059:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6973:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12243:206;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14918:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8854:156;8938:4;8976:28;8961:43;;;:11;:43;;;;8954:50;;8854:156;;;:::o;11897:::-;11994:7;11973:10;10261:21;10271:10;10261:9;:21::i;:::-;12020:5:::1;:17;12026:10;12020:17;;;;;;;;;;;;;;;:27;;;;;;;;;;;;12013:34;;11897:156:::0;;;;:::o;9016:104::-;9075:13;9107:7;9100:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9016:104;:::o;11560:153::-;11652:13;11631:10;10261:21;10271:10;10261:9;:21::i;:::-;11685:5:::1;:17;11691:10;11685:17;;;;;;;;;;;;;;;:22;;11678:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11560:153:::0;;;;:::o;9402:297::-;5953:13;:11;:13::i;:::-;9537:22:::1;9548:10;9537;:22::i;:::-;9529:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9600:9;9596:98;9619:7;;:14;;9615:1;:18;9596:98;;;9654:32;9663:10;9675:7;;9683:1;9675:10;;;;;;;:::i;:::-;;;;;;;;9654:8;:32::i;:::-;9635:3;;;;;:::i;:::-;;;;9596:98;;;;9402:297:::0;;;:::o;11278:94::-;11331:7;11357:9;;11350:16;;11278:94;:::o;9705:454::-;5953:13;:11;:13::i;:::-;9878:22:::1;9889:10;9878;:22::i;:::-;9870:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9963:10;;:17;;9945:7;;:14;;:35;9937:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;10041:9;10037:117;10060:7;;:14;;10056:1;:18;10037:117;;;10095:51;10108:10;10120:7;;10128:1;10120:10;;;;;;;:::i;:::-;;;;;;;;10132;;10143:1;10132:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;10095:12;:51::i;:::-;10076:3;;;;;:::i;:::-;;;;10037:117;;;;9705:454:::0;;;;;:::o;14786:126::-;14851:13;14883:23;14890:15;14898:6;14890:7;:15::i;:::-;14883:6;:23::i;:::-;14876:30;;14786:126;;;:::o;11719:170::-;11789:12;:10;:12::i;:::-;10261:21;10271:10;10261:9;:21::i;:::-;11840:3:::1;;11813:5;:19;11819:12;:10;:12::i;:::-;11813:19;;;;;;;;;;;;;;;:24;;:30;;;;;;;:::i;:::-;;11855:28;11865:12;:10;:12::i;:::-;11879:3;;11855:28;;;;;;;;:::i;:::-;;;;;;;;11719:170:::0;;;:::o;6715:103::-;5953:13;:11;:13::i;:::-;6780:30:::1;6807:1;6780:18;:30::i;:::-;6715:103::o:0;6067:87::-;6113:7;6140:6;;;;;;;;;;;6133:13;;6067:87;:::o;14592:186::-;14655:7;14682:19;14694:6;14682:11;:19::i;:::-;14674:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14744:8;:16;14753:6;14744:16;;;;;;;;;;;:28;;;;;;;;;;;;14737:35;;14592:186;;;:::o;11378:176::-;11445:7;11480:9;;11472:5;:17;11464:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11532:9;:16;11542:5;11532:16;;;;;;;;;;;;;;;;;;;;;11525:23;;11378:176;;;:::o;12455:396::-;12608:10;10492:31;10512:10;10492:19;:31::i;:::-;12657:10:::1;;:17;;12639:7;;:14;;:35;12631:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12733:9;12729:117;12752:7;;:14;;12748:1;:18;12729:117;;;12787:51;12800:10;12812:7;;12820:1;12812:10;;;;;;;:::i;:::-;;;;;;;;12824;;12835:1;12824:13;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;12787:12;:51::i;:::-;12768:3;;;;;:::i;:::-;;;;12729:117;;;;12455:396:::0;;;;;;:::o;9147:249::-;5953:13;:11;:13::i;:::-;9260:29:::1;9273:10;9285:3;;9260:12;:29::i;:::-;9348:10;9325:9;:20;9335:9;;9325:20;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;9389:1;9377:9;;:13;;;;:::i;:::-;9365:9;:25;;;;9147:249:::0;;;:::o;12059:178::-;12120:12;:10;:12::i;:::-;10261:21;10271:10;10261:9;:21::i;:::-;12176:8:::1;12144:5;:19;12150:12;:10;:12::i;:::-;12144:19;;;;;;;;;;;;;;;:29;;;:40;;;;;;;;;;;;;;;;;;12196:35;12208:12;:10;:12::i;:::-;12222:8;12196:35;;;;;;;:::i;:::-;;;;;;;;12059:178:::0;;:::o;6973:201::-;5953:13;:11;:13::i;:::-;7082:1:::1;7062:22;;:8;:22;;;;7054:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7138:28;7157:8;7138:18;:28::i;:::-;6973:201:::0;:::o;12243:206::-;12378:10;10492:31;10512:10;10492:19;:31::i;:::-;12400:43:::1;12413:10;12425:6;12433:9;;12400:12;:43::i;:::-;12243:206:::0;;;;;:::o;14918:114::-;14984:4;15007:19;15019:6;15007:11;:19::i;:::-;15000:26;;14918:114;;;:::o;10302:127::-;10373:22;10384:10;10373;:22::i;:::-;10365:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10302:127;:::o;6232:132::-;6307:12;:10;:12::i;:::-;6296:23;;:7;:5;:7::i;:::-;:23;;;6288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6232:132::o;11138:::-;11201:4;11259:5;11224:40;;:5;:17;11230:10;11224:17;;;;;;;;;;;;;;;:31;;;;;;;;;;;;:40;;;;11217:47;;11138:132;;;:::o;14355:231::-;14437:19;14449:6;14437:11;:19::i;:::-;14436:20;14428:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14524:10;14493:8;:16;14502:6;14493:16;;;;;;;;;;;:28;;;:41;;;;;;;;;;;;;;;;;;14546:34;14561:6;14569:10;14546:34;;;;;;;:::i;:::-;;;;;;;;14355:231;;:::o;14112:237::-;14223:52;14245:10;14257:6;14265:9;;14223:21;:52::i;:::-;14215:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;14315:28;14324:10;14336:6;14315:8;:28::i;:::-;14112:237;;;;:::o;4635:98::-;4688:7;4715:10;4708:17;;4635:98;:::o;7334:191::-;7408:16;7427:6;;;;;;;;;;;7408:25;;7453:8;7444:6;;:17;;;;;;;;;;;;;;;;;;7508:8;7477:40;;7498:8;7477:40;;;;;;;;;;;;7397:128;7334:191;:::o;12902:131::-;12962:4;13025:1;12985:42;;:8;:16;12994:6;12985:16;;;;;;;;;;;:28;;;;;;;;;;;;:42;;;;12978:49;;12902:131;;;:::o;10543:249::-;10624:22;10635:10;10624;:22::i;:::-;:116;;;;;10676:23;10688:10;10676:11;:23::i;:::-;10660:39;;:12;:10;:12::i;:::-;:39;;;10659:80;;;;10728:10;10712:26;;:12;:10;:12::i;:::-;:26;;;10659:80;10624:116;10616:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;10543:249;:::o;10798:334::-;10901:22;10912:10;10901;:22::i;:::-;10900:23;10892:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10998:4;10964:5;:17;10970:10;10964:17;;;;;;;;;;;;;;;:31;;;:38;;;;;;;;;;;;;;;;;;11047:1;11009:5;:17;11015:10;11009:17;;;;;;;;;;;;;;;:27;;;:40;;;;;;;;;;;;;;;;;;11081:3;;11056:5;:17;11062:10;11056:17;;;;;;;;;;;;;;;:22;;:28;;;;;;;:::i;:::-;;11096:30;11110:10;11122:3;;11096:30;;;;;;;;:::i;:::-;;;;;;;;10798:334;;;:::o;13039:1067::-;13155:4;13171:15;13193;13215:10;13232;13249:8;13352:2;13332:9;;:16;;:22;13324:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13433:9;;13443:1;13433:15;13445:2;13433:15;;;;;;;:::i;:::-;13425:24;;;;;:::i;:::-;13420:29;;13469:9;;13479:2;13469:16;13482:2;13469:16;;;;;;;:::i;:::-;13461:25;;;;;:::i;:::-;13456:30;;13504:9;;13514:2;13504:13;;;;;;;:::i;:::-;;;;;;;;;;13498:20;;13493:25;;13552:66;13538:2;13530:11;;:88;13527:146;;;13634:31;;;;;;;;;;:::i;:::-;;;;;;;;13527:146;13690:2;13684;:8;;;;:20;;;;;13702:2;13696;:8;;;;13684:20;13681:78;;;13720:31;;;;;;;;;;:::i;:::-;;;;;;;;13681:78;13894:10;13877:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;13867:39;;;;;;13795:120;;;;;;;;:::i;:::-;;;;;;;;;;;;;13777:145;;;;;;13767:155;;13941:30;13951:7;13960:2;13964;13968;13941:30;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13931:40;;14011:3;13992:23;;:7;:23;;;;13984:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14091:6;14083:15;;14056:44;;:7;:44;;;14049:51;;;;;;;13039:1067;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;169:568::-;242:8;252:6;302:3;295:4;287:6;283:17;279:27;269:2;;310:79;;:::i;:::-;269:2;423:6;410:20;400:30;;453:18;445:6;442:30;439:2;;;475:79;;:::i;:::-;439:2;589:4;581:6;577:17;565:29;;643:3;635:4;627:6;623:17;613:8;609:32;606:41;603:2;;;650:79;;:::i;:::-;603:2;259:478;;;;;:::o;758:579::-;842:8;852:6;902:3;895:4;887:6;883:17;879:27;869:2;;910:79;;:::i;:::-;869:2;1023:6;1010:20;1000:30;;1053:18;1045:6;1042:30;1039:2;;;1075:79;;:::i;:::-;1039:2;1189:4;1181:6;1177:17;1165:29;;1243:3;1235:4;1227:6;1223:17;1213:8;1209:32;1206:41;1203:2;;;1250:79;;:::i;:::-;1203:2;859:478;;;;;:::o;1343:139::-;1389:5;1427:6;1414:20;1405:29;;1443:33;1470:5;1443:33;:::i;:::-;1395:87;;;;:::o;1488:137::-;1533:5;1571:6;1558:20;1549:29;;1587:32;1613:5;1587:32;:::i;:::-;1539:86;;;;:::o;1644:552::-;1701:8;1711:6;1761:3;1754:4;1746:6;1742:17;1738:27;1728:2;;1769:79;;:::i;:::-;1728:2;1882:6;1869:20;1859:30;;1912:18;1904:6;1901:30;1898:2;;;1934:79;;:::i;:::-;1898:2;2048:4;2040:6;2036:17;2024:29;;2102:3;2094:4;2086:6;2082:17;2072:8;2068:32;2065:41;2062:2;;;2109:79;;:::i;:::-;2062:2;1718:478;;;;;:::o;2216:553::-;2274:8;2284:6;2334:3;2327:4;2319:6;2315:17;2311:27;2301:2;;2342:79;;:::i;:::-;2301:2;2455:6;2442:20;2432:30;;2485:18;2477:6;2474:30;2471:2;;;2507:79;;:::i;:::-;2471:2;2621:4;2613:6;2609:17;2597:29;;2675:3;2667:4;2659:6;2655:17;2645:8;2641:32;2638:41;2635:2;;;2682:79;;:::i;:::-;2635:2;2291:478;;;;;:::o;2775:139::-;2821:5;2859:6;2846:20;2837:29;;2875:33;2902:5;2875:33;:::i;:::-;2827:87;;;;:::o;2920:329::-;2979:6;3028:2;3016:9;3007:7;3003:23;2999:32;2996:2;;;3034:79;;:::i;:::-;2996:2;3154:1;3179:53;3224:7;3215:6;3204:9;3200:22;3179:53;:::i;:::-;3169:63;;3125:117;2986:263;;;;:::o;3255:704::-;3350:6;3358;3366;3415:2;3403:9;3394:7;3390:23;3386:32;3383:2;;;3421:79;;:::i;:::-;3383:2;3541:1;3566:53;3611:7;3602:6;3591:9;3587:22;3566:53;:::i;:::-;3556:63;;3512:117;3696:2;3685:9;3681:18;3668:32;3727:18;3719:6;3716:30;3713:2;;;3749:79;;:::i;:::-;3713:2;3862:80;3934:7;3925:6;3914:9;3910:22;3862:80;:::i;:::-;3844:98;;;;3639:313;3373:586;;;;;:::o;3965:1101::-;4107:6;4115;4123;4131;4139;4188:2;4176:9;4167:7;4163:23;4159:32;4156:2;;;4194:79;;:::i;:::-;4156:2;4314:1;4339:53;4384:7;4375:6;4364:9;4360:22;4339:53;:::i;:::-;4329:63;;4285:117;4469:2;4458:9;4454:18;4441:32;4500:18;4492:6;4489:30;4486:2;;;4522:79;;:::i;:::-;4486:2;4635:80;4707:7;4698:6;4687:9;4683:22;4635:80;:::i;:::-;4617:98;;;;4412:313;4792:2;4781:9;4777:18;4764:32;4823:18;4815:6;4812:30;4809:2;;;4845:79;;:::i;:::-;4809:2;4958:91;5041:7;5032:6;5021:9;5017:22;4958:91;:::i;:::-;4940:109;;;;4735:324;4146:920;;;;;;;;:::o;5072:817::-;5160:6;5168;5176;5184;5233:2;5221:9;5212:7;5208:23;5204:32;5201:2;;;5239:79;;:::i;:::-;5201:2;5359:1;5384:53;5429:7;5420:6;5409:9;5405:22;5384:53;:::i;:::-;5374:63;;5330:117;5486:2;5512:53;5557:7;5548:6;5537:9;5533:22;5512:53;:::i;:::-;5502:63;;5457:118;5642:2;5631:9;5627:18;5614:32;5673:18;5665:6;5662:30;5659:2;;;5695:79;;:::i;:::-;5659:2;5808:64;5864:7;5855:6;5844:9;5840:22;5808:64;:::i;:::-;5790:82;;;;5585:297;5191:698;;;;;;;:::o;5895:674::-;5975:6;5983;5991;6040:2;6028:9;6019:7;6015:23;6011:32;6008:2;;;6046:79;;:::i;:::-;6008:2;6166:1;6191:53;6236:7;6227:6;6216:9;6212:22;6191:53;:::i;:::-;6181:63;;6137:117;6321:2;6310:9;6306:18;6293:32;6352:18;6344:6;6341:30;6338:2;;;6374:79;;:::i;:::-;6338:2;6487:65;6544:7;6535:6;6524:9;6520:22;6487:65;:::i;:::-;6469:83;;;;6264:298;5998:571;;;;;:::o;6575:329::-;6634:6;6683:2;6671:9;6662:7;6658:23;6654:32;6651:2;;;6689:79;;:::i;:::-;6651:2;6809:1;6834:53;6879:7;6870:6;6859:9;6855:22;6834:53;:::i;:::-;6824:63;;6780:117;6641:263;;;;:::o;6910:327::-;6968:6;7017:2;7005:9;6996:7;6992:23;6988:32;6985:2;;;7023:79;;:::i;:::-;6985:2;7143:1;7168:52;7212:7;7203:6;7192:9;7188:22;7168:52;:::i;:::-;7158:62;;7114:116;6975:262;;;;:::o;7243:529::-;7314:6;7322;7371:2;7359:9;7350:7;7346:23;7342:32;7339:2;;;7377:79;;:::i;:::-;7339:2;7525:1;7514:9;7510:17;7497:31;7555:18;7547:6;7544:30;7541:2;;;7577:79;;:::i;:::-;7541:2;7690:65;7747:7;7738:6;7727:9;7723:22;7690:65;:::i;:::-;7672:83;;;;7468:297;7329:443;;;;;:::o;7778:329::-;7837:6;7886:2;7874:9;7865:7;7861:23;7857:32;7854:2;;;7892:79;;:::i;:::-;7854:2;8012:1;8037:53;8082:7;8073:6;8062:9;8058:22;8037:53;:::i;:::-;8027:63;;7983:117;7844:263;;;;:::o;8113:118::-;8200:24;8218:5;8200:24;:::i;:::-;8195:3;8188:37;8178:53;;:::o;8237:157::-;8342:45;8362:24;8380:5;8362:24;:::i;:::-;8342:45;:::i;:::-;8337:3;8330:58;8320:74;;:::o;8400:109::-;8481:21;8496:5;8481:21;:::i;:::-;8476:3;8469:34;8459:50;;:::o;8515:118::-;8602:24;8620:5;8602:24;:::i;:::-;8597:3;8590:37;8580:53;;:::o;8639:157::-;8744:45;8764:24;8782:5;8764:24;:::i;:::-;8744:45;:::i;:::-;8739:3;8732:58;8722:74;;:::o;8826:304::-;8924:3;8945:71;9009:6;9004:3;8945:71;:::i;:::-;8938:78;;9026:43;9062:6;9057:3;9050:5;9026:43;:::i;:::-;9094:29;9116:6;9094:29;:::i;:::-;9089:3;9085:39;9078:46;;8928:202;;;;;:::o;9136:364::-;9224:3;9252:39;9285:5;9252:39;:::i;:::-;9307:71;9371:6;9366:3;9307:71;:::i;:::-;9300:78;;9387:52;9432:6;9427:3;9420:4;9413:5;9409:16;9387:52;:::i;:::-;9464:29;9486:6;9464:29;:::i;:::-;9459:3;9455:39;9448:46;;9228:272;;;;;:::o;9506:402::-;9666:3;9687:85;9769:2;9764:3;9687:85;:::i;:::-;9680:92;;9781:93;9870:3;9781:93;:::i;:::-;9899:2;9894:3;9890:12;9883:19;;9670:238;;;:::o;9914:366::-;10056:3;10077:67;10141:2;10136:3;10077:67;:::i;:::-;10070:74;;10153:93;10242:3;10153:93;:::i;:::-;10271:2;10266:3;10262:12;10255:19;;10060:220;;;:::o;10286:366::-;10428:3;10449:67;10513:2;10508:3;10449:67;:::i;:::-;10442:74;;10525:93;10614:3;10525:93;:::i;:::-;10643:2;10638:3;10634:12;10627:19;;10432:220;;;:::o;10658:366::-;10800:3;10821:67;10885:2;10880:3;10821:67;:::i;:::-;10814:74;;10897:93;10986:3;10897:93;:::i;:::-;11015:2;11010:3;11006:12;10999:19;;10804:220;;;:::o;11030:366::-;11172:3;11193:67;11257:2;11252:3;11193:67;:::i;:::-;11186:74;;11269:93;11358:3;11269:93;:::i;:::-;11387:2;11382:3;11378:12;11371:19;;11176:220;;;:::o;11402:366::-;11544:3;11565:67;11629:2;11624:3;11565:67;:::i;:::-;11558:74;;11641:93;11730:3;11641:93;:::i;:::-;11759:2;11754:3;11750:12;11743:19;;11548:220;;;:::o;11774:366::-;11916:3;11937:67;12001:2;11996:3;11937:67;:::i;:::-;11930:74;;12013:93;12102:3;12013:93;:::i;:::-;12131:2;12126:3;12122:12;12115:19;;11920:220;;;:::o;12146:366::-;12288:3;12309:67;12373:2;12368:3;12309:67;:::i;:::-;12302:74;;12385:93;12474:3;12385:93;:::i;:::-;12503:2;12498:3;12494:12;12487:19;;12292:220;;;:::o;12518:366::-;12660:3;12681:67;12745:2;12740:3;12681:67;:::i;:::-;12674:74;;12757:93;12846:3;12757:93;:::i;:::-;12875:2;12870:3;12866:12;12859:19;;12664:220;;;:::o;12890:366::-;13032:3;13053:67;13117:2;13112:3;13053:67;:::i;:::-;13046:74;;13129:93;13218:3;13129:93;:::i;:::-;13247:2;13242:3;13238:12;13231:19;;13036:220;;;:::o;13262:366::-;13404:3;13425:67;13489:2;13484:3;13425:67;:::i;:::-;13418:74;;13501:93;13590:3;13501:93;:::i;:::-;13619:2;13614:3;13610:12;13603:19;;13408:220;;;:::o;13634:366::-;13776:3;13797:67;13861:2;13856:3;13797:67;:::i;:::-;13790:74;;13873:93;13962:3;13873:93;:::i;:::-;13991:2;13986:3;13982:12;13975:19;;13780:220;;;:::o;14006:366::-;14148:3;14169:67;14233:2;14228:3;14169:67;:::i;:::-;14162:74;;14245:93;14334:3;14245:93;:::i;:::-;14363:2;14358:3;14354:12;14347:19;;14152:220;;;:::o;14378:366::-;14520:3;14541:67;14605:2;14600:3;14541:67;:::i;:::-;14534:74;;14617:93;14706:3;14617:93;:::i;:::-;14735:2;14730:3;14726:12;14719:19;;14524:220;;;:::o;14750:366::-;14892:3;14913:67;14977:2;14972:3;14913:67;:::i;:::-;14906:74;;14989:93;15078:3;14989:93;:::i;:::-;15107:2;15102:3;15098:12;15091:19;;14896:220;;;:::o;15122:366::-;15264:3;15285:67;15349:2;15344:3;15285:67;:::i;:::-;15278:74;;15361:93;15450:3;15361:93;:::i;:::-;15479:2;15474:3;15470:12;15463:19;;15268:220;;;:::o;15494:366::-;15636:3;15657:67;15721:2;15716:3;15657:67;:::i;:::-;15650:74;;15733:93;15822:3;15733:93;:::i;:::-;15851:2;15846:3;15842:12;15835:19;;15640:220;;;:::o;15866:118::-;15953:24;15971:5;15953:24;:::i;:::-;15948:3;15941:37;15931:53;;:::o;15990:112::-;16073:22;16089:5;16073:22;:::i;:::-;16068:3;16061:35;16051:51;;:::o;16108:256::-;16220:3;16235:75;16306:3;16297:6;16235:75;:::i;:::-;16335:2;16330:3;16326:12;16319:19;;16355:3;16348:10;;16224:140;;;;:::o;16370:522::-;16583:3;16605:148;16749:3;16605:148;:::i;:::-;16598:155;;16763:75;16834:3;16825:6;16763:75;:::i;:::-;16863:2;16858:3;16854:12;16847:19;;16883:3;16876:10;;16587:305;;;;:::o;16898:222::-;16991:4;17029:2;17018:9;17014:18;17006:26;;17042:71;17110:1;17099:9;17095:17;17086:6;17042:71;:::i;:::-;16996:124;;;;:::o;17126:332::-;17247:4;17285:2;17274:9;17270:18;17262:26;;17298:71;17366:1;17355:9;17351:17;17342:6;17298:71;:::i;:::-;17379:72;17447:2;17436:9;17432:18;17423:6;17379:72;:::i;:::-;17252:206;;;;;:::o;17464:443::-;17615:4;17653:2;17642:9;17638:18;17630:26;;17666:71;17734:1;17723:9;17719:17;17710:6;17666:71;:::i;:::-;17784:9;17778:4;17774:20;17769:2;17758:9;17754:18;17747:48;17812:88;17895:4;17886:6;17878;17812:88;:::i;:::-;17804:96;;17620:287;;;;;;:::o;17913:210::-;18000:4;18038:2;18027:9;18023:18;18015:26;;18051:65;18113:1;18102:9;18098:17;18089:6;18051:65;:::i;:::-;18005:118;;;;:::o;18129:332::-;18250:4;18288:2;18277:9;18273:18;18265:26;;18301:71;18369:1;18358:9;18354:17;18345:6;18301:71;:::i;:::-;18382:72;18450:2;18439:9;18435:18;18426:6;18382:72;:::i;:::-;18255:206;;;;;:::o;18467:545::-;18640:4;18678:3;18667:9;18663:19;18655:27;;18692:71;18760:1;18749:9;18745:17;18736:6;18692:71;:::i;:::-;18773:68;18837:2;18826:9;18822:18;18813:6;18773:68;:::i;:::-;18851:72;18919:2;18908:9;18904:18;18895:6;18851:72;:::i;:::-;18933;19001:2;18990:9;18986:18;18977:6;18933:72;:::i;:::-;18645:367;;;;;;;:::o;19018:313::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19218:9;19212:4;19208:20;19204:1;19193:9;19189:17;19182:47;19246:78;19319:4;19310:6;19246:78;:::i;:::-;19238:86;;19136:195;;;;:::o;19337:419::-;19503:4;19541:2;19530:9;19526:18;19518:26;;19590:9;19584:4;19580:20;19576:1;19565:9;19561:17;19554:47;19618:131;19744:4;19618:131;:::i;:::-;19610:139;;19508:248;;;:::o;19762:419::-;19928:4;19966:2;19955:9;19951:18;19943:26;;20015:9;20009:4;20005:20;20001:1;19990:9;19986:17;19979:47;20043:131;20169:4;20043:131;:::i;:::-;20035:139;;19933:248;;;:::o;20187:419::-;20353:4;20391:2;20380:9;20376:18;20368:26;;20440:9;20434:4;20430:20;20426:1;20415:9;20411:17;20404:47;20468:131;20594:4;20468:131;:::i;:::-;20460:139;;20358:248;;;:::o;20612:419::-;20778:4;20816:2;20805:9;20801:18;20793:26;;20865:9;20859:4;20855:20;20851:1;20840:9;20836:17;20829:47;20893:131;21019:4;20893:131;:::i;:::-;20885:139;;20783:248;;;:::o;21037:419::-;21203:4;21241:2;21230:9;21226:18;21218:26;;21290:9;21284:4;21280:20;21276:1;21265:9;21261:17;21254:47;21318:131;21444:4;21318:131;:::i;:::-;21310:139;;21208:248;;;:::o;21462:419::-;21628:4;21666:2;21655:9;21651:18;21643:26;;21715:9;21709:4;21705:20;21701:1;21690:9;21686:17;21679:47;21743:131;21869:4;21743:131;:::i;:::-;21735:139;;21633:248;;;:::o;21887:419::-;22053:4;22091:2;22080:9;22076:18;22068:26;;22140:9;22134:4;22130:20;22126:1;22115:9;22111:17;22104:47;22168:131;22294:4;22168:131;:::i;:::-;22160:139;;22058:248;;;:::o;22312:419::-;22478:4;22516:2;22505:9;22501:18;22493:26;;22565:9;22559:4;22555:20;22551:1;22540:9;22536:17;22529:47;22593:131;22719:4;22593:131;:::i;:::-;22585:139;;22483:248;;;:::o;22737:419::-;22903:4;22941:2;22930:9;22926:18;22918:26;;22990:9;22984:4;22980:20;22976:1;22965:9;22961:17;22954:47;23018:131;23144:4;23018:131;:::i;:::-;23010:139;;22908:248;;;:::o;23162:419::-;23328:4;23366:2;23355:9;23351:18;23343:26;;23415:9;23409:4;23405:20;23401:1;23390:9;23386:17;23379:47;23443:131;23569:4;23443:131;:::i;:::-;23435:139;;23333:248;;;:::o;23587:419::-;23753:4;23791:2;23780:9;23776:18;23768:26;;23840:9;23834:4;23830:20;23826:1;23815:9;23811:17;23804:47;23868:131;23994:4;23868:131;:::i;:::-;23860:139;;23758:248;;;:::o;24012:419::-;24178:4;24216:2;24205:9;24201:18;24193:26;;24265:9;24259:4;24255:20;24251:1;24240:9;24236:17;24229:47;24293:131;24419:4;24293:131;:::i;:::-;24285:139;;24183:248;;;:::o;24437:419::-;24603:4;24641:2;24630:9;24626:18;24618:26;;24690:9;24684:4;24680:20;24676:1;24665:9;24661:17;24654:47;24718:131;24844:4;24718:131;:::i;:::-;24710:139;;24608:248;;;:::o;24862:419::-;25028:4;25066:2;25055:9;25051:18;25043:26;;25115:9;25109:4;25105:20;25101:1;25090:9;25086:17;25079:47;25143:131;25269:4;25143:131;:::i;:::-;25135:139;;25033:248;;;:::o;25287:419::-;25453:4;25491:2;25480:9;25476:18;25468:26;;25540:9;25534:4;25530:20;25526:1;25515:9;25511:17;25504:47;25568:131;25694:4;25568:131;:::i;:::-;25560:139;;25458:248;;;:::o;25712:419::-;25878:4;25916:2;25905:9;25901:18;25893:26;;25965:9;25959:4;25955:20;25951:1;25940:9;25936:17;25929:47;25993:131;26119:4;25993:131;:::i;:::-;25985:139;;25883:248;;;:::o;26137:222::-;26230:4;26268:2;26257:9;26253:18;26245:26;;26281:71;26349:1;26338:9;26334:17;26325:6;26281:71;:::i;:::-;26235:124;;;;:::o;26365:724::-;26442:4;26448:6;26504:11;26491:25;26604:1;26598:4;26594:12;26583:8;26567:14;26563:29;26559:48;26539:18;26535:73;26525:2;;26612:79;;:::i;:::-;26525:2;26724:18;26714:8;26710:33;26702:41;;26776:4;26763:18;26753:28;;26804:18;26796:6;26793:30;26790:2;;;26826:79;;:::i;:::-;26790:2;26934;26928:4;26924:13;26916:21;;26991:4;26983:6;26979:17;26963:14;26959:38;26953:4;26949:49;26946:2;;;27001:79;;:::i;:::-;26946:2;26455:634;;;;;;:::o;27268:96::-;27326:6;27354:3;27344:13;;27333:31;;;;:::o;27370:99::-;27422:6;27456:5;27450:12;27440:22;;27429:40;;;:::o;27475:169::-;27559:11;27593:6;27588:3;27581:19;27633:4;27628:3;27624:14;27609:29;;27571:73;;;;:::o;27650:148::-;27752:11;27789:3;27774:18;;27764:34;;;;:::o;27804:469::-;27909:9;27920;27958:8;27946:10;27943:24;27940:2;;;27970:79;;:::i;:::-;27940:2;28076:6;28066:8;28063:20;28060:2;;;28086:79;;:::i;:::-;28060:2;28217:1;28205:10;28201:18;28193:6;28189:31;28176:44;;28256:10;28246:8;28242:25;28229:38;;27930:343;;;;;;;:::o;28279:305::-;28319:3;28338:20;28356:1;28338:20;:::i;:::-;28333:25;;28372:20;28390:1;28372:20;:::i;:::-;28367:25;;28526:1;28458:66;28454:74;28451:1;28448:81;28445:2;;;28532:18;;:::i;:::-;28445:2;28576:1;28573;28569:9;28562:16;;28323:261;;;;:::o;28590:96::-;28627:7;28656:24;28674:5;28656:24;:::i;:::-;28645:35;;28635:51;;;:::o;28692:90::-;28726:7;28769:5;28762:13;28755:21;28744:32;;28734:48;;;:::o;28788:77::-;28825:7;28854:5;28843:16;;28833:32;;;:::o;28871:149::-;28907:7;28947:66;28940:5;28936:78;28925:89;;28915:105;;;:::o;29026:126::-;29063:7;29103:42;29096:5;29092:54;29081:65;;29071:81;;;:::o;29158:77::-;29195:7;29224:5;29213:16;;29203:32;;;:::o;29241:86::-;29276:7;29316:4;29309:5;29305:16;29294:27;;29284:43;;;:::o;29333:552::-;29424:5;29455:45;29496:3;29489:5;29455:45;:::i;:::-;29525:5;29549:41;29580:8;29567:22;29549:41;:::i;:::-;29540:50;;29614:2;29606:6;29603:14;29600:2;;;29685:169;29770:66;29740:6;29736:2;29732:15;29729:1;29725:23;29685:169;:::i;:::-;29662:5;29641:227;29632:236;;29600:2;29430:455;;;;;;:::o;29891:154::-;29975:6;29970:3;29965;29952:30;30037:1;30028:6;30023:3;30019:16;30012:27;29942:103;;;:::o;30051:307::-;30119:1;30129:113;30143:6;30140:1;30137:13;30129:113;;;30228:1;30223:3;30219:11;30213:18;30209:1;30204:3;30200:11;30193:39;30165:2;30162:1;30158:10;30153:15;;30129:113;;;30260:6;30257:1;30254:13;30251:2;;;30340:1;30331:6;30326:3;30322:16;30315:27;30251:2;30100:258;;;;:::o;30364:320::-;30408:6;30445:1;30439:4;30435:12;30425:22;;30492:1;30486:4;30482:12;30513:18;30503:2;;30569:4;30561:6;30557:17;30547:27;;30503:2;30631;30623:6;30620:14;30600:18;30597:38;30594:2;;;30650:18;;:::i;:::-;30594:2;30415:269;;;;:::o;30690:233::-;30729:3;30752:24;30770:5;30752:24;:::i;:::-;30743:33;;30798:66;30791:5;30788:77;30785:2;;;30868:18;;:::i;:::-;30785:2;30915:1;30908:5;30904:13;30897:20;;30733:190;;;:::o;30929:100::-;30968:7;30997:26;31017:5;30997:26;:::i;:::-;30986:37;;30976:53;;;:::o;31035:79::-;31074:7;31103:5;31092:16;;31082:32;;;:::o;31120:94::-;31159:7;31188:20;31202:5;31188:20;:::i;:::-;31177:31;;31167:47;;;:::o;31220:180::-;31268:77;31265:1;31258:88;31365:4;31362:1;31355:15;31389:4;31386:1;31379:15;31406:180;31454:77;31451:1;31444:88;31551:4;31548:1;31541:15;31575:4;31572:1;31565:15;31592:180;31640:77;31637:1;31630:88;31737:4;31734:1;31727:15;31761:4;31758:1;31751:15;31778:117;31887:1;31884;31877:12;31901:117;32010:1;32007;32000:12;32024:117;32133:1;32130;32123:12;32147:117;32256:1;32253;32246:12;32270:117;32379:1;32376;32369:12;32393:117;32502:1;32499;32492:12;32516:117;32625:1;32622;32615:12;32639:117;32748:1;32745;32738:12;32762:117;32871:1;32868;32861:12;32885:117;32994:1;32991;32984:12;33008:102;33049:6;33100:2;33096:7;33091:2;33084:5;33080:14;33076:28;33066:38;;33056:54;;;:::o;33116:94::-;33149:8;33197:5;33193:2;33189:14;33168:35;;33158:52;;;:::o;33216:107::-;33260:8;33310:5;33304:4;33300:16;33279:37;;33269:54;;;;:::o;33329:214::-;33469:66;33465:1;33457:6;33453:14;33446:90;33435:108;:::o;33549:175::-;33689:27;33685:1;33677:6;33673:14;33666:51;33655:69;:::o;33730:225::-;33870:34;33866:1;33858:6;33854:14;33847:58;33939:8;33934:2;33926:6;33922:15;33915:33;33836:119;:::o;33961:171::-;34101:23;34097:1;34089:6;34085:14;34078:47;34067:65;:::o;34138:230::-;34278:34;34274:1;34266:6;34262:14;34255:58;34347:13;34342:2;34334:6;34330:15;34323:38;34244:124;:::o;34374:175::-;34514:27;34510:1;34502:6;34498:14;34491:51;34480:69;:::o;34555:174::-;34695:26;34691:1;34683:6;34679:14;34672:50;34661:68;:::o;34735:174::-;34875:26;34871:1;34863:6;34859:14;34852:50;34841:68;:::o;34915:179::-;35055:31;35051:1;35043:6;35039:14;35032:55;35021:73;:::o;35100:171::-;35240:23;35236:1;35228:6;35224:14;35217:47;35206:65;:::o;35277:182::-;35417:34;35413:1;35405:6;35401:14;35394:58;35383:76;:::o;35465:232::-;35605:34;35601:1;35593:6;35589:14;35582:58;35674:15;35669:2;35661:6;35657:15;35650:40;35571:126;:::o;35703:170::-;35843:22;35839:1;35831:6;35827:14;35820:46;35809:64;:::o;35879:178::-;36019:30;36015:1;36007:6;36003:14;35996:54;35985:72;:::o;36063:174::-;36203:26;36199:1;36191:6;36187:14;36180:50;36169:68;:::o;36243:173::-;36383:25;36379:1;36371:6;36367:14;36360:49;36349:67;:::o;36422:221::-;36562:34;36558:1;36550:6;36546:14;36539:58;36631:4;36626:2;36618:6;36614:15;36607:29;36528:115;:::o;36649:122::-;36722:24;36740:5;36722:24;:::i;:::-;36715:5;36712:35;36702:2;;36761:1;36758;36751:12;36702:2;36692:79;:::o;36777:122::-;36850:24;36868:5;36850:24;:::i;:::-;36843:5;36840:35;36830:2;;36889:1;36886;36879:12;36830:2;36820:79;:::o;36905:120::-;36977:23;36994:5;36977:23;:::i;:::-;36970:5;36967:34;36957:2;;37015:1;37012;37005:12;36957:2;36947:78;:::o;37031:122::-;37104:24;37122:5;37104:24;:::i;:::-;37097:5;37094:35;37084:2;;37143:1;37140;37133:12;37084:2;37074:79;:::o
Swarm Source
ipfs://bade09347903113b68932e82e18eb0533491c685e8c9f563c7c12566e39bf598
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.