Feature Tip: Add private address tag to any address under My Name Tag !
ERC-1155
Overview
Max Total Supply
162
Holders
87
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Bekk
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-12 */ // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.0 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts v4.4.0 (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** @dev Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.0 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.0 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/finance/PaymentSplitter.sol // OpenZeppelin Contracts v4.4.0 (finance/PaymentSplitter.sol) pragma solidity ^0.8.0; /** * @title PaymentSplitter * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware * that the Ether will be split in this way, since it is handled transparently by the contract. * * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim * an amount proportional to the percentage of total shares they were assigned. * * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release} * function. * * NOTE: This contract assumes that ERC20 tokens will behave similarly to native tokens (Ether). Rebasing tokens, and * tokens that apply fees during transfers, are likely to not be supported as expected. If in doubt, we encourage you * to run tests before sending real value to this contract. */ contract PaymentSplitter is Context { event PayeeAdded(address account, uint256 shares); event PaymentReleased(address to, uint256 amount); event ERC20PaymentReleased(IERC20 indexed token, address to, uint256 amount); event PaymentReceived(address from, uint256 amount); uint256 private _totalShares; uint256 private _totalReleased; mapping(address => uint256) private _shares; mapping(address => uint256) private _released; address[] private _payees; mapping(IERC20 => uint256) private _erc20TotalReleased; mapping(IERC20 => mapping(address => uint256)) private _erc20Released; /** * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at * the matching position in the `shares` array. * * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no * duplicates in `payees`. */ constructor(address[] memory payees, uint256[] memory shares_) payable { require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch"); require(payees.length > 0, "PaymentSplitter: no payees"); for (uint256 i = 0; i < payees.length; i++) { _addPayee(payees[i], shares_[i]); } } /** * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the * reliability of the events, and not the actual splitting of Ether. * * To learn more about this see the Solidity documentation for * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback * functions]. */ receive() external payable virtual { emit PaymentReceived(_msgSender(), msg.value); } /** * @dev Getter for the total shares held by payees. */ function totalShares() public view returns (uint256) { return _totalShares; } /** * @dev Getter for the total amount of Ether already released. */ function totalReleased() public view returns (uint256) { return _totalReleased; } /** * @dev Getter for the total amount of `token` already released. `token` should be the address of an IERC20 * contract. */ function totalReleased(IERC20 token) public view returns (uint256) { return _erc20TotalReleased[token]; } /** * @dev Getter for the amount of shares held by an account. */ function shares(address account) public view returns (uint256) { return _shares[account]; } /** * @dev Getter for the amount of Ether already released to a payee. */ function released(address account) public view returns (uint256) { return _released[account]; } /** * @dev Getter for the amount of `token` tokens already released to a payee. `token` should be the address of an * IERC20 contract. */ function released(IERC20 token, address account) public view returns (uint256) { return _erc20Released[token][account]; } /** * @dev Getter for the address of the payee number `index`. */ function payee(uint256 index) public view returns (address) { return _payees[index]; } /** * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the * total shares and their previous withdrawals. */ function release(address payable account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = address(this).balance + totalReleased(); uint256 payment = _pendingPayment(account, totalReceived, released(account)); require(payment != 0, "PaymentSplitter: account is not due payment"); _released[account] += payment; _totalReleased += payment; Address.sendValue(account, payment); emit PaymentReleased(account, payment); } /** * @dev Triggers a transfer to `account` of the amount of `token` tokens they are owed, according to their * percentage of the total shares and their previous withdrawals. `token` must be the address of an IERC20 * contract. */ function release(IERC20 token, address account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = token.balanceOf(address(this)) + totalReleased(token); uint256 payment = _pendingPayment(account, totalReceived, released(token, account)); require(payment != 0, "PaymentSplitter: account is not due payment"); _erc20Released[token][account] += payment; _erc20TotalReleased[token] += payment; SafeERC20.safeTransfer(token, account, payment); emit ERC20PaymentReleased(token, account, payment); } /** * @dev internal logic for computing the pending payment of an `account` given the token historical balances and * already released amounts. */ function _pendingPayment( address account, uint256 totalReceived, uint256 alreadyReleased ) private view returns (uint256) { return (totalReceived * _shares[account]) / _totalShares - alreadyReleased; } /** * @dev Add a new payee to the contract. * @param account The address of the payee to add. * @param shares_ The number of shares owned by the payee. */ function _addPayee(address account, uint256 shares_) private { require(account != address(0), "PaymentSplitter: account is the zero address"); require(shares_ > 0, "PaymentSplitter: shares are 0"); require(_shares[account] == 0, "PaymentSplitter: account already has shares"); _payees.push(account); _shares[account] = shares_; _totalShares = _totalShares + shares_; emit PayeeAdded(account, shares_); } } // File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.0 (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.0 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/NFT.sol pragma solidity ^0.8.0; /** * @dev contract module which defines Bekk NFT NFT Collection * and all the interactions it uses */ contract Bekk is ERC1155, Ownable, PaymentSplitter { //@dev Attributes for NFT configuration uint256 internal tokenId; uint256 public cost = 0.3 ether; uint256 public maxSupply = 170; uint256 public maxMintAmount = 2; string public name = "Louis Bekk NFT"; bool public paused; // @dev inner attributes of the contract /** * @dev Create an instance of Bekk NFT contract */ constructor( string memory _baseURI, address[] memory payees, uint256[] memory shares_ ) ERC1155(_baseURI) PaymentSplitter(payees, shares_) { tokenId = 0; } /** * @dev Mint edition to a wallet * @param _to wallet receiving the edition(s). * @param _mintAmount number of editions to mint. */ function mint(address _to, uint256 _mintAmount) public payable { require(!paused, "Sales are paused"); require(_mintAmount <= maxMintAmount, "Max amount exceeded"); require( tokenId + _mintAmount <= maxSupply, "Not enough mintable editions !" ); require( msg.value >= cost * _mintAmount, "Insufficient transaction amount." ); for (uint256 i = 0; i < _mintAmount; i++) { tokenId++; _mint(_to, tokenId, 1, ""); } } /** * @dev change cost of NFT * @param _newCost new cost of each edition */ function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } /** * @dev restrict max mintable amount of edition at a time * @param _newmaxMintAmount new max mintable amount */ function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner { maxMintAmount = _newmaxMintAmount; } /** * @dev restrict max mintable amount of edition at a time * @param _nexMaxSupply new max supply */ function setmaxSupply(uint256 _nexMaxSupply) public onlyOwner { maxSupply = _nexMaxSupply; } /** * @dev set uri * @param _newURI new URI */ function setURI(string memory _newURI) public onlyOwner { _setURI(_newURI); } /** * @dev Disable minting process */ function pause() public onlyOwner { paused = !paused; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nexMaxSupply","type":"uint256"}],"name":"setmaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052670429d069189e0000600c5560aa600d556002600e556040518060400160405280600e81526020017f4c6f7569732042656b6b204e4654000000000000000000000000000000000000815250600f90805190602001906200006792919062000505565b503480156200007557600080fd5b5060405162005aa338038062005aa383398181016040528101906200009b9190620007bd565b818184620000af81620001e160201b60201c565b50620000d0620000c4620001fd60201b60201c565b6200020560201b60201c565b805182511462000117576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010e90620009aa565b60405180910390fd5b60008251116200015e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015590620009ee565b60405180910390fd5b60005b8251811015620001cd57620001b783828151811062000185576200018462000ce9565b5b6020026020010151838381518110620001a357620001a262000ce9565b5b6020026020010151620002cb60201b60201c565b8080620001c49062000c3d565b91505062000161565b5050506000600b8190555050505062000ee4565b8060029080519060200190620001f992919062000505565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200033e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003359062000988565b60405180910390fd5b6000811162000384576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037b9062000a10565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541462000409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040090620009cc565b60405180910390fd5b6008829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600454620004c0919062000b00565b6004819055507f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac8282604051620004f99291906200095b565b60405180910390a15050565b828054620005139062000bd1565b90600052602060002090601f01602090048101928262000537576000855562000583565b82601f106200055257805160ff191683800117855562000583565b8280016001018555821562000583579182015b828111156200058257825182559160200191906001019062000565565b5b50905062000592919062000596565b5090565b5b80821115620005b157600081600090555060010162000597565b5090565b6000620005cc620005c68462000a5b565b62000a32565b90508083825260208201905082856020860282011115620005f257620005f162000d4c565b5b60005b858110156200062657816200060b8882620006f6565b845260208401935060208301925050600181019050620005f5565b5050509392505050565b600062000647620006418462000a8a565b62000a32565b905080838252602082019050828560208602820111156200066d576200066c62000d4c565b5b60005b85811015620006a15781620006868882620007a6565b84526020840193506020830192505060018101905062000670565b5050509392505050565b6000620006c2620006bc8462000ab9565b62000a32565b905082815260208101848484011115620006e157620006e062000d51565b5b620006ee84828562000b9b565b509392505050565b600081519050620007078162000eb0565b92915050565b600082601f83011262000725576200072462000d47565b5b815162000737848260208601620005b5565b91505092915050565b600082601f83011262000758576200075762000d47565b5b81516200076a84826020860162000630565b91505092915050565b600082601f8301126200078b576200078a62000d47565b5b81516200079d848260208601620006ab565b91505092915050565b600081519050620007b78162000eca565b92915050565b600080600060608486031215620007d957620007d862000d5b565b5b600084015167ffffffffffffffff811115620007fa57620007f962000d56565b5b620008088682870162000773565b935050602084015167ffffffffffffffff8111156200082c576200082b62000d56565b5b6200083a868287016200070d565b925050604084015167ffffffffffffffff8111156200085e576200085d62000d56565b5b6200086c8682870162000740565b9150509250925092565b620008818162000b5d565b82525050565b600062000896602c8362000aef565b9150620008a38262000d71565b604082019050919050565b6000620008bd60328362000aef565b9150620008ca8262000dc0565b604082019050919050565b6000620008e4602b8362000aef565b9150620008f18262000e0f565b604082019050919050565b60006200090b601a8362000aef565b9150620009188262000e5e565b602082019050919050565b600062000932601d8362000aef565b91506200093f8262000e87565b602082019050919050565b620009558162000b91565b82525050565b600060408201905062000972600083018562000876565b6200098160208301846200094a565b9392505050565b60006020820190508181036000830152620009a38162000887565b9050919050565b60006020820190508181036000830152620009c581620008ae565b9050919050565b60006020820190508181036000830152620009e781620008d5565b9050919050565b6000602082019050818103600083015262000a0981620008fc565b9050919050565b6000602082019050818103600083015262000a2b8162000923565b9050919050565b600062000a3e62000a51565b905062000a4c828262000c07565b919050565b6000604051905090565b600067ffffffffffffffff82111562000a795762000a7862000d18565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562000aa85762000aa762000d18565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562000ad75762000ad662000d18565b5b62000ae28262000d60565b9050602081019050919050565b600082825260208201905092915050565b600062000b0d8262000b91565b915062000b1a8362000b91565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b525762000b5162000c8b565b5b828201905092915050565b600062000b6a8262000b71565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000bbb57808201518184015260208101905062000b9e565b8381111562000bcb576000848401525b50505050565b6000600282049050600182168062000bea57607f821691505b6020821081141562000c015762000c0062000cba565b5b50919050565b62000c128262000d60565b810181811067ffffffffffffffff8211171562000c345762000c3362000d18565b5b80604052505050565b600062000c4a8262000b91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c805762000c7f62000c8b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061796d656e7453706c69747465723a206163636f756e74206973207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a2070617965657320616e64207368617260008201527f6573206c656e677468206d69736d617463680000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960008201527f2068617320736861726573000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206e6f20706179656573000000000000600082015250565b7f5061796d656e7453706c69747465723a20736861726573206172652030000000600082015250565b62000ebb8162000b5d565b811462000ec757600080fd5b50565b62000ed58162000b91565b811462000ee157600080fd5b50565b614baf8062000ef46000396000f3fe6080604052600436106101db5760003560e01c80634e1273f411610102578063a22cb46511610095578063e33b7de311610064578063e33b7de31461070b578063e985e9c514610736578063f242432a14610773578063f2fde38b1461079c57610222565b8063a22cb4651461063d578063ce7c2ac214610666578063d5abeb01146106a3578063d79779b2146106ce57610222565b80638456cb59116100d15780638456cb59146105815780638b83209b146105985780638da5cb5b146105d55780639852595c1461060057610222565b80634e1273f4146104d95780635c975abb14610516578063715018a6146105415780637f00c7a61461055857610222565b8063228025e81161017a578063406072a911610149578063406072a91461042e57806340c10f191461046b57806344a0d68a1461048757806348b75044146104b057610222565b8063228025e814610386578063239c70ae146103af5780632eb2c2d6146103da5780633a98ef391461040357610222565b806306fdde03116101b657806306fdde03146102ca5780630e89341c146102f557806313faede614610332578063191655871461035d57610222565b8062fdd58e1461022757806301ffc9a71461026457806302fe5305146102a157610222565b36610222577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706102096107c5565b34604051610218929190613a85565b60405180910390a1005b600080fd5b34801561023357600080fd5b5061024e60048036038101906102499190613235565b6107cd565b60405161025b9190613e44565b60405180910390f35b34801561027057600080fd5b5061028b6004803603810190610286919061331a565b610896565b6040516102989190613b07565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c391906133e1565b610978565b005b3480156102d657600080fd5b506102df610a00565b6040516102ec9190613b22565b60405180910390f35b34801561030157600080fd5b5061031c6004803603810190610317919061342a565b610a8e565b6040516103299190613b22565b60405180910390f35b34801561033e57600080fd5b50610347610b22565b6040516103549190613e44565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190613022565b610b28565b005b34801561039257600080fd5b506103ad60048036038101906103a8919061342a565b610cd3565b005b3480156103bb57600080fd5b506103c4610d59565b6040516103d19190613e44565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc919061308f565b610d5f565b005b34801561040f57600080fd5b50610418610e00565b6040516104259190613e44565b60405180910390f35b34801561043a57600080fd5b50610455600480360381019061045091906133a1565b610e0a565b6040516104629190613e44565b60405180910390f35b61048560048036038101906104809190613235565b610e91565b005b34801561049357600080fd5b506104ae60048036038101906104a9919061342a565b611021565b005b3480156104bc57600080fd5b506104d760048036038101906104d291906133a1565b6110a7565b005b3480156104e557600080fd5b5061050060048036038101906104fb9190613275565b61136f565b60405161050d9190613aae565b60405180910390f35b34801561052257600080fd5b5061052b611488565b6040516105389190613b07565b60405180910390f35b34801561054d57600080fd5b5061055661149b565b005b34801561056457600080fd5b5061057f600480360381019061057a919061342a565b611523565b005b34801561058d57600080fd5b506105966115a9565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061342a565b611651565b6040516105cc919061397f565b60405180910390f35b3480156105e157600080fd5b506105ea611699565b6040516105f7919061397f565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190612ff5565b6116c3565b6040516106349190613e44565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f91906131f5565b61170c565b005b34801561067257600080fd5b5061068d60048036038101906106889190612ff5565b611722565b60405161069a9190613e44565b60405180910390f35b3480156106af57600080fd5b506106b861176b565b6040516106c59190613e44565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613374565b611771565b6040516107029190613e44565b60405180910390f35b34801561071757600080fd5b506107206117ba565b60405161072d9190613e44565b60405180910390f35b34801561074257600080fd5b5061075d6004803603810190610758919061304f565b6117c4565b60405161076a9190613b07565b60405180910390f35b34801561077f57600080fd5b5061079a6004803603810190610795919061315e565b611858565b005b3480156107a857600080fd5b506107c360048036038101906107be9190612ff5565b6118f9565b005b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083590613bc4565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061096157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109715750610970826119f1565b5b9050919050565b6109806107c5565b73ffffffffffffffffffffffffffffffffffffffff1661099e611699565b73ffffffffffffffffffffffffffffffffffffffff16146109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb90613d24565b60405180910390fd5b6109fd81611a5b565b50565b600f8054610a0d90614208565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3990614208565b8015610a865780601f10610a5b57610100808354040283529160200191610a86565b820191906000526020600020905b815481529060010190602001808311610a6957829003601f168201915b505050505081565b606060028054610a9d90614208565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac990614208565b8015610b165780601f10610aeb57610100808354040283529160200191610b16565b820191906000526020600020905b815481529060010190602001808311610af957829003601f168201915b50505050509050919050565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba190613c24565b60405180910390fd5b6000610bb46117ba565b47610bbf9190613fe3565b90506000610bd68383610bd1866116c3565b611a75565b90506000811415610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1390613ca4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6b9190613fe3565b925050819055508060056000828254610c849190613fe3565b92505081905550610c958382611ae3565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051610cc692919061399a565b60405180910390a1505050565b610cdb6107c5565b73ffffffffffffffffffffffffffffffffffffffff16610cf9611699565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4690613d24565b60405180910390fd5b80600d8190555050565b600e5481565b610d676107c5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610dad5750610dac85610da76107c5565b6117c4565b5b610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de390613ce4565b60405180910390fd5b610df98585858585611bd7565b5050505050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601060009054906101000a900460ff1615610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613b64565b60405180910390fd5b600e54811115610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90613b84565b60405180910390fd5b600d5481600b54610f379190613fe3565b1115610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613d44565b60405180910390fd5b80600c54610f86919061406a565b341015610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90613d64565b60405180910390fd5b60005b8181101561101c57600b6000815480929190610fe69061426b565b919050555061100983600b54600160405180602001604052806000815250611eeb565b80806110149061426b565b915050610fcb565b505050565b6110296107c5565b73ffffffffffffffffffffffffffffffffffffffff16611047611699565b73ffffffffffffffffffffffffffffffffffffffff161461109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490613d24565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090613c24565b60405180910390fd5b600061113483611771565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161116d919061397f565b60206040518083038186803b15801561118557600080fd5b505afa158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190613457565b6111c79190613fe3565b905060006111df83836111da8787610e0a565b611a75565b90506000811415611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613ca4565b60405180910390fd5b80600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112b19190613fe3565b9250508190555080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113079190613fe3565b92505081905550611319848483612081565b8373ffffffffffffffffffffffffffffffffffffffff167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051611361929190613a85565b60405180910390a250505050565b606081518351146113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90613de4565b60405180910390fd5b6000835167ffffffffffffffff8111156113d2576113d1614370565b5b6040519080825280602002602001820160405280156114005781602001602082028036833780820191505090505b50905060005b845181101561147d5761144d85828151811061142557611424614341565b5b60200260200101518583815181106114405761143f614341565b5b60200260200101516107cd565b8282815181106114605761145f614341565b5b602002602001018181525050806114769061426b565b9050611406565b508091505092915050565b601060009054906101000a900460ff1681565b6114a36107c5565b73ffffffffffffffffffffffffffffffffffffffff166114c1611699565b73ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613d24565b60405180910390fd5b6115216000612107565b565b61152b6107c5565b73ffffffffffffffffffffffffffffffffffffffff16611549611699565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613d24565b60405180910390fd5b80600e8190555050565b6115b16107c5565b73ffffffffffffffffffffffffffffffffffffffff166115cf611699565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90613d24565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b60006008828154811061166757611666614341565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171e6117176107c5565b83836121cd565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600554905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118606107c5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806118a657506118a5856118a06107c5565b6117c4565b5b6118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc90613c04565b60405180910390fd5b6118f2858585858561233a565b5050505050565b6119016107c5565b73ffffffffffffffffffffffffffffffffffffffff1661191f611699565b73ffffffffffffffffffffffffffffffffffffffff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90613d24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613be4565b60405180910390fd5b6119ee81612107565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8060029080519060200190611a71929190612c79565b5050565b600081600454600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611ac6919061406a565b611ad09190614039565b611ada91906140c4565b90509392505050565b80471015611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90613c64565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611b4c9061396a565b60006040518083038185875af1925050503d8060008114611b89576040519150601f19603f3d011682016040523d82523d6000602084013e611b8e565b606091505b5050905080611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613c44565b60405180910390fd5b505050565b8151835114611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290613e04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290613cc4565b60405180910390fd5b6000611c956107c5565b9050611ca58187878787876125bc565b60005b8451811015611e56576000858281518110611cc657611cc5614341565b5b602002602001015190506000858381518110611ce557611ce4614341565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d90613d04565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3b9190613fe3565b9250508190555050505080611e4f9061426b565b9050611ca8565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ecd929190613ad0565b60405180910390a4611ee38187878787876125c4565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290613e24565b60405180910390fd5b6000611f656107c5565b9050611f8681600087611f77886127ab565b611f80886127ab565b876125bc565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fe59190613fe3565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612063929190613e5f565b60405180910390a461207a81600087878787612825565b5050505050565b6121028363a9059cbb60e01b84846040516024016120a0929190613a85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a0c565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390613da4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161232d9190613b07565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a190613cc4565b60405180910390fd5b60006123b46107c5565b90506123d48187876123c5886127ab565b6123ce886127ab565b876125bc565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290613d04565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125209190613fe3565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161259d929190613e5f565b60405180910390a46125b3828888888888612825565b50505050505050565b505050505050565b6125e38473ffffffffffffffffffffffffffffffffffffffff16612ad3565b156127a3578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016126299594939291906139c3565b602060405180830381600087803b15801561264357600080fd5b505af192505050801561267457506040513d601f19601f820116820180604052508101906126719190613347565b60015b61271a5761268061439f565b806308c379a014156126dd5750612695614a59565b806126a057506126df565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49190613b22565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271190613b44565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279890613ba4565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156127ca576127c9614370565b5b6040519080825280602002602001820160405280156127f85781602001602082028036833780820191505090505b50905082816000815181106128105761280f614341565b5b60200260200101818152505080915050919050565b6128448473ffffffffffffffffffffffffffffffffffffffff16612ad3565b15612a04578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161288a959493929190613a2b565b602060405180830381600087803b1580156128a457600080fd5b505af19250505080156128d557506040513d601f19601f820116820180604052508101906128d29190613347565b60015b61297b576128e161439f565b806308c379a0141561293e57506128f6614a59565b806129015750612940565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129359190613b22565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290613b44565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f990613ba4565b60405180910390fd5b505b505050505050565b6000612a6e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ae69092919063ffffffff16565b9050600081511115612ace5780806020019051810190612a8e91906132ed565b612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac490613dc4565b60405180910390fd5b5b505050565b600080823b905060008111915050919050565b6060612af58484600085612afe565b90509392505050565b606082471015612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90613c84565b60405180910390fd5b612b4c85612ad3565b612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8290613d84565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bb49190613953565b60006040518083038185875af1925050503d8060008114612bf1576040519150601f19603f3d011682016040523d82523d6000602084013e612bf6565b606091505b5091509150612c06828286612c12565b92505050949350505050565b60608315612c2257829050612c72565b600083511115612c355782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c699190613b22565b60405180910390fd5b9392505050565b828054612c8590614208565b90600052602060002090601f016020900481019282612ca75760008555612cee565b82601f10612cc057805160ff1916838001178555612cee565b82800160010185558215612cee579182015b82811115612ced578251825591602001919060010190612cd2565b5b509050612cfb9190612cff565b5090565b5b80821115612d18576000816000905550600101612d00565b5090565b6000612d2f612d2a84613ead565b613e88565b90508083825260208201905082856020860282011115612d5257612d516143c6565b5b60005b85811015612d825781612d688882612e80565b845260208401935060208301925050600181019050612d55565b5050509392505050565b6000612d9f612d9a84613ed9565b613e88565b90508083825260208201905082856020860282011115612dc257612dc16143c6565b5b60005b85811015612df25781612dd88882612fcb565b845260208401935060208301925050600181019050612dc5565b5050509392505050565b6000612e0f612e0a84613f05565b613e88565b905082815260208101848484011115612e2b57612e2a6143cb565b5b612e368482856141c6565b509392505050565b6000612e51612e4c84613f36565b613e88565b905082815260208101848484011115612e6d57612e6c6143cb565b5b612e788482856141c6565b509392505050565b600081359050612e8f81614aef565b92915050565b600081359050612ea481614b06565b92915050565b600082601f830112612ebf57612ebe6143c1565b5b8135612ecf848260208601612d1c565b91505092915050565b600082601f830112612eed57612eec6143c1565b5b8135612efd848260208601612d8c565b91505092915050565b600081359050612f1581614b1d565b92915050565b600081519050612f2a81614b1d565b92915050565b600081359050612f3f81614b34565b92915050565b600081519050612f5481614b34565b92915050565b600082601f830112612f6f57612f6e6143c1565b5b8135612f7f848260208601612dfc565b91505092915050565b600081359050612f9781614b4b565b92915050565b600082601f830112612fb257612fb16143c1565b5b8135612fc2848260208601612e3e565b91505092915050565b600081359050612fda81614b62565b92915050565b600081519050612fef81614b62565b92915050565b60006020828403121561300b5761300a6143d5565b5b600061301984828501612e80565b91505092915050565b600060208284031215613038576130376143d5565b5b600061304684828501612e95565b91505092915050565b60008060408385031215613066576130656143d5565b5b600061307485828601612e80565b925050602061308585828601612e80565b9150509250929050565b600080600080600060a086880312156130ab576130aa6143d5565b5b60006130b988828901612e80565b95505060206130ca88828901612e80565b945050604086013567ffffffffffffffff8111156130eb576130ea6143d0565b5b6130f788828901612ed8565b935050606086013567ffffffffffffffff811115613118576131176143d0565b5b61312488828901612ed8565b925050608086013567ffffffffffffffff811115613145576131446143d0565b5b61315188828901612f5a565b9150509295509295909350565b600080600080600060a0868803121561317a576131796143d5565b5b600061318888828901612e80565b955050602061319988828901612e80565b94505060406131aa88828901612fcb565b93505060606131bb88828901612fcb565b925050608086013567ffffffffffffffff8111156131dc576131db6143d0565b5b6131e888828901612f5a565b9150509295509295909350565b6000806040838503121561320c5761320b6143d5565b5b600061321a85828601612e80565b925050602061322b85828601612f06565b9150509250929050565b6000806040838503121561324c5761324b6143d5565b5b600061325a85828601612e80565b925050602061326b85828601612fcb565b9150509250929050565b6000806040838503121561328c5761328b6143d5565b5b600083013567ffffffffffffffff8111156132aa576132a96143d0565b5b6132b685828601612eaa565b925050602083013567ffffffffffffffff8111156132d7576132d66143d0565b5b6132e385828601612ed8565b9150509250929050565b600060208284031215613303576133026143d5565b5b600061331184828501612f1b565b91505092915050565b6000602082840312156133305761332f6143d5565b5b600061333e84828501612f30565b91505092915050565b60006020828403121561335d5761335c6143d5565b5b600061336b84828501612f45565b91505092915050565b60006020828403121561338a576133896143d5565b5b600061339884828501612f88565b91505092915050565b600080604083850312156133b8576133b76143d5565b5b60006133c685828601612f88565b92505060206133d785828601612e80565b9150509250929050565b6000602082840312156133f7576133f66143d5565b5b600082013567ffffffffffffffff811115613415576134146143d0565b5b61342184828501612f9d565b91505092915050565b6000602082840312156134405761343f6143d5565b5b600061344e84828501612fcb565b91505092915050565b60006020828403121561346d5761346c6143d5565b5b600061347b84828501612fe0565b91505092915050565b60006134908383613935565b60208301905092915050565b6134a581614190565b82525050565b6134b4816140f8565b82525050565b60006134c582613f77565b6134cf8185613fa5565b93506134da83613f67565b8060005b8381101561350b5781516134f28882613484565b97506134fd83613f98565b9250506001810190506134de565b5085935050505092915050565b6135218161411c565b82525050565b600061353282613f82565b61353c8185613fb6565b935061354c8185602086016141d5565b613555816143da565b840191505092915050565b600061356b82613f82565b6135758185613fc7565b93506135858185602086016141d5565b80840191505092915050565b600061359c82613f8d565b6135a68185613fd2565b93506135b68185602086016141d5565b6135bf816143da565b840191505092915050565b60006135d7603483613fd2565b91506135e2826143f8565b604082019050919050565b60006135fa601083613fd2565b915061360582614447565b602082019050919050565b600061361d601383613fd2565b915061362882614470565b602082019050919050565b6000613640602883613fd2565b915061364b82614499565b604082019050919050565b6000613663602b83613fd2565b915061366e826144e8565b604082019050919050565b6000613686602683613fd2565b915061369182614537565b604082019050919050565b60006136a9602983613fd2565b91506136b482614586565b604082019050919050565b60006136cc602683613fd2565b91506136d7826145d5565b604082019050919050565b60006136ef603a83613fd2565b91506136fa82614624565b604082019050919050565b6000613712601d83613fd2565b915061371d82614673565b602082019050919050565b6000613735602683613fd2565b91506137408261469c565b604082019050919050565b6000613758602b83613fd2565b9150613763826146eb565b604082019050919050565b600061377b602583613fd2565b91506137868261473a565b604082019050919050565b600061379e603283613fd2565b91506137a982614789565b604082019050919050565b60006137c1602a83613fd2565b91506137cc826147d8565b604082019050919050565b60006137e4602083613fd2565b91506137ef82614827565b602082019050919050565b6000613807601e83613fd2565b915061381282614850565b602082019050919050565b600061382a600083613fc7565b915061383582614879565b600082019050919050565b600061384d602083613fd2565b91506138588261487c565b602082019050919050565b6000613870601d83613fd2565b915061387b826148a5565b602082019050919050565b6000613893602983613fd2565b915061389e826148ce565b604082019050919050565b60006138b6602a83613fd2565b91506138c18261491d565b604082019050919050565b60006138d9602983613fd2565b91506138e48261496c565b604082019050919050565b60006138fc602883613fd2565b9150613907826149bb565b604082019050919050565b600061391f602183613fd2565b915061392a82614a0a565b604082019050919050565b61393e81614186565b82525050565b61394d81614186565b82525050565b600061395f8284613560565b915081905092915050565b60006139758261381d565b9150819050919050565b600060208201905061399460008301846134ab565b92915050565b60006040820190506139af600083018561349c565b6139bc6020830184613944565b9392505050565b600060a0820190506139d860008301886134ab565b6139e560208301876134ab565b81810360408301526139f781866134ba565b90508181036060830152613a0b81856134ba565b90508181036080830152613a1f8184613527565b90509695505050505050565b600060a082019050613a4060008301886134ab565b613a4d60208301876134ab565b613a5a6040830186613944565b613a676060830185613944565b8181036080830152613a798184613527565b90509695505050505050565b6000604082019050613a9a60008301856134ab565b613aa76020830184613944565b9392505050565b60006020820190508181036000830152613ac881846134ba565b905092915050565b60006040820190508181036000830152613aea81856134ba565b90508181036020830152613afe81846134ba565b90509392505050565b6000602082019050613b1c6000830184613518565b92915050565b60006020820190508181036000830152613b3c8184613591565b905092915050565b60006020820190508181036000830152613b5d816135ca565b9050919050565b60006020820190508181036000830152613b7d816135ed565b9050919050565b60006020820190508181036000830152613b9d81613610565b9050919050565b60006020820190508181036000830152613bbd81613633565b9050919050565b60006020820190508181036000830152613bdd81613656565b9050919050565b60006020820190508181036000830152613bfd81613679565b9050919050565b60006020820190508181036000830152613c1d8161369c565b9050919050565b60006020820190508181036000830152613c3d816136bf565b9050919050565b60006020820190508181036000830152613c5d816136e2565b9050919050565b60006020820190508181036000830152613c7d81613705565b9050919050565b60006020820190508181036000830152613c9d81613728565b9050919050565b60006020820190508181036000830152613cbd8161374b565b9050919050565b60006020820190508181036000830152613cdd8161376e565b9050919050565b60006020820190508181036000830152613cfd81613791565b9050919050565b60006020820190508181036000830152613d1d816137b4565b9050919050565b60006020820190508181036000830152613d3d816137d7565b9050919050565b60006020820190508181036000830152613d5d816137fa565b9050919050565b60006020820190508181036000830152613d7d81613840565b9050919050565b60006020820190508181036000830152613d9d81613863565b9050919050565b60006020820190508181036000830152613dbd81613886565b9050919050565b60006020820190508181036000830152613ddd816138a9565b9050919050565b60006020820190508181036000830152613dfd816138cc565b9050919050565b60006020820190508181036000830152613e1d816138ef565b9050919050565b60006020820190508181036000830152613e3d81613912565b9050919050565b6000602082019050613e596000830184613944565b92915050565b6000604082019050613e746000830185613944565b613e816020830184613944565b9392505050565b6000613e92613ea3565b9050613e9e828261423a565b919050565b6000604051905090565b600067ffffffffffffffff821115613ec857613ec7614370565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613ef457613ef3614370565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613f2057613f1f614370565b5b613f29826143da565b9050602081019050919050565b600067ffffffffffffffff821115613f5157613f50614370565b5b613f5a826143da565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613fee82614186565b9150613ff983614186565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561402e5761402d6142b4565b5b828201905092915050565b600061404482614186565b915061404f83614186565b92508261405f5761405e6142e3565b5b828204905092915050565b600061407582614186565b915061408083614186565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140b9576140b86142b4565b5b828202905092915050565b60006140cf82614186565b91506140da83614186565b9250828210156140ed576140ec6142b4565b5b828203905092915050565b600061410382614166565b9050919050565b600061411582614166565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061415f826140f8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061419b826141a2565b9050919050565b60006141ad826141b4565b9050919050565b60006141bf82614166565b9050919050565b82818337600083830152505050565b60005b838110156141f35780820151818401526020810190506141d8565b83811115614202576000848401525b50505050565b6000600282049050600182168061422057607f821691505b6020821081141561423457614233614312565b5b50919050565b614243826143da565b810181811067ffffffffffffffff8211171561426257614261614370565b5b80604052505050565b600061427682614186565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142a9576142a86142b4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156143be5760046000803e6143bb6000516143eb565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f53616c6573206172652070617573656400000000000000000000000000000000600082015250565b7f4d617820616d6f756e7420657863656564656400000000000000000000000000600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060008201527f7368617265730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060008201527f647565207061796d656e74000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f7420656e6f756768206d696e7461626c652065646974696f6e7320210000600082015250565b50565b7f496e73756666696369656e74207472616e73616374696f6e20616d6f756e742e600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614a6957614aec565b614a71613ea3565b60043d036004823e80513d602482011167ffffffffffffffff82111715614a99575050614aec565b808201805167ffffffffffffffff811115614ab75750505050614aec565b80602083010160043d038501811115614ad4575050505050614aec565b614ae38260200185018661423a565b82955050505050505b90565b614af8816140f8565b8114614b0357600080fd5b50565b614b0f8161410a565b8114614b1a57600080fd5b50565b614b268161411c565b8114614b3157600080fd5b50565b614b3d81614128565b8114614b4857600080fd5b50565b614b5481614154565b8114614b5f57600080fd5b50565b614b6b81614186565b8114614b7657600080fd5b5056fea2646970667358221220ef60560eb70c3cc245deac4216e23a2a8a7ef0d182dab35583a8592dd2f0f79764736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000cf7bd3ad476fc13e0d3770401b9643165ac229380000000000000000000000001cef28e7904abcc3ab7b10670a6a4ec31af51e3c000000000000000000000000130a6f718c35431e8120d690d123822e9b390b5c0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode
0x6080604052600436106101db5760003560e01c80634e1273f411610102578063a22cb46511610095578063e33b7de311610064578063e33b7de31461070b578063e985e9c514610736578063f242432a14610773578063f2fde38b1461079c57610222565b8063a22cb4651461063d578063ce7c2ac214610666578063d5abeb01146106a3578063d79779b2146106ce57610222565b80638456cb59116100d15780638456cb59146105815780638b83209b146105985780638da5cb5b146105d55780639852595c1461060057610222565b80634e1273f4146104d95780635c975abb14610516578063715018a6146105415780637f00c7a61461055857610222565b8063228025e81161017a578063406072a911610149578063406072a91461042e57806340c10f191461046b57806344a0d68a1461048757806348b75044146104b057610222565b8063228025e814610386578063239c70ae146103af5780632eb2c2d6146103da5780633a98ef391461040357610222565b806306fdde03116101b657806306fdde03146102ca5780630e89341c146102f557806313faede614610332578063191655871461035d57610222565b8062fdd58e1461022757806301ffc9a71461026457806302fe5305146102a157610222565b36610222577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be7706102096107c5565b34604051610218929190613a85565b60405180910390a1005b600080fd5b34801561023357600080fd5b5061024e60048036038101906102499190613235565b6107cd565b60405161025b9190613e44565b60405180910390f35b34801561027057600080fd5b5061028b6004803603810190610286919061331a565b610896565b6040516102989190613b07565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c391906133e1565b610978565b005b3480156102d657600080fd5b506102df610a00565b6040516102ec9190613b22565b60405180910390f35b34801561030157600080fd5b5061031c6004803603810190610317919061342a565b610a8e565b6040516103299190613b22565b60405180910390f35b34801561033e57600080fd5b50610347610b22565b6040516103549190613e44565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190613022565b610b28565b005b34801561039257600080fd5b506103ad60048036038101906103a8919061342a565b610cd3565b005b3480156103bb57600080fd5b506103c4610d59565b6040516103d19190613e44565b60405180910390f35b3480156103e657600080fd5b5061040160048036038101906103fc919061308f565b610d5f565b005b34801561040f57600080fd5b50610418610e00565b6040516104259190613e44565b60405180910390f35b34801561043a57600080fd5b50610455600480360381019061045091906133a1565b610e0a565b6040516104629190613e44565b60405180910390f35b61048560048036038101906104809190613235565b610e91565b005b34801561049357600080fd5b506104ae60048036038101906104a9919061342a565b611021565b005b3480156104bc57600080fd5b506104d760048036038101906104d291906133a1565b6110a7565b005b3480156104e557600080fd5b5061050060048036038101906104fb9190613275565b61136f565b60405161050d9190613aae565b60405180910390f35b34801561052257600080fd5b5061052b611488565b6040516105389190613b07565b60405180910390f35b34801561054d57600080fd5b5061055661149b565b005b34801561056457600080fd5b5061057f600480360381019061057a919061342a565b611523565b005b34801561058d57600080fd5b506105966115a9565b005b3480156105a457600080fd5b506105bf60048036038101906105ba919061342a565b611651565b6040516105cc919061397f565b60405180910390f35b3480156105e157600080fd5b506105ea611699565b6040516105f7919061397f565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190612ff5565b6116c3565b6040516106349190613e44565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f91906131f5565b61170c565b005b34801561067257600080fd5b5061068d60048036038101906106889190612ff5565b611722565b60405161069a9190613e44565b60405180910390f35b3480156106af57600080fd5b506106b861176b565b6040516106c59190613e44565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613374565b611771565b6040516107029190613e44565b60405180910390f35b34801561071757600080fd5b506107206117ba565b60405161072d9190613e44565b60405180910390f35b34801561074257600080fd5b5061075d6004803603810190610758919061304f565b6117c4565b60405161076a9190613b07565b60405180910390f35b34801561077f57600080fd5b5061079a6004803603810190610795919061315e565b611858565b005b3480156107a857600080fd5b506107c360048036038101906107be9190612ff5565b6118f9565b005b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083590613bc4565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061096157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109715750610970826119f1565b5b9050919050565b6109806107c5565b73ffffffffffffffffffffffffffffffffffffffff1661099e611699565b73ffffffffffffffffffffffffffffffffffffffff16146109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb90613d24565b60405180910390fd5b6109fd81611a5b565b50565b600f8054610a0d90614208565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3990614208565b8015610a865780601f10610a5b57610100808354040283529160200191610a86565b820191906000526020600020905b815481529060010190602001808311610a6957829003601f168201915b505050505081565b606060028054610a9d90614208565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac990614208565b8015610b165780601f10610aeb57610100808354040283529160200191610b16565b820191906000526020600020905b815481529060010190602001808311610af957829003601f168201915b50505050509050919050565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba190613c24565b60405180910390fd5b6000610bb46117ba565b47610bbf9190613fe3565b90506000610bd68383610bd1866116c3565b611a75565b90506000811415610c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1390613ca4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6b9190613fe3565b925050819055508060056000828254610c849190613fe3565b92505081905550610c958382611ae3565b7fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b0568382604051610cc692919061399a565b60405180910390a1505050565b610cdb6107c5565b73ffffffffffffffffffffffffffffffffffffffff16610cf9611699565b73ffffffffffffffffffffffffffffffffffffffff1614610d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4690613d24565b60405180910390fd5b80600d8190555050565b600e5481565b610d676107c5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610dad5750610dac85610da76107c5565b6117c4565b5b610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de390613ce4565b60405180910390fd5b610df98585858585611bd7565b5050505050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601060009054906101000a900460ff1615610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613b64565b60405180910390fd5b600e54811115610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90613b84565b60405180910390fd5b600d5481600b54610f379190613fe3565b1115610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613d44565b60405180910390fd5b80600c54610f86919061406a565b341015610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf90613d64565b60405180910390fd5b60005b8181101561101c57600b6000815480929190610fe69061426b565b919050555061100983600b54600160405180602001604052806000815250611eeb565b80806110149061426b565b915050610fcb565b505050565b6110296107c5565b73ffffffffffffffffffffffffffffffffffffffff16611047611699565b73ffffffffffffffffffffffffffffffffffffffff161461109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490613d24565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090613c24565b60405180910390fd5b600061113483611771565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161116d919061397f565b60206040518083038186803b15801561118557600080fd5b505afa158015611199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190613457565b6111c79190613fe3565b905060006111df83836111da8787610e0a565b611a75565b90506000811415611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613ca4565b60405180910390fd5b80600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112b19190613fe3565b9250508190555080600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113079190613fe3565b92505081905550611319848483612081565b8373ffffffffffffffffffffffffffffffffffffffff167f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a8483604051611361929190613a85565b60405180910390a250505050565b606081518351146113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90613de4565b60405180910390fd5b6000835167ffffffffffffffff8111156113d2576113d1614370565b5b6040519080825280602002602001820160405280156114005781602001602082028036833780820191505090505b50905060005b845181101561147d5761144d85828151811061142557611424614341565b5b60200260200101518583815181106114405761143f614341565b5b60200260200101516107cd565b8282815181106114605761145f614341565b5b602002602001018181525050806114769061426b565b9050611406565b508091505092915050565b601060009054906101000a900460ff1681565b6114a36107c5565b73ffffffffffffffffffffffffffffffffffffffff166114c1611699565b73ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613d24565b60405180910390fd5b6115216000612107565b565b61152b6107c5565b73ffffffffffffffffffffffffffffffffffffffff16611549611699565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690613d24565b60405180910390fd5b80600e8190555050565b6115b16107c5565b73ffffffffffffffffffffffffffffffffffffffff166115cf611699565b73ffffffffffffffffffffffffffffffffffffffff1614611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90613d24565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b60006008828154811061166757611666614341565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171e6117176107c5565b83836121cd565b5050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600d5481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600554905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6118606107c5565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806118a657506118a5856118a06107c5565b6117c4565b5b6118e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dc90613c04565b60405180910390fd5b6118f2858585858561233a565b5050505050565b6119016107c5565b73ffffffffffffffffffffffffffffffffffffffff1661191f611699565b73ffffffffffffffffffffffffffffffffffffffff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90613d24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90613be4565b60405180910390fd5b6119ee81612107565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8060029080519060200190611a71929190612c79565b5050565b600081600454600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611ac6919061406a565b611ad09190614039565b611ada91906140c4565b90509392505050565b80471015611b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1d90613c64565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611b4c9061396a565b60006040518083038185875af1925050503d8060008114611b89576040519150601f19603f3d011682016040523d82523d6000602084013e611b8e565b606091505b5050905080611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613c44565b60405180910390fd5b505050565b8151835114611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290613e04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290613cc4565b60405180910390fd5b6000611c956107c5565b9050611ca58187878787876125bc565b60005b8451811015611e56576000858281518110611cc657611cc5614341565b5b602002602001015190506000858381518110611ce557611ce4614341565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d90613d04565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e3b9190613fe3565b9250508190555050505080611e4f9061426b565b9050611ca8565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ecd929190613ad0565b60405180910390a4611ee38187878787876125c4565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290613e24565b60405180910390fd5b6000611f656107c5565b9050611f8681600087611f77886127ab565b611f80886127ab565b876125bc565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fe59190613fe3565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051612063929190613e5f565b60405180910390a461207a81600087878787612825565b5050505050565b6121028363a9059cbb60e01b84846040516024016120a0929190613a85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a0c565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561223c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223390613da4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161232d9190613b07565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a190613cc4565b60405180910390fd5b60006123b46107c5565b90506123d48187876123c5886127ab565b6123ce886127ab565b876125bc565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508381101561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290613d04565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125209190613fe3565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62888860405161259d929190613e5f565b60405180910390a46125b3828888888888612825565b50505050505050565b505050505050565b6125e38473ffffffffffffffffffffffffffffffffffffffff16612ad3565b156127a3578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016126299594939291906139c3565b602060405180830381600087803b15801561264357600080fd5b505af192505050801561267457506040513d601f19601f820116820180604052508101906126719190613347565b60015b61271a5761268061439f565b806308c379a014156126dd5750612695614a59565b806126a057506126df565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49190613b22565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271190613b44565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279890613ba4565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156127ca576127c9614370565b5b6040519080825280602002602001820160405280156127f85781602001602082028036833780820191505090505b50905082816000815181106128105761280f614341565b5b60200260200101818152505080915050919050565b6128448473ffffffffffffffffffffffffffffffffffffffff16612ad3565b15612a04578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161288a959493929190613a2b565b602060405180830381600087803b1580156128a457600080fd5b505af19250505080156128d557506040513d601f19601f820116820180604052508101906128d29190613347565b60015b61297b576128e161439f565b806308c379a0141561293e57506128f6614a59565b806129015750612940565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129359190613b22565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297290613b44565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f990613ba4565b60405180910390fd5b505b505050505050565b6000612a6e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ae69092919063ffffffff16565b9050600081511115612ace5780806020019051810190612a8e91906132ed565b612acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac490613dc4565b60405180910390fd5b5b505050565b600080823b905060008111915050919050565b6060612af58484600085612afe565b90509392505050565b606082471015612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90613c84565b60405180910390fd5b612b4c85612ad3565b612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8290613d84565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612bb49190613953565b60006040518083038185875af1925050503d8060008114612bf1576040519150601f19603f3d011682016040523d82523d6000602084013e612bf6565b606091505b5091509150612c06828286612c12565b92505050949350505050565b60608315612c2257829050612c72565b600083511115612c355782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c699190613b22565b60405180910390fd5b9392505050565b828054612c8590614208565b90600052602060002090601f016020900481019282612ca75760008555612cee565b82601f10612cc057805160ff1916838001178555612cee565b82800160010185558215612cee579182015b82811115612ced578251825591602001919060010190612cd2565b5b509050612cfb9190612cff565b5090565b5b80821115612d18576000816000905550600101612d00565b5090565b6000612d2f612d2a84613ead565b613e88565b90508083825260208201905082856020860282011115612d5257612d516143c6565b5b60005b85811015612d825781612d688882612e80565b845260208401935060208301925050600181019050612d55565b5050509392505050565b6000612d9f612d9a84613ed9565b613e88565b90508083825260208201905082856020860282011115612dc257612dc16143c6565b5b60005b85811015612df25781612dd88882612fcb565b845260208401935060208301925050600181019050612dc5565b5050509392505050565b6000612e0f612e0a84613f05565b613e88565b905082815260208101848484011115612e2b57612e2a6143cb565b5b612e368482856141c6565b509392505050565b6000612e51612e4c84613f36565b613e88565b905082815260208101848484011115612e6d57612e6c6143cb565b5b612e788482856141c6565b509392505050565b600081359050612e8f81614aef565b92915050565b600081359050612ea481614b06565b92915050565b600082601f830112612ebf57612ebe6143c1565b5b8135612ecf848260208601612d1c565b91505092915050565b600082601f830112612eed57612eec6143c1565b5b8135612efd848260208601612d8c565b91505092915050565b600081359050612f1581614b1d565b92915050565b600081519050612f2a81614b1d565b92915050565b600081359050612f3f81614b34565b92915050565b600081519050612f5481614b34565b92915050565b600082601f830112612f6f57612f6e6143c1565b5b8135612f7f848260208601612dfc565b91505092915050565b600081359050612f9781614b4b565b92915050565b600082601f830112612fb257612fb16143c1565b5b8135612fc2848260208601612e3e565b91505092915050565b600081359050612fda81614b62565b92915050565b600081519050612fef81614b62565b92915050565b60006020828403121561300b5761300a6143d5565b5b600061301984828501612e80565b91505092915050565b600060208284031215613038576130376143d5565b5b600061304684828501612e95565b91505092915050565b60008060408385031215613066576130656143d5565b5b600061307485828601612e80565b925050602061308585828601612e80565b9150509250929050565b600080600080600060a086880312156130ab576130aa6143d5565b5b60006130b988828901612e80565b95505060206130ca88828901612e80565b945050604086013567ffffffffffffffff8111156130eb576130ea6143d0565b5b6130f788828901612ed8565b935050606086013567ffffffffffffffff811115613118576131176143d0565b5b61312488828901612ed8565b925050608086013567ffffffffffffffff811115613145576131446143d0565b5b61315188828901612f5a565b9150509295509295909350565b600080600080600060a0868803121561317a576131796143d5565b5b600061318888828901612e80565b955050602061319988828901612e80565b94505060406131aa88828901612fcb565b93505060606131bb88828901612fcb565b925050608086013567ffffffffffffffff8111156131dc576131db6143d0565b5b6131e888828901612f5a565b9150509295509295909350565b6000806040838503121561320c5761320b6143d5565b5b600061321a85828601612e80565b925050602061322b85828601612f06565b9150509250929050565b6000806040838503121561324c5761324b6143d5565b5b600061325a85828601612e80565b925050602061326b85828601612fcb565b9150509250929050565b6000806040838503121561328c5761328b6143d5565b5b600083013567ffffffffffffffff8111156132aa576132a96143d0565b5b6132b685828601612eaa565b925050602083013567ffffffffffffffff8111156132d7576132d66143d0565b5b6132e385828601612ed8565b9150509250929050565b600060208284031215613303576133026143d5565b5b600061331184828501612f1b565b91505092915050565b6000602082840312156133305761332f6143d5565b5b600061333e84828501612f30565b91505092915050565b60006020828403121561335d5761335c6143d5565b5b600061336b84828501612f45565b91505092915050565b60006020828403121561338a576133896143d5565b5b600061339884828501612f88565b91505092915050565b600080604083850312156133b8576133b76143d5565b5b60006133c685828601612f88565b92505060206133d785828601612e80565b9150509250929050565b6000602082840312156133f7576133f66143d5565b5b600082013567ffffffffffffffff811115613415576134146143d0565b5b61342184828501612f9d565b91505092915050565b6000602082840312156134405761343f6143d5565b5b600061344e84828501612fcb565b91505092915050565b60006020828403121561346d5761346c6143d5565b5b600061347b84828501612fe0565b91505092915050565b60006134908383613935565b60208301905092915050565b6134a581614190565b82525050565b6134b4816140f8565b82525050565b60006134c582613f77565b6134cf8185613fa5565b93506134da83613f67565b8060005b8381101561350b5781516134f28882613484565b97506134fd83613f98565b9250506001810190506134de565b5085935050505092915050565b6135218161411c565b82525050565b600061353282613f82565b61353c8185613fb6565b935061354c8185602086016141d5565b613555816143da565b840191505092915050565b600061356b82613f82565b6135758185613fc7565b93506135858185602086016141d5565b80840191505092915050565b600061359c82613f8d565b6135a68185613fd2565b93506135b68185602086016141d5565b6135bf816143da565b840191505092915050565b60006135d7603483613fd2565b91506135e2826143f8565b604082019050919050565b60006135fa601083613fd2565b915061360582614447565b602082019050919050565b600061361d601383613fd2565b915061362882614470565b602082019050919050565b6000613640602883613fd2565b915061364b82614499565b604082019050919050565b6000613663602b83613fd2565b915061366e826144e8565b604082019050919050565b6000613686602683613fd2565b915061369182614537565b604082019050919050565b60006136a9602983613fd2565b91506136b482614586565b604082019050919050565b60006136cc602683613fd2565b91506136d7826145d5565b604082019050919050565b60006136ef603a83613fd2565b91506136fa82614624565b604082019050919050565b6000613712601d83613fd2565b915061371d82614673565b602082019050919050565b6000613735602683613fd2565b91506137408261469c565b604082019050919050565b6000613758602b83613fd2565b9150613763826146eb565b604082019050919050565b600061377b602583613fd2565b91506137868261473a565b604082019050919050565b600061379e603283613fd2565b91506137a982614789565b604082019050919050565b60006137c1602a83613fd2565b91506137cc826147d8565b604082019050919050565b60006137e4602083613fd2565b91506137ef82614827565b602082019050919050565b6000613807601e83613fd2565b915061381282614850565b602082019050919050565b600061382a600083613fc7565b915061383582614879565b600082019050919050565b600061384d602083613fd2565b91506138588261487c565b602082019050919050565b6000613870601d83613fd2565b915061387b826148a5565b602082019050919050565b6000613893602983613fd2565b915061389e826148ce565b604082019050919050565b60006138b6602a83613fd2565b91506138c18261491d565b604082019050919050565b60006138d9602983613fd2565b91506138e48261496c565b604082019050919050565b60006138fc602883613fd2565b9150613907826149bb565b604082019050919050565b600061391f602183613fd2565b915061392a82614a0a565b604082019050919050565b61393e81614186565b82525050565b61394d81614186565b82525050565b600061395f8284613560565b915081905092915050565b60006139758261381d565b9150819050919050565b600060208201905061399460008301846134ab565b92915050565b60006040820190506139af600083018561349c565b6139bc6020830184613944565b9392505050565b600060a0820190506139d860008301886134ab565b6139e560208301876134ab565b81810360408301526139f781866134ba565b90508181036060830152613a0b81856134ba565b90508181036080830152613a1f8184613527565b90509695505050505050565b600060a082019050613a4060008301886134ab565b613a4d60208301876134ab565b613a5a6040830186613944565b613a676060830185613944565b8181036080830152613a798184613527565b90509695505050505050565b6000604082019050613a9a60008301856134ab565b613aa76020830184613944565b9392505050565b60006020820190508181036000830152613ac881846134ba565b905092915050565b60006040820190508181036000830152613aea81856134ba565b90508181036020830152613afe81846134ba565b90509392505050565b6000602082019050613b1c6000830184613518565b92915050565b60006020820190508181036000830152613b3c8184613591565b905092915050565b60006020820190508181036000830152613b5d816135ca565b9050919050565b60006020820190508181036000830152613b7d816135ed565b9050919050565b60006020820190508181036000830152613b9d81613610565b9050919050565b60006020820190508181036000830152613bbd81613633565b9050919050565b60006020820190508181036000830152613bdd81613656565b9050919050565b60006020820190508181036000830152613bfd81613679565b9050919050565b60006020820190508181036000830152613c1d8161369c565b9050919050565b60006020820190508181036000830152613c3d816136bf565b9050919050565b60006020820190508181036000830152613c5d816136e2565b9050919050565b60006020820190508181036000830152613c7d81613705565b9050919050565b60006020820190508181036000830152613c9d81613728565b9050919050565b60006020820190508181036000830152613cbd8161374b565b9050919050565b60006020820190508181036000830152613cdd8161376e565b9050919050565b60006020820190508181036000830152613cfd81613791565b9050919050565b60006020820190508181036000830152613d1d816137b4565b9050919050565b60006020820190508181036000830152613d3d816137d7565b9050919050565b60006020820190508181036000830152613d5d816137fa565b9050919050565b60006020820190508181036000830152613d7d81613840565b9050919050565b60006020820190508181036000830152613d9d81613863565b9050919050565b60006020820190508181036000830152613dbd81613886565b9050919050565b60006020820190508181036000830152613ddd816138a9565b9050919050565b60006020820190508181036000830152613dfd816138cc565b9050919050565b60006020820190508181036000830152613e1d816138ef565b9050919050565b60006020820190508181036000830152613e3d81613912565b9050919050565b6000602082019050613e596000830184613944565b92915050565b6000604082019050613e746000830185613944565b613e816020830184613944565b9392505050565b6000613e92613ea3565b9050613e9e828261423a565b919050565b6000604051905090565b600067ffffffffffffffff821115613ec857613ec7614370565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613ef457613ef3614370565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613f2057613f1f614370565b5b613f29826143da565b9050602081019050919050565b600067ffffffffffffffff821115613f5157613f50614370565b5b613f5a826143da565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613fee82614186565b9150613ff983614186565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561402e5761402d6142b4565b5b828201905092915050565b600061404482614186565b915061404f83614186565b92508261405f5761405e6142e3565b5b828204905092915050565b600061407582614186565b915061408083614186565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140b9576140b86142b4565b5b828202905092915050565b60006140cf82614186565b91506140da83614186565b9250828210156140ed576140ec6142b4565b5b828203905092915050565b600061410382614166565b9050919050565b600061411582614166565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061415f826140f8565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061419b826141a2565b9050919050565b60006141ad826141b4565b9050919050565b60006141bf82614166565b9050919050565b82818337600083830152505050565b60005b838110156141f35780820151818401526020810190506141d8565b83811115614202576000848401525b50505050565b6000600282049050600182168061422057607f821691505b6020821081141561423457614233614312565b5b50919050565b614243826143da565b810181811067ffffffffffffffff8211171561426257614261614370565b5b80604052505050565b600061427682614186565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142a9576142a86142b4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156143be5760046000803e6143bb6000516143eb565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f53616c6573206172652070617573656400000000000000000000000000000000600082015250565b7f4d617820616d6f756e7420657863656564656400000000000000000000000000600082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060008201527f7368617265730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060008201527f647565207061796d656e74000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f7420656e6f756768206d696e7461626c652065646974696f6e7320210000600082015250565b50565b7f496e73756666696369656e74207472616e73616374696f6e20616d6f756e742e600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614a6957614aec565b614a71613ea3565b60043d036004823e80513d602482011167ffffffffffffffff82111715614a99575050614aec565b808201805167ffffffffffffffff811115614ab75750505050614aec565b80602083010160043d038501811115614ad4575050505050614aec565b614ae38260200185018661423a565b82955050505050505b90565b614af8816140f8565b8114614b0357600080fd5b50565b614b0f8161410a565b8114614b1a57600080fd5b50565b614b268161411c565b8114614b3157600080fd5b50565b614b3d81614128565b8114614b4857600080fd5b50565b614b5481614154565b8114614b5f57600080fd5b50565b614b6b81614186565b8114614b7657600080fd5b5056fea2646970667358221220ef60560eb70c3cc245deac4216e23a2a8a7ef0d182dab35583a8592dd2f0f79764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000cf7bd3ad476fc13e0d3770401b9643165ac229380000000000000000000000001cef28e7904abcc3ab7b10670a6a4ec31af51e3c000000000000000000000000130a6f718c35431e8120d690d123822e9b390b5c0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000002d000000000000000000000000000000000000000000000000000000000000000a
-----Decoded View---------------
Arg [0] : _baseURI (string):
Arg [1] : payees (address[]): 0xCf7BD3aD476Fc13e0d3770401B9643165aC22938,0x1Cef28E7904ABCC3AB7b10670A6A4eC31aF51E3C,0x130a6F718c35431E8120D690D123822e9b390b5C
Arg [2] : shares_ (uint256[]): 45,45,10
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [5] : 000000000000000000000000cf7bd3ad476fc13e0d3770401b9643165ac22938
Arg [6] : 0000000000000000000000001cef28e7904abcc3ab7b10670a6a4ec31af51e3c
Arg [7] : 000000000000000000000000130a6f718c35431e8120d690d123822e9b390b5c
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [9] : 000000000000000000000000000000000000000000000000000000000000002d
Arg [10] : 000000000000000000000000000000000000000000000000000000000000002d
Arg [11] : 000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode Sourcemap
51148:2405:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28527:40;28543:12;:10;:12::i;:::-;28557:9;28527:40;;;;;;;:::i;:::-;;;;;;;;51148:2405;;;;;34940:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33963:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53327:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51393:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34684:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51282:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30313:566;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53139:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51357:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36879:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28658:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29787:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51956:589;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;52652:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31147:641;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35337:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51437:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50156:103;;;;;;;;;;;;;:::i;:::-;;52884:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53481:69;;;;;;;;;;;;;:::i;:::-;;30013:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49505:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29509:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35934:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29305:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;51320:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29095:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28843:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36161:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36401:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50414:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25069:98;25122:7;25149:10;25142:17;;25069:98;:::o;34940:231::-;35026:7;35073:1;35054:21;;:7;:21;;;;35046:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;35141:9;:13;35151:2;35141:13;;;;;;;;;;;:22;35155:7;35141:22;;;;;;;;;;;;;;;;35134:29;;34940:231;;;;:::o;33963:310::-;34065:4;34117:26;34102:41;;;:11;:41;;;;:110;;;;34175:37;34160:52;;;:11;:52;;;;34102:110;:163;;;;34229:36;34253:11;34229:23;:36::i;:::-;34102:163;34082:183;;33963:310;;;:::o;53327:91::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53394:16:::1;53402:7;53394;:16::i;:::-;53327:91:::0;:::o;51393:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;34684:105::-;34744:13;34777:4;34770:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34684:105;;;:::o;51282:31::-;;;;:::o;30313:566::-;30408:1;30389:7;:16;30397:7;30389:16;;;;;;;;;;;;;;;;:20;30381:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;30465:21;30513:15;:13;:15::i;:::-;30489:21;:39;;;;:::i;:::-;30465:63;;30539:15;30557:58;30573:7;30582:13;30597:17;30606:7;30597:8;:17::i;:::-;30557:15;:58::i;:::-;30539:76;;30647:1;30636:7;:12;;30628:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30731:7;30709:9;:18;30719:7;30709:18;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;30767:7;30749:14;;:25;;;;;;;:::i;:::-;;;;;;;;30787:35;30805:7;30814;30787:17;:35::i;:::-;30838:33;30854:7;30863;30838:33;;;;;;;:::i;:::-;;;;;;;;30370:509;;30313:566;:::o;53139:106::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53224:13:::1;53212:9;:25;;;;53139:106:::0;:::o;51357:32::-;;;;:::o;36879:442::-;37120:12;:10;:12::i;:::-;37112:20;;:4;:20;;;:60;;;;37136:36;37153:4;37159:12;:10;:12::i;:::-;37136:16;:36::i;:::-;37112:60;37090:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;37261:52;37284:4;37290:2;37294:3;37299:7;37308:4;37261:22;:52::i;:::-;36879:442;;;;;:::o;28658:91::-;28702:7;28729:12;;28722:19;;28658:91;:::o;29787:135::-;29857:7;29884:14;:21;29899:5;29884:21;;;;;;;;;;;;;;;:30;29906:7;29884:30;;;;;;;;;;;;;;;;29877:37;;29787:135;;;;:::o;51956:589::-;52039:6;;;;;;;;;;;52038:7;52030:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;52100:13;;52085:11;:28;;52077:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;52195:9;;52180:11;52170:7;;:21;;;;:::i;:::-;:34;;52148:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;52325:11;52318:4;;:18;;;;:::i;:::-;52305:9;:31;;52283:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;52424:9;52419:119;52443:11;52439:1;:15;52419:119;;;52476:7;;:9;;;;;;;;;:::i;:::-;;;;;;52500:26;52506:3;52511:7;;52520:1;52500:26;;;;;;;;;;;;:5;:26::i;:::-;52456:3;;;;;:::i;:::-;;;;52419:119;;;;51956:589;;:::o;52652:86::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52722:8:::1;52715:4;:15;;;;52652:86:::0;:::o;31147:641::-;31248:1;31229:7;:16;31237:7;31229:16;;;;;;;;;;;;;;;;:20;31221:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31305:21;31362:20;31376:5;31362:13;:20::i;:::-;31329:5;:15;;;31353:4;31329:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;;:::i;:::-;31305:77;;31393:15;31411:65;31427:7;31436:13;31451:24;31460:5;31467:7;31451:8;:24::i;:::-;31411:15;:65::i;:::-;31393:83;;31508:1;31497:7;:12;;31489:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31604:7;31570:14;:21;31585:5;31570:21;;;;;;;;;;;;;;;:30;31592:7;31570:30;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;31652:7;31622:19;:26;31642:5;31622:26;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;31672:47;31695:5;31702:7;31711;31672:22;:47::i;:::-;31756:5;31735:45;;;31763:7;31772;31735:45;;;;;;;:::i;:::-;;;;;;;;31210:578;;31147:641;;:::o;35337:524::-;35493:16;35554:3;:10;35535:8;:15;:29;35527:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;35623:30;35670:8;:15;35656:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35623:63;;35704:9;35699:122;35723:8;:15;35719:1;:19;35699:122;;;35779:30;35789:8;35798:1;35789:11;;;;;;;;:::i;:::-;;;;;;;;35802:3;35806:1;35802:6;;;;;;;;:::i;:::-;;;;;;;;35779:9;:30::i;:::-;35760:13;35774:1;35760:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;35740:3;;;;:::i;:::-;;;35699:122;;;;35840:13;35833:20;;;35337:524;;;;:::o;51437:18::-;;;;;;;;;;;;;:::o;50156:103::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50221:30:::1;50248:1;50221:18;:30::i;:::-;50156:103::o:0;52884:122::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;52981:17:::1;52965:13;:33;;;;52884:122:::0;:::o;53481:69::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53536:6:::1;;;;;;;;;;;53535:7;53526:6;;:16;;;;;;;;;;;;;;;;;;53481:69::o:0;30013:100::-;30064:7;30091;30099:5;30091:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30084:21;;30013:100;;;:::o;49505:87::-;49551:7;49578:6;;;;;;;;;;;49571:13;;49505:87;:::o;29509:109::-;29565:7;29592:9;:18;29602:7;29592:18;;;;;;;;;;;;;;;;29585:25;;29509:109;;;:::o;35934:155::-;36029:52;36048:12;:10;:12::i;:::-;36062:8;36072;36029:18;:52::i;:::-;35934:155;;:::o;29305:105::-;29359:7;29386;:16;29394:7;29386:16;;;;;;;;;;;;;;;;29379:23;;29305:105;;;:::o;51320:30::-;;;;:::o;29095:119::-;29153:7;29180:19;:26;29200:5;29180:26;;;;;;;;;;;;;;;;29173:33;;29095:119;;;:::o;28843:95::-;28889:7;28916:14;;28909:21;;28843:95;:::o;36161:168::-;36260:4;36284:18;:27;36303:7;36284:27;;;;;;;;;;;;;;;:37;36312:8;36284:37;;;;;;;;;;;;;;;;;;;;;;;;;36277:44;;36161:168;;;;:::o;36401:401::-;36617:12;:10;:12::i;:::-;36609:20;;:4;:20;;;:60;;;;36633:36;36650:4;36656:12;:10;:12::i;:::-;36633:16;:36::i;:::-;36609:60;36587:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;36749:45;36767:4;36773:2;36777;36781:6;36789:4;36749:17;:45::i;:::-;36401:401;;;;;:::o;50414:201::-;49736:12;:10;:12::i;:::-;49725:23;;:7;:5;:7::i;:::-;:23;;;49717:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50523:1:::1;50503:22;;:8;:22;;;;50495:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;50579:28;50598:8;50579:18;:28::i;:::-;50414:201:::0;:::o;16822:157::-;16907:4;16946:25;16931:40;;;:11;:40;;;;16924:47;;16822:157;;;:::o;40881:88::-;40955:6;40948:4;:13;;;;;;;;;;;;:::i;:::-;;40881:88;:::o;31966:248::-;32112:7;32191:15;32176:12;;32156:7;:16;32164:7;32156:16;;;;;;;;;;;;;;;;32140:13;:32;;;;:::i;:::-;32139:49;;;;:::i;:::-;:67;;;;:::i;:::-;32132:74;;31966:248;;;;;:::o;5038:317::-;5153:6;5128:21;:31;;5120:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5207:12;5225:9;:14;;5247:6;5225:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5206:52;;;5277:7;5269:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;5109:246;5038:317;;:::o;38963:1074::-;39190:7;:14;39176:3;:10;:28;39168:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;39282:1;39268:16;;:2;:16;;;;39260:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;39339:16;39358:12;:10;:12::i;:::-;39339:31;;39383:60;39404:8;39414:4;39420:2;39424:3;39429:7;39438:4;39383:20;:60::i;:::-;39461:9;39456:421;39480:3;:10;39476:1;:14;39456:421;;;39512:10;39525:3;39529:1;39525:6;;;;;;;;:::i;:::-;;;;;;;;39512:19;;39546:14;39563:7;39571:1;39563:10;;;;;;;;:::i;:::-;;;;;;;;39546:27;;39590:19;39612:9;:13;39622:2;39612:13;;;;;;;;;;;:19;39626:4;39612:19;;;;;;;;;;;;;;;;39590:41;;39669:6;39654:11;:21;;39646:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;39802:6;39788:11;:20;39766:9;:13;39776:2;39766:13;;;;;;;;;;;:19;39780:4;39766:19;;;;;;;;;;;;;;;:42;;;;39859:6;39838:9;:13;39848:2;39838:13;;;;;;;;;;;:17;39852:2;39838:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;39497:380;;;39492:3;;;;:::i;:::-;;;39456:421;;;;39924:2;39894:47;;39918:4;39894:47;;39908:8;39894:47;;;39928:3;39933:7;39894:47;;;;;;;:::i;:::-;;;;;;;;39954:75;39990:8;40000:4;40006:2;40010:3;40015:7;40024:4;39954:35;:75::i;:::-;39157:880;38963:1074;;;;;:::o;41355:569::-;41522:1;41508:16;;:2;:16;;;;41500:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;41575:16;41594:12;:10;:12::i;:::-;41575:31;;41619:102;41640:8;41658:1;41662:2;41666:21;41684:2;41666:17;:21::i;:::-;41689:25;41707:6;41689:17;:25::i;:::-;41716:4;41619:20;:102::i;:::-;41755:6;41734:9;:13;41744:2;41734:13;;;;;;;;;;;:17;41748:2;41734:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;41814:2;41777:52;;41810:1;41777:52;;41792:8;41777:52;;;41818:2;41822:6;41777:52;;;;;;;:::i;:::-;;;;;;;;41842:74;41873:8;41891:1;41895:2;41899;41903:6;41911:4;41842:30;:74::i;:::-;41489:435;41355:569;;;;:::o;11744:211::-;11861:86;11881:5;11911:23;;;11936:2;11940:5;11888:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11861:19;:86::i;:::-;11744:211;;;:::o;50775:191::-;50849:16;50868:6;;;;;;;;;;;50849:25;;50894:8;50885:6;;:17;;;;;;;;;;;;;;;;;;50949:8;50918:40;;50939:8;50918:40;;;;;;;;;;;;50838:128;50775:191;:::o;45149:331::-;45304:8;45295:17;;:5;:17;;;;45287:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;45407:8;45369:18;:25;45388:5;45369:25;;;;;;;;;;;;;;;:35;45395:8;45369:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;45453:8;45431:41;;45446:5;45431:41;;;45463:8;45431:41;;;;;;:::i;:::-;;;;;;;;45149:331;;;:::o;37785:820::-;37987:1;37973:16;;:2;:16;;;;37965:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;38044:16;38063:12;:10;:12::i;:::-;38044:31;;38088:96;38109:8;38119:4;38125:2;38129:21;38147:2;38129:17;:21::i;:::-;38152:25;38170:6;38152:17;:25::i;:::-;38179:4;38088:20;:96::i;:::-;38197:19;38219:9;:13;38229:2;38219:13;;;;;;;;;;;:19;38233:4;38219:19;;;;;;;;;;;;;;;;38197:41;;38272:6;38257:11;:21;;38249:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;38397:6;38383:11;:20;38361:9;:13;38371:2;38361:13;;;;;;;;;;;:19;38375:4;38361:19;;;;;;;;;;;;;;;:42;;;;38446:6;38425:9;:13;38435:2;38425:13;;;;;;;;;;;:17;38439:2;38425:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;38501:2;38470:46;;38495:4;38470:46;;38485:8;38470:46;;;38505:2;38509:6;38470:46;;;;;;;:::i;:::-;;;;;;;;38529:68;38560:8;38570:4;38576:2;38580;38584:6;38592:4;38529:30;:68::i;:::-;37954:651;;37785:820;;;;;:::o;46436:221::-;;;;;;;:::o;47417:813::-;47657:15;:2;:13;;;:15::i;:::-;47653:570;;;47710:2;47693:43;;;47737:8;47747:4;47753:3;47758:7;47767:4;47693:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;47689:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;48085:6;48078:14;;;;;;;;;;;:::i;:::-;;;;;;;;47689:523;;;48134:62;;;;;;;;;;:::i;:::-;;;;;;;;47689:523;47866:48;;;47854:60;;;:8;:60;;;;47850:159;;47939:50;;;;;;;;;;:::i;:::-;;;;;;;;47850:159;47773:251;47653:570;47417:813;;;;;;:::o;48238:198::-;48304:16;48333:22;48372:1;48358:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48333:41;;48396:7;48385:5;48391:1;48385:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;48423:5;48416:12;;;48238:198;;;:::o;46665:744::-;46880:15;:2;:13;;;:15::i;:::-;46876:526;;;46933:2;46916:38;;;46955:8;46965:4;46971:2;46975:6;46983:4;46916:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;46912:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;47264:6;47257:14;;;;;;;;;;;:::i;:::-;;;;;;;;46912:479;;;47313:62;;;;;;;;;;:::i;:::-;;;;;;;;46912:479;47050:43;;;47038:55;;;:8;:55;;;;47034:154;;47118:50;;;;;;;;;;:::i;:::-;;;;;;;;47034:154;46989:214;46876:526;46665:744;;;;;;:::o;14317:716::-;14741:23;14767:69;14795:4;14767:69;;;;;;;;;;;;;;;;;14775:5;14767:27;;;;:69;;;;;:::i;:::-;14741:95;;14871:1;14851:10;:17;:21;14847:179;;;14948:10;14937:30;;;;;;;;;;;;:::i;:::-;14929:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14847:179;14387:646;14317:716;;:::o;3716:387::-;3776:4;3984:12;4051:7;4039:20;4031:28;;4094:1;4087:4;:8;4080:15;;;3716:387;;;:::o;6522:229::-;6659:12;6691:52;6713:6;6721:4;6727:1;6730:12;6691:21;:52::i;:::-;6684:59;;6522:229;;;;;:::o;7642:510::-;7812:12;7870:5;7845:21;:30;;7837:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;7937:18;7948:6;7937:10;:18::i;:::-;7929:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8003:12;8017:23;8044:6;:11;;8063:5;8070:4;8044:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8002:73;;;;8093:51;8110:7;8119:10;8131:12;8093:16;:51::i;:::-;8086:58;;;;7642:510;;;;;;:::o;10328:712::-;10478:12;10507:7;10503:530;;;10538:10;10531:17;;;;10503:530;10672:1;10652:10;:17;:21;10648:374;;;10850:10;10844:17;10911:15;10898:10;10894:2;10890:19;10883:44;10648:374;10993:12;10986:20;;;;;;;;;;;:::i;:::-;;;;;;;;10328:712;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2476:155::-;2530:5;2568:6;2555:20;2546:29;;2584:41;2619:5;2584:41;:::i;:::-;2476:155;;;;:::o;2654:370::-;2725:5;2774:3;2767:4;2759:6;2755:17;2751:27;2741:122;;2782:79;;:::i;:::-;2741:122;2899:6;2886:20;2924:94;3014:3;3006:6;2999:4;2991:6;2987:17;2924:94;:::i;:::-;2915:103;;2731:293;2654:370;;;;:::o;3047:::-;3118:5;3167:3;3160:4;3152:6;3148:17;3144:27;3134:122;;3175:79;;:::i;:::-;3134:122;3292:6;3279:20;3317:94;3407:3;3399:6;3392:4;3384:6;3380:17;3317:94;:::i;:::-;3308:103;;3124:293;3047:370;;;;:::o;3423:133::-;3466:5;3504:6;3491:20;3482:29;;3520:30;3544:5;3520:30;:::i;:::-;3423:133;;;;:::o;3562:137::-;3616:5;3647:6;3641:13;3632:22;;3663:30;3687:5;3663:30;:::i;:::-;3562:137;;;;:::o;3705:::-;3750:5;3788:6;3775:20;3766:29;;3804:32;3830:5;3804:32;:::i;:::-;3705:137;;;;:::o;3848:141::-;3904:5;3935:6;3929:13;3920:22;;3951:32;3977:5;3951:32;:::i;:::-;3848:141;;;;:::o;4008:338::-;4063:5;4112:3;4105:4;4097:6;4093:17;4089:27;4079:122;;4120:79;;:::i;:::-;4079:122;4237:6;4224:20;4262:78;4336:3;4328:6;4321:4;4313:6;4309:17;4262:78;:::i;:::-;4253:87;;4069:277;4008:338;;;;:::o;4352:165::-;4411:5;4449:6;4436:20;4427:29;;4465:46;4505:5;4465:46;:::i;:::-;4352:165;;;;:::o;4537:340::-;4593:5;4642:3;4635:4;4627:6;4623:17;4619:27;4609:122;;4650:79;;:::i;:::-;4609:122;4767:6;4754:20;4792:79;4867:3;4859:6;4852:4;4844:6;4840:17;4792:79;:::i;:::-;4783:88;;4599:278;4537:340;;;;:::o;4883:139::-;4929:5;4967:6;4954:20;4945:29;;4983:33;5010:5;4983:33;:::i;:::-;4883:139;;;;:::o;5028:143::-;5085:5;5116:6;5110:13;5101:22;;5132:33;5159:5;5132:33;:::i;:::-;5028:143;;;;:::o;5177:329::-;5236:6;5285:2;5273:9;5264:7;5260:23;5256:32;5253:119;;;5291:79;;:::i;:::-;5253:119;5411:1;5436:53;5481:7;5472:6;5461:9;5457:22;5436:53;:::i;:::-;5426:63;;5382:117;5177:329;;;;:::o;5512:345::-;5579:6;5628:2;5616:9;5607:7;5603:23;5599:32;5596:119;;;5634:79;;:::i;:::-;5596:119;5754:1;5779:61;5832:7;5823:6;5812:9;5808:22;5779:61;:::i;:::-;5769:71;;5725:125;5512:345;;;;:::o;5863:474::-;5931:6;5939;5988:2;5976:9;5967:7;5963:23;5959:32;5956:119;;;5994:79;;:::i;:::-;5956:119;6114:1;6139:53;6184:7;6175:6;6164:9;6160:22;6139:53;:::i;:::-;6129:63;;6085:117;6241:2;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6212:118;5863:474;;;;;:::o;6343:1509::-;6497:6;6505;6513;6521;6529;6578:3;6566:9;6557:7;6553:23;6549:33;6546:120;;;6585:79;;:::i;:::-;6546:120;6705:1;6730:53;6775:7;6766:6;6755:9;6751:22;6730:53;:::i;:::-;6720:63;;6676:117;6832:2;6858:53;6903:7;6894:6;6883:9;6879:22;6858:53;:::i;:::-;6848:63;;6803:118;6988:2;6977:9;6973:18;6960:32;7019:18;7011:6;7008:30;7005:117;;;7041:79;;:::i;:::-;7005:117;7146:78;7216:7;7207:6;7196:9;7192:22;7146:78;:::i;:::-;7136:88;;6931:303;7301:2;7290:9;7286:18;7273:32;7332:18;7324:6;7321:30;7318:117;;;7354:79;;:::i;:::-;7318:117;7459:78;7529:7;7520:6;7509:9;7505:22;7459:78;:::i;:::-;7449:88;;7244:303;7614:3;7603:9;7599:19;7586:33;7646:18;7638:6;7635:30;7632:117;;;7668:79;;:::i;:::-;7632:117;7773:62;7827:7;7818:6;7807:9;7803:22;7773:62;:::i;:::-;7763:72;;7557:288;6343:1509;;;;;;;;:::o;7858:1089::-;7962:6;7970;7978;7986;7994;8043:3;8031:9;8022:7;8018:23;8014:33;8011:120;;;8050:79;;:::i;:::-;8011:120;8170:1;8195:53;8240:7;8231:6;8220:9;8216:22;8195:53;:::i;:::-;8185:63;;8141:117;8297:2;8323:53;8368:7;8359:6;8348:9;8344:22;8323:53;:::i;:::-;8313:63;;8268:118;8425:2;8451:53;8496:7;8487:6;8476:9;8472:22;8451:53;:::i;:::-;8441:63;;8396:118;8553:2;8579:53;8624:7;8615:6;8604:9;8600:22;8579:53;:::i;:::-;8569:63;;8524:118;8709:3;8698:9;8694:19;8681:33;8741:18;8733:6;8730:30;8727:117;;;8763:79;;:::i;:::-;8727:117;8868:62;8922:7;8913:6;8902:9;8898:22;8868:62;:::i;:::-;8858:72;;8652:288;7858:1089;;;;;;;;:::o;8953:468::-;9018:6;9026;9075:2;9063:9;9054:7;9050:23;9046:32;9043:119;;;9081:79;;:::i;:::-;9043:119;9201:1;9226:53;9271:7;9262:6;9251:9;9247:22;9226:53;:::i;:::-;9216:63;;9172:117;9328:2;9354:50;9396:7;9387:6;9376:9;9372:22;9354:50;:::i;:::-;9344:60;;9299:115;8953:468;;;;;:::o;9427:474::-;9495:6;9503;9552:2;9540:9;9531:7;9527:23;9523:32;9520:119;;;9558:79;;:::i;:::-;9520:119;9678:1;9703:53;9748:7;9739:6;9728:9;9724:22;9703:53;:::i;:::-;9693:63;;9649:117;9805:2;9831:53;9876:7;9867:6;9856:9;9852:22;9831:53;:::i;:::-;9821:63;;9776:118;9427:474;;;;;:::o;9907:894::-;10025:6;10033;10082:2;10070:9;10061:7;10057:23;10053:32;10050:119;;;10088:79;;:::i;:::-;10050:119;10236:1;10225:9;10221:17;10208:31;10266:18;10258:6;10255:30;10252:117;;;10288:79;;:::i;:::-;10252:117;10393:78;10463:7;10454:6;10443:9;10439:22;10393:78;:::i;:::-;10383:88;;10179:302;10548:2;10537:9;10533:18;10520:32;10579:18;10571:6;10568:30;10565:117;;;10601:79;;:::i;:::-;10565:117;10706:78;10776:7;10767:6;10756:9;10752:22;10706:78;:::i;:::-;10696:88;;10491:303;9907:894;;;;;:::o;10807:345::-;10874:6;10923:2;10911:9;10902:7;10898:23;10894:32;10891:119;;;10929:79;;:::i;:::-;10891:119;11049:1;11074:61;11127:7;11118:6;11107:9;11103:22;11074:61;:::i;:::-;11064:71;;11020:125;10807:345;;;;:::o;11158:327::-;11216:6;11265:2;11253:9;11244:7;11240:23;11236:32;11233:119;;;11271:79;;:::i;:::-;11233:119;11391:1;11416:52;11460:7;11451:6;11440:9;11436:22;11416:52;:::i;:::-;11406:62;;11362:116;11158:327;;;;:::o;11491:349::-;11560:6;11609:2;11597:9;11588:7;11584:23;11580:32;11577:119;;;11615:79;;:::i;:::-;11577:119;11735:1;11760:63;11815:7;11806:6;11795:9;11791:22;11760:63;:::i;:::-;11750:73;;11706:127;11491:349;;;;:::o;11846:355::-;11918:6;11967:2;11955:9;11946:7;11942:23;11938:32;11935:119;;;11973:79;;:::i;:::-;11935:119;12093:1;12118:66;12176:7;12167:6;12156:9;12152:22;12118:66;:::i;:::-;12108:76;;12064:130;11846:355;;;;:::o;12207:500::-;12288:6;12296;12345:2;12333:9;12324:7;12320:23;12316:32;12313:119;;;12351:79;;:::i;:::-;12313:119;12471:1;12496:66;12554:7;12545:6;12534:9;12530:22;12496:66;:::i;:::-;12486:76;;12442:130;12611:2;12637:53;12682:7;12673:6;12662:9;12658:22;12637:53;:::i;:::-;12627:63;;12582:118;12207:500;;;;;:::o;12713:509::-;12782:6;12831:2;12819:9;12810:7;12806:23;12802:32;12799:119;;;12837:79;;:::i;:::-;12799:119;12985:1;12974:9;12970:17;12957:31;13015:18;13007:6;13004:30;13001:117;;;13037:79;;:::i;:::-;13001:117;13142:63;13197:7;13188:6;13177:9;13173:22;13142:63;:::i;:::-;13132:73;;12928:287;12713:509;;;;:::o;13228:329::-;13287:6;13336:2;13324:9;13315:7;13311:23;13307:32;13304:119;;;13342:79;;:::i;:::-;13304:119;13462:1;13487:53;13532:7;13523:6;13512:9;13508:22;13487:53;:::i;:::-;13477:63;;13433:117;13228:329;;;;:::o;13563:351::-;13633:6;13682:2;13670:9;13661:7;13657:23;13653:32;13650:119;;;13688:79;;:::i;:::-;13650:119;13808:1;13833:64;13889:7;13880:6;13869:9;13865:22;13833:64;:::i;:::-;13823:74;;13779:128;13563:351;;;;:::o;13920:179::-;13989:10;14010:46;14052:3;14044:6;14010:46;:::i;:::-;14088:4;14083:3;14079:14;14065:28;;13920:179;;;;:::o;14105:147::-;14200:45;14239:5;14200:45;:::i;:::-;14195:3;14188:58;14105:147;;:::o;14258:118::-;14345:24;14363:5;14345:24;:::i;:::-;14340:3;14333:37;14258:118;;:::o;14412:732::-;14531:3;14560:54;14608:5;14560:54;:::i;:::-;14630:86;14709:6;14704:3;14630:86;:::i;:::-;14623:93;;14740:56;14790:5;14740:56;:::i;:::-;14819:7;14850:1;14835:284;14860:6;14857:1;14854:13;14835:284;;;14936:6;14930:13;14963:63;15022:3;15007:13;14963:63;:::i;:::-;14956:70;;15049:60;15102:6;15049:60;:::i;:::-;15039:70;;14895:224;14882:1;14879;14875:9;14870:14;;14835:284;;;14839:14;15135:3;15128:10;;14536:608;;;14412:732;;;;:::o;15150:109::-;15231:21;15246:5;15231:21;:::i;:::-;15226:3;15219:34;15150:109;;:::o;15265:360::-;15351:3;15379:38;15411:5;15379:38;:::i;:::-;15433:70;15496:6;15491:3;15433:70;:::i;:::-;15426:77;;15512:52;15557:6;15552:3;15545:4;15538:5;15534:16;15512:52;:::i;:::-;15589:29;15611:6;15589:29;:::i;:::-;15584:3;15580:39;15573:46;;15355:270;15265:360;;;;:::o;15631:373::-;15735:3;15763:38;15795:5;15763:38;:::i;:::-;15817:88;15898:6;15893:3;15817:88;:::i;:::-;15810:95;;15914:52;15959:6;15954:3;15947:4;15940:5;15936:16;15914:52;:::i;:::-;15991:6;15986:3;15982:16;15975:23;;15739:265;15631:373;;;;:::o;16010:364::-;16098:3;16126:39;16159:5;16126:39;:::i;:::-;16181:71;16245:6;16240:3;16181:71;:::i;:::-;16174:78;;16261:52;16306:6;16301:3;16294:4;16287:5;16283:16;16261:52;:::i;:::-;16338:29;16360:6;16338:29;:::i;:::-;16333:3;16329:39;16322:46;;16102:272;16010:364;;;;:::o;16380:366::-;16522:3;16543:67;16607:2;16602:3;16543:67;:::i;:::-;16536:74;;16619:93;16708:3;16619:93;:::i;:::-;16737:2;16732:3;16728:12;16721:19;;16380:366;;;:::o;16752:::-;16894:3;16915:67;16979:2;16974:3;16915:67;:::i;:::-;16908:74;;16991:93;17080:3;16991:93;:::i;:::-;17109:2;17104:3;17100:12;17093:19;;16752:366;;;:::o;17124:::-;17266:3;17287:67;17351:2;17346:3;17287:67;:::i;:::-;17280:74;;17363:93;17452:3;17363:93;:::i;:::-;17481:2;17476:3;17472:12;17465:19;;17124:366;;;:::o;17496:::-;17638:3;17659:67;17723:2;17718:3;17659:67;:::i;:::-;17652:74;;17735:93;17824:3;17735:93;:::i;:::-;17853:2;17848:3;17844:12;17837:19;;17496:366;;;:::o;17868:::-;18010:3;18031:67;18095:2;18090:3;18031:67;:::i;:::-;18024:74;;18107:93;18196:3;18107:93;:::i;:::-;18225:2;18220:3;18216:12;18209:19;;17868:366;;;:::o;18240:::-;18382:3;18403:67;18467:2;18462:3;18403:67;:::i;:::-;18396:74;;18479:93;18568:3;18479:93;:::i;:::-;18597:2;18592:3;18588:12;18581:19;;18240:366;;;:::o;18612:::-;18754:3;18775:67;18839:2;18834:3;18775:67;:::i;:::-;18768:74;;18851:93;18940:3;18851:93;:::i;:::-;18969:2;18964:3;18960:12;18953:19;;18612:366;;;:::o;18984:::-;19126:3;19147:67;19211:2;19206:3;19147:67;:::i;:::-;19140:74;;19223:93;19312:3;19223:93;:::i;:::-;19341:2;19336:3;19332:12;19325:19;;18984:366;;;:::o;19356:::-;19498:3;19519:67;19583:2;19578:3;19519:67;:::i;:::-;19512:74;;19595:93;19684:3;19595:93;:::i;:::-;19713:2;19708:3;19704:12;19697:19;;19356:366;;;:::o;19728:::-;19870:3;19891:67;19955:2;19950:3;19891:67;:::i;:::-;19884:74;;19967:93;20056:3;19967:93;:::i;:::-;20085:2;20080:3;20076:12;20069:19;;19728:366;;;:::o;20100:::-;20242:3;20263:67;20327:2;20322:3;20263:67;:::i;:::-;20256:74;;20339:93;20428:3;20339:93;:::i;:::-;20457:2;20452:3;20448:12;20441:19;;20100:366;;;:::o;20472:::-;20614:3;20635:67;20699:2;20694:3;20635:67;:::i;:::-;20628:74;;20711:93;20800:3;20711:93;:::i;:::-;20829:2;20824:3;20820:12;20813:19;;20472:366;;;:::o;20844:::-;20986:3;21007:67;21071:2;21066:3;21007:67;:::i;:::-;21000:74;;21083:93;21172:3;21083:93;:::i;:::-;21201:2;21196:3;21192:12;21185:19;;20844:366;;;:::o;21216:::-;21358:3;21379:67;21443:2;21438:3;21379:67;:::i;:::-;21372:74;;21455:93;21544:3;21455:93;:::i;:::-;21573:2;21568:3;21564:12;21557:19;;21216:366;;;:::o;21588:::-;21730:3;21751:67;21815:2;21810:3;21751:67;:::i;:::-;21744:74;;21827:93;21916:3;21827:93;:::i;:::-;21945:2;21940:3;21936:12;21929:19;;21588:366;;;:::o;21960:::-;22102:3;22123:67;22187:2;22182:3;22123:67;:::i;:::-;22116:74;;22199:93;22288:3;22199:93;:::i;:::-;22317:2;22312:3;22308:12;22301:19;;21960:366;;;:::o;22332:::-;22474:3;22495:67;22559:2;22554:3;22495:67;:::i;:::-;22488:74;;22571:93;22660:3;22571:93;:::i;:::-;22689:2;22684:3;22680:12;22673:19;;22332:366;;;:::o;22704:398::-;22863:3;22884:83;22965:1;22960:3;22884:83;:::i;:::-;22877:90;;22976:93;23065:3;22976:93;:::i;:::-;23094:1;23089:3;23085:11;23078:18;;22704:398;;;:::o;23108:366::-;23250:3;23271:67;23335:2;23330:3;23271:67;:::i;:::-;23264:74;;23347:93;23436:3;23347:93;:::i;:::-;23465:2;23460:3;23456:12;23449:19;;23108:366;;;:::o;23480:::-;23622:3;23643:67;23707:2;23702:3;23643:67;:::i;:::-;23636:74;;23719:93;23808:3;23719:93;:::i;:::-;23837:2;23832:3;23828:12;23821:19;;23480:366;;;:::o;23852:::-;23994:3;24015:67;24079:2;24074:3;24015:67;:::i;:::-;24008:74;;24091:93;24180:3;24091:93;:::i;:::-;24209:2;24204:3;24200:12;24193:19;;23852:366;;;:::o;24224:::-;24366:3;24387:67;24451:2;24446:3;24387:67;:::i;:::-;24380:74;;24463:93;24552:3;24463:93;:::i;:::-;24581:2;24576:3;24572:12;24565:19;;24224:366;;;:::o;24596:::-;24738:3;24759:67;24823:2;24818:3;24759:67;:::i;:::-;24752:74;;24835:93;24924:3;24835:93;:::i;:::-;24953:2;24948:3;24944:12;24937:19;;24596:366;;;:::o;24968:::-;25110:3;25131:67;25195:2;25190:3;25131:67;:::i;:::-;25124:74;;25207:93;25296:3;25207:93;:::i;:::-;25325:2;25320:3;25316:12;25309:19;;24968:366;;;:::o;25340:::-;25482:3;25503:67;25567:2;25562:3;25503:67;:::i;:::-;25496:74;;25579:93;25668:3;25579:93;:::i;:::-;25697:2;25692:3;25688:12;25681:19;;25340:366;;;:::o;25712:108::-;25789:24;25807:5;25789:24;:::i;:::-;25784:3;25777:37;25712:108;;:::o;25826:118::-;25913:24;25931:5;25913:24;:::i;:::-;25908:3;25901:37;25826:118;;:::o;25950:271::-;26080:3;26102:93;26191:3;26182:6;26102:93;:::i;:::-;26095:100;;26212:3;26205:10;;25950:271;;;;:::o;26227:379::-;26411:3;26433:147;26576:3;26433:147;:::i;:::-;26426:154;;26597:3;26590:10;;26227:379;;;:::o;26612:222::-;26705:4;26743:2;26732:9;26728:18;26720:26;;26756:71;26824:1;26813:9;26809:17;26800:6;26756:71;:::i;:::-;26612:222;;;;:::o;26840:348::-;26969:4;27007:2;26996:9;26992:18;26984:26;;27020:79;27096:1;27085:9;27081:17;27072:6;27020:79;:::i;:::-;27109:72;27177:2;27166:9;27162:18;27153:6;27109:72;:::i;:::-;26840:348;;;;;:::o;27194:1053::-;27517:4;27555:3;27544:9;27540:19;27532:27;;27569:71;27637:1;27626:9;27622:17;27613:6;27569:71;:::i;:::-;27650:72;27718:2;27707:9;27703:18;27694:6;27650:72;:::i;:::-;27769:9;27763:4;27759:20;27754:2;27743:9;27739:18;27732:48;27797:108;27900:4;27891:6;27797:108;:::i;:::-;27789:116;;27952:9;27946:4;27942:20;27937:2;27926:9;27922:18;27915:48;27980:108;28083:4;28074:6;27980:108;:::i;:::-;27972:116;;28136:9;28130:4;28126:20;28120:3;28109:9;28105:19;28098:49;28164:76;28235:4;28226:6;28164:76;:::i;:::-;28156:84;;27194:1053;;;;;;;;:::o;28253:751::-;28476:4;28514:3;28503:9;28499:19;28491:27;;28528:71;28596:1;28585:9;28581:17;28572:6;28528:71;:::i;:::-;28609:72;28677:2;28666:9;28662:18;28653:6;28609:72;:::i;:::-;28691;28759:2;28748:9;28744:18;28735:6;28691:72;:::i;:::-;28773;28841:2;28830:9;28826:18;28817:6;28773:72;:::i;:::-;28893:9;28887:4;28883:20;28877:3;28866:9;28862:19;28855:49;28921:76;28992:4;28983:6;28921:76;:::i;:::-;28913:84;;28253:751;;;;;;;;:::o;29010:332::-;29131:4;29169:2;29158:9;29154:18;29146:26;;29182:71;29250:1;29239:9;29235:17;29226:6;29182:71;:::i;:::-;29263:72;29331:2;29320:9;29316:18;29307:6;29263:72;:::i;:::-;29010:332;;;;;:::o;29348:373::-;29491:4;29529:2;29518:9;29514:18;29506:26;;29578:9;29572:4;29568:20;29564:1;29553:9;29549:17;29542:47;29606:108;29709:4;29700:6;29606:108;:::i;:::-;29598:116;;29348:373;;;;:::o;29727:634::-;29948:4;29986:2;29975:9;29971:18;29963:26;;30035:9;30029:4;30025:20;30021:1;30010:9;30006:17;29999:47;30063:108;30166:4;30157:6;30063:108;:::i;:::-;30055:116;;30218:9;30212:4;30208:20;30203:2;30192:9;30188:18;30181:48;30246:108;30349:4;30340:6;30246:108;:::i;:::-;30238:116;;29727:634;;;;;:::o;30367:210::-;30454:4;30492:2;30481:9;30477:18;30469:26;;30505:65;30567:1;30556:9;30552:17;30543:6;30505:65;:::i;:::-;30367:210;;;;:::o;30583:313::-;30696:4;30734:2;30723:9;30719:18;30711:26;;30783:9;30777:4;30773:20;30769:1;30758:9;30754:17;30747:47;30811:78;30884:4;30875:6;30811:78;:::i;:::-;30803:86;;30583:313;;;;:::o;30902:419::-;31068:4;31106:2;31095:9;31091:18;31083:26;;31155:9;31149:4;31145:20;31141:1;31130:9;31126:17;31119:47;31183:131;31309:4;31183:131;:::i;:::-;31175:139;;30902:419;;;:::o;31327:::-;31493:4;31531:2;31520:9;31516:18;31508:26;;31580:9;31574:4;31570:20;31566:1;31555:9;31551:17;31544:47;31608:131;31734:4;31608:131;:::i;:::-;31600:139;;31327:419;;;:::o;31752:::-;31918:4;31956:2;31945:9;31941:18;31933:26;;32005:9;31999:4;31995:20;31991:1;31980:9;31976:17;31969:47;32033:131;32159:4;32033:131;:::i;:::-;32025:139;;31752:419;;;:::o;32177:::-;32343:4;32381:2;32370:9;32366:18;32358:26;;32430:9;32424:4;32420:20;32416:1;32405:9;32401:17;32394:47;32458:131;32584:4;32458:131;:::i;:::-;32450:139;;32177:419;;;:::o;32602:::-;32768:4;32806:2;32795:9;32791:18;32783:26;;32855:9;32849:4;32845:20;32841:1;32830:9;32826:17;32819:47;32883:131;33009:4;32883:131;:::i;:::-;32875:139;;32602:419;;;:::o;33027:::-;33193:4;33231:2;33220:9;33216:18;33208:26;;33280:9;33274:4;33270:20;33266:1;33255:9;33251:17;33244:47;33308:131;33434:4;33308:131;:::i;:::-;33300:139;;33027:419;;;:::o;33452:::-;33618:4;33656:2;33645:9;33641:18;33633:26;;33705:9;33699:4;33695:20;33691:1;33680:9;33676:17;33669:47;33733:131;33859:4;33733:131;:::i;:::-;33725:139;;33452:419;;;:::o;33877:::-;34043:4;34081:2;34070:9;34066:18;34058:26;;34130:9;34124:4;34120:20;34116:1;34105:9;34101:17;34094:47;34158:131;34284:4;34158:131;:::i;:::-;34150:139;;33877:419;;;:::o;34302:::-;34468:4;34506:2;34495:9;34491:18;34483:26;;34555:9;34549:4;34545:20;34541:1;34530:9;34526:17;34519:47;34583:131;34709:4;34583:131;:::i;:::-;34575:139;;34302:419;;;:::o;34727:::-;34893:4;34931:2;34920:9;34916:18;34908:26;;34980:9;34974:4;34970:20;34966:1;34955:9;34951:17;34944:47;35008:131;35134:4;35008:131;:::i;:::-;35000:139;;34727:419;;;:::o;35152:::-;35318:4;35356:2;35345:9;35341:18;35333:26;;35405:9;35399:4;35395:20;35391:1;35380:9;35376:17;35369:47;35433:131;35559:4;35433:131;:::i;:::-;35425:139;;35152:419;;;:::o;35577:::-;35743:4;35781:2;35770:9;35766:18;35758:26;;35830:9;35824:4;35820:20;35816:1;35805:9;35801:17;35794:47;35858:131;35984:4;35858:131;:::i;:::-;35850:139;;35577:419;;;:::o;36002:::-;36168:4;36206:2;36195:9;36191:18;36183:26;;36255:9;36249:4;36245:20;36241:1;36230:9;36226:17;36219:47;36283:131;36409:4;36283:131;:::i;:::-;36275:139;;36002:419;;;:::o;36427:::-;36593:4;36631:2;36620:9;36616:18;36608:26;;36680:9;36674:4;36670:20;36666:1;36655:9;36651:17;36644:47;36708:131;36834:4;36708:131;:::i;:::-;36700:139;;36427:419;;;:::o;36852:::-;37018:4;37056:2;37045:9;37041:18;37033:26;;37105:9;37099:4;37095:20;37091:1;37080:9;37076:17;37069:47;37133:131;37259:4;37133:131;:::i;:::-;37125:139;;36852:419;;;:::o;37277:::-;37443:4;37481:2;37470:9;37466:18;37458:26;;37530:9;37524:4;37520:20;37516:1;37505:9;37501:17;37494:47;37558:131;37684:4;37558:131;:::i;:::-;37550:139;;37277:419;;;:::o;37702:::-;37868:4;37906:2;37895:9;37891:18;37883:26;;37955:9;37949:4;37945:20;37941:1;37930:9;37926:17;37919:47;37983:131;38109:4;37983:131;:::i;:::-;37975:139;;37702:419;;;:::o;38127:::-;38293:4;38331:2;38320:9;38316:18;38308:26;;38380:9;38374:4;38370:20;38366:1;38355:9;38351:17;38344:47;38408:131;38534:4;38408:131;:::i;:::-;38400:139;;38127:419;;;:::o;38552:::-;38718:4;38756:2;38745:9;38741:18;38733:26;;38805:9;38799:4;38795:20;38791:1;38780:9;38776:17;38769:47;38833:131;38959:4;38833:131;:::i;:::-;38825:139;;38552:419;;;:::o;38977:::-;39143:4;39181:2;39170:9;39166:18;39158:26;;39230:9;39224:4;39220:20;39216:1;39205:9;39201:17;39194:47;39258:131;39384:4;39258:131;:::i;:::-;39250:139;;38977:419;;;:::o;39402:::-;39568:4;39606:2;39595:9;39591:18;39583:26;;39655:9;39649:4;39645:20;39641:1;39630:9;39626:17;39619:47;39683:131;39809:4;39683:131;:::i;:::-;39675:139;;39402:419;;;:::o;39827:::-;39993:4;40031:2;40020:9;40016:18;40008:26;;40080:9;40074:4;40070:20;40066:1;40055:9;40051:17;40044:47;40108:131;40234:4;40108:131;:::i;:::-;40100:139;;39827:419;;;:::o;40252:::-;40418:4;40456:2;40445:9;40441:18;40433:26;;40505:9;40499:4;40495:20;40491:1;40480:9;40476:17;40469:47;40533:131;40659:4;40533:131;:::i;:::-;40525:139;;40252:419;;;:::o;40677:::-;40843:4;40881:2;40870:9;40866:18;40858:26;;40930:9;40924:4;40920:20;40916:1;40905:9;40901:17;40894:47;40958:131;41084:4;40958:131;:::i;:::-;40950:139;;40677:419;;;:::o;41102:222::-;41195:4;41233:2;41222:9;41218:18;41210:26;;41246:71;41314:1;41303:9;41299:17;41290:6;41246:71;:::i;:::-;41102:222;;;;:::o;41330:332::-;41451:4;41489:2;41478:9;41474:18;41466:26;;41502:71;41570:1;41559:9;41555:17;41546:6;41502:71;:::i;:::-;41583:72;41651:2;41640:9;41636:18;41627:6;41583:72;:::i;:::-;41330:332;;;;;:::o;41668:129::-;41702:6;41729:20;;:::i;:::-;41719:30;;41758:33;41786:4;41778:6;41758:33;:::i;:::-;41668:129;;;:::o;41803:75::-;41836:6;41869:2;41863:9;41853:19;;41803:75;:::o;41884:311::-;41961:4;42051:18;42043:6;42040:30;42037:56;;;42073:18;;:::i;:::-;42037:56;42123:4;42115:6;42111:17;42103:25;;42183:4;42177;42173:15;42165:23;;41884:311;;;:::o;42201:::-;42278:4;42368:18;42360:6;42357:30;42354:56;;;42390:18;;:::i;:::-;42354:56;42440:4;42432:6;42428:17;42420:25;;42500:4;42494;42490:15;42482:23;;42201:311;;;:::o;42518:307::-;42579:4;42669:18;42661:6;42658:30;42655:56;;;42691:18;;:::i;:::-;42655:56;42729:29;42751:6;42729:29;:::i;:::-;42721:37;;42813:4;42807;42803:15;42795:23;;42518:307;;;:::o;42831:308::-;42893:4;42983:18;42975:6;42972:30;42969:56;;;43005:18;;:::i;:::-;42969:56;43043:29;43065:6;43043:29;:::i;:::-;43035:37;;43127:4;43121;43117:15;43109:23;;42831:308;;;:::o;43145:132::-;43212:4;43235:3;43227:11;;43265:4;43260:3;43256:14;43248:22;;43145:132;;;:::o;43283:114::-;43350:6;43384:5;43378:12;43368:22;;43283:114;;;:::o;43403:98::-;43454:6;43488:5;43482:12;43472:22;;43403:98;;;:::o;43507:99::-;43559:6;43593:5;43587:12;43577:22;;43507:99;;;:::o;43612:113::-;43682:4;43714;43709:3;43705:14;43697:22;;43612:113;;;:::o;43731:184::-;43830:11;43864:6;43859:3;43852:19;43904:4;43899:3;43895:14;43880:29;;43731:184;;;;:::o;43921:168::-;44004:11;44038:6;44033:3;44026:19;44078:4;44073:3;44069:14;44054:29;;43921:168;;;;:::o;44095:147::-;44196:11;44233:3;44218:18;;44095:147;;;;:::o;44248:169::-;44332:11;44366:6;44361:3;44354:19;44406:4;44401:3;44397:14;44382:29;;44248:169;;;;:::o;44423:305::-;44463:3;44482:20;44500:1;44482:20;:::i;:::-;44477:25;;44516:20;44534:1;44516:20;:::i;:::-;44511:25;;44670:1;44602:66;44598:74;44595:1;44592:81;44589:107;;;44676:18;;:::i;:::-;44589:107;44720:1;44717;44713:9;44706:16;;44423:305;;;;:::o;44734:185::-;44774:1;44791:20;44809:1;44791:20;:::i;:::-;44786:25;;44825:20;44843:1;44825:20;:::i;:::-;44820:25;;44864:1;44854:35;;44869:18;;:::i;:::-;44854:35;44911:1;44908;44904:9;44899:14;;44734:185;;;;:::o;44925:348::-;44965:7;44988:20;45006:1;44988:20;:::i;:::-;44983:25;;45022:20;45040:1;45022:20;:::i;:::-;45017:25;;45210:1;45142:66;45138:74;45135:1;45132:81;45127:1;45120:9;45113:17;45109:105;45106:131;;;45217:18;;:::i;:::-;45106:131;45265:1;45262;45258:9;45247:20;;44925:348;;;;:::o;45279:191::-;45319:4;45339:20;45357:1;45339:20;:::i;:::-;45334:25;;45373:20;45391:1;45373:20;:::i;:::-;45368:25;;45412:1;45409;45406:8;45403:34;;;45417:18;;:::i;:::-;45403:34;45462:1;45459;45455:9;45447:17;;45279:191;;;;:::o;45476:96::-;45513:7;45542:24;45560:5;45542:24;:::i;:::-;45531:35;;45476:96;;;:::o;45578:104::-;45623:7;45652:24;45670:5;45652:24;:::i;:::-;45641:35;;45578:104;;;:::o;45688:90::-;45722:7;45765:5;45758:13;45751:21;45740:32;;45688:90;;;:::o;45784:149::-;45820:7;45860:66;45853:5;45849:78;45838:89;;45784:149;;;:::o;45939:109::-;45989:7;46018:24;46036:5;46018:24;:::i;:::-;46007:35;;45939:109;;;:::o;46054:126::-;46091:7;46131:42;46124:5;46120:54;46109:65;;46054:126;;;:::o;46186:77::-;46223:7;46252:5;46241:16;;46186:77;;;:::o;46269:134::-;46327:9;46360:37;46391:5;46360:37;:::i;:::-;46347:50;;46269:134;;;:::o;46409:126::-;46459:9;46492:37;46523:5;46492:37;:::i;:::-;46479:50;;46409:126;;;:::o;46541:113::-;46591:9;46624:24;46642:5;46624:24;:::i;:::-;46611:37;;46541:113;;;:::o;46660:154::-;46744:6;46739:3;46734;46721:30;46806:1;46797:6;46792:3;46788:16;46781:27;46660:154;;;:::o;46820:307::-;46888:1;46898:113;46912:6;46909:1;46906:13;46898:113;;;46997:1;46992:3;46988:11;46982:18;46978:1;46973:3;46969:11;46962:39;46934:2;46931:1;46927:10;46922:15;;46898:113;;;47029:6;47026:1;47023:13;47020:101;;;47109:1;47100:6;47095:3;47091:16;47084:27;47020:101;46869:258;46820:307;;;:::o;47133:320::-;47177:6;47214:1;47208:4;47204:12;47194:22;;47261:1;47255:4;47251:12;47282:18;47272:81;;47338:4;47330:6;47326:17;47316:27;;47272:81;47400:2;47392:6;47389:14;47369:18;47366:38;47363:84;;;47419:18;;:::i;:::-;47363:84;47184:269;47133:320;;;:::o;47459:281::-;47542:27;47564:4;47542:27;:::i;:::-;47534:6;47530:40;47672:6;47660:10;47657:22;47636:18;47624:10;47621:34;47618:62;47615:88;;;47683:18;;:::i;:::-;47615:88;47723:10;47719:2;47712:22;47502:238;47459:281;;:::o;47746:233::-;47785:3;47808:24;47826:5;47808:24;:::i;:::-;47799:33;;47854:66;47847:5;47844:77;47841:103;;;47924:18;;:::i;:::-;47841:103;47971:1;47964:5;47960:13;47953:20;;47746:233;;;:::o;47985:180::-;48033:77;48030:1;48023:88;48130:4;48127:1;48120:15;48154:4;48151:1;48144:15;48171:180;48219:77;48216:1;48209:88;48316:4;48313:1;48306:15;48340:4;48337:1;48330:15;48357:180;48405:77;48402:1;48395:88;48502:4;48499:1;48492:15;48526:4;48523:1;48516:15;48543:180;48591:77;48588:1;48581:88;48688:4;48685:1;48678:15;48712:4;48709:1;48702:15;48729:180;48777:77;48774:1;48767:88;48874:4;48871:1;48864:15;48898:4;48895:1;48888:15;48915:183;48950:3;48988:1;48970:16;48967:23;48964:128;;;49026:1;49023;49020;49005:23;49048:34;49079:1;49073:8;49048:34;:::i;:::-;49041:41;;48964:128;48915:183;:::o;49104:117::-;49213:1;49210;49203:12;49227:117;49336:1;49333;49326:12;49350:117;49459:1;49456;49449:12;49473:117;49582:1;49579;49572:12;49596:117;49705:1;49702;49695:12;49719:102;49760:6;49811:2;49807:7;49802:2;49795:5;49791:14;49787:28;49777:38;;49719:102;;;:::o;49827:106::-;49871:8;49920:5;49915:3;49911:15;49890:36;;49827:106;;;:::o;49939:239::-;50079:34;50075:1;50067:6;50063:14;50056:58;50148:22;50143:2;50135:6;50131:15;50124:47;49939:239;:::o;50184:166::-;50324:18;50320:1;50312:6;50308:14;50301:42;50184:166;:::o;50356:169::-;50496:21;50492:1;50484:6;50480:14;50473:45;50356:169;:::o;50531:227::-;50671:34;50667:1;50659:6;50655:14;50648:58;50740:10;50735:2;50727:6;50723:15;50716:35;50531:227;:::o;50764:230::-;50904:34;50900:1;50892:6;50888:14;50881:58;50973:13;50968:2;50960:6;50956:15;50949:38;50764:230;:::o;51000:225::-;51140:34;51136:1;51128:6;51124:14;51117:58;51209:8;51204:2;51196:6;51192:15;51185:33;51000:225;:::o;51231:228::-;51371:34;51367:1;51359:6;51355:14;51348:58;51440:11;51435:2;51427:6;51423:15;51416:36;51231:228;:::o;51465:225::-;51605:34;51601:1;51593:6;51589:14;51582:58;51674:8;51669:2;51661:6;51657:15;51650:33;51465:225;:::o;51696:245::-;51836:34;51832:1;51824:6;51820:14;51813:58;51905:28;51900:2;51892:6;51888:15;51881:53;51696:245;:::o;51947:179::-;52087:31;52083:1;52075:6;52071:14;52064:55;51947:179;:::o;52132:225::-;52272:34;52268:1;52260:6;52256:14;52249:58;52341:8;52336:2;52328:6;52324:15;52317:33;52132:225;:::o;52363:230::-;52503:34;52499:1;52491:6;52487:14;52480:58;52572:13;52567:2;52559:6;52555:15;52548:38;52363:230;:::o;52599:224::-;52739:34;52735:1;52727:6;52723:14;52716:58;52808:7;52803:2;52795:6;52791:15;52784:32;52599:224;:::o;52829:237::-;52969:34;52965:1;52957:6;52953:14;52946:58;53038:20;53033:2;53025:6;53021:15;53014:45;52829:237;:::o;53072:229::-;53212:34;53208:1;53200:6;53196:14;53189:58;53281:12;53276:2;53268:6;53264:15;53257:37;53072:229;:::o;53307:182::-;53447:34;53443:1;53435:6;53431:14;53424:58;53307:182;:::o;53495:180::-;53635:32;53631:1;53623:6;53619:14;53612:56;53495:180;:::o;53681:114::-;;:::o;53801:182::-;53941:34;53937:1;53929:6;53925:14;53918:58;53801:182;:::o;53989:179::-;54129:31;54125:1;54117:6;54113:14;54106:55;53989:179;:::o;54174:228::-;54314:34;54310:1;54302:6;54298:14;54291:58;54383:11;54378:2;54370:6;54366:15;54359:36;54174:228;:::o;54408:229::-;54548:34;54544:1;54536:6;54532:14;54525:58;54617:12;54612:2;54604:6;54600:15;54593:37;54408:229;:::o;54643:228::-;54783:34;54779:1;54771:6;54767:14;54760:58;54852:11;54847:2;54839:6;54835:15;54828:36;54643:228;:::o;54877:227::-;55017:34;55013:1;55005:6;55001:14;54994:58;55086:10;55081:2;55073:6;55069:15;55062:35;54877:227;:::o;55110:220::-;55250:34;55246:1;55238:6;55234:14;55227:58;55319:3;55314:2;55306:6;55302:15;55295:28;55110:220;:::o;55336:711::-;55375:3;55413:4;55395:16;55392:26;55389:39;;;55421:5;;55389:39;55450:20;;:::i;:::-;55525:1;55507:16;55503:24;55500:1;55494:4;55479:49;55558:4;55552:11;55657:16;55650:4;55642:6;55638:17;55635:39;55602:18;55594:6;55591:30;55575:113;55572:146;;;55703:5;;;;55572:146;55749:6;55743:4;55739:17;55785:3;55779:10;55812:18;55804:6;55801:30;55798:43;;;55834:5;;;;;;55798:43;55882:6;55875:4;55870:3;55866:14;55862:27;55941:1;55923:16;55919:24;55913:4;55909:35;55904:3;55901:44;55898:57;;;55948:5;;;;;;;55898:57;55965;56013:6;56007:4;56003:17;55995:6;55991:30;55985:4;55965:57;:::i;:::-;56038:3;56031:10;;55379:668;;;;;55336:711;;:::o;56053:122::-;56126:24;56144:5;56126:24;:::i;:::-;56119:5;56116:35;56106:63;;56165:1;56162;56155:12;56106:63;56053:122;:::o;56181:138::-;56262:32;56288:5;56262:32;:::i;:::-;56255:5;56252:43;56242:71;;56309:1;56306;56299:12;56242:71;56181:138;:::o;56325:116::-;56395:21;56410:5;56395:21;:::i;:::-;56388:5;56385:32;56375:60;;56431:1;56428;56421:12;56375:60;56325:116;:::o;56447:120::-;56519:23;56536:5;56519:23;:::i;:::-;56512:5;56509:34;56499:62;;56557:1;56554;56547:12;56499:62;56447:120;:::o;56573:148::-;56659:37;56690:5;56659:37;:::i;:::-;56652:5;56649:48;56639:76;;56711:1;56708;56701:12;56639:76;56573:148;:::o;56727:122::-;56800:24;56818:5;56800:24;:::i;:::-;56793:5;56790:35;56780:63;;56839:1;56836;56829:12;56780:63;56727:122;:::o
Swarm Source
ipfs://ef60560eb70c3cc245deac4216e23a2a8a7ef0d182dab35583a8592dd2f0f797
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.