Source Code
Overview
ETH Balance
ETH Value
$0.00Latest 15 from a total of 15 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Change Manager2A... | 2448845 | 690 days ago | IN | 0 ETH | 0.0002606 | ||||
| Change Manager2A... | 2448811 | 690 days ago | IN | 0 ETH | 0.00024505 | ||||
| Change Manager2A... | 2448792 | 690 days ago | IN | 0 ETH | 0.00041849 | ||||
| Change Manager1A... | 2448688 | 690 days ago | IN | 0 ETH | 0.0002739 | ||||
| Change Manager1A... | 2448513 | 690 days ago | IN | 0 ETH | 0.00025323 | ||||
| Change Manager1A... | 2448497 | 690 days ago | IN | 0 ETH | 0.00042643 | ||||
| Change Manager4A... | 2448458 | 690 days ago | IN | 0 ETH | 0.00027337 | ||||
| Change Manager4A... | 2448244 | 690 days ago | IN | 0 ETH | 0.0002533 | ||||
| Change Manager4A... | 2448063 | 690 days ago | IN | 0 ETH | 0.00042506 | ||||
| Change Manager5A... | 1774755 | 721 days ago | IN | 0 ETH | 0.00042943 | ||||
| Change Manager5A... | 1774744 | 721 days ago | IN | 0 ETH | 0.00039651 | ||||
| Change Manager5A... | 1774737 | 721 days ago | IN | 0 ETH | 0.00067472 | ||||
| Change Manager3A... | 1774729 | 721 days ago | IN | 0 ETH | 0.00043422 | ||||
| Change Manager3A... | 1774721 | 721 days ago | IN | 0 ETH | 0.00039689 | ||||
| Change Manager3A... | 1774697 | 721 days ago | IN | 0 ETH | 0.00074251 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 20234154 | 204 days ago | 0 ETH | ||||
| 20233899 | 204 days ago | 0 ETH | ||||
| 3404107 | 648 days ago | 0 ETH | ||||
| 3404097 | 648 days ago | 0 ETH | ||||
| 3404088 | 648 days ago | 0 ETH | ||||
| 3404078 | 648 days ago | 0 ETH | ||||
| 3403296 | 648 days ago | 0 ETH | ||||
| 3403285 | 648 days ago | 0 ETH | ||||
| 3381561 | 649 days ago | 0 ETH | ||||
| 3381536 | 649 days ago | 0 ETH | ||||
| 3381503 | 649 days ago | 0 ETH | ||||
| 3381498 | 649 days ago | 0 ETH | ||||
| 3380696 | 649 days ago | 0 ETH | ||||
| 3380681 | 649 days ago | 0 ETH | ||||
| 3380591 | 649 days ago | 0 ETH | ||||
| 3380559 | 649 days ago | 0 ETH | ||||
| 3350595 | 650 days ago | 0 ETH | ||||
| 3350587 | 650 days ago | 0 ETH | ||||
| 3307758 | 651 days ago | 0 ETH | ||||
| 3296527 | 652 days ago | 0 ETH | ||||
| 3296520 | 652 days ago | 0 ETH | ||||
| 3272818 | 653 days ago | 0 ETH | ||||
| 3272810 | 653 days ago | 0 ETH | ||||
| 3239449 | 654 days ago | 0 ETH | ||||
| 3238649 | 654 days ago | 0 ETH |
Loading...
Loading
Contract Name:
Managers
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;
import "@openzeppelin/contracts/access/Ownable.sol";
contract Managers is Ownable {
//Structs
struct Source {
address sourceAddress;
string sourceName;
}
struct Topic {
address source;
string title;
uint256 approveCount;
}
struct TopicApproval {
address source;
bool approved;
bytes value;
}
//Storage Variables
Topic[] public activeTopics;
address public manager1;
address public manager2;
address public manager3;
address public manager4;
address public manager5;
mapping(string => mapping(address => TopicApproval))
public managerApprovalsForTopic;
mapping(address => Source) public trustedSources;
//Custom Errors
error ManagerAddressCannotBeAddedToTrustedSources();
error SameAddressForManagers();
error NotApprovedByManager();
error CannotSetOwnAddress();
error UntrustedSource();
error TopicNotFound();
error NotAuthorized();
error ZeroAddress();
error AlreadyVoted();
//Events
event AddTrustedSource(address addr, string name);
event ApproveTopic(
address by,
string source,
string title,
bytes encodedValues
);
event CancelTopicApproval(address by, string title);
event ChangeManagerAddress(
address manager,
string managerToChange,
address newAddress,
bool isApproved
);
event DeleteTopic(string title);
constructor(
address _manager1,
address _manager2,
address _manager3,
address _manager4,
address _manager5
) {
if (
_manager1 == address(0) ||
_manager2 == address(0) ||
_manager3 == address(0) ||
_manager4 == address(0) ||
_manager5 == address(0)
) {
revert ZeroAddress();
}
manager1 = _manager1;
if (isManager(_manager2)) {
revert SameAddressForManagers();
}
manager2 = _manager2;
if (isManager(_manager3)) {
revert SameAddressForManagers();
}
manager3 = _manager3;
if (isManager(_manager4)) {
revert SameAddressForManagers();
}
manager4 = _manager4;
if (isManager(_manager5)) {
revert SameAddressForManagers();
}
manager5 = _manager5;
_addAddressToTrustedSources(address(this), "Managers");
}
//Modifiers
modifier onlyManager(address _caller) {
if (!isManager(_caller)) {
revert NotAuthorized();
}
_;
}
modifier onlyTrustedSources(address _sender) {
if (trustedSources[_sender].sourceAddress == address(0)) {
revert UntrustedSource();
}
_;
}
//Write Functions
function addAddressToTrustedSources(
address _address,
string memory _name
) external {
if(msg.sender != owner() && !isManager(msg.sender)){
revert NotAuthorized();
}
_addAddressToTrustedSources(_address, _name);
}
function approveTopic(
string memory _title,
bytes memory _encodedValues
) public onlyManager(tx.origin) onlyTrustedSources(msg.sender) {
_approveTopic(_title, _encodedValues);
}
function cancelTopicApproval(
string memory _title
) public onlyManager(msg.sender) {
(bool _titleExists, uint256 _topicIndex) = _indexOfTopic(_title);
if (!_titleExists) {
revert TopicNotFound();
}
if (!managerApprovalsForTopic[_title][msg.sender].approved) {
revert NotApprovedByManager();
}
activeTopics[_topicIndex].approveCount--;
if (activeTopics[_topicIndex].approveCount == 0) {
_deleteTopic(_title);
} else {
managerApprovalsForTopic[_title][msg.sender].approved = false;
}
emit CancelTopicApproval(msg.sender, _title);
}
function deleteTopic(
string memory _title
) external onlyManager(tx.origin) onlyTrustedSources(msg.sender) {
string memory _prefix = string.concat(
trustedSources[msg.sender].sourceName,
": "
);
_title = string.concat(_prefix, _title);
_deleteTopic(_title);
}
function changeManager1Address(
address _newAddress
) external onlyManager(msg.sender) {
if (msg.sender == manager1) {
revert CannotSetOwnAddress();
}
if (isManager(_newAddress)) {
revert SameAddressForManagers();
}
string memory _title = "Change Manager 1 Address";
bytes memory _encodedValues = abi.encode(_newAddress);
_approveTopic(_title, _encodedValues);
bool _isApproved = isApproved(_title, _encodedValues);
if (_isApproved) {
manager1 = _newAddress;
_deleteTopic(string.concat("Managers: ", _title));
}
emit ChangeManagerAddress(
msg.sender,
"Manager1",
_newAddress,
_isApproved
);
}
function changeManager2Address(
address _newAddress
) external onlyManager(msg.sender) {
if (msg.sender == manager2) {
revert CannotSetOwnAddress();
}
if (isManager(_newAddress)) {
revert SameAddressForManagers();
}
string memory _title = "Change Manager 2 Address";
bytes memory _encodedValues = abi.encode(_newAddress);
_approveTopic(_title, _encodedValues);
bool _isApproved = isApproved(_title, _encodedValues);
if (_isApproved) {
manager2 = _newAddress;
_deleteTopic(string.concat("Managers: ", _title));
}
emit ChangeManagerAddress(
msg.sender,
"Manager2",
_newAddress,
_isApproved
);
}
function changeManager3Address(
address _newAddress
) external onlyManager(msg.sender) {
if (msg.sender == manager3) {
revert CannotSetOwnAddress();
}
if (isManager(_newAddress)) {
revert SameAddressForManagers();
}
string memory _title = "Change Manager 3 Address";
bytes memory _encodedValues = abi.encode(_newAddress);
_approveTopic(_title, _encodedValues);
bool _isApproved = isApproved(_title, _encodedValues);
if (_isApproved) {
manager3 = _newAddress;
_deleteTopic(string.concat("Managers: ", _title));
}
emit ChangeManagerAddress(
msg.sender,
"Manager3",
_newAddress,
_isApproved
);
}
function changeManager4Address(
address _newAddress
) external onlyManager(msg.sender) {
if (msg.sender == manager4) {
revert CannotSetOwnAddress();
}
if (isManager(_newAddress)) {
revert SameAddressForManagers();
}
string memory _title = "Change Manager 4 Address";
bytes memory _encodedValues = abi.encode(_newAddress);
_approveTopic(_title, _encodedValues);
bool _isApproved = isApproved(_title, _encodedValues);
if (_isApproved) {
manager4 = _newAddress;
_deleteTopic(string.concat("Managers: ", _title));
}
emit ChangeManagerAddress(
msg.sender,
"Manager4",
_newAddress,
_isApproved
);
}
function changeManager5Address(
address _newAddress
) external onlyManager(msg.sender) {
if (msg.sender == manager5) {
revert CannotSetOwnAddress();
}
if (isManager(_newAddress)) {
revert SameAddressForManagers();
}
string memory _title = "Change Manager 5 Address";
bytes memory _encodedValues = abi.encode(_newAddress);
_approveTopic(_title, _encodedValues);
bool _isApproved = isApproved(_title, _encodedValues);
if (_isApproved) {
manager5 = _newAddress;
_deleteTopic(string.concat("Managers: ", _title));
}
emit ChangeManagerAddress(
msg.sender,
"Manager5",
_newAddress,
_isApproved
);
}
function _deleteTopic(string memory _title) private {
(bool _titleExists, uint256 _topicIndex) = _indexOfTopic(_title);
if (!_titleExists) {
revert TopicNotFound();
}
delete managerApprovalsForTopic[_title][manager1];
delete managerApprovalsForTopic[_title][manager2];
delete managerApprovalsForTopic[_title][manager3];
delete managerApprovalsForTopic[_title][manager4];
delete managerApprovalsForTopic[_title][manager5];
if (_topicIndex < activeTopics.length - 1) {
activeTopics[_topicIndex] = activeTopics[activeTopics.length - 1];
}
activeTopics.pop();
emit DeleteTopic(_title);
}
function _approveTopic(
string memory _title,
bytes memory _encodedValues
) private {
string memory _prefix = "";
address _source;
if (bytes(trustedSources[msg.sender].sourceName).length > 0) {
_prefix = string.concat(
trustedSources[msg.sender].sourceName,
": "
);
_source = trustedSources[msg.sender].sourceAddress;
} else {
if (isManager(msg.sender)) {
_prefix = "Managers: ";
_source = address(this);
} else {
revert("MANAGERS: Untrusted source");
}
}
_title = string.concat(_prefix, _title);
if (managerApprovalsForTopic[_title][tx.origin].approved) {
revert AlreadyVoted();
}
managerApprovalsForTopic[_title][tx.origin].approved = true;
managerApprovalsForTopic[_title][tx.origin].value = _encodedValues;
managerApprovalsForTopic[_title][tx.origin].source = _source;
(bool _titleExists, uint256 _topicIndex) = _indexOfTopic(_title);
if (!_titleExists) {
activeTopics.push(
Topic({source: _source, title: _title, approveCount: 1})
);
} else {
activeTopics[_topicIndex].approveCount++;
}
emit ApproveTopic(
tx.origin,
trustedSources[msg.sender].sourceName,
_title,
_encodedValues
);
}
function _addAddressToTrustedSources(
address _address,
string memory _name
) private {
if (_address == address(0)) {
revert ZeroAddress();
}
if (isManager(_address)) {
revert ManagerAddressCannotBeAddedToTrustedSources();
}
trustedSources[_address].sourceAddress = _address;
trustedSources[_address].sourceName = _name;
emit AddTrustedSource(_address, _name);
}
//Read Functions
function isManager(address _address) public view returns (bool) {
return (_address == manager1 ||
_address == manager2 ||
_address == manager3 ||
_address == manager4 ||
_address == manager5);
}
function isTrustedSource(address _address) public view returns (bool) {
return trustedSources[_address].sourceAddress != address(0);
}
function getActiveTopics() public view returns (Topic[] memory) {
return activeTopics;
}
function isApproved(
string memory _title,
bytes memory _value
) public view returns (bool _isApproved) {
string memory _prefix = "";
if (bytes(trustedSources[msg.sender].sourceName).length > 0) {
_prefix = string.concat(
trustedSources[msg.sender].sourceName,
": "
);
} else {
if (isManager(msg.sender)) {
_prefix = "Managers: ";
} else {
revert UntrustedSource();
}
}
_title = string.concat(_prefix, _title);
bytes memory _manager1Approval = managerApprovalsForTopic[_title][
manager1
].value;
bytes memory _manager2Approval = managerApprovalsForTopic[_title][
manager2
].value;
bytes memory _manager3Approval = managerApprovalsForTopic[_title][
manager3
].value;
bytes memory _manager4Approval = managerApprovalsForTopic[_title][
manager4
].value;
bytes memory _manager5Approval = managerApprovalsForTopic[_title][
manager5
].value;
uint256 _totalValidVotes = 0;
_totalValidVotes += managerApprovalsForTopic[_title][manager1]
.approved && keccak256(_manager1Approval) == keccak256(_value)
? 1
: 0;
_totalValidVotes += managerApprovalsForTopic[_title][manager2]
.approved && keccak256(_manager2Approval) == keccak256(_value)
? 1
: 0;
_totalValidVotes += managerApprovalsForTopic[_title][manager3]
.approved && keccak256(_manager3Approval) == keccak256(_value)
? 1
: 0;
_totalValidVotes += managerApprovalsForTopic[_title][manager4]
.approved && keccak256(_manager4Approval) == keccak256(_value)
? 1
: 0;
_totalValidVotes += managerApprovalsForTopic[_title][manager5]
.approved && keccak256(_manager5Approval) == keccak256(_value)
? 1
: 0;
_isApproved = _totalValidVotes >= 3;
}
function getManagerApprovalsForTitle(
string calldata _title
) public view returns (TopicApproval[] memory _returnData) {
_returnData = new TopicApproval[](5);
_returnData[0] = managerApprovalsForTopic[_title][manager1];
_returnData[1] = managerApprovalsForTopic[_title][manager2];
_returnData[2] = managerApprovalsForTopic[_title][manager3];
_returnData[3] = managerApprovalsForTopic[_title][manager4];
_returnData[4] = managerApprovalsForTopic[_title][manager5];
}
function _compareStrings(
string memory a,
string memory b
) private pure returns (bool) {
return (keccak256(abi.encodePacked((a))) ==
keccak256(abi.encodePacked((b))));
}
function _indexOfTopic(
string memory _element
) private view returns (bool found, uint256 i) {
for (i = 0; i < activeTopics.length; i++) {
if (_compareStrings(activeTopics[i].title, _element)) {
return (true, i);
}
}
return (false, 0); //Cannot return -1 with type uint256. For that check the first parameter is true or false always.
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.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. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling 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);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_manager1","type":"address"},{"internalType":"address","name":"_manager2","type":"address"},{"internalType":"address","name":"_manager3","type":"address"},{"internalType":"address","name":"_manager4","type":"address"},{"internalType":"address","name":"_manager5","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyVoted","type":"error"},{"inputs":[],"name":"CannotSetOwnAddress","type":"error"},{"inputs":[],"name":"ManagerAddressCannotBeAddedToTrustedSources","type":"error"},{"inputs":[],"name":"NotApprovedByManager","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"SameAddressForManagers","type":"error"},{"inputs":[],"name":"TopicNotFound","type":"error"},{"inputs":[],"name":"UntrustedSource","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"AddTrustedSource","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"by","type":"address"},{"indexed":false,"internalType":"string","name":"source","type":"string"},{"indexed":false,"internalType":"string","name":"title","type":"string"},{"indexed":false,"internalType":"bytes","name":"encodedValues","type":"bytes"}],"name":"ApproveTopic","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"by","type":"address"},{"indexed":false,"internalType":"string","name":"title","type":"string"}],"name":"CancelTopicApproval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"manager","type":"address"},{"indexed":false,"internalType":"string","name":"managerToChange","type":"string"},{"indexed":false,"internalType":"address","name":"newAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"isApproved","type":"bool"}],"name":"ChangeManagerAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"title","type":"string"}],"name":"DeleteTopic","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"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activeTopics","outputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"string","name":"title","type":"string"},{"internalType":"uint256","name":"approveCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"string","name":"_name","type":"string"}],"name":"addAddressToTrustedSources","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"bytes","name":"_encodedValues","type":"bytes"}],"name":"approveTopic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"}],"name":"cancelTopicApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeManager1Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeManager2Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeManager3Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeManager4Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeManager5Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"}],"name":"deleteTopic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getActiveTopics","outputs":[{"components":[{"internalType":"address","name":"source","type":"address"},{"internalType":"string","name":"title","type":"string"},{"internalType":"uint256","name":"approveCount","type":"uint256"}],"internalType":"struct Managers.Topic[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"}],"name":"getManagerApprovalsForTitle","outputs":[{"components":[{"internalType":"address","name":"source","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct Managers.TopicApproval[]","name":"_returnData","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"bytes","name":"_value","type":"bytes"}],"name":"isApproved","outputs":[{"internalType":"bool","name":"_isApproved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isTrustedSource","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager5","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"}],"name":"managerApprovalsForTopic","outputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"value","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"trustedSources","outputs":[{"internalType":"address","name":"sourceAddress","type":"address"},{"internalType":"string","name":"sourceName","type":"string"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162006222380380620062228339818101604052810190620000379190620009c8565b620000576200004b6200045a60201b60201c565b6200046260201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480620000bf5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620000f75750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806200012f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001675750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156200019f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001f1846200052660201b60201c565b1562000229576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200027b836200052660201b60201c565b15620002b3576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000305826200052660201b60201c565b156200033d576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200038f816200052660201b60201c565b15620003c7576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044f306040518060400160405280600881526020017f4d616e6167657273000000000000000000000000000000000000000000000000815250620006e460201b60201c565b505050505062000b9e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480620005d25750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200062b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620006845750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620006dd5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200074c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200075d826200052660201b60201c565b1562000795576040517fbb274a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190805190602001906200086e929190620008ae565b507f10454db0dae492184582274cf5b75c428338f2c35a9bddbead56f44d9ba3867a8282604051620008a292919062000b05565b60405180910390a15050565b828054620008bc9062000b68565b90600052602060002090601f016020900481019282620008e057600085556200092c565b82601f10620008fb57805160ff19168380011785556200092c565b828001600101855582156200092c579182015b828111156200092b5782518255916020019190600101906200090e565b5b5090506200093b91906200093f565b5090565b5b808211156200095a57600081600090555060010162000940565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009908262000963565b9050919050565b620009a28162000983565b8114620009ae57600080fd5b50565b600081519050620009c28162000997565b92915050565b600080600080600060a08688031215620009e757620009e66200095e565b5b6000620009f788828901620009b1565b955050602062000a0a88828901620009b1565b945050604062000a1d88828901620009b1565b935050606062000a3088828901620009b1565b925050608062000a4388828901620009b1565b9150509295509295909350565b62000a5b8162000983565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000a9d57808201518184015260208101905062000a80565b8381111562000aad576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ad18262000a61565b62000add818562000a6c565b935062000aef81856020860162000a7d565b62000afa8162000ab3565b840191505092915050565b600060408201905062000b1c600083018562000a50565b818103602083015262000b30818462000ac4565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b8157607f821691505b6020821081141562000b985762000b9762000b39565b5b50919050565b6156748062000bae6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806377acbb22116100de578063cb8803d911610097578063f2fde38b11610071578063f2fde38b14610429578063f3ae241514610445578063f4daa67314610475578063f621394d1461049157610173565b8063cb8803d9146103bf578063dc72ab96146103dd578063e052a5c9146103f957610173565b806377acbb22146102fb5780637da4e534146103195780638da5cb5b14610337578063a820820514610355578063ad248d5314610387578063b5a58a61146103a357610173565b806345cc279b1161013057806345cc279b1461024c5780634c31957f146102685780634e5eab9e146102995780636ace8abc146102b75780636f7f461d146102d3578063715018a6146102f157610173565b80630fe61b311461017857806316f0560e1461019457806320b006f7146101b257806323b9d943146101e257806332769afe146101fe57806340beb1c51461021a575b600080fd5b610192600480360381019061018d9190614360565b6104c1565b005b61019c6106f1565b6040516101a9919061439c565b60405180910390f35b6101cc60048036038101906101c7919061441c565b610717565b6040516101d9919061463e565b60405180910390f35b6101fc60048036038101906101f79190614831565b610fd2565b005b61021860048036038101906102139190614360565b6110ec565b005b610234600480360381019061022f91906148a9565b61131c565b6040516102439392919061495e565b60405180910390f35b61026660048036038101906102619190614360565b61141e565b005b610282600480360381019061027d9190614360565b61164e565b6040516102909291906149f1565b60405180910390f35b6102a161171a565b6040516102ae919061439c565b60405180910390f35b6102d160048036038101906102cc9190614360565b611740565b005b6102db611970565b6040516102e8919061439c565b60405180910390f35b6102f9611996565b005b6103036119aa565b604051610310919061439c565b60405180910390f35b6103216119d0565b60405161032e9190614b96565b60405180910390f35b61033f611b21565b60405161034c919061439c565b60405180910390f35b61036f600480360381019061036a9190614be4565b611b4a565b60405161037e93929190614c20565b60405180910390f35b6103a1600480360381019061039c9190614c5e565b611c2c565b005b6103bd60048036038101906103b89190614cba565b611cba565b005b6103c7611f11565b6040516103d4919061439c565b60405180910390f35b6103f760048036038101906103f29190614360565b611f37565b005b610413600480360381019061040e9190614360565b612167565b6040516104209190614d03565b60405180910390f35b610443600480360381019061043e9190614360565b612202565b005b61045f600480360381019061045a9190614360565b612286565b60405161046c9190614d03565b60405180910390f35b61048f600480360381019061048a9190614cba565b612440565b005b6104ab60048036038101906104a69190614831565b6125e2565b6040516104b89190614d03565b60405180910390f35b336104cb81612286565b610501576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610589576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059282612286565b156105c9576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722032204164647265737300000000000000008152509050600083604051602001610616919061439c565b60405160208183030381529060405290506106318282613088565b600061063d83836125e2565b905080156106af5784600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106ae8360405160200161069a9190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d3386836040516106e293929190614df2565b60405180910390a15050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600567ffffffffffffffff81111561073457610733614665565b5b60405190808252806020026020018201604052801561076d57816020015b61075a61407f565b8152602001906001900390816107525790505b50905060078383604051610782929190614e61565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1615151515815260200160018201805461087b90614ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790614ea9565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b5050505050815250508160008151811061091157610910614edb565b5b60200260200101819052506007838360405161092e929190614e61565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610a2790614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5390614ea9565b8015610aa05780601f10610a7557610100808354040283529160200191610aa0565b820191906000526020600020905b815481529060010190602001808311610a8357829003601f168201915b50505050508152505081600181518110610abd57610abc614edb565b5b602002602001018190525060078383604051610ada929190614e61565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610bd390614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610bff90614ea9565b8015610c4c5780601f10610c2157610100808354040283529160200191610c4c565b820191906000526020600020905b815481529060010190602001808311610c2f57829003601f168201915b50505050508152505081600281518110610c6957610c68614edb565b5b602002602001018190525060078383604051610c86929190614e61565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610d7f90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dab90614ea9565b8015610df85780601f10610dcd57610100808354040283529160200191610df8565b820191906000526020600020905b815481529060010190602001808311610ddb57829003601f168201915b50505050508152505081600381518110610e1557610e14614edb565b5b602002602001018190525060078383604051610e32929190614e61565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610f2b90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5790614ea9565b8015610fa45780601f10610f7957610100808354040283529160200191610fa4565b820191906000526020600020905b815481529060010190602001808311610f8757829003601f168201915b50505050508152505081600481518110610fc157610fc0614edb565b5b602002602001018190525092915050565b32610fdc81612286565b611012576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600073ffffffffffffffffffffffffffffffffffffffff16600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110dc576040517faeb85ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e68484613088565b50505050565b336110f681612286565b61112c576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156111b4576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111bd82612286565b156111f4576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722034204164647265737300000000000000008152509050600083604051602001611241919061439c565b604051602081830303815290604052905061125c8282613088565b600061126883836125e2565b905080156112da5784600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112d9836040516020016112c59190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161130d93929190614f56565b60405180910390a15050505050565b600782805160208101820180518482526020830160208501208183528095505050505050602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff169080600101805461139b90614ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546113c790614ea9565b80156114145780601f106113e957610100808354040283529160200191611414565b820191906000526020600020905b8154815290600101906020018083116113f757829003601f168201915b5050505050905083565b3361142881612286565b61145e576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156114e6576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ef82612286565b15611526576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722033204164647265737300000000000000008152509050600083604051602001611573919061439c565b604051602081830303815290604052905061158e8282613088565b600061159a83836125e2565b9050801561160c5784600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061160b836040516020016115f79190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161163f93929190614fec565b60405180910390a15050505050565b60086020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461169790614ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546116c390614ea9565b80156117105780601f106116e557610100808354040283529160200191611710565b820191906000526020600020905b8154815290600101906020018083116116f357829003601f168201915b5050505050905082565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3361174a81612286565b611780576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611808576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181182612286565b15611848576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722035204164647265737300000000000000008152509050600083604051602001611895919061439c565b60405160208183030381529060405290506118b08282613088565b60006118bc83836125e2565b9050801561192e5784600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061192d836040516020016119199190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161196193929190615082565b60405180910390a15050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61199e613c26565b6119a86000613ca4565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606001805480602002602001604051908101604052809291908181526020016000905b82821015611b1857838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054611a7d90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa990614ea9565b8015611af65780601f10611acb57610100808354040283529160200191611af6565b820191906000526020600020905b815481529060010190602001808311611ad957829003601f168201915b50505050508152602001600282015481525050815260200190600101906119f4565b50505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60018181548110611b5a57600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054611ba390614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcf90614ea9565b8015611c1c5780601f10611bf157610100808354040283529160200191611c1c565b820191906000526020600020905b815481529060010190602001808311611bff57829003601f168201915b5050505050908060020154905083565b611c34611b21565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611c755750611c7333612286565b155b15611cac576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cb68282613d68565b5050565b33611cc481612286565b611cfa576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611d0684613f24565b9150915081611d41576040517f04a29d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600784604051611d5191906150cc565b908152602001604051809103902060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff16611de3576040517f50c79c2a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018181548110611df757611df6614edb565b5b90600052602060002090600302016002016000815480929190611e1990615112565b9190505550600060018281548110611e3457611e33614edb565b5b9060005260206000209060030201600201541415611e5a57611e5584613642565b611ed2565b6000600785604051611e6c91906150cc565b908152602001604051809103902060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a81548160ff0219169083151502179055505b7f9b691f8f76dfaf3587fe6475af277e430ab2ba96c76fba327884d44784feeabb3385604051611f039291906149f1565b60405180910390a150505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33611f4181612286565b611f77576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611fff576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61200882612286565b1561203f576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e61676572203120416464726573730000000000000000815250905060008360405160200161208c919061439c565b60405160208183030381529060405290506120a78282613088565b60006120b383836125e2565b905080156121255784600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612124836040516020016121109190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161215893929190615188565b60405180910390a15050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61220a613c26565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190615244565b60405180910390fd5b61228381613ca4565b50565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806123315750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806123895750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806123e15750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806124395750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b3261244a81612286565b612480576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600073ffffffffffffffffffffffffffffffffffffffff16600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561254a576040517faeb85ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160405160200161259e919061531e565b604051602081830303815290604052905080846040516020016125c2929190615344565b60405160208183030381529060405293506125dc84613642565b50505050565b6000806040518060200160405280600081525090506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805461264690614ea9565b905011156126b657600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020016126a0919061531e565b6040516020818303038152906040529050612734565b6126bf33612286565b15612701576040518060400160405280600a81526020017f4d616e61676572733a20000000000000000000000000000000000000000000008152509050612733565b6040517faeb85ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8084604051602001612747929190615344565b6040516020818303038152906040529350600060078560405161276a91906150cc565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546127e590614ea9565b80601f016020809104026020016040519081016040528092919081815260200182805461281190614ea9565b801561285e5780601f106128335761010080835404028352916020019161285e565b820191906000526020600020905b81548152906001019060200180831161284157829003601f168201915b50505050509050600060078660405161287791906150cc565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546128f290614ea9565b80601f016020809104026020016040519081016040528092919081815260200182805461291e90614ea9565b801561296b5780601f106129405761010080835404028352916020019161296b565b820191906000526020600020905b81548152906001019060200180831161294e57829003601f168201915b50505050509050600060078760405161298491906150cc565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546129ff90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054612a2b90614ea9565b8015612a785780601f10612a4d57610100808354040283529160200191612a78565b820191906000526020600020905b815481529060010190602001808311612a5b57829003601f168201915b505050505090506000600788604051612a9191906150cc565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054612b0c90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054612b3890614ea9565b8015612b855780601f10612b5a57610100808354040283529160200191612b85565b820191906000526020600020905b815481529060010190602001808311612b6857829003601f168201915b505050505090506000600789604051612b9e91906150cc565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054612c1990614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4590614ea9565b8015612c925780601f10612c6757610100808354040283529160200191612c92565b820191906000526020600020905b815481529060010190602001808311612c7557829003601f168201915b50505050509050600060078a604051612cab91906150cc565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612d42575088805190602001208680519060200120145b612d4d576000612d50565b60015b60ff1681612d5e9190615368565b905060078a604051612d7091906150cc565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612e07575088805190602001208580519060200120145b612e12576000612e15565b60015b60ff1681612e239190615368565b905060078a604051612e3591906150cc565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612ecc575088805190602001208480519060200120145b612ed7576000612eda565b60015b60ff1681612ee89190615368565b905060078a604051612efa91906150cc565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612f91575088805190602001208380519060200120145b612f9c576000612f9f565b60015b60ff1681612fad9190615368565b905060078a604051612fbf91906150cc565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015613056575088805190602001208280519060200120145b613061576000613064565b60015b60ff16816130729190615368565b9050600381101597505050505050505092915050565b6000604051806020016040528060008152509050600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546130ec90614ea9565b905011156131c157600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101604051602001613146919061531e565b6040516020818303038152906040529150600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061324b565b6131ca33612286565b1561320f576040518060400160405280600a81526020017f4d616e61676572733a2000000000000000000000000000000000000000000000815250915030905061324a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132419061540a565b60405180910390fd5b5b818460405160200161325e929190615344565b604051602081830303815290604052935060078460405161327f91906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff1615613312576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160078560405161332491906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a81548160ff0219169083151502179055508260078560405161339a91906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190805190602001906133fb9291906140b8565b508060078560405161340d91906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806134a586613f24565b915091508161358057600160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018881526020016001815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061356e92919061413e565b506040820151816002015550506135bc565b6001818154811061359457613593614edb565b5b906000526020600020906003020160020160008154809291906135b69061542a565b91905055505b7fd82350b45853f4cbd6aed73d71174ec8a44dcb80ddca55cfc7b52b55637e0a3832600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101888860405161363294939291906154f3565b60405180910390a1505050505050565b60008061364e83613f24565b9150915081613689576040517f04a29d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078360405161369991906150cc565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905560018201600061375291906141c4565b505060078360405161376491906150cc565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905560018201600061381d91906141c4565b505060078360405161382f91906150cc565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556001820160006138e891906141c4565b50506007836040516138fa91906150cc565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556001820160006139b391906141c4565b50506007836040516139c591906150cc565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff0219169055600182016000613a7e91906141c4565b505060018080549050613a91919061554d565b811015613b80576001808080549050613aaa919061554d565b81548110613abb57613aba614edb565b5b906000526020600020906003020160018281548110613add57613adc614edb565b5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820181600101908054613b6690614ea9565b613b71929190614204565b50600282015481600201559050505b6001805480613b9257613b91615581565b5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000613bde9190614291565b6002820160009055505090557f08c1dd9abb1a246ae66e40eb426ed02e9d5be3be77f547a622150048fc1cc24583604051613c1991906155b0565b60405180910390a1505050565b613c2e61401e565b73ffffffffffffffffffffffffffffffffffffffff16613c4c611b21565b73ffffffffffffffffffffffffffffffffffffffff1614613ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c999061561e565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613dcf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613dd882612286565b15613e0f576040517fbb274a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190613ee692919061413e565b507f10454db0dae492184582274cf5b75c428338f2c35a9bddbead56f44d9ba3867a8282604051613f189291906149f1565b60405180910390a15050565b600080600090505b60018054905081101561401157613ff060018281548110613f5057613f4f614edb565b5b90600052602060002090600302016001018054613f6c90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054613f9890614ea9565b8015613fe55780601f10613fba57610100808354040283529160200191613fe5565b820191906000526020600020905b815481529060010190602001808311613fc857829003601f168201915b505050505084614026565b15613ffe5760019150614019565b80806140099061542a565b915050613f2c565b600080915091505b915091565b600033905090565b60008160405160200161403991906150cc565b604051602081830303815290604052805190602001208360405160200161406091906150cc565b6040516020818303038152906040528051906020012014905092915050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001606081525090565b8280546140c490614ea9565b90600052602060002090601f0160209004810192826140e6576000855561412d565b82601f106140ff57805160ff191683800117855561412d565b8280016001018555821561412d579182015b8281111561412c578251825591602001919060010190614111565b5b50905061413a91906142d1565b5090565b82805461414a90614ea9565b90600052602060002090601f01602090048101928261416c57600085556141b3565b82601f1061418557805160ff19168380011785556141b3565b828001600101855582156141b3579182015b828111156141b2578251825591602001919060010190614197565b5b5090506141c091906142d1565b5090565b5080546141d090614ea9565b6000825580601f106141e25750614201565b601f01602090049060005260206000209081019061420091906142d1565b5b50565b82805461421090614ea9565b90600052602060002090601f0160209004810192826142325760008555614280565b82601f106142435780548555614280565b8280016001018555821561428057600052602060002091601f016020900482015b8281111561427f578254825591600101919060010190614264565b5b50905061428d91906142d1565b5090565b50805461429d90614ea9565b6000825580601f106142af57506142ce565b601f0160209004906000526020600020908101906142cd91906142d1565b5b50565b5b808211156142ea5760008160009055506001016142d2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061432d82614302565b9050919050565b61433d81614322565b811461434857600080fd5b50565b60008135905061435a81614334565b92915050565b600060208284031215614376576143756142f8565b5b60006143848482850161434b565b91505092915050565b61439681614322565b82525050565b60006020820190506143b1600083018461438d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126143dc576143db6143b7565b5b8235905067ffffffffffffffff8111156143f9576143f86143bc565b5b602083019150836001820283011115614415576144146143c1565b5b9250929050565b60008060208385031215614433576144326142f8565b5b600083013567ffffffffffffffff811115614451576144506142fd565b5b61445d858286016143c6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61449e81614322565b82525050565b60008115159050919050565b6144b9816144a4565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144f95780820151818401526020810190506144de565b83811115614508576000848401525b50505050565b6000601f19601f8301169050919050565b600061452a826144bf565b61453481856144ca565b93506145448185602086016144db565b61454d8161450e565b840191505092915050565b60006060830160008301516145706000860182614495565b50602083015161458360208601826144b0565b506040830151848203604086015261459b828261451f565b9150508091505092915050565b60006145b48383614558565b905092915050565b6000602082019050919050565b60006145d482614469565b6145de8185614474565b9350836020820285016145f085614485565b8060005b8581101561462c578484038952815161460d85826145a8565b9450614618836145bc565b925060208a019950506001810190506145f4565b50829750879550505050505092915050565b6000602082019050818103600083015261465881846145c9565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61469d8261450e565b810181811067ffffffffffffffff821117156146bc576146bb614665565b5b80604052505050565b60006146cf6142ee565b90506146db8282614694565b919050565b600067ffffffffffffffff8211156146fb576146fa614665565b5b6147048261450e565b9050602081019050919050565b82818337600083830152505050565b600061473361472e846146e0565b6146c5565b90508281526020810184848401111561474f5761474e614660565b5b61475a848285614711565b509392505050565b600082601f830112614777576147766143b7565b5b8135614787848260208601614720565b91505092915050565b600067ffffffffffffffff8211156147ab576147aa614665565b5b6147b48261450e565b9050602081019050919050565b60006147d46147cf84614790565b6146c5565b9050828152602081018484840111156147f0576147ef614660565b5b6147fb848285614711565b509392505050565b600082601f830112614818576148176143b7565b5b81356148288482602086016147c1565b91505092915050565b60008060408385031215614848576148476142f8565b5b600083013567ffffffffffffffff811115614866576148656142fd565b5b61487285828601614762565b925050602083013567ffffffffffffffff811115614893576148926142fd565b5b61489f85828601614803565b9150509250929050565b600080604083850312156148c0576148bf6142f8565b5b600083013567ffffffffffffffff8111156148de576148dd6142fd565b5b6148ea85828601614762565b92505060206148fb8582860161434b565b9150509250929050565b61490e816144a4565b82525050565b600082825260208201905092915050565b6000614930826144bf565b61493a8185614914565b935061494a8185602086016144db565b6149538161450e565b840191505092915050565b6000606082019050614973600083018661438d565b6149806020830185614905565b81810360408301526149928184614925565b9050949350505050565b600081519050919050565b600082825260208201905092915050565b60006149c38261499c565b6149cd81856149a7565b93506149dd8185602086016144db565b6149e68161450e565b840191505092915050565b6000604082019050614a06600083018561438d565b8181036020830152614a1881846149b8565b90509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000614a698261499c565b614a738185614a4d565b9350614a838185602086016144db565b614a8c8161450e565b840191505092915050565b6000819050919050565b614aaa81614a97565b82525050565b6000606083016000830151614ac86000860182614495565b5060208301518482036020860152614ae08282614a5e565b9150506040830151614af56040860182614aa1565b508091505092915050565b6000614b0c8383614ab0565b905092915050565b6000602082019050919050565b6000614b2c82614a21565b614b368185614a2c565b935083602082028501614b4885614a3d565b8060005b85811015614b845784840389528151614b658582614b00565b9450614b7083614b14565b925060208a01995050600181019050614b4c565b50829750879550505050505092915050565b60006020820190508181036000830152614bb08184614b21565b905092915050565b614bc181614a97565b8114614bcc57600080fd5b50565b600081359050614bde81614bb8565b92915050565b600060208284031215614bfa57614bf96142f8565b5b6000614c0884828501614bcf565b91505092915050565b614c1a81614a97565b82525050565b6000606082019050614c35600083018661438d565b8181036020830152614c4781856149b8565b9050614c566040830184614c11565b949350505050565b60008060408385031215614c7557614c746142f8565b5b6000614c838582860161434b565b925050602083013567ffffffffffffffff811115614ca457614ca36142fd565b5b614cb085828601614762565b9150509250929050565b600060208284031215614cd057614ccf6142f8565b5b600082013567ffffffffffffffff811115614cee57614ced6142fd565b5b614cfa84828501614762565b91505092915050565b6000602082019050614d186000830184614905565b92915050565b7f4d616e61676572733a2000000000000000000000000000000000000000000000815250565b600081905092915050565b6000614d5a8261499c565b614d648185614d44565b9350614d748185602086016144db565b80840191505092915050565b6000614d8b82614d1e565b600a82019150614d9b8284614d4f565b915081905092915050565b7f4d616e6167657232000000000000000000000000000000000000000000000000600082015250565b6000614ddc6008836149a7565b9150614de782614da6565b602082019050919050565b6000608082019050614e07600083018661438d565b8181036020830152614e1881614dcf565b9050614e27604083018561438d565b614e346060830184614905565b949350505050565b6000614e488385614d44565b9350614e55838584614711565b82840190509392505050565b6000614e6e828486614e3c565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ec157607f821691505b60208210811415614ed557614ed4614e7a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d616e6167657234000000000000000000000000000000000000000000000000600082015250565b6000614f406008836149a7565b9150614f4b82614f0a565b602082019050919050565b6000608082019050614f6b600083018661438d565b8181036020830152614f7c81614f33565b9050614f8b604083018561438d565b614f986060830184614905565b949350505050565b7f4d616e6167657233000000000000000000000000000000000000000000000000600082015250565b6000614fd66008836149a7565b9150614fe182614fa0565b602082019050919050565b6000608082019050615001600083018661438d565b818103602083015261501281614fc9565b9050615021604083018561438d565b61502e6060830184614905565b949350505050565b7f4d616e6167657235000000000000000000000000000000000000000000000000600082015250565b600061506c6008836149a7565b915061507782615036565b602082019050919050565b6000608082019050615097600083018661438d565b81810360208301526150a88161505f565b90506150b7604083018561438d565b6150c46060830184614905565b949350505050565b60006150d88284614d4f565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061511d82614a97565b91506000821415615131576151306150e3565b5b600182039050919050565b7f4d616e6167657231000000000000000000000000000000000000000000000000600082015250565b60006151726008836149a7565b915061517d8261513c565b602082019050919050565b600060808201905061519d600083018661438d565b81810360208301526151ae81615165565b90506151bd604083018561438d565b6151ca6060830184614905565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061522e6026836149a7565b9150615239826151d2565b604082019050919050565b6000602082019050818103600083015261525d81615221565b9050919050565b60008190508160005260206000209050919050565b6000815461528681614ea9565b6152908186614d44565b945060018216600081146152ab57600181146152bc576152ef565b60ff198316865281860193506152ef565b6152c585615264565b60005b838110156152e7578154818901526001820191506020810190506152c8565b838801955050505b50505092915050565b7f3a20000000000000000000000000000000000000000000000000000000000000815250565b600061532a8284615279565b9150615335826152f8565b60028201915081905092915050565b60006153508285614d4f565b915061535c8284614d4f565b91508190509392505050565b600061537382614a97565b915061537e83614a97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153b3576153b26150e3565b5b828201905092915050565b7f4d414e41474552533a20556e7472757374656420736f75726365000000000000600082015250565b60006153f4601a836149a7565b91506153ff826153be565b602082019050919050565b60006020820190508181036000830152615423816153e7565b9050919050565b600061543582614a97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615468576154676150e3565b5b600182019050919050565b6000815461548081614ea9565b61548a81866149a7565b945060018216600081146154a557600181146154b7576154ea565b60ff19831686526020860193506154ea565b6154c085615264565b60005b838110156154e2578154818901526001820191506020810190506154c3565b808801955050505b50505092915050565b6000608082019050615508600083018761438d565b818103602083015261551a8186615473565b9050818103604083015261552e81856149b8565b905081810360608301526155428184614925565b905095945050505050565b600061555882614a97565b915061556383614a97565b925082821015615576576155756150e3565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060208201905081810360008301526155ca81846149b8565b905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006156086020836149a7565b9150615613826155d2565b602082019050919050565b60006020820190508181036000830152615637816155fb565b905091905056fea26469706673582212206953c34ff8caedff4e4d15e7b69be5fab6f4870dd8dcf85d2a3cd60a6d99f25e64736f6c634300080c00330000000000000000000000003f882c522f1626729b692714b983610bc09af53c0000000000000000000000008fe28316d5517e053320091a5d10c75ae555629b000000000000000000000000b1e59c47c6d63da81ccd53aa5720113c3ff8ad45000000000000000000000000f60aadd13de39c28a75fcd41265ddc821298ee92000000000000000000000000e7521950426479d525381940604d27aec12fe97a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c806377acbb22116100de578063cb8803d911610097578063f2fde38b11610071578063f2fde38b14610429578063f3ae241514610445578063f4daa67314610475578063f621394d1461049157610173565b8063cb8803d9146103bf578063dc72ab96146103dd578063e052a5c9146103f957610173565b806377acbb22146102fb5780637da4e534146103195780638da5cb5b14610337578063a820820514610355578063ad248d5314610387578063b5a58a61146103a357610173565b806345cc279b1161013057806345cc279b1461024c5780634c31957f146102685780634e5eab9e146102995780636ace8abc146102b75780636f7f461d146102d3578063715018a6146102f157610173565b80630fe61b311461017857806316f0560e1461019457806320b006f7146101b257806323b9d943146101e257806332769afe146101fe57806340beb1c51461021a575b600080fd5b610192600480360381019061018d9190614360565b6104c1565b005b61019c6106f1565b6040516101a9919061439c565b60405180910390f35b6101cc60048036038101906101c7919061441c565b610717565b6040516101d9919061463e565b60405180910390f35b6101fc60048036038101906101f79190614831565b610fd2565b005b61021860048036038101906102139190614360565b6110ec565b005b610234600480360381019061022f91906148a9565b61131c565b6040516102439392919061495e565b60405180910390f35b61026660048036038101906102619190614360565b61141e565b005b610282600480360381019061027d9190614360565b61164e565b6040516102909291906149f1565b60405180910390f35b6102a161171a565b6040516102ae919061439c565b60405180910390f35b6102d160048036038101906102cc9190614360565b611740565b005b6102db611970565b6040516102e8919061439c565b60405180910390f35b6102f9611996565b005b6103036119aa565b604051610310919061439c565b60405180910390f35b6103216119d0565b60405161032e9190614b96565b60405180910390f35b61033f611b21565b60405161034c919061439c565b60405180910390f35b61036f600480360381019061036a9190614be4565b611b4a565b60405161037e93929190614c20565b60405180910390f35b6103a1600480360381019061039c9190614c5e565b611c2c565b005b6103bd60048036038101906103b89190614cba565b611cba565b005b6103c7611f11565b6040516103d4919061439c565b60405180910390f35b6103f760048036038101906103f29190614360565b611f37565b005b610413600480360381019061040e9190614360565b612167565b6040516104209190614d03565b60405180910390f35b610443600480360381019061043e9190614360565b612202565b005b61045f600480360381019061045a9190614360565b612286565b60405161046c9190614d03565b60405180910390f35b61048f600480360381019061048a9190614cba565b612440565b005b6104ab60048036038101906104a69190614831565b6125e2565b6040516104b89190614d03565b60405180910390f35b336104cb81612286565b610501576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610589576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059282612286565b156105c9576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722032204164647265737300000000000000008152509050600083604051602001610616919061439c565b60405160208183030381529060405290506106318282613088565b600061063d83836125e2565b905080156106af5784600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106ae8360405160200161069a9190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d3386836040516106e293929190614df2565b60405180910390a15050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600567ffffffffffffffff81111561073457610733614665565b5b60405190808252806020026020018201604052801561076d57816020015b61075a61407f565b8152602001906001900390816107525790505b50905060078383604051610782929190614e61565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff1615151515815260200160018201805461087b90614ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790614ea9565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b5050505050815250508160008151811061091157610910614edb565b5b60200260200101819052506007838360405161092e929190614e61565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610a2790614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5390614ea9565b8015610aa05780601f10610a7557610100808354040283529160200191610aa0565b820191906000526020600020905b815481529060010190602001808311610a8357829003601f168201915b50505050508152505081600181518110610abd57610abc614edb565b5b602002602001018190525060078383604051610ada929190614e61565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610bd390614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610bff90614ea9565b8015610c4c5780601f10610c2157610100808354040283529160200191610c4c565b820191906000526020600020905b815481529060010190602001808311610c2f57829003601f168201915b50505050508152505081600281518110610c6957610c68614edb565b5b602002602001018190525060078383604051610c86929190614e61565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610d7f90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dab90614ea9565b8015610df85780601f10610dcd57610100808354040283529160200191610df8565b820191906000526020600020905b815481529060010190602001808311610ddb57829003601f168201915b50505050508152505081600381518110610e1557610e14614edb565b5b602002602001018190525060078383604051610e32929190614e61565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900460ff16151515158152602001600182018054610f2b90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f5790614ea9565b8015610fa45780601f10610f7957610100808354040283529160200191610fa4565b820191906000526020600020905b815481529060010190602001808311610f8757829003601f168201915b50505050508152505081600481518110610fc157610fc0614edb565b5b602002602001018190525092915050565b32610fdc81612286565b611012576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600073ffffffffffffffffffffffffffffffffffffffff16600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110dc576040517faeb85ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110e68484613088565b50505050565b336110f681612286565b61112c576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156111b4576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111bd82612286565b156111f4576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722034204164647265737300000000000000008152509050600083604051602001611241919061439c565b604051602081830303815290604052905061125c8282613088565b600061126883836125e2565b905080156112da5784600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112d9836040516020016112c59190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161130d93929190614f56565b60405180910390a15050505050565b600782805160208101820180518482526020830160208501208183528095505050505050602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff169080600101805461139b90614ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546113c790614ea9565b80156114145780601f106113e957610100808354040283529160200191611414565b820191906000526020600020905b8154815290600101906020018083116113f757829003601f168201915b5050505050905083565b3361142881612286565b61145e576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156114e6576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114ef82612286565b15611526576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722033204164647265737300000000000000008152509050600083604051602001611573919061439c565b604051602081830303815290604052905061158e8282613088565b600061159a83836125e2565b9050801561160c5784600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061160b836040516020016115f79190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161163f93929190614fec565b60405180910390a15050505050565b60086020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461169790614ea9565b80601f01602080910402602001604051908101604052809291908181526020018280546116c390614ea9565b80156117105780601f106116e557610100808354040283529160200191611710565b820191906000526020600020905b8154815290600101906020018083116116f357829003601f168201915b5050505050905082565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3361174a81612286565b611780576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611808576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61181182612286565b15611848576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e616765722035204164647265737300000000000000008152509050600083604051602001611895919061439c565b60405160208183030381529060405290506118b08282613088565b60006118bc83836125e2565b9050801561192e5784600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061192d836040516020016119199190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161196193929190615082565b60405180910390a15050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61199e613c26565b6119a86000613ca4565b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606001805480602002602001604051908101604052809291908181526020016000905b82821015611b1857838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054611a7d90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa990614ea9565b8015611af65780601f10611acb57610100808354040283529160200191611af6565b820191906000526020600020905b815481529060010190602001808311611ad957829003601f168201915b50505050508152602001600282015481525050815260200190600101906119f4565b50505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60018181548110611b5a57600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054611ba390614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcf90614ea9565b8015611c1c5780601f10611bf157610100808354040283529160200191611c1c565b820191906000526020600020905b815481529060010190602001808311611bff57829003601f168201915b5050505050908060020154905083565b611c34611b21565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611c755750611c7333612286565b155b15611cac576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cb68282613d68565b5050565b33611cc481612286565b611cfa576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611d0684613f24565b9150915081611d41576040517f04a29d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600784604051611d5191906150cc565b908152602001604051809103902060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff16611de3576040517f50c79c2a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018181548110611df757611df6614edb565b5b90600052602060002090600302016002016000815480929190611e1990615112565b9190505550600060018281548110611e3457611e33614edb565b5b9060005260206000209060030201600201541415611e5a57611e5584613642565b611ed2565b6000600785604051611e6c91906150cc565b908152602001604051809103902060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a81548160ff0219169083151502179055505b7f9b691f8f76dfaf3587fe6475af277e430ab2ba96c76fba327884d44784feeabb3385604051611f039291906149f1565b60405180910390a150505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b33611f4181612286565b611f77576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611fff576040517fcd7632ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61200882612286565b1561203f576040517f737a6ae800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280601881526020017f4368616e6765204d616e61676572203120416464726573730000000000000000815250905060008360405160200161208c919061439c565b60405160208183030381529060405290506120a78282613088565b60006120b383836125e2565b905080156121255784600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612124836040516020016121109190614d80565b604051602081830303815290604052613642565b5b7f89e1ddbc59d3210b878900256f0bb385d0c9ddf07261a04fcf90f1e9ab64d68d33868360405161215893929190615188565b60405180910390a15050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61220a613c26565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190615244565b60405180910390fd5b61228381613ca4565b50565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806123315750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806123895750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806123e15750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806124395750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b3261244a81612286565b612480576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600073ffffffffffffffffffffffffffffffffffffffff16600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561254a576040517faeb85ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160405160200161259e919061531e565b604051602081830303815290604052905080846040516020016125c2929190615344565b60405160208183030381529060405293506125dc84613642565b50505050565b6000806040518060200160405280600081525090506000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101805461264690614ea9565b905011156126b657600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016040516020016126a0919061531e565b6040516020818303038152906040529050612734565b6126bf33612286565b15612701576040518060400160405280600a81526020017f4d616e61676572733a20000000000000000000000000000000000000000000008152509050612733565b6040517faeb85ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8084604051602001612747929190615344565b6040516020818303038152906040529350600060078560405161276a91906150cc565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546127e590614ea9565b80601f016020809104026020016040519081016040528092919081815260200182805461281190614ea9565b801561285e5780601f106128335761010080835404028352916020019161285e565b820191906000526020600020905b81548152906001019060200180831161284157829003601f168201915b50505050509050600060078660405161287791906150cc565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546128f290614ea9565b80601f016020809104026020016040519081016040528092919081815260200182805461291e90614ea9565b801561296b5780601f106129405761010080835404028352916020019161296b565b820191906000526020600020905b81548152906001019060200180831161294e57829003601f168201915b50505050509050600060078760405161298491906150cc565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546129ff90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054612a2b90614ea9565b8015612a785780601f10612a4d57610100808354040283529160200191612a78565b820191906000526020600020905b815481529060010190602001808311612a5b57829003601f168201915b505050505090506000600788604051612a9191906150cc565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054612b0c90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054612b3890614ea9565b8015612b855780601f10612b5a57610100808354040283529160200191612b85565b820191906000526020600020905b815481529060010190602001808311612b6857829003601f168201915b505050505090506000600789604051612b9e91906150cc565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054612c1990614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4590614ea9565b8015612c925780601f10612c6757610100808354040283529160200191612c92565b820191906000526020600020905b815481529060010190602001808311612c7557829003601f168201915b50505050509050600060078a604051612cab91906150cc565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612d42575088805190602001208680519060200120145b612d4d576000612d50565b60015b60ff1681612d5e9190615368565b905060078a604051612d7091906150cc565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612e07575088805190602001208580519060200120145b612e12576000612e15565b60015b60ff1681612e239190615368565b905060078a604051612e3591906150cc565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612ecc575088805190602001208480519060200120145b612ed7576000612eda565b60015b60ff1681612ee89190615368565b905060078a604051612efa91906150cc565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015612f91575088805190602001208380519060200120145b612f9c576000612f9f565b60015b60ff1681612fad9190615368565b905060078a604051612fbf91906150cc565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff168015613056575088805190602001208280519060200120145b613061576000613064565b60015b60ff16816130729190615368565b9050600381101597505050505050505092915050565b6000604051806020016040528060008152509050600080600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180546130ec90614ea9565b905011156131c157600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101604051602001613146919061531e565b6040516020818303038152906040529150600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061324b565b6131ca33612286565b1561320f576040518060400160405280600a81526020017f4d616e61676572733a2000000000000000000000000000000000000000000000815250915030905061324a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132419061540a565b60405180910390fd5b5b818460405160200161325e929190615344565b604051602081830303815290604052935060078460405161327f91906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160149054906101000a900460ff1615613312576040517f7c9a1cf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160078560405161332491906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160146101000a81548160ff0219169083151502179055508260078560405161339a91906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190805190602001906133fb9291906140b8565b508060078560405161340d91906150cc565b908152602001604051809103902060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000806134a586613f24565b915091508161358057600160405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018881526020016001815250908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061356e92919061413e565b506040820151816002015550506135bc565b6001818154811061359457613593614edb565b5b906000526020600020906003020160020160008154809291906135b69061542a565b91905055505b7fd82350b45853f4cbd6aed73d71174ec8a44dcb80ddca55cfc7b52b55637e0a3832600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101888860405161363294939291906154f3565b60405180910390a1505050505050565b60008061364e83613f24565b9150915081613689576040517f04a29d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078360405161369991906150cc565b90815260200160405180910390206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905560018201600061375291906141c4565b505060078360405161376491906150cc565b90815260200160405180910390206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff021916905560018201600061381d91906141c4565b505060078360405161382f91906150cc565b90815260200160405180910390206000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556001820160006138e891906141c4565b50506007836040516138fa91906150cc565b90815260200160405180910390206000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff02191690556001820160006139b391906141c4565b50506007836040516139c591906150cc565b90815260200160405180910390206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549060ff0219169055600182016000613a7e91906141c4565b505060018080549050613a91919061554d565b811015613b80576001808080549050613aaa919061554d565b81548110613abb57613aba614edb565b5b906000526020600020906003020160018281548110613add57613adc614edb565b5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820181600101908054613b6690614ea9565b613b71929190614204565b50600282015481600201559050505b6001805480613b9257613b91615581565b5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000613bde9190614291565b6002820160009055505090557f08c1dd9abb1a246ae66e40eb426ed02e9d5be3be77f547a622150048fc1cc24583604051613c1991906155b0565b60405180910390a1505050565b613c2e61401e565b73ffffffffffffffffffffffffffffffffffffffff16613c4c611b21565b73ffffffffffffffffffffffffffffffffffffffff1614613ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c999061561e565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613dcf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613dd882612286565b15613e0f576040517fbb274a8400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190613ee692919061413e565b507f10454db0dae492184582274cf5b75c428338f2c35a9bddbead56f44d9ba3867a8282604051613f189291906149f1565b60405180910390a15050565b600080600090505b60018054905081101561401157613ff060018281548110613f5057613f4f614edb565b5b90600052602060002090600302016001018054613f6c90614ea9565b80601f0160208091040260200160405190810160405280929190818152602001828054613f9890614ea9565b8015613fe55780601f10613fba57610100808354040283529160200191613fe5565b820191906000526020600020905b815481529060010190602001808311613fc857829003601f168201915b505050505084614026565b15613ffe5760019150614019565b80806140099061542a565b915050613f2c565b600080915091505b915091565b600033905090565b60008160405160200161403991906150cc565b604051602081830303815290604052805190602001208360405160200161406091906150cc565b6040516020818303038152906040528051906020012014905092915050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600015158152602001606081525090565b8280546140c490614ea9565b90600052602060002090601f0160209004810192826140e6576000855561412d565b82601f106140ff57805160ff191683800117855561412d565b8280016001018555821561412d579182015b8281111561412c578251825591602001919060010190614111565b5b50905061413a91906142d1565b5090565b82805461414a90614ea9565b90600052602060002090601f01602090048101928261416c57600085556141b3565b82601f1061418557805160ff19168380011785556141b3565b828001600101855582156141b3579182015b828111156141b2578251825591602001919060010190614197565b5b5090506141c091906142d1565b5090565b5080546141d090614ea9565b6000825580601f106141e25750614201565b601f01602090049060005260206000209081019061420091906142d1565b5b50565b82805461421090614ea9565b90600052602060002090601f0160209004810192826142325760008555614280565b82601f106142435780548555614280565b8280016001018555821561428057600052602060002091601f016020900482015b8281111561427f578254825591600101919060010190614264565b5b50905061428d91906142d1565b5090565b50805461429d90614ea9565b6000825580601f106142af57506142ce565b601f0160209004906000526020600020908101906142cd91906142d1565b5b50565b5b808211156142ea5760008160009055506001016142d2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061432d82614302565b9050919050565b61433d81614322565b811461434857600080fd5b50565b60008135905061435a81614334565b92915050565b600060208284031215614376576143756142f8565b5b60006143848482850161434b565b91505092915050565b61439681614322565b82525050565b60006020820190506143b1600083018461438d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126143dc576143db6143b7565b5b8235905067ffffffffffffffff8111156143f9576143f86143bc565b5b602083019150836001820283011115614415576144146143c1565b5b9250929050565b60008060208385031215614433576144326142f8565b5b600083013567ffffffffffffffff811115614451576144506142fd565b5b61445d858286016143c6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61449e81614322565b82525050565b60008115159050919050565b6144b9816144a4565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156144f95780820151818401526020810190506144de565b83811115614508576000848401525b50505050565b6000601f19601f8301169050919050565b600061452a826144bf565b61453481856144ca565b93506145448185602086016144db565b61454d8161450e565b840191505092915050565b60006060830160008301516145706000860182614495565b50602083015161458360208601826144b0565b506040830151848203604086015261459b828261451f565b9150508091505092915050565b60006145b48383614558565b905092915050565b6000602082019050919050565b60006145d482614469565b6145de8185614474565b9350836020820285016145f085614485565b8060005b8581101561462c578484038952815161460d85826145a8565b9450614618836145bc565b925060208a019950506001810190506145f4565b50829750879550505050505092915050565b6000602082019050818103600083015261465881846145c9565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61469d8261450e565b810181811067ffffffffffffffff821117156146bc576146bb614665565b5b80604052505050565b60006146cf6142ee565b90506146db8282614694565b919050565b600067ffffffffffffffff8211156146fb576146fa614665565b5b6147048261450e565b9050602081019050919050565b82818337600083830152505050565b600061473361472e846146e0565b6146c5565b90508281526020810184848401111561474f5761474e614660565b5b61475a848285614711565b509392505050565b600082601f830112614777576147766143b7565b5b8135614787848260208601614720565b91505092915050565b600067ffffffffffffffff8211156147ab576147aa614665565b5b6147b48261450e565b9050602081019050919050565b60006147d46147cf84614790565b6146c5565b9050828152602081018484840111156147f0576147ef614660565b5b6147fb848285614711565b509392505050565b600082601f830112614818576148176143b7565b5b81356148288482602086016147c1565b91505092915050565b60008060408385031215614848576148476142f8565b5b600083013567ffffffffffffffff811115614866576148656142fd565b5b61487285828601614762565b925050602083013567ffffffffffffffff811115614893576148926142fd565b5b61489f85828601614803565b9150509250929050565b600080604083850312156148c0576148bf6142f8565b5b600083013567ffffffffffffffff8111156148de576148dd6142fd565b5b6148ea85828601614762565b92505060206148fb8582860161434b565b9150509250929050565b61490e816144a4565b82525050565b600082825260208201905092915050565b6000614930826144bf565b61493a8185614914565b935061494a8185602086016144db565b6149538161450e565b840191505092915050565b6000606082019050614973600083018661438d565b6149806020830185614905565b81810360408301526149928184614925565b9050949350505050565b600081519050919050565b600082825260208201905092915050565b60006149c38261499c565b6149cd81856149a7565b93506149dd8185602086016144db565b6149e68161450e565b840191505092915050565b6000604082019050614a06600083018561438d565b8181036020830152614a1881846149b8565b90509392505050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000614a698261499c565b614a738185614a4d565b9350614a838185602086016144db565b614a8c8161450e565b840191505092915050565b6000819050919050565b614aaa81614a97565b82525050565b6000606083016000830151614ac86000860182614495565b5060208301518482036020860152614ae08282614a5e565b9150506040830151614af56040860182614aa1565b508091505092915050565b6000614b0c8383614ab0565b905092915050565b6000602082019050919050565b6000614b2c82614a21565b614b368185614a2c565b935083602082028501614b4885614a3d565b8060005b85811015614b845784840389528151614b658582614b00565b9450614b7083614b14565b925060208a01995050600181019050614b4c565b50829750879550505050505092915050565b60006020820190508181036000830152614bb08184614b21565b905092915050565b614bc181614a97565b8114614bcc57600080fd5b50565b600081359050614bde81614bb8565b92915050565b600060208284031215614bfa57614bf96142f8565b5b6000614c0884828501614bcf565b91505092915050565b614c1a81614a97565b82525050565b6000606082019050614c35600083018661438d565b8181036020830152614c4781856149b8565b9050614c566040830184614c11565b949350505050565b60008060408385031215614c7557614c746142f8565b5b6000614c838582860161434b565b925050602083013567ffffffffffffffff811115614ca457614ca36142fd565b5b614cb085828601614762565b9150509250929050565b600060208284031215614cd057614ccf6142f8565b5b600082013567ffffffffffffffff811115614cee57614ced6142fd565b5b614cfa84828501614762565b91505092915050565b6000602082019050614d186000830184614905565b92915050565b7f4d616e61676572733a2000000000000000000000000000000000000000000000815250565b600081905092915050565b6000614d5a8261499c565b614d648185614d44565b9350614d748185602086016144db565b80840191505092915050565b6000614d8b82614d1e565b600a82019150614d9b8284614d4f565b915081905092915050565b7f4d616e6167657232000000000000000000000000000000000000000000000000600082015250565b6000614ddc6008836149a7565b9150614de782614da6565b602082019050919050565b6000608082019050614e07600083018661438d565b8181036020830152614e1881614dcf565b9050614e27604083018561438d565b614e346060830184614905565b949350505050565b6000614e488385614d44565b9350614e55838584614711565b82840190509392505050565b6000614e6e828486614e3c565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ec157607f821691505b60208210811415614ed557614ed4614e7a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d616e6167657234000000000000000000000000000000000000000000000000600082015250565b6000614f406008836149a7565b9150614f4b82614f0a565b602082019050919050565b6000608082019050614f6b600083018661438d565b8181036020830152614f7c81614f33565b9050614f8b604083018561438d565b614f986060830184614905565b949350505050565b7f4d616e6167657233000000000000000000000000000000000000000000000000600082015250565b6000614fd66008836149a7565b9150614fe182614fa0565b602082019050919050565b6000608082019050615001600083018661438d565b818103602083015261501281614fc9565b9050615021604083018561438d565b61502e6060830184614905565b949350505050565b7f4d616e6167657235000000000000000000000000000000000000000000000000600082015250565b600061506c6008836149a7565b915061507782615036565b602082019050919050565b6000608082019050615097600083018661438d565b81810360208301526150a88161505f565b90506150b7604083018561438d565b6150c46060830184614905565b949350505050565b60006150d88284614d4f565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061511d82614a97565b91506000821415615131576151306150e3565b5b600182039050919050565b7f4d616e6167657231000000000000000000000000000000000000000000000000600082015250565b60006151726008836149a7565b915061517d8261513c565b602082019050919050565b600060808201905061519d600083018661438d565b81810360208301526151ae81615165565b90506151bd604083018561438d565b6151ca6060830184614905565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061522e6026836149a7565b9150615239826151d2565b604082019050919050565b6000602082019050818103600083015261525d81615221565b9050919050565b60008190508160005260206000209050919050565b6000815461528681614ea9565b6152908186614d44565b945060018216600081146152ab57600181146152bc576152ef565b60ff198316865281860193506152ef565b6152c585615264565b60005b838110156152e7578154818901526001820191506020810190506152c8565b838801955050505b50505092915050565b7f3a20000000000000000000000000000000000000000000000000000000000000815250565b600061532a8284615279565b9150615335826152f8565b60028201915081905092915050565b60006153508285614d4f565b915061535c8284614d4f565b91508190509392505050565b600061537382614a97565b915061537e83614a97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153b3576153b26150e3565b5b828201905092915050565b7f4d414e41474552533a20556e7472757374656420736f75726365000000000000600082015250565b60006153f4601a836149a7565b91506153ff826153be565b602082019050919050565b60006020820190508181036000830152615423816153e7565b9050919050565b600061543582614a97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615468576154676150e3565b5b600182019050919050565b6000815461548081614ea9565b61548a81866149a7565b945060018216600081146154a557600181146154b7576154ea565b60ff19831686526020860193506154ea565b6154c085615264565b60005b838110156154e2578154818901526001820191506020810190506154c3565b808801955050505b50505092915050565b6000608082019050615508600083018761438d565b818103602083015261551a8186615473565b9050818103604083015261552e81856149b8565b905081810360608301526155428184614925565b905095945050505050565b600061555882614a97565b915061556383614a97565b925082821015615576576155756150e3565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600060208201905081810360008301526155ca81846149b8565b905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006156086020836149a7565b9150615613826155d2565b602082019050919050565b60006020820190508181036000830152615637816155fb565b905091905056fea26469706673582212206953c34ff8caedff4e4d15e7b69be5fab6f4870dd8dcf85d2a3cd60a6d99f25e64736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003f882c522f1626729b692714b983610bc09af53c0000000000000000000000008fe28316d5517e053320091a5d10c75ae555629b000000000000000000000000b1e59c47c6d63da81ccd53aa5720113c3ff8ad45000000000000000000000000f60aadd13de39c28a75fcd41265ddc821298ee92000000000000000000000000e7521950426479d525381940604d27aec12fe97a
-----Decoded View---------------
Arg [0] : _manager1 (address): 0x3f882C522F1626729B692714b983610bC09Af53C
Arg [1] : _manager2 (address): 0x8fE28316d5517E053320091a5d10C75aE555629B
Arg [2] : _manager3 (address): 0xB1E59c47C6d63da81Ccd53Aa5720113C3FF8AD45
Arg [3] : _manager4 (address): 0xf60aAdd13DE39C28A75fCd41265DDc821298ee92
Arg [4] : _manager5 (address): 0xE7521950426479d525381940604D27aeC12FE97a
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000003f882c522f1626729b692714b983610bc09af53c
Arg [1] : 0000000000000000000000008fe28316d5517e053320091a5d10c75ae555629b
Arg [2] : 000000000000000000000000b1e59c47c6d63da81ccd53aa5720113c3ff8ad45
Arg [3] : 000000000000000000000000f60aadd13de39c28a75fcd41265ddc821298ee92
Arg [4] : 000000000000000000000000e7521950426479d525381940604d27aec12fe97a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$135.50
Net Worth in ETH
Token Allocations
BNB
100.00%
Multichain Portfolio | 35 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.