Contract
0x04c451e7f6e391ee0d004139ffe125bd75535de6
1
Contract Overview
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
BridgeAVM
Compiler Version
v0.6.9+commit.3e3065ac
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; pragma experimental ABIEncoderV2; import "./IIdeaTokenExchangeStateTransferAVM.sol"; import "./IArbSys.sol"; import "./IIdeaTokenFactory.sol"; import "./IBridgeAVM.sol"; import "./Ownable.sol"; import "./Initializable.sol"; /** * @title BridgeAVM * @author Alexander Schlindwein * * This contract is the target of all L1 -> L2 calls originating from * the `IdeaTokenExchange` on L1. * */ contract BridgeAVM is Ownable, Initializable, IBridgeAVM { // Struct to temporarily store state from L1 struct TMPTokenInfo { uint tokenID; string name; uint supply; uint dai; uint invested; } event TokensRedeemed(uint marketID, uint tokenID, uint amount, address to); // Address of the IdeaTokenExchange on L1 address public _l1Exchange; // Address of the IdeaTokenExchange on L2 IIdeaTokenExchangeStateTransferAVM public _l2Exchange; // Address of the IdeaTokenFactory on L2 IIdeaTokenFactory public _l2Factory; // Stores if the static vars have been set already bool public _exchangeStaticVarsSet; // Stores if platform vars have been set already mapping(uint => bool) public _exchangePlatformVarsSet; // Stores token vars per market mapping(uint => TMPTokenInfo[]) public _tmpTokenInfos; // Stores the array lengths of the above mapping mapping(uint => uint) public _numTokensInMarket; modifier onlyL1Exchange { require(IArbSys(100).isTopLevelCall() && msg.sender == _l1Exchange, "only-l1-exchange"); _; } /** * Initializes the contract * * @param l1Exchange The address of the IdeaTokenExchange on L1 * @param l2Exchange The address of the IdeaTokenExchange on L2 * @param l2Factory The address of the IdeaTokenFactory on L2 */ function initialize(address l1Exchange, address l2Exchange, address l2Factory) external override initializer { require(l1Exchange != address(0) && l2Exchange != address(0) && l2Factory != address(0), "invalid-args"); setOwnerInternal(msg.sender); _l1Exchange = address(uint160(l1Exchange) + uint160(0x1111000000000000000000000000000000001111)); _l2Exchange = IIdeaTokenExchangeStateTransferAVM(l2Exchange); _l2Factory = IIdeaTokenFactory(l2Factory); } /** * Receives static vars from the IdeaTokenExchange on L1 and sets them on the L2 IdeaTokenExchange. * * @param tradingFeeInvested The tradingFeeInvested on L1 */ function receiveExchangeStaticVars(uint tradingFeeInvested) external override onlyL1Exchange { require(!_exchangeStaticVarsSet, "already-set"); _exchangeStaticVarsSet = true; _l2Exchange.setStaticVars(tradingFeeInvested); } /** * Receives platform vars from the IdeaTokenExchange on L1 and sets them on the L2 IdeaTokenExchange. * * @param marketID The market's ID * @param dai The dai on L1 * @param invested The invested on L1 * @param platformFeeInvested The platformFeeInvested */ function receiveExchangePlatformVars(uint marketID, uint dai, uint invested, uint platformFeeInvested) external override onlyL1Exchange { require(!_exchangePlatformVarsSet[marketID], "already-set"); _exchangePlatformVarsSet[marketID] = true; _l2Exchange.setPlatformVars(marketID, dai, invested, platformFeeInvested); } /** * Receives token vars from the IdeaTokenExchange on L1. * The vars are not immediately set, but instead stored until setTokenVars is called. * Ensures that the token vars are received in the correct order. * * @param marketID The market's ID * @param tokenIDs The IDs of the tokens * @param names The names of the tokens * @param supplies The supplies of the tokens * @param dais The dais of the tokens * @param investeds The investeds of the tokens */ function receiveExchangeTokenVars(uint marketID, uint[] calldata tokenIDs, string[] calldata names, uint[] calldata supplies, uint[] calldata dais, uint[] calldata investeds) external override onlyL1Exchange { { uint length = tokenIDs.length; require(length > 0, "length-0"); require(length == names.length && length == dais.length && length == investeds.length && length == supplies.length, "length-mismatch"); } TMPTokenInfo[] storage tmpTokenInfos = _tmpTokenInfos[marketID]; uint prevID = tmpTokenInfos.length; for(uint i = 0; i < tokenIDs.length; i++) { require(tokenIDs[i] == prevID + 1, "id-gap"); pushTMPTokenInfoInternal(tmpTokenInfos, tokenIDs[i], names[i], supplies[i], dais[i], investeds[i]); prevID = tokenIDs[i]; } // `tokenID`s being an array makes this safe from overflowing _numTokensInMarket[marketID] += tokenIDs.length; } /// Using seperate function due to stack too deep function pushTMPTokenInfoInternal(TMPTokenInfo[] storage tmpTokenInfos, uint tokenID, string memory name, uint supply, uint dai, uint invested) internal { tmpTokenInfos.push(TMPTokenInfo({ tokenID: tokenID, name: name, supply: supply, dai: dai, invested: invested })); } /** * Sets previously received token vars on L2. * May only be called by the owner. * Ensures that the token vars are received in the correct order. * * @param marketID The market's ID * @param tokenIDs The IDs of the tokens */ function setTokenVars(uint marketID, uint[] calldata tokenIDs) external override onlyOwner { uint length = tokenIDs.length; require(length > 0, "zero-length"); require(tokenIDs[0] > 0, "tokenid-0"); MarketDetails memory marketDetails = _l2Factory.getMarketDetailsByID(marketID); require(marketDetails.exists, "invalid-market"); uint numTokens = marketDetails.numTokens; for(uint i = 0; i < length; i++) { uint tokenID = tokenIDs[i]; require(numTokens + i + 1 == tokenID, "gap"); TMPTokenInfo memory tmpTokenInfo = _tmpTokenInfos[marketID][tokenID - 1]; _l2Factory.addToken(tmpTokenInfo.name, marketID, address(this)); _l2Exchange.setTokenVarsAndMint(marketID, tmpTokenInfo.tokenID, tmpTokenInfo.supply, tmpTokenInfo.dai, tmpTokenInfo.invested); } } /** * Transfers a user's IdeaTokens from L1 to L2. * * @param marketID The market ID of the token * @param tokenID The token ID of the token * @param amount The amount to transfer * @param to The recipient */ function receiveIdeaTokenTransfer(uint marketID, uint tokenID, uint amount, address to) external override onlyL1Exchange { TokenInfo memory tokenInfo = _l2Factory.getTokenInfo(marketID, tokenID); require(tokenInfo.exists, "not-exist"); require(tokenInfo.ideaToken.transfer(to, amount), "transfer"); emit TokensRedeemed(marketID, tokenID, amount, to); } }
// SPDX-License-Identifier: MIT // https://github.com/OffchainLabs/arb-os/blob/develop/contracts/arbos/builtin/ArbSys.sol pragma solidity 0.6.9; /** * @title IArbSys * @author Alexander Schlindwein */ interface IArbSys { function isTopLevelCall() external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; pragma experimental ABIEncoderV2; /** * @title IBridgeAVM * @author Alexander Schlindwein */ interface IBridgeAVM { function initialize(address l1Exchange, address l2Exchange, address l2Factory) external; function receiveExchangeStaticVars(uint tradingFeeInvested) external; function receiveExchangePlatformVars(uint marketID, uint dai, uint invested, uint platformFeeInvested) external; function receiveExchangeTokenVars(uint marketID, uint[] calldata tokenIDs, string[] calldata names, uint[] calldata supplies, uint[] calldata dais, uint[] calldata investeds) external; function setTokenVars(uint marketID, uint[] calldata tokenID) external; function receiveIdeaTokenTransfer(uint marketID, uint tokenID, uint amount, address to) external; }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <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); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; import "./IERC20.sol"; /** * @title IIdeaToken * @author Alexander Schlindwein */ interface IIdeaToken is IERC20 { function initialize(string calldata __name, address owner) external; function mint(address account, uint256 amount) external; function burn(address account, uint256 amount) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; /** * @title IIdeaTokenExchangeStateTransferAVM * @author Alexander Schlindwein */ interface IIdeaTokenExchangeStateTransferAVM { function setStaticVars(uint tradingFeeInvested) external; function setPlatformVars(uint marketID, uint dai, uint invested, uint platformFeeInvested) external; function setTokenVarsAndMint(uint marketID, uint tokenID, uint supply, uint dai, uint invested) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; pragma experimental ABIEncoderV2; import "./IERC20.sol"; import "./IIdeaToken.sol"; import "./IIdeaTokenNameVerifier.sol"; /** * @title IIdeaTokenFactory * @author Alexander Schlindwein */ struct IDPair { bool exists; uint marketID; uint tokenID; } struct TokenInfo { bool exists; uint id; string name; IIdeaToken ideaToken; } struct MarketDetails { bool exists; uint id; string name; IIdeaTokenNameVerifier nameVerifier; uint numTokens; uint baseCost; uint priceRise; uint hatchTokens; uint tradingFeeRate; uint platformFeeRate; bool allInterestToPlatform; } interface IIdeaTokenFactory { function addMarket(string calldata marketName, address nameVerifier, uint baseCost, uint priceRise, uint hatchTokens, uint tradingFeeRate, uint platformFeeRate, bool allInterestToPlatform) external; function addToken(string calldata tokenName, uint marketID, address lister) external; function isValidTokenName(string calldata tokenName, uint marketID) external view returns (bool); function getMarketIDByName(string calldata marketName) external view returns (uint); function getMarketDetailsByID(uint marketID) external view returns (MarketDetails memory); function getMarketDetailsByName(string calldata marketName) external view returns (MarketDetails memory); function getMarketDetailsByTokenAddress(address ideaToken) external view returns (MarketDetails memory); function getNumMarkets() external view returns (uint); function getTokenIDByName(string calldata tokenName, uint marketID) external view returns (uint); function getTokenInfo(uint marketID, uint tokenID) external view returns (TokenInfo memory); function getTokenIDPair(address token) external view returns (IDPair memory); function setTradingFee(uint marketID, uint tradingFeeRate) external; function setPlatformFee(uint marketID, uint platformFeeRate) external; function setNameVerifier(uint marketID, address nameVerifier) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; /** * @title IIdeaTokenNameVerifier * @author Alexander Schlindwein * * Interface for token name verifiers */ interface IIdeaTokenNameVerifier { function verifyTokenName(string calldata name) external pure returns (bool); }
// SPDX-License-Identifier: MIT // https://github.com/OpenZeppelin/openzeppelin-upgrades/blob/master/packages/core/contracts/Initializable.sol pragma solidity 0.6.9; /** * @title Initializable * * @dev Helper contract to support initializer functions. To use it, replace * the constructor with a function that has the `initializer` modifier. * WARNING: Unlike constructors, initializer functions must be manually * invoked. This applies both to deploying an Initializable contract, as well * as extending an Initializable contract via inheritance. * WARNING: When used with inheritance, manual care must be taken to not invoke * a parent initializer twice, or ensure that all initializers are idempotent, * because this is not dealt with automatically as with constructors. */ contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private initializing; /** * @dev Modifier to use in the initializer function of a contract. */ modifier initializer() { require(initializing || isConstructor() || !initialized, "already-initialized"); bool isTopLevelCall = !initializing; if (isTopLevelCall) { initializing = true; initialized = true; } _; if (isTopLevelCall) { initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function isConstructor() private view returns (bool) { // extcodesize checks the size of the code stored in an address, and // address returns the current address. Since the code is still not // deployed when running a constructor, any checks on its code size will // yield zero, making it an effective way to detect if a contract is // under construction or not. address self = address(this); uint256 cs; assembly { cs := extcodesize(self) } return cs == 0; } // Reserved storage space to allow for layout changes in the future. uint256[50] private ______gap; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.9; /** * @title Ownable * @author Alexander Schlindwein * * @dev Implements only-owner functionality */ contract Ownable { address _owner; event OwnershipChanged(address oldOwner, address newOwner); modifier onlyOwner { require(_owner == msg.sender, "only-owner"); _; } function setOwner(address newOwner) external onlyOwner { setOwnerInternal(newOwner); } function setOwnerInternal(address newOwner) internal { require(newOwner != address(0), "zero-addr"); address oldOwner = _owner; _owner = newOwner; emit OwnershipChanged(oldOwner, newOwner); } function getOwner() external view returns (address) { return _owner; } }
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"TokensRedeemed","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_exchangePlatformVarsSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_exchangeStaticVarsSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_l1Exchange","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_l2Exchange","outputs":[{"internalType":"contract IIdeaTokenExchangeStateTransferAVM","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_l2Factory","outputs":[{"internalType":"contract IIdeaTokenFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_numTokensInMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_tmpTokenInfos","outputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"dai","type":"uint256"},{"internalType":"uint256","name":"invested","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"l1Exchange","type":"address"},{"internalType":"address","name":"l2Exchange","type":"address"},{"internalType":"address","name":"l2Factory","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketID","type":"uint256"},{"internalType":"uint256","name":"dai","type":"uint256"},{"internalType":"uint256","name":"invested","type":"uint256"},{"internalType":"uint256","name":"platformFeeInvested","type":"uint256"}],"name":"receiveExchangePlatformVars","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tradingFeeInvested","type":"uint256"}],"name":"receiveExchangeStaticVars","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketID","type":"uint256"},{"internalType":"uint256[]","name":"tokenIDs","type":"uint256[]"},{"internalType":"string[]","name":"names","type":"string[]"},{"internalType":"uint256[]","name":"supplies","type":"uint256[]"},{"internalType":"uint256[]","name":"dais","type":"uint256[]"},{"internalType":"uint256[]","name":"investeds","type":"uint256[]"}],"name":"receiveExchangeTokenVars","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketID","type":"uint256"},{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"receiveIdeaTokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketID","type":"uint256"},{"internalType":"uint256[]","name":"tokenIDs","type":"uint256[]"}],"name":"setTokenVars","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50612d11806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063861b153c11610097578063b4c93eba11610066578063b4c93eba1461024e578063c0c53b8b1461026c578063c474601914610288578063e02223e2146102b8576100f5565b8063861b153c146101c2578063893d20e8146101de578063895ecf12146101fc5780639f3f600e1461021a576100f5565b80635e22df26116100d35780635e22df261461014e578063657ad7d51461016c57806366b8721b1461018857806385aab3f1146101a4576100f5565b806313af4035146100fa5780633e1f79d2146101165780634f394fab14610132575b600080fd5b610114600480360381019061010f9190611e4a565b6102e8565b005b610130600480360381019061012b9190611f6d565b610383565b005b61014c60048036038101906101479190611f96565b610595565b005b610156610a98565b604051610163919061264d565b60405180910390f35b61018660048036038101906101819190612143565b610abe565b005b6101a2600480360381019061019d9190611fee565b610de9565b005b6101ac61114f565b6040516101b991906126d5565b60405180910390f35b6101dc60048036038101906101d791906121a6565b611175565b005b6101e66113b2565b6040516101f3919061264d565b60405180910390f35b6102046113db565b60405161021191906126ba565b60405180910390f35b610234600480360381019061022f9190612107565b6113ee565b604051610245959493929190612944565b60405180910390f35b6102566114d6565b60405161026391906126f0565b60405180910390f35b61028660048036038101906102819190611e73565b6114fc565b005b6102a2600480360381019061029d9190611f6d565b6117ae565b6040516102af91906126ba565b60405180910390f35b6102d260048036038101906102cd9190611f6d565b6117ce565b6040516102df9190612929565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036e90612789565b60405180910390fd5b610380816117e6565b50565b606473ffffffffffffffffffffffffffffffffffffffff166308bd624c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ca57600080fd5b505afa1580156103de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104029190611ec2565b801561045b5750603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61049a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610491906127c9565b60405180910390fd5b603560149054906101000a900460ff16156104ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e190612829565b60405180910390fd5b6001603560146101000a81548160ff021916908315150217905550603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663433980eb826040518263ffffffff1660e01b81526004016105609190612929565b600060405180830381600087803b15801561057a57600080fd5b505af115801561058e573d6000803e3d6000fd5b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061b90612789565b60405180910390fd5b60008282905090506000811161066f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066690612769565b60405180910390fd5b60008383600081811061067e57fe5b90506020020135116106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bc906128c9565b60405180910390fd5b6106cd6119b0565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c7d5fe55866040518263ffffffff1660e01b81526004016107289190612929565b60006040518083038186803b15801561074057600080fd5b505afa158015610754573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061077d9190611eeb565b905080600001516107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba90612889565b60405180910390fd5b60008160800151905060008090505b83811015610a8f5760008686838181106107e857fe5b9050602002013590508060018385010114610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f90612749565b60405180910390fd5b610840611a24565b603760008a8152602001908152602001600020600183038154811061086157fe5b90600052602060002090600502016040518060a001604052908160008201548152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815250509050603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631145760482602001518b306040518463ffffffff1660e01b81526004016109a99392919061270b565b600060405180830381600087803b1580156109c357600080fd5b505af11580156109d7573d6000803e3d6000fd5b50505050603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636f30b8398a83600001518460400151856060015186608001516040518663ffffffff1660e01b8152600401610a4e959493929190612a51565b600060405180830381600087803b158015610a6857600080fd5b505af1158015610a7c573d6000803e3d6000fd5b50505050505080806001019150506107d2565b50505050505050565b603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606473ffffffffffffffffffffffffffffffffffffffff166308bd624c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0557600080fd5b505afa158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190611ec2565b8015610b965750603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906127c9565b60405180910390fd5b610bdd611a53565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a81adc186866040518363ffffffff1660e01b8152600401610c3a92919061299e565b60006040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c8f9190611f2c565b90508060000151610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612849565b60405180910390fd5b806060015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83856040518363ffffffff1660e01b8152600401610d14929190612691565b602060405180830381600087803b158015610d2e57600080fd5b505af1158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d669190611ec2565b610da5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9c906128a9565b60405180910390fd5b7fafb276115c0c75447eac1947078d8e8492cad4d143154598fc518aaee9e7f1c585858585604051610dda94939291906129c7565b60405180910390a15050505050565b606473ffffffffffffffffffffffffffffffffffffffff166308bd624c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3057600080fd5b505afa158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e689190611ec2565b8015610ec15750603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef7906127c9565b60405180910390fd5b60008a8a9050905060008111610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290612909565b60405180910390fd5b8888905081148015610f5f57508484905081145b8015610f6d57508282905081145b8015610f7b57508686905081145b610fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb1906128e9565b60405180910390fd5b506000603760008d8152602001908152602001600020905060008180549050905060008090505b8c8c905081101561111b57600182018d8d83818110610ffc57fe5b9050602002013514611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90612869565b60405180910390fd5b6110f9838e8e8481811061105357fe5b905060200201358d8d8581811061106657fe5b90506020028101906110789190612aa4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c868181106110c757fe5b905060200201358b8b878181106110da57fe5b905060200201358a8a888181106110ed57fe5b905060200201356118f9565b8c8c8281811061110557fe5b9050602002013591508080600101915050610fe1565b508b8b9050603860008f81526020019081526020016000206000828254019250508190555050505050505050505050505050565b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606473ffffffffffffffffffffffffffffffffffffffff166308bd624c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bc57600080fd5b505afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190611ec2565b801561124d5750603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61128c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611283906127c9565b60405180910390fd5b6036600085815260200190815260200160002060009054906101000a900460ff16156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612829565b60405180910390fd5b60016036600086815260200190815260200160002060006101000a81548160ff021916908315150217905550603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f225ffa858585856040518563ffffffff1660e01b815260040161137a9493929190612a0c565b600060405180830381600087803b15801561139457600080fd5b505af11580156113a8573d6000803e3d6000fd5b5050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b603560149054906101000a900460ff1681565b6037602052816000526040600020818154811061140757fe5b906000526020600020906005020160009150915050806000015490806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114ba5780601f1061148f576101008083540402835291602001916114ba565b820191906000526020600020905b81548152906001019060200180831161149d57829003601f168201915b5050505050908060020154908060030154908060040154905085565b603560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060159054906101000a900460ff168061151b575061151a611999565b5b806115335750600060149054906101000a900460ff16155b611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612809565b60405180910390fd5b60008060159054906101000a900460ff1615905080156115c3576001600060156101000a81548160ff0219169083151502179055506001600060146101000a81548160ff0219169083151502179055505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561162d5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116665750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906127a9565b60405180910390fd5b6116ae336117e6565b7311110000000000000000000000000000000011118401603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082603460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156117a85760008060156101000a81548160ff0219169083151502179055505b50505050565b60366020528060005260406000206000915054906101000a900460ff1681565b60386020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611856576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184d906127e9565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0384899bd253d83b23daa4d29aaa2efe0563d1132b43101e9ad667235aeb951b81836040516118ed929190612668565b60405180910390a15050565b856040518060a00160405280878152602001868152602001858152602001848152602001838152509080600181540180825580915050600190039060005260206000209060050201600090919091909150600082015181600001556020820151816001019080519060200190611970929190611a93565b506040820151816002015560608201518160030155608082015181600401555050505050505050565b6000803090506000813b9050600081149250505090565b6040518061016001604052806000151581526020016000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060a0016040528060008152602001606081526020016000815260200160008152602001600081525090565b60405180608001604052806000151581526020016000815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ad457805160ff1916838001178555611b02565b82800160010185558215611b02579182015b82811115611b01578251825591602001919060010190611ae6565b5b509050611b0f9190611b13565b5090565b611b3591905b80821115611b31576000816000905550600101611b19565b5090565b90565b600081359050611b4781612c68565b92915050565b60008083601f840112611b5f57600080fd5b8235905067ffffffffffffffff811115611b7857600080fd5b602083019150836020820283011115611b9057600080fd5b9250929050565b60008083601f840112611ba957600080fd5b8235905067ffffffffffffffff811115611bc257600080fd5b602083019150836020820283011115611bda57600080fd5b9250929050565b600081519050611bf081612c7f565b92915050565b600081519050611c0581612c96565b92915050565b600081519050611c1a81612cad565b92915050565b600082601f830112611c3157600080fd5b8151611c44611c3f82612b28565b612afb565b91508082526020830160208301858383011115611c6057600080fd5b611c6b838284612c24565b50505092915050565b60006101608284031215611c8757600080fd5b611c92610160612afb565b90506000611ca284828501611be1565b6000830152506020611cb684828501611e35565b602083015250604082015167ffffffffffffffff811115611cd657600080fd5b611ce284828501611c20565b6040830152506060611cf684828501611bf6565b6060830152506080611d0a84828501611e35565b60808301525060a0611d1e84828501611e35565b60a08301525060c0611d3284828501611e35565b60c08301525060e0611d4684828501611e35565b60e083015250610100611d5b84828501611e35565b61010083015250610120611d7184828501611e35565b61012083015250610140611d8784828501611be1565b6101408301525092915050565b600060808284031215611da657600080fd5b611db06080612afb565b90506000611dc084828501611be1565b6000830152506020611dd484828501611e35565b602083015250604082015167ffffffffffffffff811115611df457600080fd5b611e0084828501611c20565b6040830152506060611e1484828501611c0b565b60608301525092915050565b600081359050611e2f81612cc4565b92915050565b600081519050611e4481612cc4565b92915050565b600060208284031215611e5c57600080fd5b6000611e6a84828501611b38565b91505092915050565b600080600060608486031215611e8857600080fd5b6000611e9686828701611b38565b9350506020611ea786828701611b38565b9250506040611eb886828701611b38565b9150509250925092565b600060208284031215611ed457600080fd5b6000611ee284828501611be1565b91505092915050565b600060208284031215611efd57600080fd5b600082015167ffffffffffffffff811115611f1757600080fd5b611f2384828501611c74565b91505092915050565b600060208284031215611f3e57600080fd5b600082015167ffffffffffffffff811115611f5857600080fd5b611f6484828501611d94565b91505092915050565b600060208284031215611f7f57600080fd5b6000611f8d84828501611e20565b91505092915050565b600080600060408486031215611fab57600080fd5b6000611fb986828701611e20565b935050602084013567ffffffffffffffff811115611fd657600080fd5b611fe286828701611b97565b92509250509250925092565b600080600080600080600080600080600060c08c8e03121561200f57600080fd5b600061201d8e828f01611e20565b9b505060208c013567ffffffffffffffff81111561203a57600080fd5b6120468e828f01611b97565b9a509a505060408c013567ffffffffffffffff81111561206557600080fd5b6120718e828f01611b4d565b985098505060608c013567ffffffffffffffff81111561209057600080fd5b61209c8e828f01611b97565b965096505060808c013567ffffffffffffffff8111156120bb57600080fd5b6120c78e828f01611b97565b945094505060a08c013567ffffffffffffffff8111156120e657600080fd5b6120f28e828f01611b97565b92509250509295989b509295989b9093969950565b6000806040838503121561211a57600080fd5b600061212885828601611e20565b925050602061213985828601611e20565b9150509250929050565b6000806000806080858703121561215957600080fd5b600061216787828801611e20565b945050602061217887828801611e20565b935050604061218987828801611e20565b925050606061219a87828801611b38565b91505092959194509250565b600080600080608085870312156121bc57600080fd5b60006121ca87828801611e20565b94505060206121db87828801611e20565b93505060406121ec87828801611e20565b92505060606121fd87828801611e20565b91505092959194509250565b61221281612b70565b82525050565b61222181612b82565b82525050565b61223081612bdc565b82525050565b61223f81612c00565b82525050565b600061225082612b54565b61225a8185612b5f565b935061226a818560208601612c24565b61227381612c57565b840191505092915050565b600061228b600383612b5f565b91507f67617000000000000000000000000000000000000000000000000000000000006000830152602082019050919050565b60006122cb600b83612b5f565b91507f7a65726f2d6c656e6774680000000000000000000000000000000000000000006000830152602082019050919050565b600061230b600a83612b5f565b91507f6f6e6c792d6f776e6572000000000000000000000000000000000000000000006000830152602082019050919050565b600061234b600c83612b5f565b91507f696e76616c69642d6172677300000000000000000000000000000000000000006000830152602082019050919050565b600061238b601083612b5f565b91507f6f6e6c792d6c312d65786368616e6765000000000000000000000000000000006000830152602082019050919050565b60006123cb600983612b5f565b91507f7a65726f2d6164647200000000000000000000000000000000000000000000006000830152602082019050919050565b600061240b601383612b5f565b91507f616c72656164792d696e697469616c697a6564000000000000000000000000006000830152602082019050919050565b600061244b600b83612b5f565b91507f616c72656164792d7365740000000000000000000000000000000000000000006000830152602082019050919050565b600061248b600983612b5f565b91507f6e6f742d657869737400000000000000000000000000000000000000000000006000830152602082019050919050565b60006124cb600683612b5f565b91507f69642d67617000000000000000000000000000000000000000000000000000006000830152602082019050919050565b600061250b600e83612b5f565b91507f696e76616c69642d6d61726b65740000000000000000000000000000000000006000830152602082019050919050565b600061254b600883612b5f565b91507f7472616e736665720000000000000000000000000000000000000000000000006000830152602082019050919050565b600061258b600983612b5f565b91507f746f6b656e69642d3000000000000000000000000000000000000000000000006000830152602082019050919050565b60006125cb600f83612b5f565b91507f6c656e6774682d6d69736d6174636800000000000000000000000000000000006000830152602082019050919050565b600061260b600883612b5f565b91507f6c656e6774682d300000000000000000000000000000000000000000000000006000830152602082019050919050565b61264781612bd2565b82525050565b60006020820190506126626000830184612209565b92915050565b600060408201905061267d6000830185612209565b61268a6020830184612209565b9392505050565b60006040820190506126a66000830185612209565b6126b3602083018461263e565b9392505050565b60006020820190506126cf6000830184612218565b92915050565b60006020820190506126ea6000830184612227565b92915050565b60006020820190506127056000830184612236565b92915050565b600060608201905081810360008301526127258186612245565b9050612734602083018561263e565b6127416040830184612209565b949350505050565b600060208201905081810360008301526127628161227e565b9050919050565b60006020820190508181036000830152612782816122be565b9050919050565b600060208201905081810360008301526127a2816122fe565b9050919050565b600060208201905081810360008301526127c28161233e565b9050919050565b600060208201905081810360008301526127e28161237e565b9050919050565b60006020820190508181036000830152612802816123be565b9050919050565b60006020820190508181036000830152612822816123fe565b9050919050565b600060208201905081810360008301526128428161243e565b9050919050565b600060208201905081810360008301526128628161247e565b9050919050565b60006020820190508181036000830152612882816124be565b9050919050565b600060208201905081810360008301526128a2816124fe565b9050919050565b600060208201905081810360008301526128c28161253e565b9050919050565b600060208201905081810360008301526128e28161257e565b9050919050565b60006020820190508181036000830152612902816125be565b9050919050565b60006020820190508181036000830152612922816125fe565b9050919050565b600060208201905061293e600083018461263e565b92915050565b600060a082019050612959600083018861263e565b818103602083015261296b8187612245565b905061297a604083018661263e565b612987606083018561263e565b612994608083018461263e565b9695505050505050565b60006040820190506129b3600083018561263e565b6129c0602083018461263e565b9392505050565b60006080820190506129dc600083018761263e565b6129e9602083018661263e565b6129f6604083018561263e565b612a036060830184612209565b95945050505050565b6000608082019050612a21600083018761263e565b612a2e602083018661263e565b612a3b604083018561263e565b612a48606083018461263e565b95945050505050565b600060a082019050612a66600083018861263e565b612a73602083018761263e565b612a80604083018661263e565b612a8d606083018561263e565b612a9a608083018461263e565b9695505050505050565b60008083356001602003843603038112612abd57600080fd5b80840192508235915067ffffffffffffffff821115612adb57600080fd5b602083019250600182023603831315612af357600080fd5b509250929050565b6000604051905081810181811067ffffffffffffffff82111715612b1e57600080fd5b8060405250919050565b600067ffffffffffffffff821115612b3f57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000612b7b82612bb2565b9050919050565b60008115159050919050565b6000612b9982612b70565b9050919050565b6000612bab82612b70565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612be782612bee565b9050919050565b6000612bf982612bb2565b9050919050565b6000612c0b82612c12565b9050919050565b6000612c1d82612bb2565b9050919050565b60005b83811015612c42578082015181840152602081019050612c27565b83811115612c51576000848401525b50505050565b6000601f19601f8301169050919050565b612c7181612b70565b8114612c7c57600080fd5b50565b612c8881612b82565b8114612c9357600080fd5b50565b612c9f81612b8e565b8114612caa57600080fd5b50565b612cb681612ba0565b8114612cc157600080fd5b50565b612ccd81612bd2565b8114612cd857600080fd5b5056fea264697066735822122084c1992b9c9d915d6e995a5730032a3a7ffed679957da1cbee6bc2814035147264736f6c63430006090033
Deployed ByteCode Sourcemap
473:7071:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;388:100:9;;;;;;;;;;;;;;;;:::i;:::-;;2631:255:0;;;;;;;;;;;;;;;;:::i;:::-;;5978:896;;;;;;;;;;;;;;;;:::i;:::-;;865:26;;;:::i;:::-;;;;;;;;;;;;;;;;7138:403;;;;;;;;;;;;;;;;:::i;:::-;;4088:1185;;;;;;;;;;;;;;;;:::i;:::-;;945:53;;;:::i;:::-;;;;;;;;;;;;;;;;3202:350;;;;;;;;;;;;;;;;:::i;:::-;;740:84:9;;;:::i;:::-;;;;;;;;;;;;;;;;1151:34:0;;;:::i;:::-;;;;;;;;;;;;;;;;1343:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1051:35;;;:::i;:::-;;;;;;;;;;;;;;;;1928:501;;;;;;;;;;;;;;;;:::i;:::-;;1246:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1457:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;388:100:9;335:10;325:20;;:6;;;;;;;;;;;:20;;;317:43;;;;;;;;;;;;;;;;;;;;;;454:26:::1;471:8;454:16;:26::i;:::-;388:100:::0;:::o;2631:255:0:-;1564:3;1556:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;;1603:11;;;;;;;;;;;1589:25;;:10;:25;;;1556:58;1548:87;;;;;;;;;;;;;;;;;;;;;;2744:22:::1;;;;;;;;;;;2743:23;2735:47;;;;;;;;;;;;;;;;;;;;;;2818:4;2793:22;;:29;;;;;;;;;;;;;;;;;;2833:11;;;;;;;;;;;:25;;;2859:18;2833:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2631:255:::0;:::o;5978:896::-;335:10:9;325:20;;:6;;;;;;;;;;;:20;;;317:43;;;;;;;;;;;;;;;;;;;;;;6080:11:0::1;6094:8;;:15;;6080:29;;6137:1;6128:6;:10;6120:34;;;;;;;;;;;;;;;;;;;;;;6187:1;6173:8;;6182:1;6173:11;;;;;;;;;;;;;:15;6165:37;;;;;;;;;;;;;;;;;;;;;;6215:34;;:::i;:::-;6252:10;;;;;;;;;;;:31;;;6284:8;6252:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6215:78;;6312:13;:20;;;6304:47;;;;;;;;;;;;;;;;;;;;;;6362:14;6379:13;:23;;;6362:40;;6419:6;6428:1:::0;6419:10:::1;;6415:452;6435:6;6431:1;:10;6415:452;;;6463:12;6478:8;;6487:1;6478:11;;;;;;;;;;;;;6463:26;;6533:7;6528:1;6524;6512:9;:13;:17;:28;6504:44;;;;;;;;;;;;;;;;;;;;;;6565:32;;:::i;:::-;6600:14;:24;6615:8;6600:24;;;;;;;;;;;6635:1;6625:7;:11;6600:37;;;;;;;;;;;;;;;;;;6565:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;6652:10;;;;;;;;;;;:19;;;6672:12;:17;;;6691:8;6709:4;6652:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6730:11;;;;;;;;;;;:31;;;6762:8;6772:12;:20;;;6794:12;:19;;;6815:12;:16;;;6833:12;:21;;;6730:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6415:452;;6443:3;;;;;;;6415:452;;;;371:1:9;;;5978:896:0::0;;;:::o;865:26::-;;;;;;;;;;;;;:::o;7138:403::-;1564:3;1556:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;;1603:11;;;;;;;;;;;1589:25;;:10;:25;;;1556:58;1548:87;;;;;;;;;;;;;;;;;;;;;;7270:26:::1;;:::i;:::-;7299:10;;;;;;;;;;;:23;;;7323:8;7333:7;7299:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7270:71;;7360:9;:16;;;7352:38;;;;;;;;;;;;;;;;;;;;;;7409:9;:19;;;:28;;;7438:2;7442:6;7409:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7401:61;;;;;;;;;;;;;;;;;;;;;;7488:45;7503:8;7513:7;7522:6;7530:2;7488:45;;;;;;;;;;;;;;;;;;1646:1;7138:403:::0;;;;:::o;4088:1185::-;1564:3;1556:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;;1603:11;;;;;;;;;;;1589:25;;:10;:25;;;1556:58;1548:87;;;;;;;;;;;;;;;;;;;;;;4513:11:::1;4527:8;;:15;;4513:29;;4570:1;4561:6;:10;4553:31;;;;;;;;;;;;;;;;;;;;;;4613:5;;:12;;4603:6;:22;:47;;;;;4639:4;;:11;;4629:6;:21;4603:47;:77;;;;;4664:9;;:16;;4654:6;:26;4603:77;:106;;;;;4694:8;;:15;;4684:6;:25;4603:106;4595:134;;;;;;;;;;;;;;;;;;;;;;1646:1;4753:36;4792:14;:24;4807:8;4792:24;;;;;;;;;;;4753:63;;4827:11;4841:13;:20;;;;4827:34;;4878:6;4887:1:::0;4878:10:::1;;4874:261;4894:8;;:15;;4890:1;:19;4874:261;;;4963:1;4954:6;:10;4939:8;;4948:1;4939:11;;;;;;;;;;;;;:25;4931:44;;;;;;;;;;;;;;;;;;;;;;4990:98;5015:13;5030:8;;5039:1;5030:11;;;;;;;;;;;;;5043:5;;5049:1;5043:8;;;;;;;;;;;;;;;;;;;;4990:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5053:8;;5062:1;5053:11;;;;;;;;;;;;;5066:4;;5071:1;5066:7;;;;;;;;;;;;;5075:9;;5085:1;5075:12;;;;;;;;;;;;;4990:24;:98::i;:::-;5112:8;;5121:1;5112:11;;;;;;;;;;;;;5103:20;;4911:3;;;;;;;4874:261;;;;5250:8;;:15;;5218:18;:28;5237:8;5218:28;;;;;;;;;;;;:47;;;;;;;;;;;1646:1;;4088:1185:::0;;;;;;;;;;;:::o;945:53::-;;;;;;;;;;;;;:::o;3202:350::-;1564:3;1556:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;;1603:11;;;;;;;;;;;1589:25;;:10;:25;;;1556:58;1548:87;;;;;;;;;;;;;;;;;;;;;;3358:24:::1;:34;3383:8;3358:34;;;;;;;;;;;;;;;;;;;;;3357:35;3349:59;;;;;;;;;;;;;;;;;;;;;;3456:4;3419:24;:34;3444:8;3419:34;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;3471:11;;;;;;;;;;;:27;;;3499:8;3509:3;3514:8;3524:19;3471:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3202:350:::0;;;;:::o;740:84:9:-;783:7;810:6;;;;;;;;;;;803:13;;740:84;:::o;1151:34:0:-;;;;;;;;;;;;;:::o;1343:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1051:35::-;;;;;;;;;;;;;:::o;1928:501::-;1192:12:8;;;;;;;;;;;:31;;;;1208:15;:13;:15::i;:::-;1192:31;:47;;;;1228:11;;;;;;;;;;;1227:12;1192:47;1184:79;;;;;;;;;;;;;;;;;;;;;;1272:19;1295:12;;;;;;;;;;;1294:13;1272:35;;1318:14;1314:83;;;1358:4;1343:12;;:19;;;;;;;;;;;;;;;;;;1385:4;1371:11;;:18;;;;;;;;;;;;;;;;;;1314:83;2078:1:0::1;2056:24;;:10;:24;;;;:52;;;;;2106:1;2084:24;;:10;:24;;;;2056:52;:79;;;;;2133:1;2112:23;;:9;:23;;;;2056:79;2048:104;;;;;;;;;;;;;;;;;;;;;;2163:28;2180:10;2163:16;:28::i;:::-;2254:42;2232:10;2224:73;2202:11;;:96;;;;;;;;;;;;;;;;;;2358:10;2309:11;;:60;;;;;;;;;;;;;;;;;;2411:9;2380:10;;:41;;;;;;;;;;;;;;;;;;1419:14:8::0;1415:57;;;1459:5;1444:12;;:20;;;;;;;;;;;;;;;;;;1415:57;1928:501:0;;;;:::o;1246:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;1457:47::-;;;;;;;;;;;;;;;;;:::o;496:236:9:-;588:1;568:22;;:8;:22;;;;560:44;;;;;;;;;;;;;;;;;;;;;;617:16;636:6;;;;;;;;;;;617:25;;662:8;653:6;;:17;;;;;;;;;;;;;;;;;;688:36;705:8;715;688:36;;;;;;;;;;;;;;;;496:236;;:::o;5336:358:0:-;5500:13;5519:166;;;;;;;;5556:7;5519:166;;;;5584:4;5519:166;;;;5611:6;5519:166;;;;5637:3;5519:166;;;;5665:8;5519:166;;;5500:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;5336:358;;;;;;:::o;1566:508:8:-;1613:4;1960:12;1983:4;1960:28;;1995:10;2041:4;2029:17;2023:23;;2067:1;2061:2;:7;2054:14;;;;1566:508;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;159:364;;;301:3;294:4;286:6;282:17;278:27;268:2;;319:1;316;309:12;268:2;352:6;339:20;329:30;;379:18;371:6;368:30;365:2;;;411:1;408;401:12;365:2;445:4;437:6;433:17;421:29;;496:3;488:4;480:6;476:17;466:8;462:32;459:41;456:2;;;513:1;510;503:12;456:2;261:262;;;;;;549:352;;;679:3;672:4;664:6;660:17;656:27;646:2;;697:1;694;687:12;646:2;730:6;717:20;707:30;;757:18;749:6;746:30;743:2;;;789:1;786;779:12;743:2;823:4;815:6;811:17;799:29;;874:3;866:4;858:6;854:17;844:8;840:32;837:41;834:2;;;891:1;888;881:12;834:2;639:262;;;;;;909:128;;990:6;984:13;975:22;;1002:30;1026:5;1002:30;;;969:68;;;;;1044:194;;1158:6;1152:13;1143:22;;1170:63;1227:5;1170:63;;;1137:101;;;;;1245:170;;1347:6;1341:13;1332:22;;1359:51;1404:5;1359:51;;;1326:89;;;;;1423:444;;1536:3;1529:4;1521:6;1517:17;1513:27;1503:2;;1554:1;1551;1544:12;1503:2;1584:6;1578:13;1606:65;1621:49;1663:6;1621:49;;;1606:65;;;1597:74;;1691:6;1684:5;1677:21;1727:4;1719:6;1715:17;1760:4;1753:5;1749:16;1795:3;1786:6;1781:3;1777:16;1774:25;1771:2;;;1812:1;1809;1802:12;1771:2;1822:39;1854:6;1849:3;1844;1822:39;;;1496:371;;;;;;;;1902:2097;;2032:6;2020:9;2015:3;2011:19;2007:32;2004:2;;;2052:1;2049;2042:12;2004:2;2070:22;2085:6;2070:22;;;2061:31;;2144:1;2176:57;2229:3;2220:6;2209:9;2205:22;2176:57;;;2169:4;2162:5;2158:16;2151:83;2102:143;2293:2;2326:60;2382:3;2373:6;2362:9;2358:22;2326:60;;;2319:4;2312:5;2308:16;2301:86;2255:143;2469:2;2458:9;2454:18;2448:25;2493:18;2485:6;2482:30;2479:2;;;2525:1;2522;2515:12;2479:2;2560:70;2626:3;2617:6;2606:9;2602:22;2560:70;;;2553:4;2546:5;2542:16;2535:96;2408:234;2700:2;2733:90;2819:3;2810:6;2799:9;2795:22;2733:90;;;2726:4;2719:5;2715:16;2708:116;2652:183;2890:3;2924:60;2980:3;2971:6;2960:9;2956:22;2924:60;;;2917:4;2910:5;2906:16;2899:86;2845:151;3050:3;3084:60;3140:3;3131:6;3120:9;3116:22;3084:60;;;3077:4;3070:5;3066:16;3059:86;3006:150;3211:3;3245:60;3301:3;3292:6;3281:9;3277:22;3245:60;;;3238:4;3231:5;3227:16;3220:86;3166:151;3374:3;3408:60;3464:3;3455:6;3444:9;3440:22;3408:60;;;3401:4;3394:5;3390:16;3383:86;3327:153;3540:3;3576:60;3632:3;3623:6;3612:9;3608:22;3576:60;;;3567:6;3560:5;3556:18;3549:88;3490:158;3709:3;3745:60;3801:3;3792:6;3781:9;3777:22;3745:60;;;3736:6;3729:5;3725:18;3718:88;3658:159;3884:3;3920:57;3973:3;3964:6;3953:9;3949:22;3920:57;;;3911:6;3904:5;3900:18;3893:85;3827:162;1998:2001;;;;;4029:920;;4155:4;4143:9;4138:3;4134:19;4130:30;4127:2;;;4173:1;4170;4163:12;4127:2;4191:20;4206:4;4191:20;;;4182:29;;4263:1;4295:57;4348:3;4339:6;4328:9;4324:22;4295:57;;;4288:4;4281:5;4277:16;4270:83;4221:143;4412:2;4445:60;4501:3;4492:6;4481:9;4477:22;4445:60;;;4438:4;4431:5;4427:16;4420:86;4374:143;4588:2;4577:9;4573:18;4567:25;4612:18;4604:6;4601:30;4598:2;;;4644:1;4641;4634:12;4598:2;4679:70;4745:3;4736:6;4725:9;4721:22;4679:70;;;4672:4;4665:5;4661:16;4654:96;4527:234;4816:2;4849:78;4923:3;4914:6;4903:9;4899:22;4849:78;;;4842:4;4835:5;4831:16;4824:104;4771:168;4121:828;;;;;4956:130;;5036:6;5023:20;5014:29;;5048:33;5075:5;5048:33;;;5008:78;;;;;5093:134;;5177:6;5171:13;5162:22;;5189:33;5216:5;5189:33;;;5156:71;;;;;5234:241;;5338:2;5326:9;5317:7;5313:23;5309:32;5306:2;;;5354:1;5351;5344:12;5306:2;5389:1;5406:53;5451:7;5442:6;5431:9;5427:22;5406:53;;;5396:63;;5368:97;5300:175;;;;;5482:491;;;;5620:2;5608:9;5599:7;5595:23;5591:32;5588:2;;;5636:1;5633;5626:12;5588:2;5671:1;5688:53;5733:7;5724:6;5713:9;5709:22;5688:53;;;5678:63;;5650:97;5778:2;5796:53;5841:7;5832:6;5821:9;5817:22;5796:53;;;5786:63;;5757:98;5886:2;5904:53;5949:7;5940:6;5929:9;5925:22;5904:53;;;5894:63;;5865:98;5582:391;;;;;;5980:257;;6092:2;6080:9;6071:7;6067:23;6063:32;6060:2;;;6108:1;6105;6098:12;6060:2;6143:1;6160:61;6213:7;6204:6;6193:9;6189:22;6160:61;;;6150:71;;6122:105;6054:183;;;;;6244:402;;6389:2;6377:9;6368:7;6364:23;6360:32;6357:2;;;6405:1;6402;6395:12;6357:2;6461:1;6450:9;6446:17;6440:24;6484:18;6476:6;6473:30;6470:2;;;6516:1;6513;6506:12;6470:2;6536:94;6622:7;6613:6;6602:9;6598:22;6536:94;;;6526:104;;6419:217;6351:295;;;;;6653:394;;6794:2;6782:9;6773:7;6769:23;6765:32;6762:2;;;6810:1;6807;6800:12;6762:2;6866:1;6855:9;6851:17;6845:24;6889:18;6881:6;6878:30;6875:2;;;6921:1;6918;6911:12;6875:2;6941:90;7023:7;7014:6;7003:9;6999:22;6941:90;;;6931:100;;6824:213;6756:291;;;;;7054:241;;7158:2;7146:9;7137:7;7133:23;7129:32;7126:2;;;7174:1;7171;7164:12;7126:2;7209:1;7226:53;7271:7;7262:6;7251:9;7247:22;7226:53;;;7216:63;;7188:97;7120:175;;;;;7302:522;;;;7458:2;7446:9;7437:7;7433:23;7429:32;7426:2;;;7474:1;7471;7464:12;7426:2;7509:1;7526:53;7571:7;7562:6;7551:9;7547:22;7526:53;;;7516:63;;7488:97;7644:2;7633:9;7629:18;7616:32;7668:18;7660:6;7657:30;7654:2;;;7700:1;7697;7690:12;7654:2;7728:80;7800:7;7791:6;7780:9;7776:22;7728:80;;;7718:90;;;;7595:219;7420:404;;;;;;7831:1675;;;;;;;;;;;;8208:3;8196:9;8187:7;8183:23;8179:33;8176:2;;;8225:1;8222;8215:12;8176:2;8260:1;8277:53;8322:7;8313:6;8302:9;8298:22;8277:53;;;8267:63;;8239:97;8395:2;8384:9;8380:18;8367:32;8419:18;8411:6;8408:30;8405:2;;;8451:1;8448;8441:12;8405:2;8479:80;8551:7;8542:6;8531:9;8527:22;8479:80;;;8469:90;;;;8346:219;8624:2;8613:9;8609:18;8596:32;8648:18;8640:6;8637:30;8634:2;;;8680:1;8677;8670:12;8634:2;8708:92;8792:7;8783:6;8772:9;8768:22;8708:92;;;8698:102;;;;8575:231;8865:2;8854:9;8850:18;8837:32;8889:18;8881:6;8878:30;8875:2;;;8921:1;8918;8911:12;8875:2;8949:80;9021:7;9012:6;9001:9;8997:22;8949:80;;;8939:90;;;;8816:219;9094:3;9083:9;9079:19;9066:33;9119:18;9111:6;9108:30;9105:2;;;9151:1;9148;9141:12;9105:2;9179:80;9251:7;9242:6;9231:9;9227:22;9179:80;;;9169:90;;;;9045:220;9324:3;9313:9;9309:19;9296:33;9349:18;9341:6;9338:30;9335:2;;;9381:1;9378;9371:12;9335:2;9410:80;9482:7;9473:6;9462:9;9458:22;9410:80;;;9399:91;;;;9275:221;8170:1336;;;;;;;;;;;;;;;9513:366;;;9634:2;9622:9;9613:7;9609:23;9605:32;9602:2;;;9650:1;9647;9640:12;9602:2;9685:1;9702:53;9747:7;9738:6;9727:9;9723:22;9702:53;;;9692:63;;9664:97;9792:2;9810:53;9855:7;9846:6;9835:9;9831:22;9810:53;;;9800:63;;9771:98;9596:283;;;;;;9886:617;;;;;10041:3;10029:9;10020:7;10016:23;10012:33;10009:2;;;10058:1;10055;10048:12;10009:2;10093:1;10110:53;10155:7;10146:6;10135:9;10131:22;10110:53;;;10100:63;;10072:97;10200:2;10218:53;10263:7;10254:6;10243:9;10239:22;10218:53;;;10208:63;;10179:98;10308:2;10326:53;10371:7;10362:6;10351:9;10347:22;10326:53;;;10316:63;;10287:98;10416:2;10434:53;10479:7;10470:6;10459:9;10455:22;10434:53;;;10424:63;;10395:98;10003:500;;;;;;;;10510:617;;;;;10665:3;10653:9;10644:7;10640:23;10636:33;10633:2;;;10682:1;10679;10672:12;10633:2;10717:1;10734:53;10779:7;10770:6;10759:9;10755:22;10734:53;;;10724:63;;10696:97;10824:2;10842:53;10887:7;10878:6;10867:9;10863:22;10842:53;;;10832:63;;10803:98;10932:2;10950:53;10995:7;10986:6;10975:9;10971:22;10950:53;;;10940:63;;10911:98;11040:2;11058:53;11103:7;11094:6;11083:9;11079:22;11058:53;;;11048:63;;11019:98;10627:500;;;;;;;;11134:113;11217:24;11235:5;11217:24;;;11212:3;11205:37;11199:48;;;11254:104;11331:21;11346:5;11331:21;;;11326:3;11319:34;11313:45;;;11365:210;11490:79;11563:5;11490:79;;;11485:3;11478:92;11472:103;;;11582:176;11690:62;11746:5;11690:62;;;11685:3;11678:75;11672:86;;;11765:347;;11877:39;11910:5;11877:39;;;11928:71;11992:6;11987:3;11928:71;;;11921:78;;12004:52;12049:6;12044:3;12037:4;12030:5;12026:16;12004:52;;;12077:29;12099:6;12077:29;;;12072:3;12068:39;12061:46;;11857:255;;;;;;12120:302;;12280:66;12344:1;12339:3;12280:66;;;12273:73;;12379:5;12375:1;12370:3;12366:11;12359:26;12413:2;12408:3;12404:12;12397:19;;12266:156;;;;12431:311;;12591:67;12655:2;12650:3;12591:67;;;12584:74;;12691:13;12687:1;12682:3;12678:11;12671:34;12733:2;12728:3;12724:12;12717:19;;12577:165;;;;12751:310;;12911:67;12975:2;12970:3;12911:67;;;12904:74;;13011:12;13007:1;13002:3;12998:11;12991:33;13052:2;13047:3;13043:12;13036:19;;12897:164;;;;13070:312;;13230:67;13294:2;13289:3;13230:67;;;13223:74;;13330:14;13326:1;13321:3;13317:11;13310:35;13373:2;13368:3;13364:12;13357:19;;13216:166;;;;13391:316;;13551:67;13615:2;13610:3;13551:67;;;13544:74;;13651:18;13647:1;13642:3;13638:11;13631:39;13698:2;13693:3;13689:12;13682:19;;13537:170;;;;13716:308;;13876:66;13940:1;13935:3;13876:66;;;13869:73;;13975:11;13971:1;13966:3;13962:11;13955:32;14015:2;14010:3;14006:12;13999:19;;13862:162;;;;14033:319;;14193:67;14257:2;14252:3;14193:67;;;14186:74;;14293:21;14289:1;14284:3;14280:11;14273:42;14343:2;14338:3;14334:12;14327:19;;14179:173;;;;14361:311;;14521:67;14585:2;14580:3;14521:67;;;14514:74;;14621:13;14617:1;14612:3;14608:11;14601:34;14663:2;14658:3;14654:12;14647:19;;14507:165;;;;14681:308;;14841:66;14905:1;14900:3;14841:66;;;14834:73;;14940:11;14936:1;14931:3;14927:11;14920:32;14980:2;14975:3;14971:12;14964:19;;14827:162;;;;14998:305;;15158:66;15222:1;15217:3;15158:66;;;15151:73;;15257:8;15253:1;15248:3;15244:11;15237:29;15294:2;15289:3;15285:12;15278:19;;15144:159;;;;15312:314;;15472:67;15536:2;15531:3;15472:67;;;15465:74;;15572:16;15568:1;15563:3;15559:11;15552:37;15617:2;15612:3;15608:12;15601:19;;15458:168;;;;15635:307;;15795:66;15859:1;15854:3;15795:66;;;15788:73;;15894:10;15890:1;15885:3;15881:11;15874:31;15933:2;15928:3;15924:12;15917:19;;15781:161;;;;15951:308;;16111:66;16175:1;16170:3;16111:66;;;16104:73;;16210:11;16206:1;16201:3;16197:11;16190:32;16250:2;16245:3;16241:12;16234:19;;16097:162;;;;16268:315;;16428:67;16492:2;16487:3;16428:67;;;16421:74;;16528:17;16524:1;16519:3;16515:11;16508:38;16574:2;16569:3;16565:12;16558:19;;16414:169;;;;16592:307;;16752:66;16816:1;16811:3;16752:66;;;16745:73;;16851:10;16847:1;16842:3;16838:11;16831:31;16890:2;16885:3;16881:12;16874:19;;16738:161;;;;16907:113;16990:24;17008:5;16990:24;;;16985:3;16978:37;16972:48;;;17027:222;;17154:2;17143:9;17139:18;17131:26;;17168:71;17236:1;17225:9;17221:17;17212:6;17168:71;;;17125:124;;;;;17256:333;;17411:2;17400:9;17396:18;17388:26;;17425:71;17493:1;17482:9;17478:17;17469:6;17425:71;;;17507:72;17575:2;17564:9;17560:18;17551:6;17507:72;;;17382:207;;;;;;17596:333;;17751:2;17740:9;17736:18;17728:26;;17765:71;17833:1;17822:9;17818:17;17809:6;17765:71;;;17847:72;17915:2;17904:9;17900:18;17891:6;17847:72;;;17722:207;;;;;;17936:210;;18057:2;18046:9;18042:18;18034:26;;18071:65;18133:1;18122:9;18118:17;18109:6;18071:65;;;18028:118;;;;;18153:306;;18322:2;18311:9;18307:18;18299:26;;18336:113;18446:1;18435:9;18431:17;18422:6;18336:113;;;18293:166;;;;;18466:272;;18618:2;18607:9;18603:18;18595:26;;18632:96;18725:1;18714:9;18710:17;18701:6;18632:96;;;18589:149;;;;;18745:532;;18948:2;18937:9;18933:18;18925:26;;18998:9;18992:4;18988:20;18984:1;18973:9;18969:17;18962:47;19023:78;19096:4;19087:6;19023:78;;;19015:86;;19112:72;19180:2;19169:9;19165:18;19156:6;19112:72;;;19195;19263:2;19252:9;19248:18;19239:6;19195:72;;;18919:358;;;;;;;19284:416;;19484:2;19473:9;19469:18;19461:26;;19534:9;19528:4;19524:20;19520:1;19509:9;19505:17;19498:47;19559:131;19685:4;19559:131;;;19551:139;;19455:245;;;;19707:416;;19907:2;19896:9;19892:18;19884:26;;19957:9;19951:4;19947:20;19943:1;19932:9;19928:17;19921:47;19982:131;20108:4;19982:131;;;19974:139;;19878:245;;;;20130:416;;20330:2;20319:9;20315:18;20307:26;;20380:9;20374:4;20370:20;20366:1;20355:9;20351:17;20344:47;20405:131;20531:4;20405:131;;;20397:139;;20301:245;;;;20553:416;;20753:2;20742:9;20738:18;20730:26;;20803:9;20797:4;20793:20;20789:1;20778:9;20774:17;20767:47;20828:131;20954:4;20828:131;;;20820:139;;20724:245;;;;20976:416;;21176:2;21165:9;21161:18;21153:26;;21226:9;21220:4;21216:20;21212:1;21201:9;21197:17;21190:47;21251:131;21377:4;21251:131;;;21243:139;;21147:245;;;;21399:416;;21599:2;21588:9;21584:18;21576:26;;21649:9;21643:4;21639:20;21635:1;21624:9;21620:17;21613:47;21674:131;21800:4;21674:131;;;21666:139;;21570:245;;;;21822:416;;22022:2;22011:9;22007:18;21999:26;;22072:9;22066:4;22062:20;22058:1;22047:9;22043:17;22036:47;22097:131;22223:4;22097:131;;;22089:139;;21993:245;;;;22245:416;;22445:2;22434:9;22430:18;22422:26;;22495:9;22489:4;22485:20;22481:1;22470:9;22466:17;22459:47;22520:131;22646:4;22520:131;;;22512:139;;22416:245;;;;22668:416;;22868:2;22857:9;22853:18;22845:26;;22918:9;22912:4;22908:20;22904:1;22893:9;22889:17;22882:47;22943:131;23069:4;22943:131;;;22935:139;;22839:245;;;;23091:416;;23291:2;23280:9;23276:18;23268:26;;23341:9;23335:4;23331:20;23327:1;23316:9;23312:17;23305:47;23366:131;23492:4;23366:131;;;23358:139;;23262:245;;;;23514:416;;23714:2;23703:9;23699:18;23691:26;;23764:9;23758:4;23754:20;23750:1;23739:9;23735:17;23728:47;23789:131;23915:4;23789:131;;;23781:139;;23685:245;;;;23937:416;;24137:2;24126:9;24122:18;24114:26;;24187:9;24181:4;24177:20;24173:1;24162:9;24158:17;24151:47;24212:131;24338:4;24212:131;;;24204:139;;24108:245;;;;24360:416;;24560:2;24549:9;24545:18;24537:26;;24610:9;24604:4;24600:20;24596:1;24585:9;24581:17;24574:47;24635:131;24761:4;24635:131;;;24627:139;;24531:245;;;;24783:416;;24983:2;24972:9;24968:18;24960:26;;25033:9;25027:4;25023:20;25019:1;25008:9;25004:17;24997:47;25058:131;25184:4;25058:131;;;25050:139;;24954:245;;;;25206:416;;25406:2;25395:9;25391:18;25383:26;;25456:9;25450:4;25446:20;25442:1;25431:9;25427:17;25420:47;25481:131;25607:4;25481:131;;;25473:139;;25377:245;;;;25629:222;;25756:2;25745:9;25741:18;25733:26;;25770:71;25838:1;25827:9;25823:17;25814:6;25770:71;;;25727:124;;;;;25858:756;;26117:3;26106:9;26102:19;26094:27;;26132:71;26200:1;26189:9;26185:17;26176:6;26132:71;;;26251:9;26245:4;26241:20;26236:2;26225:9;26221:18;26214:48;26276:78;26349:4;26340:6;26276:78;;;26268:86;;26365:72;26433:2;26422:9;26418:18;26409:6;26365:72;;;26448;26516:2;26505:9;26501:18;26492:6;26448:72;;;26531:73;26599:3;26588:9;26584:19;26575:6;26531:73;;;26088:526;;;;;;;;;26621:333;;26776:2;26765:9;26761:18;26753:26;;26790:71;26858:1;26847:9;26843:17;26834:6;26790:71;;;26872:72;26940:2;26929:9;26925:18;26916:6;26872:72;;;26747:207;;;;;;26961:556;;27172:3;27161:9;27157:19;27149:27;;27187:71;27255:1;27244:9;27240:17;27231:6;27187:71;;;27269:72;27337:2;27326:9;27322:18;27313:6;27269:72;;;27352;27420:2;27409:9;27405:18;27396:6;27352:72;;;27435;27503:2;27492:9;27488:18;27479:6;27435:72;;;27143:374;;;;;;;;27524:556;;27735:3;27724:9;27720:19;27712:27;;27750:71;27818:1;27807:9;27803:17;27794:6;27750:71;;;27832:72;27900:2;27889:9;27885:18;27876:6;27832:72;;;27915;27983:2;27972:9;27968:18;27959:6;27915:72;;;27998;28066:2;28055:9;28051:18;28042:6;27998:72;;;27706:374;;;;;;;;28087:668;;28326:3;28315:9;28311:19;28303:27;;28341:71;28409:1;28398:9;28394:17;28385:6;28341:71;;;28423:72;28491:2;28480:9;28476:18;28467:6;28423:72;;;28506;28574:2;28563:9;28559:18;28550:6;28506:72;;;28589;28657:2;28646:9;28642:18;28633:6;28589:72;;;28672:73;28740:3;28729:9;28725:19;28716:6;28672:73;;;28297:458;;;;;;;;;28762:507;;;28898:11;28885:25;28994:1;28988:4;28984:12;28973:8;28957:14;28953:29;28949:48;28929:18;28925:73;28915:2;;29012:1;29009;29002:12;28915:2;29043:18;29033:8;29029:33;29021:41;;29096:4;29083:18;29073:28;;29121:18;29113:6;29110:30;29107:2;;;29153:1;29150;29143:12;29107:2;29181;29175:4;29171:13;29163:21;;29235:4;29227:6;29223:17;29207:14;29203:38;29197:4;29193:49;29190:2;;;29255:1;29252;29245:12;29190:2;28853:416;;;;;;;29276:256;;29338:2;29332:9;29322:19;;29376:4;29368:6;29364:17;29475:6;29463:10;29460:22;29439:18;29427:10;29424:34;29421:62;29418:2;;;29496:1;29493;29486:12;29418:2;29516:10;29512:2;29505:22;29316:216;;;;;29539:322;;29683:18;29675:6;29672:30;29669:2;;;29715:1;29712;29705:12;29669:2;29782:4;29778:9;29771:4;29763:6;29759:17;29755:33;29747:41;;29846:4;29840;29836:15;29828:23;;29606:255;;;;29868:122;;29962:5;29956:12;29946:22;;29927:63;;;;29998:163;;30113:6;30108:3;30101:19;30150:4;30145:3;30141:14;30126:29;;30094:67;;;;;30169:91;;30231:24;30249:5;30231:24;;;30220:35;;30214:46;;;;30267:85;;30340:5;30333:13;30326:21;30315:32;;30309:43;;;;30359:121;;30451:24;30469:5;30451:24;;;30440:35;;30434:46;;;;30487:109;;30567:24;30585:5;30567:24;;;30556:35;;30550:46;;;;30603:121;;30676:42;30669:5;30665:54;30654:65;;30648:76;;;;30731:72;;30793:5;30782:16;;30776:27;;;;30810:205;;30931:79;31004:5;30931:79;;;30918:92;;30912:103;;;;31022:150;;31143:24;31161:5;31143:24;;;31130:37;;31124:48;;;;31179:171;;31283:62;31339:5;31283:62;;;31270:75;;31264:86;;;;31357:133;;31461:24;31479:5;31461:24;;;31448:37;;31442:48;;;;31498:268;31563:1;31570:101;31584:6;31581:1;31578:13;31570:101;;;31660:1;31655:3;31651:11;31645:18;31641:1;31636:3;31632:11;31625:39;31606:2;31603:1;31599:10;31594:15;;31570:101;;;31686:6;31683:1;31680:13;31677:2;;;31751:1;31742:6;31737:3;31733:16;31726:27;31677:2;31547:219;;;;;31774:97;;31862:2;31858:7;31853:2;31846:5;31842:14;31838:28;31828:38;;31822:49;;;;31879:117;31948:24;31966:5;31948:24;;;31941:5;31938:35;31928:2;;31987:1;31984;31977:12;31928:2;31922:74;;32003:111;32069:21;32084:5;32069:21;;;32062:5;32059:32;32049:2;;32105:1;32102;32095:12;32049:2;32043:71;;32121:177;32220:54;32268:5;32220:54;;;32213:5;32210:65;32200:2;;32289:1;32286;32279:12;32200:2;32194:104;;32305:153;32392:42;32428:5;32392:42;;;32385:5;32382:53;32372:2;;32449:1;32446;32439:12;32372:2;32366:92;;32465:117;32534:24;32552:5;32534:24;;;32527:5;32524:35;32514:2;;32573:1;32570;32563:12;32514:2;32508:74;
Metadata Hash
84c1992b9c9d915d6e995a5730032a3a7ffed679957da1cbee6bc28140351472
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.