Contract
0xbb7684cc5408f4dd0921e5c2cadd547b8f1ad573
11
Contract Overview
Balance:
0 GLMR
GLMR Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
PeggedTokenBridge
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; import "../interfaces/ISigsVerifier.sol"; import "../interfaces/IPeggedToken.sol"; import "../libraries/PbPegged.sol"; import "../safeguard/Pauser.sol"; import "../safeguard/VolumeControl.sol"; import "../safeguard/DelayedTransfer.sol"; /** * @title The bridge contract to mint and burn pegged tokens * @dev Work together with OriginalTokenVault deployed at remote chains. */ contract PeggedTokenBridge is Pauser, VolumeControl, DelayedTransfer { ISigsVerifier public immutable sigsVerifier; mapping(bytes32 => bool) public records; mapping(address => uint256) public minBurn; mapping(address => uint256) public maxBurn; event Mint( bytes32 mintId, address token, address account, uint256 amount, uint64 refChainId, bytes32 refId, address depositor ); event Burn(bytes32 burnId, address token, address account, uint256 amount, address withdrawAccount); event MinBurnUpdated(address token, uint256 amount); event MaxBurnUpdated(address token, uint256 amount); constructor(ISigsVerifier _sigsVerifier) { sigsVerifier = _sigsVerifier; } /** * @notice Mint tokens triggered by deposit at a remote chain's OriginalTokenVault. * @param _request The serialized Mint protobuf. * @param _sigs The list of signatures sorted by signing addresses in ascending order. A relay must be signed-off by * +2/3 of the sigsVerifier's current signing power to be delivered. * @param _signers The sorted list of signers. * @param _powers The signing powers of the signers. */ function mint( bytes calldata _request, bytes[] calldata _sigs, address[] calldata _signers, uint256[] calldata _powers ) external whenNotPaused { bytes32 domain = keccak256(abi.encodePacked(block.chainid, address(this), "Mint")); sigsVerifier.verifySigs(abi.encodePacked(domain, _request), _sigs, _signers, _powers); PbPegged.Mint memory request = PbPegged.decMint(_request); bytes32 mintId = keccak256( // len = 20 + 20 + 32 + 20 + 8 + 32 = 132 abi.encodePacked( request.account, request.token, request.amount, request.depositor, request.refChainId, request.refId ) ); require(records[mintId] == false, "record exists"); records[mintId] = true; _updateVolume(request.token, request.amount); uint256 delayThreshold = delayThresholds[request.token]; if (delayThreshold > 0 && request.amount > delayThreshold) { _addDelayedTransfer(mintId, request.account, request.token, request.amount); } else { IPeggedToken(request.token).mint(request.account, request.amount); } emit Mint( mintId, request.token, request.account, request.amount, request.refChainId, request.refId, request.depositor ); } /** * @notice Burn pegged tokens to trigger a cross-chain withdrawal of the original tokens at a remote chain's * OriginalTokenVault. * NOTE: This function DOES NOT SUPPORT fee-on-transfer / rebasing tokens. * @param _token The pegged token address. * @param _amount The amount to burn. * @param _withdrawAccount The account to receive the original tokens withdrawn on the remote chain. * @param _nonce A number to guarantee unique depositId. Can be timestamp in practice. */ function burn( address _token, uint256 _amount, address _withdrawAccount, uint64 _nonce ) external whenNotPaused { require(_amount > minBurn[_token], "amount too small"); require(maxBurn[_token] == 0 || _amount <= maxBurn[_token], "amount too large"); bytes32 burnId = keccak256( // len = 20 + 20 + 32 + 20 + 8 + 8 = 108 abi.encodePacked(msg.sender, _token, _amount, _withdrawAccount, _nonce, uint64(block.chainid)) ); require(records[burnId] == false, "record exists"); records[burnId] = true; IPeggedToken(_token).burn(msg.sender, _amount); emit Burn(burnId, _token, msg.sender, _amount, _withdrawAccount); } function executeDelayedTransfer(bytes32 id) external whenNotPaused { delayedTransfer memory transfer = _executeDelayedTransfer(id); IPeggedToken(transfer.token).mint(transfer.receiver, transfer.amount); } function setMinBurn(address[] calldata _tokens, uint256[] calldata _amounts) external onlyGovernor { require(_tokens.length == _amounts.length, "length mismatch"); for (uint256 i = 0; i < _tokens.length; i++) { minBurn[_tokens[i]] = _amounts[i]; emit MinBurnUpdated(_tokens[i], _amounts[i]); } } function setMaxBurn(address[] calldata _tokens, uint256[] calldata _amounts) external onlyGovernor { require(_tokens.length == _amounts.length, "length mismatch"); for (uint256 i = 0; i < _tokens.length; i++) { maxBurn[_tokens[i]] = _amounts[i]; emit MaxBurnUpdated(_tokens[i], _amounts[i]); } } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; interface ISigsVerifier { /** * @notice Verifies that a message is signed by a quorum among the signers. * @param _msg signed message * @param _sigs list of signatures sorted by signer addresses in ascending order * @param _signers sorted list of current signers * @param _powers powers of current signers */ function verifySigs( bytes memory _msg, bytes[] calldata _sigs, address[] calldata _signers, uint256[] calldata _powers ) external view; }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; interface IPeggedToken { function mint(address _to, uint256 _amount) external; function burn(address _from, uint256 _amount) external; }
// SPDX-License-Identifier: GPL-3.0-only // Code generated by protoc-gen-sol. DO NOT EDIT. // source: contracts/libraries/proto/pegged.proto pragma solidity 0.8.9; import "./Pb.sol"; library PbPegged { using Pb for Pb.Buffer; // so we can call Pb funcs on Buffer obj struct Mint { address token; // tag: 1 address account; // tag: 2 uint256 amount; // tag: 3 address depositor; // tag: 4 uint64 refChainId; // tag: 5 bytes32 refId; // tag: 6 } // end struct Mint function decMint(bytes memory raw) internal pure returns (Mint memory m) { Pb.Buffer memory buf = Pb.fromBytes(raw); uint256 tag; Pb.WireType wire; while (buf.hasMore()) { (tag, wire) = buf.decKey(); if (false) {} // solidity has no switch/case else if (tag == 1) { m.token = Pb._address(buf.decBytes()); } else if (tag == 2) { m.account = Pb._address(buf.decBytes()); } else if (tag == 3) { m.amount = Pb._uint256(buf.decBytes()); } else if (tag == 4) { m.depositor = Pb._address(buf.decBytes()); } else if (tag == 5) { m.refChainId = uint64(buf.decVarint()); } else if (tag == 6) { m.refId = Pb._bytes32(buf.decBytes()); } else { buf.skipValue(wire); } // skip value of unknown tag } } // end decoder Mint struct Withdraw { address token; // tag: 1 address receiver; // tag: 2 uint256 amount; // tag: 3 address burnAccount; // tag: 4 uint64 refChainId; // tag: 5 bytes32 refId; // tag: 6 } // end struct Withdraw function decWithdraw(bytes memory raw) internal pure returns (Withdraw memory m) { Pb.Buffer memory buf = Pb.fromBytes(raw); uint256 tag; Pb.WireType wire; while (buf.hasMore()) { (tag, wire) = buf.decKey(); if (false) {} // solidity has no switch/case else if (tag == 1) { m.token = Pb._address(buf.decBytes()); } else if (tag == 2) { m.receiver = Pb._address(buf.decBytes()); } else if (tag == 3) { m.amount = Pb._uint256(buf.decBytes()); } else if (tag == 4) { m.burnAccount = Pb._address(buf.decBytes()); } else if (tag == 5) { m.refChainId = uint64(buf.decVarint()); } else if (tag == 6) { m.refId = Pb._bytes32(buf.decBytes()); } else { buf.skipValue(wire); } // skip value of unknown tag } } // end decoder Withdraw }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; // runtime proto sol library library Pb { enum WireType { Varint, Fixed64, LengthDelim, StartGroup, EndGroup, Fixed32 } struct Buffer { uint256 idx; // the start index of next read. when idx=b.length, we're done bytes b; // hold serialized proto msg, readonly } // create a new in-memory Buffer object from raw msg bytes function fromBytes(bytes memory raw) internal pure returns (Buffer memory buf) { buf.b = raw; buf.idx = 0; } // whether there are unread bytes function hasMore(Buffer memory buf) internal pure returns (bool) { return buf.idx < buf.b.length; } // decode current field number and wiretype function decKey(Buffer memory buf) internal pure returns (uint256 tag, WireType wiretype) { uint256 v = decVarint(buf); tag = v / 8; wiretype = WireType(v & 7); } // count tag occurrences, return an array due to no memory map support // have to create array for (maxtag+1) size. cnts[tag] = occurrences // should keep buf.idx unchanged because this is only a count function function cntTags(Buffer memory buf, uint256 maxtag) internal pure returns (uint256[] memory cnts) { uint256 originalIdx = buf.idx; cnts = new uint256[](maxtag + 1); // protobuf's tags are from 1 rather than 0 uint256 tag; WireType wire; while (hasMore(buf)) { (tag, wire) = decKey(buf); cnts[tag] += 1; skipValue(buf, wire); } buf.idx = originalIdx; } // read varint from current buf idx, move buf.idx to next read, return the int value function decVarint(Buffer memory buf) internal pure returns (uint256 v) { bytes10 tmp; // proto int is at most 10 bytes (7 bits can be used per byte) bytes memory bb = buf.b; // get buf.b mem addr to use in assembly v = buf.idx; // use v to save one additional uint variable assembly { tmp := mload(add(add(bb, 32), v)) // load 10 bytes from buf.b[buf.idx] to tmp } uint256 b; // store current byte content v = 0; // reset to 0 for return value for (uint256 i = 0; i < 10; i++) { assembly { b := byte(i, tmp) // don't use tmp[i] because it does bound check and costs extra } v |= (b & 0x7F) << (i * 7); if (b & 0x80 == 0) { buf.idx += i + 1; return v; } } revert(); // i=10, invalid varint stream } // read length delimited field and return bytes function decBytes(Buffer memory buf) internal pure returns (bytes memory b) { uint256 len = decVarint(buf); uint256 end = buf.idx + len; require(end <= buf.b.length); // avoid overflow b = new bytes(len); bytes memory bufB = buf.b; // get buf.b mem addr to use in assembly uint256 bStart; uint256 bufBStart = buf.idx; assembly { bStart := add(b, 32) bufBStart := add(add(bufB, 32), bufBStart) } for (uint256 i = 0; i < len; i += 32) { assembly { mstore(add(bStart, i), mload(add(bufBStart, i))) } } buf.idx = end; } // return packed ints function decPacked(Buffer memory buf) internal pure returns (uint256[] memory t) { uint256 len = decVarint(buf); uint256 end = buf.idx + len; require(end <= buf.b.length); // avoid overflow // array in memory must be init w/ known length // so we have to create a tmp array w/ max possible len first uint256[] memory tmp = new uint256[](len); uint256 i = 0; // count how many ints are there while (buf.idx < end) { tmp[i] = decVarint(buf); i++; } t = new uint256[](i); // init t with correct length for (uint256 j = 0; j < i; j++) { t[j] = tmp[j]; } return t; } // move idx pass current value field, to beginning of next tag or msg end function skipValue(Buffer memory buf, WireType wire) internal pure { if (wire == WireType.Varint) { decVarint(buf); } else if (wire == WireType.LengthDelim) { uint256 len = decVarint(buf); buf.idx += len; // skip len bytes value data require(buf.idx <= buf.b.length); // avoid overflow } else { revert(); } // unsupported wiretype } // type conversion help utils function _bool(uint256 x) internal pure returns (bool v) { return x != 0; } function _uint256(bytes memory b) internal pure returns (uint256 v) { require(b.length <= 32); // b's length must be smaller than or equal to 32 assembly { v := mload(add(b, 32)) } // load all 32bytes to v v = v >> (8 * (32 - b.length)); // only first b.length is valid } function _address(bytes memory b) internal pure returns (address v) { v = _addressPayable(b); } function _addressPayable(bytes memory b) internal pure returns (address payable v) { require(b.length == 20); //load 32bytes then shift right 12 bytes assembly { v := div(mload(add(b, 32)), 0x1000000000000000000000000) } } function _bytes32(bytes memory b) internal pure returns (bytes32 v) { require(b.length == 32); assembly { v := mload(add(b, 32)) } } // uint[] to uint8[] function uint8s(uint256[] memory arr) internal pure returns (uint8[] memory t) { t = new uint8[](arr.length); for (uint256 i = 0; i < t.length; i++) { t[i] = uint8(arr[i]); } } function uint32s(uint256[] memory arr) internal pure returns (uint32[] memory t) { t = new uint32[](arr.length); for (uint256 i = 0; i < t.length; i++) { t[i] = uint32(arr[i]); } } function uint64s(uint256[] memory arr) internal pure returns (uint64[] memory t) { t = new uint64[](arr.length); for (uint256 i = 0; i < t.length; i++) { t[i] = uint64(arr[i]); } } function bools(uint256[] memory arr) internal pure returns (bool[] memory t) { t = new bool[](arr.length); for (uint256 i = 0; i < t.length; i++) { t[i] = arr[i] != 0; } } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; abstract contract Pauser is Ownable, Pausable { mapping(address => bool) public pausers; event PauserAdded(address account); event PauserRemoved(address account); constructor() { _addPauser(msg.sender); } modifier onlyPauser() { require(isPauser(msg.sender), "Caller is not pauser"); _; } function pause() public onlyPauser { _pause(); } function unpause() public onlyPauser { _unpause(); } function isPauser(address account) public view returns (bool) { return pausers[account]; } function addPauser(address account) public onlyOwner { _addPauser(account); } function removePauser(address account) public onlyOwner { _removePauser(account); } function renouncePauser() public { _removePauser(msg.sender); } function _addPauser(address account) private { require(!isPauser(account), "Account is already pauser"); pausers[account] = true; emit PauserAdded(account); } function _removePauser(address account) private { require(isPauser(account), "Account is not pauser"); pausers[account] = false; emit PauserRemoved(account); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; import "./Governor.sol"; abstract contract VolumeControl is Governor { uint256 public epochLength; // seconds mapping(address => uint256) public epochVolumes; // key is token mapping(address => uint256) public epochVolumeCaps; // key is token mapping(address => uint256) public lastOpTimestamps; // key is token event EpochLengthUpdated(uint256 length); event EpochVolumeUpdated(address token, uint256 cap); function setEpochLength(uint256 _length) external onlyGovernor { epochLength = _length; emit EpochLengthUpdated(_length); } function setEpochVolumeCaps(address[] calldata _tokens, uint256[] calldata _caps) external onlyGovernor { require(_tokens.length == _caps.length, "length mismatch"); for (uint256 i = 0; i < _tokens.length; i++) { epochVolumeCaps[_tokens[i]] = _caps[i]; emit EpochVolumeUpdated(_tokens[i], _caps[i]); } } function _updateVolume(address _token, uint256 _amount) internal { if (epochLength == 0) { return; } uint256 cap = epochVolumeCaps[_token]; if (cap == 0) { return; } uint256 volume = epochVolumes[_token]; uint256 timestamp = block.timestamp; uint256 epochStartTime = (timestamp / epochLength) * epochLength; if (lastOpTimestamps[_token] < epochStartTime) { volume = _amount; } else { volume += _amount; } require(volume <= cap, "volume exceeds cap"); epochVolumes[_token] = volume; lastOpTimestamps[_token] = timestamp; } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; abstract contract Governor is Ownable { mapping(address => bool) public governors; event GovernorAdded(address account); event GovernorRemoved(address account); modifier onlyGovernor() { require(isGovernor(msg.sender), "Caller is not governor"); _; } constructor() { _addGovernor(msg.sender); } function isGovernor(address _account) public view returns (bool) { return governors[_account]; } function addGovernor(address _account) public onlyOwner { _addGovernor(_account); } function removeGovernor(address _account) public onlyOwner { _removeGovernor(_account); } function renounceGovernor() public { _removeGovernor(msg.sender); } function _addGovernor(address _account) private { require(!isGovernor(_account), "Account is already governor"); governors[_account] = true; emit GovernorAdded(_account); } function _removeGovernor(address _account) private { require(isGovernor(_account), "Account is not governor"); governors[_account] = false; emit GovernorRemoved(_account); } }
// SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.9; import "./Governor.sol"; abstract contract DelayedTransfer is Governor { struct delayedTransfer { address receiver; address token; uint256 amount; uint256 timestamp; } mapping(bytes32 => delayedTransfer) public delayedTransfers; mapping(address => uint256) public delayThresholds; uint256 public delayPeriod; // in seconds event DelayedTransferAdded(bytes32 id); event DelayedTransferExecuted(bytes32 id, address receiver, address token, uint256 amount); event DelayPeriodUpdated(uint256 period); event DelayThresholdUpdated(address token, uint256 threshold); function setDelayThresholds(address[] calldata _tokens, uint256[] calldata _thresholds) external onlyGovernor { require(_tokens.length == _thresholds.length, "length mismatch"); for (uint256 i = 0; i < _tokens.length; i++) { delayThresholds[_tokens[i]] = _thresholds[i]; emit DelayThresholdUpdated(_tokens[i], _thresholds[i]); } } function setDelayPeriod(uint256 _period) external onlyGovernor { delayPeriod = _period; emit DelayPeriodUpdated(_period); } function _addDelayedTransfer( bytes32 id, address receiver, address token, uint256 amount ) internal { require(delayedTransfers[id].timestamp == 0, "delayed transfer already exists"); delayedTransfers[id] = delayedTransfer({ receiver: receiver, token: token, amount: amount, timestamp: block.timestamp }); emit DelayedTransferAdded(id); } // caller needs to do the actual token transfer function _executeDelayedTransfer(bytes32 id) internal returns (delayedTransfer memory) { delayedTransfer memory transfer = delayedTransfers[id]; require(transfer.timestamp > 0, "delayed transfer not exist"); require(block.timestamp > transfer.timestamp + delayPeriod, "delayed transfer still locked"); delete delayedTransfers[id]; emit DelayedTransferExecuted(id, transfer.receiver, transfer.token, transfer.amount); return transfer; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
{ "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 800 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
[{"inputs":[{"internalType":"contract ISigsVerifier","name":"_sigsVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"burnId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"withdrawAccount","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"period","type":"uint256"}],"name":"DelayPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"DelayThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"DelayedTransferAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DelayedTransferExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"length","type":"uint256"}],"name":"EpochLengthUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"cap","type":"uint256"}],"name":"EpochVolumeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"GovernorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"GovernorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MaxBurnUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MinBurnUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"mintId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"refChainId","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"refId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"depositor","type":"address"}],"name":"Mint","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"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addPauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_withdrawAccount","type":"address"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delayPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delayThresholds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"delayedTransfers","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"epochVolumeCaps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"epochVolumes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"executeDelayedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"governors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPauser","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastOpTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_request","type":"bytes"},{"internalType":"bytes[]","name":"_sigs","type":"bytes[]"},{"internalType":"address[]","name":"_signers","type":"address[]"},{"internalType":"uint256[]","name":"_powers","type":"uint256[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"address","name":"","type":"address"}],"name":"pausers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"records","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setDelayPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_thresholds","type":"uint256[]"}],"name":"setDelayThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_length","type":"uint256"}],"name":"setEpochLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_caps","type":"uint256[]"}],"name":"setEpochVolumeCaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMaxBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"setMinBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sigsVerifier","outputs":[{"internalType":"contract ISigsVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162002d8b38038062002d8b83398101604081905262000034916200024f565b6200003f3362000074565b6000805460ff60a01b191690556200005733620000c4565b62000062336200018f565b6001600160a01b031660805262000281565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811660009081526001602052604090205460ff1615620001335760405162461bcd60e51b815260206004820152601960248201527f4163636f756e7420697320616c7265616479207061757365720000000000000060448201526064015b60405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f891015b60405180910390a150565b6001600160a01b03811660009081526002602052604090205460ff1615620001fa5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920676f7665726e6f72000000000060448201526064016200012a565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527fdc5a48d79e2e147530ff63ecdbed5a5a66adb9d5cf339384d5d076da197c40b5910162000184565b6000602082840312156200026257600080fd5b81516001600160a01b03811681146200027a57600080fd5b9392505050565b608051612ae7620002a46000396000818161051e01526114160152612ae76000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806382dc1ec411610145578063de790c7e116100bd578063eecdac881161008c578063f832138311610071578063f8321383146105d0578063f8734302146105f0578063f9a8ea081461060357600080fd5b8063eecdac88146105aa578063f2fde38b146105bd57600080fd5b8063de790c7e14610540578063e026049c14610553578063e3eece261461055b578063e43581b81461057e57600080fd5b8063adc0d57f11610114578063b5f2bc47116100f9578063b5f2bc47146104e6578063bf4816f014610506578063ccf2683b1461051957600080fd5b8063adc0d57f14610470578063b1c94d94146104dd57600080fd5b806382dc1ec41461041d5780638456cb59146104305780638da5cb5b146104385780639e25fc5c1461045d57600080fd5b806354eea796116101d85780636b2c0f55116101a7578063715018a61161018c578063715018a6146103d25780637f856013146103da57806380f51c12146103fa57600080fd5b80636b2c0f55146103b75780636ef8d66d146103ca57600080fd5b806354eea7961461036957806357d775f81461037c5780635c975abb1461038557806360216b001461039757600080fd5b80633f4ba83a1161022f57806347b16c6c1161021457806347b16c6c14610308578063497bf3b21461031b57806352532faa1461034957600080fd5b80633f4ba83a146102d457806346fbf68e146102dc57600080fd5b806301e647251461026157806317bdbae5146102995780633c4a25d0146102ae5780633d572107146102c1575b600080fd5b61028461026f36600461256e565b600a6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102ac6102a73660046125d3565b610616565b005b6102ac6102bc36600461265b565b6107b9565b6102ac6102cf36600461256e565b61081f565b6102ac6108b3565b6102846102ea36600461265b565b6001600160a01b031660009081526001602052604090205460ff1690565b6102ac6103163660046125d3565b61091c565b61033b61032936600461265b565b600c6020526000908152604090205481565b604051908152602001610290565b61033b61035736600461265b565b60086020526000908152604090205481565b6102ac61037736600461256e565b610ab3565b61033b60035481565b600054600160a01b900460ff16610284565b61033b6103a536600461265b565b60046020526000908152604090205481565b6102ac6103c536600461265b565b610b40565b6102ac610ba3565b6102ac610bac565b61033b6103e836600461265b565b600b6020526000908152604090205481565b61028461040836600461265b565b60016020526000908152604090205460ff1681565b6102ac61042b36600461265b565b610c10565b6102ac610c73565b6000546001600160a01b03165b6040516001600160a01b039091168152602001610290565b6102ac61046b36600461256e565b610cda565b6104b261047e36600461256e565b60076020526000908152604090208054600182015460028301546003909301546001600160a01b0392831693919092169184565b604080516001600160a01b039586168152949093166020850152918301526060820152608001610290565b61033b60095481565b61033b6104f436600461265b565b60056020526000908152604090205481565b6102ac6105143660046125d3565b610da7565b6104457f000000000000000000000000000000000000000000000000000000000000000081565b6102ac61054e36600461267d565b610f3e565b6102ac611227565b61028461056936600461265b565b60026020526000908152604090205460ff1681565b61028461058c36600461265b565b6001600160a01b031660009081526002602052604090205460ff1690565b6102ac6105b836600461265b565b611230565b6102ac6105cb36600461265b565b611293565b61033b6105de36600461265b565b60066020526000908152604090205481565b6102ac6105fe3660046126d9565b611372565b6102ac6106113660046125d3565b61177b565b3360009081526002602052604090205460ff166106735760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b60448201526064015b60405180910390fd5b8281146106b45760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b604482015260640161066a565b60005b838110156107b2578282828181106106d1576106d16127c8565b90506020020135600860008787858181106106ee576106ee6127c8565b9050602002016020810190610703919061265b565b6001600160a01b031681526020810191909152604001600020557fceaad6533bfb481492fb3e08ef19297f46611b8fa9de5ef4cf8dc23a56ad09ce858583818110610750576107506127c8565b9050602002016020810190610765919061265b565b848484818110610777576107776127c8565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a1806107aa816127f4565b9150506106b7565b5050505050565b6000546001600160a01b031633146108135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066a565b61081c81611912565b50565b3360009081526002602052604090205460ff166108775760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b604482015260640161066a565b60098190556040518181527fc0a39f234199b125fb93713c4d067bdcebbf691087f87b79c0feb92b156ba8b6906020015b60405180910390a150565b3360009081526001602052604090205460ff166109125760405162461bcd60e51b815260206004820152601460248201527f43616c6c6572206973206e6f7420706175736572000000000000000000000000604482015260640161066a565b61091a6119cf565b565b3360009081526002602052604090205460ff166109745760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b604482015260640161066a565b8281146109b55760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b604482015260640161066a565b60005b838110156107b2578282828181106109d2576109d26127c8565b90506020020135600560008787858181106109ef576109ef6127c8565b9050602002016020810190610a04919061265b565b6001600160a01b031681526020810191909152604001600020557f608e49c22994f20b5d3496dca088b88dfd81b4a3e8cc3809ea1e10a320107e89858583818110610a5157610a516127c8565b9050602002016020810190610a66919061265b565b848484818110610a7857610a786127c8565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a180610aab816127f4565b9150506109b8565b3360009081526002602052604090205460ff16610b0b5760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b604482015260640161066a565b60038190556040518181527f2664fec2ff76486ac58ed087310855b648b15b9d19f3de8529e95f7c46b7d6b3906020016108a8565b6000546001600160a01b03163314610b9a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066a565b61081c81611a75565b61091a33611a75565b6000546001600160a01b03163314610c065760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066a565b61091a6000611b2e565b6000546001600160a01b03163314610c6a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066a565b61081c81611b8b565b3360009081526001602052604090205460ff16610cd25760405162461bcd60e51b815260206004820152601460248201527f43616c6c6572206973206e6f7420706175736572000000000000000000000000604482015260640161066a565b61091a611c49565b600054600160a01b900460ff1615610d275760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161066a565b6000610d3282611cd1565b6020810151815160408084015190516340c10f1960e01b81526001600160a01b039283166004820152602481019190915292935016906340c10f1990604401600060405180830381600087803b158015610d8b57600080fd5b505af1158015610d9f573d6000803e3d6000fd5b505050505050565b3360009081526002602052604090205460ff16610dff5760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b604482015260640161066a565b828114610e405760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b604482015260640161066a565b60005b838110156107b257828282818110610e5d57610e5d6127c8565b90506020020135600b6000878785818110610e7a57610e7a6127c8565b9050602002016020810190610e8f919061265b565b6001600160a01b031681526020810191909152604001600020557f3796cd0b17a8734f8da819920625598e9a18be490f686725282e5383f1d06683858583818110610edc57610edc6127c8565b9050602002016020810190610ef1919061265b565b848484818110610f0357610f036127c8565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a180610f36816127f4565b915050610e43565b600054600160a01b900460ff1615610f8b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161066a565b6001600160a01b0384166000908152600b60205260409020548311610ff25760405162461bcd60e51b815260206004820152601060248201527f616d6f756e7420746f6f20736d616c6c00000000000000000000000000000000604482015260640161066a565b6001600160a01b0384166000908152600c6020526040902054158061102f57506001600160a01b0384166000908152600c60205260409020548311155b61107b5760405162461bcd60e51b815260206004820152601060248201527f616d6f756e7420746f6f206c6172676500000000000000000000000000000000604482015260640161066a565b6040516bffffffffffffffffffffffff1933606090811b8216602084015286811b821660348401526048830186905284901b16606882015277ffffffffffffffffffffffffffffffffffffffffffffffff1960c083811b8216607c84015246901b166084820152600090608c0160408051601f1981840301815291815281516020928301206000818152600a90935291205490915060ff16156111505760405162461bcd60e51b815260206004820152600d60248201526c7265636f72642065786973747360981b604482015260640161066a565b6000818152600a602052604090819020805460ff1916600117905551632770a7eb60e21b8152336004820152602481018590526001600160a01b03861690639dc29fac90604401600060405180830381600087803b1580156111b157600080fd5b505af11580156111c5573d6000803e3d6000fd5b5050604080518481526001600160a01b0389811660208301523382840152606082018990528716608082015290517f75f1bf55bb1de41b63a775dc7d4500f01114ee62b688a6b11d34f4692c1f3d4393509081900360a0019150a15050505050565b61091a33611ea3565b6000546001600160a01b0316331461128a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066a565b61081c81611ea3565b6000546001600160a01b031633146112ed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161066a565b6001600160a01b0381166113695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161066a565b61081c81611b2e565b600054600160a01b900460ff16156113bf5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161066a565b600046306040516020016113fc92919091825260601b6bffffffffffffffffffffffff1916602082015263135a5b9d60e21b603482015260380190565b6040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663682dbc22828b8b6040516020016114589392919061280f565b6040516020818303038152906040528989898989896040518863ffffffff1660e01b815260040161148f9796959493929190612979565b60006040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b5050505060006115008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f5c92505050565b6020818101518251604080850151606080870151608088015160a0890151855197841b6bffffffffffffffffffffffff19908116898b015296841b871660348901526048880194909452911b909316606885015260c09290921b77ffffffffffffffffffffffffffffffffffffffffffffffff1916607c8401526084808401929092528051808403909201825260a490920182528051908301206000818152600a9093529120549192509060ff16156115eb5760405162461bcd60e51b815260206004820152600d60248201526c7265636f72642065786973747360981b604482015260640161066a565b6000818152600a602052604090819020805460ff1916600117905582519083015161161691906120be565b81516001600160a01b031660009081526008602052604090205480158015906116425750808360400151115b156116645761165f828460200151856000015186604001516121d6565b6116d4565b8251602084015160408086015190516340c10f1960e01b81526001600160a01b03928316600482015260248101919091529116906340c10f1990604401600060405180830381600087803b1580156116bb57600080fd5b505af11580156116cf573d6000803e3d6000fd5b505050505b7f5bc84ecccfced5bb04bfc7f3efcdbe7f5cd21949ef146811b4d1967fe41f777a8284600001518560200151866040015187608001518860a00151896060015160405161176597969594939291909687526001600160a01b0395861660208801529385166040870152606086019290925267ffffffffffffffff16608085015260a08401521660c082015260e00190565b60405180910390a1505050505050505050505050565b3360009081526002602052604090205460ff166117d35760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1033b7bb32b93737b960511b604482015260640161066a565b8281146118145760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b604482015260640161066a565b60005b838110156107b257828282818110611831576118316127c8565b90506020020135600c600087878581811061184e5761184e6127c8565b9050602002016020810190611863919061265b565b6001600160a01b031681526020810191909152604001600020557fa3181379f6db47d9037efc6b6e8e3efe8c55ddb090b4f0512c152f97c4e47da58585838181106118b0576118b06127c8565b90506020020160208101906118c5919061265b565b8484848181106118d7576118d76127c8565b604080516001600160a01b0390951685526020918202939093013590840152500160405180910390a18061190a816127f4565b915050611817565b6001600160a01b03811660009081526002602052604090205460ff161561197b5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920676f7665726e6f720000000000604482015260640161066a565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600117905590519182527fdc5a48d79e2e147530ff63ecdbed5a5a66adb9d5cf339384d5d076da197c40b591016108a8565b600054600160a01b900460ff16611a285760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161066a565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03811660009081526001602052604090205460ff16611add5760405162461bcd60e51b815260206004820152601560248201527f4163636f756e74206973206e6f74207061757365720000000000000000000000604482015260640161066a565b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e91016108a8565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811660009081526001602052604090205460ff1615611bf45760405162461bcd60e51b815260206004820152601960248201527f4163636f756e7420697320616c72656164792070617573657200000000000000604482015260640161066a565b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f891016108a8565b600054600160a01b900460ff1615611c965760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161066a565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611a583390565b604080516080810182526000808252602082018190529181018290526060810191909152600082815260076020908152604091829020825160808101845281546001600160a01b0390811682526001830154169281019290925260028101549282019290925260039091015460608201819052611d905760405162461bcd60e51b815260206004820152601a60248201527f64656c61796564207472616e73666572206e6f74206578697374000000000000604482015260640161066a565b6009548160600151611da29190612a15565b4211611df05760405162461bcd60e51b815260206004820152601d60248201527f64656c61796564207472616e73666572207374696c6c206c6f636b6564000000604482015260640161066a565b6000838152600760209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168255600182018054909116905560028101849055600301929092558251908301518383015192517f3b40e5089937425d14cdd96947e5661868357e224af59bd8b24a4b8a330d442693611e9593889390929091909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a192915050565b6001600160a01b03811660009081526002602052604090205460ff16611f0b5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f7420676f7665726e6f72000000000000000000604482015260640161066a565b6001600160a01b038116600081815260026020908152604091829020805460ff1916905590519182527f1ebe834e73d60a5fec822c1e1727d34bc79f2ad977ed504581cc1822fe20fb5b91016108a8565b6040805160c08101825260008082526020808301829052828401829052606083018290526080830182905260a0830182905283518085019094528184528301849052909190805b602083015151835110156120b657611fba836122f6565b90925090508160011415611fe957611fd9611fd484612330565b6123ed565b6001600160a01b03168452611fa3565b816002141561201157611ffe611fd484612330565b6001600160a01b03166020850152611fa3565b81600314156120355761202b61202684612330565b6123fe565b6040850152611fa3565b816004141561205d5761204a611fd484612330565b6001600160a01b03166060850152611fa3565b81600514156120835761206f83612435565b67ffffffffffffffff166080850152611fa3565b81600614156120a75761209d61209884612330565b6124b7565b60a0850152611fa3565b6120b183826124cf565b611fa3565b505050919050565b6003546120c9575050565b6001600160a01b038216600090815260056020526040902054806120ec57505050565b6001600160a01b038316600090815260046020526040812054600354909142916121168184612a2d565b6121209190612a4f565b6001600160a01b03871660009081526006602052604090205490915081111561214b57849250612158565b6121558584612a15565b92505b838311156121a85760405162461bcd60e51b815260206004820152601260248201527f766f6c756d652065786365656473206361700000000000000000000000000000604482015260640161066a565b506001600160a01b039094166000908152600460209081526040808320939093556006905220929092555050565b600084815260076020526040902060030154156122355760405162461bcd60e51b815260206004820152601f60248201527f64656c61796564207472616e7366657220616c72656164792065786973747300604482015260640161066a565b604080516080810182526001600160a01b0380861682528481166020808401918252838501868152426060860190815260008b81526007909352918690209451855490851673ffffffffffffffffffffffffffffffffffffffff1991821617865592516001860180549190951693169290921790925551600283015551600390910155517fcbcfffe5102114216a85d3aceb14ad4b81a3935b1b5c468fadf3889eb9c5dce6906122e89086815260200190565b60405180910390a150505050565b600080600061230484612435565b9050612311600882612a2d565b925080600716600581111561232857612328612a6e565b915050915091565b6060600061233d83612435565b905060008184600001516123519190612a15565b905083602001515181111561236557600080fd5b8167ffffffffffffffff81111561237e5761237e612a84565b6040519080825280601f01601f1916602001820160405280156123a8576020820181803683370190505b50602080860151865192955091818601919083010160005b858110156123e25781810151838201526123db602082612a15565b90506123c0565b505050935250919050565b60006123f882612546565b92915050565b600060208251111561240f57600080fd5b60208201519050815160206124249190612a9a565b61242f906008612a4f565b1c919050565b602080820151825181019091015160009182805b600a8110156124b15783811a9150612462816007612a4f565b82607f16901b85179450816080166000141561249f57612483816001612a15565b86518790612492908390612a15565b9052509395945050505050565b806124a9816127f4565b915050612449565b50600080fd5b600081516020146124c757600080fd5b506020015190565b60008160058111156124e3576124e3612a6e565b14156124f7576124f282612435565b505050565b600281600581111561250b5761250b612a6e565b141561025c57600061251c83612435565b905080836000018181516125309190612a15565b905250602083015151835111156124f257600080fd5b6000815160141461255657600080fd5b50602001516c01000000000000000000000000900490565b60006020828403121561258057600080fd5b5035919050565b60008083601f84011261259957600080fd5b50813567ffffffffffffffff8111156125b157600080fd5b6020830191508360208260051b85010111156125cc57600080fd5b9250929050565b600080600080604085870312156125e957600080fd5b843567ffffffffffffffff8082111561260157600080fd5b61260d88838901612587565b9096509450602087013591508082111561262657600080fd5b5061263387828801612587565b95989497509550505050565b80356001600160a01b038116811461265657600080fd5b919050565b60006020828403121561266d57600080fd5b6126768261263f565b9392505050565b6000806000806080858703121561269357600080fd5b61269c8561263f565b9350602085013592506126b16040860161263f565b9150606085013567ffffffffffffffff811681146126ce57600080fd5b939692955090935050565b6000806000806000806000806080898b0312156126f557600080fd5b883567ffffffffffffffff8082111561270d57600080fd5b818b0191508b601f83011261272157600080fd5b81358181111561273057600080fd5b8c602082850101111561274257600080fd5b60209283019a509850908a0135908082111561275d57600080fd5b6127698c838d01612587565b909850965060408b013591508082111561278257600080fd5b61278e8c838d01612587565b909650945060608b01359150808211156127a757600080fd5b506127b48b828c01612587565b999c989b5096995094979396929594505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612808576128086127de565b5060010190565b838152818360208301376000910160200190815292915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006020808501808196508560051b810191508460005b878110156128d65782840389528135601e1988360301811261288d57600080fd5b8701803567ffffffffffffffff8111156128a657600080fd5b8036038913156128b557600080fd5b6128c28682898501612829565b9a87019a955050509084019060010161286c565b5091979650505050505050565b8183526000602080850194508260005b8581101561291f576001600160a01b0361290c8361263f565b16875295820195908201906001016128f3565b509495945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561295c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b608081526000885180608084015260005b818110156129a7576020818c0181015160a086840101520161298a565b818111156129b957600060a083860101525b50601f01601f1916820182810360a090810160208501526129dd908201898b612852565b905082810360408401526129f28187896128e3565b90508281036060840152612a0781858761292a565b9a9950505050505050505050565b60008219821115612a2857612a286127de565b500190565b600082612a4a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612a6957612a696127de565b500290565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600082821015612aac57612aac6127de565b50039056fea264697066735822122021bb7eb35bc3e977755db3c819a9902e690116a382dddf799bfcd1e76af718ae64736f6c63430008090033000000000000000000000000841ce48f9446c8e281d3f1444cb859b4a6d0738c
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000841ce48f9446c8e281d3f1444cb859b4a6d0738c
-----Decoded View---------------
Arg [0] : _sigsVerifier (address): 0x841ce48f9446c8e281d3f1444cb859b4a6d0738c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000841ce48f9446c8e281d3f1444cb859b4a6d0738c
Deployed ByteCode Sourcemap
446:4918:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;571:39;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;364:14:12;;357:22;339:41;;327:2;312:18;571:39:4;;;;;;;;702:382:5;;;;;;:::i;:::-;;:::i;:::-;;589:95:6;;;;;;:::i;:::-;;:::i;1090:143:5:-;;;;;;:::i;:::-;;:::i;591:64:7:-;;;:::i;661:102::-;;;;;;:::i;:::-;-1:-1:-1;;;;;740:16:7;717:4;740:16;;;:7;:16;;;;;;;;;661:102;654:355:8;;;;;;:::i;:::-;;:::i;665:42:4:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2264:25:12;;;2252:2;2237:18;665:42:4;2118:177:12;344:50:5;;;;;;:::i;:::-;;;;;;;;;;;;;;505:143:8;;;;;;:::i;:::-;;:::i;142:26::-;;;;;;1041:84:10;1088:4;1111:7;-1:-1:-1;;;1111:7:10;;;;1041:84;;185:47:8;;;;;;:::i;:::-;;;;;;;;;;;;;;864:95:7;;;;;;:::i;:::-;;:::i;965:75::-;;;:::i;1605:92:9:-;;;:::i;617:42:4:-;;;;;;:::i;:::-;;;;;;;;;;;;;;228:39:7;;;;;;:::i;:::-;;;;;;;;;;;;;;;;769:89;;;;;;:::i;:::-;;:::i;525:60::-;;;:::i;973:85:9:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:9;973:85;;;-1:-1:-1;;;;;2464:55:12;;;2446:74;;2434:2;2419:18;973:85:9;2300:226:12;4432:224:4;;;;;;:::i;:::-;;:::i;279:59:5:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;279:59:5;;;;;;;;;;;;;;;-1:-1:-1;;;;;2841:15:12;;;2823:34;;2893:15;;;;2888:2;2873:18;;2866:43;2925:18;;;2918:34;2983:2;2968:18;;2961:34;2749:3;2734:19;279:59:5;2531:470:12;400:26:5;;;;;;254:50:8;;;;;;:::i;:::-;;;;;;;;;;;;;;4662:347:4;;;;;;:::i;:::-;;:::i;521:43::-;;;;;3688:738;;;;;;:::i;:::-;;:::i;797:79:6:-;;;:::i;164:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;475:108;;;;;;:::i;:::-;-1:-1:-1;;;;;557:19:6;534:4;557:19;;;:9;:19;;;;;;;;;475:108;690:101;;;;;;:::i;:::-;;:::i;1846:189:9:-;;;;;;:::i;:::-;;:::i;326:51:8:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1680:1482:4;;;;;;:::i;:::-;;:::i;5015:347::-;;;;;;:::i;:::-;;:::i;702:382:5:-;352:10:6;534:4;557:19;;;:9;:19;;;;;;;;333:57;;;;-1:-1:-1;;;333:57:6;;5524:2:12;333:57:6;;;5506:21:12;5563:2;5543:18;;;5536:30;-1:-1:-1;;;5582:18:12;;;5575:52;5644:18;;333:57:6;;;;;;;;;830:36:5;;::::1;822:64;;;::::0;-1:-1:-1;;;822:64:5;;5875:2:12;822:64:5::1;::::0;::::1;5857:21:12::0;5914:2;5894:18;;;5887:30;-1:-1:-1;;;5933:18:12;;;5926:45;5988:18;;822:64:5::1;5673:339:12::0;822:64:5::1;901:9;896:182;916:18:::0;;::::1;896:182;;;985:11;;997:1;985:14;;;;;;;:::i;:::-;;;;;;;955:15;:27;971:7;;979:1;971:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;955:27:5::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;955:27:5;:44;1018:49:::1;1040:7:::0;;1048:1;1040:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1052:11;;1064:1;1052:14;;;;;;;:::i;:::-;1018:49;::::0;;-1:-1:-1;;;;;6341:55:12;;;6323:74;;1052:14:5::1;::::0;;::::1;::::0;;;::::1;;6413:18:12::0;;;6406:34;-1:-1:-1;6296:18:12;1018:49:5::1;;;;;;;936:3:::0;::::1;::::0;::::1;:::i;:::-;;;;896:182;;;;702:382:::0;;;;:::o;589:95:6:-;1019:7:9;1045:6;-1:-1:-1;;;;;1045:6:9;665:10:11;1185:23:9;1177:68;;;;-1:-1:-1;;;1177:68:9;;6925:2:12;1177:68:9;;;6907:21:12;;;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;7055:18;;1177:68:9;6723:356:12;1177:68:9;655:22:6::1;668:8;655:12;:22::i;:::-;589:95:::0;:::o;1090:143:5:-;352:10:6;534:4;557:19;;;:9;:19;;;;;;;;333:57;;;;-1:-1:-1;;;333:57:6;;5524:2:12;333:57:6;;;5506:21:12;5563:2;5543:18;;;5536:30;-1:-1:-1;;;5582:18:12;;;5575:52;5644:18;;333:57:6;5322:346:12;333:57:6;1163:11:5::1;:21:::0;;;1199:27:::1;::::0;2264:25:12;;;1199:27:5::1;::::0;2252:2:12;2237:18;1199:27:5::1;;;;;;;;1090:143:::0;:::o;591:64:7:-;465:10;717:4;740:16;;;:7;:16;;;;;;;;448:53;;;;-1:-1:-1;;;448:53:7;;7286:2:12;448:53:7;;;7268:21:12;7325:2;7305:18;;;7298:30;7364:22;7344:18;;;7337:50;7404:18;;448:53:7;7084:344:12;448:53:7;638:10:::1;:8;:10::i;:::-;591:64::o:0;654:355:8:-;352:10:6;534:4;557:19;;;:9;:19;;;;;;;;333:57;;;;-1:-1:-1;;;333:57:6;;5524:2:12;333:57:6;;;5506:21:12;5563:2;5543:18;;;5536:30;-1:-1:-1;;;5582:18:12;;;5575:52;5644:18;;333:57:6;5322:346:12;333:57:6;776:30:8;;::::1;768:58;;;::::0;-1:-1:-1;;;768:58:8;;5875:2:12;768:58:8::1;::::0;::::1;5857:21:12::0;5914:2;5894:18;;;5887:30;-1:-1:-1;;;5933:18:12;;;5926:45;5988:18;;768:58:8::1;5673:339:12::0;768:58:8::1;841:9;836:167;856:18:::0;;::::1;836:167;;;925:5;;931:1;925:8;;;;;;;:::i;:::-;;;;;;;895:15;:27;911:7;;919:1;911:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;895:27:8::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;895:27:8;:38;952:40:::1;971:7:::0;;979:1;971:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;983:5;;989:1;983:8;;;;;;;:::i;:::-;952:40;::::0;;-1:-1:-1;;;;;6341:55:12;;;6323:74;;983:8:8::1;::::0;;::::1;::::0;;;::::1;;6413:18:12::0;;;6406:34;-1:-1:-1;6296:18:12;952:40:8::1;;;;;;;876:3:::0;::::1;::::0;::::1;:::i;:::-;;;;836:167;;505:143:::0;352:10:6;534:4;557:19;;;:9;:19;;;;;;;;333:57;;;;-1:-1:-1;;;333:57:6;;5524:2:12;333:57:6;;;5506:21:12;5563:2;5543:18;;;5536:30;-1:-1:-1;;;5582:18:12;;;5575:52;5644:18;;333:57:6;5322:346:12;333:57:6;578:11:8::1;:21:::0;;;614:27:::1;::::0;2264:25:12;;;614:27:8::1;::::0;2252:2:12;2237:18;614:27:8::1;2118:177:12::0;864:95:7;1019:7:9;1045:6;-1:-1:-1;;;;;1045:6:9;665:10:11;1185:23:9;1177:68;;;;-1:-1:-1;;;1177:68:9;;6925:2:12;1177:68:9;;;6907:21:12;;;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;7055:18;;1177:68:9;6723:356:12;1177:68:9;930:22:7::1;944:7;930:13;:22::i;965:75::-:0;1008:25;1022:10;1008:13;:25::i;1605:92:9:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:9;665:10:11;1185:23:9;1177:68;;;;-1:-1:-1;;;1177:68:9;;6925:2:12;1177:68:9;;;6907:21:12;;;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;7055:18;;1177:68:9;6723:356:12;1177:68:9;1669:21:::1;1687:1;1669:9;:21::i;769:89:7:-:0;1019:7:9;1045:6;-1:-1:-1;;;;;1045:6:9;665:10:11;1185:23:9;1177:68;;;;-1:-1:-1;;;1177:68:9;;6925:2:12;1177:68:9;;;6907:21:12;;;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;7055:18;;1177:68:9;6723:356:12;1177:68:9;832:19:7::1;843:7;832:10;:19::i;525:60::-:0;465:10;717:4;740:16;;;:7;:16;;;;;;;;448:53;;;;-1:-1:-1;;;448:53:7;;7286:2:12;448:53:7;;;7268:21:12;7325:2;7305:18;;;7298:30;7364:22;7344:18;;;7337:50;7404:18;;448:53:7;7084:344:12;448:53:7;570:8:::1;:6;:8::i;4432:224:4:-:0;1088:4:10;1111:7;-1:-1:-1;;;1111:7:10;;;;1354:9;1346:38;;;;-1:-1:-1;;;1346:38:10;;7635:2:12;1346:38:10;;;7617:21:12;7674:2;7654:18;;;7647:30;-1:-1:-1;;;7693:18:12;;;7686:46;7749:18;;1346:38:10;7433:340:12;1346:38:10;4509:31:4::1;4543:27;4567:2;4543:23;:27::i;:::-;4593:14;::::0;::::1;::::0;4614:17;;4633:15:::1;::::0;;::::1;::::0;4580:69;;-1:-1:-1;;;4580:69:4;;-1:-1:-1;;;;;6341:55:12;;;4580:69:4::1;::::0;::::1;6323:74:12::0;6413:18;;;6406:34;;;;4593:14:4;;-1:-1:-1;4580:33:4::1;::::0;::::1;::::0;6296:18:12;;4580:69:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4499:157;4432:224:::0;:::o;4662:347::-;352:10:6;534:4;557:19;;;:9;:19;;;;;;;;333:57;;;;-1:-1:-1;;;333:57:6;;5524:2:12;333:57:6;;;5506:21:12;5563:2;5543:18;;;5536:30;-1:-1:-1;;;5582:18:12;;;5575:52;5644:18;;333:57:6;5322:346:12;333:57:6;4779:33:4;;::::1;4771:61;;;::::0;-1:-1:-1;;;4771:61:4;;5875:2:12;4771:61:4::1;::::0;::::1;5857:21:12::0;5914:2;5894:18;;;5887:30;-1:-1:-1;;;5933:18:12;;;5926:45;5988:18;;4771:61:4::1;5673:339:12::0;4771:61:4::1;4847:9;4842:161;4862:18:::0;;::::1;4842:161;;;4923:8;;4932:1;4923:11;;;;;;;:::i;:::-;;;;;;;4901:7;:19;4909:7;;4917:1;4909:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4901:19:4::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;4901:19:4;:33;4953:39:::1;4968:7:::0;;4976:1;4968:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4980:8;;4989:1;4980:11;;;;;;;:::i;:::-;4953:39;::::0;;-1:-1:-1;;;;;6341:55:12;;;6323:74;;4980:11:4::1;::::0;;::::1;::::0;;;::::1;;6413:18:12::0;;;6406:34;-1:-1:-1;6296:18:12;4953:39:4::1;;;;;;;4882:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4842:161;;3688:738:::0;1088:4:10;1111:7;-1:-1:-1;;;1111:7:10;;;;1354:9;1346:38;;;;-1:-1:-1;;;1346:38:10;;7635:2:12;1346:38:10;;;7617:21:12;7674:2;7654:18;;;7647:30;-1:-1:-1;;;7693:18:12;;;7686:46;7749:18;;1346:38:10;7433:340:12;1346:38:10;-1:-1:-1;;;;;3865:15:4;::::1;;::::0;;;:7:::1;:15;::::0;;;;;3855:25;::::1;3847:54;;;::::0;-1:-1:-1;;;3847:54:4;;7980:2:12;3847:54:4::1;::::0;::::1;7962:21:12::0;8019:2;7999:18;;;7992:30;8058:18;8038;;;8031:46;8094:18;;3847:54:4::1;7778:340:12::0;3847:54:4::1;-1:-1:-1::0;;;;;3919:15:4;::::1;;::::0;;;:7:::1;:15;::::0;;;;;:20;;:50:::1;;-1:-1:-1::0;;;;;;3954:15:4;::::1;;::::0;;;:7:::1;:15;::::0;;;;;3943:26;::::1;;3919:50;3911:79;;;::::0;-1:-1:-1;;;3911:79:4;;8325:2:12;3911:79:4::1;::::0;::::1;8307:21:12::0;8364:2;8344:18;;;8337:30;8403:18;8383;;;8376:46;8439:18;;3911:79:4::1;8123:340:12::0;3911:79:4::1;4093:94;::::0;-1:-1:-1;;4110:10:4::1;8803:2:12::0;8799:15;;;8795:24;;4093:94:4::1;::::0;::::1;8783:37:12::0;8854:15;;;8850:24;;8836:12;;;8829:46;8891:12;;;8884:28;;;8946:15;;;8942:24;8928:12;;;8921:46;-1:-1:-1;;9090:3:12;9086:16;;;9082:25;;9068:12;;;9061:47;4172:13:4::1;9143:16:12::0;;9139:25;9124:13;;;9117:48;4000:14:4::1;::::0;9181:13:12;;4093:94:4::1;::::0;;-1:-1:-1;;4093:94:4;;::::1;::::0;;;;;;4017:180;;4093:94:::1;4017:180:::0;;::::1;::::0;4215:15:::1;::::0;;;:7:::1;:15:::0;;;;;;4017:180;;-1:-1:-1;4215:15:4::1;;:24;4207:50;;;::::0;-1:-1:-1;;;4207:50:4;;9407:2:12;4207:50:4::1;::::0;::::1;9389:21:12::0;9446:2;9426:18;;;9419:30;-1:-1:-1;;;9465:18:12;;;9458:43;9518:18;;4207:50:4::1;9205:337:12::0;4207:50:4::1;4267:15;::::0;;;:7:::1;:15;::::0;;;;;;:22;;-1:-1:-1;;4267:22:4::1;4285:4;4267:22;::::0;;4299:46;-1:-1:-1;;;4299:46:4;;4325:10:::1;4299:46;::::0;::::1;6323:74:12::0;6413:18;;;6406:34;;;-1:-1:-1;;;;;4299:25:4;::::1;::::0;::::1;::::0;6296:18:12;;4299:46:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4360:59:4::1;::::0;;9806:25:12;;;-1:-1:-1;;;;;9928:15:12;;;9923:2;9908:18;;9901:43;4381:10:4::1;9960:18:12::0;;;9953:43;10027:2;10012:18;;10005:34;;;10076:15;;10070:3;10055:19;;10048:44;4360:59:4;;::::1;::::0;-1:-1:-1;4360:59:4;;;;9793:3:12;4360:59:4;;-1:-1:-1;4360:59:4::1;3837:589;3688:738:::0;;;;:::o;797:79:6:-;842:27;858:10;842:15;:27::i;690:101::-;1019:7:9;1045:6;-1:-1:-1;;;;;1045:6:9;665:10:11;1185:23:9;1177:68;;;;-1:-1:-1;;;1177:68:9;;6925:2:12;1177:68:9;;;6907:21:12;;;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;7055:18;;1177:68:9;6723:356:12;1177:68:9;759:25:6::1;775:8;759:15;:25::i;1846:189:9:-:0;1019:7;1045:6;-1:-1:-1;;;;;1045:6:9;665:10:11;1185:23:9;1177:68;;;;-1:-1:-1;;;1177:68:9;;6925:2:12;1177:68:9;;;6907:21:12;;;6944:18;;;6937:30;7003:34;6983:18;;;6976:62;7055:18;;1177:68:9;6723:356:12;1177:68:9;-1:-1:-1;;;;;1934:22:9;::::1;1926:73;;;::::0;-1:-1:-1;;;1926:73:9;;10305:2:12;1926:73:9::1;::::0;::::1;10287:21:12::0;10344:2;10324:18;;;10317:30;10383:34;10363:18;;;10356:62;10454:8;10434:18;;;10427:36;10480:19;;1926:73:9::1;10103:402:12::0;1926:73:9::1;2009:19;2019:8;2009:9;:19::i;1680:1482:4:-:0;1088:4:10;1111:7;-1:-1:-1;;;1111:7:10;;;;1354:9;1346:38;;;;-1:-1:-1;;;1346:38:10;;7635:2:12;1346:38:10;;;7617:21:12;7674:2;7654:18;;;7647:30;-1:-1:-1;;;7693:18:12;;;7686:46;7749:18;;1346:38:10;7433:340:12;1346:38:10;1871:14:4::1;1915:13;1938:4;1898:54;;;;;;;;10768:19:12::0;;;10825:2;10821:15;-1:-1:-1;;10817:53:12;10812:2;10803:12;;10796:75;-1:-1:-1;;;10896:2:12;10887:12;;10880:28;10933:2;10924:12;;10510:432;1898:54:4::1;;;;;;;;;;;;;1888:65;;;;;;1871:82;;1963:12;-1:-1:-1::0;;;;;1963:23:4::1;;2004:6;2012:8;;1987:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2023:5;;2030:8;;2040:7;;1963:85;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2058:28;2089:26;2106:8;;2089:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;2089:16:4::1;::::0;-1:-1:-1;;;2089:26:4:i:1;:::-;2253:15;::::0;;::::1;::::0;2286:13;;2317:14:::1;::::0;;::::1;::::0;2349:17:::1;::::0;;::::1;::::0;2384:18:::1;::::0;::::1;::::0;2420:13:::1;::::0;::::1;::::0;2219:228;;15125:15:12;;;-1:-1:-1;;15121:24:12;;;2219:228:4;;::::1;15109:37:12::0;15180:15;;;15176:24;;15162:12;;;15155:46;15217:12;;;15210:28;;;;15272:15;;15268:24;;;15254:12;;;15247:46;15331:3;15327:16;;;;-1:-1:-1;;15323:89:12;15309:12;;;15302:111;15429:13;;;;15422:29;;;;2219:228:4;;;;;;;;;;15467:13:12;;;;2219:228:4;;2142:315;;;;::::1;::::0;-1:-1:-1;2475:15:4;;;:7:::1;:15:::0;;;;;;2253;;-1:-1:-1;2142:315:4;2475:15:::1;;:24;2467:50;;;::::0;-1:-1:-1;;;2467:50:4;;9407:2:12;2467:50:4::1;::::0;::::1;9389:21:12::0;9446:2;9426:18;;;9419:30;-1:-1:-1;;;9465:18:12;;;9458:43;9518:18;;2467:50:4::1;9205:337:12::0;2467:50:4::1;2527:15;::::0;;;:7:::1;:15;::::0;;;;;;:22;;-1:-1:-1;;2527:22:4::1;2545:4;2527:22;::::0;;2573:13;;2588:14;;::::1;::::0;2559:44:::1;::::0;2573:13;2559::::1;:44::i;:::-;2654:13:::0;;-1:-1:-1;;;;;2638:30:4::1;2613:22;2638:30:::0;;;:15:::1;:30;::::0;;;;;2682:18;;;;;:53:::1;;;2721:14;2704:7;:14;;;:31;2682:53;2678:255;;;2751:75;2771:6;2779:7;:15;;;2796:7;:13;;;2811:7;:14;;;2751:19;:75::i;:::-;2678:255;;;2870:13:::0;;2890:15:::1;::::0;::::1;::::0;2907:14:::1;::::0;;::::1;::::0;2857:65;;-1:-1:-1;;;2857:65:4;;-1:-1:-1;;;;;6341:55:12;;;2857:65:4::1;::::0;::::1;6323:74:12::0;6413:18;;;6406:34;;;;2857:32:4;::::1;::::0;::::1;::::0;6296:18:12;;2857:65:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2678:255;2947:208;2965:6;2985:7;:13;;;3012:7;:15;;;3041:7;:14;;;3069:7;:18;;;3101:7;:13;;;3128:7;:17;;;2947:208;;;;;;;;;;;15804:25:12::0;;;-1:-1:-1;;;;;15926:15:12;;;15921:2;15906:18;;15899:43;15978:15;;;15973:2;15958:18;;15951:43;16025:2;16010:18;;16003:34;;;;16086:18;16074:31;16068:3;16053:19;;16046:60;16137:3;16122:19;;16115:35;16187:15;16181:3;16166:19;;16159:44;15791:3;15776:19;;15491:718;2947:208:4::1;;;;;;;;1861:1301;;;;1680:1482:::0;;;;;;;;:::o;5015:347::-;352:10:6;534:4;557:19;;;:9;:19;;;;;;;;333:57;;;;-1:-1:-1;;;333:57:6;;5524:2:12;333:57:6;;;5506:21:12;5563:2;5543:18;;;5536:30;-1:-1:-1;;;5582:18:12;;;5575:52;5644:18;;333:57:6;5322:346:12;333:57:6;5132:33:4;;::::1;5124:61;;;::::0;-1:-1:-1;;;5124:61:4;;5875:2:12;5124:61:4::1;::::0;::::1;5857:21:12::0;5914:2;5894:18;;;5887:30;-1:-1:-1;;;5933:18:12;;;5926:45;5988:18;;5124:61:4::1;5673:339:12::0;5124:61:4::1;5200:9;5195:161;5215:18:::0;;::::1;5195:161;;;5276:8;;5285:1;5276:11;;;;;;;:::i;:::-;;;;;;;5254:7;:19;5262:7;;5270:1;5262:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5254:19:4::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;5254:19:4;:33;5306:39:::1;5321:7:::0;;5329:1;5321:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5333:8;;5342:1;5333:11;;;;;;;:::i;:::-;5306:39;::::0;;-1:-1:-1;;;;;6341:55:12;;;6323:74;;5333:11:4::1;::::0;;::::1;::::0;;;::::1;;6413:18:12::0;;;6406:34;-1:-1:-1;6296:18:12;5306:39:4::1;;;;;;;5235:3:::0;::::1;::::0;::::1;:::i;:::-;;;;5195:161;;882:200:6::0;-1:-1:-1;;;;;557:19:6;;534:4;557:19;;;:9;:19;;;;;;;;948:21;940:61;;;;-1:-1:-1;;;940:61:6;;16416:2:12;940:61:6;;;16398:21:12;16455:2;16435:18;;;16428:30;16494:29;16474:18;;;16467:57;16541:18;;940:61:6;16214:351:12;940:61:6;-1:-1:-1;;;;;1011:19:6;;;;;;:9;:19;;;;;;;;;:26;;-1:-1:-1;;1011:26:6;1033:4;1011:26;;;1052:23;;2446:74:12;;;1052:23:6;;2419:18:12;1052:23:6;2300:226:12;2053:117:10;1088:4;1111:7;-1:-1:-1;;;1111:7:10;;;;1612:41;;;;-1:-1:-1;;;1612:41:10;;16772:2:12;1612:41:10;;;16754:21:12;16811:2;16791:18;;;16784:30;16850:22;16830:18;;;16823:50;16890:18;;1612:41:10;16570:344:12;1612:41:10;2121:5:::1;2111:15:::0;;-1:-1:-1;;;;2111:15:10::1;::::0;;2141:22:::1;665:10:11::0;2150:12:10::1;2141:22;::::0;-1:-1:-1;;;;;2464:55:12;;;2446:74;;2434:2;2419:18;2141:22:10::1;;;;;;;2053:117::o:0;1238:187:7:-;-1:-1:-1;;;;;740:16:7;;717:4;740:16;;;:7;:16;;;;;;;;1296:51;;;;-1:-1:-1;;;1296:51:7;;17121:2:12;1296:51:7;;;17103:21:12;17160:2;17140:18;;;17133:30;17199:23;17179:18;;;17172:51;17240:18;;1296:51:7;16919:345:12;1296:51:7;-1:-1:-1;;;;;1357:16:7;;1376:5;1357:16;;;:7;:16;;;;;;;;;:24;;-1:-1:-1;;1357:24:7;;;1396:22;;2446:74:12;;;1396:22:7;;2419:18:12;1396:22:7;2300:226:12;2041:169:9;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:9;;;-1:-1:-1;;2131:17:9;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2086:124;2041:169;:::o;1046:186:7:-;-1:-1:-1;;;;;740:16:7;;717:4;740:16;;;:7;:16;;;;;;;;1109:18;1101:56;;;;-1:-1:-1;;;1101:56:7;;17471:2:12;1101:56:7;;;17453:21:12;17510:2;17490:18;;;17483:30;17549:27;17529:18;;;17522:55;17594:18;;1101:56:7;17269:349:12;1101:56:7;-1:-1:-1;;;;;1167:16:7;;;;;;1186:4;1167:16;;;;;;;;;:23;;-1:-1:-1;;1167:23:7;;;;;;;1205:20;;2446:74:12;;;1205:20:7;;2419:18:12;1205:20:7;2300:226:12;1806:115:10;1088:4;1111:7;-1:-1:-1;;;1111:7:10;;;;1354:9;1346:38;;;;-1:-1:-1;;;1346:38:10;;7635:2:12;1346:38:10;;;7617:21:12;7674:2;7654:18;;;7647:30;-1:-1:-1;;;7693:18:12;;;7686:46;7749:18;;1346:38:10;7433:340:12;1346:38:10;1865:7:::1;:14:::0;;-1:-1:-1;;;;1865:14:10::1;-1:-1:-1::0;;;1865:14:10::1;::::0;;1894:20:::1;1901:12;665:10:11::0;;586:96;1755:487:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:31:5;1886:20;;;:16;:20;;;;;;;;;1852:54;;;;;;;;;-1:-1:-1;;;;;1852:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:61;;;;-1:-1:-1;;;1916:61:5;;17825:2:12;1916:61:5;;;17807:21:12;17864:2;17844:18;;;17837:30;17903:28;17883:18;;;17876:56;17949:18;;1916:61:5;17623:350:12;1916:61:5;2034:11;;2013:8;:18;;;:32;;;;:::i;:::-;1995:15;:50;1987:92;;;;-1:-1:-1;;;1987:92:5;;18313:2:12;1987:92:5;;;18295:21:12;18352:2;18332:18;;;18325:30;18391:31;18371:18;;;18364:59;18440:18;;1987:92:5;18111:353:12;1987:92:5;2096:20;;;;:16;:20;;;;;;;;2089:27;;-1:-1:-1;;2089:27:5;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:17;;2178:14;;;;2194:15;;;;2131:79;;;;;;2113:2;;2159:17;;2178:14;;2194:15;18700:25:12;;;-1:-1:-1;;;;;18822:15:12;;;18817:2;18802:18;;18795:43;18874:15;;18869:2;18854:18;;18847:43;18921:2;18906:18;;18899:34;18687:3;18672:19;;18469:470;2131:79:5;;;;;;;;2227:8;1755:487;-1:-1:-1;;1755:487:5:o;1088:201:6:-;-1:-1:-1;;;;;557:19:6;;534:4;557:19;;;:9;:19;;;;;;;;1149:56;;;;-1:-1:-1;;;1149:56:6;;19146:2:12;1149:56:6;;;19128:21:12;19185:2;19165:18;;;19158:30;19224:25;19204:18;;;19197:53;19267:18;;1149:56:6;18944:347:12;1149:56:6;-1:-1:-1;;;;;1215:19:6;;1237:5;1215:19;;;:9;:19;;;;;;;;;:27;;-1:-1:-1;;1215:27:6;;;1257:25;;2446:74:12;;;1257:25:6;;2419:18:12;1257:25:6;2300:226:12;531:976:3;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:11:2;;;-1:-1:-1;;;;712:789:3;741:5:2;;;;:12;731:7;;:22;712:789:3;;;762:12;:3;:10;:12::i;:::-;748:26;;-1:-1:-1;748:26:3;-1:-1:-1;866:3:3;873:1;866:8;862:600;;;904:27;916:14;:3;:12;:14::i;:::-;904:11;:27::i;:::-;-1:-1:-1;;;;;894:37:3;;;712:789;;862:600;956:3;963:1;956:8;952:510;;;996:27;1008:14;:3;:12;:14::i;996:27::-;-1:-1:-1;;;;;984:39:3;:9;;;:39;712:789;;952:510;1048:3;1055:1;1048:8;1044:418;;;1087:27;1099:14;:3;:12;:14::i;:::-;1087:11;:27::i;:::-;1076:8;;;:38;712:789;;1044:418;1139:3;1146:1;1139:8;1135:327;;;1181:27;1193:14;:3;:12;:14::i;1181:27::-;-1:-1:-1;;;;;1167:41:3;:11;;;:41;712:789;;1135:327;1233:3;1240:1;1233:8;1229:233;;;1283:15;:3;:13;:15::i;:::-;1261:38;;:12;;;:38;712:789;;1229:233;1324:3;1331:1;1324:8;1320:142;;;1362:27;1374:14;:3;:12;:14::i;:::-;1362:11;:27::i;:::-;1352:7;;;:37;712:789;;1320:142;1428:19;:3;1442:4;1428:13;:19::i;:::-;712:789;;;604:903;;;531:976;;;:::o;1015:685:8:-;1094:11;;1090:53;;1015:685;;:::o;1090:53::-;-1:-1:-1;;;;;1166:23:8;;1152:11;1166:23;;;:15;:23;;;;;;1203:8;1199:45;;1227:7;1015:685;;:::o;1199:45::-;-1:-1:-1;;;;;1270:20:8;;1253:14;1270:20;;;:12;:20;;;;;;1398:11;;1270:20;;1320:15;;1371:23;1398:11;1320:15;1371:23;:::i;:::-;1370:39;;;;:::i;:::-;-1:-1:-1;;;;;1423:24:8;;;;;;:16;:24;;;;;;1345:64;;-1:-1:-1;1423:41:8;-1:-1:-1;1419:136:8;;;1489:7;1480:16;;1419:136;;;1527:17;1537:7;1527:17;;:::i;:::-;;;1419:136;1582:3;1572:6;:13;;1564:44;;;;-1:-1:-1;;;1564:44:8;;19893:2:12;1564:44:8;;;19875:21:12;19932:2;19912:18;;;19905:30;19971:20;19951:18;;;19944:48;20009:18;;1564:44:8;19691:342:12;1564:44:8;-1:-1:-1;;;;;;1618:20:8;;;;;;;:12;:20;;;;;;;;:29;;;;1657:16;:24;;;:36;;;;-1:-1:-1;;1015:685:8:o;1239:458:5:-;1394:20;;;;:16;:20;;;;;:30;;;:35;1386:79;;;;-1:-1:-1;;;1386:79:5;;20240:2:12;1386:79:5;;;20222:21:12;20279:2;20259:18;;;20252:30;20318:33;20298:18;;;20291:61;20369:18;;1386:79:5;20038:355:12;1386:79:5;1498:153;;;;;;;;-1:-1:-1;;;;;1498:153:5;;;;;;;;;;;;;;;;;;;;;1625:15;1498:153;;;;;;-1:-1:-1;1475:20:5;;;:16;:20;;;;;;;:176;;;;;;;-1:-1:-1;;1475:176:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:24;;;;;1492:2;2264:25:12;;2252:2;2237:18;;2118:177;1666:24:5;;;;;;;;1239:458;;;;:::o;814:190:2:-;872:11;885:17;914:9;926:14;936:3;926:9;:14::i;:::-;914:26;-1:-1:-1;956:5:2;960:1;914:26;956:5;:::i;:::-;950:11;;991:1;995;991:5;982:15;;;;;;;;:::i;:::-;971:26;;904:100;814:190;;;:::o;2735:679::-;2795:14;2821:11;2835:14;2845:3;2835:9;:14::i;:::-;2821:28;;2859:11;2883:3;2873;:7;;;:13;;;;:::i;:::-;2859:27;;2911:3;:5;;;:12;2904:3;:19;;2896:28;;;;;;2966:3;2956:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2956:14:2;-1:-1:-1;3000:5:2;;;;;3100:7;;2952:18;;-1:-1:-1;3000:5:2;3150:10;;;;3186:29;;;;2980:17;3234:151;3258:3;3254:1;:7;3234:151;;;3342:17;;;3336:24;3320:14;;;3313:48;3263:7;3268:2;3357:1;3263:7;:::i;:::-;;;3234:151;;;-1:-1:-1;;;3394:13:2;;-1:-1:-1;2735:679:2;;-1:-1:-1;2735:679:2:o;5121:107::-;5178:9;5203:18;5219:1;5203:15;:18::i;:::-;5199:22;5121:107;-1:-1:-1;;5121:107:2:o;4796:319::-;4853:9;4894:2;4882:1;:8;:14;;4874:23;;;;;;4998:2;4995:1;4991:10;4985:17;4980:22;;5066:1;:8;5061:2;:13;;;;:::i;:::-;5056:19;;:1;:19;:::i;:::-;5050:26;;4796:319;-1:-1:-1;4796:319:2:o;1775:902::-;1959:5;;;;;2019:7;;2118:19;;;;;2112:26;1836:9;;;;2296:326;2320:2;2316:1;:6;2296:326;;;2375:12;;;;-1:-1:-1;2498:5:2;2380:1;2502;2498:5;:::i;:::-;2484:1;2488:4;2484:8;2483:21;;2478:26;;;;2522:1;2526:4;2522:8;2534:1;2522:13;2518:94;;;2566:5;:1;2570;2566:5;:::i;:::-;2555:16;;:3;;:16;;;;;:::i;:::-;;;-1:-1:-1;1775:902:2;;;-1:-1:-1;;;;;1775:902:2:o;2518:94::-;2324:3;;;;:::i;:::-;;;;2296:326;;;;2631:8;;;5510:172;5567:9;5596:1;:8;5608:2;5596:14;5588:23;;;;;;-1:-1:-1;5662:2:2;5655:10;5649:17;;5510:172::o;4235:428::-;4324:15;4316:4;:23;;;;;;;;:::i;:::-;;4312:321;;;4355:14;4365:3;4355:9;:14::i;:::-;;4235:428;;:::o;4312:321::-;4398:20;4390:4;:28;;;;;;;;:::i;:::-;;4386:247;;;4434:11;4448:14;4458:3;4448:9;:14::i;:::-;4434:28;;4487:3;4476;:7;;:14;;;;;;;:::i;:::-;;;-1:-1:-1;4552:5:2;;;;:12;4541:7;;:23;;4533:32;;;;;5234:270;5298:17;5335:1;:8;5347:2;5335:14;5327:23;;;;;;-1:-1:-1;5454:2:2;5447:10;5441:17;5460:27;5437:51;;;5234:270::o;14:180:12:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:12;;14:180;-1:-1:-1;14:180:12:o;391:367::-;454:8;464:6;518:3;511:4;503:6;499:17;495:27;485:55;;536:1;533;526:12;485:55;-1:-1:-1;559:20:12;;602:18;591:30;;588:50;;;634:1;631;624:12;588:50;671:4;663:6;659:17;647:29;;731:3;724:4;714:6;711:1;707:14;699:6;695:27;691:38;688:47;685:67;;;748:1;745;738:12;685:67;391:367;;;;;:::o;763:773::-;885:6;893;901;909;962:2;950:9;941:7;937:23;933:32;930:52;;;978:1;975;968:12;930:52;1018:9;1005:23;1047:18;1088:2;1080:6;1077:14;1074:34;;;1104:1;1101;1094:12;1074:34;1143:70;1205:7;1196:6;1185:9;1181:22;1143:70;:::i;:::-;1232:8;;-1:-1:-1;1117:96:12;-1:-1:-1;1320:2:12;1305:18;;1292:32;;-1:-1:-1;1336:16:12;;;1333:36;;;1365:1;1362;1355:12;1333:36;;1404:72;1468:7;1457:8;1446:9;1442:24;1404:72;:::i;:::-;763:773;;;;-1:-1:-1;1495:8:12;-1:-1:-1;;;;763:773:12:o;1541:196::-;1609:20;;-1:-1:-1;;;;;1658:54:12;;1648:65;;1638:93;;1727:1;1724;1717:12;1638:93;1541:196;;;:::o;1742:186::-;1801:6;1854:2;1842:9;1833:7;1829:23;1825:32;1822:52;;;1870:1;1867;1860:12;1822:52;1893:29;1912:9;1893:29;:::i;:::-;1883:39;1742:186;-1:-1:-1;;;1742:186:12:o;3257:501::-;3342:6;3350;3358;3366;3419:3;3407:9;3398:7;3394:23;3390:33;3387:53;;;3436:1;3433;3426:12;3387:53;3459:29;3478:9;3459:29;:::i;:::-;3449:39;;3535:2;3524:9;3520:18;3507:32;3497:42;;3558:38;3592:2;3581:9;3577:18;3558:38;:::i;:::-;3548:48;;3646:2;3635:9;3631:18;3618:32;3690:18;3683:5;3679:30;3672:5;3669:41;3659:69;;3724:1;3721;3714:12;3659:69;3257:501;;;;-1:-1:-1;3257:501:12;;-1:-1:-1;;3257:501:12:o;3763:1554::-;3952:6;3960;3968;3976;3984;3992;4000;4008;4061:3;4049:9;4040:7;4036:23;4032:33;4029:53;;;4078:1;4075;4068:12;4029:53;4118:9;4105:23;4147:18;4188:2;4180:6;4177:14;4174:34;;;4204:1;4201;4194:12;4174:34;4242:6;4231:9;4227:22;4217:32;;4287:7;4280:4;4276:2;4272:13;4268:27;4258:55;;4309:1;4306;4299:12;4258:55;4349:2;4336:16;4375:2;4367:6;4364:14;4361:34;;;4391:1;4388;4381:12;4361:34;4438:7;4431:4;4422:6;4418:2;4414:15;4410:26;4407:39;4404:59;;;4459:1;4456;4449:12;4404:59;4490:4;4482:13;;;;-1:-1:-1;4514:6:12;-1:-1:-1;4558:20:12;;;4545:34;;4591:16;;;4588:36;;;4620:1;4617;4610:12;4588:36;4659:72;4723:7;4712:8;4701:9;4697:24;4659:72;:::i;:::-;4750:8;;-1:-1:-1;4633:98:12;-1:-1:-1;4838:2:12;4823:18;;4810:32;;-1:-1:-1;4854:16:12;;;4851:36;;;4883:1;4880;4873:12;4851:36;4922:72;4986:7;4975:8;4964:9;4960:24;4922:72;:::i;:::-;5013:8;;-1:-1:-1;4896:98:12;-1:-1:-1;5101:2:12;5086:18;;5073:32;;-1:-1:-1;5117:16:12;;;5114:36;;;5146:1;5143;5136:12;5114:36;;5185:72;5249:7;5238:8;5227:9;5223:24;5185:72;:::i;:::-;3763:1554;;;;-1:-1:-1;3763:1554:12;;-1:-1:-1;3763:1554:12;;;;;;5276:8;-1:-1:-1;;;3763:1554:12:o;6017:127::-;6078:10;6073:3;6069:20;6066:1;6059:31;6109:4;6106:1;6099:15;6133:4;6130:1;6123:15;6451:127;6512:10;6507:3;6503:20;6500:1;6493:31;6543:4;6540:1;6533:15;6567:4;6564:1;6557:15;6583:135;6622:3;-1:-1:-1;;6643:17:12;;6640:43;;;6663:18;;:::i;:::-;-1:-1:-1;6710:1:12;6699:13;;6583:135::o;10947:345::-;11144:6;11139:3;11132:19;11195:6;11187;11182:2;11177:3;11173:12;11160:42;11114:3;11225:16;;11243:2;11221:25;11255:13;;;11221:25;10947:345;-1:-1:-1;;10947:345:12:o;11297:266::-;11385:6;11380:3;11373:19;11437:6;11430:5;11423:4;11418:3;11414:14;11401:43;-1:-1:-1;11489:1:12;11464:16;;;11482:4;11460:27;;;11453:38;;;;11545:2;11524:15;;;-1:-1:-1;;11520:29:12;11511:39;;;11507:50;;11297:266::o;11568:1030::-;11675:6;11670:3;11663:19;11645:3;11701:4;11742:2;11737:3;11733:12;11767:11;11794;11787:18;;11844:6;11841:1;11837:14;11830:5;11826:26;11814:38;;11875:5;11898:1;11908:664;11922:6;11919:1;11916:13;11908:664;;;11993:5;11987:4;11983:16;11978:3;11971:29;12052:6;12039:20;12142:2;12138:7;12130:5;12114:14;12110:26;12106:40;12086:18;12082:65;12072:93;;12161:1;12158;12151:12;12072:93;12193:30;;12252:21;;12302:18;12289:32;;12286:52;;;12334:1;12331;12324:12;12286:52;12385:8;12369:14;12365:29;12358:5;12354:41;12351:61;;;12408:1;12405;12398:12;12351:61;12433:59;12487:4;12477:8;12472:2;12463:7;12459:16;12433:59;:::i;:::-;12550:12;;;;12425:67;-1:-1:-1;;;12515:15:12;;;;11944:1;11937:9;11908:664;;;-1:-1:-1;12588:4:12;;11568:1030;-1:-1:-1;;;;;;;11568:1030:12:o;12603:470::-;12703:6;12698:3;12691:19;12673:3;12729:4;12758:2;12753:3;12749:12;12742:19;;12784:5;12807:1;12817:231;12831:6;12828:1;12825:13;12817:231;;;-1:-1:-1;;;;;12896:26:12;12915:6;12896:26;:::i;:::-;12892:75;12880:88;;12988:12;;;;13023:15;;;;12853:1;12846:9;12817:231;;;-1:-1:-1;13064:3:12;;12603:470;-1:-1:-1;;;;;12603:470:12:o;13078:401::-;13178:6;13173:3;13166:19;13148:3;13208:66;13200:6;13197:78;13194:98;;;13288:1;13285;13278:12;13194:98;13324:6;13321:1;13317:14;13376:8;13369:5;13362:4;13357:3;13353:14;13340:45;13453:1;13408:18;;13428:4;13404:29;13442:13;;;-1:-1:-1;13404:29:12;;13078:401;-1:-1:-1;;13078:401:12:o;13484:1303::-;13915:3;13904:9;13897:22;13878:4;13948:6;13942:13;13992:6;13986:3;13975:9;13971:19;13964:35;14017:1;14027:145;14041:6;14038:1;14035:13;14027:145;;;14155:4;14139:14;;;14135:25;;14129:32;14123:3;14104:17;;;14100:27;14093:69;14056:12;14027:145;;;14190:6;14187:1;14184:13;14181:92;;;14261:1;14255:3;14246:6;14235:9;14231:22;14227:32;14220:43;14181:92;-1:-1:-1;14332:2:12;14311:15;-1:-1:-1;;14307:29:12;14292:45;;14379:18;;;14399:3;14375:28;;;14368:4;14353:20;;14346:58;14427:74;;14488:12;;14480:6;14472;14427:74;:::i;:::-;14413:88;;14549:9;14541:6;14537:22;14532:2;14521:9;14517:18;14510:50;14583:61;14637:6;14629;14621;14583:61;:::i;:::-;14569:75;;14692:9;14684:6;14680:22;14675:2;14664:9;14660:18;14653:50;14720:61;14774:6;14766;14758;14720:61;:::i;:::-;14712:69;13484:1303;-1:-1:-1;;;;;;;;;;13484:1303:12:o;17978:128::-;18018:3;18049:1;18045:6;18042:1;18039:13;18036:39;;;18055:18;;:::i;:::-;-1:-1:-1;18091:9:12;;17978:128::o;19296:217::-;19336:1;19362;19352:132;;19406:10;19401:3;19397:20;19394:1;19387:31;19441:4;19438:1;19431:15;19469:4;19466:1;19459:15;19352:132;-1:-1:-1;19498:9:12;;19296:217::o;19518:168::-;19558:7;19624:1;19620;19616:6;19612:14;19609:1;19606:21;19601:1;19594:9;19587:17;19583:45;19580:71;;;19631:18;;:::i;:::-;-1:-1:-1;19671:9:12;;19518:168::o;20580:127::-;20641:10;20636:3;20632:20;20629:1;20622:31;20672:4;20669:1;20662:15;20696:4;20693:1;20686:15;20712:127;20773:10;20768:3;20764:20;20761:1;20754:31;20804:4;20801:1;20794:15;20828:4;20825:1;20818:15;20844:125;20884:4;20912:1;20909;20906:8;20903:34;;;20917:18;;:::i;:::-;-1:-1:-1;20954:9:12;;20844:125::o
Swarm Source
ipfs://21bb7eb35bc3e977755db3c819a9902e690116a382dddf799bfcd1e76af718ae
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.