Latest 25 from a total of 246 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Unwrap | 43112115 | 2 hrs ago | IN | 0 ETH | 0.00000098 | ||||
| Unwrap | 43071528 | 25 hrs ago | IN | 0 ETH | 0.00000026 | ||||
| Wrap | 43028730 | 2 days ago | IN | 0 ETH | 0.00000084 | ||||
| Wrap | 43028722 | 2 days ago | IN | 0 ETH | 0.00000046 | ||||
| Wrap | 43028716 | 2 days ago | IN | 0 ETH | 0.00000075 | ||||
| Wrap | 43015934 | 2 days ago | IN | 0 ETH | 0.00000084 | ||||
| Wrap | 43009765 | 2 days ago | IN | 0 ETH | 0.00000065 | ||||
| Wrap | 43009756 | 2 days ago | IN | 0 ETH | 0.00000106 | ||||
| Wrap | 42955542 | 3 days ago | IN | 0 ETH | 0.00000106 | ||||
| Wrap | 42955527 | 3 days ago | IN | 0 ETH | 0.0000006 | ||||
| Wrap | 42955515 | 3 days ago | IN | 0 ETH | 0.00000099 | ||||
| Wrap | 42954825 | 3 days ago | IN | 0 ETH | 0.00000109 | ||||
| Wrap | 42954822 | 3 days ago | IN | 0 ETH | 0.0000006 | ||||
| Wrap | 42954807 | 3 days ago | IN | 0 ETH | 0.00000099 | ||||
| Approve | 42951509 | 3 days ago | IN | 0 ETH | 0.00000032 | ||||
| Transfer | 42951495 | 3 days ago | IN | 0 ETH | 0.00000042 | ||||
| Transfer | 42951480 | 3 days ago | IN | 0 ETH | 0.00000054 | ||||
| Wrap | 42951464 | 3 days ago | IN | 0 ETH | 0.00000084 | ||||
| Wrap | 42951461 | 3 days ago | IN | 0 ETH | 0.00000046 | ||||
| Wrap | 42951445 | 3 days ago | IN | 0 ETH | 0.00000075 | ||||
| Wrap | 42939080 | 4 days ago | IN | 0 ETH | 0.00000084 | ||||
| Wrap | 42939071 | 4 days ago | IN | 0 ETH | 0.00000046 | ||||
| Wrap | 42939068 | 4 days ago | IN | 0 ETH | 0.00000075 | ||||
| Wrap | 42898867 | 5 days ago | IN | 0 ETH | 0.00000072 | ||||
| Wrap | 42898857 | 5 days ago | IN | 0 ETH | 0.00000046 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
WFIO
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at basescan.org on 2025-10-30
*/
// SPDX-License-Identifier: MIT
// Flattened from Etherscan: 0xbea269038eb75bdab47a9c04d0f5c572d94b93d5
pragma solidity 0.8.7;
// File: @openzeppelin/contracts/utils/introspection/IERC165.sol
interface IERC165 {
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
// File: @openzeppelin/contracts/utils/introspection/ERC165.sol
abstract contract ERC165 is IERC165 {
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}
// File: @openzeppelin/contracts/utils/Strings.sol
library Strings {
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
function toString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0";
}
uint256 temp = value;
uint256 digits;
while (temp != 0) {
digits++;
temp /= 10;
}
bytes memory buffer = new bytes(digits);
while (value != 0) {
digits -= 1;
buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
value /= 10;
}
return string(buffer);
}
function toHexString(uint256 value) internal pure returns (string memory) {
if (value == 0) {
return "0x00";
}
uint256 temp = value;
uint256 length = 0;
while (temp != 0) {
length++;
temp >>= 8;
}
return toHexString(value, length);
}
function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
bytes memory buffer = new bytes(2 * length + 2);
buffer[0] = "0";
buffer[1] = "x";
for (uint256 i = 2 * length + 1; i > 1; --i) {
buffer[i] = _HEX_SYMBOLS[value & 0xf];
value >>= 4;
}
require(value == 0, "Strings: hex length insufficient");
return string(buffer);
}
function toHexString(address addr) internal pure returns (string memory) {
return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
}
}
// File: @openzeppelin/contracts/utils/Context.sol
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
}
_balances[to] += amount;
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
// File: @openzeppelin/contracts/security/Pausable.sol
abstract contract Pausable is Context {
event Paused(address account);
event Unpaused(address account);
bool private _paused;
constructor() {
_paused = false;
}
modifier whenNotPaused() {
_requireNotPaused();
_;
}
modifier whenPaused() {
_requirePaused();
_;
}
function paused() public view virtual returns (bool) {
return _paused;
}
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol
abstract contract ERC20Pausable is ERC20, Pausable {
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
super._beforeTokenTransfer(from, to, amount);
require(!paused(), "ERC20Pausable: token transfer while paused");
}
}
// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol
abstract contract ERC20Burnable is Context, ERC20 {
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
function burnFrom(address account, uint256 amount) public virtual {
_spendAllowance(account, _msgSender(), amount);
_burn(account, amount);
}
}
// File: @openzeppelin/contracts/access/IAccessControl.sol
interface IAccessControl {
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
function hasRole(bytes32 role, address account) external view returns (bool);
function getRoleAdmin(bytes32 role) external view returns (bytes32);
function grantRole(bytes32 role, address account) external;
function revokeRole(bytes32 role, address account) external;
function renounceRole(bytes32 role, address account) external;
}
// File: @openzeppelin/contracts/access/AccessControl.sol
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address => bool) members;
bytes32 adminRole;
}
mapping(bytes32 => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
modifier onlyRole(bytes32 role) {
_checkRole(role);
_;
}
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
}
function hasRole(bytes32 role, address account) public view virtual override returns (bool) {
return _roles[role].members[account];
}
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert(
string(
abi.encodePacked(
"AccessControl: account ",
Strings.toHexString(uint160(account), 20),
" is missing role ",
Strings.toHexString(uint256(role), 32)
)
)
);
}
}
function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {
return _roles[role].adminRole;
}
function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
_grantRole(role, account);
}
function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
_revokeRole(role, account);
}
function renounceRole(bytes32 role, address account) public virtual override {
require(account == _msgSender(), "AccessControl: can only renounce roles for self");
_revokeRole(role, account);
}
function _setupRole(bytes32 role, address account) internal virtual {
_grantRole(role, account);
}
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
}
function _grantRole(bytes32 role, address account) internal virtual {
if (!hasRole(role, account)) {
_roles[role].members[account] = true;
emit RoleGranted(role, account, _msgSender());
}
}
function _revokeRole(bytes32 role, address account) internal virtual {
if (hasRole(role, account)) {
_roles[role].members[account] = false;
emit RoleRevoked(role, account, _msgSender());
}
}
}
// File: contracts/wfio.sol
contract WFIO is ERC20Burnable, ERC20Pausable, AccessControl {
uint256 constant MINTABLE = 1e18;
bytes32 public constant ORACLE_ROLE = keccak256("ORACLE_ROLE");
bytes32 public constant OWNER_ROLE = keccak256("OWNER_ROLE");
bytes32 public constant CUSTODIAN_ROLE = keccak256("CUSTODIAN_ROLE");
enum ApprovalType {
Wrap,
AddOracle,
RemoveOracle,
AddCustodian,
RemoveCustodian
}
struct pending {
mapping (address => bool) approved;
uint32 approvals;
address account;
uint256 amount;
bool complete;
}
uint32 custodian_count;
uint32 oracle_count;
event unwrapped(string fioaddress, uint256 amount);
event wrapped(address account, uint256 amount, string obtid);
event custodian_unregistered(address account, bytes32 indexhash);
event custodian_registered(address account, bytes32 indexhash);
event oracle_unregistered(address account, bytes32 indexhash);
event oracle_registered(address account, bytes32 indexhash);
event consensus_activity(string signer, address account, string obtid, bytes32 indexhash);
address[] oraclelist;
address[] custodianlist;
mapping ( bytes32 => pending) approvals;
constructor(uint256 _initialSupply, address[] memory newcustodians ) ERC20("FIO Protocol", "wFIO") {
require(newcustodians.length == 10, "wFIO cannot deploy without 10 custodians");
_mint(msg.sender, _initialSupply);
_grantRole(OWNER_ROLE, msg.sender);
for (uint8 i = 0; i < 10; i++ ) {
require(!hasRole(CUSTODIAN_ROLE, newcustodians[i]), "Custodian already registered");
require(!hasRole(OWNER_ROLE, newcustodians[i]), "Owner role cannot be custodian");
_grantRole(CUSTODIAN_ROLE, newcustodians[i]);
custodianlist.push(newcustodians[i]);
}
custodian_count = 10;
oracle_count = 0;
}
function pause() external onlyRole(CUSTODIAN_ROLE) whenNotPaused{
_pause();
}
function unpause() external onlyRole(CUSTODIAN_ROLE)whenPaused{
_unpause();
}
function getConsensus(bytes32 hash, uint8 Type, address account, uint256 amount) internal returns (bool){
require(!approvals[hash].complete, "Approval already complete");
uint32 APPROVALS_NEEDED = oracle_count;
if (Type == 1) {
APPROVALS_NEEDED = custodian_count * 2 / 3 + 1;
}
if (approvals[hash].approvals == 0) {
approvals[hash].amount = amount;
approvals[hash].account = account;
}
if (approvals[hash].approvals < APPROVALS_NEEDED) {
require(!approvals[hash].approved[msg.sender], "oracle has already approved this hash");
approvals[hash].approved[msg.sender] = true;
approvals[hash].approvals++;
if (approvals[hash].approvals >= APPROVALS_NEEDED) {
require(approvals[hash].approved[msg.sender], "An approving oracle must execute");
approvals[hash].complete = true;
return approvals[hash].complete;
}
}
return approvals[hash].complete;
}
function wrap(address account, uint256 amount, string memory obtid) external onlyRole(ORACLE_ROLE) whenNotPaused{
require(amount < MINTABLE);
require(bytes(obtid).length > 0, "Invalid obtid");
require(account != address(0), "Invalid account");
require(oracle_count >= 3, "Oracles must be 3 or greater");
bytes32 indexhash = keccak256(bytes(abi.encode(ApprovalType.Wrap, obtid, amount, account)));
if (getConsensus(indexhash, 0, account, amount)) {
_mint(account, amount);
emit wrapped(account, amount, obtid);
}
emit consensus_activity("oracle", msg.sender, obtid, indexhash);
}
function unwrap(string memory fioaddress, uint256 amount) external whenNotPaused{
require(bytes(fioaddress).length > 3 && bytes(fioaddress).length <= 64, "Invalid FIO Address");
_burn(msg.sender, amount);
emit unwrapped(fioaddress, amount);
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Pausable) {
require(to != address(this), "Contract cannot receive tokens");
super._beforeTokenTransfer(from, to, amount);
}
function getCustodian(address account) external view returns (bool, uint32) {
require(account != address(0), "Invalid address");
return (hasRole(CUSTODIAN_ROLE, account), custodian_count);
}
function getOracle(address account) external view returns (bool, uint32) {
require(account != address(0), "Invalid address");
return (hasRole(ORACLE_ROLE, account), uint32(oraclelist.length));
}
function getOracles() external view returns(address[] memory) {
return oraclelist;
}
function getApproval(bytes memory indexhash) external view returns (uint32, address, uint256, address[] memory) {
require(indexhash.length > 0, "Invalid obtid");
address[] memory approvedOracles = new address[](approvals[bytes32(indexhash)].approvals);
uint32 c = 0;
for(uint32 i = 0; i < oraclelist.length; i++) {
if (approvals[bytes32(indexhash)].approved[oraclelist[i]]) {
approvedOracles[c] = oraclelist[i];
c++;
}
}
return (approvals[bytes32(indexhash)].approvals, approvals[bytes32(indexhash)].account, approvals[bytes32(indexhash)].amount, approvedOracles);
}
function regoracle(address account) external onlyRole(CUSTODIAN_ROLE) {
require(account != address(0), "Invalid address");
require(account != msg.sender, "Cannot register self");
require(!hasRole(ORACLE_ROLE, account), "Oracle already registered");
bytes32 indexhash = keccak256(bytes(abi.encode(ApprovalType.AddOracle,account )));
if (getConsensus(indexhash, 1, account, 0)){
_grantRole(ORACLE_ROLE, account);
oracle_count++;
oraclelist.push(account);
emit oracle_registered(account, indexhash);
}
emit consensus_activity("custodian", msg.sender, "", indexhash);
}
function unregoracle(address account) external onlyRole(CUSTODIAN_ROLE) {
require(account != address(0), "Invalid address");
require(oracle_count > 3, "Minimum 3 oracles required");
bytes32 indexhash = keccak256(bytes(abi.encode(ApprovalType.RemoveOracle,account)));
require(hasRole(ORACLE_ROLE, account), "Oracle not registered");
if ( getConsensus(indexhash, 1, account, 0)) {
_revokeRole(ORACLE_ROLE, account);
oracle_count--;
for(uint16 i = 0; i < oraclelist.length; i++) {
if(oraclelist[i] == account) {
oraclelist[i] = oraclelist[oraclelist.length - 1];
oraclelist.pop();
break;
}
}
emit oracle_unregistered(account, indexhash);
}
emit consensus_activity("custodian", msg.sender, "", indexhash);
}
function regcust(address account) external onlyRole(CUSTODIAN_ROLE) {
require(account != address(0), "Invalid address");
require(account != msg.sender, "Cannot register self");
bytes32 indexhash = keccak256(bytes(abi.encode(ApprovalType.AddCustodian,account)));
require(!hasRole(CUSTODIAN_ROLE, account), "Already registered");
if (getConsensus(indexhash, 1, account, 0)) {
_grantRole(CUSTODIAN_ROLE, account);
custodian_count++;
custodianlist.push(account);
emit custodian_registered(account, indexhash);
}
emit consensus_activity("custodian", msg.sender, "", indexhash);
}
function unregcust(address account) external onlyRole(CUSTODIAN_ROLE) {
require(account != address(0), "Invalid address");
require(hasRole(CUSTODIAN_ROLE, account), "Custodian not registered");
require(custodian_count > 7, "Must contain 7 custodians");
bytes32 indexhash = keccak256(bytes(abi.encode(ApprovalType.RemoveCustodian,account)));
require(hasRole(CUSTODIAN_ROLE, account), "Already unregistered");
if (getConsensus(indexhash, 1, account, 0)) {
_revokeRole(CUSTODIAN_ROLE, account);
custodian_count--;
for(uint16 i = 0; i < custodianlist.length; i++) {
if(custodianlist[i] == account) {
custodianlist[i] = custodianlist[custodianlist.length - 1];
custodianlist.pop();
break;
}
}
emit custodian_unregistered(account, indexhash);
}
emit consensus_activity("custodian", msg.sender, "", indexhash);
}
receive () external payable {
revert();
}
function changeOwner(address account) external onlyRole(OWNER_ROLE) {
_revokeRole(OWNER_ROLE, msg.sender);
_grantRole(OWNER_ROLE, account);
}
function decimals() public view virtual override returns (uint8) {
return 9;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"address[]","name":"newcustodians","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"signer","type":"string"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"string","name":"obtid","type":"string"},{"indexed":false,"internalType":"bytes32","name":"indexhash","type":"bytes32"}],"name":"consensus_activity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"indexhash","type":"bytes32"}],"name":"custodian_registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"indexhash","type":"bytes32"}],"name":"custodian_unregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"indexhash","type":"bytes32"}],"name":"oracle_registered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"indexhash","type":"bytes32"}],"name":"oracle_unregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"fioaddress","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unwrapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"obtid","type":"string"}],"name":"wrapped","type":"event"},{"inputs":[],"name":"CUSTODIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"indexhash","type":"bytes"}],"name":"getApproval","outputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCustodian","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getOracle","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracles","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"regcust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"regoracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unregcust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unregoracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fioaddress","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"obtid","type":"string"}],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200391b3803806200391b833981016040819052620000349162000694565b604080518082018252600c81526b119253c8141c9bdd1bd8dbdb60a21b6020808301918252835180850190945260048452637746494f60e01b9084015281519192916200008491600391620005d1565b5080516200009a906004906020840190620005d1565b50506005805460ff19169055508051600a146200010f5760405162461bcd60e51b815260206004820152602860248201527f7746494f2063616e6e6f74206465706c6f7920776974686f757420313020637560448201526773746f6469616e7360c01b60648201526084015b60405180910390fd5b6200011b338362000316565b62000136600080516020620038fb833981519152336200040a565b60005b600a8160ff161015620002fa5762000186600080516020620038db833981519152838360ff16815181106200017257620001726200080c565b6020026020010151620004ae60201b60201c565b15620001d55760405162461bcd60e51b815260206004820152601c60248201527f437573746f6469616e20616c7265616479207265676973746572656400000000604482015260640162000106565b62000201600080516020620038fb833981519152838360ff16815181106200017257620001726200080c565b15620002505760405162461bcd60e51b815260206004820152601e60248201527f4f776e657220726f6c652063616e6e6f7420626520637573746f6469616e0000604482015260640162000106565b62000290600080516020620038db833981519152838360ff16815181106200027c576200027c6200080c565b60200260200101516200040a60201b60201c565b6009828260ff1681518110620002aa57620002aa6200080c565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b0390921691909117905580620002f181620007d3565b91505062000139565b5050600780546001600160401b031916600a1790555062000838565b6001600160a01b0382166200036e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000106565b6200037c60008383620004d9565b80600260008282546200039091906200077b565b90915550506001600160a01b03821660009081526020819052604081208054839290620003bf9084906200077b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16620004065760008281526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200046a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6001600160a01b038216301415620005345760405162461bcd60e51b815260206004820152601e60248201527f436f6e74726163742063616e6e6f74207265636569766520746f6b656e730000604482015260640162000106565b6200054c8383836200055160201b62001b1f1760201c565b505050565b620005698383836200054c60201b6200088c1760201c565b60055460ff16156200054c5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b606482015260840162000106565b828054620005df9062000796565b90600052602060002090601f0160209004810192826200060357600085556200064e565b82601f106200061e57805160ff19168380011785556200064e565b828001600101855582156200064e579182015b828111156200064e57825182559160200191906001019062000631565b506200065c92915062000660565b5090565b5b808211156200065c576000815560010162000661565b80516001600160a01b03811681146200068f57600080fd5b919050565b60008060408385031215620006a857600080fd5b8251602080850151919350906001600160401b0380821115620006ca57600080fd5b818601915086601f830112620006df57600080fd5b815181811115620006f457620006f462000822565b8060051b604051601f19603f830116810181811085821117156200071c576200071c62000822565b604052828152858101935084860182860187018b10156200073c57600080fd5b600095505b838610156200076a57620007558162000677565b85526001959095019493860193860162000741565b508096505050505050509250929050565b60008219821115620007915762000791620007f6565b500190565b600181811c90821680620007ab57607f821691505b60208210811415620007cd57634e487b7160e01b600052602260045260246000fd5b50919050565b600060ff821660ff811415620007ed57620007ed620007f6565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61309380620008486000396000f3fe60806040526004361061021e5760003560e01c806379cc679011610123578063a9059cbb116100ab578063da4baecb1161006f578063da4baecb14610669578063dd62ed3e14610689578063e5690a99146106a9578063e58378bb146106c9578063ff3e34a5146106eb57600080fd5b8063a9059cbb146105c7578063c0bcfe9c146105e7578063c79445d014610607578063cb5aa7e914610629578063d547741f1461064957600080fd5b806395d89b41116100f257806395d89b411461052d578063a217fddf14610542578063a457c2d714610557578063a6f9dae114610577578063a7bf70b91461059757600080fd5b806379cc6790146104b85780638456cb59146104d85780638c70c3bd146104ed57806391d148541461050d57600080fd5b8063313ce567116101a657806340884c521161017557806340884c521461040857806342966c681461042a5780634fdcaca61461044a5780635c975abb1461046a57806370a082311461048257600080fd5b8063313ce5671461039757806336568abe146103b357806339509351146103d35780633f4ba83a146103f357600080fd5b806310d3d22e116101ed57806310d3d22e146102d457806318160ddd1461031057806323b872dd14610325578063248a9ca3146103455780632f2ff15d1461037557600080fd5b806301ffc9a71461022d57806306fdde031461026257806307e2cea514610284578063095ea7b3146102b457600080fd5b3661022857600080fd5b600080fd5b34801561023957600080fd5b5061024d610248366004612a89565b61070b565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b50610277610742565b6040516102599190612cf2565b34801561029057600080fd5b506102a660008051602061303e83398151915281565b604051908152602001610259565b3480156102c057600080fd5b5061024d6102cf3660046129cc565b6107d4565b3480156102e057600080fd5b506102f46102ef366004612942565b6107ec565b60408051921515835263ffffffff909116602083015201610259565b34801561031c57600080fd5b506002546102a6565b34801561033157600080fd5b5061024d610340366004612990565b610843565b34801561035157600080fd5b506102a6610360366004612a4d565b60009081526006602052604090206001015490565b34801561038157600080fd5b50610395610390366004612a66565b610867565b005b3480156103a357600080fd5b5060405160098152602001610259565b3480156103bf57600080fd5b506103956103ce366004612a66565b610891565b3480156103df57600080fd5b5061024d6103ee3660046129cc565b61090f565b3480156103ff57600080fd5b50610395610931565b34801561041457600080fd5b5061041d61095c565b6040516102599190612c78565b34801561043657600080fd5b50610395610445366004612a4d565b6109bd565b34801561045657600080fd5b50610395610465366004612942565b6109c7565b34801561047657600080fd5b5060055460ff1661024d565b34801561048e57600080fd5b506102a661049d366004612942565b6001600160a01b031660009081526020819052604090205490565b3480156104c457600080fd5b506103956104d33660046129cc565b610d1f565b3480156104e457600080fd5b50610395610d34565b3480156104f957600080fd5b50610395610508366004612afc565b610d5c565b34801561051957600080fd5b5061024d610528366004612a66565b610e00565b34801561053957600080fd5b50610277610e2b565b34801561054e57600080fd5b506102a6600081565b34801561056357600080fd5b5061024d6105723660046129cc565b610e3a565b34801561058357600080fd5b50610395610592366004612942565b610eb5565b3480156105a357600080fd5b506105b76105b2366004612ab3565b610efd565b6040516102599493929190612d9e565b3480156105d357600080fd5b5061024d6105e23660046129cc565b611140565b3480156105f357600080fd5b50610395610602366004612942565b61114e565b34801561061357600080fd5b506102a6600080516020612ffe83398151915281565b34801561063557600080fd5b506102f4610644366004612942565b61134a565b34801561065557600080fd5b50610395610664366004612a66565b61139f565b34801561067557600080fd5b506103956106843660046129f6565b6113c4565b34801561069557600080fd5b506102a66106a436600461295d565b6115ae565b3480156106b557600080fd5b506103956106c4366004612942565b6115d9565b3480156106d557600080fd5b506102a660008051602061301e83398151915281565b3480156106f757600080fd5b50610395610706366004612942565b6117e8565b60006001600160e01b03198216637965db0b60e01b148061073c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461075190612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461077d90612f38565b80156107ca5780601f1061079f576101008083540402835291602001916107ca565b820191906000526020600020905b8154815290600101906020018083116107ad57829003601f168201915b5050505050905090565b6000336107e2818585611b85565b5060019392505050565b6000806001600160a01b03831661081e5760405162461bcd60e51b815260040161081590612d27565b60405180910390fd5b61083660008051602061303e83398151915284610e00565b6008549094909350915050565b600033610851858285611ca9565b61085c858585611d23565b506001949350505050565b60008281526006602052604090206001015461088281611efc565b61088c8383611f06565b505050565b6001600160a01b03811633146109015760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610815565b61090b8282611f8c565b5050565b6000336107e281858561092283836115ae565b61092c9190612ddb565b611b85565b600080516020612ffe83398151915261094981611efc565b610951611ff3565b61095961203e565b50565b606060088054806020026020016040519081016040528092919081815260200182805480156107ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610996575050505050905090565b6109593382612090565b600080516020612ffe8339815191526109df81611efc565b6001600160a01b038216610a055760405162461bcd60e51b815260040161081590612d27565b600754600364010000000090910463ffffffff1611610a665760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2033206f7261636c65732072657175697265640000000000006044820152606401610815565b6000600283604051602001610a7c929190612c8b565b604051602081830303815290604052805190602001209050610aac60008051602061303e83398151915284610e00565b610af05760405162461bcd60e51b815260206004820152601560248201527413dc9858db19481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610815565b610afe8160018560006121ea565b15610cb257610b1b60008051602061303e83398151915284611f8c565b60078054640100000000900463ffffffff16906004610b3983612f18565b91906101000a81548163ffffffff021916908363ffffffff1602179055505060005b60085461ffff82161015610c6d57836001600160a01b031660088261ffff1681548110610b8a57610b8a612fd1565b6000918252602090912001546001600160a01b03161415610c5b5760088054610bb590600190612e97565b81548110610bc557610bc5612fd1565b600091825260209091200154600880546001600160a01b039092169161ffff8416908110610bf557610bf5612fd1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506008805480610c3457610c34612fbb565b600082815260209020810160001990810180546001600160a01b0319169055019055610c6d565b80610c6581612f6d565b915050610b5b565b50604080516001600160a01b0385168152602081018390527fe4d21301551b3d87dc269fc8b9d5a5c1432831c3c321ef19570b8a93a10cb52291015b60405180910390a15b6040805160808082526009908201526831bab9ba37b234b0b760b91b60a082015233602082015260c08183018190526000908201526060810183905290517f3be8840aec3e3998ee1e020dd20a8ea88430534d4e16feeeb1762ea4428464cd9181900360e00190a1505050565b610d2a823383611ca9565b61090b8282612090565b600080516020612ffe833981519152610d4c81611efc565b610d546124b7565b6109596124fd565b610d646124b7565b60038251118015610d7757506040825111155b610db95760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642046494f204164647265737360681b6044820152606401610815565b610dc33382612090565b7fcbc81eff77955b99685533d29441743baaced5a53ed539d634490e5380a8dcf08282604051610df4929190612d05565b60405180910390a15050565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461075190612f38565b60003381610e4882866115ae565b905083811015610ea85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610815565b61085c8286868403611b85565b60008051602061301e833981519152610ecd81611efc565b610ee560008051602061301e83398151915233611f8c565b61090b60008051602061301e83398151915283611f06565b600080600060606000855111610f455760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081bd89d1a59609a1b6044820152606401610815565b6000600a81610f5388612eae565b815260208101919091526040016000206001015463ffffffff1667ffffffffffffffff811115610f8557610f85612fe7565b604051908082528060200260200182016040528015610fae578160200160208202803683370190505b5090506000805b60085463ffffffff821610156110b257600a6000610fd28a612eae565b8152602001908152602001600020600001600060088363ffffffff1681548110610ffe57610ffe612fd1565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156110a05760088163ffffffff168154811061104457611044612fd1565b9060005260206000200160009054906101000a90046001600160a01b0316838363ffffffff168151811061107a5761107a612fd1565b6001600160a01b03909216602092830291909101909101528161109c81612f8f565b9250505b806110aa81612f8f565b915050610fb5565b50600a60006110c089612eae565b8152602081019190915260400160009081206001015463ffffffff1690600a906110e98a612eae565b815260200190815260200160002060010160049054906101000a90046001600160a01b0316600a60008a61111c90612eae565b81526020019081526020016000206002015484955095509550955050509193509193565b6000336107e2818585611d23565b600080516020612ffe83398151915261116681611efc565b6001600160a01b03821661118c5760405162461bcd60e51b815260040161081590612d27565b6001600160a01b0382163314156111dc5760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b3b4b9ba32b91039b2b63360611b6044820152606401610815565b60006003836040516020016111f2929190612c8b565b604051602081830303815290604052805190602001209050611222600080516020612ffe83398151915284610e00565b156112645760405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481c9959da5cdd195c995960721b6044820152606401610815565b6112728160018560006121ea565b15610cb25761128f600080516020612ffe83398151915284611f06565b6007805463ffffffff169060006112a583612f8f565b82546101009290920a63ffffffff81810219909316919092169190910217905550600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018390527f4f4b5dcea44dd9a0d4582de1f0b930ffdd296bd645df66b73ff1795f43e7dc119101610ca9565b6000806001600160a01b0383166113735760405162461bcd60e51b815260040161081590612d27565b61138b600080516020612ffe83398151915284610e00565b600754909463ffffffff9091169350915050565b6000828152600660205260409020600101546113ba81611efc565b61088c8383611f8c565b60008051602061303e8339815191526113dc81611efc565b6113e46124b7565b670de0b6b3a764000083106113f857600080fd5b60008251116114395760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081bd89d1a59609a1b6044820152606401610815565b6001600160a01b0384166114815760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081858d8dbdd5b9d608a1b6044820152606401610815565b600754600364010000000090910463ffffffff1610156114e35760405162461bcd60e51b815260206004820152601c60248201527f4f7261636c6573206d7573742062652033206f722067726561746572000000006044820152606401610815565b6000808385876040516020016114fc9493929190612cb1565b60405160208183030381529060405280519060200120905061152181600087876121ea565b1561156c57611530858561253a565b7fbfb8a2f9b4d8e8ed83a83aedac91756186665fbf1f57e39619d757180619bf9885858560405161156393929190612c48565b60405180910390a15b7f3be8840aec3e3998ee1e020dd20a8ea88430534d4e16feeeb1762ea4428464cd33848360405161159f93929190612d50565b60405180910390a15050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600080516020612ffe8339815191526115f181611efc565b6001600160a01b0382166116175760405162461bcd60e51b815260040161081590612d27565b6001600160a01b0382163314156116675760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b3b4b9ba32b91039b2b63360611b6044820152606401610815565b61167f60008051602061303e83398151915283610e00565b156116cc5760405162461bcd60e51b815260206004820152601960248201527f4f7261636c6520616c72656164792072656769737465726564000000000000006044820152606401610815565b60006001836040516020016116e2929190612c8b565b6040516020818303038152906040528051906020012090506117088160018560006121ea565b15610cb25761172560008051602061303e83398151915284611f06565b60078054640100000000900463ffffffff1690600461174383612f8f565b82546101009290920a63ffffffff81810219909316919092169190910217905550600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018390527ffde1904d2f36e8247a68b76a38b2dc6908f769438b6bb8f173ee39a2c01f2b589101610ca9565b600080516020612ffe83398151915261180081611efc565b6001600160a01b0382166118265760405162461bcd60e51b815260040161081590612d27565b61183e600080516020612ffe83398151915283610e00565b61188a5760405162461bcd60e51b815260206004820152601860248201527f437573746f6469616e206e6f74207265676973746572656400000000000000006044820152606401610815565b6007805463ffffffff16116118e15760405162461bcd60e51b815260206004820152601960248201527f4d75737420636f6e7461696e203720637573746f6469616e73000000000000006044820152606401610815565b60006004836040516020016118f7929190612c8b565b604051602081830303815290604052805190602001209050611927600080516020612ffe83398151915284610e00565b61196a5760405162461bcd60e51b8152602060048201526014602482015273105b1c9958591e481d5b9c9959da5cdd195c995960621b6044820152606401610815565b6119788160018560006121ea565b15610cb257611995600080516020612ffe83398151915284611f8c565b6007805463ffffffff169060006119ab83612f18565b91906101000a81548163ffffffff021916908363ffffffff1602179055505060005b60095461ffff82161015611adf57836001600160a01b031660098261ffff16815481106119fc576119fc612fd1565b6000918252602090912001546001600160a01b03161415611acd5760098054611a2790600190612e97565b81548110611a3757611a37612fd1565b600091825260209091200154600980546001600160a01b039092169161ffff8416908110611a6757611a67612fd1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506009805480611aa657611aa6612fbb565b600082815260209020810160001990810180546001600160a01b0319169055019055611adf565b80611ad781612f6d565b9150506119cd565b50604080516001600160a01b0385168152602081018390527f0cf142c25ce5b399a7953be52d40c8596def04c010697715ab9c72f4962d1a2d9101610ca9565b60055460ff161561088c5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610815565b6001600160a01b038316611be75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610815565b6001600160a01b038216611c485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610815565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611cb584846115ae565b90506000198114611d1d5781811015611d105760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610815565b611d1d8484848403611b85565b50505050565b6001600160a01b038316611d875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610815565b6001600160a01b038216611de95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610815565b611df4838383612625565b6001600160a01b03831660009081526020819052604090205481811015611e6c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610815565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ea3908490612ddb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eef91815260200190565b60405180910390a3611d1d565b6109598133612689565b611f108282610e00565b61090b5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611f483390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611f968282610e00565b1561090b5760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60055460ff1661203c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610815565b565b612046611ff3565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166120f05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610815565b6120fc82600083612625565b6001600160a01b038216600090815260208190526040902054818110156121705760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610815565b6001600160a01b038316600090815260208190526040812083830390556002805484929061219f908490612e97565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000848152600a602052604081206003015460ff161561224c5760405162461bcd60e51b815260206004820152601960248201527f417070726f76616c20616c726561647920636f6d706c657465000000000000006044820152606401610815565b600754640100000000900463ffffffff1660ff851660011415612298576007546003906122809063ffffffff166002612e6b565b61228a9190612e1b565b612295906001612df3565b90505b6000868152600a602052604090206001015463ffffffff166122f1576000868152600a60205260409020600281018490556001018054640100000000600160c01b0319166401000000006001600160a01b038716021790555b6000868152600a602052604090206001015463ffffffff80831691161015612497576000868152600a6020908152604080832033845290915290205460ff161561238b5760405162461bcd60e51b815260206004820152602560248201527f6f7261636c652068617320616c726561647920617070726f7665642074686973604482015264040d0c2e6d60db1b6064820152608401610815565b6000868152600a60208181526040808420338552808352908420805460ff191660019081179091558a85529290915201805463ffffffff16916123cd83612f8f565b82546101009290920a63ffffffff8181021990931691831602179091556000888152600a60205260409020600101548382169116109050612497576000868152600a6020908152604080832033845290915290205460ff166124715760405162461bcd60e51b815260206004820181905260248201527f416e20617070726f76696e67206f7261636c65206d75737420657865637574656044820152606401610815565b50506000848152600a60205260409020600301805460ff191660019081179091556124af565b50506000848152600a602052604090206003015460ff165b949350505050565b60055460ff161561203c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610815565b6125056124b7565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120733390565b6001600160a01b0382166125905760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610815565b61259c60008383612625565b80600260008282546125ae9190612ddb565b90915550506001600160a01b038216600090815260208190526040812080548392906125db908490612ddb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821630141561267e5760405162461bcd60e51b815260206004820152601e60248201527f436f6e74726163742063616e6e6f74207265636569766520746f6b656e7300006044820152606401610815565b61088c838383611b1f565b6126938282610e00565b61090b576126ab816001600160a01b031660146126ed565b6126b68360206126ed565b6040516020016126c7929190612bd3565b60408051601f198184030181529082905262461bcd60e51b825261081591600401612cf2565b606060006126fc836002612e4c565b612707906002612ddb565b67ffffffffffffffff81111561271f5761271f612fe7565b6040519080825280601f01601f191660200182016040528015612749576020820181803683370190505b509050600360fc1b8160008151811061276457612764612fd1565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061279357612793612fd1565b60200101906001600160f81b031916908160001a90535060006127b7846002612e4c565b6127c2906001612ddb565b90505b600181111561283a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106127f6576127f6612fd1565b1a60f81b82828151811061280c5761280c612fd1565b60200101906001600160f81b031916908160001a90535060049490941c9361283381612f01565b90506127c5565b5083156128895760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610815565b9392505050565b600067ffffffffffffffff808411156128ab576128ab612fe7565b604051601f8501601f19908116603f011681019082821181831017156128d3576128d3612fe7565b816040528093508581528686860111156128ec57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461291d57600080fd5b919050565b600082601f83011261293357600080fd5b61288983833560208501612890565b60006020828403121561295457600080fd5b61288982612906565b6000806040838503121561297057600080fd5b61297983612906565b915061298760208401612906565b90509250929050565b6000806000606084860312156129a557600080fd5b6129ae84612906565b92506129bc60208501612906565b9150604084013590509250925092565b600080604083850312156129df57600080fd5b6129e883612906565b946020939093013593505050565b600080600060608486031215612a0b57600080fd5b612a1484612906565b925060208401359150604084013567ffffffffffffffff811115612a3757600080fd5b612a4386828701612922565b9150509250925092565b600060208284031215612a5f57600080fd5b5035919050565b60008060408385031215612a7957600080fd5b8235915061298760208401612906565b600060208284031215612a9b57600080fd5b81356001600160e01b03198116811461288957600080fd5b600060208284031215612ac557600080fd5b813567ffffffffffffffff811115612adc57600080fd5b8201601f81018413612aed57600080fd5b6124af84823560208401612890565b60008060408385031215612b0f57600080fd5b823567ffffffffffffffff811115612b2657600080fd5b612b3285828601612922565b95602094909401359450505050565b600081518084526020808501945080840160005b83811015612b7a5781516001600160a01b031687529582019590820190600101612b55565b509495945050505050565b60058110612ba357634e487b7160e01b600052602160045260246000fd5b9052565b60008151808452612bbf816020860160208601612ed5565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612c0b816017850160208801612ed5565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612c3c816028840160208801612ed5565b01602801949350505050565b60018060a01b0384168152826020820152606060408201526000612c6f6060830184612ba7565b95945050505050565b6020815260006128896020830184612b41565b60408101612c998285612b85565b6001600160a01b039290921660209190910152919050565b612cbb8186612b85565b608060208201526000612cd16080830186612ba7565b6040830194909452506001600160a01b039190911660609091015292915050565b6020815260006128896020830184612ba7565b604081526000612d186040830185612ba7565b90508260208301529392505050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6080815260066080820152656f7261636c6560d01b60a082015260018060a01b038416602082015260c060408201526000612d8e60c0830185612ba7565b9050826060830152949350505050565b63ffffffff8516815260018060a01b0384166020820152826040820152608060608201526000612dd16080830184612b41565b9695505050505050565b60008219821115612dee57612dee612fa5565b500190565b600063ffffffff808316818516808303821115612e1257612e12612fa5565b01949350505050565b600063ffffffff80841680612e4057634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b6000816000190483118215151615612e6657612e66612fa5565b500290565b600063ffffffff80831681851681830481118215151615612e8e57612e8e612fa5565b02949350505050565b600082821015612ea957612ea9612fa5565b500390565b80516020808301519190811015612ecf576000198160200360031b1b821691505b50919050565b60005b83811015612ef0578181015183820152602001612ed8565b83811115611d1d5750506000910152565b600081612f1057612f10612fa5565b506000190190565b600063ffffffff821680612f2e57612f2e612fa5565b6000190192915050565b600181811c90821680612f4c57607f821691505b60208210811415612ecf57634e487b7160e01b600052602260045260246000fd5b600061ffff80831681811415612f8557612f85612fa5565b6001019392505050565b600063ffffffff80831681811415612f8557612f855b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfee28434228950b641dbbc0178de89daa359a87c6ee0d8399aeace52a98fe902b9b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1a2646970667358221220c7e8c7a6c5105a34a59cb6c6d05a95d0e500c0d13bdad246724423b042afa3d764736f6c63430008070033e28434228950b641dbbc0178de89daa359a87c6ee0d8399aeace52a98fe902b9b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000820b8c76189098fd4dec59176e98b2f178db252c000000000000000000000000497409d4d23fa303832d6c4ba92b38e120e1ae70000000000000000000000000361694a5886ef45868380f650e0c9b5a87b9fbf50000000000000000000000003dc9c2b2f35480a1189f6fcd3fc1a1cf18bed3730000000000000000000000004e426d16f38bea9ddc9eb6d670bd5d1fd95124c5000000000000000000000000dee0200502e4a31826e9ada6e6866faf6693379e000000000000000000000000fe0f1512248dcbd6fdb394af62955e8529a58390000000000000000000000000d253c2ce2f1d1b562d43fb8eb7399bf95103fdc700000000000000000000000061dea9da343aab506535bbff37389e7b191cc6e90000000000000000000000004d8bd8603fda1ad79b64243cad8fce27e4155340
Deployed Bytecode
0x60806040526004361061021e5760003560e01c806379cc679011610123578063a9059cbb116100ab578063da4baecb1161006f578063da4baecb14610669578063dd62ed3e14610689578063e5690a99146106a9578063e58378bb146106c9578063ff3e34a5146106eb57600080fd5b8063a9059cbb146105c7578063c0bcfe9c146105e7578063c79445d014610607578063cb5aa7e914610629578063d547741f1461064957600080fd5b806395d89b41116100f257806395d89b411461052d578063a217fddf14610542578063a457c2d714610557578063a6f9dae114610577578063a7bf70b91461059757600080fd5b806379cc6790146104b85780638456cb59146104d85780638c70c3bd146104ed57806391d148541461050d57600080fd5b8063313ce567116101a657806340884c521161017557806340884c521461040857806342966c681461042a5780634fdcaca61461044a5780635c975abb1461046a57806370a082311461048257600080fd5b8063313ce5671461039757806336568abe146103b357806339509351146103d35780633f4ba83a146103f357600080fd5b806310d3d22e116101ed57806310d3d22e146102d457806318160ddd1461031057806323b872dd14610325578063248a9ca3146103455780632f2ff15d1461037557600080fd5b806301ffc9a71461022d57806306fdde031461026257806307e2cea514610284578063095ea7b3146102b457600080fd5b3661022857600080fd5b600080fd5b34801561023957600080fd5b5061024d610248366004612a89565b61070b565b60405190151581526020015b60405180910390f35b34801561026e57600080fd5b50610277610742565b6040516102599190612cf2565b34801561029057600080fd5b506102a660008051602061303e83398151915281565b604051908152602001610259565b3480156102c057600080fd5b5061024d6102cf3660046129cc565b6107d4565b3480156102e057600080fd5b506102f46102ef366004612942565b6107ec565b60408051921515835263ffffffff909116602083015201610259565b34801561031c57600080fd5b506002546102a6565b34801561033157600080fd5b5061024d610340366004612990565b610843565b34801561035157600080fd5b506102a6610360366004612a4d565b60009081526006602052604090206001015490565b34801561038157600080fd5b50610395610390366004612a66565b610867565b005b3480156103a357600080fd5b5060405160098152602001610259565b3480156103bf57600080fd5b506103956103ce366004612a66565b610891565b3480156103df57600080fd5b5061024d6103ee3660046129cc565b61090f565b3480156103ff57600080fd5b50610395610931565b34801561041457600080fd5b5061041d61095c565b6040516102599190612c78565b34801561043657600080fd5b50610395610445366004612a4d565b6109bd565b34801561045657600080fd5b50610395610465366004612942565b6109c7565b34801561047657600080fd5b5060055460ff1661024d565b34801561048e57600080fd5b506102a661049d366004612942565b6001600160a01b031660009081526020819052604090205490565b3480156104c457600080fd5b506103956104d33660046129cc565b610d1f565b3480156104e457600080fd5b50610395610d34565b3480156104f957600080fd5b50610395610508366004612afc565b610d5c565b34801561051957600080fd5b5061024d610528366004612a66565b610e00565b34801561053957600080fd5b50610277610e2b565b34801561054e57600080fd5b506102a6600081565b34801561056357600080fd5b5061024d6105723660046129cc565b610e3a565b34801561058357600080fd5b50610395610592366004612942565b610eb5565b3480156105a357600080fd5b506105b76105b2366004612ab3565b610efd565b6040516102599493929190612d9e565b3480156105d357600080fd5b5061024d6105e23660046129cc565b611140565b3480156105f357600080fd5b50610395610602366004612942565b61114e565b34801561061357600080fd5b506102a6600080516020612ffe83398151915281565b34801561063557600080fd5b506102f4610644366004612942565b61134a565b34801561065557600080fd5b50610395610664366004612a66565b61139f565b34801561067557600080fd5b506103956106843660046129f6565b6113c4565b34801561069557600080fd5b506102a66106a436600461295d565b6115ae565b3480156106b557600080fd5b506103956106c4366004612942565b6115d9565b3480156106d557600080fd5b506102a660008051602061301e83398151915281565b3480156106f757600080fd5b50610395610706366004612942565b6117e8565b60006001600160e01b03198216637965db0b60e01b148061073c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461075190612f38565b80601f016020809104026020016040519081016040528092919081815260200182805461077d90612f38565b80156107ca5780601f1061079f576101008083540402835291602001916107ca565b820191906000526020600020905b8154815290600101906020018083116107ad57829003601f168201915b5050505050905090565b6000336107e2818585611b85565b5060019392505050565b6000806001600160a01b03831661081e5760405162461bcd60e51b815260040161081590612d27565b60405180910390fd5b61083660008051602061303e83398151915284610e00565b6008549094909350915050565b600033610851858285611ca9565b61085c858585611d23565b506001949350505050565b60008281526006602052604090206001015461088281611efc565b61088c8383611f06565b505050565b6001600160a01b03811633146109015760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610815565b61090b8282611f8c565b5050565b6000336107e281858561092283836115ae565b61092c9190612ddb565b611b85565b600080516020612ffe83398151915261094981611efc565b610951611ff3565b61095961203e565b50565b606060088054806020026020016040519081016040528092919081815260200182805480156107ca57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610996575050505050905090565b6109593382612090565b600080516020612ffe8339815191526109df81611efc565b6001600160a01b038216610a055760405162461bcd60e51b815260040161081590612d27565b600754600364010000000090910463ffffffff1611610a665760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2033206f7261636c65732072657175697265640000000000006044820152606401610815565b6000600283604051602001610a7c929190612c8b565b604051602081830303815290604052805190602001209050610aac60008051602061303e83398151915284610e00565b610af05760405162461bcd60e51b815260206004820152601560248201527413dc9858db19481b9bdd081c9959da5cdd195c9959605a1b6044820152606401610815565b610afe8160018560006121ea565b15610cb257610b1b60008051602061303e83398151915284611f8c565b60078054640100000000900463ffffffff16906004610b3983612f18565b91906101000a81548163ffffffff021916908363ffffffff1602179055505060005b60085461ffff82161015610c6d57836001600160a01b031660088261ffff1681548110610b8a57610b8a612fd1565b6000918252602090912001546001600160a01b03161415610c5b5760088054610bb590600190612e97565b81548110610bc557610bc5612fd1565b600091825260209091200154600880546001600160a01b039092169161ffff8416908110610bf557610bf5612fd1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506008805480610c3457610c34612fbb565b600082815260209020810160001990810180546001600160a01b0319169055019055610c6d565b80610c6581612f6d565b915050610b5b565b50604080516001600160a01b0385168152602081018390527fe4d21301551b3d87dc269fc8b9d5a5c1432831c3c321ef19570b8a93a10cb52291015b60405180910390a15b6040805160808082526009908201526831bab9ba37b234b0b760b91b60a082015233602082015260c08183018190526000908201526060810183905290517f3be8840aec3e3998ee1e020dd20a8ea88430534d4e16feeeb1762ea4428464cd9181900360e00190a1505050565b610d2a823383611ca9565b61090b8282612090565b600080516020612ffe833981519152610d4c81611efc565b610d546124b7565b6109596124fd565b610d646124b7565b60038251118015610d7757506040825111155b610db95760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642046494f204164647265737360681b6044820152606401610815565b610dc33382612090565b7fcbc81eff77955b99685533d29441743baaced5a53ed539d634490e5380a8dcf08282604051610df4929190612d05565b60405180910390a15050565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461075190612f38565b60003381610e4882866115ae565b905083811015610ea85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610815565b61085c8286868403611b85565b60008051602061301e833981519152610ecd81611efc565b610ee560008051602061301e83398151915233611f8c565b61090b60008051602061301e83398151915283611f06565b600080600060606000855111610f455760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081bd89d1a59609a1b6044820152606401610815565b6000600a81610f5388612eae565b815260208101919091526040016000206001015463ffffffff1667ffffffffffffffff811115610f8557610f85612fe7565b604051908082528060200260200182016040528015610fae578160200160208202803683370190505b5090506000805b60085463ffffffff821610156110b257600a6000610fd28a612eae565b8152602001908152602001600020600001600060088363ffffffff1681548110610ffe57610ffe612fd1565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156110a05760088163ffffffff168154811061104457611044612fd1565b9060005260206000200160009054906101000a90046001600160a01b0316838363ffffffff168151811061107a5761107a612fd1565b6001600160a01b03909216602092830291909101909101528161109c81612f8f565b9250505b806110aa81612f8f565b915050610fb5565b50600a60006110c089612eae565b8152602081019190915260400160009081206001015463ffffffff1690600a906110e98a612eae565b815260200190815260200160002060010160049054906101000a90046001600160a01b0316600a60008a61111c90612eae565b81526020019081526020016000206002015484955095509550955050509193509193565b6000336107e2818585611d23565b600080516020612ffe83398151915261116681611efc565b6001600160a01b03821661118c5760405162461bcd60e51b815260040161081590612d27565b6001600160a01b0382163314156111dc5760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b3b4b9ba32b91039b2b63360611b6044820152606401610815565b60006003836040516020016111f2929190612c8b565b604051602081830303815290604052805190602001209050611222600080516020612ffe83398151915284610e00565b156112645760405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481c9959da5cdd195c995960721b6044820152606401610815565b6112728160018560006121ea565b15610cb25761128f600080516020612ffe83398151915284611f06565b6007805463ffffffff169060006112a583612f8f565b82546101009290920a63ffffffff81810219909316919092169190910217905550600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018390527f4f4b5dcea44dd9a0d4582de1f0b930ffdd296bd645df66b73ff1795f43e7dc119101610ca9565b6000806001600160a01b0383166113735760405162461bcd60e51b815260040161081590612d27565b61138b600080516020612ffe83398151915284610e00565b600754909463ffffffff9091169350915050565b6000828152600660205260409020600101546113ba81611efc565b61088c8383611f8c565b60008051602061303e8339815191526113dc81611efc565b6113e46124b7565b670de0b6b3a764000083106113f857600080fd5b60008251116114395760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081bd89d1a59609a1b6044820152606401610815565b6001600160a01b0384166114815760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081858d8dbdd5b9d608a1b6044820152606401610815565b600754600364010000000090910463ffffffff1610156114e35760405162461bcd60e51b815260206004820152601c60248201527f4f7261636c6573206d7573742062652033206f722067726561746572000000006044820152606401610815565b6000808385876040516020016114fc9493929190612cb1565b60405160208183030381529060405280519060200120905061152181600087876121ea565b1561156c57611530858561253a565b7fbfb8a2f9b4d8e8ed83a83aedac91756186665fbf1f57e39619d757180619bf9885858560405161156393929190612c48565b60405180910390a15b7f3be8840aec3e3998ee1e020dd20a8ea88430534d4e16feeeb1762ea4428464cd33848360405161159f93929190612d50565b60405180910390a15050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600080516020612ffe8339815191526115f181611efc565b6001600160a01b0382166116175760405162461bcd60e51b815260040161081590612d27565b6001600160a01b0382163314156116675760405162461bcd60e51b815260206004820152601460248201527321b0b73737ba103932b3b4b9ba32b91039b2b63360611b6044820152606401610815565b61167f60008051602061303e83398151915283610e00565b156116cc5760405162461bcd60e51b815260206004820152601960248201527f4f7261636c6520616c72656164792072656769737465726564000000000000006044820152606401610815565b60006001836040516020016116e2929190612c8b565b6040516020818303038152906040528051906020012090506117088160018560006121ea565b15610cb25761172560008051602061303e83398151915284611f06565b60078054640100000000900463ffffffff1690600461174383612f8f565b82546101009290920a63ffffffff81810219909316919092169190910217905550600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082018390527ffde1904d2f36e8247a68b76a38b2dc6908f769438b6bb8f173ee39a2c01f2b589101610ca9565b600080516020612ffe83398151915261180081611efc565b6001600160a01b0382166118265760405162461bcd60e51b815260040161081590612d27565b61183e600080516020612ffe83398151915283610e00565b61188a5760405162461bcd60e51b815260206004820152601860248201527f437573746f6469616e206e6f74207265676973746572656400000000000000006044820152606401610815565b6007805463ffffffff16116118e15760405162461bcd60e51b815260206004820152601960248201527f4d75737420636f6e7461696e203720637573746f6469616e73000000000000006044820152606401610815565b60006004836040516020016118f7929190612c8b565b604051602081830303815290604052805190602001209050611927600080516020612ffe83398151915284610e00565b61196a5760405162461bcd60e51b8152602060048201526014602482015273105b1c9958591e481d5b9c9959da5cdd195c995960621b6044820152606401610815565b6119788160018560006121ea565b15610cb257611995600080516020612ffe83398151915284611f8c565b6007805463ffffffff169060006119ab83612f18565b91906101000a81548163ffffffff021916908363ffffffff1602179055505060005b60095461ffff82161015611adf57836001600160a01b031660098261ffff16815481106119fc576119fc612fd1565b6000918252602090912001546001600160a01b03161415611acd5760098054611a2790600190612e97565b81548110611a3757611a37612fd1565b600091825260209091200154600980546001600160a01b039092169161ffff8416908110611a6757611a67612fd1565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506009805480611aa657611aa6612fbb565b600082815260209020810160001990810180546001600160a01b0319169055019055611adf565b80611ad781612f6d565b9150506119cd565b50604080516001600160a01b0385168152602081018390527f0cf142c25ce5b399a7953be52d40c8596def04c010697715ab9c72f4962d1a2d9101610ca9565b60055460ff161561088c5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610815565b6001600160a01b038316611be75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610815565b6001600160a01b038216611c485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610815565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611cb584846115ae565b90506000198114611d1d5781811015611d105760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610815565b611d1d8484848403611b85565b50505050565b6001600160a01b038316611d875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610815565b6001600160a01b038216611de95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610815565b611df4838383612625565b6001600160a01b03831660009081526020819052604090205481811015611e6c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610815565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611ea3908490612ddb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eef91815260200190565b60405180910390a3611d1d565b6109598133612689565b611f108282610e00565b61090b5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611f483390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611f968282610e00565b1561090b5760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60055460ff1661203c5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610815565b565b612046611ff3565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166120f05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610815565b6120fc82600083612625565b6001600160a01b038216600090815260208190526040902054818110156121705760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610815565b6001600160a01b038316600090815260208190526040812083830390556002805484929061219f908490612e97565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6000848152600a602052604081206003015460ff161561224c5760405162461bcd60e51b815260206004820152601960248201527f417070726f76616c20616c726561647920636f6d706c657465000000000000006044820152606401610815565b600754640100000000900463ffffffff1660ff851660011415612298576007546003906122809063ffffffff166002612e6b565b61228a9190612e1b565b612295906001612df3565b90505b6000868152600a602052604090206001015463ffffffff166122f1576000868152600a60205260409020600281018490556001018054640100000000600160c01b0319166401000000006001600160a01b038716021790555b6000868152600a602052604090206001015463ffffffff80831691161015612497576000868152600a6020908152604080832033845290915290205460ff161561238b5760405162461bcd60e51b815260206004820152602560248201527f6f7261636c652068617320616c726561647920617070726f7665642074686973604482015264040d0c2e6d60db1b6064820152608401610815565b6000868152600a60208181526040808420338552808352908420805460ff191660019081179091558a85529290915201805463ffffffff16916123cd83612f8f565b82546101009290920a63ffffffff8181021990931691831602179091556000888152600a60205260409020600101548382169116109050612497576000868152600a6020908152604080832033845290915290205460ff166124715760405162461bcd60e51b815260206004820181905260248201527f416e20617070726f76696e67206f7261636c65206d75737420657865637574656044820152606401610815565b50506000848152600a60205260409020600301805460ff191660019081179091556124af565b50506000848152600a602052604090206003015460ff165b949350505050565b60055460ff161561203c5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610815565b6125056124b7565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586120733390565b6001600160a01b0382166125905760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610815565b61259c60008383612625565b80600260008282546125ae9190612ddb565b90915550506001600160a01b038216600090815260208190526040812080548392906125db908490612ddb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821630141561267e5760405162461bcd60e51b815260206004820152601e60248201527f436f6e74726163742063616e6e6f74207265636569766520746f6b656e7300006044820152606401610815565b61088c838383611b1f565b6126938282610e00565b61090b576126ab816001600160a01b031660146126ed565b6126b68360206126ed565b6040516020016126c7929190612bd3565b60408051601f198184030181529082905262461bcd60e51b825261081591600401612cf2565b606060006126fc836002612e4c565b612707906002612ddb565b67ffffffffffffffff81111561271f5761271f612fe7565b6040519080825280601f01601f191660200182016040528015612749576020820181803683370190505b509050600360fc1b8160008151811061276457612764612fd1565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061279357612793612fd1565b60200101906001600160f81b031916908160001a90535060006127b7846002612e4c565b6127c2906001612ddb565b90505b600181111561283a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106127f6576127f6612fd1565b1a60f81b82828151811061280c5761280c612fd1565b60200101906001600160f81b031916908160001a90535060049490941c9361283381612f01565b90506127c5565b5083156128895760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610815565b9392505050565b600067ffffffffffffffff808411156128ab576128ab612fe7565b604051601f8501601f19908116603f011681019082821181831017156128d3576128d3612fe7565b816040528093508581528686860111156128ec57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461291d57600080fd5b919050565b600082601f83011261293357600080fd5b61288983833560208501612890565b60006020828403121561295457600080fd5b61288982612906565b6000806040838503121561297057600080fd5b61297983612906565b915061298760208401612906565b90509250929050565b6000806000606084860312156129a557600080fd5b6129ae84612906565b92506129bc60208501612906565b9150604084013590509250925092565b600080604083850312156129df57600080fd5b6129e883612906565b946020939093013593505050565b600080600060608486031215612a0b57600080fd5b612a1484612906565b925060208401359150604084013567ffffffffffffffff811115612a3757600080fd5b612a4386828701612922565b9150509250925092565b600060208284031215612a5f57600080fd5b5035919050565b60008060408385031215612a7957600080fd5b8235915061298760208401612906565b600060208284031215612a9b57600080fd5b81356001600160e01b03198116811461288957600080fd5b600060208284031215612ac557600080fd5b813567ffffffffffffffff811115612adc57600080fd5b8201601f81018413612aed57600080fd5b6124af84823560208401612890565b60008060408385031215612b0f57600080fd5b823567ffffffffffffffff811115612b2657600080fd5b612b3285828601612922565b95602094909401359450505050565b600081518084526020808501945080840160005b83811015612b7a5781516001600160a01b031687529582019590820190600101612b55565b509495945050505050565b60058110612ba357634e487b7160e01b600052602160045260246000fd5b9052565b60008151808452612bbf816020860160208601612ed5565b601f01601f19169290920160200192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612c0b816017850160208801612ed5565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612c3c816028840160208801612ed5565b01602801949350505050565b60018060a01b0384168152826020820152606060408201526000612c6f6060830184612ba7565b95945050505050565b6020815260006128896020830184612b41565b60408101612c998285612b85565b6001600160a01b039290921660209190910152919050565b612cbb8186612b85565b608060208201526000612cd16080830186612ba7565b6040830194909452506001600160a01b039190911660609091015292915050565b6020815260006128896020830184612ba7565b604081526000612d186040830185612ba7565b90508260208301529392505050565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b6080815260066080820152656f7261636c6560d01b60a082015260018060a01b038416602082015260c060408201526000612d8e60c0830185612ba7565b9050826060830152949350505050565b63ffffffff8516815260018060a01b0384166020820152826040820152608060608201526000612dd16080830184612b41565b9695505050505050565b60008219821115612dee57612dee612fa5565b500190565b600063ffffffff808316818516808303821115612e1257612e12612fa5565b01949350505050565b600063ffffffff80841680612e4057634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b6000816000190483118215151615612e6657612e66612fa5565b500290565b600063ffffffff80831681851681830481118215151615612e8e57612e8e612fa5565b02949350505050565b600082821015612ea957612ea9612fa5565b500390565b80516020808301519190811015612ecf576000198160200360031b1b821691505b50919050565b60005b83811015612ef0578181015183820152602001612ed8565b83811115611d1d5750506000910152565b600081612f1057612f10612fa5565b506000190190565b600063ffffffff821680612f2e57612f2e612fa5565b6000190192915050565b600181811c90821680612f4c57607f821691505b60208210811415612ecf57634e487b7160e01b600052602260045260246000fd5b600061ffff80831681811415612f8557612f85612fa5565b6001019392505050565b600063ffffffff80831681811415612f8557612f855b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfee28434228950b641dbbc0178de89daa359a87c6ee0d8399aeace52a98fe902b9b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1a2646970667358221220c7e8c7a6c5105a34a59cb6c6d05a95d0e500c0d13bdad246724423b042afa3d764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000820b8c76189098fd4dec59176e98b2f178db252c000000000000000000000000497409d4d23fa303832d6c4ba92b38e120e1ae70000000000000000000000000361694a5886ef45868380f650e0c9b5a87b9fbf50000000000000000000000003dc9c2b2f35480a1189f6fcd3fc1a1cf18bed3730000000000000000000000004e426d16f38bea9ddc9eb6d670bd5d1fd95124c5000000000000000000000000dee0200502e4a31826e9ada6e6866faf6693379e000000000000000000000000fe0f1512248dcbd6fdb394af62955e8529a58390000000000000000000000000d253c2ce2f1d1b562d43fb8eb7399bf95103fdc700000000000000000000000061dea9da343aab506535bbff37389e7b191cc6e90000000000000000000000004d8bd8603fda1ad79b64243cad8fce27e4155340
-----Decoded View---------------
Arg [0] : _initialSupply (uint256): 0
Arg [1] : newcustodians (address[]): 0x820b8c76189098fD4Dec59176E98b2f178dB252c,0x497409d4d23Fa303832D6c4BA92B38e120E1AE70,0x361694a5886ef45868380F650e0C9B5a87b9fBF5,0x3Dc9C2B2f35480a1189F6FCd3FC1a1Cf18BeD373,0x4e426d16f38Bea9ddC9eB6D670bd5D1fD95124c5,0xdEE0200502e4a31826e9aDa6e6866faF6693379E,0xFE0F1512248dcBd6fdb394af62955e8529a58390,0xD253c2CE2F1d1b562d43fb8Eb7399BF95103fDc7,0x61DEa9da343Aab506535bbff37389e7B191Cc6E9,0x4d8BD8603FDA1Ad79b64243cAd8fCE27e4155340
-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 000000000000000000000000820b8c76189098fd4dec59176e98b2f178db252c
Arg [4] : 000000000000000000000000497409d4d23fa303832d6c4ba92b38e120e1ae70
Arg [5] : 000000000000000000000000361694a5886ef45868380f650e0c9b5a87b9fbf5
Arg [6] : 0000000000000000000000003dc9c2b2f35480a1189f6fcd3fc1a1cf18bed373
Arg [7] : 0000000000000000000000004e426d16f38bea9ddc9eb6d670bd5d1fd95124c5
Arg [8] : 000000000000000000000000dee0200502e4a31826e9ada6e6866faf6693379e
Arg [9] : 000000000000000000000000fe0f1512248dcbd6fdb394af62955e8529a58390
Arg [10] : 000000000000000000000000d253c2ce2f1d1b562d43fb8eb7399bf95103fdc7
Arg [11] : 00000000000000000000000061dea9da343aab506535bbff37389e7b191cc6e9
Arg [12] : 0000000000000000000000004d8bd8603fda1ad79b64243cad8fce27e4155340
Deployed Bytecode Sourcemap
14276:9490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23475:8;;;14276:9490;;;;11708:204;;;;;;;;;;-1:-1:-1;11708:204:0;;;;;:::i;:::-;;:::i;:::-;;;7416:14:1;;7409:22;7391:41;;7379:2;7364:18;11708:204:0;;;;;;;;4045:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14389:62::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14389:62:0;;;;;7867:25:1;;;7855:2;7840:18;14389:62:0;7721:177:1;4977:201:0;;;;;;;;;;-1:-1:-1;4977:201:0;;;;;:::i;:::-;;:::i;19024:217::-;;;;;;;;;;-1:-1:-1;19024:217:0;;;;;:::i;:::-;;:::i;:::-;;;;7634:14:1;;7627:22;7609:41;;7698:10;7686:23;;;7681:2;7666:18;;7659:51;7582:18;19024:217:0;7443:273:1;4366:108:0;;;;;;;;;;-1:-1:-1;4454:12:0;;4366:108;;5186:261;;;;;;;;;;-1:-1:-1;5186:261:0;;;;;:::i;:::-;;:::i;12701:131::-;;;;;;;;;;-1:-1:-1;12701:131:0;;;;;:::i;:::-;12775:7;12802:12;;;:6;:12;;;;;:22;;;;12701:131;12840:147;;;;;;;;;;-1:-1:-1;12840:147:0;;;;;:::i;:::-;;:::i;:::-;;23671:92;;;;;;;;;;-1:-1:-1;23671:92:0;;23754:1;23265:36:1;;23253:2;23238:18;23671:92:0;23123:184:1;13152:216:0;;;;;;;;;;-1:-1:-1;13152:216:0;;;;;:::i;:::-;;:::i;5455:238::-;;;;;;;;;;-1:-1:-1;5455:238:0;;;;;:::i;:::-;;:::i;16387:91::-;;;;;;;;;;;;;:::i;19249:98::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10252:91::-;;;;;;;;;;-1:-1:-1;10252:91:0;;;;;:::i;:::-;;:::i;20741:933::-;;;;;;;;;;-1:-1:-1;20741:933:0;;;;;:::i;:::-;;:::i;9165:86::-;;;;;;;;;;-1:-1:-1;9236:7:0;;;;9165:86;;4482:127;;;;;;;;;;-1:-1:-1;4482:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4583:18:0;4556:7;4583:18;;;;;;;;;;;;4482:127;10351:164;;;;;;;;;;-1:-1:-1;10351:164:0;;;;;:::i;:::-;;:::i;16288:91::-;;;;;;;;;;;;;:::i;18265:274::-;;;;;;;;;;-1:-1:-1;18265:274:0;;;;;:::i;:::-;;:::i;11920:147::-;;;;;;;;;;-1:-1:-1;11920:147:0;;;;;:::i;:::-;;:::i;4153:104::-;;;;;;;;;;;;;:::i;11563:49::-;;;;;;;;;;-1:-1:-1;11563:49:0;11608:4;11563:49;;5701:434;;;;;;;;;;-1:-1:-1;5701:434:0;;;;;:::i;:::-;;:::i;23499:164::-;;;;;;;;;;-1:-1:-1;23499:164:0;;;;;:::i;:::-;;:::i;19355:685::-;;;;;;;;;;-1:-1:-1;19355:685:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;4617:193::-;;;;;;;;;;-1:-1:-1;4617:193:0;;;;;:::i;:::-;;:::i;21682:694::-;;;;;;;;;;-1:-1:-1;21682:694:0;;;;;:::i;:::-;;:::i;14525:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14525:68:0;;18803:213;;;;;;;;;;-1:-1:-1;18803:213:0;;;;;:::i;:::-;;:::i;12995:149::-;;;;;;;;;;-1:-1:-1;12995:149:0;;;;;:::i;:::-;;:::i;17576:681::-;;;;;;;;;;-1:-1:-1;17576:681:0;;;;;:::i;:::-;;:::i;4818:151::-;;;;;;;;;;-1:-1:-1;4818:151:0;;;;;:::i;:::-;;:::i;20048:685::-;;;;;;;;;;-1:-1:-1;20048:685:0;;;;;:::i;:::-;;:::i;14458:60::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14458:60:0;;22384:1044;;;;;;;;;;-1:-1:-1;22384:1044:0;;;;;:::i;:::-;;:::i;11708:204::-;11793:4;-1:-1:-1;;;;;;11817:47:0;;-1:-1:-1;;;11817:47:0;;:87;;-1:-1:-1;;;;;;;;;;523:40:0;;;11868:36;11810:94;11708:204;-1:-1:-1;;11708:204:0:o;4045:100::-;4099:13;4132:5;4125:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4045:100;:::o;4977:201::-;5060:4;2440:10;5116:32;2440:10;5132:7;5141:6;5116:8;:32::i;:::-;-1:-1:-1;5166:4:0;;4977:201;-1:-1:-1;;;4977:201:0:o;19024:217::-;19083:4;;-1:-1:-1;;;;;19116:21:0;;19108:49;;;;-1:-1:-1;;;19108:49:0;;;;;;;:::i;:::-;;;;;;;;;19176:29;-1:-1:-1;;;;;;;;;;;19197:7:0;19176;:29::i;:::-;19214:10;:17;19168:65;;19214:17;;-1:-1:-1;19024:217:0;-1:-1:-1;;19024:217:0:o;5186:261::-;5283:4;2440:10;5341:38;5357:4;2440:10;5372:6;5341:15;:38::i;:::-;5390:27;5400:4;5406:2;5410:6;5390:9;:27::i;:::-;-1:-1:-1;5435:4:0;;5186:261;-1:-1:-1;;;;5186:261:0:o;12840:147::-;12775:7;12802:12;;;:6;:12;;;;;:22;;;11664:16;11675:4;11664:10;:16::i;:::-;12954:25:::1;12965:4;12971:7;12954:10;:25::i;:::-;12840:147:::0;;;:::o;13152:216::-;-1:-1:-1;;;;;13248:23:0;;2440:10;13248:23;13240:83;;;;-1:-1:-1;;;13240:83:0;;21434:2:1;13240:83:0;;;21416:21:1;21473:2;21453:18;;;21446:30;21512:34;21492:18;;;21485:62;-1:-1:-1;;;21563:18:1;;;21556:45;21618:19;;13240:83:0;21232:411:1;13240:83:0;13334:26;13346:4;13352:7;13334:11;:26::i;:::-;13152:216;;:::o;5455:238::-;5543:4;2440:10;5599:64;2440:10;5615:7;5652:10;5624:25;2440:10;5615:7;5624:9;:25::i;:::-;:38;;;;:::i;:::-;5599:8;:64::i;16387:91::-;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;9121::::1;:14;:16::i;:::-;16460:10:::2;:8;:10::i;:::-;16387:91:::0;:::o;19249:98::-;19293:16;19329:10;19322:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19322:17:0;;;;;;;;;;;;;;;;;;;;;;19249:98;:::o;10252:91::-;10308:27;2440:10;10328:6;10308:5;:27::i;20741:933::-;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;-1:-1:-1;;;;;20832:21:0;::::1;20824:49;;;;-1:-1:-1::0;;;20824:49:0::1;;;;;;;:::i;:::-;20892:12;::::0;20907:1:::1;20892:12:::0;;;::::1;;;:16;20884:55;;;::::0;-1:-1:-1;;;20884:55:0;;20331:2:1;20884:55:0::1;::::0;::::1;20313:21:1::0;20370:2;20350:18;;;20343:30;20409:28;20389:18;;;20382:56;20455:18;;20884:55:0::1;20129:350:1::0;20884:55:0::1;20950:17;20997:25;21023:7;20986:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20970:63;;;;;;20950:83;;21052:29;-1:-1:-1::0;;;;;;;;;;;21073:7:0::1;21052;:29::i;:::-;21044:63;;;::::0;-1:-1:-1;;;21044:63:0;;16060:2:1;21044:63:0::1;::::0;::::1;16042:21:1::0;16099:2;16079:18;;;16072:30;-1:-1:-1;;;16118:18:1;;;16111:51;16179:18;;21044:63:0::1;15858:345:1::0;21044:63:0::1;21123:38;21136:9;21147:1;21150:7;21159:1;21123:12;:38::i;:::-;21118:475;;;21178:33;-1:-1:-1::0;;;;;;;;;;;21203:7:0::1;21178:11;:33::i;:::-;21226:12;:14:::0;;;;::::1;;;::::0;:12:::1;:14;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;21259:8;21255:268;21277:10;:17:::0;21273:21:::1;::::0;::::1;;21255:268;;;21340:7;-1:-1:-1::0;;;;;21323:24:0::1;:10;21334:1;21323:13;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;21323:13:0::1;:24;21320:188;;;21388:10;21399:17:::0;;:21:::1;::::0;21419:1:::1;::::0;21399:21:::1;:::i;:::-;21388:33;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;21372:10:::1;:13:::0;;-1:-1:-1;;;;;21388:33:0;;::::1;::::0;21372:13:::1;::::0;::::1;::::0;;::::1;;;;;:::i;:::-;;;;;;;;;:49;;;;;-1:-1:-1::0;;;;;21372:49:0::1;;;;;-1:-1:-1::0;;;;;21372:49:0::1;;;;;;21444:10;:16;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;21444:16:0;;;;;-1:-1:-1;;;;;;21444:16:0::1;::::0;;;;;21483:5:::1;;21320:188;21296:3:::0;::::1;::::0;::::1;:::i;:::-;;;;21255:268;;;-1:-1:-1::0;21542:39:0::1;::::0;;-1:-1:-1;;;;;6505:32:1;;6487:51;;6569:2;6554:18;;6547:34;;;21542:39:0::1;::::0;6460:18:1;21542:39:0::1;;;;;;;;21118:475;21608:58;::::0;;17269:3:1;17251:22;;;17310:1;17289:19;;;17282:30;-1:-1:-1;;;17343:3:1;17328:19;;17321:40;21640:10:0::1;17392:4:1::0;17377:20;;17370:62;17468:3;17448:18;;;17441:31;;;-1:-1:-1;17488:19:1;;;17481:30;-1:-1:-1;17563:18:1;;17556:34;;;21608:58:0;;::::1;::::0;;;;17543:3:1;21608:58:0;;::::1;20813:861;20741:933:::0;;:::o;10351:164::-;10428:46;10444:7;2440:10;10467:6;10428:15;:46::i;:::-;10485:22;10491:7;10500:6;10485:5;:22::i;16288:91::-;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;9041:19:::1;:17;:19::i;:::-;16363:8:::2;:6;:8::i;18265:274::-:0;9041:19;:17;:19::i;:::-;18391:1:::1;18370:10;18364:24;:28;:62;;;;;18424:2;18402:10;18396:24;:30;;18364:62;18356:94;;;::::0;-1:-1:-1;;;18356:94:0;;18770:2:1;18356:94:0::1;::::0;::::1;18752:21:1::0;18809:2;18789:18;;;18782:30;-1:-1:-1;;;18828:18:1;;;18821:49;18887:18;;18356:94:0::1;18568:343:1::0;18356:94:0::1;18461:25;18467:10;18479:6;18461:5;:25::i;:::-;18502:29;18512:10;18524:6;18502:29;;;;;;;:::i;:::-;;;;;;;;18265:274:::0;;:::o;11920:147::-;12006:4;12030:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;12030:29:0;;;;;;;;;;;;;;;11920:147::o;4153:104::-;4209:13;4242:7;4235:14;;;;;:::i;5701:434::-;5794:4;2440:10;5794:4;5877:25;2440:10;5894:7;5877:9;:25::i;:::-;5850:52;;5941:15;5921:16;:35;;5913:85;;;;-1:-1:-1;;;5913:85:0;;21028:2:1;5913:85:0;;;21010:21:1;21067:2;21047:18;;;21040:30;21106:34;21086:18;;;21079:62;-1:-1:-1;;;21157:18:1;;;21150:35;21202:19;;5913:85:0;20826:401:1;5913:85:0;6034:60;6043:5;6050:7;6078:15;6059:16;:34;6034:8;:60::i;23499:164::-;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;23578:35:::1;-1:-1:-1::0;;;;;;;;;;;23602:10:0::1;23578:11;:35::i;:::-;23624:31;-1:-1:-1::0;;;;;;;;;;;23647:7:0::1;23624:10;:31::i;19355:685::-:0;19423:6;19431:7;19440;19449:16;19505:1;19486:9;:16;:20;19478:46;;;;-1:-1:-1;;;19478:46:0;;20686:2:1;19478:46:0;;;20668:21:1;20725:2;20705:18;;;20698:30;-1:-1:-1;;;20744:18:1;;;20737:43;20797:18;;19478:46:0;20484:337:1;19478:46:0;19535:32;19584:9;19535:32;19594:18;19602:9;19594:18;:::i;:::-;19584:29;;;;;;;;;;;-1:-1:-1;19584:29:0;:39;;;;;19570:54;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19570:54:0;;19535:89;;19635:8;19662;19658:222;19680:10;:17;19676:21;;;;19658:222;;;19723:9;:29;19733:18;19741:9;19733:18;:::i;:::-;19723:29;;;;;;;;;;;:38;;:53;19762:10;19773:1;19762:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;19762:13:0;19723:53;;;;;;;;;;;;;;;19719:150;;;19818:10;19829:1;19818:13;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19818:13:0;19797:15;19813:1;19797:18;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19797:34:0;;;:18;;;;;;;;;;;:34;19850:3;;;;:::i;:::-;;;;19719:150;19699:3;;;;:::i;:::-;;;;19658:222;;;-1:-1:-1;19898:9:0;:29;19908:18;19916:9;19908:18;:::i;:::-;19898:29;;;;;;;;;;;-1:-1:-1;19898:29:0;;;:39;;;;;;19939:9;;19949:18;19957:9;19949:18;:::i;:::-;19939:29;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;;;;;19939:37:0;19978:9;:29;19996:9;19988:18;;;:::i;:::-;19978:29;;;;;;;;;;;:36;;;20016:15;19890:142;;;;;;;;;;19355:685;;;;;:::o;4617:193::-;4696:4;2440:10;4752:28;2440:10;4769:2;4773:6;4752:9;:28::i;21682:694::-;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;-1:-1:-1;;;;;21769:21:0;::::1;21761:49;;;;-1:-1:-1::0;;;21761:49:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21829:21:0;::::1;21840:10;21829:21;;21821:54;;;::::0;-1:-1:-1;;;21821:54:0;;16763:2:1;21821:54:0::1;::::0;::::1;16745:21:1::0;16802:2;16782:18;;;16775:30;-1:-1:-1;;;16821:18:1;;;16814:50;16881:18;;21821:54:0::1;16561:344:1::0;21821:54:0::1;21886:17;21933:25;21959:7;21922:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21906:63;;;;;;21886:83;;21989:32;-1:-1:-1::0;;;;;;;;;;;22013:7:0::1;21989;:32::i;:::-;21988:33;21980:64;;;::::0;-1:-1:-1;;;21980:64:0;;15011:2:1;21980:64:0::1;::::0;::::1;14993:21:1::0;15050:2;15030:18;;;15023:30;-1:-1:-1;;;15069:18:1;;;15062:48;15127:18;;21980:64:0::1;14809:342:1::0;21980:64:0::1;22059:38;22072:9;22083:1;22086:7;22095:1;22059:12;:38::i;:::-;22055:240;;;22114:35;-1:-1:-1::0;;;;;;;;;;;22141:7:0::1;22114:10;:35::i;:::-;22164:15;:17:::0;;::::1;;::::0;:15:::1;:17;::::0;::::1;:::i;:::-;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;22196:13:0::1;:27:::0;;-1:-1:-1;22196:27:0;::::1;::::0;;-1:-1:-1;22196:27:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22196:27:0::1;-1:-1:-1::0;;;;;22196:27:0;::::1;::::0;;::::1;::::0;;;22243:40:::1;::::0;;6487:51:1;;;6569:2;6554:18;;6547:34;;;22243:40:0::1;::::0;6460:18:1;22243:40:0::1;6313:274:1::0;18803:213:0;18865:4;;-1:-1:-1;;;;;18898:21:0;;18890:49;;;;-1:-1:-1;;;18890:49:0;;;;;;;:::i;:::-;18958:32;-1:-1:-1;;;;;;;;;;;18982:7:0;18958;:32::i;:::-;18992:15;;18950:58;;18992:15;;;;;-1:-1:-1;18803:213:0;-1:-1:-1;;18803:213:0:o;12995:149::-;12775:7;12802:12;;;:6;:12;;;;;:22;;;11664:16;11675:4;11664:10;:16::i;:::-;13110:26:::1;13122:4;13128:7;13110:11;:26::i;17576:681::-:0;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;9041:19:::1;:17;:19::i;:::-;14372:4:::2;17707:6;:17;17699:26;;;::::0;::::2;;17766:1;17750:5;17744:19;:23;17736:49;;;::::0;-1:-1:-1;;;17736:49:0;;20686:2:1;17736:49:0::2;::::0;::::2;20668:21:1::0;20725:2;20705:18;;;20698:30;-1:-1:-1;;;20744:18:1;;;20737:43;20797:18;;17736:49:0::2;20484:337:1::0;17736:49:0::2;-1:-1:-1::0;;;;;17804:21:0;::::2;17796:49;;;::::0;-1:-1:-1;;;17796:49:0;;18426:2:1;17796:49:0::2;::::0;::::2;18408:21:1::0;18465:2;18445:18;;;18438:30;-1:-1:-1;;;18484:18:1;;;18477:45;18539:18;;17796:49:0::2;18224:339:1::0;17796:49:0::2;17864:12;::::0;17880:1:::2;17864:12:::0;;;::::2;;;:17;;17856:58;;;::::0;-1:-1:-1;;;17856:58:0;;15358:2:1;17856:58:0::2;::::0;::::2;15340:21:1::0;15397:2;15377:18;;;15370:30;15436;15416:18;;;15409:58;15484:18;;17856:58:0::2;15156:352:1::0;17856:58:0::2;17925:17;17972::::0;17991:5:::2;17998:6;18006:7;17961:53;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17945:71;;;;;;17925:91;;18031:43;18044:9;18055:1;18058:7;18067:6;18031:12;:43::i;:::-;18027:149;;;18091:22;18097:7;18106:6;18091:5;:22::i;:::-;18133:31;18141:7;18150:6;18158:5;18133:31;;;;;;;;:::i;:::-;;;;;;;;18027:149;18191:58;18220:10;18232:5;18239:9;18191:58;;;;;;;;:::i;:::-;;;;;;;;17688:569;17576:681:::0;;;;:::o;4818:151::-;-1:-1:-1;;;;;4934:18:0;;;4907:7;4934:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4818:151::o;20048:685::-;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;-1:-1:-1;;;;;20137:21:0;::::1;20129:49;;;;-1:-1:-1::0;;;20129:49:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20197:21:0;::::1;20208:10;20197:21;;20189:54;;;::::0;-1:-1:-1;;;20189:54:0;;16763:2:1;20189:54:0::1;::::0;::::1;16745:21:1::0;16802:2;16782:18;;;16775:30;-1:-1:-1;;;16821:18:1;;;16814:50;16881:18;;20189:54:0::1;16561:344:1::0;20189:54:0::1;20263:29;-1:-1:-1::0;;;;;;;;;;;20284:7:0::1;20263;:29::i;:::-;20262:30;20254:68;;;::::0;-1:-1:-1;;;20254:68:0;;14657:2:1;20254:68:0::1;::::0;::::1;14639:21:1::0;14696:2;14676:18;;;14669:30;14735:27;14715:18;;;14708:55;14780:18;;20254:68:0::1;14455:349:1::0;20254:68:0::1;20333:17;20380:22;20403:7;20369:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20353:61;;;;;;20333:81;;20429:38;20442:9;20453:1;20456:7;20465:1;20429:12;:38::i;:::-;20425:227;;;20483:32;-1:-1:-1::0;;;;;;;;;;;20507:7:0::1;20483:10;:32::i;:::-;20530:12;:14:::0;;;;::::1;;;::::0;:12:::1;:14;::::0;::::1;:::i;:::-;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;20559:10:0::1;:24:::0;;-1:-1:-1;20559:24:0;::::1;::::0;;-1:-1:-1;20559:24:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;20559:24:0::1;-1:-1:-1::0;;;;;20559:24:0;::::1;::::0;;::::1;::::0;;;20603:37:::1;::::0;;6487:51:1;;;6569:2;6554:18;;6547:34;;;20603:37:0::1;::::0;6460:18:1;20603:37:0::1;6313:274:1::0;22384:1044:0;-1:-1:-1;;;;;;;;;;;11664:16:0;11675:4;11664:10;:16::i;:::-;-1:-1:-1;;;;;22473:21:0;::::1;22465:49;;;;-1:-1:-1::0;;;22465:49:0::1;;;;;;;:::i;:::-;22533:32;-1:-1:-1::0;;;;;;;;;;;22557:7:0::1;22533;:32::i;:::-;22525:69;;;::::0;-1:-1:-1;;;22525:69:0;;16410:2:1;22525:69:0::1;::::0;::::1;16392:21:1::0;16449:2;16429:18;;;16422:30;16488:26;16468:18;;;16461:54;16532:18;;22525:69:0::1;16208:348:1::0;22525:69:0::1;22631:1;22613:15:::0;;::::1;;:19;22605:57;;;::::0;-1:-1:-1;;;22605:57:0;;9806:2:1;22605:57:0::1;::::0;::::1;9788:21:1::0;9845:2;9825:18;;;9818:30;9884:27;9864:18;;;9857:55;9929:18;;22605:57:0::1;9604:349:1::0;22605:57:0::1;22673:17;22720:28;22749:7;22709:48;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22693:66;;;;;;22673:86;;22778:32;-1:-1:-1::0;;;;;;;;;;;22802:7:0::1;22778;:32::i;:::-;22770:65;;;::::0;-1:-1:-1;;;22770:65:0;;13184:2:1;22770:65:0::1;::::0;::::1;13166:21:1::0;13223:2;13203:18;;;13196:30;-1:-1:-1;;;13242:18:1;;;13235:50;13302:18;;22770:65:0::1;12982:344:1::0;22770:65:0::1;22850:38;22863:9;22874:1;22877:7;22886:1;22850:12;:38::i;:::-;22846:501;;;22905:36;-1:-1:-1::0;;;;;;;;;;;22933:7:0::1;22905:11;:36::i;:::-;22956:15;:17:::0;;::::1;;::::0;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;22992:8;22988:286;23010:13;:20:::0;23006:24:::1;::::0;::::1;;22988:286;;;23079:7;-1:-1:-1::0;;;;;23059:27:0::1;:13;23073:1;23059:16;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23059:16:0::1;:27;23056:203;;;23130:13;23144:20:::0;;:24:::1;::::0;23167:1:::1;::::0;23144:24:::1;:::i;:::-;23130:39;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23111:13:::1;:16:::0;;-1:-1:-1;;;;;23130:39:0;;::::1;::::0;23111:16:::1;::::0;::::1;::::0;;::::1;;;;;:::i;:::-;;;;;;;;;:58;;;;;-1:-1:-1::0;;;;;23111:58:0::1;;;;;-1:-1:-1::0;;;;;23111:58:0::1;;;;;;23192:13;:19;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23192:19:0;;;;;-1:-1:-1;;;;;;23192:19:0::1;::::0;;;;;23234:5:::1;;23056:203;23032:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22988:286;;;-1:-1:-1::0;23293:42:0::1;::::0;;-1:-1:-1;;;;;6505:32:1;;6487:51;;6569:2;6554:18;;6547:34;;;23293:42:0::1;::::0;6460:18:1;23293:42:0::1;6313:274:1::0;9877:236:0;9236:7;;;;10049:9;10041:64;;;;-1:-1:-1;;;10041:64:0;;22210:2:1;10041:64:0;;;22192:21:1;22249:2;22229:18;;;22222:30;22288:34;22268:18;;;22261:62;-1:-1:-1;;;22339:18:1;;;22332:40;22389:19;;10041:64:0;22008:406:1;7772:344:0;-1:-1:-1;;;;;7874:19:0;;7866:68;;;;-1:-1:-1;;;7866:68:0;;19926:2:1;7866:68:0;;;19908:21:1;19965:2;19945:18;;;19938:30;20004:34;19984:18;;;19977:62;-1:-1:-1;;;20055:18:1;;;20048:34;20099:19;;7866:68:0;19724:400:1;7866:68:0;-1:-1:-1;;;;;7953:21:0;;7945:68;;;;-1:-1:-1;;;7945:68:0;;12375:2:1;7945:68:0;;;12357:21:1;12414:2;12394:18;;;12387:30;12453:34;12433:18;;;12426:62;-1:-1:-1;;;12504:18:1;;;12497:32;12546:19;;7945:68:0;12173:398:1;7945:68:0;-1:-1:-1;;;;;8024:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8076:32;;7867:25:1;;;8076:32:0;;7840:18:1;8076:32:0;;;;;;;7772:344;;;:::o;8124:419::-;8225:24;8252:25;8262:5;8269:7;8252:9;:25::i;:::-;8225:52;;-1:-1:-1;;8292:16:0;:37;8288:248;;8374:6;8354:16;:26;;8346:68;;;;-1:-1:-1;;;8346:68:0;;13892:2:1;8346:68:0;;;13874:21:1;13931:2;13911:18;;;13904:30;13970:31;13950:18;;;13943:59;14019:18;;8346:68:0;13690:353:1;8346:68:0;8458:51;8467:5;8474:7;8502:6;8483:16;:25;8458:8;:51::i;:::-;8214:329;8124:419;;;:::o;6143:629::-;-1:-1:-1;;;;;6240:18:0;;6232:68;;;;-1:-1:-1;;;6232:68:0;;19520:2:1;6232:68:0;;;19502:21:1;19559:2;19539:18;;;19532:30;19598:34;19578:18;;;19571:62;-1:-1:-1;;;19649:18:1;;;19642:35;19694:19;;6232:68:0;19318:401:1;6232:68:0;-1:-1:-1;;;;;6319:16:0;;6311:64;;;;-1:-1:-1;;;6311:64:0;;10160:2:1;6311:64:0;;;10142:21:1;10199:2;10179:18;;;10172:30;10238:34;10218:18;;;10211:62;-1:-1:-1;;;10289:18:1;;;10282:33;10332:19;;6311:64:0;9958:399:1;6311:64:0;6386:38;6407:4;6413:2;6417:6;6386:20;:38::i;:::-;-1:-1:-1;;;;;6457:15:0;;6435:19;6457:15;;;;;;;;;;;6491:21;;;;6483:72;;;;-1:-1:-1;;;6483:72:0;;14250:2:1;6483:72:0;;;14232:21:1;14289:2;14269:18;;;14262:30;14328:34;14308:18;;;14301:62;-1:-1:-1;;;14379:18:1;;;14372:36;14425:19;;6483:72:0;14048:402:1;6483:72:0;-1:-1:-1;;;;;6591:15:0;;;:9;:15;;;;;;;;;;;6609:20;;;6591:38;;6651:13;;;;;;;;:23;;6623:6;;6591:9;6651:23;;6623:6;;6651:23;:::i;:::-;;;;;;;;6705:2;-1:-1:-1;;;;;6690:26:0;6699:4;-1:-1:-1;;;;;6690:26:0;;6709:6;6690:26;;;;7867:25:1;;7855:2;7840:18;;7721:177;6690:26:0;;;;;;;;6727:37;12840:147;12075:105;12142:30;12153:4;2440:10;12142;:30::i;13755:238::-;13839:22;13847:4;13853:7;13839;:22::i;:::-;13834:152;;13878:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;13878:29:0;;;;;;;;;:36;;-1:-1:-1;;13878:36:0;13910:4;13878:36;;;13961:12;2440:10;;2360:98;13961:12;-1:-1:-1;;;;;13934:40:0;13952:7;-1:-1:-1;;;;;13934:40:0;13946:4;13934:40;;;;;;;;;;13755:238;;:::o;14001:239::-;14085:22;14093:4;14099:7;14085;:22::i;:::-;14081:152;;;14156:5;14124:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;14124:29:0;;;;;;;;;;:37;;-1:-1:-1;;14124:37:0;;;14181:40;2440:10;;14124:12;;14181:40;;14156:5;14181:40;14001:239;;:::o;9375:108::-;9236:7;;;;9434:41;;;;-1:-1:-1;;;9434:41:0;;10564:2:1;9434:41:0;;;10546:21:1;10603:2;10583:18;;;10576:30;-1:-1:-1;;;10622:18:1;;;10615:50;10682:18;;9434:41:0;10362:344:1;9434:41:0;9375:108::o;9617:120::-;9121:16;:14;:16::i;:::-;9676:7:::1;:15:::0;;-1:-1:-1;;9676:15:0::1;::::0;;9707:22:::1;2440:10:::0;9716:12:::1;9707:22;::::0;-1:-1:-1;;;;;6269:32:1;;;6251:51;;6239:2;6224:18;9707:22:0::1;;;;;;;9617:120::o:0;7181:583::-;-1:-1:-1;;;;;7265:21:0;;7257:67;;;;-1:-1:-1;;;7257:67:0;;19118:2:1;7257:67:0;;;19100:21:1;19157:2;19137:18;;;19130:30;19196:34;19176:18;;;19169:62;-1:-1:-1;;;19247:18:1;;;19240:31;19288:19;;7257:67:0;18916:397:1;7257:67:0;7335:49;7356:7;7373:1;7377:6;7335:20;:49::i;:::-;-1:-1:-1;;;;;7420:18:0;;7395:22;7420:18;;;;;;;;;;;7457:24;;;;7449:71;;;;-1:-1:-1;;;7449:71:0;;11611:2:1;7449:71:0;;;11593:21:1;11650:2;11630:18;;;11623:30;11689:34;11669:18;;;11662:62;-1:-1:-1;;;11740:18:1;;;11733:32;11782:19;;7449:71:0;11409:398:1;7449:71:0;-1:-1:-1;;;;;7556:18:0;;:9;:18;;;;;;;;;;7577:23;;;7556:44;;7622:12;:22;;7594:6;;7556:9;7622:22;;7594:6;;7622:22;:::i;:::-;;;;-1:-1:-1;;7660:37:0;;7867:25:1;;;7686:1:0;;-1:-1:-1;;;;;7660:37:0;;;;;7855:2:1;7840:18;7660:37:0;;;;;;;12840:147;;;:::o;16486:1082::-;16585:4;16610:15;;;:9;:15;;;;;:24;;;;;16609:25;16601:63;;;;-1:-1:-1;;;16601:63:0;;10913:2:1;16601:63:0;;;10895:21:1;10952:2;10932:18;;;10925:30;10991:27;10971:18;;;10964:55;11036:18;;16601:63:0;10711:349:1;16601:63:0;16701:12;;;;;;;16728:9;;;16736:1;16728:9;16724:88;;;16773:15;;16795:1;;16773:19;;:15;;16791:1;16773:19;:::i;:::-;:23;;;;:::i;:::-;:27;;16799:1;16773:27;:::i;:::-;16754:46;;16724:88;16826:15;;;;:9;:15;;;;;:25;;;;;16822:142;;16873:15;;;;:9;:15;;;;;:22;;;:31;;;16919:23;;:33;;-1:-1:-1;;;;;;16919:33:0;;-1:-1:-1;;;;;16919:33:0;;;;;;16822:142;16978:15;;;;:9;:15;;;;;:25;;;:44;;;;:25;;:44;16974:545;;;17048:15;;;;:9;:15;;;;;;;;17073:10;17048:36;;;;;;;;;;17047:37;17039:87;;;;-1:-1:-1;;;17039:87:0;;12778:2:1;17039:87:0;;;12760:21:1;12817:2;12797:18;;;12790:30;12856:34;12836:18;;;12829:62;-1:-1:-1;;;12907:18:1;;;12900:35;12952:19;;17039:87:0;12576:401:1;17039:87:0;17141:15;;;;:9;:15;;;;;;;;17166:10;17141:36;;;;;;;;:43;;-1:-1:-1;;17141:43:0;17180:4;17141:43;;;;;;17199:15;;;;;;;:25;:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17245:15:0;;;:9;:15;;;;;-1:-1:-1;17245:25:0;;:45;;;:25;;:45;;-1:-1:-1;17241:267:0;;17319:15;;;;:9;:15;;;;;;;;17344:10;17319:36;;;;;;;;;;17311:81;;;;-1:-1:-1;;;17311:81:0;;12014:2:1;17311:81:0;;;11996:21:1;;;12033:18;;;12026:30;12092:34;12072:18;;;12065:62;12144:18;;17311:81:0;11812:356:1;17311:81:0;-1:-1:-1;;17411:15:0;;;;:9;:15;;;;;:24;;:31;;-1:-1:-1;;17411:31:0;17438:4;17411:31;;;;;;17461;;17241:267;-1:-1:-1;;17536:15:0;;;;:9;:15;;;;;:24;;;;;16486:1082;;;;;;;:::o;9259:108::-;9236:7;;;;9329:9;9321:38;;;;-1:-1:-1;;;9321:38:0;;15715:2:1;9321:38:0;;;15697:21:1;15754:2;15734:18;;;15727:30;-1:-1:-1;;;15773:18:1;;;15766:46;15829:18;;9321:38:0;15513:340:1;9491:118:0;9041:19;:17;:19::i;:::-;9551:7:::1;:14:::0;;-1:-1:-1;;9551:14:0::1;9561:4;9551:14;::::0;;9581:20:::1;9588:12;2440:10:::0;;2360:98;6780:393;-1:-1:-1;;;;;6864:21:0;;6856:65;;;;-1:-1:-1;;;6856:65:0;;21850:2:1;6856:65:0;;;21832:21:1;21889:2;21869:18;;;21862:30;21928:33;21908:18;;;21901:61;21979:18;;6856:65:0;21648:355:1;6856:65:0;6932:49;6961:1;6965:7;6974:6;6932:20;:49::i;:::-;7008:6;6992:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;7025:18:0;;:9;:18;;;;;;;;;;:28;;7047:6;;7025:9;:28;;7047:6;;7025:28;:::i;:::-;;;;-1:-1:-1;;7069:37:0;;7867:25:1;;;-1:-1:-1;;;;;7069:37:0;;;7086:1;;7069:37;;7855:2:1;7840:18;7069:37:0;;;;;;;13152:216;;:::o;18547:248::-;-1:-1:-1;;;;;18678:19:0;;18692:4;18678:19;;18670:62;;;;-1:-1:-1;;;18670:62:0;;13533:2:1;18670:62:0;;;13515:21:1;13572:2;13552:18;;;13545:30;13611:32;13591:18;;;13584:60;13661:18;;18670:62:0;13331:354:1;18670:62:0;18743:44;18770:4;18776:2;18780:6;18743:26;:44::i;12188:505::-;12277:22;12285:4;12291:7;12277;:22::i;:::-;12272:414;;12465:41;12493:7;-1:-1:-1;;;;;12465:41:0;12503:2;12465:19;:41::i;:::-;12579:38;12607:4;12614:2;12579:19;:38::i;:::-;12370:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12370:270:0;;;;;;;;;;-1:-1:-1;;;12316:358:0;;;;;;;:::i;1658:451::-;1733:13;1759:19;1791:10;1795:6;1791:1;:10;:::i;:::-;:14;;1804:1;1791:14;:::i;:::-;1781:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1781:25:0;;1759:47;;-1:-1:-1;;;1817:6:0;1824:1;1817:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1817:15:0;;;;;;;;;-1:-1:-1;;;1843:6:0;1850:1;1843:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1843:15:0;;;;;;;;-1:-1:-1;1874:9:0;1886:10;1890:6;1886:1;:10;:::i;:::-;:14;;1899:1;1886:14;:::i;:::-;1874:26;;1869:135;1906:1;1902;:5;1869:135;;;-1:-1:-1;;;1954:5:0;1962:3;1954:11;1941:25;;;;;;;:::i;:::-;;;;1929:6;1936:1;1929:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;1929:37:0;;;;;;;;-1:-1:-1;1991:1:0;1981:11;;;;;1909:3;;;:::i;:::-;;;1869:135;;;-1:-1:-1;2022:10:0;;2014:55;;;;-1:-1:-1;;;2014:55:0;;9445:2:1;2014:55:0;;;9427:21:1;;;9464:18;;;9457:30;9523:34;9503:18;;;9496:62;9575:18;;2014:55:0;9243:356:1;2014:55:0;2094:6;1658:451;-1:-1:-1;;;1658:451:0:o;14:631:1:-;78:5;108:18;149:2;141:6;138:14;135:40;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:72;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:45;;;532:1;529;522:12;491:45;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;747:70;650:173;;;:::o;828:221::-;871:5;924:3;917:4;909:6;905:17;901:27;891:55;;942:1;939;932:12;891:55;964:79;1039:3;1030:6;1017:20;1010:4;1002:6;998:17;964:79;:::i;1054:186::-;1113:6;1166:2;1154:9;1145:7;1141:23;1137:32;1134:52;;;1182:1;1179;1172:12;1134:52;1205:29;1224:9;1205:29;:::i;1245:260::-;1313:6;1321;1374:2;1362:9;1353:7;1349:23;1345:32;1342:52;;;1390:1;1387;1380:12;1342:52;1413:29;1432:9;1413:29;:::i;:::-;1403:39;;1461:38;1495:2;1484:9;1480:18;1461:38;:::i;:::-;1451:48;;1245:260;;;;;:::o;1510:328::-;1587:6;1595;1603;1656:2;1644:9;1635:7;1631:23;1627:32;1624:52;;;1672:1;1669;1662:12;1624:52;1695:29;1714:9;1695:29;:::i;:::-;1685:39;;1743:38;1777:2;1766:9;1762:18;1743:38;:::i;:::-;1733:48;;1828:2;1817:9;1813:18;1800:32;1790:42;;1510:328;;;;;:::o;1843:254::-;1911:6;1919;1972:2;1960:9;1951:7;1947:23;1943:32;1940:52;;;1988:1;1985;1978:12;1940:52;2011:29;2030:9;2011:29;:::i;:::-;2001:39;2087:2;2072:18;;;;2059:32;;-1:-1:-1;;;1843:254:1:o;2102:464::-;2189:6;2197;2205;2258:2;2246:9;2237:7;2233:23;2229:32;2226:52;;;2274:1;2271;2264:12;2226:52;2297:29;2316:9;2297:29;:::i;:::-;2287:39;;2373:2;2362:9;2358:18;2345:32;2335:42;;2428:2;2417:9;2413:18;2400:32;2455:18;2447:6;2444:30;2441:50;;;2487:1;2484;2477:12;2441:50;2510;2552:7;2543:6;2532:9;2528:22;2510:50;:::i;:::-;2500:60;;;2102:464;;;;;:::o;2571:180::-;2630:6;2683:2;2671:9;2662:7;2658:23;2654:32;2651:52;;;2699:1;2696;2689:12;2651:52;-1:-1:-1;2722:23:1;;2571:180;-1:-1:-1;2571:180:1:o;2756:254::-;2824:6;2832;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2937:9;2924:23;2914:33;;2966:38;3000:2;2989:9;2985:18;2966:38;:::i;3015:286::-;3073:6;3126:2;3114:9;3105:7;3101:23;3097:32;3094:52;;;3142:1;3139;3132:12;3094:52;3168:23;;-1:-1:-1;;;;;;3220:32:1;;3210:43;;3200:71;;3267:1;3264;3257:12;3306:449;3374:6;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;3483:9;3470:23;3516:18;3508:6;3505:30;3502:50;;;3548:1;3545;3538:12;3502:50;3571:22;;3624:4;3616:13;;3612:27;-1:-1:-1;3602:55:1;;3653:1;3650;3643:12;3602:55;3676:73;3741:7;3736:2;3723:16;3718:2;3714;3710:11;3676:73;:::i;3760:390::-;3838:6;3846;3899:2;3887:9;3878:7;3874:23;3870:32;3867:52;;;3915:1;3912;3905:12;3867:52;3955:9;3942:23;3988:18;3980:6;3977:30;3974:50;;;4020:1;4017;4010:12;3974:50;4043;4085:7;4076:6;4065:9;4061:22;4043:50;:::i;:::-;4033:60;4140:2;4125:18;;;;4112:32;;-1:-1:-1;;;;3760:390:1:o;4340:461::-;4393:3;4431:5;4425:12;4458:6;4453:3;4446:19;4484:4;4513:2;4508:3;4504:12;4497:19;;4550:2;4543:5;4539:14;4571:1;4581:195;4595:6;4592:1;4589:13;4581:195;;;4660:13;;-1:-1:-1;;;;;4656:39:1;4644:52;;4716:12;;;;4751:15;;;;4692:1;4610:9;4581:195;;;-1:-1:-1;4792:3:1;;4340:461;-1:-1:-1;;;;;4340:461:1:o;4806:240::-;4890:1;4883:5;4880:12;4870:143;;4935:10;4930:3;4926:20;4923:1;4916:31;4970:4;4967:1;4960:15;4998:4;4995:1;4988:15;4870:143;5022:18;;4806:240::o;5051:258::-;5093:3;5131:5;5125:12;5158:6;5153:3;5146:19;5174:63;5230:6;5223:4;5218:3;5214:14;5207:4;5200:5;5196:16;5174:63;:::i;:::-;5291:2;5270:15;-1:-1:-1;;5266:29:1;5257:39;;;;5298:4;5253:50;;5051:258;-1:-1:-1;;5051:258:1:o;5314:786::-;5725:25;5720:3;5713:38;5695:3;5780:6;5774:13;5796:62;5851:6;5846:2;5841:3;5837:12;5830:4;5822:6;5818:17;5796:62;:::i;:::-;-1:-1:-1;;;5917:2:1;5877:16;;;5909:11;;;5902:40;5967:13;;5989:63;5967:13;6038:2;6030:11;;6023:4;6011:17;;5989:63;:::i;:::-;6072:17;6091:2;6068:26;;5314:786;-1:-1:-1;;;;5314:786:1:o;6592:388::-;6826:1;6822;6817:3;6813:11;6809:19;6801:6;6797:32;6786:9;6779:51;6866:6;6861:2;6850:9;6846:18;6839:34;6909:2;6904;6893:9;6889:18;6882:30;6760:4;6929:45;6970:2;6959:9;6955:18;6947:6;6929:45;:::i;:::-;6921:53;6592:388;-1:-1:-1;;;;;6592:388:1:o;6985:261::-;7164:2;7153:9;7146:21;7127:4;7184:56;7236:2;7225:9;7221:18;7213:6;7184:56;:::i;7903:311::-;8080:2;8065:18;;8092:47;8069:9;8121:6;8092:47;:::i;:::-;-1:-1:-1;;;;;8175:32:1;;;;8170:2;8155:18;;;;8148:60;7903:311;;-1:-1:-1;7903:311:1:o;8219:498::-;8449:47;8486:9;8478:6;8449:47;:::i;:::-;8532:3;8527:2;8516:9;8512:18;8505:31;8430:4;8553:46;8594:3;8583:9;8579:19;8571:6;8553:46;:::i;:::-;8630:2;8615:18;;8608:34;;;;-1:-1:-1;;;;;;8678:32:1;;;;8673:2;8658:18;;;8651:60;8545:54;8219:498;-1:-1:-1;;8219:498:1:o;8722:220::-;8871:2;8860:9;8853:21;8834:4;8891:45;8932:2;8921:9;8917:18;8909:6;8891:45;:::i;8947:291::-;9124:2;9113:9;9106:21;9087:4;9144:45;9185:2;9174:9;9170:18;9162:6;9144:45;:::i;:::-;9136:53;;9225:6;9220:2;9209:9;9205:18;9198:34;8947:291;;;;;:::o;11065:339::-;11267:2;11249:21;;;11306:2;11286:18;;;11279:30;-1:-1:-1;;;11340:2:1;11325:18;;11318:45;11395:2;11380:18;;11065:339::o;17601:618::-;17907:3;17896:9;17889:22;17948:1;17942:3;17931:9;17927:19;17920:30;-1:-1:-1;;;17981:3:1;17970:9;17966:19;17959:37;18063:1;18059;18054:3;18050:11;18046:19;18038:6;18034:32;18027:4;18016:9;18012:20;18005:62;18103:3;18098:2;18087:9;18083:18;18076:31;17870:4;18124:46;18165:3;18154:9;18150:19;18142:6;18124:46;:::i;:::-;18116:54;;18206:6;18201:2;18190:9;18186:18;18179:34;17601:618;;;;;;:::o;22601:517::-;22874:10;22866:6;22862:23;22851:9;22844:42;22951:1;22947;22942:3;22938:11;22934:19;22926:6;22922:32;22917:2;22906:9;22902:18;22895:60;22991:6;22986:2;22975:9;22971:18;22964:34;23034:3;23029:2;23018:9;23014:18;23007:31;22825:4;23055:57;23107:3;23096:9;23092:19;23084:6;23055:57;:::i;:::-;23047:65;22601:517;-1:-1:-1;;;;;;22601:517:1:o;23312:128::-;23352:3;23383:1;23379:6;23376:1;23373:13;23370:39;;;23389:18;;:::i;:::-;-1:-1:-1;23425:9:1;;23312:128::o;23445:228::-;23484:3;23512:10;23549:2;23546:1;23542:10;23579:2;23576:1;23572:10;23610:3;23606:2;23602:12;23597:3;23594:21;23591:47;;;23618:18;;:::i;:::-;23654:13;;23445:228;-1:-1:-1;;;;23445:228:1:o;23678:288::-;23717:1;23743:10;23780:2;23777:1;23773:10;23802:3;23792:134;;23848:10;23843:3;23839:20;23836:1;23829:31;23883:4;23880:1;23873:15;23911:4;23908:1;23901:15;23792:134;23944:10;;23940:20;;;;;23678:288;-1:-1:-1;;23678:288:1:o;23971:168::-;24011:7;24077:1;24073;24069:6;24065:14;24062:1;24059:21;24054:1;24047:9;24040:17;24036:45;24033:71;;;24084:18;;:::i;:::-;-1:-1:-1;24124:9:1;;23971:168::o;24144:262::-;24183:7;24215:10;24252:2;24249:1;24245:10;24282:2;24279:1;24275:10;24338:3;24334:2;24330:12;24325:3;24322:21;24315:3;24308:11;24301:19;24297:47;24294:73;;;24347:18;;:::i;:::-;24387:13;;24144:262;-1:-1:-1;;;;24144:262:1:o;24411:125::-;24451:4;24479:1;24476;24473:8;24470:34;;;24484:18;;:::i;:::-;-1:-1:-1;24521:9:1;;24411:125::o;24541:297::-;24659:12;;24706:4;24695:16;;;24689:23;;24659:12;24724:16;;24721:111;;;24818:1;24814:6;24804;24798:4;24794:17;24791:1;24787:25;24783:38;24776:5;24772:50;24763:59;;24721:111;;24541:297;;;:::o;24843:258::-;24915:1;24925:113;24939:6;24936:1;24933:13;24925:113;;;25015:11;;;25009:18;24996:11;;;24989:39;24961:2;24954:10;24925:113;;;25056:6;25053:1;25050:13;25047:48;;;-1:-1:-1;;25091:1:1;25073:16;;25066:27;24843:258::o;25106:136::-;25145:3;25173:5;25163:39;;25182:18;;:::i;:::-;-1:-1:-1;;;25218:18:1;;25106:136::o;25247:185::-;25285:3;25329:10;25322:5;25318:22;25359:7;25349:41;;25370:18;;:::i;:::-;-1:-1:-1;;25406:20:1;;25247:185;-1:-1:-1;;25247:185:1:o;25437:380::-;25516:1;25512:12;;;;25559;;;25580:61;;25634:4;25626:6;25622:17;25612:27;;25580:61;25687:2;25679:6;25676:14;25656:18;25653:38;25650:161;;;25733:10;25728:3;25724:20;25721:1;25714:31;25768:4;25765:1;25758:15;25796:4;25793:1;25786:15;25822:197;25860:3;25888:6;25929:2;25922:5;25918:14;25956:2;25947:7;25944:15;25941:41;;;25962:18;;:::i;:::-;26011:1;25998:15;;25822:197;-1:-1:-1;;;25822:197:1:o;26024:201::-;26062:3;26090:10;26135:2;26128:5;26124:14;26162:2;26153:7;26150:15;26147:41;;;26168:18;26230:127;26291:10;26286:3;26282:20;26279:1;26272:31;26322:4;26319:1;26312:15;26346:4;26343:1;26336:15;26362:127;26423:10;26418:3;26414:20;26411:1;26404:31;26454:4;26451:1;26444:15;26478:4;26475:1;26468:15;26494:127;26555:10;26550:3;26546:20;26543:1;26536:31;26586:4;26583:1;26576:15;26610:4;26607:1;26600:15;26626:127;26687:10;26682:3;26678:20;26675:1;26668:31;26718:4;26715:1;26708:15;26742:4;26739:1;26732:15
Swarm Source
ipfs://c7e8c7a6c5105a34a59cb6c6d05a95d0e500c0d13bdad246724423b042afa3d7
Loading...
Loading
Loading...
Loading
OVERVIEW
FIO Protocol (FIO) is a decentralized, open-source usability solution that enables easier cryptocurrency transactions on all blockchains by replacing complex wallet addresses with a single, customizable, and human-readable Crypto Handle in the format of username@domain.Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.