More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,202 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Cross | 18210337 | 1 hr ago | IN | 0.00235051 ETH | 0.00000812 | ||||
Aggregate | 18210323 | 1 hr ago | IN | 0 ETH | 0.00002017 | ||||
Exact Input V3Sw... | 18203174 | 6 hrs ago | IN | 0.00231516 ETH | 0.00003702 | ||||
Exact Input V3Sw... | 18185835 | 22 hrs ago | IN | 0.0032 ETH | 0.00001324 | ||||
Exact Input V3Sw... | 18185812 | 22 hrs ago | IN | 0 ETH | 0.00002874 | ||||
Aggregate | 18185784 | 22 hrs ago | IN | 0.00938428 ETH | 0.00003574 | ||||
Cross | 18183775 | 24 hrs ago | IN | 0 ETH | 0.00003967 | ||||
Exact Input V3Sw... | 18134845 | 2 days ago | IN | 0.00364223 ETH | 0.00003655 | ||||
Exact Input V3Sw... | 18131181 | 2 days ago | IN | 0 ETH | 0.00004458 | ||||
Exact Input V3Sw... | 18131166 | 2 days ago | IN | 0.0089 ETH | 0.000065 | ||||
Aggregate | 18093476 | 3 days ago | IN | 0 ETH | 0.00001848 | ||||
Cross | 18091796 | 4 days ago | IN | 0 ETH | 0.00006956 | ||||
Aggregate | 18073518 | 4 days ago | IN | 0 ETH | 0.00001752 | ||||
Cross | 18068509 | 4 days ago | IN | 0.273 ETH | 0.00001018 | ||||
Cross | 18055950 | 5 days ago | IN | 0.002 ETH | 0.00000748 | ||||
Cross | 18030746 | 5 days ago | IN | 0.03804718 ETH | 0.00006052 | ||||
Cross | 18023243 | 6 days ago | IN | 0.02927394 ETH | 0.00001095 | ||||
Cross | 18022121 | 6 days ago | IN | 0.029 ETH | 0.0000068 | ||||
Cross | 18020663 | 6 days ago | IN | 0.02608 ETH | 0.00000717 | ||||
Exact Input V3Sw... | 17983252 | 7 days ago | IN | 0.02184251 ETH | 0.00002296 | ||||
Cross | 17982389 | 7 days ago | IN | 0.00103356 ETH | 0.00000749 | ||||
Cross | 17973868 | 7 days ago | IN | 0.00335443 ETH | 0.00000831 | ||||
Cross | 17972815 | 7 days ago | IN | 0.01013727 ETH | 0.00000922 | ||||
Cross | 17972158 | 7 days ago | IN | 0.00529792 ETH | 0.00002069 | ||||
Cross | 17970414 | 7 days ago | IN | 0.00076222 ETH | 0.00002675 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18210337 | 1 hr ago | 0 ETH | ||||
18210337 | 1 hr ago | 0.00234581 ETH | ||||
18210323 | 1 hr ago | 0 ETH | ||||
18210323 | 1 hr ago | 0 ETH | ||||
18210323 | 1 hr ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0 ETH | ||||
18203174 | 6 hrs ago | 0.00230822 ETH | ||||
18185835 | 22 hrs ago | 0 ETH | ||||
18185835 | 22 hrs ago | 0 ETH | ||||
18185835 | 22 hrs ago | 0 ETH | ||||
18185835 | 22 hrs ago | 0 ETH | ||||
18185835 | 22 hrs ago | 0 ETH |
Loading...
Loading
Contract Name:
TransitSwapRouterV5
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity =0.8.20; import "./UniswapV2Router.sol"; import "./UniswapV3Router.sol"; import "./AggregateRouter.sol"; import "./CrossRouter.sol"; contract TransitSwapRouterV5 is UniswapV2Router, UniswapV3Router, AggregateRouter, CrossRouter { function withdrawTokens(address[] memory tokens, address recipient) external onlyExecutor { for (uint index; index < tokens.length; index++) { uint amount; if (TransferHelper.isETH(tokens[index])) { amount = address(this).balance; TransferHelper.safeTransferETH(recipient, amount); } else { amount = IERC20(tokens[index]).balanceOf(address(this)); TransferHelper.safeTransferWithoutRequire(tokens[index], recipient, amount); } emit Withdraw(tokens[index], msg.sender, recipient, amount); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./BaseCore.sol"; contract AggregateRouter is BaseCore { using SafeMath for uint256; constructor() { } function aggregateAndGasUsed(TransitSwapDescription calldata desc, CallbytesDescription calldata callbytesDesc) external payable returns (uint256 returnAmount, uint256 gasUsed) { uint256 gasLeftBefore = gasleft(); returnAmount = _executeAggregate(desc, callbytesDesc); gasUsed = gasLeftBefore - gasleft(); } function aggregate(TransitSwapDescription calldata desc, CallbytesDescription calldata callbytesDesc) external payable returns (uint256 returnAmount) { returnAmount = _executeAggregate(desc, callbytesDesc); } function _executeAggregate(TransitSwapDescription calldata desc, CallbytesDescription calldata callbytesDesc) internal nonReentrant whenNotPaused(FunctionFlag.executeAggregate) returns (uint256 returnAmount) { require(callbytesDesc.calldatas.length > 0, "data should be not zero"); require(desc.amount > 0, "amount should be greater than 0"); require(desc.dstReceiver != address(0), "receiver should be not address(0)"); require(desc.minReturnAmount > 0, "minReturnAmount should be greater than 0"); require(_wrapped_allowed[desc.wrappedToken], "invalid wrapped address"); uint256 toBeforeBalance; address bridgeAddress = _aggregate_bridge; uint256 swapAmount = executeFunds(FunctionFlag.executeAggregate, desc.srcToken, desc.wrappedToken, bridgeAddress, desc.amount, desc.fee, desc.signature); if (TransferHelper.isETH(desc.dstToken)) { toBeforeBalance = desc.dstReceiver.balance; } else { toBeforeBalance = IERC20(desc.dstToken).balanceOf(desc.dstReceiver); } { //bytes4(keccak256(bytes('callbytes(CallbytesDescription)'))); (bool success, bytes memory result) = bridgeAddress.call{value : swapAmount}(abi.encodeWithSelector(0x3f3204d2, callbytesDesc)); if (!success) { revert(RevertReasonParser.parse(result, "TransitSwap:")); } } if (TransferHelper.isETH(desc.dstToken)) { returnAmount = desc.dstReceiver.balance.sub(toBeforeBalance); } else { returnAmount = IERC20(desc.dstToken).balanceOf(desc.dstReceiver).sub(toBeforeBalance); } require(returnAmount >= desc.minReturnAmount, "Too little received"); _emitTransit(desc.srcToken, desc.dstToken, desc.dstReceiver, desc.amount, returnAmount, 0, desc.channel); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Pausable.sol"; import "./ReentrancyGuard.sol"; import "./TransferHelper.sol"; import "./RevertReasonParser.sol"; import "./SafeMath.sol"; import "./Ownable.sol"; import "./IERC20.sol"; import "./IUniswapV2.sol"; import "./IUniswapV3Pool.sol"; contract BaseCore is Ownable, Pausable, ReentrancyGuard { using SafeMath for uint256; struct ExactInputV2SwapParams { address dstReceiver; address wrappedToken; uint256 router; uint256 amount; uint256 minReturnAmount; uint256 fee; address[] path; address[] pool; bytes signature; string channel; } struct ExactInputV3SwapParams { address srcToken; address dstToken; address dstReceiver; address wrappedToken; uint256 amount; uint256 minReturnAmount; uint256 fee; uint256 deadline; uint256[] pools; bytes signature; string channel; } struct TransitSwapDescription { address srcToken; address dstToken; address dstReceiver; address wrappedToken; uint256 amount; uint256 minReturnAmount; uint256 fee; string channel; bytes signature; } struct CrossDescription { address srcToken; address dstToken; address caller; address dstReceiver; address wrappedToken; uint256 amount; uint256 fee; uint256 toChain; string channel; bytes calls; bytes signature; } struct CallbytesDescription { address srcToken; bytes calldatas; } struct UniswapV3Pool { address factory; bytes initCodeHash; } uint256 internal _aggregate_fee; uint256 internal _cross_fee; address internal _aggregate_bridge; address internal _fee_signer; address internal _vault; bytes32 public DOMAIN_SEPARATOR; //whitelist cross's caller mapping(address => bool) internal _cross_caller_allowed; //whitelist wrapped mapping(address => bool) internal _wrapped_allowed; //whitelist uniswap v3 factory mapping(uint => UniswapV3Pool) internal _uniswapV3_factory_allowed; bytes32 public constant CHECKFEE_TYPEHASH = keccak256("CheckFee(address payer,uint256 amount,uint256 fee)"); event Receipt(address from, uint256 amount); event Withdraw(address indexed token, address indexed executor, address indexed recipient, uint amount); event ChangeWrappedAllowed(address[] wrappedTokens, bool[] newAllowed); event ChangeV3FactoryAllowed(uint256[] poolIndex, address[] factories, bytes[] initCodeHash); event ChangeCrossCallerAllowed(address[] callers); event ChangeFeeRate(bool isAggregate, uint256 newRate); event ChangeSigner(address preSigner, address newSigner); event ChangeAggregateBridge(address newBridge); event ChangeVault(address preVault, address newVault); event TransitSwapped(address indexed srcToken, address indexed dstToken, address indexed dstReceiver, uint256 amount, uint256 returnAmount, uint256 toChainID, string channel); constructor() Ownable(msg.sender) { DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes("TransitSwapV5")), keccak256(bytes("5")), block.chainid, address(this) ) ); } receive() external payable { emit Receipt(msg.sender, msg.value); } function calculateTradeFee(bool isAggregate, uint256 tradeAmount, uint256 fee, bytes calldata signature) internal view returns (uint256) { uint256 thisFee; if (isAggregate) { thisFee = tradeAmount.mul(_aggregate_fee).div(10000); } else { thisFee = tradeAmount.mul(_cross_fee).div(10000); } if (fee < thisFee) { require(verifySignature(tradeAmount, fee, signature), "Invalid signature fee"); } return tradeAmount.sub(fee); } function _emitTransit(address srcToken, address dstToken, address dstReceiver, uint256 amount, uint256 returnAmount, uint256 toChainID, string memory channel) internal { emit TransitSwapped ( srcToken, dstToken, dstReceiver, amount, returnAmount, toChainID, channel ); } function changeFee(bool[] memory isAggregate, uint256[] memory newRate) external onlyExecutor { for (uint i; i < isAggregate.length; i++) { require(newRate[i] >= 0 && newRate[i] <= 1000, "fee rate is:0-1000"); if (isAggregate[i]) { _aggregate_fee = newRate[i]; } else { _cross_fee = newRate[i]; } emit ChangeFeeRate(isAggregate[i], newRate[i]); } } function changeTransitProxy(address aggregator, address signer, address vault) external onlyExecutor { if (aggregator != address(0)) { _aggregate_bridge = aggregator; emit ChangeAggregateBridge(aggregator); } if (signer != address(0)) { address preSigner = _fee_signer; _fee_signer = signer; emit ChangeSigner(preSigner, signer); } if (vault != address(0)) { address preVault = _vault; _vault = vault; emit ChangeVault(preVault, vault); } } function changeAllowed(address[] calldata crossCallers, address[] calldata wrappedTokens) public onlyExecutor { if(crossCallers.length != 0){ for (uint i; i < crossCallers.length; i++) { _cross_caller_allowed[crossCallers[i]] = !_cross_caller_allowed[crossCallers[i]]; } emit ChangeCrossCallerAllowed(crossCallers); } if(wrappedTokens.length != 0) { bool[] memory newAllowed = new bool[](wrappedTokens.length); for (uint index; index < wrappedTokens.length; index++) { _wrapped_allowed[wrappedTokens[index]] = !_wrapped_allowed[wrappedTokens[index]]; newAllowed[index] = _wrapped_allowed[wrappedTokens[index]]; } emit ChangeWrappedAllowed(wrappedTokens, newAllowed); } } function changeUniswapV3FactoryAllowed(uint[] calldata poolIndex, address[] calldata factories, bytes[] calldata initCodeHash) public onlyExecutor { require(poolIndex.length == initCodeHash.length, "invalid data"); require(factories.length == initCodeHash.length, "invalid data"); uint len = factories.length; for (uint i; i < len; i++) { _uniswapV3_factory_allowed[poolIndex[i]] = UniswapV3Pool(factories[i],initCodeHash[i]); } emit ChangeV3FactoryAllowed(poolIndex, factories, initCodeHash); } function changePause(bool paused, FunctionFlag[] calldata flags) external onlyExecutor { uint len = flags.length; for (uint i; i < len; i++) { if (paused) { _pause(flags[i]); } else { _unpause(flags[i]); } } } function transitProxyAddress() external view returns (address bridgeProxy, address feeSigner) { bridgeProxy = _aggregate_bridge; feeSigner = _fee_signer; } function transitFee() external view returns (uint256, uint256, address) { return (_aggregate_fee, _cross_fee, _vault); } function transitAllowedQuery(address crossCaller, address wrappedToken, uint256 poolIndex) external view returns (bool isCrossCallerAllowed, bool isWrappedAllowed, UniswapV3Pool memory pool) { isCrossCallerAllowed = _cross_caller_allowed[crossCaller]; isWrappedAllowed = _wrapped_allowed[wrappedToken]; pool = _uniswapV3_factory_allowed[poolIndex]; } function verifySignature(uint256 amount, uint256 fee, bytes calldata signature) internal view returns (bool) { bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256(abi.encode(CHECKFEE_TYPEHASH, msg.sender, amount, fee)) ) ); (uint8 v, bytes32 r, bytes32 s) = splitSignature(signature); address recovered = ecrecover(digest, v, r, s); return recovered == _fee_signer; } function splitSignature(bytes memory _signature) internal pure returns (uint8 v, bytes32 r, bytes32 s) { require(bytes(_signature).length == 65, "Invalid signature length"); assembly { r := mload(add(_signature, 0x20)) s := mload(add(_signature, 0x40)) v := byte(0, mload(add(_signature, 0x60))) } return (v, r, s); } function splitFee(uint256 fee) internal view returns (bool isToVault, uint256 vaultFee) { uint vaultFlag = fee % 10; vaultFee = (fee.sub(vaultFlag)).div(10); if (vaultFlag == 1 && vaultFee > 0 && _vault != address(0)) { isToVault = true; } } function executeFunds(FunctionFlag flag, address srcToken, address wrappedToken, address caller, uint256 amount, uint256 fee, bytes calldata signature) internal returns (uint256 swapAmount) { (bool isToVault, uint256 vaultFee) = splitFee(fee); bool isAggregate = flag == FunctionFlag.cross ? false : true; uint256 actualAmountIn = calculateTradeFee(isAggregate, amount, vaultFee, signature); if (TransferHelper.isETH(srcToken)) { if (flag == FunctionFlag.cross) { require(msg.value >= amount, "invalid msg.value"); swapAmount = msg.value.sub(vaultFee); } else { require(msg.value == amount, "invalid msg.value"); swapAmount = actualAmountIn; } if (wrappedToken != address(0)) { require(_wrapped_allowed[wrappedToken], "Invalid wrapped address"); if (flag == FunctionFlag.cross) { TransferHelper.safeDeposit(wrappedToken, swapAmount); TransferHelper.safeApprove(wrappedToken, caller, swapAmount); swapAmount = 0; } else if (flag == FunctionFlag.executeV3Swap) { TransferHelper.safeDeposit(wrappedToken, actualAmountIn); } } if (isToVault) { TransferHelper.safeTransferETH(_vault, vaultFee); } } else { TransferHelper.safeTransferFrom(srcToken, msg.sender, address(this), amount); if (flag == FunctionFlag.cross) { TransferHelper.safeApprove(srcToken, caller, actualAmountIn); swapAmount = msg.value; } else if (flag == FunctionFlag.executeAggregate) { TransferHelper.safeTransfer(srcToken, caller, actualAmountIn); } else if (flag == FunctionFlag.executeV3Swap) { swapAmount = actualAmountIn; } if (isToVault) { TransferHelper.safeTransferWithoutRequire(srcToken, _vault, vaultFee); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./BaseCore.sol"; contract CrossRouter is BaseCore { using SafeMath for uint256; constructor() {} function cross(CrossDescription calldata desc) external payable nonReentrant whenNotPaused(FunctionFlag.cross) { require(desc.calls.length > 0, "data should be not zero"); require(desc.amount > 0, "amount should be greater than 0"); require(_cross_caller_allowed[desc.caller], "invalid caller"); uint256 swapAmount = executeFunds(FunctionFlag.cross, desc.srcToken, desc.wrappedToken, desc.caller, desc.amount, desc.fee, desc.signature); { (bool success, bytes memory result) = desc.caller.call{value:swapAmount}(desc.calls); if (!success) { revert(RevertReasonParser.parse(result, "TransitCrossV5:")); } TransferHelper.safeApprove(desc.srcToken, desc.caller, 0); } _emitTransit(desc.srcToken, desc.dstToken, desc.dstReceiver, desc.amount, 0, desc.toChain, desc.channel); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.9; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function name() external view returns (string memory); function symbol() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.9; interface IUniswapV2 { function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountsOut(uint amountIn, address[] memory path) external view returns (uint[] memory amounts); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; interface IUniswapV3Pool { function token0() external view returns (address); function token1() external view returns (address); function fee() external view returns (uint24); function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data ) external returns (int256 amount0, int256 amount1); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) // Add executor extension pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable { address private _executor; address private _pendingExecutor; bool internal _initialized; event ExecutorshipTransferStarted(address indexed previousExecutor, address indexed newExecutor); event ExecutorshipTransferred(address indexed previousExecutor, address indexed newExecutor); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor(address newExecutor) { require(!_initialized, "Ownable: initialized"); _transferExecutorship(newExecutor); _initialized = true; } /** * @dev Throws if called by any account other than the executor. */ modifier onlyExecutor() { _checkExecutor(); _; } /** * @dev Returns the address of the current executor. */ function executor() public view virtual returns (address) { return _executor; } /** * @dev Returns the address of the pending executor. */ function pendingExecutor() public view virtual returns (address) { return _pendingExecutor; } /** * @dev Throws if the sender is not the executor. */ function _checkExecutor() internal view virtual { require(executor() == msg.sender, "Ownable: caller is not the executor"); } /** * @dev Transfers executorship of the contract to a new account (`newExecutor`). * Can only be called by the current executor. */ function transferExecutorship(address newExecutor) public virtual onlyExecutor { _pendingExecutor = newExecutor; emit ExecutorshipTransferStarted(executor(), newExecutor); } function _transferExecutorship(address newExecutor) internal virtual { delete _pendingExecutor; address oldExecutor = _executor; _executor = newExecutor; emit ExecutorshipTransferred(oldExecutor, newExecutor); } function acceptExecutorship() external { address sender = msg.sender; require(pendingExecutor() == sender, "Ownable: caller is not the new executor"); _transferExecutorship(sender); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @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 { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account, FunctionFlag flag); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account, FunctionFlag flag); mapping(FunctionFlag => bool) private _paused; enum FunctionFlag {executeAggregate, executeV2Swap, executeV3Swap, cross} /** * @dev Initializes the contract in unpaused state. */ constructor() { } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused(FunctionFlag flag) { _requireNotPaused(flag); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused(FunctionFlag flag) { _requirePaused(flag); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused(FunctionFlag flag) public view virtual returns (bool) { return _paused[flag]; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused(FunctionFlag flag) internal view virtual { require(!paused(flag), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused(FunctionFlag flag) internal view virtual { require(paused(flag), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause(FunctionFlag flag) internal virtual whenNotPaused(flag) { _paused[flag] = true; emit Paused(msg.sender, flag); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause(FunctionFlag flag) internal virtual whenPaused(flag) { _paused[flag] = false; emit Unpaused(msg.sender, flag); } function pausedOverAll() public view virtual returns (bool executeAggregate, bool executeV2Swap, bool executeV3Swap, bool cross) { executeAggregate = _paused[FunctionFlag.executeAggregate]; executeV2Swap = _paused[FunctionFlag.executeV2Swap]; executeV3Swap = _paused[FunctionFlag.executeV3Swap]; cross = _paused[FunctionFlag.cross]; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); assembly { sstore(_status.slot, _ENTERED) } _; assembly { sstore(_status.slot, _NOT_ENTERED) } } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library RevertReasonParser { function parse(bytes memory data, string memory prefix) internal pure returns (string memory) { // https://solidity.readthedocs.io/en/latest/control-structures.html#revert // We assume that revert reason is abi-encoded as Error(string) // 68 = 4-byte selector 0x08c379a0 + 32 bytes offset + 32 bytes length if (data.length >= 68 && data[0] == "\x08" && data[1] == "\xc3" && data[2] == "\x79" && data[3] == "\xa0") { string memory reason; // solhint-disable no-inline-assembly assembly { // 68 = 32 bytes data length + 4-byte selector + 32 bytes offset reason := add(data, 68) } /* revert reason is padded up to 32 bytes with ABI encoder: Error(string) also sometimes there is extra 32 bytes of zeros padded in the end: https://github.com/ethereum/solidity/issues/10170 because of that we can't check for equality and instead check that string length + extra 68 bytes is less than overall data length */ require(data.length >= 68 + bytes(reason).length, "Invalid revert reason"); return string(abi.encodePacked(prefix, "Error(", reason, ")")); } // 36 = 4-byte selector 0x4e487b71 + 32 bytes integer else if (data.length == 36 && data[0] == "\x4e" && data[1] == "\x48" && data[2] == "\x7b" && data[3] == "\x71") { uint256 code; // solhint-disable no-inline-assembly assembly { // 36 = 32 bytes data length + 4-byte selector code := mload(add(data, 36)) } return string(abi.encodePacked(prefix, "Panic(", _toHex(code), ")")); } return string(abi.encodePacked(prefix, "Unknown(", _toHex(data), ")")); } function _toHex(uint256 value) private pure returns(string memory) { return _toHex(abi.encodePacked(value)); } function _toHex(bytes memory data) private pure returns(string memory) { bytes16 alphabet = 0x30313233343536373839616263646566; bytes memory str = new bytes(2 + data.length * 2); str[0] = "0"; str[1] = "x"; for (uint256 i = 0; i < data.length; i++) { str[2 * i + 2] = alphabet[uint8(data[i] >> 4)]; str[2 * i + 3] = alphabet[uint8(data[i] & 0x0f)]; } return string(str); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library SafeMath { function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } function div(uint x, uint y) internal pure returns (uint z) { require(y != 0 , 'ds-math-div-zero'); z = x / y; } function toInt256(uint256 value) internal pure returns (int256) { require(value <= uint256(type(int256).max), "SafeCast: value doesn't fit in an int256"); return int256(value); } function toUint256(int256 value) internal pure returns (uint256) { require(value >= 0, "SafeCast: value must be positive"); return uint256(value); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; library TransferHelper { address private constant _ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); address private constant _ZERO_ADDRESS = address(0); function isETH(address token) internal pure returns (bool) { return (token == _ZERO_ADDRESS || token == _ETH_ADDRESS); } function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_TOKEN_FAILED'); } function safeTransferWithoutRequire(address token, address to, uint256 value) internal returns (bool) { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); return (success && (data.length == 0 || abi.decode(data, (bool)))); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { // solium-disable-next-line (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: TRANSFER_FAILED'); } function safeDeposit(address wrapped, uint value) internal { // bytes4(keccak256(bytes('deposit()'))); (bool success, bytes memory data) = wrapped.call{value:value}(abi.encodeWithSelector(0xd0e30db0)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: DEPOSIT_FAILED'); } function safeWithdraw(address wrapped, uint value) internal { // bytes4(keccak256(bytes('withdraw(uint256 wad)'))); (bool success, bytes memory data) = wrapped.call{value:0}(abi.encodeWithSelector(0x2e1a7d4d, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: WITHDRAW_FAILED'); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./BaseCore.sol"; contract UniswapV2Router is BaseCore { using SafeMath for uint256; constructor() { } function _beforeSwap(ExactInputV2SwapParams calldata exactInput, bool supportingFeeOn) internal returns (bool isToETH, uint256 actualAmountIn, address[] memory paths, uint256 thisAddressBeforeBalance, uint256 toBeforeBalance) { require(exactInput.path.length == exactInput.pool.length + 1, "Invalid path"); require(_wrapped_allowed[exactInput.wrappedToken], "Invalid wrapped address"); (bool isToVault, uint256 vaultFee) = splitFee(exactInput.fee); actualAmountIn = calculateTradeFee(true, exactInput.amount, vaultFee, exactInput.signature); address[] memory path = exactInput.path; address dstToken = path[exactInput.path.length - 1]; if (TransferHelper.isETH(exactInput.path[0])) { require(msg.value == exactInput.amount, "Invalid msg.value"); if (isToVault) { TransferHelper.safeTransferETH(_vault, vaultFee); } path[0] = exactInput.wrappedToken; TransferHelper.safeDeposit(exactInput.wrappedToken, actualAmountIn); } else { if (supportingFeeOn) { actualAmountIn = IERC20(path[0]).balanceOf(address(this)); TransferHelper.safeTransferFrom(path[0], msg.sender, address(this), exactInput.amount); actualAmountIn = IERC20(path[0]).balanceOf(address(this)).sub(actualAmountIn).sub(exactInput.fee); } else { TransferHelper.safeTransferFrom(path[0], msg.sender, address(this), exactInput.amount); } if (isToVault) { TransferHelper.safeTransferWithoutRequire(path[0], _vault, vaultFee); } } if (TransferHelper.isETH(dstToken)) { path[path.length - 1] = exactInput.wrappedToken; isToETH = true; thisAddressBeforeBalance = IERC20(exactInput.wrappedToken).balanceOf(address(this)); } else { if (supportingFeeOn) { toBeforeBalance = IERC20(dstToken).balanceOf(exactInput.dstReceiver); } } paths = path; } function exactInputV2SwapAndGasUsed(ExactInputV2SwapParams calldata exactInput, uint256 deadline) external payable returns (uint256 returnAmount, uint256 gasUsed) { uint256 gasLeftBefore = gasleft(); returnAmount = _executeV2Swap(exactInput, deadline); gasUsed = gasLeftBefore - gasleft(); } function exactInputV2Swap(ExactInputV2SwapParams calldata exactInput, uint256 deadline) external payable returns (uint256 returnAmount) { returnAmount = _executeV2Swap(exactInput, deadline); } function _executeV2Swap(ExactInputV2SwapParams calldata exactInput, uint256 deadline) internal nonReentrant whenNotPaused(FunctionFlag.executeV2Swap) returns (uint256 returnAmount) { require(deadline >= block.timestamp, "Expired"); bool supportingFeeOn = exactInput.router >> 248 & 0xf == 1; { (bool isToETH, uint256 actualAmountIn, address[] memory paths, uint256 thisAddressBeforeBalance, uint256 toBeforeBalance) = _beforeSwap(exactInput, supportingFeeOn); TransferHelper.safeTransfer(paths[0], exactInput.pool[0], actualAmountIn); if (supportingFeeOn) { if(isToETH) { _swapSupportingFeeOnTransferTokens(address(uint160(exactInput.router)), paths, exactInput.pool, address(this)); returnAmount = IERC20(exactInput.wrappedToken).balanceOf(address(this)).sub(thisAddressBeforeBalance); } else { _swapSupportingFeeOnTransferTokens(address(uint160(exactInput.router)), paths, exactInput.pool, exactInput.dstReceiver); returnAmount = IERC20(paths[paths.length - 1]).balanceOf(exactInput.dstReceiver).sub(toBeforeBalance); } } else { uint[] memory amounts = IUniswapV2(address(uint160(exactInput.router))).getAmountsOut(actualAmountIn, paths); if(isToETH) { _swap(amounts, paths, exactInput.pool, address(this)); returnAmount = IERC20(exactInput.wrappedToken).balanceOf(address(this)).sub(thisAddressBeforeBalance); } else { _swap(amounts, paths, exactInput.pool, exactInput.dstReceiver); returnAmount = IERC20(paths[paths.length - 1]).balanceOf(exactInput.dstReceiver).sub(toBeforeBalance); } } require(returnAmount >= exactInput.minReturnAmount, "Too little received"); if (isToETH) { TransferHelper.safeWithdraw(exactInput.wrappedToken, returnAmount); TransferHelper.safeTransferETH(exactInput.dstReceiver, returnAmount); } } string memory channel = exactInput.channel; _emitTransit(exactInput.path[0], exactInput.path[exactInput.path.length - 1], exactInput.dstReceiver, exactInput.amount, returnAmount, 0, channel); } function _swap(uint[] memory amounts, address[] memory path, address[] memory pool, address _to) internal { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = input < output ? (input, output) : (output, input); uint amountOut = amounts[i + 1]; (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0)); address to = i < path.length - 2 ? pool[i + 1] : _to; IUniswapV2(pool[i]).swap( amount0Out, amount1Out, to, new bytes(0) ); } } function _swapSupportingFeeOnTransferTokens(address router, address[] memory path, address[] memory pool, address _to) internal virtual { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = input < output ? (input, output) : (output, input); IUniswapV2 pair = IUniswapV2(pool[i]); uint amountInput; uint amountOutput; { // scope to avoid stack too deep errors (uint reserve0, uint reserve1,) = pair.getReserves(); (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0); amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput); amountOutput = IUniswapV2(router).getAmountOut(amountInput, reserveInput, reserveOutput); } (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0)); address to = i < path.length - 2 ? pool[i + 1] : _to; pair.swap(amount0Out, amount1Out, to, new bytes(0)); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./BaseCore.sol"; contract UniswapV3Router is BaseCore { using SafeMath for uint256; uint256 private constant _ZERO_FOR_ONE_MASK = 1 << 255; uint160 private constant MIN_SQRT_RATIO = 4295128739; uint160 private constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342; constructor() {} fallback() external { (int256 amount0Delta, int256 amount1Delta, bytes memory _data) = abi.decode(msg.data[4:], (int256,int256,bytes)); _executeCallback(amount0Delta, amount1Delta, _data); } function pancakeV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata _data ) external { _executeCallback(amount0Delta, amount1Delta, _data); } function uniswapV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata _data ) external { _executeCallback(amount0Delta, amount1Delta, _data); } function _executeCallback( int256 amount0Delta, int256 amount1Delta, bytes memory _data ) internal { require(amount0Delta > 0 || amount1Delta > 0, "M0 or M1"); // swaps entirely within 0-liquidity regions are not supported (uint256 pool, bytes memory tokenInAndPoolSalt) = abi.decode(_data, (uint256, bytes)); (address tokenIn, bytes32 poolSalt) = abi.decode(tokenInAndPoolSalt, (address, bytes32)); _verifyCallback(pool, poolSalt, msg.sender); uint256 amountToPay = uint256(amount1Delta); if (amount0Delta > 0) { amountToPay = uint256(amount0Delta); } TransferHelper.safeTransfer(tokenIn, msg.sender, amountToPay); } function exactInputV3SwapAndGasUsed(ExactInputV3SwapParams calldata params) external payable returns (uint256 returnAmount, uint256 gasUsed) { uint256 gasLeftBefore = gasleft(); returnAmount = _executeV3Swap(params); gasUsed = gasLeftBefore - gasleft(); } function exactInputV3Swap(ExactInputV3SwapParams calldata params) external payable returns (uint256 returnAmount) { returnAmount = _executeV3Swap(params); } function _executeV3Swap(ExactInputV3SwapParams calldata params) internal nonReentrant whenNotPaused(FunctionFlag.executeV3Swap) returns (uint256 returnAmount) { require(params.pools.length > 0, "Empty pools"); require(params.deadline >= block.timestamp, "Expired"); require(_wrapped_allowed[params.wrappedToken], "Invalid wrapped address"); address tokenIn = params.srcToken; address tokenOut = params.dstToken; uint256 toBeforeBalance; bool isToETH; if (TransferHelper.isETH(params.srcToken)) { tokenIn = params.wrappedToken; } uint256 actualAmountIn = executeFunds(FunctionFlag.executeV3Swap, params.srcToken, params.wrappedToken, address(0), params.amount, params.fee, params.signature); if (TransferHelper.isETH(params.dstToken)) { tokenOut = params.wrappedToken; toBeforeBalance = IERC20(params.wrappedToken).balanceOf(address(this)); isToETH = true; } else { toBeforeBalance = IERC20(params.dstToken).balanceOf(params.dstReceiver); } { uint256 len = params.pools.length; address recipient = address(this); bytes memory tokenInAndPoolSalt; if (len > 1) { address thisTokenIn = tokenIn; address thisTokenOut = address(0); for (uint256 i; i < len; i++) { uint256 thisPool = params.pools[i]; (thisTokenIn, tokenInAndPoolSalt) = _verifyPool(thisTokenIn, thisTokenOut, thisPool); if (i == len - 1 && !isToETH) { recipient = params.dstReceiver; thisTokenOut = tokenOut; } actualAmountIn = _swap(recipient, thisPool, tokenInAndPoolSalt, actualAmountIn); } returnAmount = actualAmountIn; } else { (, tokenInAndPoolSalt) = _verifyPool(tokenIn, tokenOut, params.pools[0]); if (!isToETH) { recipient = params.dstReceiver; } returnAmount = _swap(recipient, params.pools[0], tokenInAndPoolSalt, actualAmountIn); } } if (isToETH) { returnAmount = IERC20(params.wrappedToken).balanceOf(address(this)).sub(toBeforeBalance); require(returnAmount >= params.minReturnAmount, "Too little received"); TransferHelper.safeWithdraw(params.wrappedToken, returnAmount); TransferHelper.safeTransferETH(params.dstReceiver, returnAmount); } else { returnAmount = IERC20(params.dstToken).balanceOf(params.dstReceiver).sub(toBeforeBalance); require(returnAmount >= params.minReturnAmount, "Too little received"); } _emitTransit(params.srcToken, params.dstToken, params.dstReceiver, params.amount, returnAmount, 0, params.channel); } function _swap(address recipient, uint256 pool, bytes memory tokenInAndPoolSalt, uint256 amount) internal returns (uint256 amountOut) { bool zeroForOne = pool & _ZERO_FOR_ONE_MASK == 0; if (zeroForOne) { (, int256 amount1) = IUniswapV3Pool(address(uint160(pool))).swap( recipient, zeroForOne, amount.toInt256(), MIN_SQRT_RATIO + 1, abi.encode(pool, tokenInAndPoolSalt) ); amountOut = SafeMath.toUint256(-amount1); } else { (int256 amount0,) = IUniswapV3Pool(address(uint160(pool))).swap( recipient, zeroForOne, amount.toInt256(), MAX_SQRT_RATIO - 1, abi.encode(pool, tokenInAndPoolSalt) ); amountOut = SafeMath.toUint256(-amount0); } } function _verifyPool(address tokenIn, address tokenOut, uint256 pool) internal view returns (address nextTokenIn, bytes memory tokenInAndPoolSalt) { IUniswapV3Pool iPool = IUniswapV3Pool(address(uint160(pool))); address token0 = iPool.token0(); address token1 = iPool.token1(); uint24 fee = iPool.fee(); bytes32 poolSalt = keccak256(abi.encode(token0, token1, fee)); bool zeroForOne = pool & _ZERO_FOR_ONE_MASK == 0; if (zeroForOne) { require(tokenIn == token0, "Bad pool"); if (tokenOut != address(0)) { require(tokenOut == token1, "Bad pool"); } nextTokenIn = token1; tokenInAndPoolSalt = abi.encode(token0, poolSalt); } else { require(tokenIn == token1, "Bad pool"); if (tokenOut != address(0)) { require(tokenOut == token0, "Bad pool"); } nextTokenIn = token0; tokenInAndPoolSalt = abi.encode(token1, poolSalt); } _verifyCallback(pool, poolSalt, address(uint160(pool))); } function _verifyCallback(uint256 pool, bytes32 poolSalt, address caller) internal view { uint poolDigit = pool >> 248 & 0xf; UniswapV3Pool memory v3Pool = _uniswapV3_factory_allowed[poolDigit]; require(v3Pool.factory != address(0), "Callback bad pool indexed"); address calcPool = address( uint160( uint256( keccak256( abi.encodePacked( hex'ff', v3Pool.factory, poolSalt, v3Pool.initCodeHash ) ) ) ) ); require(calcPool == caller, "Callback bad pool"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newBridge","type":"address"}],"name":"ChangeAggregateBridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"callers","type":"address[]"}],"name":"ChangeCrossCallerAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isAggregate","type":"bool"},{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"ChangeFeeRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preSigner","type":"address"},{"indexed":false,"internalType":"address","name":"newSigner","type":"address"}],"name":"ChangeSigner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"poolIndex","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"factories","type":"address[]"},{"indexed":false,"internalType":"bytes[]","name":"initCodeHash","type":"bytes[]"}],"name":"ChangeV3FactoryAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preVault","type":"address"},{"indexed":false,"internalType":"address","name":"newVault","type":"address"}],"name":"ChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"wrappedTokens","type":"address[]"},{"indexed":false,"internalType":"bool[]","name":"newAllowed","type":"bool[]"}],"name":"ChangeWrappedAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorshipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousExecutor","type":"address"},{"indexed":true,"internalType":"address","name":"newExecutor","type":"address"}],"name":"ExecutorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"enum Pausable.FunctionFlag","name":"flag","type":"uint8"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Receipt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"srcToken","type":"address"},{"indexed":true,"internalType":"address","name":"dstToken","type":"address"},{"indexed":true,"internalType":"address","name":"dstReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"},{"indexed":false,"internalType":"string","name":"channel","type":"string"}],"name":"TransitSwapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"enum Pausable.FunctionFlag","name":"flag","type":"uint8"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"CHECKFEE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptExecutorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct BaseCore.TransitSwapDescription","name":"desc","type":"tuple"},{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"internalType":"struct BaseCore.CallbytesDescription","name":"callbytesDesc","type":"tuple"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct BaseCore.TransitSwapDescription","name":"desc","type":"tuple"},{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"bytes","name":"calldatas","type":"bytes"}],"internalType":"struct BaseCore.CallbytesDescription","name":"callbytesDesc","type":"tuple"}],"name":"aggregateAndGasUsed","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"crossCallers","type":"address[]"},{"internalType":"address[]","name":"wrappedTokens","type":"address[]"}],"name":"changeAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool[]","name":"isAggregate","type":"bool[]"},{"internalType":"uint256[]","name":"newRate","type":"uint256[]"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"enum Pausable.FunctionFlag[]","name":"flags","type":"uint8[]"}],"name":"changePause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"},{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"vault","type":"address"}],"name":"changeTransitProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"poolIndex","type":"uint256[]"},{"internalType":"address[]","name":"factories","type":"address[]"},{"internalType":"bytes[]","name":"initCodeHash","type":"bytes[]"}],"name":"changeUniswapV3FactoryAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"toChain","type":"uint256"},{"internalType":"string","name":"channel","type":"string"},{"internalType":"bytes","name":"calls","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct BaseCore.CrossDescription","name":"desc","type":"tuple"}],"name":"cross","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"router","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address[]","name":"pool","type":"address[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV2SwapParams","name":"exactInput","type":"tuple"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"exactInputV2Swap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"router","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address[]","name":"pool","type":"address[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV2SwapParams","name":"exactInput","type":"tuple"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"exactInputV2SwapAndGasUsed","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256[]","name":"pools","type":"uint256[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV3SwapParams","name":"params","type":"tuple"}],"name":"exactInputV3Swap","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"srcToken","type":"address"},{"internalType":"address","name":"dstToken","type":"address"},{"internalType":"address","name":"dstReceiver","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minReturnAmount","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256[]","name":"pools","type":"uint256[]"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"string","name":"channel","type":"string"}],"internalType":"struct BaseCore.ExactInputV3SwapParams","name":"params","type":"tuple"}],"name":"exactInputV3SwapAndGasUsed","outputs":[{"internalType":"uint256","name":"returnAmount","type":"uint256"},{"internalType":"uint256","name":"gasUsed","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"executor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"pancakeV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum Pausable.FunctionFlag","name":"flag","type":"uint8"}],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pausedOverAll","outputs":[{"internalType":"bool","name":"executeAggregate","type":"bool"},{"internalType":"bool","name":"executeV2Swap","type":"bool"},{"internalType":"bool","name":"executeV3Swap","type":"bool"},{"internalType":"bool","name":"cross","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingExecutor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newExecutor","type":"address"}],"name":"transferExecutorship","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"crossCaller","type":"address"},{"internalType":"address","name":"wrappedToken","type":"address"},{"internalType":"uint256","name":"poolIndex","type":"uint256"}],"name":"transitAllowedQuery","outputs":[{"internalType":"bool","name":"isCrossCallerAllowed","type":"bool"},{"internalType":"bool","name":"isWrappedAllowed","type":"bool"},{"components":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"bytes","name":"initCodeHash","type":"bytes"}],"internalType":"struct BaseCore.UniswapV3Pool","name":"pool","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transitProxyAddress","outputs":[{"internalType":"address","name":"bridgeProxy","type":"address"},{"internalType":"address","name":"feeSigner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506001543390600160a01b900460ff1615620000735760405162461bcd60e51b815260206004820152601460248201527f4f776e61626c653a20696e697469616c697a6564000000000000000000000000604482015260640160405180910390fd5b6200007e8162000176565b506001805460ff60a01b1916600160a01b1781556003819055604080518082018252600d81526c5472616e73697453776170563560981b60209182015281518083018352928352603560f81b9281019290925280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f928101929092527f20b7d1a4a088b240a0e093c572f43e31015ce187a55e6f343e049dcb744e5341908201527fceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c160608201524660808201523060a082015260c00160408051601f198184030181529190528051602090910120600955620001d0565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d9190a35050565b615f2180620001e06000396000f3fe6080604052600436106101655760003560e01c80637ec753fe116100c1578063b9b5149b1161007a578063b9b5149b14610538578063bf5c55a21461054b578063c34c08e51461056b578063d63234e014610592578063d808d889146105b0578063fa461e3314610289578063fa9ec7af146105c3576101a5565b80637ec753fe1461048357806392bcc8be146104a357806394d3d793146104c3578063afed2d0e146104d8578063b93c0beb146104f8578063b946fd3b14610518576101a5565b80633644e5151161011e5780633644e515146102d15780633c481d57146102e75780634c42342f146103bf5780635ac86ab7146103d25780636b3ec416146104025780636fbf72f9146104155780637e467ecf1461044f576101a5565b80630ced9fb9146101e35780630dc4bdae146102195780630e8cc7051461023a5780631975b0961461025a57806323a69e75146102895780632adb806f146102a9576101a5565b366101a5577f7784f8d436dc514f0690e472c7e2d7f660a73e504c69b2350f6be5a5f02432ef333460405161019b929190614b58565b60405180910390a1005b3480156101b157600080fd5b50600080806101c33660048184614b71565b8101906101d09190614c08565b9250925092506101e18383836105d6565b005b3480156101ef57600080fd5b50600654600754604051610210926001600160a01b03908116921690614c9a565b60405180910390f35b61022c610227366004614cb4565b610684565b604051908152602001610210565b34801561024657600080fd5b506101e1610255366004614d46565b610697565b34801561026657600080fd5b5061027a610275366004614df1565b61081b565b60405161021093929190614e82565b34801561029557600080fd5b506101e16102a4366004614ec0565b61091d565b6102bc6102b7366004614f3f565b610964565b60408051928352602083019190915201610210565b3480156102dd57600080fd5b5061022c60095481565b3480156102f357600080fd5b5060026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b547fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460036000527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c35460ff9384169392831692918216911660408051941515855292151560208501529015159183019190915215156060820152608001610210565b6102bc6103cd366004614fcb565b61098d565b3480156103de57600080fd5b506103f26103ed366004615007565b6109b3565b6040519015158152602001610210565b6101e1610410366004614fcb565b6109f6565b34801561042157600080fd5b506004546005546008546040805193845260208401929092526001600160a01b031690820152606001610210565b34801561045b57600080fd5b5061022c7f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f81565b34801561048f57600080fd5b506101e161049e36600461509c565b610cc3565b3480156104af57600080fd5b506101e16104be36600461519e565b610e4a565b3480156104cf57600080fd5b506101e1610ff8565b3480156104e457600080fd5b506101e16104f3366004615237565b61107e565b34801561050457600080fd5b506101e1610513366004615254565b6110ef565b34801561052457600080fd5b506101e16105333660046152bf565b6113ae565b61022c610546366004614fcb565b6114f5565b34801561055757600080fd5b506101e161056636600461530a565b611506565b34801561057757600080fd5b506000546001600160a01b03165b604051610210919061535e565b34801561059e57600080fd5b506001546001600160a01b0316610585565b61022c6105be366004614f3f565b61159c565b6102bc6105d1366004614cb4565b6115a8565b60008313806105e55750600082135b6106215760405162461bcd60e51b81526020600482015260086024820152674d30206f72204d3160c01b60448201526064015b60405180910390fd5b600080828060200190518101906106389190615372565b915091506000808280602001905181019061065391906153f4565b915091506106628482336115ba565b85600088131561066f5750865b61067a83338361176f565b5050505050505050565b60006106908383611893565b9392505050565b61069f611e1d565b60005b82518110156108165760006106cf8483815181106106c2576106c2615422565b6020026020010151611e94565b156106e55750476106e08382611ecd565b610793565b8382815181106106f7576106f7615422565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161072a919061535e565b602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190615438565b905061079184838151811061078257610782615422565b60200260200101518483611f8a565b505b826001600160a01b0316336001600160a01b03168584815181106107b9576107b9615422565b60200260200101516001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7846040516107fb91815260200190565b60405180910390a4508061080e81615467565b9150506106a2565b505050565b604080518082018252600080825260606020808401919091526001600160a01b038781168352600a8252848320548782168452600b835285842054878552600c84529386902086518088019097528054909216865260018201805460ff92831697929095169594919384019161089090615480565b80601f01602080910402602001604051908101604052809291908181526020018280546108bc90615480565b80156109095780601f106108de57610100808354040283529160200191610909565b820191906000526020600020905b8154815290600101906020018083116108ec57829003601f168201915b505050505081525050905093509350939050565b61095e848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105d692505050565b50505050565b60008060005a90506109768585612060565b92505a61098390826154b4565b9150509250929050565b60008060005a905061099e84612516565b92505a6109ab90826154b4565b915050915091565b6000600260008360038111156109cb576109cb6154c7565b60038111156109dc576109dc6154c7565b815260208101919091526040016000205460ff1692915050565b600260035403610a185760405162461bcd60e51b8152600401610618906154dd565b60026003556003610a2881612a4f565b6000610a38610120840184615514565b905011610a575760405162461bcd60e51b81526004016106189061555a565b60008260a0013511610a7b5760405162461bcd60e51b81526004016106189061558b565b600a6000610a8f6060850160408601615237565b6001600160a01b0316815260208101919091526040016000205460ff16610ae95760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b6044820152606401610618565b6000610b3a6003610afd6020860186615237565b610b0d60a0870160808801615237565b610b1d6060880160408901615237565b60a088013560c0890135610b356101408b018b615514565b612a98565b9050600080610b4f6060860160408701615237565b6001600160a01b031683610b67610120880188615514565b604051610b759291906155c2565b60006040518083038185875af1925050503d8060008114610bb2576040519150601f19603f3d011682016040523d82523d6000602084013e610bb7565b606091505b509150915081610c0b57610bf2816040518060400160405280600f81526020016e2a3930b739b4ba21b937b9b9ab1a9d60891b815250612cce565b60405162461bcd60e51b815260040161061891906155d2565b610c32610c1b6020870187615237565b610c2b6060880160408901615237565b6000612f44565b50610cb99050610c456020850185615237565b610c556040860160208701615237565b610c656080870160608801615237565b60a0870135600060e0890135610c7f6101008b018b615514565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061305a92505050565b5050600160035550565b610ccb611e1d565b60005b8251811015610816576000828281518110610ceb57610ceb615422565b602002602001015110158015610d1c57506103e8828281518110610d1157610d11615422565b602002602001015111155b610d5d5760405162461bcd60e51b8152602060048201526012602482015271066656520726174652069733a302d313030360741b6044820152606401610618565b828181518110610d6f57610d6f615422565b602002602001015115610da157818181518110610d8e57610d8e615422565b6020026020010151600481905550610dc2565b818181518110610db357610db3615422565b60200260200101516005819055505b7f5fa95345cbe35dad70f67a9ca1430c22453a695590cb4fca05d58f637e85af4f838281518110610df557610df5615422565b6020026020010151838381518110610e0f57610e0f615422565b6020026020010151604051610e309291909115158252602082015260400190565b60405180910390a180610e4281615467565b915050610cce565b610e52611e1d565b848114610e715760405162461bcd60e51b8152600401610618906155e5565b828114610e905760405162461bcd60e51b8152600401610618906155e5565b8260005b81811015610fad576040518060400160405280878784818110610eb957610eb9615422565b9050602002016020810190610ece9190615237565b6001600160a01b03168152602001858584818110610eee57610eee615422565b9050602002810190610f009190615514565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250600c92508b90508a85818110610f4d57610f4d615422565b6020908102929092013583525081810192909252604001600020825181546001600160a01b0319166001600160a01b03909116178155908201516001820190610f969082615651565b509050508080610fa590615467565b915050610e94565b507f652c1af850dcc0b28fcb71cd9473023f56a89edd81bbe7b51056a04caa940024878787878787604051610fe7969594939291906157c7565b60405180910390a150505050505050565b338061100c6001546001600160a01b031690565b6001600160a01b0316146110725760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e657720656044820152663c32b1baba37b960c91b6064820152608401610618565b61107b816130be565b50565b611086611e1d565b600180546001600160a01b0383166001600160a01b031990911681179091556110b76000546001600160a01b031690565b6001600160a01b03167fdd01547fc40682edc3cd8d164d53f5a1ae6b46138a83f045658ed760823ddba860405160405180910390a350565b6110f7611e1d565b82156111f35760005b838110156111b857600a600086868481811061111e5761111e615422565b90506020020160208101906111339190615237565b6001600160a01b03168152602081019190915260400160009081205460ff161590600a9087878581811061116957611169615422565b905060200201602081019061117e9190615237565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806111b081615467565b915050611100565b507fb05655746bd43b7fe3ccd9d28b7685b4c67ddc51e70890062b0f7f85dd69269584846040516111ea92919061587a565b60405180910390a15b801561095e576000816001600160401b0381111561121357611213614b9b565b60405190808252806020026020018201604052801561123c578160200160208202803683370190505b50905060005b8281101561136b57600b600085858481811061126057611260615422565b90506020020160208101906112759190615237565b6001600160a01b03168152602081019190915260400160009081205460ff161590600b908686858181106112ab576112ab615422565b90506020020160208101906112c09190615237565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600b9085858481811061130057611300615422565b90506020020160208101906113159190615237565b6001600160a01b03168152602081019190915260400160002054825160ff9091169083908390811061134957611349615422565b911515602092830291909101909101528061136381615467565b915050611242565b507f4a28b173d9bc739be3886d172e07fef80392184787fc6b92406ce0f0c05b7e6383838360405161139f9392919061588e565b60405180910390a15050505050565b6113b6611e1d565b6001600160a01b0383161561141957600680546001600160a01b0319166001600160a01b0385161790556040517f347fade115440908839b750620f0add8f417b77a392657edd70b950373eda9c39061141090859061535e565b60405180910390a15b6001600160a01b0382161561148557600780546001600160a01b038481166001600160a01b03198316179092556040519116907ff9c6fa562c9d8326f8518a29a53ef18ab03cd6b9eead73ac667c5e289354c73e9061147b9083908690614c9a565b60405180910390a1505b6001600160a01b0381161561081657600880546001600160a01b038381166001600160a01b03198316179092556040519116907fb3911b5760f95a64aaa8d7f1775f57a7b6ed0bcf1ebb3fbfcc045e2f04eaad11906114e79083908590614c9a565b60405180910390a150505050565b600061150082612516565b92915050565b61150e611e1d565b8060005b818110156115955784156115545761154f84848381811061153557611535615422565b905060200201602081019061154a9190615007565b613118565b611583565b61158384848381811061156957611569615422565b905060200201602081019061157e9190615007565b6131ad565b8061158d81615467565b915050611512565b5050505050565b60006106908383612060565b60008060005a90506109768585611893565b600f60f884901c166000818152600c60209081526040808320815180830190925280546001600160a01b0316825260018101805492939192918401916115ff90615480565b80601f016020809104026020016040519081016040528092919081815260200182805461162b90615480565b80156116785780601f1061164d57610100808354040283529160200191611678565b820191906000526020600020905b81548152906001019060200180831161165b57829003601f168201915b5050509190925250508151919250506001600160a01b03166116d85760405162461bcd60e51b815260206004820152601960248201527810d85b1b189858dac8189859081c1bdbdb081a5b99195e1959603a1b6044820152606401610618565b600081600001518583602001516040516020016116f7939291906158e9565b6040516020818303038152906040528051906020012060001c9050836001600160a01b0316816001600160a01b0316146117675760405162461bcd60e51b815260206004820152601160248201527010d85b1b189858dac8189859081c1bdbdb607a1b6044820152606401610618565b505050505050565b600080846001600160a01b031663a9059cbb8585604051602401611794929190614b58565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516117cd9190615932565b6000604051808303816000865af19150503d806000811461180a576040519150601f19603f3d011682016040523d82523d6000602084013e61180f565b606091505b5091509150818015611839575080511580611839575080806020019051810190611839919061594e565b6115955760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a205452414e534645525f544f4b454e5f46604482015264105253115160da1b6064820152608401610618565b60006002600354036118b75760405162461bcd60e51b8152600401610618906154dd565b600260035560016118c781612a4f565b428310156118e75760405162461bcd60e51b81526004016106189061596b565b6001600f604086013560f81c16146000808080806119058a87613236565b945094509450945094506119698360008151811061192557611925615422565b60200260200101518b8060e0019061193d919061598c565b600081811061194e5761194e615422565b90506020020160208101906119639190615237565b8661176f565b8515611b27578415611a51576119c460408b01358461198b60e08e018e61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613768915050565b611a4a826119d860408d0160208e01615237565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611a03919061535e565b602060405180830381865afa158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190615438565b90613a6d565b9750611cc9565b611abf60408b013584611a6760e08e018e61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d6000016020810190611aba9190615237565b613768565b611a4a818460018651611ad291906154b4565b81518110611ae257611ae2615422565b60200260200101516001600160a01b03166370a082318d6000016020810190611b0b9190615237565b6040518263ffffffff1660e01b8152600401611a03919061535e565b60008a604001356001600160a01b031663d06ca61f86866040518363ffffffff1660e01b8152600401611b5b9291906159d5565b600060405180830381865afa158015611b78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba09190810190615a2c565b90508515611c0e57611bf38185611bba60e08f018f61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613ac3915050565b611c07836119d860408e0160208f01615237565b9850611cc7565b611c788185611c2060e08f018f61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508e6000016020810190611c739190615237565b613ac3565b611cc4828560018751611c8b91906154b4565b81518110611c9b57611c9b615422565b60200260200101516001600160a01b03166370a082318e6000016020810190611b0b9190615237565b98505b505b8960800135881015611ced5760405162461bcd60e51b815260040161061890615ab1565b8415611d2257611d0c611d0660408c0160208d01615237565b89613cbb565b611d22611d1c60208c018c615237565b89611ecd565b5050505050600085806101200190611d3a9190615514565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350611e0f9250611d8391505060c088018861598c565b6000818110611d9457611d94615422565b9050602002016020810190611da99190615237565b611db660c089018961598c565b6001611dc560c08c018c61598c565b611dd09291506154b4565b818110611ddf57611ddf615422565b9050602002016020810190611df49190615237565b611e0160208a018a615237565b89606001358860008761305a565b505050600160035592915050565b33611e306000546001600160a01b031690565b6001600160a01b031614611e925760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652065786563756044820152623a37b960e91b6064820152608401610618565b565b60006001600160a01b038216158061150057506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080516000808252602082019092526001600160a01b038416908390604051611ef79190615932565b60006040518083038185875af1925050503d8060008114611f34576040519150601f19603f3d011682016040523d82523d6000602084013e611f39565b606091505b50509050806108165760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610618565b6000806000856001600160a01b031663a9059cbb8686604051602401611fb1929190614b58565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611fea9190615932565b6000604051808303816000865af19150503d8060008114612027576040519150601f19603f3d011682016040523d82523d6000602084013e61202c565b606091505b5091509150818015612056575080511580612056575080806020019051810190612056919061594e565b9695505050505050565b60006002600354036120845760405162461bcd60e51b8152600401610618906154dd565b6002600355600061209481612a4f565b60006120a36020850185615514565b9050116120c25760405162461bcd60e51b81526004016106189061555a565b60008460800135116120e65760405162461bcd60e51b81526004016106189061558b565b60006120f86060860160408701615237565b6001600160a01b0316036121585760405162461bcd60e51b815260206004820152602160248201527f72656365697665722073686f756c64206265206e6f74206164647265737328306044820152602960f81b6064820152608401610618565b60008460a00135116121bd5760405162461bcd60e51b815260206004820152602860248201527f6d696e52657475726e416d6f756e742073686f756c6420626520677265617465604482015267072207468616e20360c41b6064820152608401610618565b600b60006121d16080870160608801615237565b6001600160a01b0316815260208101919091526040016000205460ff166122345760405162461bcd60e51b8152602060048201526017602482015276696e76616c69642077726170706564206164647265737360481b6044820152606401610618565b6006546000906001600160a01b03168161227e8161225560208a018a615237565b61226560808b0160608c01615237565b8560808c013560c08d0135610b356101008f018f615514565b90506122986122936040890160208a01615237565b611e94565b156122be576122ad6060880160408901615237565b6001600160a01b031631925061234c565b6122ce6040880160208901615237565b6001600160a01b03166370a082316122ec60608a0160408b01615237565b6040518263ffffffff1660e01b8152600401612308919061535e565b602060405180830381865afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190615438565b92505b600080836001600160a01b031683633f3204d28a6040516024016123709190615ade565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516123a99190615932565b60006040518083038185875af1925050503d80600081146123e6576040519150601f19603f3d011682016040523d82523d6000602084013e6123eb565b606091505b50915091508161242357610bf2816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b815250612cce565b5061243990506122936040890160208a01615237565b15612469576124628361245260608a0160408b01615237565b6001600160a01b03163190613a6d565b945061249e565b61249b8361247d60408a0160208b01615237565b6001600160a01b03166370a08231611b0b60608c0160408d01615237565b94505b8660a001358510156124c25760405162461bcd60e51b815260040161061890615ab1565b6125076124d26020890189615237565b6124e260408a0160208b01615237565b6124f260608b0160408c01615237565b60808b0135896000610c7f60e08f018f615514565b50505050600160035592915050565b600060026003540361253a5760405162461bcd60e51b8152600401610618906154dd565b6002600355600261254a81612a4f565b600061255a61010085018561598c565b9050116125975760405162461bcd60e51b815260206004820152600b60248201526a456d70747920706f6f6c7360a81b6044820152606401610618565b428360e0013510156125bb5760405162461bcd60e51b81526004016106189061596b565b600b60006125cf6080860160608701615237565b6001600160a01b0316815260208101919091526040016000205460ff166126085760405162461bcd60e51b815260040161061890615b2a565b60006126176020850185615237565b9050600061262b6040860160208701615237565b90506000806126406122936020890189615237565b15612658576126556080880160608901615237565b93505b6000612699600261266c60208b018b615237565b61267c60808c0160608d01615237565b60008c608001358d60c001358e806101200190610b359190615514565b90506126ae61229360408a0160208b01615237565b1561274c576126c36080890160608a01615237565b93506126d56080890160608a01615237565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612700919061535e565b602060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127419190615438565b9250600191506127da565b61275c6040890160208a01615237565b6001600160a01b03166370a0823161277a60608b0160408c01615237565b6040518263ffffffff1660e01b8152600401612796919061535e565b602060405180830381865afa1580156127b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d79190615438565b92505b60006127ea6101008a018a61598c565b9150309050606060018311156128a457876000805b858110156128995760008e80610100019061281a919061598c565b8381811061282a5761282a615422565b90506020020135905061283e848483613dd3565b9550935061284d6001886154b4565b82148015612859575088155b15612877578e60400160208101906128719190615237565b95508a92505b6128838682878b6140b4565b975050808061289190615467565b9150506127ff565b50859b505050612924565b6128d488886128b76101008f018f61598c565b60008181106128c8576128c8615422565b90506020020135613dd3565b91508590506128f0576128ed60608c0160408d01615237565b91505b612921826129026101008e018e61598c565b600081811061291357612913615422565b9050602002013583876140b4565b99505b505050811561299e57612941836119d860808b0160608c01615237565b96508760a001358710156129675760405162461bcd60e51b815260040161061890615ab1565b61298061297a60808a0160608b01615237565b88613cbb565b61299961299360608a0160408b01615237565b88611ecd565b6129f6565b6129d0836129b260408b0160208c01615237565b6001600160a01b03166370a08231611b0b60608d0160408e01615237565b96508760a001358710156129f65760405162461bcd60e51b815260040161061890615ab1565b612a3f612a0660208a018a615237565b612a1660408b0160208c01615237565b612a2660608c0160408d01615237565b8b608001358b60008e806101400190610c7f9190615514565b5050505050506001600355919050565b612a58816109b3565b1561107b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610618565b6000806000612aa68661426c565b9092509050600060038c6003811115612ac157612ac16154c7565b14612acd576001612ad0565b60005b90506000612ae1828a858a8a6142ca565b9050612aec8c611e94565b15612c205760038d6003811115612b0557612b056154c7565b03612b3b5788341015612b2a5760405162461bcd60e51b815260040161061890615b5b565b612b343484613a6d565b9450612b5e565b883414612b5a5760405162461bcd60e51b815260040161061890615b5b565b8094505b6001600160a01b038b1615612bff576001600160a01b038b166000908152600b602052604090205460ff16612ba55760405162461bcd60e51b815260040161061890615b2a565b60038d6003811115612bb957612bb96154c7565b03612bdc57612bc88b86614380565b612bd38b8b87612f44565b60009450612bff565b60028d6003811115612bf057612bf06154c7565b03612bff57612bff8b82614380565b8315612c1b57600854612c1b906001600160a01b031684611ecd565b612cbe565b612c2c8c33308c61447e565b60038d6003811115612c4057612c406154c7565b03612c5857612c508c8b83612f44565b349450612c9e565b60008d6003811115612c6c57612c6c6154c7565b03612c8157612c7c8c8b8361176f565b612c9e565b60028d6003811115612c9557612c956154c7565b03612c9e578094505b8315612cbe57600854612cbc908d906001600160a01b031685611f8a565b505b5050505098975050505050505050565b60606044835110158015612d07575082600081518110612cf057612cf0615422565b6020910101516001600160f81b031916600160fb1b145b8015612d38575082600181518110612d2157612d21615422565b6020910101516001600160f81b03191660c360f81b145b8015612d69575082600281518110612d5257612d52615422565b6020910101516001600160f81b031916607960f81b145b8015612d9a575082600381518110612d8357612d83615422565b6020910101516001600160f81b031916600560fd1b145b15612e2457604483810180519091612db29190615b86565b84511015612dfa5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610618565b8281604051602001612e0d929190615b99565b604051602081830303815290604052915050611500565b82516024148015612e5a575082600081518110612e4357612e43615422565b6020910101516001600160f81b031916602760f91b145b8015612e8b575082600181518110612e7457612e74615422565b6020910101516001600160f81b031916600960fb1b145b8015612ebc575082600281518110612ea557612ea5615422565b6020910101516001600160f81b031916607b60f81b145b8015612eed575082600381518110612ed657612ed6615422565b6020910101516001600160f81b031916607160f81b145b15612f1257602483015182612f01826145a6565b604051602001612e0d929190615be8565b81612f1c846145ce565b604051602001612f2d929190615c1d565b604051602081830303815290604052905092915050565b600080846001600160a01b031663095ea7b38585604051602401612f69929190614b58565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612fa29190615932565b6000604051808303816000865af19150503d8060008114612fdf576040519150601f19603f3d011682016040523d82523d6000602084013e612fe4565b606091505b509150915081801561300e57508051158061300e57508080602001905181019061300e919061594e565b6115955760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c454400006044820152606401610618565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f2251435bd151cd72851a82be055bf6d1c3d7f34d08d56493dddf874229b8e897878787876040516130ad9493929190615c6e565b60405180910390a450505050505050565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d9190a35050565b8061312281612a4f565b60016002600084600381111561313a5761313a6154c7565b600381111561314b5761314b6154c7565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d455933836040516131a1929190615c93565b60405180910390a15050565b806131b7816147b5565b6000600260008460038111156131cf576131cf6154c7565b60038111156131e0576131e06154c7565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4cd3e1443d03aba343c5d882744f8f172c07b495e955ac3defb325cbd73c855033836040516131a1929190615c93565b6000806060818061324a60e088018861598c565b61325691506001615b86565b61326360c089018961598c565b9050146132a15760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b6044820152606401610618565b600b60006132b560408a0160208b01615237565b6001600160a01b0316815260208101919091526040016000205460ff166132ee5760405162461bcd60e51b815260040161061890615b2a565b6000806132fe8960a0013561426c565b9092509050613321600160608b01358361331c6101008e018e615514565b6142ca565b9550600061333260c08b018b61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093945084925060019150613378905060c08e018e61598c565b6133839291506154b4565b8151811061339357613393615422565b602002602001015190506133d68b8060c001906133b0919061598c565b60008181106133c1576133c1615422565b90506020020160208101906122939190615237565b15613497578a6060013534146134225760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d73672e76616c756560781b6044820152606401610618565b831561343e5760085461343e906001600160a01b031684611ecd565b61344e60408c0160208d01615237565b8260008151811061346157613461615422565b6001600160a01b039092166020928302919091018201526134929061348c9060408e01908e01615237565b89614380565b6135fa565b89156135a957816000815181106134b0576134b0615422565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016134e3919061535e565b602060405180830381865afa158015613500573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135249190615438565b97506135508260008151811061353c5761353c615422565b602002602001015133308e6060013561447e565b6135a28b60a00135611a448a8560008151811061356f5761356f615422565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611a03919061535e565b97506135bf565b6135bf8260008151811061353c5761353c615422565b83156135fa576135f8826000815181106135db576135db615422565b60209081029190910101516008546001600160a01b031685611f8a565b505b61360381611e94565b156136d55761361860408c0160208d01615237565b826001845161362791906154b4565b8151811061363757613637615422565b6001600160a01b03909216602092830291909101820152600199506136629060408d01908d01615237565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161368d919061535e565b602060405180830381865afa1580156136aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ce9190615438565b9550613757565b8915613757576001600160a01b0381166370a082316136f760208e018e615237565b6040518263ffffffff1660e01b8152600401613713919061535e565b602060405180830381865afa158015613730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137549190615438565b94505b819650505050509295509295909350565b60005b6001845161377991906154b4565b8110156115955760008085838151811061379557613795615422565b6020026020010151868460016137ab9190615b86565b815181106137bb576137bb615422565b6020026020010151915091506000816001600160a01b0316836001600160a01b0316106137e95781836137ec565b82825b509050600086858151811061380357613803615422565b60200260200101519050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138759190615ce5565b506001600160701b031691506001600160701b03169150600080876001600160a01b03168a6001600160a01b0316146138af5782846138b2565b83835b915091506138e6828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401611a03919061535e565b95508e6001600160a01b031663054d50d48784846040518463ffffffff1660e01b8152600401613929939291909283526020830191909152604082015260600190565b602060405180830381865afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a9190615438565b945050505050600080856001600160a01b0316886001600160a01b03161461399457826000613998565b6000835b91509150600060028d516139ac91906154b4565b8a106139b8578a6139dd565b8b6139c48b6001615b86565b815181106139d4576139d4615422565b60200260200101515b6040805160008152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f90613a1f9086908690869060248101615d2a565b600060405180830381600087803b158015613a3957600080fd5b505af1158015613a4d573d6000803e3d6000fd5b505050505050505050505050508080613a6590615467565b91505061376b565b600082613a7a83826154b4565b91508111156115005760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b6044820152606401610618565b60005b60018451613ad491906154b4565b81101561159557600080858381518110613af057613af0615422565b602002602001015186846001613b069190615b86565b81518110613b1657613b16615422565b6020026020010151915091506000816001600160a01b0316836001600160a01b031610613b44578183613b47565b82825b509050600088613b58866001615b86565b81518110613b6857613b68615422565b60200260200101519050600080836001600160a01b0316866001600160a01b031614613b9657826000613b9a565b6000835b91509150600060028b51613bae91906154b4565b8810613bba5788613bdf565b89613bc6896001615b86565b81518110613bd657613bd6615422565b60200260200101515b9050898881518110613bf357613bf3615422565b60200260200101516001600160a01b031663022c0d9f84848460006001600160401b03811115613c2557613c25614b9b565b6040519080825280601f01601f191660200182016040528015613c4f576020820181803683370190505b506040518563ffffffff1660e01b8152600401613c6f9493929190615d2a565b600060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b50505050505050505050508080613cb390615467565b915050613ac6565b600080836001600160a01b03166000632e1a7d4d85604051602401613ce291815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051613d1b9190615932565b60006040518083038185875af1925050503d8060008114613d58576040519150601f19603f3d011682016040523d82523d6000602084013e613d5d565b606091505b5091509150818015613d87575080511580613d87575080806020019051810190613d87919061594e565b61095e5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a2057495448445241575f4641494c4544006044820152606401610618565b6000606060008390506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e409190615d57565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea69190615d57565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f0c9190615d74565b604080516001600160a01b03808716602083015285169181019190915262ffffff8216606082015290915060009060800160408051601f1981840301815291905280516020909101209050600160ff1b881615801561400257846001600160a01b03168b6001600160a01b031614613f965760405162461bcd60e51b815260040161061890615d99565b6001600160a01b038a1615613fd657836001600160a01b03168a6001600160a01b031614613fd65760405162461bcd60e51b815260040161061890615d99565b8397508482604051602001613fec929190614b58565b604051602081830303815290604052965061409b565b836001600160a01b03168b6001600160a01b0316146140335760405162461bcd60e51b815260040161061890615d99565b6001600160a01b038a161561407357846001600160a01b03168a6001600160a01b0316146140735760405162461bcd60e51b815260040161061890615d99565b8497508382604051602001614089929190614b58565b60405160208183030381529060405296505b6140a689838b6115ba565b505050505050935093915050565b6000600160ff1b8416158015614191576000856001600160a01b031663128acb0888846140e088614801565b6140f06401000276a36001615dbb565b8b8b604051602001614103929190615de2565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401614132959493929190615dfb565b60408051808303816000875af1158015614150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141749190615e36565b9150506141898161418490615e5a565b61486f565b925050614263565b6000856001600160a01b031663128acb0888846141ad88614801565b6141cc600173fffd8963efd1fc6a506488495d951d5263988d26615e76565b8b8b6040516020016141df929190615de2565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161420e959493929190615dfb565b60408051808303816000875af115801561422c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142509190615e36565b50905061425f61418482615e5a565b9250505b50949350505050565b6000808061427b600a85615eac565b9050614292600a61428c8684613a6d565b906148c1565b91508060011480156142a45750600082115b80156142ba57506008546001600160a01b031615155b156142c457600192505b50915091565b60008086156142f5576142ee61271061428c6004548961491090919063ffffffff16565b9050614313565b61431061271061428c6005548961491090919063ffffffff16565b90505b8085101561436b5761432786868686614977565b61436b5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207369676e61747572652066656560581b6044820152606401610618565b6143758686613a6d565b979650505050505050565b60408051600481526024810182526020810180516001600160e01b0316630d0e30db60e41b179052905160009182916001600160a01b0386169185916143c69190615932565b60006040518083038185875af1925050503d8060008114614403576040519150601f19603f3d011682016040523d82523d6000602084013e614408565b606091505b5091509150818015614432575080511580614432575080806020019051810190614432919061594e565b61095e5760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a204445504f5349545f4641494c454400006044820152606401610618565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916144e29190615932565b6000604051808303816000865af19150503d806000811461451f576040519150601f19603f3d011682016040523d82523d6000602084013e614524565b606091505b509150915081801561454e57508051158061454e57508080602001905181019061454e919061594e565b6117675760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610618565b6060611500826040516020016145be91815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b906000906145f6906002615ec0565b614601906002615b86565b6001600160401b0381111561461857614618614b9b565b6040519080825280601f01601f191660200182016040528015614642576020820181803683370190505b509050600360fc1b8160008151811061465d5761465d615422565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061468c5761468c615422565b60200101906001600160f81b031916908160001a90535060005b84518110156147ad578260048683815181106146c4576146c4615422565b01602001516001600160f81b031916901c60f81c601081106146e8576146e8615422565b1a60f81b826146f8836002615ec0565b614703906002615b86565b8151811061471357614713615422565b60200101906001600160f81b031916908160001a9053508285828151811061473d5761473d615422565b60209101015160f81c600f166010811061475957614759615422565b1a60f81b82614769836002615ec0565b614774906003615b86565b8151811061478457614784615422565b60200101906001600160f81b031916908160001a905350806147a581615467565b9150506146a6565b509392505050565b6147be816109b3565b61107b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610618565b60006001600160ff1b0382111561486b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610618565b5090565b60008082121561486b5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610618565b6000816000036149065760405162461bcd60e51b815260206004820152601060248201526f64732d6d6174682d6469762d7a65726f60801b6044820152606401610618565b6106908284615ed7565b6000811580614934575082826149268183615ec0565b92506149329083615ed7565b145b6115005760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b6044820152606401610618565b600954604080517f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f602082015233918101919091526060810186905260808101859052600091829160a001604051602081830303815290604052805190602001206040516020016149ff92919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506000806000614a5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614aeb92505050565b925092509250600060018585858560405160008152602001604052604051614a9f949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015614ac1573d6000803e3d6000fd5b5050604051601f1901516007546001600160a01b039081169116149b9a5050505050505050505050565b60008060008351604114614b3c5760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840e6d2cedcc2e8eae4ca40d8cadccee8d60431b6044820152606401610618565b5050506020810151604082015160609092015160001a92909190565b6001600160a01b03929092168252602082015260400190565b60008085851115614b8157600080fd5b83861115614b8e57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614bd957614bd9614b9b565b604052919050565b60006001600160401b03821115614bfa57614bfa614b9b565b50601f01601f191660200190565b600080600060608486031215614c1d57600080fd5b833592506020840135915060408401356001600160401b03811115614c4157600080fd5b8401601f81018613614c5257600080fd5b8035614c65614c6082614be1565b614bb1565b818152876020838501011115614c7a57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6001600160a01b0392831681529116602082015260400190565b60008060408385031215614cc757600080fd5b82356001600160401b03811115614cdd57600080fd5b83016101408186031215614cf057600080fd5b946020939093013593505050565b60006001600160401b03821115614d1757614d17614b9b565b5060051b60200190565b6001600160a01b038116811461107b57600080fd5b8035614d4181614d21565b919050565b60008060408385031215614d5957600080fd5b82356001600160401b03811115614d6f57600080fd5b8301601f81018513614d8057600080fd5b80356020614d90614c6083614cfe565b82815260059290921b83018101918181019088841115614daf57600080fd5b938201935b83851015614dd6578435614dc781614d21565b82529382019390820190614db4565b9550614de59050868201614d36565b93505050509250929050565b600080600060608486031215614e0657600080fd5b8335614e1181614d21565b92506020840135614e2181614d21565b929592945050506040919091013590565b60005b83811015614e4d578181015183820152602001614e35565b50506000910152565b60008151808452614e6e816020860160208601614e32565b601f01601f19169290920160200192915050565b831515815282151560208201526060604082015260018060a01b038251166060820152600060208301516040608084015261205660a0840182614e56565b60008060008060608587031215614ed657600080fd5b843593506020850135925060408501356001600160401b0380821115614efb57600080fd5b818701915087601f830112614f0f57600080fd5b813581811115614f1e57600080fd5b886020828501011115614f3057600080fd5b95989497505060200194505050565b60008060408385031215614f5257600080fd5b82356001600160401b0380821115614f6957600080fd5b908401906101208287031215614f7e57600080fd5b90925060208401359080821115614f9457600080fd5b50830160408186031215614fa757600080fd5b809150509250929050565b60006101608284031215614fc557600080fd5b50919050565b600060208284031215614fdd57600080fd5b81356001600160401b03811115614ff357600080fd5b614fff84828501614fb2565b949350505050565b60006020828403121561501957600080fd5b81356004811061069057600080fd5b801515811461107b57600080fd5b600082601f83011261504757600080fd5b81356020615057614c6083614cfe565b82815260059290921b8401810191818101908684111561507657600080fd5b8286015b84811015615091578035835291830191830161507a565b509695505050505050565b600080604083850312156150af57600080fd5b82356001600160401b03808211156150c657600080fd5b818501915085601f8301126150da57600080fd5b813560206150ea614c6083614cfe565b82815260059290921b8401810191818101908984111561510957600080fd5b948201945b8386101561513057853561512181615028565b8252948201949082019061510e565b9650508601359250508082111561514657600080fd5b5061098385828601615036565b60008083601f84011261516557600080fd5b5081356001600160401b0381111561517c57600080fd5b6020830191508360208260051b850101111561519757600080fd5b9250929050565b600080600080600080606087890312156151b757600080fd5b86356001600160401b03808211156151ce57600080fd5b6151da8a838b01615153565b909850965060208901359150808211156151f357600080fd5b6151ff8a838b01615153565b9096509450604089013591508082111561521857600080fd5b5061522589828a01615153565b979a9699509497509295939492505050565b60006020828403121561524957600080fd5b813561069081614d21565b6000806000806040858703121561526a57600080fd5b84356001600160401b038082111561528157600080fd5b61528d88838901615153565b909650945060208701359150808211156152a657600080fd5b506152b387828801615153565b95989497509550505050565b6000806000606084860312156152d457600080fd5b83356152df81614d21565b925060208401356152ef81614d21565b915060408401356152ff81614d21565b809150509250925092565b60008060006040848603121561531f57600080fd5b833561532a81615028565b925060208401356001600160401b0381111561534557600080fd5b61535186828701615153565b9497909650939450505050565b6001600160a01b0391909116815260200190565b6000806040838503121561538557600080fd5b8251915060208301516001600160401b038111156153a257600080fd5b8301601f810185136153b357600080fd5b80516153c1614c6082614be1565b8181528660208385010111156153d657600080fd5b6153e7826020830160208601614e32565b8093505050509250929050565b6000806040838503121561540757600080fd5b825161541281614d21565b6020939093015192949293505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561544a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161547957615479615451565b5060010190565b600181811c9082168061549457607f821691505b602082108103614fc557634e487b7160e01b600052602260045260246000fd5b8181038181111561150057611500615451565b634e487b7160e01b600052602160045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000808335601e1984360301811261552b57600080fd5b8301803591506001600160401b0382111561554557600080fd5b60200191503681900382131561519757600080fd5b602080825260179082015276646174612073686f756c64206265206e6f74207a65726f60481b604082015260600190565b6020808252601f908201527f616d6f756e742073686f756c642062652067726561746572207468616e203000604082015260600190565b8183823760009101908152919050565b6020815260006106906020830184614e56565b6020808252600c908201526b696e76616c6964206461746160a01b604082015260600190565b601f82111561081657600081815260208120601f850160051c810160208610156156325750805b601f850160051c820191505b818110156117675782815560010161563e565b81516001600160401b0381111561566a5761566a614b9b565b61567e816156788454615480565b8461560b565b602080601f8311600181146156b3576000841561569b5750858301515b600019600386901b1c1916600185901b178555611767565b600085815260208120601f198616915b828110156156e2578886015182559484019460019091019084016156c3565b50858210156157005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8183526000602080850194508260005b8581101561574e57813561573381614d21565b6001600160a01b031687529582019590820190600101615720565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261579957600080fd5b83016020810192503590506001600160401b038111156157b857600080fd5b80360382131561519757600080fd5b6060808252810186905260006001600160fb1b038711156157e757600080fd5b8660051b80896080850137808301905060206080848303018185015261581160808301888a615710565b84810360408601528581529150808201600586901b830182018760005b8881101561586857858303601f19018452615849828b615782565b615854858284615759565b95870195945050509084019060010161582e565b50909c9b505050505050505050505050565b602081526000614fff602083018486615710565b6040815260006158a2604083018587615710565b82810360208481019190915284518083528582019282019060005b818110156158db5784511515835293830193918301916001016158bd565b509098975050505050505050565b60ff60f81b81526bffffffffffffffffffffffff198460601b16600182015282601582015260008251615923816035850160208701614e32565b91909101603501949350505050565b60008251615944818460208701614e32565b9190910192915050565b60006020828403121561596057600080fd5b815161069081615028565b602080825260079082015266115e1c1a5c995960ca1b604082015260600190565b6000808335601e198436030181126159a357600080fd5b8301803591506001600160401b038211156159bd57600080fd5b6020019150600581901b360382131561519757600080fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015615a1f5784516001600160a01b0316835293830193918301916001016159fa565b5090979650505050505050565b60006020808385031215615a3f57600080fd5b82516001600160401b03811115615a5557600080fd5b8301601f81018513615a6657600080fd5b8051615a74614c6082614cfe565b81815260059190911b82018301908381019087831115615a9357600080fd5b928401925b8284101561437557835182529284019290840190615a98565b602080825260139082015272151bdbc81b1a5d1d1b19481c9958d95a5d9959606a1b604082015260600190565b6020815260008235615aef81614d21565b6001600160a01b0316602083810191909152615b0d90840184615782565b604080850152615b21606085018284615759565b95945050505050565b602080825260179082015276496e76616c69642077726170706564206164647265737360481b604082015260600190565b602080825260119082015270696e76616c6964206d73672e76616c756560781b604082015260600190565b8082018082111561150057611500615451565b60008351615bab818460208801614e32565b6508ae4e4dee4560d31b9083019081528351615bce816006840160208801614e32565b602960f81b60069290910191820152600701949350505050565b60008351615bfa818460208801614e32565b650a0c2dcd2c6560d31b9083019081528351615bce816006840160208801614e32565b60008351615c2f818460208801614e32565b670aadcd6dcdeeedc560c31b9083019081528351615c54816008840160208801614e32565b602960f81b60089290910191820152600901949350505050565b8481528360208201528260408201526080606082015260006120566080830184614e56565b6001600160a01b03831681526040810160048310615cc157634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b80516001600160701b0381168114614d4157600080fd5b600080600060608486031215615cfa57600080fd5b615d0384615cce565b9250615d1160208501615cce565b9150604084015163ffffffff811681146152ff57600080fd5b84815283602082015260018060a01b03831660408201526080606082015260006120566080830184614e56565b600060208284031215615d6957600080fd5b815161069081614d21565b600060208284031215615d8657600080fd5b815162ffffff8116811461069057600080fd5b602080825260089082015267109859081c1bdbdb60c21b604082015260600190565b6001600160a01b03818116838216019080821115615ddb57615ddb615451565b5092915050565b828152604060208201526000614fff6040830184614e56565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061437590830184614e56565b60008060408385031215615e4957600080fd5b505080516020909101519092909150565b6000600160ff1b8201615e6f57615e6f615451565b5060000390565b6001600160a01b03828116828216039080821115615ddb57615ddb615451565b634e487b7160e01b600052601260045260246000fd5b600082615ebb57615ebb615e96565b500690565b808202811582820484141761150057611500615451565b600082615ee657615ee6615e96565b50049056fea2646970667358221220af26bc8f138765be2c257e6b14ca2516659cabbd553254e68c065dd1379b20a364736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101655760003560e01c80637ec753fe116100c1578063b9b5149b1161007a578063b9b5149b14610538578063bf5c55a21461054b578063c34c08e51461056b578063d63234e014610592578063d808d889146105b0578063fa461e3314610289578063fa9ec7af146105c3576101a5565b80637ec753fe1461048357806392bcc8be146104a357806394d3d793146104c3578063afed2d0e146104d8578063b93c0beb146104f8578063b946fd3b14610518576101a5565b80633644e5151161011e5780633644e515146102d15780633c481d57146102e75780634c42342f146103bf5780635ac86ab7146103d25780636b3ec416146104025780636fbf72f9146104155780637e467ecf1461044f576101a5565b80630ced9fb9146101e35780630dc4bdae146102195780630e8cc7051461023a5780631975b0961461025a57806323a69e75146102895780632adb806f146102a9576101a5565b366101a5577f7784f8d436dc514f0690e472c7e2d7f660a73e504c69b2350f6be5a5f02432ef333460405161019b929190614b58565b60405180910390a1005b3480156101b157600080fd5b50600080806101c33660048184614b71565b8101906101d09190614c08565b9250925092506101e18383836105d6565b005b3480156101ef57600080fd5b50600654600754604051610210926001600160a01b03908116921690614c9a565b60405180910390f35b61022c610227366004614cb4565b610684565b604051908152602001610210565b34801561024657600080fd5b506101e1610255366004614d46565b610697565b34801561026657600080fd5b5061027a610275366004614df1565b61081b565b60405161021093929190614e82565b34801561029557600080fd5b506101e16102a4366004614ec0565b61091d565b6102bc6102b7366004614f3f565b610964565b60408051928352602083019190915201610210565b3480156102dd57600080fd5b5061022c60095481565b3480156102f357600080fd5b5060026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b547fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0547f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c5460036000527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c35460ff9384169392831692918216911660408051941515855292151560208501529015159183019190915215156060820152608001610210565b6102bc6103cd366004614fcb565b61098d565b3480156103de57600080fd5b506103f26103ed366004615007565b6109b3565b6040519015158152602001610210565b6101e1610410366004614fcb565b6109f6565b34801561042157600080fd5b506004546005546008546040805193845260208401929092526001600160a01b031690820152606001610210565b34801561045b57600080fd5b5061022c7f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f81565b34801561048f57600080fd5b506101e161049e36600461509c565b610cc3565b3480156104af57600080fd5b506101e16104be36600461519e565b610e4a565b3480156104cf57600080fd5b506101e1610ff8565b3480156104e457600080fd5b506101e16104f3366004615237565b61107e565b34801561050457600080fd5b506101e1610513366004615254565b6110ef565b34801561052457600080fd5b506101e16105333660046152bf565b6113ae565b61022c610546366004614fcb565b6114f5565b34801561055757600080fd5b506101e161056636600461530a565b611506565b34801561057757600080fd5b506000546001600160a01b03165b604051610210919061535e565b34801561059e57600080fd5b506001546001600160a01b0316610585565b61022c6105be366004614f3f565b61159c565b6102bc6105d1366004614cb4565b6115a8565b60008313806105e55750600082135b6106215760405162461bcd60e51b81526020600482015260086024820152674d30206f72204d3160c01b60448201526064015b60405180910390fd5b600080828060200190518101906106389190615372565b915091506000808280602001905181019061065391906153f4565b915091506106628482336115ba565b85600088131561066f5750865b61067a83338361176f565b5050505050505050565b60006106908383611893565b9392505050565b61069f611e1d565b60005b82518110156108165760006106cf8483815181106106c2576106c2615422565b6020026020010151611e94565b156106e55750476106e08382611ecd565b610793565b8382815181106106f7576106f7615422565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161072a919061535e565b602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190615438565b905061079184838151811061078257610782615422565b60200260200101518483611f8a565b505b826001600160a01b0316336001600160a01b03168584815181106107b9576107b9615422565b60200260200101516001600160a01b03167f3115d1449a7b732c986cba18244e897a450f61e1bb8d589cd2e69e6c8924f9f7846040516107fb91815260200190565b60405180910390a4508061080e81615467565b9150506106a2565b505050565b604080518082018252600080825260606020808401919091526001600160a01b038781168352600a8252848320548782168452600b835285842054878552600c84529386902086518088019097528054909216865260018201805460ff92831697929095169594919384019161089090615480565b80601f01602080910402602001604051908101604052809291908181526020018280546108bc90615480565b80156109095780601f106108de57610100808354040283529160200191610909565b820191906000526020600020905b8154815290600101906020018083116108ec57829003601f168201915b505050505081525050905093509350939050565b61095e848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105d692505050565b50505050565b60008060005a90506109768585612060565b92505a61098390826154b4565b9150509250929050565b60008060005a905061099e84612516565b92505a6109ab90826154b4565b915050915091565b6000600260008360038111156109cb576109cb6154c7565b60038111156109dc576109dc6154c7565b815260208101919091526040016000205460ff1692915050565b600260035403610a185760405162461bcd60e51b8152600401610618906154dd565b60026003556003610a2881612a4f565b6000610a38610120840184615514565b905011610a575760405162461bcd60e51b81526004016106189061555a565b60008260a0013511610a7b5760405162461bcd60e51b81526004016106189061558b565b600a6000610a8f6060850160408601615237565b6001600160a01b0316815260208101919091526040016000205460ff16610ae95760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21031b0b63632b960911b6044820152606401610618565b6000610b3a6003610afd6020860186615237565b610b0d60a0870160808801615237565b610b1d6060880160408901615237565b60a088013560c0890135610b356101408b018b615514565b612a98565b9050600080610b4f6060860160408701615237565b6001600160a01b031683610b67610120880188615514565b604051610b759291906155c2565b60006040518083038185875af1925050503d8060008114610bb2576040519150601f19603f3d011682016040523d82523d6000602084013e610bb7565b606091505b509150915081610c0b57610bf2816040518060400160405280600f81526020016e2a3930b739b4ba21b937b9b9ab1a9d60891b815250612cce565b60405162461bcd60e51b815260040161061891906155d2565b610c32610c1b6020870187615237565b610c2b6060880160408901615237565b6000612f44565b50610cb99050610c456020850185615237565b610c556040860160208701615237565b610c656080870160608801615237565b60a0870135600060e0890135610c7f6101008b018b615514565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061305a92505050565b5050600160035550565b610ccb611e1d565b60005b8251811015610816576000828281518110610ceb57610ceb615422565b602002602001015110158015610d1c57506103e8828281518110610d1157610d11615422565b602002602001015111155b610d5d5760405162461bcd60e51b8152602060048201526012602482015271066656520726174652069733a302d313030360741b6044820152606401610618565b828181518110610d6f57610d6f615422565b602002602001015115610da157818181518110610d8e57610d8e615422565b6020026020010151600481905550610dc2565b818181518110610db357610db3615422565b60200260200101516005819055505b7f5fa95345cbe35dad70f67a9ca1430c22453a695590cb4fca05d58f637e85af4f838281518110610df557610df5615422565b6020026020010151838381518110610e0f57610e0f615422565b6020026020010151604051610e309291909115158252602082015260400190565b60405180910390a180610e4281615467565b915050610cce565b610e52611e1d565b848114610e715760405162461bcd60e51b8152600401610618906155e5565b828114610e905760405162461bcd60e51b8152600401610618906155e5565b8260005b81811015610fad576040518060400160405280878784818110610eb957610eb9615422565b9050602002016020810190610ece9190615237565b6001600160a01b03168152602001858584818110610eee57610eee615422565b9050602002810190610f009190615514565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250600c92508b90508a85818110610f4d57610f4d615422565b6020908102929092013583525081810192909252604001600020825181546001600160a01b0319166001600160a01b03909116178155908201516001820190610f969082615651565b509050508080610fa590615467565b915050610e94565b507f652c1af850dcc0b28fcb71cd9473023f56a89edd81bbe7b51056a04caa940024878787878787604051610fe7969594939291906157c7565b60405180910390a150505050505050565b338061100c6001546001600160a01b031690565b6001600160a01b0316146110725760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206e657720656044820152663c32b1baba37b960c91b6064820152608401610618565b61107b816130be565b50565b611086611e1d565b600180546001600160a01b0383166001600160a01b031990911681179091556110b76000546001600160a01b031690565b6001600160a01b03167fdd01547fc40682edc3cd8d164d53f5a1ae6b46138a83f045658ed760823ddba860405160405180910390a350565b6110f7611e1d565b82156111f35760005b838110156111b857600a600086868481811061111e5761111e615422565b90506020020160208101906111339190615237565b6001600160a01b03168152602081019190915260400160009081205460ff161590600a9087878581811061116957611169615422565b905060200201602081019061117e9190615237565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806111b081615467565b915050611100565b507fb05655746bd43b7fe3ccd9d28b7685b4c67ddc51e70890062b0f7f85dd69269584846040516111ea92919061587a565b60405180910390a15b801561095e576000816001600160401b0381111561121357611213614b9b565b60405190808252806020026020018201604052801561123c578160200160208202803683370190505b50905060005b8281101561136b57600b600085858481811061126057611260615422565b90506020020160208101906112759190615237565b6001600160a01b03168152602081019190915260400160009081205460ff161590600b908686858181106112ab576112ab615422565b90506020020160208101906112c09190615237565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600b9085858481811061130057611300615422565b90506020020160208101906113159190615237565b6001600160a01b03168152602081019190915260400160002054825160ff9091169083908390811061134957611349615422565b911515602092830291909101909101528061136381615467565b915050611242565b507f4a28b173d9bc739be3886d172e07fef80392184787fc6b92406ce0f0c05b7e6383838360405161139f9392919061588e565b60405180910390a15050505050565b6113b6611e1d565b6001600160a01b0383161561141957600680546001600160a01b0319166001600160a01b0385161790556040517f347fade115440908839b750620f0add8f417b77a392657edd70b950373eda9c39061141090859061535e565b60405180910390a15b6001600160a01b0382161561148557600780546001600160a01b038481166001600160a01b03198316179092556040519116907ff9c6fa562c9d8326f8518a29a53ef18ab03cd6b9eead73ac667c5e289354c73e9061147b9083908690614c9a565b60405180910390a1505b6001600160a01b0381161561081657600880546001600160a01b038381166001600160a01b03198316179092556040519116907fb3911b5760f95a64aaa8d7f1775f57a7b6ed0bcf1ebb3fbfcc045e2f04eaad11906114e79083908590614c9a565b60405180910390a150505050565b600061150082612516565b92915050565b61150e611e1d565b8060005b818110156115955784156115545761154f84848381811061153557611535615422565b905060200201602081019061154a9190615007565b613118565b611583565b61158384848381811061156957611569615422565b905060200201602081019061157e9190615007565b6131ad565b8061158d81615467565b915050611512565b5050505050565b60006106908383612060565b60008060005a90506109768585611893565b600f60f884901c166000818152600c60209081526040808320815180830190925280546001600160a01b0316825260018101805492939192918401916115ff90615480565b80601f016020809104026020016040519081016040528092919081815260200182805461162b90615480565b80156116785780601f1061164d57610100808354040283529160200191611678565b820191906000526020600020905b81548152906001019060200180831161165b57829003601f168201915b5050509190925250508151919250506001600160a01b03166116d85760405162461bcd60e51b815260206004820152601960248201527810d85b1b189858dac8189859081c1bdbdb081a5b99195e1959603a1b6044820152606401610618565b600081600001518583602001516040516020016116f7939291906158e9565b6040516020818303038152906040528051906020012060001c9050836001600160a01b0316816001600160a01b0316146117675760405162461bcd60e51b815260206004820152601160248201527010d85b1b189858dac8189859081c1bdbdb607a1b6044820152606401610618565b505050505050565b600080846001600160a01b031663a9059cbb8585604051602401611794929190614b58565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516117cd9190615932565b6000604051808303816000865af19150503d806000811461180a576040519150601f19603f3d011682016040523d82523d6000602084013e61180f565b606091505b5091509150818015611839575080511580611839575080806020019051810190611839919061594e565b6115955760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a205452414e534645525f544f4b454e5f46604482015264105253115160da1b6064820152608401610618565b60006002600354036118b75760405162461bcd60e51b8152600401610618906154dd565b600260035560016118c781612a4f565b428310156118e75760405162461bcd60e51b81526004016106189061596b565b6001600f604086013560f81c16146000808080806119058a87613236565b945094509450945094506119698360008151811061192557611925615422565b60200260200101518b8060e0019061193d919061598c565b600081811061194e5761194e615422565b90506020020160208101906119639190615237565b8661176f565b8515611b27578415611a51576119c460408b01358461198b60e08e018e61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613768915050565b611a4a826119d860408d0160208e01615237565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611a03919061535e565b602060405180830381865afa158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a449190615438565b90613a6d565b9750611cc9565b611abf60408b013584611a6760e08e018e61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d6000016020810190611aba9190615237565b613768565b611a4a818460018651611ad291906154b4565b81518110611ae257611ae2615422565b60200260200101516001600160a01b03166370a082318d6000016020810190611b0b9190615237565b6040518263ffffffff1660e01b8152600401611a03919061535e565b60008a604001356001600160a01b031663d06ca61f86866040518363ffffffff1660e01b8152600401611b5b9291906159d5565b600060405180830381865afa158015611b78573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba09190810190615a2c565b90508515611c0e57611bf38185611bba60e08f018f61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613ac3915050565b611c07836119d860408e0160208f01615237565b9850611cc7565b611c788185611c2060e08f018f61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508e6000016020810190611c739190615237565b613ac3565b611cc4828560018751611c8b91906154b4565b81518110611c9b57611c9b615422565b60200260200101516001600160a01b03166370a082318e6000016020810190611b0b9190615237565b98505b505b8960800135881015611ced5760405162461bcd60e51b815260040161061890615ab1565b8415611d2257611d0c611d0660408c0160208d01615237565b89613cbb565b611d22611d1c60208c018c615237565b89611ecd565b5050505050600085806101200190611d3a9190615514565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350611e0f9250611d8391505060c088018861598c565b6000818110611d9457611d94615422565b9050602002016020810190611da99190615237565b611db660c089018961598c565b6001611dc560c08c018c61598c565b611dd09291506154b4565b818110611ddf57611ddf615422565b9050602002016020810190611df49190615237565b611e0160208a018a615237565b89606001358860008761305a565b505050600160035592915050565b33611e306000546001600160a01b031690565b6001600160a01b031614611e925760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f74207468652065786563756044820152623a37b960e91b6064820152608401610618565b565b60006001600160a01b038216158061150057506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080516000808252602082019092526001600160a01b038416908390604051611ef79190615932565b60006040518083038185875af1925050503d8060008114611f34576040519150601f19603f3d011682016040523d82523d6000602084013e611f39565b606091505b50509050806108165760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610618565b6000806000856001600160a01b031663a9059cbb8686604051602401611fb1929190614b58565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611fea9190615932565b6000604051808303816000865af19150503d8060008114612027576040519150601f19603f3d011682016040523d82523d6000602084013e61202c565b606091505b5091509150818015612056575080511580612056575080806020019051810190612056919061594e565b9695505050505050565b60006002600354036120845760405162461bcd60e51b8152600401610618906154dd565b6002600355600061209481612a4f565b60006120a36020850185615514565b9050116120c25760405162461bcd60e51b81526004016106189061555a565b60008460800135116120e65760405162461bcd60e51b81526004016106189061558b565b60006120f86060860160408701615237565b6001600160a01b0316036121585760405162461bcd60e51b815260206004820152602160248201527f72656365697665722073686f756c64206265206e6f74206164647265737328306044820152602960f81b6064820152608401610618565b60008460a00135116121bd5760405162461bcd60e51b815260206004820152602860248201527f6d696e52657475726e416d6f756e742073686f756c6420626520677265617465604482015267072207468616e20360c41b6064820152608401610618565b600b60006121d16080870160608801615237565b6001600160a01b0316815260208101919091526040016000205460ff166122345760405162461bcd60e51b8152602060048201526017602482015276696e76616c69642077726170706564206164647265737360481b6044820152606401610618565b6006546000906001600160a01b03168161227e8161225560208a018a615237565b61226560808b0160608c01615237565b8560808c013560c08d0135610b356101008f018f615514565b90506122986122936040890160208a01615237565b611e94565b156122be576122ad6060880160408901615237565b6001600160a01b031631925061234c565b6122ce6040880160208901615237565b6001600160a01b03166370a082316122ec60608a0160408b01615237565b6040518263ffffffff1660e01b8152600401612308919061535e565b602060405180830381865afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190615438565b92505b600080836001600160a01b031683633f3204d28a6040516024016123709190615ade565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516123a99190615932565b60006040518083038185875af1925050503d80600081146123e6576040519150601f19603f3d011682016040523d82523d6000602084013e6123eb565b606091505b50915091508161242357610bf2816040518060400160405280600c81526020016b2a3930b739b4ba29bbb0b81d60a11b815250612cce565b5061243990506122936040890160208a01615237565b15612469576124628361245260608a0160408b01615237565b6001600160a01b03163190613a6d565b945061249e565b61249b8361247d60408a0160208b01615237565b6001600160a01b03166370a08231611b0b60608c0160408d01615237565b94505b8660a001358510156124c25760405162461bcd60e51b815260040161061890615ab1565b6125076124d26020890189615237565b6124e260408a0160208b01615237565b6124f260608b0160408c01615237565b60808b0135896000610c7f60e08f018f615514565b50505050600160035592915050565b600060026003540361253a5760405162461bcd60e51b8152600401610618906154dd565b6002600355600261254a81612a4f565b600061255a61010085018561598c565b9050116125975760405162461bcd60e51b815260206004820152600b60248201526a456d70747920706f6f6c7360a81b6044820152606401610618565b428360e0013510156125bb5760405162461bcd60e51b81526004016106189061596b565b600b60006125cf6080860160608701615237565b6001600160a01b0316815260208101919091526040016000205460ff166126085760405162461bcd60e51b815260040161061890615b2a565b60006126176020850185615237565b9050600061262b6040860160208701615237565b90506000806126406122936020890189615237565b15612658576126556080880160608901615237565b93505b6000612699600261266c60208b018b615237565b61267c60808c0160608d01615237565b60008c608001358d60c001358e806101200190610b359190615514565b90506126ae61229360408a0160208b01615237565b1561274c576126c36080890160608a01615237565b93506126d56080890160608a01615237565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612700919061535e565b602060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127419190615438565b9250600191506127da565b61275c6040890160208a01615237565b6001600160a01b03166370a0823161277a60608b0160408c01615237565b6040518263ffffffff1660e01b8152600401612796919061535e565b602060405180830381865afa1580156127b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d79190615438565b92505b60006127ea6101008a018a61598c565b9150309050606060018311156128a457876000805b858110156128995760008e80610100019061281a919061598c565b8381811061282a5761282a615422565b90506020020135905061283e848483613dd3565b9550935061284d6001886154b4565b82148015612859575088155b15612877578e60400160208101906128719190615237565b95508a92505b6128838682878b6140b4565b975050808061289190615467565b9150506127ff565b50859b505050612924565b6128d488886128b76101008f018f61598c565b60008181106128c8576128c8615422565b90506020020135613dd3565b91508590506128f0576128ed60608c0160408d01615237565b91505b612921826129026101008e018e61598c565b600081811061291357612913615422565b9050602002013583876140b4565b99505b505050811561299e57612941836119d860808b0160608c01615237565b96508760a001358710156129675760405162461bcd60e51b815260040161061890615ab1565b61298061297a60808a0160608b01615237565b88613cbb565b61299961299360608a0160408b01615237565b88611ecd565b6129f6565b6129d0836129b260408b0160208c01615237565b6001600160a01b03166370a08231611b0b60608d0160408e01615237565b96508760a001358710156129f65760405162461bcd60e51b815260040161061890615ab1565b612a3f612a0660208a018a615237565b612a1660408b0160208c01615237565b612a2660608c0160408d01615237565b8b608001358b60008e806101400190610c7f9190615514565b5050505050506001600355919050565b612a58816109b3565b1561107b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610618565b6000806000612aa68661426c565b9092509050600060038c6003811115612ac157612ac16154c7565b14612acd576001612ad0565b60005b90506000612ae1828a858a8a6142ca565b9050612aec8c611e94565b15612c205760038d6003811115612b0557612b056154c7565b03612b3b5788341015612b2a5760405162461bcd60e51b815260040161061890615b5b565b612b343484613a6d565b9450612b5e565b883414612b5a5760405162461bcd60e51b815260040161061890615b5b565b8094505b6001600160a01b038b1615612bff576001600160a01b038b166000908152600b602052604090205460ff16612ba55760405162461bcd60e51b815260040161061890615b2a565b60038d6003811115612bb957612bb96154c7565b03612bdc57612bc88b86614380565b612bd38b8b87612f44565b60009450612bff565b60028d6003811115612bf057612bf06154c7565b03612bff57612bff8b82614380565b8315612c1b57600854612c1b906001600160a01b031684611ecd565b612cbe565b612c2c8c33308c61447e565b60038d6003811115612c4057612c406154c7565b03612c5857612c508c8b83612f44565b349450612c9e565b60008d6003811115612c6c57612c6c6154c7565b03612c8157612c7c8c8b8361176f565b612c9e565b60028d6003811115612c9557612c956154c7565b03612c9e578094505b8315612cbe57600854612cbc908d906001600160a01b031685611f8a565b505b5050505098975050505050505050565b60606044835110158015612d07575082600081518110612cf057612cf0615422565b6020910101516001600160f81b031916600160fb1b145b8015612d38575082600181518110612d2157612d21615422565b6020910101516001600160f81b03191660c360f81b145b8015612d69575082600281518110612d5257612d52615422565b6020910101516001600160f81b031916607960f81b145b8015612d9a575082600381518110612d8357612d83615422565b6020910101516001600160f81b031916600560fd1b145b15612e2457604483810180519091612db29190615b86565b84511015612dfa5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610618565b8281604051602001612e0d929190615b99565b604051602081830303815290604052915050611500565b82516024148015612e5a575082600081518110612e4357612e43615422565b6020910101516001600160f81b031916602760f91b145b8015612e8b575082600181518110612e7457612e74615422565b6020910101516001600160f81b031916600960fb1b145b8015612ebc575082600281518110612ea557612ea5615422565b6020910101516001600160f81b031916607b60f81b145b8015612eed575082600381518110612ed657612ed6615422565b6020910101516001600160f81b031916607160f81b145b15612f1257602483015182612f01826145a6565b604051602001612e0d929190615be8565b81612f1c846145ce565b604051602001612f2d929190615c1d565b604051602081830303815290604052905092915050565b600080846001600160a01b031663095ea7b38585604051602401612f69929190614b58565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612fa29190615932565b6000604051808303816000865af19150503d8060008114612fdf576040519150601f19603f3d011682016040523d82523d6000602084013e612fe4565b606091505b509150915081801561300e57508051158061300e57508080602001905181019061300e919061594e565b6115955760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c454400006044820152606401610618565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f2251435bd151cd72851a82be055bf6d1c3d7f34d08d56493dddf874229b8e897878787876040516130ad9493929190615c6e565b60405180910390a450505050505050565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f88436636ea40d5bb1bcc55ff9cd54788af71da886f4147a87f199adcca733d4d9190a35050565b8061312281612a4f565b60016002600084600381111561313a5761313a6154c7565b600381111561314b5761314b6154c7565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f534f879afd40abb4e39f8e1b77a316be4c8e3521d9cf5a3a3db8959d574d455933836040516131a1929190615c93565b60405180910390a15050565b806131b7816147b5565b6000600260008460038111156131cf576131cf6154c7565b60038111156131e0576131e06154c7565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f4cd3e1443d03aba343c5d882744f8f172c07b495e955ac3defb325cbd73c855033836040516131a1929190615c93565b6000806060818061324a60e088018861598c565b61325691506001615b86565b61326360c089018961598c565b9050146132a15760405162461bcd60e51b815260206004820152600c60248201526b092dcecc2d8d2c840e0c2e8d60a31b6044820152606401610618565b600b60006132b560408a0160208b01615237565b6001600160a01b0316815260208101919091526040016000205460ff166132ee5760405162461bcd60e51b815260040161061890615b2a565b6000806132fe8960a0013561426c565b9092509050613321600160608b01358361331c6101008e018e615514565b6142ca565b9550600061333260c08b018b61598c565b80806020026020016040519081016040528093929190818152602001838360200280828437600092018290525093945084925060019150613378905060c08e018e61598c565b6133839291506154b4565b8151811061339357613393615422565b602002602001015190506133d68b8060c001906133b0919061598c565b60008181106133c1576133c1615422565b90506020020160208101906122939190615237565b15613497578a6060013534146134225760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964206d73672e76616c756560781b6044820152606401610618565b831561343e5760085461343e906001600160a01b031684611ecd565b61344e60408c0160208d01615237565b8260008151811061346157613461615422565b6001600160a01b039092166020928302919091018201526134929061348c9060408e01908e01615237565b89614380565b6135fa565b89156135a957816000815181106134b0576134b0615422565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016134e3919061535e565b602060405180830381865afa158015613500573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135249190615438565b97506135508260008151811061353c5761353c615422565b602002602001015133308e6060013561447e565b6135a28b60a00135611a448a8560008151811061356f5761356f615422565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611a03919061535e565b97506135bf565b6135bf8260008151811061353c5761353c615422565b83156135fa576135f8826000815181106135db576135db615422565b60209081029190910101516008546001600160a01b031685611f8a565b505b61360381611e94565b156136d55761361860408c0160208d01615237565b826001845161362791906154b4565b8151811061363757613637615422565b6001600160a01b03909216602092830291909101820152600199506136629060408d01908d01615237565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161368d919061535e565b602060405180830381865afa1580156136aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ce9190615438565b9550613757565b8915613757576001600160a01b0381166370a082316136f760208e018e615237565b6040518263ffffffff1660e01b8152600401613713919061535e565b602060405180830381865afa158015613730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137549190615438565b94505b819650505050509295509295909350565b60005b6001845161377991906154b4565b8110156115955760008085838151811061379557613795615422565b6020026020010151868460016137ab9190615b86565b815181106137bb576137bb615422565b6020026020010151915091506000816001600160a01b0316836001600160a01b0316106137e95781836137ec565b82825b509050600086858151811061380357613803615422565b60200260200101519050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138759190615ce5565b506001600160701b031691506001600160701b03169150600080876001600160a01b03168a6001600160a01b0316146138af5782846138b2565b83835b915091506138e6828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401611a03919061535e565b95508e6001600160a01b031663054d50d48784846040518463ffffffff1660e01b8152600401613929939291909283526020830191909152604082015260600190565b602060405180830381865afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a9190615438565b945050505050600080856001600160a01b0316886001600160a01b03161461399457826000613998565b6000835b91509150600060028d516139ac91906154b4565b8a106139b8578a6139dd565b8b6139c48b6001615b86565b815181106139d4576139d4615422565b60200260200101515b6040805160008152602081019182905263022c0d9f60e01b9091529091506001600160a01b0387169063022c0d9f90613a1f9086908690869060248101615d2a565b600060405180830381600087803b158015613a3957600080fd5b505af1158015613a4d573d6000803e3d6000fd5b505050505050505050505050508080613a6590615467565b91505061376b565b600082613a7a83826154b4565b91508111156115005760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b6044820152606401610618565b60005b60018451613ad491906154b4565b81101561159557600080858381518110613af057613af0615422565b602002602001015186846001613b069190615b86565b81518110613b1657613b16615422565b6020026020010151915091506000816001600160a01b0316836001600160a01b031610613b44578183613b47565b82825b509050600088613b58866001615b86565b81518110613b6857613b68615422565b60200260200101519050600080836001600160a01b0316866001600160a01b031614613b9657826000613b9a565b6000835b91509150600060028b51613bae91906154b4565b8810613bba5788613bdf565b89613bc6896001615b86565b81518110613bd657613bd6615422565b60200260200101515b9050898881518110613bf357613bf3615422565b60200260200101516001600160a01b031663022c0d9f84848460006001600160401b03811115613c2557613c25614b9b565b6040519080825280601f01601f191660200182016040528015613c4f576020820181803683370190505b506040518563ffffffff1660e01b8152600401613c6f9493929190615d2a565b600060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b50505050505050505050508080613cb390615467565b915050613ac6565b600080836001600160a01b03166000632e1a7d4d85604051602401613ce291815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051613d1b9190615932565b60006040518083038185875af1925050503d8060008114613d58576040519150601f19603f3d011682016040523d82523d6000602084013e613d5d565b606091505b5091509150818015613d87575080511580613d87575080806020019051810190613d87919061594e565b61095e5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a2057495448445241575f4641494c4544006044820152606401610618565b6000606060008390506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e409190615d57565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea69190615d57565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f0c9190615d74565b604080516001600160a01b03808716602083015285169181019190915262ffffff8216606082015290915060009060800160408051601f1981840301815291905280516020909101209050600160ff1b881615801561400257846001600160a01b03168b6001600160a01b031614613f965760405162461bcd60e51b815260040161061890615d99565b6001600160a01b038a1615613fd657836001600160a01b03168a6001600160a01b031614613fd65760405162461bcd60e51b815260040161061890615d99565b8397508482604051602001613fec929190614b58565b604051602081830303815290604052965061409b565b836001600160a01b03168b6001600160a01b0316146140335760405162461bcd60e51b815260040161061890615d99565b6001600160a01b038a161561407357846001600160a01b03168a6001600160a01b0316146140735760405162461bcd60e51b815260040161061890615d99565b8497508382604051602001614089929190614b58565b60405160208183030381529060405296505b6140a689838b6115ba565b505050505050935093915050565b6000600160ff1b8416158015614191576000856001600160a01b031663128acb0888846140e088614801565b6140f06401000276a36001615dbb565b8b8b604051602001614103929190615de2565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401614132959493929190615dfb565b60408051808303816000875af1158015614150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141749190615e36565b9150506141898161418490615e5a565b61486f565b925050614263565b6000856001600160a01b031663128acb0888846141ad88614801565b6141cc600173fffd8963efd1fc6a506488495d951d5263988d26615e76565b8b8b6040516020016141df929190615de2565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161420e959493929190615dfb565b60408051808303816000875af115801561422c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142509190615e36565b50905061425f61418482615e5a565b9250505b50949350505050565b6000808061427b600a85615eac565b9050614292600a61428c8684613a6d565b906148c1565b91508060011480156142a45750600082115b80156142ba57506008546001600160a01b031615155b156142c457600192505b50915091565b60008086156142f5576142ee61271061428c6004548961491090919063ffffffff16565b9050614313565b61431061271061428c6005548961491090919063ffffffff16565b90505b8085101561436b5761432786868686614977565b61436b5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207369676e61747572652066656560581b6044820152606401610618565b6143758686613a6d565b979650505050505050565b60408051600481526024810182526020810180516001600160e01b0316630d0e30db60e41b179052905160009182916001600160a01b0386169185916143c69190615932565b60006040518083038185875af1925050503d8060008114614403576040519150601f19603f3d011682016040523d82523d6000602084013e614408565b606091505b5091509150818015614432575080511580614432575080806020019051810190614432919061594e565b61095e5760405162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a204445504f5349545f4641494c454400006044820152606401610618565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916144e29190615932565b6000604051808303816000865af19150503d806000811461451f576040519150601f19603f3d011682016040523d82523d6000602084013e614524565b606091505b509150915081801561454e57508051158061454e57508080602001905181019061454e919061594e565b6117675760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610618565b6060611500826040516020016145be91815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b906000906145f6906002615ec0565b614601906002615b86565b6001600160401b0381111561461857614618614b9b565b6040519080825280601f01601f191660200182016040528015614642576020820181803683370190505b509050600360fc1b8160008151811061465d5761465d615422565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061468c5761468c615422565b60200101906001600160f81b031916908160001a90535060005b84518110156147ad578260048683815181106146c4576146c4615422565b01602001516001600160f81b031916901c60f81c601081106146e8576146e8615422565b1a60f81b826146f8836002615ec0565b614703906002615b86565b8151811061471357614713615422565b60200101906001600160f81b031916908160001a9053508285828151811061473d5761473d615422565b60209101015160f81c600f166010811061475957614759615422565b1a60f81b82614769836002615ec0565b614774906003615b86565b8151811061478457614784615422565b60200101906001600160f81b031916908160001a905350806147a581615467565b9150506146a6565b509392505050565b6147be816109b3565b61107b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610618565b60006001600160ff1b0382111561486b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610618565b5090565b60008082121561486b5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610618565b6000816000036149065760405162461bcd60e51b815260206004820152601060248201526f64732d6d6174682d6469762d7a65726f60801b6044820152606401610618565b6106908284615ed7565b6000811580614934575082826149268183615ec0565b92506149329083615ed7565b145b6115005760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b6044820152606401610618565b600954604080517f048f880a603b1aab0e626a287e33d603417b3d53a36f7527b7c86365bf7def4f602082015233918101919091526060810186905260808101859052600091829160a001604051602081830303815290604052805190602001206040516020016149ff92919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506000806000614a5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250614aeb92505050565b925092509250600060018585858560405160008152602001604052604051614a9f949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015614ac1573d6000803e3d6000fd5b5050604051601f1901516007546001600160a01b039081169116149b9a5050505050505050505050565b60008060008351604114614b3c5760405162461bcd60e51b8152602060048201526018602482015277092dcecc2d8d2c840e6d2cedcc2e8eae4ca40d8cadccee8d60431b6044820152606401610618565b5050506020810151604082015160609092015160001a92909190565b6001600160a01b03929092168252602082015260400190565b60008085851115614b8157600080fd5b83861115614b8e57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614bd957614bd9614b9b565b604052919050565b60006001600160401b03821115614bfa57614bfa614b9b565b50601f01601f191660200190565b600080600060608486031215614c1d57600080fd5b833592506020840135915060408401356001600160401b03811115614c4157600080fd5b8401601f81018613614c5257600080fd5b8035614c65614c6082614be1565b614bb1565b818152876020838501011115614c7a57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6001600160a01b0392831681529116602082015260400190565b60008060408385031215614cc757600080fd5b82356001600160401b03811115614cdd57600080fd5b83016101408186031215614cf057600080fd5b946020939093013593505050565b60006001600160401b03821115614d1757614d17614b9b565b5060051b60200190565b6001600160a01b038116811461107b57600080fd5b8035614d4181614d21565b919050565b60008060408385031215614d5957600080fd5b82356001600160401b03811115614d6f57600080fd5b8301601f81018513614d8057600080fd5b80356020614d90614c6083614cfe565b82815260059290921b83018101918181019088841115614daf57600080fd5b938201935b83851015614dd6578435614dc781614d21565b82529382019390820190614db4565b9550614de59050868201614d36565b93505050509250929050565b600080600060608486031215614e0657600080fd5b8335614e1181614d21565b92506020840135614e2181614d21565b929592945050506040919091013590565b60005b83811015614e4d578181015183820152602001614e35565b50506000910152565b60008151808452614e6e816020860160208601614e32565b601f01601f19169290920160200192915050565b831515815282151560208201526060604082015260018060a01b038251166060820152600060208301516040608084015261205660a0840182614e56565b60008060008060608587031215614ed657600080fd5b843593506020850135925060408501356001600160401b0380821115614efb57600080fd5b818701915087601f830112614f0f57600080fd5b813581811115614f1e57600080fd5b886020828501011115614f3057600080fd5b95989497505060200194505050565b60008060408385031215614f5257600080fd5b82356001600160401b0380821115614f6957600080fd5b908401906101208287031215614f7e57600080fd5b90925060208401359080821115614f9457600080fd5b50830160408186031215614fa757600080fd5b809150509250929050565b60006101608284031215614fc557600080fd5b50919050565b600060208284031215614fdd57600080fd5b81356001600160401b03811115614ff357600080fd5b614fff84828501614fb2565b949350505050565b60006020828403121561501957600080fd5b81356004811061069057600080fd5b801515811461107b57600080fd5b600082601f83011261504757600080fd5b81356020615057614c6083614cfe565b82815260059290921b8401810191818101908684111561507657600080fd5b8286015b84811015615091578035835291830191830161507a565b509695505050505050565b600080604083850312156150af57600080fd5b82356001600160401b03808211156150c657600080fd5b818501915085601f8301126150da57600080fd5b813560206150ea614c6083614cfe565b82815260059290921b8401810191818101908984111561510957600080fd5b948201945b8386101561513057853561512181615028565b8252948201949082019061510e565b9650508601359250508082111561514657600080fd5b5061098385828601615036565b60008083601f84011261516557600080fd5b5081356001600160401b0381111561517c57600080fd5b6020830191508360208260051b850101111561519757600080fd5b9250929050565b600080600080600080606087890312156151b757600080fd5b86356001600160401b03808211156151ce57600080fd5b6151da8a838b01615153565b909850965060208901359150808211156151f357600080fd5b6151ff8a838b01615153565b9096509450604089013591508082111561521857600080fd5b5061522589828a01615153565b979a9699509497509295939492505050565b60006020828403121561524957600080fd5b813561069081614d21565b6000806000806040858703121561526a57600080fd5b84356001600160401b038082111561528157600080fd5b61528d88838901615153565b909650945060208701359150808211156152a657600080fd5b506152b387828801615153565b95989497509550505050565b6000806000606084860312156152d457600080fd5b83356152df81614d21565b925060208401356152ef81614d21565b915060408401356152ff81614d21565b809150509250925092565b60008060006040848603121561531f57600080fd5b833561532a81615028565b925060208401356001600160401b0381111561534557600080fd5b61535186828701615153565b9497909650939450505050565b6001600160a01b0391909116815260200190565b6000806040838503121561538557600080fd5b8251915060208301516001600160401b038111156153a257600080fd5b8301601f810185136153b357600080fd5b80516153c1614c6082614be1565b8181528660208385010111156153d657600080fd5b6153e7826020830160208601614e32565b8093505050509250929050565b6000806040838503121561540757600080fd5b825161541281614d21565b6020939093015192949293505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561544a57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161547957615479615451565b5060010190565b600181811c9082168061549457607f821691505b602082108103614fc557634e487b7160e01b600052602260045260246000fd5b8181038181111561150057611500615451565b634e487b7160e01b600052602160045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000808335601e1984360301811261552b57600080fd5b8301803591506001600160401b0382111561554557600080fd5b60200191503681900382131561519757600080fd5b602080825260179082015276646174612073686f756c64206265206e6f74207a65726f60481b604082015260600190565b6020808252601f908201527f616d6f756e742073686f756c642062652067726561746572207468616e203000604082015260600190565b8183823760009101908152919050565b6020815260006106906020830184614e56565b6020808252600c908201526b696e76616c6964206461746160a01b604082015260600190565b601f82111561081657600081815260208120601f850160051c810160208610156156325750805b601f850160051c820191505b818110156117675782815560010161563e565b81516001600160401b0381111561566a5761566a614b9b565b61567e816156788454615480565b8461560b565b602080601f8311600181146156b3576000841561569b5750858301515b600019600386901b1c1916600185901b178555611767565b600085815260208120601f198616915b828110156156e2578886015182559484019460019091019084016156c3565b50858210156157005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8183526000602080850194508260005b8581101561574e57813561573381614d21565b6001600160a01b031687529582019590820190600101615720565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261579957600080fd5b83016020810192503590506001600160401b038111156157b857600080fd5b80360382131561519757600080fd5b6060808252810186905260006001600160fb1b038711156157e757600080fd5b8660051b80896080850137808301905060206080848303018185015261581160808301888a615710565b84810360408601528581529150808201600586901b830182018760005b8881101561586857858303601f19018452615849828b615782565b615854858284615759565b95870195945050509084019060010161582e565b50909c9b505050505050505050505050565b602081526000614fff602083018486615710565b6040815260006158a2604083018587615710565b82810360208481019190915284518083528582019282019060005b818110156158db5784511515835293830193918301916001016158bd565b509098975050505050505050565b60ff60f81b81526bffffffffffffffffffffffff198460601b16600182015282601582015260008251615923816035850160208701614e32565b91909101603501949350505050565b60008251615944818460208701614e32565b9190910192915050565b60006020828403121561596057600080fd5b815161069081615028565b602080825260079082015266115e1c1a5c995960ca1b604082015260600190565b6000808335601e198436030181126159a357600080fd5b8301803591506001600160401b038211156159bd57600080fd5b6020019150600581901b360382131561519757600080fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015615a1f5784516001600160a01b0316835293830193918301916001016159fa565b5090979650505050505050565b60006020808385031215615a3f57600080fd5b82516001600160401b03811115615a5557600080fd5b8301601f81018513615a6657600080fd5b8051615a74614c6082614cfe565b81815260059190911b82018301908381019087831115615a9357600080fd5b928401925b8284101561437557835182529284019290840190615a98565b602080825260139082015272151bdbc81b1a5d1d1b19481c9958d95a5d9959606a1b604082015260600190565b6020815260008235615aef81614d21565b6001600160a01b0316602083810191909152615b0d90840184615782565b604080850152615b21606085018284615759565b95945050505050565b602080825260179082015276496e76616c69642077726170706564206164647265737360481b604082015260600190565b602080825260119082015270696e76616c6964206d73672e76616c756560781b604082015260600190565b8082018082111561150057611500615451565b60008351615bab818460208801614e32565b6508ae4e4dee4560d31b9083019081528351615bce816006840160208801614e32565b602960f81b60069290910191820152600701949350505050565b60008351615bfa818460208801614e32565b650a0c2dcd2c6560d31b9083019081528351615bce816006840160208801614e32565b60008351615c2f818460208801614e32565b670aadcd6dcdeeedc560c31b9083019081528351615c54816008840160208801614e32565b602960f81b60089290910191820152600901949350505050565b8481528360208201528260408201526080606082015260006120566080830184614e56565b6001600160a01b03831681526040810160048310615cc157634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b80516001600160701b0381168114614d4157600080fd5b600080600060608486031215615cfa57600080fd5b615d0384615cce565b9250615d1160208501615cce565b9150604084015163ffffffff811681146152ff57600080fd5b84815283602082015260018060a01b03831660408201526080606082015260006120566080830184614e56565b600060208284031215615d6957600080fd5b815161069081614d21565b600060208284031215615d8657600080fd5b815162ffffff8116811461069057600080fd5b602080825260089082015267109859081c1bdbdb60c21b604082015260600190565b6001600160a01b03818116838216019080821115615ddb57615ddb615451565b5092915050565b828152604060208201526000614fff6040830184614e56565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061437590830184614e56565b60008060408385031215615e4957600080fd5b505080516020909101519092909150565b6000600160ff1b8201615e6f57615e6f615451565b5060000390565b6001600160a01b03828116828216039080821115615ddb57615ddb615451565b634e487b7160e01b600052601260045260246000fd5b600082615ebb57615ebb615e96565b500690565b808202811582820484141761150057611500615451565b600082615ee657615ee6615e96565b50049056fea2646970667358221220af26bc8f138765be2c257e6b14ca2516659cabbd553254e68c065dd1379b20a364736f6c63430008140033
Deployed Bytecode Sourcemap
183:740:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3661:30:1;3669:10;3681:9;3661:30;;;;;;;:::i;:::-;;;;;;;;183:740:12;;;;;;;;;;;-1:-1:-1;429:19:14;;;504:12;:8;513:1;504:8;429:19;504:12;:::i;:::-;493:47;;;;;;;:::i;:::-;428:112;;;;;;550:51;567:12;581;595:5;550:16;:51::i;:::-;418:190;7391:175:1;;;;;;;;;;-1:-1:-1;7509:17:1;;7548:11;;7391:175;;;;-1:-1:-1;;;;;7509:17:1;;;;7548:11;;7391:175;:::i;:::-;;;;;;;;2616:204:13;;;;;;:::i;:::-;;:::i;:::-;;;2971:25:15;;;2959:2;2944:18;2616:204:13;2825:177:15;286:635:12;;;;;;;;;;-1:-1:-1;286:635:12;;;;;:::i;:::-;;:::i;7710:378:1:-;;;;;;;;;;-1:-1:-1;7710:378:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;614:202:14:-;;;;;;;;;;-1:-1:-1;614:202:14;;;;;:::i;:::-;;:::i;188:335:0:-;;;;;;:::i;:::-;;:::i;:::-;;;;7715:25:15;;;7771:2;7756:18;;7749:34;;;;7688:18;188:335:0;7541:248:15;1986:31:1;;;;;;;;;;;;;;;;2803:370:7;;;;;;;;;;-1:-1:-1;2961:7:7;:38;;;;3025:35;;3086;;3147:18;2857:21;3139:27;;;2961:38;;;;;3025:35;;;;3086;;;;3139:27;2803:370;;;8208:14:15;;8201:22;8183:41;;8267:14;;8260:22;8255:2;8240:18;;8233:50;8326:14;;8319:22;8299:18;;;8292:50;;;;8385:14;8378:22;8373:2;8358:18;;8351:50;8170:3;8155:19;2803:370:7;7976:431:15;1763:284:14;;;;;;:::i;:::-;;:::i;1731:107:7:-;;;;;;;;;;-1:-1:-1;1731:107:7;;;;;:::i;:::-;;:::i;:::-;;;9421:14:15;;9414:22;9396:41;;9384:2;9369:18;1731:107:7;9256:187:15;178:907:2;;;;;;:::i;:::-;;:::i;7572:132:1:-;;;;;;;;;;-1:-1:-1;7662:14:1;;7678:10;;7690:6;;7572:132;;;10034:25:15;;;10090:2;10075:18;;10068:34;;;;-1:-1:-1;;;;;7690:6:1;10118:18:15;;;10111:60;10022:2;10007:18;7572:132:1;9832:345:15;2302:107:1;;;;;;;;;;;;2346:63;2302:107;;4611:460;;;;;;;;;;-1:-1:-1;4611:460:1;;;;;:::i;:::-;;:::i;6515:559::-;;;;;;;;;;-1:-1:-1;6515:559:1;;;;;:::i;:::-;;:::i;2585:211:6:-;;;;;;;;;;;;;:::i;2133:193::-;;;;;;;;;;-1:-1:-1;2133:193:6;;;;;:::i;:::-;;:::i;5671:838:1:-;;;;;;;;;;-1:-1:-1;5671:838:1;;;;;:::i;:::-;;:::i;5077:588::-;;;;;;;;;;-1:-1:-1;5077:588:1;;;;;:::i;:::-;;:::i;2053:168:14:-;;;;;;:::i;:::-;;:::i;7080:305:1:-;;;;;;;;;;-1:-1:-1;7080:305:1;;;;;:::i;:::-;;:::i;1487:91:6:-;;;;;;;;;;-1:-1:-1;1536:7:6;1562:9;-1:-1:-1;;;;;1562:9:6;1487:91;;;;;;;:::i;1657:105::-;;;;;;;;;;-1:-1:-1;1739:16:6;;-1:-1:-1;;;;;1739:16:6;1657:105;;529:220:0;;;;;;:::i;:::-;;:::i;2291:319:13:-;;;;;;:::i;:::-;;:::i;1030:727:14:-;1190:1;1175:12;:16;:36;;;;1210:1;1195:12;:16;1175:36;1167:57;;;;-1:-1:-1;;;1167:57:14;;16224:2:15;1167:57:14;;;16206:21:15;16263:1;16243:18;;;16236:29;-1:-1:-1;;;16281:18:15;;;16274:38;16329:18;;1167:57:14;;;;;;;;;1298:12;1312:31;1358:5;1347:35;;;;;;;;;;;;:::i;:::-;1297:85;;;;1393:15;1410:16;1441:18;1430:50;;;;;;;;;;;;:::i;:::-;1392:88;;;;1490:43;1506:4;1512:8;1522:10;1490:15;:43::i;:::-;1574:12;1544:19;1601:16;;1597:82;;;-1:-1:-1;1655:12:14;1597:82;1689:61;1717:7;1726:10;1738:11;1689:27;:61::i;:::-;1157:600;;;;;1030:727;;;:::o;2616:204:13:-;2730:20;2777:36;2792:10;2804:8;2777:14;:36::i;:::-;2762:51;2616:204;-1:-1:-1;;;2616:204:13:o;286:635:12:-;1374:16:6;:14;:16::i;:::-;391:10:12::1;386:529;411:6;:13;403:5;:21;386:529;;;449:11;478:35;499:6;506:5;499:13;;;;;;;;:::i;:::-;;;;;;;478:20;:35::i;:::-;474:358;;;-1:-1:-1::0;542:21:12::1;581:49;612:9:::0;542:21;581:30:::1;:49::i;:::-;474:358;;;685:6;692:5;685:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;678:31:12::1;;718:4;678:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;669:55;;742:75;784:6;791:5;784:13;;;;;;;;:::i;:::-;;;;;;;799:9;810:6;742:41;:75::i;:::-;;474:358;886:9;-1:-1:-1::0;;;;;850:54:12::1;874:10;-1:-1:-1::0;;;;;850:54:12::1;859:6;866:5;859:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;850:54:12::1;;897:6;850:54;;;;2971:25:15::0;;2959:2;2944:18;;2825:177;850:54:12::1;;;;;;;;-1:-1:-1::0;426:7:12;::::1;::::0;::::1;:::i;:::-;;;;386:529;;;;286:635:::0;;:::o;7710:378:1:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7934:34:1;;;;;:21;:34;;;;;;7997:30;;;;;:16;:30;;;;;;8044:37;;;:26;:37;;;;;;8037:44;;;;;;;;;;;;;;;7934:34;8037:44;;;;7934:34;;;;;7997:30;;;;;-1:-1:-1;8037:44:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7710:378;;;;;;;:::o;614:202:14:-;758:51;775:12;789;803:5;;758:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;758:16:14;;-1:-1:-1;;;758:51:14:i;:::-;614:202;;;;:::o;188:335:0:-;326:20;348:15;375:21;399:9;375:33;;433:38;451:4;457:13;433:17;:38::i;:::-;418:53;;507:9;491:25;;:13;:25;:::i;:::-;481:35;;365:158;188:335;;;;;:::o;1763:284:14:-;1865:20;1887:15;1914:21;1938:9;1914:33;;1972:22;1987:6;1972:14;:22::i;:::-;1957:37;;2030:9;2014:25;;:13;:25;:::i;:::-;2004:35;;1904:143;1763:284;;;:::o;1731:107:7:-;1795:4;1818:7;:13;1826:4;1818:13;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;1818:13:7;;;;;1731:107;-1:-1:-1;;1731:107:7:o;178:907:2:-;1744:1:8;2254:7;;:19;2246:63;;;;-1:-1:-1;;;2246:63:8;;;;;;;:::i;:::-;2363:8;2349:12;2342:30;269:18:2::1;1330:23:7;1348:4;1330:17;:23::i;:::-;327:1:2::2;307:10;;::::0;::::2;:4:::0;:10:::2;:::i;:::-;:17;;:21;299:57;;;;-1:-1:-1::0;;;299:57:2::2;;;;;;;:::i;:::-;388:1;374:4;:11;;;:15;366:59;;;;-1:-1:-1::0;;;366:59:2::2;;;;;;;:::i;:::-;443:21;:34;465:11;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;443:34:2::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;443:34:2;;::::2;;435:61;;;::::0;-1:-1:-1;;;435:61:2;;20439:2:15;435:61:2::2;::::0;::::2;20421:21:15::0;20478:2;20458:18;;;20451:30;-1:-1:-1;;;20497:18:15;;;20490:44;20551:18;;435:61:2::2;20237:338:15::0;435:61:2::2;515:18;536:118;549:18;569:13;;::::0;::::2;:4:::0;:13:::2;:::i;:::-;584:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;603:11;::::0;;;::::2;::::0;::::2;;:::i;:::-;616;::::0;::::2;;629:8;::::0;::::2;;639:14;;::::0;::::2;616:4:::0;639:14:::2;:::i;:::-;536:12;:118::i;:::-;515:139:::0;-1:-1:-1;680:12:2::2;::::0;717:11:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;717:16:2::2;740:10:::0;752::::2;;::::0;::::2;:4:::0;:10:::2;:::i;:::-;717:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;679:84;;;;782:7;777:106;;816:51;841:6;816:51;;;;;;;;;;;;;-1:-1:-1::0;;;816:51:2::2;;::::0;:24:::2;:51::i;:::-;809:59;;-1:-1:-1::0;;;809:59:2::2;;;;;;;;:::i;777:106::-;896:57;923:13;;::::0;::::2;:4:::0;:13:::2;:::i;:::-;938:11;::::0;;;::::2;::::0;::::2;;:::i;:::-;951:1;896:26;:57::i;:::-;-1:-1:-1::0;974:104:2::2;::::0;-1:-1:-1;987:13:2::2;;::::0;::::2;:4:::0;:13:::2;:::i;:::-;1002;::::0;;;::::2;::::0;::::2;;:::i;:::-;1017:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;1035:11;::::0;::::2;;1048:1;1051:12;::::0;::::2;;1065;;::::0;::::2;1035:4:::0;1065:12:::2;:::i;:::-;974:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;974:12:2::2;::::0;-1:-1:-1;;;974:104:2:i:2;:::-;289:796;2391:1:8::1;2446:12:::0;2432;2425:34;178:907:2;:::o;4611:460:1:-;1374:16:6;:14;:16::i;:::-;4720:6:1::1;4715:350;4732:11;:18;4728:1;:22;4715:350;;;4793:1;4779:7;4787:1;4779:10;;;;;;;;:::i;:::-;;;;;;;:15;;:37;;;;;4812:4;4798:7;4806:1;4798:10;;;;;;;;:::i;:::-;;;;;;;:18;;4779:37;4771:68;;;::::0;-1:-1:-1;;;4771:68:1;;21809:2:15;4771:68:1::1;::::0;::::1;21791:21:15::0;21848:2;21828:18;;;21821:30;-1:-1:-1;;;21867:18:15;;;21860:48;21925:18;;4771:68:1::1;21607:342:15::0;4771:68:1::1;4857:11;4869:1;4857:14;;;;;;;;:::i;:::-;;;;;;;4853:142;;;4908:7;4916:1;4908:10;;;;;;;;:::i;:::-;;;;;;;4891:14;:27;;;;4853:142;;;4970:7;4978:1;4970:10;;;;;;;;:::i;:::-;;;;;;;4957;:23;;;;4853:142;5013:41;5027:11;5039:1;5027:14;;;;;;;;:::i;:::-;;;;;;;5043:7;5051:1;5043:10;;;;;;;;:::i;:::-;;;;;;;5013:41;;;;;;22147:14:15::0;;22140:22;22122:41;;22194:2;22179:18;;22172:34;22110:2;22095:18;;21954:258;5013:41:1::1;;;;;;;;4752:3:::0;::::1;::::0;::::1;:::i;:::-;;;;4715:350;;6515:559:::0;1374:16:6;:14;:16::i;:::-;6680:39:1;;::::1;6672:64;;;;-1:-1:-1::0;;;6672:64:1::1;;;;;;;:::i;:::-;6754:39:::0;;::::1;6746:64;;;;-1:-1:-1::0;;;6746:64:1::1;;;;;;;:::i;:::-;6831:9:::0;6820:8:::1;6857:138;6874:3;6870:1;:7;6857:138;;;6941:43;;;;;;;;6955:9;;6965:1;6955:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6941:43:1::1;;;;;6968:12;;6981:1;6968:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6941:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;6941:43:1;;;;-1:-1:-1;6898:26:1::1;::::0;-1:-1:-1;6925:9:1;;-1:-1:-1;6925:9:1;6935:1;6925:12;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;6898:40:::0;;-1:-1:-1;6898:40:1;;::::1;::::0;;;;;;-1:-1:-1;6898:40:1;:86;;;;-1:-1:-1;;;;;;6898:86:1::1;-1:-1:-1::0;;;;;6898:86:1;;::::1;;::::0;;;;::::1;::::0;-1:-1:-1;6898:86:1;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;;;;;6879:3;;;;;:::i;:::-;;;;6857:138;;;;7009:58;7032:9;;7043;;7054:12;;7009:58;;;;;;;;;;;:::i;:::-;;;;;;;;6662:412;6515:559:::0;;;;;;:::o;2585:211:6:-;2651:10;;2679:17;1739:16;;-1:-1:-1;;;;;1739:16:6;;1657:105;2679:17;-1:-1:-1;;;;;2679:27:6;;2671:79;;;;-1:-1:-1;;;2671:79:6;;27733:2:15;2671:79:6;;;27715:21:15;27772:2;27752:18;;;27745:30;27811:34;27791:18;;;27784:62;-1:-1:-1;;;27862:18:15;;;27855:37;27909:19;;2671:79:6;27531:403:15;2671:79:6;2760:29;2782:6;2760:21;:29::i;:::-;2624:172;2585:211::o;2133:193::-;1374:16;:14;:16::i;:::-;2222::::1;:30:::0;;-1:-1:-1;;;;;2222:30:6;::::1;-1:-1:-1::0;;;;;;2222:30:6;;::::1;::::0;::::1;::::0;;;2295:10:::1;1536:7:::0;1562:9;-1:-1:-1;;;;;1562:9:6;;1487:91;2295:10:::1;-1:-1:-1::0;;;;;2267:52:6::1;;;;;;;;;;;2133:193:::0;:::o;5671:838:1:-;1374:16:6;:14;:16::i;:::-;5794:24:1;;5791:265:::1;;5838:6;5833:156;5846:23:::0;;::::1;5833:156;;;5936:21;:38;5958:12;;5971:1;5958:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5936:38:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;5936:38:1;;;;::::1;;5935:39;::::0;5894:21:::1;::::0;5916:12;;5929:1;5916:15;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5894:38:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;5894:38:1;:80;;-1:-1:-1;;5894:80:1::1;::::0;::::1;;::::0;;;::::1;::::0;;5871:3;::::1;::::0;::::1;:::i;:::-;;;;5833:156;;;;6007:38;6032:12;;6007:38;;;;;;;:::i;:::-;;;;;;;;5791:265;6068:25:::0;;6065:438:::1;;6109:24;6147:13:::0;-1:-1:-1;;;;;6136:32:1;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;6136:32:1::1;;6109:59;;6187:10;6182:245;6199:28:::0;;::::1;6182:245;;;6298:16;:38;6315:13;;6329:5;6315:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6298:38:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;6298:38:1;;;;::::1;;6297:39;::::0;6256:16:::1;::::0;6273:13;;6287:5;6273:20;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6256:38:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;6256:38:1;;;:80;;-1:-1:-1;;6256:80:1::1;::::0;::::1;;::::0;;;::::1;::::0;;;6374:16:::1;::::0;6391:13;;6405:5;6391:20;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6374:38:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;6374:38:1;;6354:17;;6374:38:::1;::::0;;::::1;::::0;6354:10;;6365:5;;6354:17;::::1;;;;;:::i;:::-;:58:::0;::::1;;:17;::::0;;::::1;::::0;;;;;;;:58;6229:7;::::1;::::0;::::1;:::i;:::-;;;;6182:245;;;;6445:47;6466:13;;6481:10;6445:47;;;;;;;;:::i;:::-;;;;;;;;6095:408;5671:838:::0;;;;:::o;5077:588::-;1374:16:6;:14;:16::i;:::-;-1:-1:-1;;;;;5192:24:1;::::1;::::0;5188:137:::1;;5232:17;:30:::0;;-1:-1:-1;;;;;;5232:30:1::1;-1:-1:-1::0;;;;;5232:30:1;::::1;;::::0;;5281:33:::1;::::0;::::1;::::0;::::1;::::0;5232:30;;5281:33:::1;:::i;:::-;;;;;;;;5188:137;-1:-1:-1::0;;;;;5338:20:1;::::1;::::0;5334:166:::1;;5394:11;::::0;;-1:-1:-1;;;;;5419:20:1;;::::1;-1:-1:-1::0;;;;;;5419:20:1;::::1;;::::0;;;5458:31:::1;::::0;5394:11;::::1;::::0;5458:31:::1;::::0;::::1;::::0;5394:11;;5433:6;;5458:31:::1;:::i;:::-;;;;;;;;5360:140;5334:166;-1:-1:-1::0;;;;;5513:19:1;::::1;::::0;5509:150:::1;;5567:6;::::0;;-1:-1:-1;;;;;5587:14:1;;::::1;-1:-1:-1::0;;;;;;5587:14:1;::::1;;::::0;;;5620:28:::1;::::0;5567:6;::::1;::::0;5620:28:::1;::::0;::::1;::::0;5567:6;;5596:5;;5620:28:::1;:::i;:::-;;;;;;;;5534:125;5077:588:::0;;;:::o;2053:168:14:-;2145:20;2192:22;2207:6;2192:14;:22::i;:::-;2177:37;2053:168;-1:-1:-1;;2053:168:14:o;7080:305:1:-;1374:16:6;:14;:16::i;:::-;7188:5:1;7177:8:::1;7210:169;7227:3;7223:1;:7;7210:169;;;7255:6;7251:118;;;7281:16;7288:5;;7294:1;7288:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7281:6;:16::i;:::-;7251:118;;;7336:18;7345:5;;7351:1;7345:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7336;:18::i;:::-;7232:3:::0;::::1;::::0;::::1;:::i;:::-;;;;7210:169;;;;7167:218;7080:305:::0;;;:::o;529:220:0:-;657:20;704:38;722:4;728:13;704:17;:38::i;2291:319:13:-;2415:20;2437:15;2464:21;2488:9;2464:33;;2522:36;2537:10;2549:8;2522:14;:36::i;7334:762:14:-;7462:3;7456;7448:11;;;:17;7431:14;7505:37;;;:26;:37;;;;;;;;7475:67;;;;;;;;;;-1:-1:-1;;;;;7475:67:14;;;;;;;;;;7505:37;;7475:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7475:67:14;;;;-1:-1:-1;;7560:14:14;;7475:67;;-1:-1:-1;;;;;;;7560:28:14;7552:66;;;;-1:-1:-1;;;7552:66:14;;29280:2:15;7552:66:14;;;29262:21:15;29319:2;29299:18;;;29292:30;-1:-1:-1;;;29338:18:15;;;29331:55;29403:18;;7552:66:14;29078:349:15;7552:66:14;7628:16;7840:6;:14;;;7884:8;7922:6;:19;;;7757:210;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7722:267;;;;;;7693:314;;7628:403;;8061:6;-1:-1:-1;;;;;8049:18:14;:8;-1:-1:-1;;;;;8049:18:14;;8041:48;;;;-1:-1:-1;;;8041:48:14;;30256:2:15;8041:48:14;;;30238:21:15;30295:2;30275:18;;;30268:30;-1:-1:-1;;;30314:18:15;;;30307:47;30371:18;;8041:48:14;30054:341:15;8041:48:14;7421:675;;;7334:762;;;:::o;753:363:11:-;900:12;914:17;935:5;-1:-1:-1;;;;;935:10:11;969;981:2;985:5;946:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;946:45:11;;;;;;;;;;;935:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;899:93;;;;1010:7;:57;;;;-1:-1:-1;1022:11:11;;:16;;:44;;;1053:4;1042:24;;;;;;;;;;;;:::i;:::-;1002:107;;;;-1:-1:-1;;;1002:107:11;;31144:2:15;1002:107:11;;;31126:21:15;31183:2;31163:18;;;31156:30;31222:34;31202:18;;;31195:62;-1:-1:-1;;;31273:18:15;;;31266:35;31318:19;;1002:107:11;30942:401:15;2826:2405:13;2985:20;1744:1:8;2254:7;;:19;2246:63;;;;-1:-1:-1;;;2246:63:8;;;;;;;:::i;:::-;2363:8;2349:12;2342:30;2948:26:13::1;1330:23:7;1348:4;1330:17;:23::i;:::-;3037:15:13::2;3025:8;:27;;3017:47;;;;-1:-1:-1::0;;;3017:47:13::2;;;;;;;:::i;:::-;3140:1;3133:3;3106:17;::::0;::::2;;3127:3;3106:24;:30;:35;3083:20;::::0;;;;3289:40:::2;3106:10:::0;:35;3289:11:::2;:40::i;:::-;3165:164;;;;;;;;;;3356:73;3384:5;3390:1;3384:8;;;;;;;;:::i;:::-;;;;;;;3394:10;:15;;;;;;;;:::i;:::-;3410:1;3394:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3414:14;3356:27;:73::i;:::-;3448:15;3444:1253;;;3486:7;3483:575;;;3517:110;3568:17;::::0;::::2;;3589:5:::0;3596:15:::2;;::::0;::::2;3568:10:::0;3596:15:::2;:::i;:::-;3517:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;3621:4:13::2;::::0;-1:-1:-1;3517:34:13::2;::::0;-1:-1:-1;;3517:110:13:i:2;:::-;3664:86;3725:24:::0;3671:23:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;3664:41:13::2;;3714:4;3664:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:60:::0;::::2;:86::i;:::-;3649:101;;3444:1253;;3483:575;3797:119;3848:17;::::0;::::2;;3869:5:::0;3876:15:::2;;::::0;::::2;3848:10:::0;3876:15:::2;:::i;:::-;3797:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:10;:22;;;;;;;;;;:::i;:::-;3797:34;:119::i;:::-;3953:86;4023:15;3960:5;3981:1;3966:5;:12;:16;;;;:::i;:::-;3960:23;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;3953:41:13::2;;3995:10;:22;;;;;;;;;;:::i;:::-;3953:65;;;;;;;;;;;;;;;:::i;3444:1253::-;4096:21;4147:10;:17;;;-1:-1:-1::0;;;;;4120:61:13::2;;4182:14;4198:5;4120:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;4120:84:13::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;4096:108;;4225:7;4222:461;;;4256:53;4262:7:::0;4271:5;4278:15:::2;;::::0;::::2;:10:::0;:15:::2;:::i;:::-;4256:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;4303:4:13::2;::::0;-1:-1:-1;4256:5:13::2;::::0;-1:-1:-1;;4256:53:13:i:2;:::-;4346:86;4407:24:::0;4353:23:::2;::::0;;;::::2;::::0;::::2;;:::i;4346:86::-;4331:101;;4222:461;;;4479:62;4485:7:::0;4494:5;4501:15:::2;;::::0;::::2;:10:::0;:15:::2;:::i;:::-;4479:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4518:10;:22;;;;;;;;;;:::i;:::-;4479:5;:62::i;:::-;4578:86;4648:15;4585:5;4606:1;4591:5;:12;:16;;;;:::i;:::-;4585:23;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;4578:41:13::2;;4620:10;:22;;;;;;;;;;:::i;4578:86::-;4563:101;;4222:461;4078:619;3444:1253;4735:10;:26;;;4719:12;:42;;4711:74;;;;-1:-1:-1::0;;;4711:74:13::2;;;;;;;:::i;:::-;4803:7;4799:198;;;4830:66;4858:23;::::0;;;::::2;::::0;::::2;;:::i;:::-;4883:12;4830:27;:66::i;:::-;4914:68;4945:22;;::::0;::::2;:10:::0;:22:::2;:::i;:::-;4969:12;4914:30;:68::i;:::-;3151:1856;;;;;5016:21;5040:10;:18;;;;;;;;:::i;:::-;5016:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;5016:42:13;;-1:-1:-1;5069:146:13::2;::::0;-1:-1:-1;5082:15:13::2;::::0;-1:-1:-1;;5082:15:13::2;::::0;::::2;:10:::0;:15:::2;:::i;:::-;5098:1;5082:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5102:15;;::::0;::::2;:10:::0;:15:::2;:::i;:::-;5143:1;5118:15;;::::0;::::2;:10:::0;:15:::2;:::i;:::-;:26;::::0;;-1:-1:-1;5118:26:13::2;:::i;:::-;5102:43;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5147:22;;::::0;::::2;:10:::0;:22:::2;:::i;:::-;5171:10;:17;;;5190:12;5204:1;5207:7;5069:12;:146::i;:::-;3007:2224;;2391:1:8::1;2446:12:::0;2432;2425:34;2826:2405:13;;;;:::o;1838:137:6:-;1918:10;1904;1536:7;1562:9;-1:-1:-1;;;;;1562:9:6;;1487:91;1904:10;-1:-1:-1;;;;;1904:24:6;;1896:72;;;;-1:-1:-1;;;1896:72:6;;34403:2:15;1896:72:6;;;34385:21:15;34442:2;34422:18;;;34415:30;34481:34;34461:18;;;34454:62;-1:-1:-1;;;34532:18:15;;;34525:33;34575:19;;1896:72:6;34201:399:15;1896:72:6;1838:137::o;251:132:11:-;304:4;-1:-1:-1;;;;;328:22:11;;;;:47;;-1:-1:-1;;;;;;354:21:11;;140:42;354:21;320:56;251:132;-1:-1:-1;;251:132:11:o;1886:224::-;2029:12;;;1991;2029;;;;;;;;;-1:-1:-1;;;;;2008:7:11;;;2022:5;;2008:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1990:52;;;2060:7;2052:51;;;;-1:-1:-1;;;2052:51:11;;34807:2:15;2052:51:11;;;34789:21:15;34846:2;34826:18;;;34819:30;34885:33;34865:18;;;34858:61;34936:18;;2052:51:11;34605:355:15;1122:354:11;1218:4;1301:12;1315:17;1336:5;-1:-1:-1;;;;;1336:10:11;1370;1382:2;1386:5;1347:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1347:45:11;;;;;;;;;;;1336:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1300:93;;;;1411:7;:57;;;;-1:-1:-1;1423:11:11;;:16;;:44;;;1454:4;1443:24;;;;;;;;;;;;:::i;:::-;1403:66;1122:354;-1:-1:-1;;;;;;1122:354:11:o;755:1880:0:-;941:20;1744:1:8;2254:7;;:19;2246:63;;;;-1:-1:-1;;;2246:63:8;;;;;;;:::i;:::-;2363:8;2349:12;2342:30;901:29:0::1;1330:23:7;1348:4;1330:17;:23::i;:::-;1014:1:0::2;981:23;;::::0;::::2;:13:::0;:23:::2;:::i;:::-;:30;;:34;973:70;;;;-1:-1:-1::0;;;973:70:0::2;;;;;;;:::i;:::-;1075:1;1061:4;:11;;;:15;1053:59;;;;-1:-1:-1::0;;;1053:59:0::2;;;;;;;:::i;:::-;1158:1;1130:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;1130:30:0::2;::::0;1122:76:::2;;;::::0;-1:-1:-1;;;1122:76:0;;35167:2:15;1122:76:0::2;::::0;::::2;35149:21:15::0;35206:2;35186:18;;;35179:30;35245:34;35225:18;;;35218:62;-1:-1:-1;;;35296:18:15;;;35289:31;35337:19;;1122:76:0::2;34965:397:15::0;1122:76:0::2;1239:1;1216:4;:20;;;:24;1208:77;;;::::0;-1:-1:-1;;;1208:77:0;;35569:2:15;1208:77:0::2;::::0;::::2;35551:21:15::0;35608:2;35588:18;;;35581:30;35647:34;35627:18;;;35620:62;-1:-1:-1;;;35698:18:15;;;35691:38;35746:19;;1208:77:0::2;35367:404:15::0;1208:77:0::2;1303:16;:35;1320:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;1303:35:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;1303:35:0;;::::2;;1295:71;;;::::0;-1:-1:-1;;;1295:71:0;;35978:2:15;1295:71:0::2;::::0;::::2;35960:21:15::0;36017:2;35997:18;;;35990:30;-1:-1:-1;;;36036:18:15;;;36029:53;36099:18;;1295:71:0::2;35776:347:15::0;1295:71:0::2;1434:17;::::0;1377:23:::2;::::0;-1:-1:-1;;;;;1434:17:0::2;1377:23:::0;1482:131:::2;1377:23:::0;1526:13:::2;;::::0;::::2;:4:::0;:13:::2;:::i;:::-;1541:17;::::0;;;::::2;::::0;::::2;;:::i;:::-;1560:13:::0;1575:11:::2;::::0;::::2;;1588:8;::::0;::::2;;1598:14;;::::0;::::2;1575:4:::0;1598:14:::2;:::i;1482:131::-;1461:152:::0;-1:-1:-1;1628:35:0::2;1649:13;::::0;;;::::2;::::0;::::2;;:::i;:::-;1628:20;:35::i;:::-;1624:206;;;1697:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;1697:24:0::2;;1679:42;;1624:206;;;1777:13;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;1770:31:0::2;;1802:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;1770:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1752:67;;1624:206;1930:12;1944:19:::0;1967:13:::2;-1:-1:-1::0;;;;;1967:18:0::2;1994:10;2029;2041:13;2006:49;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;2006:49:0::2;;;;;;;;;;;1967:89;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1929:127;;;;2075:7;2070:103;;2109:48;2134:6;2109:48;;;;;;;;;;;;;-1:-1:-1::0;;;2109:48:0::2;;::::0;:24:::2;:48::i;2070:103::-;-1:-1:-1::0;2197:35:0::2;::::0;-1:-1:-1;2218:13:0::2;::::0;;;::::2;::::0;::::2;;:::i;2197:35::-;2193:242;;;2263:45;2292:15:::0;2263:16:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;2263:24:0::2;;::::0;:28:::2;:45::i;:::-;2248:60;;2193:242;;;2354:70;2408:15:::0;2361:13:::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;2354:31:0::2;;2386:16;::::0;;;::::2;::::0;::::2;;:::i;2354:70::-;2339:85;;2193:242;2468:4;:20;;;2452:12;:36;;2444:68;;;;-1:-1:-1::0;;;2444:68:0::2;;;;;;;:::i;:::-;2523:104;2536:13;;::::0;::::2;:4:::0;:13:::2;:::i;:::-;2551;::::0;;;::::2;::::0;::::2;;:::i;:::-;2566:16;::::0;;;::::2;::::0;::::2;;:::i;:::-;2584:11;::::0;::::2;;2597:12:::0;2611:1:::2;2614:12;;::::0;::::2;2584:4:::0;2614:12:::2;:::i;2523:104::-;963:1672;;;2391:1:8::1;2446:12:::0;2432;2425:34;755:1880:0;;;;:::o;2227:2993:14:-;2364:20;1744:1:8;2254:7;;:19;2246:63;;;;-1:-1:-1;;;2246:63:8;;;;;;;:::i;:::-;2363:8;2349:12;2342:30;2327:26:14::1;1330:23:7;1348:4;1330:17;:23::i;:::-;2426:1:14::2;2404:12;;::::0;::::2;:6:::0;:12:::2;:::i;:::-;:19;;:23;2396:47;;;::::0;-1:-1:-1;;;2396:47:14;;37480:2:15;2396:47:14::2;::::0;::::2;37462:21:15::0;37519:2;37499:18;;;37492:30;-1:-1:-1;;;37538:18:15;;;37531:41;37589:18;;2396:47:14::2;37278:335:15::0;2396:47:14::2;2480:15;2461:6;:15;;;:34;;2453:54;;;;-1:-1:-1::0;;;2453:54:14::2;;;;;;;:::i;:::-;2525:16;:37;2542:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;2525:37:14::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;2525:37:14;;::::2;;2517:73;;;;-1:-1:-1::0;;;2517:73:14::2;;;;;;;:::i;:::-;2600:15;2618;;::::0;::::2;:6:::0;:15:::2;:::i;:::-;2600:33:::0;-1:-1:-1;2643:16:14::2;2662:15;::::0;;;::::2;::::0;::::2;;:::i;:::-;2643:34:::0;-1:-1:-1;2688:23:14::2;::::0;2747:37:::2;2768:15;;::::0;::::2;:6:::0;:15:::2;:::i;2747:37::-;2743:97;;;2810:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;2800:29;;2743:97;2849:22;2874:135;2887:26;2915:15;;::::0;::::2;:6:::0;:15:::2;:::i;:::-;2932:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;2961:1;2965:6;:13;;;2980:6;:10;;;2992:6;:16;;;;;;;;:::i;2874:135::-;2849:160:::0;-1:-1:-1;3024:37:14::2;3045:15;::::0;;;::::2;::::0;::::2;;:::i;3024:37::-;3020:312;;;3088:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;3077:30:::0;-1:-1:-1;3146:19:14::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;3139:37:14::2;;3185:4;3139:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3121:70;;3215:4;3205:14;;3020:312;;;3275:15;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;3268:33:14::2;;3302:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;3268:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3250:71;;3020:312;3356:11;3370:12;;::::0;::::2;:6:::0;:12:::2;:::i;:::-;:19:::0;-1:-1:-1;3431:4:14::2;::::0;-1:-1:-1;3450:31:14::2;3505:1;3499:7:::0;::::2;3495:997;;;3548:7:::0;3526:19:::2;::::0;3624:492:::2;3644:3;3640:1;:7;3624:492;;;3676:16;3695:6;:12;;;;;;;;:::i;:::-;3708:1;3695:15;;;;;;;:::i;:::-;;;;;;;3676:34;;3768:48;3780:11;3793:12;3807:8;3768:11;:48::i;:::-;3732:84:::0;-1:-1:-1;3732:84:14;-1:-1:-1;3847:7:14::2;3853:1;3847:3:::0;:7:::2;:::i;:::-;3842:1;:12;:24;;;;;3859:7;3858:8;3842:24;3838:158;;;3906:6;:18;;;;;;;;;;:::i;:::-;3894:30;;3965:8;3950:23;;3838:158;4035:62;4041:9;4052:8;4062:18;4082:14;4035:5;:62::i;:::-;4018:79;;3654:462;3649:3;;;;;:::i;:::-;;;;3624:492;;;;4148:14;4133:29;;3508:669;;3495:997;;;4226:47;4238:7:::0;4247:8;4257:12:::2;;::::0;::::2;:6:::0;:12:::2;:::i;:::-;4270:1;4257:15;;;;;;;:::i;:::-;;;;;;;4226:11;:47::i;:::-;4201:72:::0;-1:-1:-1;4296:7:14;;-1:-1:-1;4291:85:14::2;;4339:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;4327:30;;4291:85;4408:69;4414:9:::0;4425:12:::2;;::::0;::::2;:6:::0;:12:::2;:::i;:::-;4438:1;4425:15;;;;;;;:::i;:::-;;;;;;;4442:18;4462:14;4408:5;:69::i;:::-;4393:84;;3495:997;3342:1160;;;4516:7;4512:568;;;4554:73;4611:15:::0;4561:19:::2;::::0;;;::::2;::::0;::::2;;:::i;4554:73::-;4539:88;;4665:6;:22;;;4649:12;:38;;4641:70;;;;-1:-1:-1::0;;;4641:70:14::2;;;;;;;:::i;:::-;4725:62;4753:19;::::0;;;::::2;::::0;::::2;;:::i;:::-;4774:12;4725:27;:62::i;:::-;4801:64;4832:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;4852:12;4801:30;:64::i;:::-;4512:568;;;4911:74;4969:15:::0;4918::::2;::::0;;;::::2;::::0;::::2;;:::i;:::-;-1:-1:-1::0;;;;;4911:33:14::2;;4945:18;::::0;;;::::2;::::0;::::2;;:::i;4911:74::-;4896:89;;5023:6;:22;;;5007:12;:38;;4999:70;;;;-1:-1:-1::0;;;4999:70:14::2;;;;;;;:::i;:::-;5098:114;5111:15;;::::0;::::2;:6:::0;:15:::2;:::i;:::-;5128;::::0;;;::::2;::::0;::::2;;:::i;:::-;5145:18;::::0;;;::::2;::::0;::::2;;:::i;:::-;5165:6;:13;;;5180:12;5194:1;5197:6;:14;;;;;;;;:::i;5098:114::-;2386:2834;;;;;2391:1:8::1;2446:12:::0;2432;2425:34;2227:2993:14;;;:::o;1906:127:7:-;1993:12;2000:4;1993:6;:12::i;:::-;1992:13;1984:42;;;;-1:-1:-1;;;1984:42:7;;38172:2:15;1984:42:7;;;38154:21:15;38211:2;38191:18;;;38184:30;-1:-1:-1;;;38230:18:15;;;38223:46;38286:18;;1984:42:7;37970:340:15;9309:2111:1;9479:18;9510:14;9526:16;9546:13;9555:3;9546:8;:13::i;:::-;9509:50;;-1:-1:-1;9509:50:1;-1:-1:-1;9569:16:1;9596:18;9588:4;:26;;;;;;;;:::i;:::-;;:41;;9625:4;9588:41;;;9617:5;9588:41;9569:60;;9639:22;9664:59;9682:11;9695:6;9703:8;9713:9;;9664:17;:59::i;:::-;9639:84;;9737:30;9758:8;9737:20;:30::i;:::-;9733:1681;;;9795:18;9787:4;:26;;;;;;;;:::i;:::-;;9783:301;;9854:6;9841:9;:19;;9833:49;;;;-1:-1:-1;;;9833:49:1;;;;;;;:::i;:::-;9913:23;:9;9927:8;9913:13;:23::i;:::-;9900:36;;9783:301;;;9996:6;9983:9;:19;9975:49;;;;-1:-1:-1;;;9975:49:1;;;;;;;:::i;:::-;10055:14;10042:27;;9783:301;-1:-1:-1;;;;;10101:26:1;;;10097:534;;-1:-1:-1;;;;;10155:30:1;;;;;;:16;:30;;;;;;;;10147:66;;;;-1:-1:-1;;;10147:66:1;;;;;;;:::i;:::-;10243:18;10235:4;:26;;;;;;;;:::i;:::-;;10231:386;;10285:52;10312:12;10326:10;10285:26;:52::i;:::-;10359:60;10386:12;10400:6;10408:10;10359:26;:60::i;:::-;10454:1;10441:14;;10231:386;;;10492:26;10484:4;:34;;;;;;;;:::i;:::-;;10480:137;;10542:56;10569:12;10583:14;10542:26;:56::i;:::-;10648:9;10644:96;;;10708:6;;10677:48;;-1:-1:-1;;;;;10708:6:1;10716:8;10677:30;:48::i;:::-;9733:1681;;;10770:76;10802:8;10812:10;10832:4;10839:6;10770:31;:76::i;:::-;10872:18;10864:4;:26;;;;;;;;:::i;:::-;;10860:414;;10910:60;10937:8;10947:6;10955:14;10910:26;:60::i;:::-;11001:9;10988:22;;10860:414;;;11043:29;11035:4;:37;;;;;;;;:::i;:::-;;11031:243;;11092:61;11120:8;11130:6;11138:14;11092:27;:61::i;:::-;11031:243;;;11186:26;11178:4;:34;;;;;;;;:::i;:::-;;11174:100;;11245:14;11232:27;;11174:100;11291:9;11287:117;;;11372:6;;11320:69;;11362:8;;-1:-1:-1;;;;;11372:6:1;11380:8;11320:41;:69::i;:::-;;11287:117;9499:1921;;;;9309:2111;;;;;;;;;;:::o;95:1877:9:-;174:13;454:2;439:4;:11;:17;;:38;;;;;460:4;465:1;460:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;460:7:9;-1:-1:-1;;;460:17:9;439:38;:59;;;;;481:4;486:1;481:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;481:7:9;-1:-1:-1;;;481:17:9;439:59;:80;;;;;502:4;507:1;502:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;502:7:9;-1:-1:-1;;;502:17:9;439:80;:101;;;;;523:4;528:1;523:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;523:7:9;-1:-1:-1;;;523:17:9;439:101;435:1450;;;768:2;758:13;;;1255:20;;758:13;;1250:25;;1255:20;1250:25;:::i;:::-;1235:4;:11;:40;;1227:74;;;;-1:-1:-1;;;1227:74:9;;38993:2:15;1227:74:9;;;38975:21:15;39032:2;39012:18;;;39005:30;-1:-1:-1;;;39051:18:15;;;39044:51;39112:18;;1227:74:9;38791:345:15;1227:74:9;1346:6;1364;1329:47;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1315:62;;;;;435:1450;1468:4;:11;1483:2;1468:17;:38;;;;;1489:4;1494:1;1489:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1489:7:9;-1:-1:-1;;;1489:17:9;1468:38;:59;;;;;1510:4;1515:1;1510:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1510:7:9;-1:-1:-1;;;1510:17:9;1468:59;:80;;;;;1531:4;1536:1;1531:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1531:7:9;-1:-1:-1;;;1531:17:9;1468:80;:101;;;;;1552:4;1557:1;1552:7;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1552:7:9;-1:-1:-1;;;1552:17:9;1468:101;1464:421;;;1775:2;1765:13;;1759:20;1837:6;1855:12;1759:20;1855:6;:12::i;:::-;1820:53;;;;;;;;;:::i;1464:421::-;1926:6;1946:12;1953:4;1946:6;:12::i;:::-;1909:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1895:70;;95:1877;;;;:::o;393:354:11:-;538:12;552:17;573:5;-1:-1:-1;;;;;573:10:11;607;619:2;623:5;584:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;584:45:11;;;;;;;;;;;573:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;537:93;;;;648:7;:57;;;;-1:-1:-1;660:11:11;;:16;;:44;;;691:4;680:24;;;;;;;;;;;;:::i;:::-;640:100;;;;-1:-1:-1;;;640:100:11;;41757:2:15;640:100:11;;;41739:21:15;41796:2;41776:18;;;41769:30;41835:32;41815:18;;;41808:60;41885:18;;640:100:11;41555:354:15;4229:376:1;4487:11;-1:-1:-1;;;;;4412:186:1;4464:8;-1:-1:-1;;;;;4412:186:1;4441:8;-1:-1:-1;;;;;4412:186:1;;4512:6;4532:12;4558:9;4581:7;4412:186;;;;;;;;;:::i;:::-;;;;;;;;4229:376;;;;;;;:::o;2332:247:6:-;2418:16;2411:23;;-1:-1:-1;;;;;;2411:23:6;;;;;;2418:16;2466:9;;-1:-1:-1;;;;;2485:23:6;;;;;;;;;;2523:49;;2466:9;;;2485:23;2466:9;;2523:49;;2418:16;2523:49;2401:178;2332:247;:::o;2367:148:7:-;2433:4;1330:23;1348:4;1330:17;:23::i;:::-;2465:4:::1;2449:7;:13;2457:4;2449:13;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;2484:24;2491:10;2503:4;2484:24;;;;;;;:::i;:::-;;;;;;;;2367:148:::0;;:::o;2647:150::-;2712:4;1598:20;1613:4;1598:14;:20::i;:::-;2744:5:::1;2728:7;:13;2736:4;2728:13;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2764:26;2773:10;2785:4;2764:26;;;;;;;:::i;188:2097:13:-:0;293:12;;331:22;293:12;;458:15;;;;:10;:15;:::i;:::-;:26;;-1:-1:-1;483:1:13;458:26;:::i;:::-;432:15;;;;:10;:15;:::i;:::-;:22;;:52;424:77;;;;-1:-1:-1;;;424:77:13;;43002:2:15;424:77:13;;;42984:21:15;43041:2;43021:18;;;43014:30;-1:-1:-1;;;43060:18:15;;;43053:42;43112:18;;424:77:13;42800:336:15;424:77:13;519:16;:41;536:23;;;;;;;;:::i;:::-;-1:-1:-1;;;;;519:41:13;;;;;;;;;;;;-1:-1:-1;519:41:13;;;;511:77;;;;-1:-1:-1;;;511:77:13;;;;;;;:::i;:::-;600:14;616:16;636:24;645:10;:14;;;636:8;:24::i;:::-;599:61;;-1:-1:-1;599:61:13;-1:-1:-1;687:74:13;705:4;711:17;;;;599:61;740:20;;;;711:10;740:20;:::i;:::-;687:17;:74::i;:::-;670:91;-1:-1:-1;771:21:13;795:15;;;;:10;:15;:::i;:::-;771:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;771:39:13;;-1:-1:-1;771:39:13;;-1:-1:-1;869:1:13;;-1:-1:-1;844:15:13;;-1:-1:-1;844:15:13;;;:10;:15;:::i;:::-;:26;;;-1:-1:-1;844:26:13;:::i;:::-;839:32;;;;;;;;:::i;:::-;;;;;;;820:51;;885:40;906:10;:15;;;;;;;;:::i;:::-;922:1;906:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;885:40::-;881:982;;;962:10;:17;;;949:9;:30;941:60;;;;-1:-1:-1;;;941:60:13;;43343:2:15;941:60:13;;;43325:21:15;43382:2;43362:18;;;43355:30;-1:-1:-1;;;43401:18:15;;;43394:47;43458:18;;941:60:13;43141:341:15;941:60:13;1019:9;1015:96;;;1079:6;;1048:48;;-1:-1:-1;;;;;1079:6:13;1087:8;1048:30;:48::i;:::-;1134:23;;;;;;;;:::i;:::-;1124:4;1129:1;1124:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1124:33:13;;;:7;;;;;;;;;;:33;1171:67;;1198:23;;;;;;;;;:::i;:::-;1223:14;1171:26;:67::i;:::-;881:982;;;1273:15;1269:455;;;1332:4;1337:1;1332:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1325:25:13;;1359:4;1325:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:57;;1383:86;1415:4;1420:1;1415:7;;;;;;;;:::i;:::-;;;;;;;1424:10;1444:4;1451:10;:17;;;1383:31;:86::i;:::-;1504:80;1569:10;:14;;;1504:60;1549:14;1511:4;1516:1;1511:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1504:25:13;;1538:4;1504:40;;;;;;;;;;;;;;;:::i;:80::-;1487:97;;1269:455;;;1623:86;1655:4;1660:1;1655:7;;;;;;;;:::i;1623:86::-;1741:9;1737:116;;;1770:68;1812:4;1817:1;1812:7;;;;;;;;:::i;:::-;;;;;;;;;;;1821:6;;-1:-1:-1;;;;;1821:6:13;1829:8;1770:41;:68::i;:::-;;1737:116;1876:30;1897:8;1876:20;:30::i;:::-;1872:385;;;1946:23;;;;;;;;:::i;:::-;1922:4;1941:1;1927:4;:11;:15;;;;:::i;:::-;1922:21;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1922:47:13;;;:21;;;;;;;;;;:47;1993:4;;-1:-1:-1;2045:23:13;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2038:41:13;;2088:4;2038:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2011:83;;1872:385;;;2129:15;2125:122;;;-1:-1:-1;;;;;2182:26:13;;;2209:22;;;;:10;:22;:::i;:::-;2182:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2164:68;;2125:122;2274:4;2266:12;;414:1871;;;;188:2097;;;;;;;;:::o;5902:1170::-;6053:6;6048:1018;6079:1;6065:4;:11;:15;;;;:::i;:::-;6061:1;:19;6048:1018;;;6102:13;6117:14;6136:4;6141:1;6136:7;;;;;;;;:::i;:::-;;;;;;;6145:4;6150:1;6154;6150:5;;;;:::i;:::-;6145:11;;;;;;;;:::i;:::-;;;;;;;6101:56;;;;6172:14;6199:6;-1:-1:-1;;;;;6191:14:13;:5;-1:-1:-1;;;;;6191:14:13;;:50;;6227:6;6235:5;6191:50;;;6209:5;6216:6;6191:50;6171:70;;;6255:15;6284:4;6289:1;6284:7;;;;;;;;:::i;:::-;;;;;;;6255:37;;6306:16;6336:17;6426:13;6441;6459:4;-1:-1:-1;;;;;6459:16:13;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6425:52;-1:-1:-1;;;;;6425:52:13;;;-1:-1:-1;;;;;6425:52:13;;;6496:17;6515:18;6546:6;-1:-1:-1;;;;;6537:15:13;:5;-1:-1:-1;;;;;6537:15:13;;:61;;6579:8;6589;6537:61;;;6556:8;6566;6537:61;6495:103;;;;6630:56;6673:12;6637:5;-1:-1:-1;;;;;6630:23:13;;6662:4;6630:38;;;;;;;;;;;;;;;:::i;:56::-;6616:70;;6730:6;-1:-1:-1;;;;;6719:31:13;;6751:11;6764:12;6778:13;6719:73;;;;;;;;;;;;;;;;44326:25:15;;;44382:2;44367:18;;44360:34;;;;44425:2;44410:18;;44403:34;44314:2;44299:18;;44124:319;6719:73:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6704:88;;6367:440;;;;6821:15;6838;6866:6;-1:-1:-1;;;;;6857:15:13;:5;-1:-1:-1;;;;;6857:15:13;;:67;;6902:12;6921:1;6857:67;;;6881:1;6885:12;6857:67;6820:104;;;;6938:10;6969:1;6955:4;:11;:15;;;;:::i;:::-;6951:1;:19;:39;;6987:3;6951:39;;;6973:4;6978:5;:1;6982;6978:5;:::i;:::-;6973:11;;;;;;;;:::i;:::-;;;;;;;6951:39;7042:12;;;7052:1;7042:12;;;;;;;;;-1:-1:-1;;;7004:51:13;;;6938:52;;-1:-1:-1;;;;;;7004:9:13;;;;;:51;;7014:10;;7026;;6938:52;;7004:51;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6087:979;;;;;;;;;6082:3;;;;;:::i;:::-;;;;6048:1018;;82:127:10;134:6;175:1;165:5;169:1;175;165:5;:::i;:::-;161:9;;;160:16;;152:50;;;;-1:-1:-1;;;152:50:10;;45113:2:15;152:50:10;;;45095:21:15;45152:2;45132:18;;;45125:30;-1:-1:-1;;;45171:18:15;;;45164:51;45232:18;;152:50:10;44911:345:15;5237:659:13;5358:6;5353:537;5384:1;5370:4;:11;:15;;;;:::i;:::-;5366:1;:19;5353:537;;;5407:13;5422:14;5441:4;5446:1;5441:7;;;;;;;;:::i;:::-;;;;;;;5450:4;5455:1;5459;5455:5;;;;:::i;:::-;5450:11;;;;;;;;:::i;:::-;;;;;;;5406:56;;;;5477:14;5504:6;-1:-1:-1;;;;;5496:14:13;:5;-1:-1:-1;;;;;5496:14:13;;:50;;5532:6;5540:5;5496:50;;;5514:5;5521:6;5496:50;-1:-1:-1;5476:70:13;-1:-1:-1;5560:14:13;5577:7;5585:5;:1;5589;5585:5;:::i;:::-;5577:14;;;;;;;;:::i;:::-;;;;;;;5560:31;;5606:15;5623;5651:6;-1:-1:-1;;;;;5642:15:13;:5;-1:-1:-1;;;;;5642:15:13;;:61;;5684:9;5700:1;5642:61;;;5666:1;5670:9;5642:61;5605:98;;;;5717:10;5748:1;5734:4;:11;:15;;;;:::i;:::-;5730:1;:19;:39;;5766:3;5730:39;;;5752:4;5757:5;:1;5761;5757:5;:::i;:::-;5752:11;;;;;;;;:::i;:::-;;;;;;;5730:39;5717:52;;5794:4;5799:1;5794:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5783:24:13;;5825:10;5837;5849:2;5863:1;-1:-1:-1;;;;;5853:12:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5853:12:13;;5783:96;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5392:498;;;;;;;5387:3;;;;;:::i;:::-;;;;5353:537;;2455:350:11;2588:12;2602:17;2623:7;-1:-1:-1;;;;;2623:12:11;2642:1;2668:10;2680:5;2645:41;;;;;;2971:25:15;;2959:2;2944:18;;2825:177;2645:41:11;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2645:41:11;;;;;;;;;;;2623:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2587:100;;;;2705:7;:57;;;;-1:-1:-1;2717:11:11;;:16;;:44;;;2748:4;2737:24;;;;;;;;;;;;:::i;:::-;2697:101;;;;-1:-1:-1;;;2697:101:11;;45463:2:15;2697:101:11;;;45445:21:15;45502:2;45482:18;;;45475:30;45541:33;45521:18;;;45514:61;45592:18;;2697:101:11;45261:355:15;6215:1113:14;6308:19;6329:31;6372:20;6426:4;6372:61;;6443:14;6460:5;-1:-1:-1;;;;;6460:12:14;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6443:31;;6484:14;6501:5;-1:-1:-1;;;;;6501:12:14;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6484:31;;6525:10;6538:5;-1:-1:-1;;;;;6538:9:14;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6588:31;;;-1:-1:-1;;;;;46416:15:15;;;6588:31:14;;;46398:34:15;46468:15;;46448:18;;;46441:43;;;;46532:8;46520:21;;46500:18;;;46493:49;6525:24:14;;-1:-1:-1;6559:16:14;;46333:18:15;;6588:31:14;;;-1:-1:-1;;6588:31:14;;;;;;;;;6578:42;;6588:31;6578:42;;;;;-1:-1:-1;;;;6649:25:14;;:30;6689:568;;;;6738:6;-1:-1:-1;;;;;6727:17:14;:7;-1:-1:-1;;;;;6727:17:14;;6719:38;;;;-1:-1:-1;;;6719:38:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;6775:22:14;;;6771:100;;6837:6;-1:-1:-1;;;;;6825:18:14;:8;-1:-1:-1;;;;;6825:18:14;;6817:39;;;;-1:-1:-1;;;6817:39:14;;;;;;;:::i;:::-;6898:6;6884:20;;6950:6;6958:8;6939:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6918:49;;6689:568;;;7017:6;-1:-1:-1;;;;;7006:17:14;:7;-1:-1:-1;;;;;7006:17:14;;6998:38;;;;-1:-1:-1;;;6998:38:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;7054:22:14;;;7050:100;;7116:6;-1:-1:-1;;;;;7104:18:14;:8;-1:-1:-1;;;;;7104:18:14;;7096:39;;;;-1:-1:-1;;;7096:39:14;;;;;;;:::i;:::-;7177:6;7163:20;;7229:6;7237:8;7218:28;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7197:49;;6689:568;7266:55;7282:4;7288:8;7314:4;7266:15;:55::i;:::-;6362:966;;;;;;6215:1113;;;;;;:::o;5226:983::-;5341:17;-1:-1:-1;;;5388:25:14;;:30;5428:775;;;;5461:14;5526:4;-1:-1:-1;;;;;5495:43:14;;5560:9;5591:10;5623:17;:6;:15;:17::i;:::-;5662:18;262:10;5679:1;5662:18;:::i;:::-;5713:4;5719:18;5702:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5495:261;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5458:298;;;5782:28;5802:7;5801:8;;;:::i;:::-;5782:18;:28::i;:::-;5770:40;;5444:377;5428:775;;;5842:14;5908:4;-1:-1:-1;;;;;5877:43:14;;5942:9;5973:10;6005:17;:6;:15;:17::i;:::-;6044:18;6061:1;320:49;6044:18;:::i;:::-;6095:4;6101:18;6084:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5877:261;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5841:297:14;-1:-1:-1;6164:28:14;6183:8;5841:297;6183:8;:::i;6164:28::-;6152:40;;5827:376;5428:775;5360:849;5226:983;;;;;;:::o;9014:289:1:-;9068:14;;;9129:8;9135:2;9129:3;:8;:::i;:::-;9112:25;-1:-1:-1;9158:28:1;9183:2;9159:18;:3;9112:25;9159:7;:18::i;:::-;9158:24;;:28::i;:::-;9147:39;;9200:9;9213:1;9200:14;:30;;;;;9229:1;9218:8;:12;9200:30;:54;;;;-1:-1:-1;9234:6:1;;-1:-1:-1;;;;;9234:6:1;:20;;9200:54;9196:101;;;9282:4;9270:16;;9196:101;9102:201;9014:289;;;:::o;3704:519::-;3832:7;3851:15;3880:11;3876:173;;;3917:42;3953:5;3917:31;3933:14;;3917:11;:15;;:31;;;;:::i;:42::-;3907:52;;3876:173;;;4000:38;4032:5;4000:27;4016:10;;4000:11;:15;;:27;;;;:::i;:38::-;3990:48;;3876:173;4068:7;4062:3;:13;4058:122;;;4099:44;4115:11;4128:3;4133:9;;4099:15;:44::i;:::-;4091:78;;;;-1:-1:-1;;;4091:78:1;;49251:2:15;4091:78:1;;;49233:21:15;49290:2;49270:18;;;49263:30;-1:-1:-1;;;49309:18:15;;;49302:51;49370:18;;4091:78:1;49049:345:15;4091:78:1;4196:20;:11;4212:3;4196:15;:20::i;:::-;4189:27;3704:519;-1:-1:-1;;;;;;;3704:519:1:o;2116:333:11:-;2297:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2297:34:11;-1:-1:-1;;;2297:34:11;;;2271:61;;2236:12;;;;-1:-1:-1;;;;;2271:12:11;;;2290:5;;2271:61;;2297:34;2271:61;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2235:97;;;;2350:7;:57;;;;-1:-1:-1;2362:11:11;;:16;;:44;;;2393:4;2382:24;;;;;;;;;;;;:::i;:::-;2342:100;;;;-1:-1:-1;;;2342:100:11;;49601:2:15;2342:100:11;;;49583:21:15;49640:2;49620:18;;;49613:30;49679:32;49659:18;;;49652:60;49729:18;;2342:100:11;49399:354:15;1482:398:11;1705:51;;;-1:-1:-1;;;;;50016:15:15;;;1705:51:11;;;49998:34:15;50068:15;;;50048:18;;;50041:43;50100:18;;;;50093:34;;;1705:51:11;;;;;;;;;;49933:18:15;;;;1705:51:11;;;;;;;-1:-1:-1;;;;;1705:51:11;-1:-1:-1;;;1705:51:11;;;1694:63;;-1:-1:-1;;;;1694:10:11;;;;:63;;1705:51;1694:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1658:99;;;;1775:7;:57;;;;-1:-1:-1;1787:11:11;;:16;;:44;;;1818:4;1807:24;;;;;;;;;;;;:::i;:::-;1767:106;;;;-1:-1:-1;;;1767:106:11;;50340:2:15;1767:106:11;;;50322:21:15;50379:2;50359:18;;;50352:30;50418:34;50398:18;;;50391:62;-1:-1:-1;;;50469:18:15;;;50462:34;50513:19;;1767:106:11;50138:400:15;1982:122:9;2034:13;2066:31;2090:5;2073:23;;;;;;50672:19:15;;50716:2;50707:12;;50543:182;2073:23:9;;;;;;;;;;;;;2110:456;2287:11;;2166:13;;-1:-1:-1;;;2191:53:9;:16;;2287:15;;2301:1;2287:15;:::i;:::-;2283:19;;:1;:19;:::i;:::-;-1:-1:-1;;;;;2273:30:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2273:30:9;;2254:49;;-1:-1:-1;;;2313:3:9;2317:1;2313:6;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;2313:12:9;;;;;;;;;-1:-1:-1;;;2335:3:9;2339:1;2335:6;;;;;;;;:::i;:::-;;;;:12;-1:-1:-1;;;;;2335:12:9;;;;;;;;;2362:9;2357:175;2381:4;:11;2377:1;:15;2357:175;;;2430:8;2456:1;2445:4;2450:1;2445:7;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;2445:7:9;:12;;:7;2439:19;2430:29;;;;;;;:::i;:::-;;;;2413:3;2417:5;2421:1;2417;:5;:::i;:::-;:9;;2425:1;2417:9;:::i;:::-;2413:14;;;;;;;;:::i;:::-;;;;:46;-1:-1:-1;;;;;2413:46:9;;;;;;;;;2490:8;2505:4;2510:1;2505:7;;;;;;;;:::i;:::-;;;;;;;;2515:4;2499:21;2490:31;;;;;;;:::i;:::-;;;;2473:3;2477:5;2481:1;2477;:5;:::i;:::-;:9;;2485:1;2477:9;:::i;:::-;2473:14;;;;;;;;:::i;:::-;;;;:48;-1:-1:-1;;;;;2473:48:9;;;;;;;;-1:-1:-1;2394:3:9;;;;:::i;:::-;;;;2357:175;;;-1:-1:-1;2555:3:9;2110:456;-1:-1:-1;;;2110:456:9:o;2105:127:7:-;2188:12;2195:4;2188:6;:12::i;:::-;2180:45;;;;-1:-1:-1;;;2180:45:7;;51105:2:15;2180:45:7;;;51087:21:15;51144:2;51124:18;;;51117:30;-1:-1:-1;;;51163:18:15;;;51156:50;51223:18;;2180:45:7;50903:344:15;503:198:10;559:6;-1:-1:-1;;;;;585:5:10;:34;;577:87;;;;-1:-1:-1;;;577:87:10;;51454:2:15;577:87:10;;;51436:21:15;51493:2;51473:18;;;51466:30;51532:34;51512:18;;;51505:62;-1:-1:-1;;;51583:18:15;;;51576:38;51631:19;;577:87:10;51252:404:15;577:87:10;-1:-1:-1;688:5:10;503:198::o;707:168::-;763:7;799:1;790:5;:10;;782:55;;;;-1:-1:-1;;;782:55:10;;51863:2:15;782:55:10;;;51845:21:15;;;51882:18;;;51875:30;51941:34;51921:18;;;51914:62;51993:18;;782:55:10;51661:356:15;365:132:10;417:6;443:1;448;443:6;435:36;;;;-1:-1:-1;;;435:36:10;;52224:2:15;435:36:10;;;52206:21:15;52263:2;52243:18;;;52236:30;-1:-1:-1;;;52282:18:15;;;52275:46;52338:18;;435:36:10;52022:340:15;435:36:10;485:5;489:1;485;:5;:::i;215:140::-;267:6;293;;;:30;;-1:-1:-1;322:1:10;317;308:5;317:1;322;308:5;:::i;:::-;304:9;-1:-1:-1;303:15:10;;304:9;303:15;:::i;:::-;:20;293:30;285:63;;;;-1:-1:-1;;;285:63:10;;52694:2:15;285:63:10;;;52676:21:15;52733:2;52713:18;;;52706:30;-1:-1:-1;;;52752:18:15;;;52745:50;52812:18;;285:63:10;52492:344:15;8094:517:1;8315:16;;8359:54;;;2346:63;8359:54;;;53072:25:15;8389:10:1;53113:18:15;;;53106:60;;;;53182:18;;;53175:34;;;53225:18;;;53218:34;;;8197:4:1;;;;53044:19:15;;8359:54:1;;;;;;;;;;;;8349:65;;;;;;8253:175;;;;;;;;-1:-1:-1;;;53521:27:15;;53573:1;53564:11;;53557:27;;;;53609:2;53600:12;;53593:28;53646:2;53637:12;;53263:392;8253:175:1;;;;;;;;;;;;;8230:208;;;;;;8213:225;;8449:7;8458:9;8469;8482:25;8497:9;;8482:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8482:14:1;;-1:-1:-1;;;8482:25:1:i;:::-;8448:59;;;;;;8517:17;8537:26;8547:6;8555:1;8558;8561;8537:26;;;;;;;;;;;;;;;;;53887:25:15;;;53960:4;53948:17;;;;53943:2;53928:18;;53921:45;53997:2;53982:18;;53975:34;54040:2;54025:18;;54018:34;53874:3;53859:19;;53660:398;8537:26:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8537:26:1;;-1:-1:-1;;8537:26:1;;8593:11;;-1:-1:-1;;;;;8593:11:1;;;8580:24;;;;8094:517;-1:-1:-1;;;;;;;;;;;8094:517:1:o;8617:391::-;8689:7;8698:9;8709;8744:10;8738:24;8766:2;8738:30;8730:67;;;;-1:-1:-1;;;8730:67:1;;54265:2:15;8730:67:1;;;54247:21:15;54304:2;54284:18;;;54277:30;-1:-1:-1;;;54323:18:15;;;54316:54;54387:18;;8730:67:1;54063:348:15;8730:67:1;-1:-1:-1;;;8858:4:1;8842:21;;8836:28;8904:4;8888:21;;8882:28;8958:4;8942:21;;;8936:28;8933:1;8928:37;;8836:28;;8882;8617:391::o;14:274:15:-;-1:-1:-1;;;;;206:32:15;;;;188:51;;270:2;255:18;;248:34;176:2;161:18;;14:274::o;293:331::-;398:9;409;451:8;439:10;436:24;433:44;;;473:1;470;463:12;433:44;502:6;492:8;489:20;486:40;;;522:1;519;512:12;486:40;-1:-1:-1;;548:23:15;;;593:25;;;;;-1:-1:-1;293:331:15:o;629:127::-;690:10;685:3;681:20;678:1;671:31;721:4;718:1;711:15;745:4;742:1;735:15;761:275;832:2;826:9;897:2;878:13;;-1:-1:-1;;874:27:15;862:40;;-1:-1:-1;;;;;917:34:15;;953:22;;;914:62;911:88;;;979:18;;:::i;:::-;1015:2;1008:22;761:275;;-1:-1:-1;761:275:15:o;1041:186::-;1089:4;-1:-1:-1;;;;;1114:6:15;1111:30;1108:56;;;1144:18;;:::i;:::-;-1:-1:-1;1210:2:15;1189:15;-1:-1:-1;;1185:29:15;1216:4;1181:40;;1041:186::o;1232:805::-;1316:6;1324;1332;1385:2;1373:9;1364:7;1360:23;1356:32;1353:52;;;1401:1;1398;1391:12;1353:52;1437:9;1424:23;1414:33;;1494:2;1483:9;1479:18;1466:32;1456:42;;1549:2;1538:9;1534:18;1521:32;-1:-1:-1;;;;;1568:6:15;1565:30;1562:50;;;1608:1;1605;1598:12;1562:50;1631:22;;1684:4;1676:13;;1672:27;-1:-1:-1;1662:55:15;;1713:1;1710;1703:12;1662:55;1749:2;1736:16;1774:48;1790:31;1818:2;1790:31;:::i;:::-;1774:48;:::i;:::-;1845:2;1838:5;1831:17;1885:7;1880:2;1875;1871;1867:11;1863:20;1860:33;1857:53;;;1906:1;1903;1896:12;1857:53;1961:2;1956;1952;1948:11;1943:2;1936:5;1932:14;1919:45;2005:1;2000:2;1995;1988:5;1984:14;1980:23;1973:34;2026:5;2016:15;;;;;1232:805;;;;;:::o;2042:304::-;-1:-1:-1;;;;;2272:15:15;;;2254:34;;2324:15;;2319:2;2304:18;;2297:43;2204:2;2189:18;;2042:304::o;2351:469::-;2460:6;2468;2521:2;2509:9;2500:7;2496:23;2492:32;2489:52;;;2537:1;2534;2527:12;2489:52;2577:9;2564:23;-1:-1:-1;;;;;2602:6:15;2599:30;2596:50;;;2642:1;2639;2632:12;2596:50;2665:22;;2721:3;2703:16;;;2699:26;2696:46;;;2738:1;2735;2728:12;2696:46;2761:2;2810;2795:18;;;;2782:32;;-1:-1:-1;;;2351:469:15:o;3007:183::-;3067:4;-1:-1:-1;;;;;3092:6:15;3089:30;3086:56;;;3122:18;;:::i;:::-;-1:-1:-1;3167:1:15;3163:14;3179:4;3159:25;;3007:183::o;3195:131::-;-1:-1:-1;;;;;3270:31:15;;3260:42;;3250:70;;3316:1;3313;3306:12;3331:134;3399:20;;3428:31;3399:20;3428:31;:::i;:::-;3331:134;;;:::o;3470:1042::-;3563:6;3571;3624:2;3612:9;3603:7;3599:23;3595:32;3592:52;;;3640:1;3637;3630:12;3592:52;3680:9;3667:23;-1:-1:-1;;;;;3705:6:15;3702:30;3699:50;;;3745:1;3742;3735:12;3699:50;3768:22;;3821:4;3813:13;;3809:27;-1:-1:-1;3799:55:15;;3850:1;3847;3840:12;3799:55;3886:2;3873:16;3908:4;3932:60;3948:43;3988:2;3948:43;:::i;3932:60::-;4026:15;;;4108:1;4104:10;;;;4096:19;;4092:28;;;4057:12;;;;4132:19;;;4129:39;;;4164:1;4161;4154:12;4129:39;4188:11;;;;4208:217;4224:6;4219:3;4216:15;4208:217;;;4304:3;4291:17;4321:31;4346:5;4321:31;:::i;:::-;4365:18;;4241:12;;;;4403;;;;4208:217;;;4444:5;-1:-1:-1;4468:38:15;;-1:-1:-1;4487:18:15;;;4468:38;:::i;:::-;4458:48;;;;;3470:1042;;;;;:::o;4517:456::-;4594:6;4602;4610;4663:2;4651:9;4642:7;4638:23;4634:32;4631:52;;;4679:1;4676;4669:12;4631:52;4718:9;4705:23;4737:31;4762:5;4737:31;:::i;:::-;4787:5;-1:-1:-1;4844:2:15;4829:18;;4816:32;4857:33;4816:32;4857:33;:::i;:::-;4517:456;;4909:7;;-1:-1:-1;;;4963:2:15;4948:18;;;;4935:32;;4517:456::o;4978:250::-;5063:1;5073:113;5087:6;5084:1;5081:13;5073:113;;;5163:11;;;5157:18;5144:11;;;5137:39;5109:2;5102:10;5073:113;;;-1:-1:-1;;5220:1:15;5202:16;;5195:27;4978:250::o;5233:270::-;5274:3;5312:5;5306:12;5339:6;5334:3;5327:19;5355:76;5424:6;5417:4;5412:3;5408:14;5401:4;5394:5;5390:16;5355:76;:::i;:::-;5485:2;5464:15;-1:-1:-1;;5460:29:15;5451:39;;;;5492:4;5447:50;;5233:270;-1:-1:-1;;5233:270:15:o;5508:595::-;5755:6;5748:14;5741:22;5730:9;5723:41;5814:6;5807:14;5800:22;5795:2;5784:9;5780:18;5773:50;5859:2;5854;5843:9;5839:18;5832:30;5934:1;5930;5925:3;5921:11;5917:19;5908:6;5902:13;5898:39;5893:2;5882:9;5878:18;5871:67;5704:4;5985:2;5977:6;5973:15;5967:22;6026:2;6020:3;6009:9;6005:19;5998:31;6046:51;6092:3;6081:9;6077:19;6063:12;6046:51;:::i;6108:725::-;6194:6;6202;6210;6218;6271:2;6259:9;6250:7;6246:23;6242:32;6239:52;;;6287:1;6284;6277:12;6239:52;6323:9;6310:23;6300:33;;6380:2;6369:9;6365:18;6352:32;6342:42;;6435:2;6424:9;6420:18;6407:32;-1:-1:-1;;;;;6499:2:15;6491:6;6488:14;6485:34;;;6515:1;6512;6505:12;6485:34;6553:6;6542:9;6538:22;6528:32;;6598:7;6591:4;6587:2;6583:13;6579:27;6569:55;;6620:1;6617;6610:12;6569:55;6660:2;6647:16;6686:2;6678:6;6675:14;6672:34;;;6702:1;6699;6692:12;6672:34;6747:7;6742:2;6733:6;6729:2;6725:15;6721:24;6718:37;6715:57;;;6768:1;6765;6758:12;6715:57;6108:725;;;;-1:-1:-1;;6799:2:15;6791:11;;-1:-1:-1;;;6108:725:15:o;6838:698::-;6986:6;6994;7047:2;7035:9;7026:7;7022:23;7018:32;7015:52;;;7063:1;7060;7053:12;7015:52;7103:9;7090:23;-1:-1:-1;;;;;7173:2:15;7165:6;7162:14;7159:34;;;7189:1;7186;7179:12;7159:34;7212:22;;;;7268:3;7250:16;;;7246:26;7243:46;;;7285:1;7282;7275:12;7243:46;7308:2;;-1:-1:-1;7363:2:15;7348:18;;7335:32;;7379:16;;;7376:36;;;7408:1;7405;7398:12;7376:36;-1:-1:-1;7431:24:15;;7489:2;7471:16;;;7467:25;7464:45;;;7505:1;7502;7495:12;7464:45;7528:2;7518:12;;;6838:698;;;;;:::o;8412:171::-;8487:5;8532:3;8523:6;8518:3;8514:16;8510:26;8507:46;;;8549:1;8546;8539:12;8507:46;-1:-1:-1;8571:6:15;8412:171;-1:-1:-1;8412:171:15:o;8588:385::-;8688:6;8741:2;8729:9;8720:7;8716:23;8712:32;8709:52;;;8757:1;8754;8747:12;8709:52;8797:9;8784:23;-1:-1:-1;;;;;8822:6:15;8819:30;8816:50;;;8862:1;8859;8852:12;8816:50;8885:82;8959:7;8950:6;8939:9;8935:22;8885:82;:::i;:::-;8875:92;8588:385;-1:-1:-1;;;;8588:385:15:o;8978:273::-;9054:6;9107:2;9095:9;9086:7;9082:23;9078:32;9075:52;;;9123:1;9120;9113:12;9075:52;9162:9;9149:23;9201:1;9194:5;9191:12;9181:40;;9217:1;9214;9207:12;10182:118;10268:5;10261:13;10254:21;10247:5;10244:32;10234:60;;10290:1;10287;10280:12;10305:662;10359:5;10412:3;10405:4;10397:6;10393:17;10389:27;10379:55;;10430:1;10427;10420:12;10379:55;10466:6;10453:20;10492:4;10516:60;10532:43;10572:2;10532:43;:::i;10516:60::-;10610:15;;;10696:1;10692:10;;;;10680:23;;10676:32;;;10641:12;;;;10720:15;;;10717:35;;;10748:1;10745;10738:12;10717:35;10784:2;10776:6;10772:15;10796:142;10812:6;10807:3;10804:15;10796:142;;;10878:17;;10866:30;;10916:12;;;;10829;;10796:142;;;-1:-1:-1;10956:5:15;10305:662;-1:-1:-1;;;;;;10305:662:15:o;10972:1209::-;11087:6;11095;11148:2;11136:9;11127:7;11123:23;11119:32;11116:52;;;11164:1;11161;11154:12;11116:52;11204:9;11191:23;-1:-1:-1;;;;;11274:2:15;11266:6;11263:14;11260:34;;;11290:1;11287;11280:12;11260:34;11328:6;11317:9;11313:22;11303:32;;11373:7;11366:4;11362:2;11358:13;11354:27;11344:55;;11395:1;11392;11385:12;11344:55;11431:2;11418:16;11453:4;11477:60;11493:43;11533:2;11493:43;:::i;11477:60::-;11571:15;;;11653:1;11649:10;;;;11641:19;;11637:28;;;11602:12;;;;11677:19;;;11674:39;;;11709:1;11706;11699:12;11674:39;11733:11;;;;11753:214;11769:6;11764:3;11761:15;11753:214;;;11849:3;11836:17;11866:28;11888:5;11866:28;:::i;:::-;11907:18;;11786:12;;;;11945;;;;11753:214;;;11986:5;-1:-1:-1;;12029:18:15;;12016:32;;-1:-1:-1;;12060:16:15;;;12057:36;;;12089:1;12086;12079:12;12057:36;;12112:63;12167:7;12156:8;12145:9;12141:24;12112:63;:::i;12186:367::-;12249:8;12259:6;12313:3;12306:4;12298:6;12294:17;12290:27;12280:55;;12331:1;12328;12321:12;12280:55;-1:-1:-1;12354:20:15;;-1:-1:-1;;;;;12386:30:15;;12383:50;;;12429:1;12426;12419:12;12383:50;12466:4;12458:6;12454:17;12442:29;;12526:3;12519:4;12509:6;12506:1;12502:14;12494:6;12490:27;12486:38;12483:47;12480:67;;;12543:1;12540;12533:12;12480:67;12186:367;;;;;:::o;12558:1099::-;12727:6;12735;12743;12751;12759;12767;12820:2;12808:9;12799:7;12795:23;12791:32;12788:52;;;12836:1;12833;12826:12;12788:52;12876:9;12863:23;-1:-1:-1;;;;;12946:2:15;12938:6;12935:14;12932:34;;;12962:1;12959;12952:12;12932:34;13001:70;13063:7;13054:6;13043:9;13039:22;13001:70;:::i;:::-;13090:8;;-1:-1:-1;12975:96:15;-1:-1:-1;13178:2:15;13163:18;;13150:32;;-1:-1:-1;13194:16:15;;;13191:36;;;13223:1;13220;13213:12;13191:36;13262:72;13326:7;13315:8;13304:9;13300:24;13262:72;:::i;:::-;13353:8;;-1:-1:-1;13236:98:15;-1:-1:-1;13441:2:15;13426:18;;13413:32;;-1:-1:-1;13457:16:15;;;13454:36;;;13486:1;13483;13476:12;13454:36;;13525:72;13589:7;13578:8;13567:9;13563:24;13525:72;:::i;:::-;12558:1099;;;;-1:-1:-1;12558:1099:15;;-1:-1:-1;12558:1099:15;;13616:8;;12558:1099;-1:-1:-1;;;12558:1099:15:o;13662:247::-;13721:6;13774:2;13762:9;13753:7;13749:23;13745:32;13742:52;;;13790:1;13787;13780:12;13742:52;13829:9;13816:23;13848:31;13873:5;13848:31;:::i;13914:773::-;14036:6;14044;14052;14060;14113:2;14101:9;14092:7;14088:23;14084:32;14081:52;;;14129:1;14126;14119:12;14081:52;14169:9;14156:23;-1:-1:-1;;;;;14239:2:15;14231:6;14228:14;14225:34;;;14255:1;14252;14245:12;14225:34;14294:70;14356:7;14347:6;14336:9;14332:22;14294:70;:::i;:::-;14383:8;;-1:-1:-1;14268:96:15;-1:-1:-1;14471:2:15;14456:18;;14443:32;;-1:-1:-1;14487:16:15;;;14484:36;;;14516:1;14513;14506:12;14484:36;;14555:72;14619:7;14608:8;14597:9;14593:24;14555:72;:::i;:::-;13914:773;;;;-1:-1:-1;14646:8:15;-1:-1:-1;;;;13914:773:15:o;14692:529::-;14769:6;14777;14785;14838:2;14826:9;14817:7;14813:23;14809:32;14806:52;;;14854:1;14851;14844:12;14806:52;14893:9;14880:23;14912:31;14937:5;14912:31;:::i;:::-;14962:5;-1:-1:-1;15019:2:15;15004:18;;14991:32;15032:33;14991:32;15032:33;:::i;:::-;15084:7;-1:-1:-1;15143:2:15;15128:18;;15115:32;15156:33;15115:32;15156:33;:::i;:::-;15208:7;15198:17;;;14692:529;;;;;:::o;15226:583::-;15335:6;15343;15351;15404:2;15392:9;15383:7;15379:23;15375:32;15372:52;;;15420:1;15417;15410:12;15372:52;15459:9;15446:23;15478:28;15500:5;15478:28;:::i;:::-;15525:5;-1:-1:-1;15581:2:15;15566:18;;15553:32;-1:-1:-1;;;;;15597:30:15;;15594:50;;;15640:1;15637;15630:12;15594:50;15679:70;15741:7;15732:6;15721:9;15717:22;15679:70;:::i;:::-;15226:583;;15768:8;;-1:-1:-1;15653:96:15;;-1:-1:-1;;;;15226:583:15:o;15814:203::-;-1:-1:-1;;;;;15978:32:15;;;;15960:51;;15948:2;15933:18;;15814:203::o;16358:708::-;16446:6;16454;16507:2;16495:9;16486:7;16482:23;16478:32;16475:52;;;16523:1;16520;16513:12;16475:52;16552:9;16546:16;16536:26;;16606:2;16595:9;16591:18;16585:25;-1:-1:-1;;;;;16625:6:15;16622:30;16619:50;;;16665:1;16662;16655:12;16619:50;16688:22;;16741:4;16733:13;;16729:27;-1:-1:-1;16719:55:15;;16770:1;16767;16760:12;16719:55;16799:2;16793:9;16824:48;16840:31;16868:2;16840:31;:::i;16824:48::-;16895:2;16888:5;16881:17;16935:7;16930:2;16925;16921;16917:11;16913:20;16910:33;16907:53;;;16956:1;16953;16946:12;16907:53;16969:67;17033:2;17028;17021:5;17017:14;17012:2;17008;17004:11;16969:67;:::i;:::-;17055:5;17045:15;;;;;16358:708;;;;;:::o;17071:320::-;17158:6;17166;17219:2;17207:9;17198:7;17194:23;17190:32;17187:52;;;17235:1;17232;17225:12;17187:52;17267:9;17261:16;17286:31;17311:5;17286:31;:::i;:::-;17381:2;17366:18;;;;17360:25;17336:5;;17360:25;;-1:-1:-1;;;17071:320:15:o;17396:127::-;17457:10;17452:3;17448:20;17445:1;17438:31;17488:4;17485:1;17478:15;17512:4;17509:1;17502:15;17528:184;17598:6;17651:2;17639:9;17630:7;17626:23;17622:32;17619:52;;;17667:1;17664;17657:12;17619:52;-1:-1:-1;17690:16:15;;17528:184;-1:-1:-1;17528:184:15:o;17717:127::-;17778:10;17773:3;17769:20;17766:1;17759:31;17809:4;17806:1;17799:15;17833:4;17830:1;17823:15;17849:135;17888:3;17909:17;;;17906:43;;17929:18;;:::i;:::-;-1:-1:-1;17976:1:15;17965:13;;17849:135::o;17989:380::-;18068:1;18064:12;;;;18111;;;18132:61;;18186:4;18178:6;18174:17;18164:27;;18132:61;18239:2;18231:6;18228:14;18208:18;18205:38;18202:161;;18285:10;18280:3;18276:20;18273:1;18266:31;18320:4;18317:1;18310:15;18348:4;18345:1;18338:15;18374:128;18441:9;;;18462:11;;;18459:37;;;18476:18;;:::i;18507:127::-;18568:10;18563:3;18559:20;18556:1;18549:31;18599:4;18596:1;18589:15;18623:4;18620:1;18613:15;18639:355;18841:2;18823:21;;;18880:2;18860:18;;;18853:30;18919:33;18914:2;18899:18;;18892:61;18985:2;18970:18;;18639:355::o;18999:521::-;19076:4;19082:6;19142:11;19129:25;19236:2;19232:7;19221:8;19205:14;19201:29;19197:43;19177:18;19173:68;19163:96;;19255:1;19252;19245:12;19163:96;19282:33;;19334:20;;;-1:-1:-1;;;;;;19366:30:15;;19363:50;;;19409:1;19406;19399:12;19363:50;19442:4;19430:17;;-1:-1:-1;19473:14:15;19469:27;;;19459:38;;19456:58;;;19510:1;19507;19500:12;19525:347;19727:2;19709:21;;;19766:2;19746:18;;;19739:30;-1:-1:-1;;;19800:2:15;19785:18;;19778:53;19863:2;19848:18;;19525:347::o;19877:355::-;20079:2;20061:21;;;20118:2;20098:18;;;20091:30;20157:33;20152:2;20137:18;;20130:61;20223:2;20208:18;;19877:355::o;20580:271::-;20763:6;20755;20750:3;20737:33;20719:3;20789:16;;20814:13;;;20789:16;20580:271;-1:-1:-1;20580:271:15:o;20856:219::-;21005:2;20994:9;20987:21;20968:4;21025:44;21065:2;21054:9;21050:18;21042:6;21025:44;:::i;22217:336::-;22419:2;22401:21;;;22458:2;22438:18;;;22431:30;-1:-1:-1;;;22492:2:15;22477:18;;22470:42;22544:2;22529:18;;22217:336::o;22683:544::-;22784:2;22779:3;22776:11;22773:448;;;22820:1;22845:5;22841:2;22834:17;22890:4;22886:2;22876:19;22960:2;22948:10;22944:19;22941:1;22937:27;22931:4;22927:38;22996:4;22984:10;22981:20;22978:47;;;-1:-1:-1;23019:4:15;22978:47;23074:2;23069:3;23065:12;23062:1;23058:20;23052:4;23048:31;23038:41;;23129:82;23147:2;23140:5;23137:13;23129:82;;;23192:17;;;23173:1;23162:13;23129:82;;23403:1348;23527:3;23521:10;-1:-1:-1;;;;;23546:6:15;23543:30;23540:56;;;23576:18;;:::i;:::-;23605:96;23694:6;23654:38;23686:4;23680:11;23654:38;:::i;:::-;23648:4;23605:96;:::i;:::-;23756:4;;23820:2;23809:14;;23837:1;23832:662;;;;24538:1;24555:6;24552:89;;;-1:-1:-1;24607:19:15;;;24601:26;24552:89;-1:-1:-1;;23360:1:15;23356:11;;;23352:24;23348:29;23338:40;23384:1;23380:11;;;23335:57;24654:81;;23802:943;;23832:662;22630:1;22623:14;;;22667:4;22654:18;;-1:-1:-1;;23868:20:15;;;23985:236;23999:7;23996:1;23993:14;23985:236;;;24088:19;;;24082:26;24067:42;;24180:27;;;;24148:1;24136:14;;;;24015:19;;23985:236;;;23989:3;24249:6;24240:7;24237:19;24234:201;;;24310:19;;;24304:26;-1:-1:-1;;24393:1:15;24389:14;;;24405:3;24385:24;24381:37;24377:42;24362:58;24347:74;;24234:201;-1:-1:-1;;;;;24481:1:15;24465:14;;;24461:22;24448:36;;-1:-1:-1;23403:1348:15:o;24756:522::-;24856:6;24851:3;24844:19;24826:3;24882:4;24911:2;24906:3;24902:12;24895:19;;24937:5;24960:1;24970:283;24984:6;24981:1;24978:13;24970:283;;;25061:6;25048:20;25081:33;25106:7;25081:33;:::i;:::-;-1:-1:-1;;;;;25139:33:15;25127:46;;25193:12;;;;25228:15;;;;25169:1;24999:9;24970:283;;;-1:-1:-1;25269:3:15;;24756:522;-1:-1:-1;;;;;24756:522:15:o;25283:266::-;25371:6;25366:3;25359:19;25423:6;25416:5;25409:4;25404:3;25400:14;25387:43;-1:-1:-1;25475:1:15;25450:16;;;25468:4;25446:27;;;25439:38;;;;25531:2;25510:15;;;-1:-1:-1;;25506:29:15;25497:39;;;25493:50;;25283:266::o;25554:500::-;25612:5;25619:6;25679:3;25666:17;25765:2;25761:7;25750:8;25734:14;25730:29;25726:43;25706:18;25702:68;25692:96;;25784:1;25781;25774:12;25692:96;25812:33;;25916:4;25903:18;;;-1:-1:-1;25864:21:15;;-1:-1:-1;;;;;;25933:30:15;;25930:50;;;25976:1;25973;25966:12;25930:50;26023:6;26007:14;26003:27;25996:5;25992:39;25989:59;;;26044:1;26041;26034:12;26059:1467;26444:2;26426:21;;;26463:18;;26456:34;;;-1:-1:-1;;;;;;26502:31:15;;26499:51;;;26546:1;26543;26536:12;26499:51;26580:6;26577:1;26573:14;26638:6;26630;26624:3;26613:9;26609:19;26596:49;26679:6;26668:9;26664:22;26654:32;;26705:4;26769:3;26757:9;26753:2;26749:18;26745:28;26740:2;26729:9;26725:18;26718:56;26797:67;26859:3;26855:2;26851:12;26843:6;26835;26797:67;:::i;:::-;26900:22;;;26895:2;26880:18;;26873:50;26958:22;;;26783:81;-1:-1:-1;26996:15:15;;;27054:1;27050:14;;;27038:27;;27034:36;;27093:6;27117:1;27127:370;27141:6;27138:1;27135:13;27127:370;;;27206:19;;;-1:-1:-1;;27202:33:15;27190:46;;27285;27324:6;27316;27285:46;:::i;:::-;27354:63;27410:6;27395:13;27380;27354:63;:::i;:::-;27475:12;;;;27344:73;-1:-1:-1;;;27440:15:15;;;;27163:1;27156:9;27127:370;;;-1:-1:-1;27514:6:15;;26059:1467;-1:-1:-1;;;;;;;;;;;;26059:1467:15:o;27939:288::-;28128:2;28117:9;28110:21;28091:4;28148:73;28217:2;28206:9;28202:18;28194:6;28186;28148:73;:::i;28232:841::-;28493:2;28482:9;28475:21;28456:4;28519:73;28588:2;28577:9;28573:18;28565:6;28557;28519:73;:::i;:::-;28649:22;;;28611:2;28629:18;;;28622:50;;;;28721:13;;28743:22;;;28819:15;;;;28781;;;28852:1;28862:185;28876:6;28873:1;28870:13;28862:185;;;28951:13;;28944:21;28937:29;28925:42;;29022:15;;;;28987:12;;;;28898:1;28891:9;28862:185;;;-1:-1:-1;29064:3:15;;28232:841;-1:-1:-1;;;;;;;;28232:841:15:o;29432:617::-;29757:3;29752;29748:13;29743:3;29736:26;29816;29812:31;29803:6;29799:2;29795:15;29791:53;29787:1;29782:3;29778:11;29771:74;29875:6;29870:2;29865:3;29861:12;29854:28;29718:3;29911:6;29905:13;29927:75;29995:6;29990:2;29985:3;29981:12;29974:4;29966:6;29962:17;29927:75;:::i;:::-;30022:16;;;;30040:2;30018:25;;29432:617;-1:-1:-1;;;;29432:617:15:o;30400:287::-;30529:3;30567:6;30561:13;30583:66;30642:6;30637:3;30630:4;30622:6;30618:17;30583:66;:::i;:::-;30665:16;;;;;30400:287;-1:-1:-1;;30400:287:15:o;30692:245::-;30759:6;30812:2;30800:9;30791:7;30787:23;30783:32;30780:52;;;30828:1;30825;30818:12;30780:52;30860:9;30854:16;30879:28;30901:5;30879:28;:::i;31348:330::-;31550:2;31532:21;;;31589:1;31569:18;;;31562:29;-1:-1:-1;;;31622:2:15;31607:18;;31600:37;31669:2;31654:18;;31348:330::o;31683:545::-;31776:4;31782:6;31842:11;31829:25;31936:2;31932:7;31921:8;31905:14;31901:29;31897:43;31877:18;31873:68;31863:96;;31955:1;31952;31945:12;31863:96;31982:33;;32034:20;;;-1:-1:-1;;;;;;32066:30:15;;32063:50;;;32109:1;32106;32099:12;32063:50;32142:4;32130:17;;-1:-1:-1;32193:1:15;32189:14;;;32173;32169:35;32159:46;;32156:66;;;32218:1;32215;32208:12;32233:729;32403:4;32451:2;32440:9;32436:18;32481:6;32470:9;32463:25;32507:2;32545;32540;32529:9;32525:18;32518:30;32568:6;32603;32597:13;32634:6;32626;32619:22;32672:2;32661:9;32657:18;32650:25;;32710:2;32702:6;32698:15;32684:29;;32731:1;32741:195;32755:6;32752:1;32749:13;32741:195;;;32820:13;;-1:-1:-1;;;;;32816:39:15;32804:52;;32911:15;;;;32876:12;;;;32852:1;32770:9;32741:195;;;-1:-1:-1;32953:3:15;;32233:729;-1:-1:-1;;;;;;;32233:729:15:o;32967:881::-;33062:6;33093:2;33136;33124:9;33115:7;33111:23;33107:32;33104:52;;;33152:1;33149;33142:12;33104:52;33185:9;33179:16;-1:-1:-1;;;;;33210:6:15;33207:30;33204:50;;;33250:1;33247;33240:12;33204:50;33273:22;;33326:4;33318:13;;33314:27;-1:-1:-1;33304:55:15;;33355:1;33352;33345:12;33304:55;33384:2;33378:9;33407:60;33423:43;33463:2;33423:43;:::i;33407:60::-;33501:15;;;33583:1;33579:10;;;;33571:19;;33567:28;;;33532:12;;;;33607:19;;;33604:39;;;33639:1;33636;33629:12;33604:39;33663:11;;;;33683:135;33699:6;33694:3;33691:15;33683:135;;;33765:10;;33753:23;;33716:12;;;;33796;;;;33683:135;;33853:343;34055:2;34037:21;;;34094:2;34074:18;;;34067:30;-1:-1:-1;;;34128:2:15;34113:18;;34106:49;34187:2;34172:18;;33853:343::o;36128:595::-;36333:2;36322:9;36315:21;36296:4;36371:6;36358:20;36387:31;36412:5;36387:31;:::i;:::-;-1:-1:-1;;;;;36454:31:15;36449:2;36434:18;;;36427:59;;;;36529:55;;36568:15;;36572:6;36529:55;:::i;:::-;36622:4;36615;36604:9;36600:20;36593:34;36644:73;36713:2;36702:9;36698:18;36684:12;36670;36644:73;:::i;:::-;36636:81;36128:595;-1:-1:-1;;;;;36128:595:15:o;37618:347::-;37820:2;37802:21;;;37859:2;37839:18;;;37832:30;-1:-1:-1;;;37893:2:15;37878:18;;37871:53;37956:2;37941:18;;37618:347::o;38315:341::-;38517:2;38499:21;;;38556:2;38536:18;;;38529:30;-1:-1:-1;;;38590:2:15;38575:18;;38568:47;38647:2;38632:18;;38315:341::o;38661:125::-;38726:9;;;38747:10;;;38744:36;;;38760:18;;:::i;39141:799::-;39522:3;39560:6;39554:13;39576:66;39635:6;39630:3;39623:4;39615:6;39611:17;39576:66;:::i;:::-;-1:-1:-1;;;39664:16:15;;;39689:23;;;39737:13;;39759:78;39737:13;39824:1;39813:13;;39806:4;39794:17;;39759:78;:::i;:::-;-1:-1:-1;;;39900:1:15;39856:20;;;;39892:10;;;39885:23;39932:1;39924:10;;39141:799;-1:-1:-1;;;;39141:799:15:o;39945:::-;40326:3;40364:6;40358:13;40380:66;40439:6;40434:3;40427:4;40419:6;40415:17;40380:66;:::i;:::-;-1:-1:-1;;;40468:16:15;;;40493:23;;;40541:13;;40563:78;40541:13;40628:1;40617:13;;40610:4;40598:17;;40563:78;:::i;40749:801::-;41130:3;41168:6;41162:13;41184:66;41243:6;41238:3;41231:4;41223:6;41219:17;41184:66;:::i;:::-;-1:-1:-1;;;41272:16:15;;;41297:25;;;41347:13;;41369:78;41347:13;41434:1;41423:13;;41416:4;41404:17;;41369:78;:::i;:::-;-1:-1:-1;;;41510:1:15;41466:20;;;;41502:10;;;41495:23;41542:1;41534:10;;40749:801;-1:-1:-1;;;;40749:801:15:o;41914:434::-;42147:6;42136:9;42129:25;42190:6;42185:2;42174:9;42170:18;42163:34;42233:6;42228:2;42217:9;42213:18;42206:34;42276:3;42271:2;42260:9;42256:18;42249:31;42110:4;42297:45;42337:3;42326:9;42322:19;42314:6;42297:45;:::i;42353:442::-;-1:-1:-1;;;;;42560:32:15;;42542:51;;42530:2;42515:18;;42623:1;42612:13;;42602:144;;42668:10;42663:3;42659:20;42656:1;42649:31;42703:4;42700:1;42693:15;42731:4;42728:1;42721:15;42602:144;42782:6;42777:2;42766:9;42762:18;42755:34;42353:442;;;;;:::o;43487:177::-;43566:13;;-1:-1:-1;;;;;43608:31:15;;43598:42;;43588:70;;43654:1;43651;43644:12;43669:450;43756:6;43764;43772;43825:2;43813:9;43804:7;43800:23;43796:32;43793:52;;;43841:1;43838;43831:12;43793:52;43864:40;43894:9;43864:40;:::i;:::-;43854:50;;43923:49;43968:2;43957:9;43953:18;43923:49;:::i;:::-;43913:59;;44015:2;44004:9;44000:18;43994:25;44059:10;44052:5;44048:22;44041:5;44038:33;44028:61;;44085:1;44082;44075:12;44448:458;44679:6;44668:9;44661:25;44722:6;44717:2;44706:9;44702:18;44695:34;44794:1;44790;44785:3;44781:11;44777:19;44769:6;44765:32;44760:2;44749:9;44745:18;44738:60;44834:3;44829:2;44818:9;44814:18;44807:31;44642:4;44855:45;44895:3;44884:9;44880:19;44872:6;44855:45;:::i;45621:251::-;45691:6;45744:2;45732:9;45723:7;45719:23;45715:32;45712:52;;;45760:1;45757;45750:12;45712:52;45792:9;45786:16;45811:31;45836:5;45811:31;:::i;45877:278::-;45946:6;45999:2;45987:9;45978:7;45974:23;45970:32;45967:52;;;46015:1;46012;46005:12;45967:52;46047:9;46041:16;46097:8;46090:5;46086:20;46079:5;46076:31;46066:59;;46121:1;46118;46111:12;46553:331;46755:2;46737:21;;;46794:1;46774:18;;;46767:29;-1:-1:-1;;;46827:2:15;46812:18;;46805:38;46875:2;46860:18;;46553:331::o;47168:182::-;-1:-1:-1;;;;;47275:10:15;;;47287;;;47271:27;;47310:11;;;47307:37;;;47324:18;;:::i;:::-;47307:37;47168:182;;;;:::o;47355:288::-;47530:6;47519:9;47512:25;47573:2;47568;47557:9;47553:18;47546:30;47493:4;47593:44;47633:2;47622:9;47618:18;47610:6;47593:44;:::i;47648:568::-;-1:-1:-1;;;;;47937:15:15;;;47919:34;;47996:14;;47989:22;47984:2;47969:18;;47962:50;48043:2;48028:18;;48021:34;;;48091:15;;48086:2;48071:18;;48064:43;47899:3;48138;48123:19;;48116:32;;;47862:4;;48165:45;;48190:19;;48182:6;48165:45;:::i;48221:243::-;48298:6;48306;48359:2;48347:9;48338:7;48334:23;48330:32;48327:52;;;48375:1;48372;48365:12;48327:52;-1:-1:-1;;48398:16:15;;48454:2;48439:18;;;48433:25;48398:16;;48433:25;;-1:-1:-1;48221:243:15:o;48469:136::-;48504:3;-1:-1:-1;;;48525:22:15;;48522:48;;48550:18;;:::i;:::-;-1:-1:-1;48590:1:15;48586:13;;48469:136::o;48610:185::-;-1:-1:-1;;;;;48731:10:15;;;48719;;;48715:27;;48754:12;;;48751:38;;;48769:18;;:::i;48800:127::-;48861:10;48856:3;48852:20;48849:1;48842:31;48892:4;48889:1;48882:15;48916:4;48913:1;48906:15;48932:112;48964:1;48990;48980:35;;48995:18;;:::i;:::-;-1:-1:-1;49029:9:15;;48932:112::o;50730:168::-;50803:9;;;50834;;50851:15;;;50845:22;;50831:37;50821:71;;50872:18;;:::i;52367:120::-;52407:1;52433;52423:35;;52438:18;;:::i;:::-;-1:-1:-1;52472:9:15;;52367:120::o
Swarm Source
ipfs://af26bc8f138765be2c257e6b14ca2516659cabbd553254e68c065dd1379b20a3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 31.78% | $0.033377 | 1,537,123.933 | $51,303.97 | |
POL | 19.99% | $0.015919 | 2,027,436.1247 | $32,275.75 | |
POL | 8.91% | $1 | 14,388.5287 | $14,388.53 | |
POL | 5.04% | $15.05 | 541.1145 | $8,143.77 | |
POL | 1.59% | $0.187581 | 13,681.4009 | $2,566.38 | |
POL | 0.46% | $0.999992 | 748.4059 | $748.4 | |
POL | 0.25% | $0.999993 | 400.2833 | $400.28 | |
POL | 0.06% | $1,573.22 | 0.0587 | $92.39 | |
POL | 0.04% | $2.05 | 35.2687 | $72.47 | |
POL | 0.04% | $0.146562 | 403.0077 | $59.07 | |
POL | 0.03% | $0.269241 | 204.9483 | $55.18 | |
POL | 0.03% | $0.010824 | 4,674.0614 | $50.59 | |
POL | 0.03% | $84,053 | 0.00049252 | $41.4 | |
POL | 0.02% | $0.004857 | 7,564.0991 | $36.74 | |
POL | 0.02% | $0.999993 | 35.3252 | $35.32 | |
POL | 0.02% | $0.187745 | 165.4492 | $31.06 | |
POL | 0.02% | $12.92 | 2.1415 | $27.67 | |
POL | 0.01% | $0.057069 | 357.7328 | $20.42 | |
POL | 0.01% | $0.004571 | 4,358.4144 | $19.92 | |
POL | 0.01% | <$0.000001 | 3,392,979,817.7462 | $18.32 | |
POL | 0.01% | $0.097724 | 184.2625 | $18.01 | |
POL | 0.01% | $136.82 | 0.1186 | $16.23 | |
POL | <0.01% | $5.17 | 2.2055 | $11.4 | |
POL | <0.01% | $4.24 | 2.3128 | $9.81 | |
POL | <0.01% | $0.000004 | 2,342,010.1195 | $9.63 | |
POL | <0.01% | $0.262629 | 35.8952 | $9.43 | |
POL | <0.01% | $4.81 | 1.9123 | $9.2 | |
POL | <0.01% | $12.52 | 0.7107 | $8.9 | |
POL | <0.01% | $0.007127 | 1,219.1563 | $8.69 | |
POL | <0.01% | $0.002497 | 2,919.4497 | $7.29 | |
POL | <0.01% | $0.003642 | 1,836.0755 | $6.69 | |
POL | <0.01% | $0.00464 | 1,434.1058 | $6.65 | |
POL | <0.01% | $0.000002 | 2,974,760.7187 | $6.37 | |
POL | <0.01% | $0.57626 | 9.8946 | $5.7 | |
POL | <0.01% | <$0.000001 | 45,607,504.1562 | $5.66 | |
POL | <0.01% | $0.000012 | 456,444.6827 | $5.54 | |
POL | <0.01% | <$0.000001 | 588,943,770.0287 | $5.42 | |
POL | <0.01% | $0.212415 | 24.0379 | $5.11 | |
POL | <0.01% | $0.021865 | 231.8336 | $5.07 | |
POL | <0.01% | $0.125418 | 40.3423 | $5.06 | |
POL | <0.01% | $3,356.39 | 0.0013432 | $4.51 | |
POL | <0.01% | $0.00141 | 3,174.398 | $4.48 | |
POL | <0.01% | $0.026503 | 158.3341 | $4.2 | |
POL | <0.01% | $0.000058 | 69,747.0466 | $4.07 | |
POL | <0.01% | $0.703743 | 5.6948 | $4.01 | |
POL | <0.01% | $0.0013 | 3,029.3007 | $3.94 | |
POL | <0.01% | $155.1 | 0.0243 | $3.76 | |
POL | <0.01% | $0.310422 | 11.9528 | $3.71 | |
POL | <0.01% | $0.00017 | 20,556.646 | $3.5 | |
POL | <0.01% | $1,340.61 | 0.00245521 | $3.29 | |
POL | <0.01% | $0.000734 | 4,370.2391 | $3.21 | |
POL | <0.01% | $0.956203 | 3.3523 | $3.21 | |
POL | <0.01% | $0.144016 | 20.8429 | $3 | |
POL | <0.01% | $0.002132 | 1,371.8378 | $2.93 | |
POL | <0.01% | $0.018977 | 147.512 | $2.8 | |
POL | <0.01% | $0.008144 | 343.4935 | $2.8 | |
POL | <0.01% | $0.009922 | 277.7651 | $2.76 | |
POL | <0.01% | $0.000047 | 57,136.7567 | $2.71 | |
POL | <0.01% | $0.004254 | 623.2776 | $2.65 | |
POL | <0.01% | $0.345501 | 7.5138 | $2.6 | |
POL | <0.01% | $0.012126 | 208.2236 | $2.52 | |
POL | <0.01% | $0.761077 | 3.2999 | $2.51 | |
POL | <0.01% | $0.002495 | 975.6803 | $2.43 | |
POL | <0.01% | $0.458598 | 5.1857 | $2.38 | |
POL | <0.01% | $2.45 | 0.9576 | $2.35 | |
POL | <0.01% | $0.000013 | 178,114.7377 | $2.33 | |
POL | <0.01% | $0.000501 | 4,629.0066 | $2.32 | |
POL | <0.01% | $0.004609 | 495.93 | $2.29 | |
POL | <0.01% | $0.000092 | 24,092.6159 | $2.23 | |
POL | <0.01% | $0.010443 | 211.8626 | $2.21 | |
POL | <0.01% | $0.000293 | 7,160.5898 | $2.09 | |
POL | <0.01% | $0.000133 | 15,483.4189 | $2.06 | |
POL | <0.01% | $0.000012 | 167,556.5469 | $2.03 | |
POL | <0.01% | $0.247073 | 8.0622 | $1.99 | |
POL | <0.01% | $0.001017 | 1,937.0555 | $1.97 | |
POL | <0.01% | $0.001909 | 955.8866 | $1.82 | |
POL | <0.01% | <$0.000001 | 3,554,920,052.0034 | $1.78 | |
POL | <0.01% | <$0.000001 | 3,590,701.637 | $1.77 | |
POL | <0.01% | $0.601549 | 2.8476 | $1.71 | |
POL | <0.01% | $0.001112 | 1,529.4772 | $1.7 | |
POL | <0.01% | $0.002111 | 779.7244 | $1.65 | |
POL | <0.01% | $0.187552 | 8.6727 | $1.63 | |
POL | <0.01% | $3.62 | 0.434 | $1.57 | |
POL | <0.01% | $0.006369 | 242.9299 | $1.55 | |
POL | <0.01% | $0.020795 | 71.4737 | $1.49 | |
POL | <0.01% | $0.001038 | 1,364.423 | $1.42 | |
POL | <0.01% | $0.007436 | 181.8 | $1.35 | |
POL | <0.01% | $0.070814 | 19.0422 | $1.35 | |
POL | <0.01% | $0.000241 | 5,563.2933 | $1.34 | |
POL | <0.01% | $0.03421 | 36.9185 | $1.26 | |
POL | <0.01% | $0.216674 | 5.8215 | $1.26 | |
POL | <0.01% | $0.000002 | 596,360.5162 | $1.24 | |
POL | <0.01% | $0.003251 | 382.7906 | $1.24 | |
POL | <0.01% | $0.005487 | 224.1301 | $1.23 | |
POL | <0.01% | $0.00132 | 918.4472 | $1.21 | |
POL | <0.01% | $0.000782 | 1,536.3703 | $1.2 | |
POL | <0.01% | $0.000537 | 2,228.3892 | $1.2 | |
POL | <0.01% | $18.77 | 0.0628 | $1.18 | |
POL | <0.01% | $0.520418 | 2.1738 | $1.13 | |
POL | <0.01% | $0.006816 | 165.5223 | $1.13 | |
POL | <0.01% | $217.73 | 0.00509189 | $1.11 | |
POL | <0.01% | $0.001766 | 623.3706 | $1.1 | |
POL | <0.01% | $0.014631 | 74.661 | $1.09 | |
POL | <0.01% | $0.016437 | 65.7437 | $1.08 | |
POL | <0.01% | $0.035159 | 30.2584 | $1.06 | |
POL | <0.01% | $0.931282 | 1.1062 | $1.03 | |
POL | <0.01% | $0.906219 | 1.0953 | $0.9925 | |
POL | <0.01% | $84,415.95 | 0.00001174 | $0.991 | |
POL | <0.01% | $0.001079 | 879.04 | $0.9482 | |
POL | <0.01% | $0.003295 | 276.7176 | $0.9119 | |
POL | <0.01% | $4,536.23 | 0.0001885 | $0.855 | |
POL | <0.01% | $0.254758 | 3.2731 | $0.8338 | |
POL | <0.01% | $137.34 | 0.00606689 | $0.8332 | |
POL | <0.01% | $0.000535 | 1,550.2591 | $0.8295 | |
POL | <0.01% | $0.000292 | 2,816.3685 | $0.8227 | |
POL | <0.01% | $0.000003 | 289,374.1037 | $0.8109 | |
POL | <0.01% | $0.000354 | 2,246.1796 | $0.7951 | |
POL | <0.01% | $0.196732 | 3.8971 | $0.7666 | |
POL | <0.01% | $0.000181 | 3,968.7571 | $0.7195 | |
POL | <0.01% | $39.37 | 0.0181 | $0.7116 | |
POL | <0.01% | $0.010203 | 63.06 | $0.6433 | |
POL | <0.01% | $0.001614 | 382.6018 | $0.6175 | |
POL | <0.01% | $0.080415 | 7.6154 | $0.6123 | |
POL | <0.01% | $0.000194 | 3,060 | $0.5927 | |
POL | <0.01% | $0.041519 | 14.2592 | $0.592 | |
POL | <0.01% | $0.020672 | 28.305 | $0.5851 | |
POL | <0.01% | $1.16 | 0.4605 | $0.5341 | |
POL | <0.01% | $0.084399 | 6.2631 | $0.5286 | |
POL | <0.01% | $0.102737 | 4.9071 | $0.5041 | |
POL | <0.01% | $0.577272 | 0.8701 | $0.5022 | |
POL | <0.01% | $19.32 | 0.0241 | $0.4647 | |
POL | <0.01% | $0.003681 | 124.364 | $0.4577 | |
POL | <0.01% | $0.998958 | 0.4333 | $0.4328 | |
POL | <0.01% | $0.002228 | 186.3661 | $0.4152 | |
POL | <0.01% | $31,721.02 | 0.00001297 | $0.4114 | |
POL | <0.01% | $24.86 | 0.0158 | $0.3931 | |
POL | <0.01% | $0.002152 | 176.8765 | $0.3806 | |
POL | <0.01% | $0.000136 | 2,711.7678 | $0.3685 | |
POL | <0.01% | $0.004298 | 85.4094 | $0.367 | |
POL | <0.01% | $0.005801 | 56.9009 | $0.33 | |
POL | <0.01% | $0.027405 | 11.25 | $0.3083 | |
POL | <0.01% | <$0.000001 | 60,000,000 | $0.306 | |
POL | <0.01% | $1.05 | 0.2884 | $0.3033 | |
POL | <0.01% | $0.004202 | 70.5009 | $0.2962 | |
POL | <0.01% | $0.31381 | 0.9384 | $0.2944 | |
POL | <0.01% | $1.38 | 0.2129 | $0.2938 | |
POL | <0.01% | <$0.000001 | 76,598,741.7732 | $0.291 | |
POL | <0.01% | $0.015136 | 19.011 | $0.2877 | |
POL | <0.01% | $0.046713 | 5.79 | $0.2704 | |
POL | <0.01% | $0.253985 | 1.0616 | $0.2696 | |
POL | <0.01% | $0.000765 | 325.8765 | $0.2491 | |
POL | <0.01% | $0.00218 | 108.5865 | $0.2367 | |
POL | <0.01% | $0.000728 | 319.6318 | $0.2326 | |
POL | <0.01% | $0.017022 | 13.4818 | $0.2294 | |
POL | <0.01% | $0.002666 | 84.3869 | $0.2249 | |
POL | <0.01% | $0.005905 | 30.9958 | $0.183 | |
POL | <0.01% | $0.002339 | 77.3362 | $0.1809 | |
POL | <0.01% | <$0.000001 | 64,423,678.7135 | $0.1803 | |
POL | <0.01% | $0.011056 | 15.7112 | $0.1736 | |
POL | <0.01% | $0.120096 | 1.4125 | $0.1696 | |
POL | <0.01% | $0.004441 | 37.8156 | $0.1679 | |
POL | <0.01% | $0.000012 | 14,277.1443 | $0.1673 | |
POL | <0.01% | $0.275479 | 0.5933 | $0.1634 | |
POL | <0.01% | $0.000906 | 168.8757 | $0.153 | |
POL | <0.01% | $0.003429 | 43.1355 | $0.1479 | |
POL | <0.01% | $0.063453 | 2.2709 | $0.144 | |
POL | <0.01% | $0.116243 | 1.2227 | $0.1421 | |
POL | <0.01% | $0.001419 | 99.8516 | $0.1417 | |
POL | <0.01% | $0.001785 | 77.7197 | $0.1387 | |
POL | <0.01% | $0.00018 | 747.2364 | $0.1345 | |
POL | <0.01% | $0.032579 | 3.996 | $0.1301 | |
POL | <0.01% | $0.056236 | 2.2326 | $0.1255 | |
POL | <0.01% | $0.999911 | 0.1253 | $0.1253 | |
POL | <0.01% | $0.001992 | 61.8109 | $0.1231 | |
POL | <0.01% | $0.011989 | 10.1997 | $0.1222 | |
POL | <0.01% | $0.63041 | 0.1924 | $0.1212 | |
POL | <0.01% | $0.000753 | 155.6267 | $0.1172 | |
POL | <0.01% | $14.78 | 0.00757738 | $0.1119 | |
POL | <0.01% | <$0.000001 | 25,233,095.3825 | $0.111 | |
POL | <0.01% | $0.00101 | 108.146 | $0.1092 | |
POL | <0.01% | $0.757461 | 0.1407 | $0.1065 | |
POL | <0.01% | $0.001412 | 74.8589 | $0.1057 | |
POL | <0.01% | $0.169876 | 0.6006 | $0.102 | |
POL | <0.01% | $0.017698 | 5.6564 | $0.1001 | |
ARB | 7.70% | $1,571.41 | 7.9074 | $12,425.79 | |
ARB | 5.43% | $0.999997 | 8,761.1677 | $8,761.14 | |
ARB | 2.76% | $0.296945 | 15,009.2882 | $4,456.93 | |
ARB | 1.02% | $1,568.61 | 1.0455 | $1,639.93 | |
ARB | 0.21% | $1 | 339.8778 | $339.88 | |
ARB | 0.01% | $0.000031 | 638,618.6305 | $20.06 | |
ARB | <0.01% | $3.53 | 3.6116 | $12.75 | |
ARB | <0.01% | $0.000001 | 18,982,601.956 | $12.21 | |
ARB | <0.01% | $0.000085 | 138,952.522 | $11.76 | |
ARB | <0.01% | $0.265979 | 32.6424 | $8.68 | |
ARB | <0.01% | $0.601256 | 14.1029 | $8.48 | |
ARB | <0.01% | $83,981 | 0.00008965 | $7.53 | |
ARB | <0.01% | $0.080324 | 81.4311 | $6.54 | |
ARB | <0.01% | $0.019472 | 335.6832 | $6.54 | |
ARB | <0.01% | $1 | 6.1449 | $6.14 | |
ARB | <0.01% | $0.125012 | 46.6938 | $5.84 | |
ARB | <0.01% | $0.576225 | 9.8555 | $5.68 | |
ARB | <0.01% | $2.45 | 2.2537 | $5.52 | |
ARB | <0.01% | $0.00439 | 1,179.1321 | $5.18 | |
ARB | <0.01% | $0.026844 | 191.3452 | $5.14 | |
ARB | <0.01% | $0.138786 | 34.7745 | $4.83 | |
ARB | <0.01% | $0.004571 | 1,009.2058 | $4.61 | |
ARB | <0.01% | $5.16 | 0.8929 | $4.61 | |
ARB | <0.01% | $0.047458 | 89.8965 | $4.27 | |
ARB | <0.01% | $0.000009 | 393,506.457 | $3.73 | |
ARB | <0.01% | $3.05 | 1.009 | $3.08 | |
ARB | <0.01% | $12.91 | 0.2364 | $3.05 | |
ARB | <0.01% | $0.05383 | 51.6911 | $2.78 | |
ARB | <0.01% | $0.563776 | 4.34 | $2.45 | |
ARB | <0.01% | $1,643.52 | 0.00142853 | $2.35 | |
ARB | <0.01% | $84,692 | 0.00002665 | $2.26 | |
ARB | <0.01% | $0.731337 | 2.961 | $2.17 | |
ARB | <0.01% | $0.000113 | 18,927.414 | $2.14 | |
ARB | <0.01% | $0.999971 | 1.9183 | $1.92 | |
ARB | <0.01% | $1.65 | 1.0978 | $1.81 | |
ARB | <0.01% | $1.38 | 1.1984 | $1.65 | |
ARB | <0.01% | $83,937 | 0.00001949 | $1.64 | |
ARB | <0.01% | $0.000007 | 212,892.1964 | $1.55 | |
ARB | <0.01% | $0.467059 | 3.2415 | $1.51 | |
ARB | <0.01% | $0.078942 | 18.6469 | $1.47 | |
ARB | <0.01% | $2.64 | 0.5496 | $1.45 | |
ARB | <0.01% | $84,036 | 0.00001612 | $1.35 | |
ARB | <0.01% | $0.020552 | 57.7446 | $1.19 | |
ARB | <0.01% | $0.002021 | 555.1622 | $1.12 | |
ARB | <0.01% | $3.53 | 0.3104 | $1.1 | |
ARB | <0.01% | $0.431293 | 2.257 | $0.9734 | |
ARB | <0.01% | $4.04 | 0.2317 | $0.9358 | |
ARB | <0.01% | $1,570.84 | 0.00050115 | $0.7872 | |
ARB | <0.01% | <$0.000001 | 25,388,912.1971 | $0.7388 | |
ARB | <0.01% | $1.92 | 0.3784 | $0.7266 | |
ARB | <0.01% | $137.26 | 0.00481791 | $0.6613 | |
ARB | <0.01% | $1 | 0.5929 | $0.5929 | |
ARB | <0.01% | $0.018516 | 31.8779 | $0.5902 | |
ARB | <0.01% | <$0.000001 | 5,608,435,574.7905 | $0.5608 | |
ARB | <0.01% | $0.831924 | 0.6654 | $0.5535 | |
ARB | <0.01% | $0.000419 | 1,127.7062 | $0.4723 | |
ARB | <0.01% | $0.068282 | 6.9043 | $0.4714 | |
ARB | <0.01% | $0.010785 | 41.3171 | $0.4456 | |
ARB | <0.01% | $0.000001 | 851,848.4097 | $0.4408 | |
ARB | <0.01% | $0.187566 | 2.2416 | $0.4204 | |
ARB | <0.01% | $0.009861 | 40.274 | $0.3971 | |
ARB | <0.01% | $0.637432 | 0.615 | $0.392 | |
ARB | <0.01% | $0.003211 | 117.323 | $0.3766 | |
ARB | <0.01% | $0.072454 | 5.0341 | $0.3647 | |
ARB | <0.01% | $0.000024 | 14,118.5113 | $0.3413 | |
ARB | <0.01% | $0.001767 | 186.9097 | $0.3302 | |
ARB | <0.01% | $0.0256 | 11.7857 | $0.3017 | |
ARB | <0.01% | $0.000702 | 403.7482 | $0.2832 | |
ARB | <0.01% | $1.82 | 0.1345 | $0.2447 | |
ARB | <0.01% | $0.000004 | 56,838.3259 | $0.2336 | |
ARB | <0.01% | $0.007774 | 28.7207 | $0.2232 | |
ARB | <0.01% | $0.000417 | 466.8607 | $0.1947 | |
ARB | <0.01% | $0.001433 | 122.6054 | $0.1757 | |
ARB | <0.01% | $0.021902 | 7.4108 | $0.1623 | |
ARB | <0.01% | $379.6 | 0.00040102 | $0.1522 | |
ARB | <0.01% | $14.15 | 0.00984186 | $0.1392 | |
ARB | <0.01% | $6.39 | 0.021 | $0.1343 | |
ARB | <0.01% | $0.004981 | 26.8793 | $0.1338 | |
ARB | <0.01% | <$0.000001 | 651,507,906.0837 | $0.1303 | |
ARB | <0.01% | $0.030233 | 4.1307 | $0.1248 | |
ARB | <0.01% | $0.000529 | 234.8096 | $0.1241 | |
ARB | <0.01% | $0.000069 | 1,603.0908 | $0.1104 | |
ARB | <0.01% | $0.186364 | 0.5818 | $0.1084 | |
ARB | <0.01% | $0.167177 | 0.6218 | $0.1039 | |
ARB | <0.01% | $0.013265 | 7.7088 | $0.1022 | |
ARB | <0.01% | $0.159543 | 0.6285 | $0.1002 | |
BASE | 3.15% | $1 | 5,089.755 | $5,089.76 | |
BASE | 3.01% | $1,568.53 | 3.1008 | $4,863.62 | |
BASE | 1.71% | $0.019047 | 145,046.4228 | $2,762.75 | |
BASE | 0.20% | $0.550609 | 580.9791 | $319.89 | |
BASE | 0.08% | $0.221588 | 575.2261 | $127.46 | |
BASE | 0.08% | $0.00872 | 14,591.2955 | $127.23 | |
BASE | 0.06% | $0.000353 | 255,966.4284 | $90.47 | |
BASE | 0.05% | $0.024941 | 3,358.9742 | $83.78 | |
BASE | 0.05% | $0.996753 | 76.1446 | $75.9 | |
BASE | 0.05% | $0.003656 | 20,002.4972 | $73.14 | |
BASE | 0.04% | $0.000822 | 72,625.7709 | $59.7 | |
BASE | 0.04% | $83,937 | 0.00068578 | $57.56 | |
BASE | 0.03% | $0.008639 | 5,791.7623 | $50.04 | |
BASE | 0.03% | $0.006597 | 7,175.4414 | $47.34 | |
BASE | 0.03% | $0.000029 | 1,639,989.8742 | $47.15 | |
BASE | 0.03% | $0.397744 | 102.9223 | $40.94 | |
BASE | 0.02% | $0.000494 | 78,291.8907 | $38.69 | |
BASE | 0.02% | $0.001137 | 33,895.893 | $38.54 | |
BASE | 0.02% | $0.039615 | 957.0864 | $37.92 | |
BASE | 0.02% | $1 | 33.577 | $33.58 | |
BASE | 0.02% | $0.002453 | 13,603.1805 | $33.37 | |
BASE | 0.02% | $0.000178 | 174,741 | $31.16 | |
BASE | 0.02% | $0.035096 | 832.107 | $29.2 | |
BASE | 0.02% | $0.033801 | 853.8773 | $28.86 | |
BASE | 0.02% | $0.896812 | 30.7078 | $27.54 | |
BASE | 0.02% | $0.00416 | 6,580.9305 | $27.38 | |
BASE | 0.02% | $0.187147 | 144.7298 | $27.09 | |
BASE | 0.02% | $0.00072 | 37,217.9403 | $26.78 | |
BASE | 0.02% | $0.232851 | 114.2014 | $26.59 | |
BASE | 0.02% | $0.002636 | 9,870.2508 | $26.02 | |
BASE | 0.02% | $0.010317 | 2,518.9249 | $25.99 | |
BASE | 0.02% | $1,571.41 | 0.016 | $25.09 | |
BASE | 0.02% | $0.000065 | 379,656.6393 | $24.65 | |
BASE | 0.01% | $0.742716 | 30.3524 | $22.54 | |
BASE | 0.01% | $0.04477 | 498.2453 | $22.31 | |
BASE | 0.01% | $0.000174 | 122,040.3707 | $21.24 | |
BASE | 0.01% | $0.081369 | 228.2054 | $18.57 | |
BASE | 0.01% | <$0.000001 | 1,151,243,179.0628 | $17.73 | |
BASE | 0.01% | $0.575929 | 29.4656 | $16.97 | |
BASE | 0.01% | $0.000002 | 9,858,803.4811 | $16.76 | |
BASE | 0.01% | $0.000369 | 44,975.0008 | $16.58 | |
BASE | <0.01% | $0.000224 | 68,620.6695 | $15.38 | |
BASE | <0.01% | $0.002447 | 6,068.789 | $14.85 | |
BASE | <0.01% | $2.18 | 6.5191 | $14.21 | |
BASE | <0.01% | $0.034925 | 400.4643 | $13.99 | |
BASE | <0.01% | $0.002731 | 5,118.9656 | $13.98 | |
BASE | <0.01% | $0.249783 | 54.7589 | $13.68 | |
BASE | <0.01% | $0.009864 | 1,296.2198 | $12.79 | |
BASE | <0.01% | $0.032139 | 390.8424 | $12.56 | |
BASE | <0.01% | $0.000141 | 87,273.9124 | $12.31 | |
BASE | <0.01% | $0.000026 | 462,983.7602 | $11.96 | |
BASE | <0.01% | $0.003372 | 3,464.4163 | $11.68 | |
BASE | <0.01% | $0.44399 | 25.9735 | $11.53 | |
BASE | <0.01% | $0.032896 | 347.5005 | $11.43 | |
BASE | <0.01% | $0.007429 | 1,535.2198 | $11.41 | |
BASE | <0.01% | $0.003607 | 3,027.0987 | $10.92 | |
BASE | <0.01% | $0.000469 | 22,729.4765 | $10.66 | |
BASE | <0.01% | $0.001199 | 8,841.0308 | $10.6 | |
BASE | <0.01% | $0.00016 | 62,108.518 | $9.95 | |
BASE | <0.01% | $0.000321 | 30,763.9504 | $9.88 | |
BASE | <0.01% | $0.000005 | 1,903,883.699 | $9.84 | |
BASE | <0.01% | $0.009903 | 945.6688 | $9.36 | |
BASE | <0.01% | $0.001617 | 5,722.8372 | $9.25 | |
BASE | <0.01% | $0.088639 | 102.6096 | $9.1 | |
BASE | <0.01% | $0.000004 | 2,003,580.3411 | $8.9 | |
BASE | <0.01% | $36.85 | 0.2325 | $8.57 | |
BASE | <0.01% | $0.000117 | 73,030.5727 | $8.51 | |
BASE | <0.01% | $0.000101 | 83,593.8866 | $8.47 | |
BASE | <0.01% | $0.000057 | 143,587.3486 | $8.25 | |
BASE | <0.01% | $0.00001 | 832,823.1688 | $8.14 | |
BASE | <0.01% | $0.014089 | 555.7213 | $7.83 | |
BASE | <0.01% | $0.160637 | 47.7802 | $7.68 | |
BASE | <0.01% | <$0.000001 | 5,417,557,029.1894 | $7.58 | |
BASE | <0.01% | $0.001327 | 5,681.1663 | $7.54 | |
BASE | <0.01% | $0.001338 | 5,582.3431 | $7.47 | |
BASE | <0.01% | $0.000078 | 91,223.5812 | $7.14 | |
BASE | <0.01% | $0.000003 | 2,159,346.3069 | $6.95 | |
BASE | <0.01% | $0.000249 | 27,592.2768 | $6.87 | |
BASE | <0.01% | <$0.000001 | 29,269,102.5602 | $6.71 | |
BASE | <0.01% | <$0.000001 | 4,323,006,764.2335 | $6.48 | |
BASE | <0.01% | $0.000383 | 16,336.0241 | $6.25 | |
BASE | <0.01% | $0.000013 | 434,716.7441 | $5.86 | |
BASE | <0.01% | $0.000001 | 5,152,419.2574 | $5.82 | |
BASE | <0.01% | $0.005951 | 971.0488 | $5.78 | |
BASE | <0.01% | $0.000395 | 14,622.7567 | $5.77 | |
BASE | <0.01% | $0.000705 | 8,172.4504 | $5.76 | |
BASE | <0.01% | $0.007425 | 773.2002 | $5.74 | |
BASE | <0.01% | $0.000017 | 345,210.4937 | $5.72 | |
BASE | <0.01% | $0.00397 | 1,411.2394 | $5.6 | |
BASE | <0.01% | $0.017795 | 307.9527 | $5.48 | |
BASE | <0.01% | $0.003504 | 1,561.0247 | $5.47 | |
BASE | <0.01% | $0.00001 | 511,069.1232 | $5.28 | |
BASE | <0.01% | $0.000005 | 1,070,450.7873 | $5.23 | |
BASE | <0.01% | $0.000052 | 100,538.579 | $5.2 | |
BASE | <0.01% | $0.000026 | 194,370.4645 | $5.09 | |
BASE | <0.01% | $0.999429 | 4.9803 | $4.98 | |
BASE | <0.01% | $0.002072 | 2,330.8719 | $4.83 | |
BASE | <0.01% | $0.050797 | 94.8967 | $4.82 | |
BASE | <0.01% | $0.072454 | 60.7383 | $4.4 | |
BASE | <0.01% | $0.021886 | 199.5706 | $4.37 | |
BASE | <0.01% | $0.42591 | 10.2265 | $4.36 | |
BASE | <0.01% | $0.000353 | 12,317.6252 | $4.35 | |
BASE | <0.01% | $0.998116 | 4.1994 | $4.19 | |
BASE | <0.01% | <$0.000001 | 255,017,399.6978 | $3.88 | |
BASE | <0.01% | $0.000039 | 97,957.6648 | $3.84 | |
BASE | <0.01% | $0.091798 | 41.65 | $3.82 | |
BASE | <0.01% | $0.034819 | 107.343 | $3.74 | |
BASE | <0.01% | $0.000006 | 625,107.3823 | $3.61 | |
BASE | <0.01% | $0.000615 | 5,814.6042 | $3.57 | |
BASE | <0.01% | $0.014707 | 242.8311 | $3.57 | |
BASE | <0.01% | $0.000038 | 92,886.7489 | $3.57 | |
BASE | <0.01% | $5.06 | 0.7055 | $3.57 | |
BASE | <0.01% | $0.000775 | 4,499.563 | $3.49 | |
BASE | <0.01% | $0.005981 | 558.3855 | $3.34 | |
BASE | <0.01% | $0.000153 | 20,716.096 | $3.17 | |
BASE | <0.01% | <$0.000001 | 52,900,703.8396 | $3.16 | |
BASE | <0.01% | <$0.000001 | 3,942,986,634.4134 | $3.15 | |
BASE | <0.01% | $0.020575 | 148.1126 | $3.05 | |
BASE | <0.01% | <$0.000001 | 7,019,960.2673 | $3.04 | |
BASE | <0.01% | $0.000285 | 10,391.1308 | $2.96 | |
BASE | <0.01% | $0.000009 | 323,932.8718 | $2.9 | |
BASE | <0.01% | $0.237029 | 12.0745 | $2.86 | |
BASE | <0.01% | $0.050386 | 55.1575 | $2.78 | |
BASE | <0.01% | $0.000212 | 13,109.7328 | $2.78 | |
BASE | <0.01% | $0.010668 | 257.407 | $2.75 | |
BASE | <0.01% | $0.17843 | 15.1803 | $2.71 | |
BASE | <0.01% | $0.006932 | 381.1084 | $2.64 | |
BASE | <0.01% | $0.000779 | 3,385.1543 | $2.64 | |
BASE | <0.01% | $0.039574 | 65.7867 | $2.6 | |
BASE | <0.01% | $0.129794 | 20.0193 | $2.6 | |
BASE | <0.01% | $0.001299 | 1,930.7365 | $2.51 | |
BASE | <0.01% | $0.001019 | 2,421.289 | $2.47 | |
BASE | <0.01% | $0.000515 | 4,778.5148 | $2.46 | |
BASE | <0.01% | $0.002605 | 939.8761 | $2.45 | |
BASE | <0.01% | $0.000481 | 5,045.3468 | $2.43 | |
BASE | <0.01% | $0.000002 | 1,190,359.5803 | $2.4 | |
BASE | <0.01% | $0.000021 | 103,826.8203 | $2.15 | |
BASE | <0.01% | $0.00099 | 2,163.5562 | $2.14 | |
BASE | <0.01% | $0.00004 | 51,864.9307 | $2.1 | |
BASE | <0.01% | $0.000018 | 113,095.6936 | $2.06 | |
BASE | <0.01% | $0.046306 | 44.3269 | $2.05 | |
BASE | <0.01% | $0.000146 | 13,980.0511 | $2.04 | |
BASE | <0.01% | $0.01561 | 125.9201 | $1.97 | |
BASE | <0.01% | <$0.000001 | 4,930,009.1443 | $1.95 | |
BASE | <0.01% | $1,643.52 | 0.0011788 | $1.94 | |
BASE | <0.01% | $0.000042 | 45,035.7331 | $1.91 | |
BASE | <0.01% | $0.000511 | 3,266.7502 | $1.67 | |
BASE | <0.01% | $0.020314 | 80.3958 | $1.63 | |
BASE | <0.01% | $0.000083 | 19,527.9861 | $1.63 | |
BASE | <0.01% | $0.001098 | 1,463.9055 | $1.61 | |
BASE | <0.01% | $0.007342 | 211.7973 | $1.55 | |
BASE | <0.01% | $0.000018 | 84,468.8124 | $1.53 | |
BASE | <0.01% | $0.000052 | 29,428.8661 | $1.52 | |
BASE | <0.01% | $0.004677 | 324.9231 | $1.52 | |
BASE | <0.01% | $0.004384 | 335.2797 | $1.47 | |
BASE | <0.01% | <$0.000001 | 759,331,534.9711 | $1.44 | |
BASE | <0.01% | $0.000146 | 9,875.786 | $1.44 | |
BASE | <0.01% | $0.018176 | 79.005 | $1.44 | |
BASE | <0.01% | $0.000009 | 160,875.2699 | $1.41 | |
BASE | <0.01% | $0.00029 | 4,692.3864 | $1.36 | |
BASE | <0.01% | $0.000024 | 55,600.699 | $1.33 | |
BASE | <0.01% | $2.45 | 0.5397 | $1.32 | |
BASE | <0.01% | $0.082535 | 15.9814 | $1.32 | |
BASE | <0.01% | $0.01559 | 84.0238 | $1.31 | |
BASE | <0.01% | $0.001885 | 682.504 | $1.29 | |
BASE | <0.01% | $0.002279 | 551.3514 | $1.26 | |
BASE | <0.01% | $0.000153 | 7,715.6189 | $1.18 | |
BASE | <0.01% | $0.000225 | 5,253.2015 | $1.18 | |
BASE | <0.01% | $0.00117 | 1,008.1564 | $1.18 | |
BASE | <0.01% | <$0.000001 | 31,837,869.7244 | $1.13 | |
BASE | <0.01% | $0.073898 | 14.3655 | $1.06 | |
BASE | <0.01% | $0.009416 | 109.0784 | $1.03 | |
BASE | <0.01% | $0.189119 | 5.239 | $0.9907 | |
BASE | <0.01% | $0.015082 | 65.274 | $0.9844 | |
BASE | <0.01% | $0.000514 | 1,888.721 | $0.9701 | |
BASE | <0.01% | $0.000024 | 40,644.6903 | $0.9612 | |
BASE | <0.01% | $0.000015 | 65,109.7865 | $0.9466 | |
BASE | <0.01% | $0.00012 | 7,724.2204 | $0.9238 | |
BASE | <0.01% | $0.00178 | 516.8157 | $0.9197 | |
BASE | <0.01% | $0.000008 | 118,983.896 | $0.909 | |
BASE | <0.01% | $0.000095 | 9,323.6121 | $0.8814 | |
BASE | <0.01% | $0.001284 | 683.2262 | $0.8771 | |
BASE | <0.01% | $0.00012 | 7,152.9199 | $0.8607 | |
BASE | <0.01% | $0.999965 | 0.8578 | $0.8577 | |
BASE | <0.01% | $0.263783 | 3.1393 | $0.828 | |
BASE | <0.01% | $0.000005 | 150,662.1692 | $0.818 | |
BASE | <0.01% | <$0.000001 | 1,615,091,559.9791 | $0.8075 | |
BASE | <0.01% | $0.000001 | 546,893.316 | $0.8039 | |
BASE | <0.01% | $0.000021 | 38,232.4893 | $0.7909 | |
BASE | <0.01% | $0.036645 | 21.0466 | $0.7712 | |
BASE | <0.01% | $0.000007 | 109,190.178 | $0.7566 | |
BASE | <0.01% | $1.35 | 0.5515 | $0.7444 | |
BASE | <0.01% | $0.002773 | 260.6676 | $0.7228 | |
BASE | <0.01% | $0.001156 | 600.2388 | $0.6936 | |
BASE | <0.01% | $0.000011 | 61,620.2007 | $0.6753 | |
BASE | <0.01% | $0.008048 | 82.3485 | $0.6627 | |
BASE | <0.01% | $0.006403 | 100.9954 | $0.6466 | |
BASE | <0.01% | $0.001528 | 413.4982 | $0.6318 | |
BASE | <0.01% | $0.000237 | 2,660.6276 | $0.63 | |
BASE | <0.01% | $0.000483 | 1,277.3688 | $0.6173 | |
BASE | <0.01% | $0.000053 | 11,520.594 | $0.6048 | |
BASE | <0.01% | $0.000008 | 70,001.4635 | $0.5901 | |
BASE | <0.01% | $0.001546 | 380.5413 | $0.5881 | |
BASE | <0.01% | $142.21 | 0.00411678 | $0.5854 | |
BASE | <0.01% | $0.000158 | 3,613.5259 | $0.5706 | |
BASE | <0.01% | $0.000111 | 5,074.5412 | $0.5621 | |
BASE | <0.01% | $0.00397 | 136.4356 | $0.5416 | |
BASE | <0.01% | $0.000309 | 1,723.5823 | $0.5331 | |
BASE | <0.01% | $0.308224 | 1.6944 | $0.5222 | |
BASE | <0.01% | $0.000636 | 817.1515 | $0.52 | |
BASE | <0.01% | $0.013049 | 39.1499 | $0.5108 | |
BASE | <0.01% | $0.001009 | 498.0291 | $0.5026 | |
BASE | <0.01% | $0.000028 | 16,670.7873 | $0.4697 | |
BASE | <0.01% | $0.999914 | 0.4672 | $0.4671 | |
BASE | <0.01% | $0.000279 | 1,666.1311 | $0.4652 | |
BASE | <0.01% | $0.000032 | 14,307.1862 | $0.4632 | |
BASE | <0.01% | $0.000004 | 124,059.3699 | $0.4524 | |
BASE | <0.01% | $0.023401 | 18.871 | $0.4415 | |
BASE | <0.01% | $0.000196 | 2,182.3199 | $0.4276 | |
BASE | <0.01% | $0.00042 | 997.0018 | $0.4183 | |
BASE | <0.01% | $0.000034 | 11,668.1525 | $0.397 | |
BASE | <0.01% | $0.569861 | 0.6834 | $0.3894 | |
BASE | <0.01% | $0.000367 | 1,032.931 | $0.3786 | |
BASE | <0.01% | $0.000061 | 6,201.725 | $0.3776 | |
BASE | <0.01% | $0.000065 | 5,785.9206 | $0.3756 | |
BASE | <0.01% | $0.005431 | 68.8796 | $0.374 | |
BASE | <0.01% | $1.01 | 0.3706 | $0.3731 | |
BASE | <0.01% | $0.000014 | 26,297.203 | $0.3715 | |
BASE | <0.01% | $0.000022 | 17,038.7299 | $0.3707 | |
BASE | <0.01% | $0.000025 | 14,746.7322 | $0.3612 | |
BASE | <0.01% | $0.002478 | 141.2456 | $0.35 | |
BASE | <0.01% | $0.000011 | 31,017.1588 | $0.3483 | |
BASE | <0.01% | $0.003448 | 98.8026 | $0.3406 | |
BASE | <0.01% | $2.91 | 0.1157 | $0.3366 | |
BASE | <0.01% | $0.000049 | 6,895.3865 | $0.335 | |
BASE | <0.01% | $0.002537 | 130.122 | $0.3301 | |
BASE | <0.01% | $1,727.36 | 0.00018079 | $0.3122 | |
BASE | <0.01% | $0.000437 | 680.15 | $0.2972 | |
BASE | <0.01% | $0.017812 | 16.654 | $0.2966 | |
BASE | <0.01% | $0.254122 | 1.1559 | $0.2937 | |
BASE | <0.01% | $0.016186 | 18.054 | $0.2922 | |
BASE | <0.01% | $0.000928 | 300 | $0.2783 | |
BASE | <0.01% | $0.171641 | 1.6139 | $0.277 | |
BASE | <0.01% | $0.000073 | 3,798.1365 | $0.2758 | |
BASE | <0.01% | $0.007591 | 34.5177 | $0.262 | |
BASE | <0.01% | $0.000454 | 490.148 | $0.2225 | |
BASE | <0.01% | $0.000012 | 19,095.2551 | $0.2199 | |
BASE | <0.01% | $0.000001 | 248,792.4336 | $0.2187 | |
BASE | <0.01% | $0.005405 | 40.427 | $0.2185 | |
BASE | <0.01% | $0.965871 | 0.2227 | $0.2151 | |
BASE | <0.01% | $0.001507 | 142.5664 | $0.2148 | |
BASE | <0.01% | $2.43 | 0.0825 | $0.2004 | |
BASE | <0.01% | <$0.000001 | 2,467,624.7935 | $0.1954 | |
BASE | <0.01% | $0.007376 | 26.3835 | $0.1946 | |
BASE | <0.01% | $0.000011 | 16,496.6336 | $0.1781 | |
BASE | <0.01% | $0.000257 | 683.1668 | $0.1752 | |
BASE | <0.01% | $0.000007 | 24,215.9268 | $0.1729 | |
BASE | <0.01% | $0.000473 | 343.5277 | $0.1624 | |
BASE | <0.01% | $0.016457 | 9.731 | $0.1601 | |
BASE | <0.01% | $0.000155 | 1,021.7839 | $0.1583 | |
BASE | <0.01% | <$0.000001 | 2,334,249.601 | $0.1568 | |
BASE | <0.01% | $0.000072 | 2,154.8357 | $0.1549 | |
BASE | <0.01% | <$0.000001 | 4,062,446.4458 | $0.1547 | |
BASE | <0.01% | $0.007028 | 21.87 | $0.1537 | |
BASE | <0.01% | $0.000081 | 1,894.0428 | $0.1524 | |
BASE | <0.01% | $0.000004 | 33,786.2071 | $0.1503 | |
BASE | <0.01% | <$0.000001 | 3,180,991.2482 | $0.1463 | |
BASE | <0.01% | $0.000024 | 5,917.9209 | $0.1405 | |
BASE | <0.01% | $0.000009 | 15,196.0146 | $0.1368 | |
BASE | <0.01% | $0.000006 | 22,656.0034 | $0.1336 | |
BASE | <0.01% | $0.000106 | 1,234.0888 | $0.1313 | |
BASE | <0.01% | $0.015696 | 8.1846 | $0.1284 | |
BASE | <0.01% | <$0.000001 | 1,750,040.6646 | $0.1235 | |
BASE | <0.01% | $0.001312 | 93.5412 | $0.1227 | |
BASE | <0.01% | $0.270279 | 0.4134 | $0.1117 | |
BASE | <0.01% | $0.01597 | 6.932 | $0.1107 | |
BASE | <0.01% | $0.08916 | 1.1864 | $0.1057 | |
BASE | <0.01% | $0.000024 | 4,366.4632 | $0.1026 | |
BLAST | 0.93% | $1,568.57 | 0.9608 | $1,507.08 | |
BLAST | 0.79% | $0.002985 | 428,669.7499 | $1,279.78 | |
BLAST | 0.54% | $0.999117 | 872.9599 | $872.19 | |
BLAST | <0.01% | $0.008203 | 614.34 | $5.04 | |
BLAST | <0.01% | $0.000325 | 12,008.4736 | $3.9 | |
BLAST | <0.01% | <$0.000001 | 1,452,660,170.6721 | $2.47 | |
BLAST | <0.01% | $0.000012 | 144,204.513 | $1.79 | |
BLAST | <0.01% | $0.001072 | 1,627.8372 | $1.75 | |
BLAST | <0.01% | $0.000057 | 22,724.3997 | $1.29 | |
BLAST | <0.01% | <$0.000001 | 10,993,440,570.391 | $1.1 | |
BLAST | <0.01% | $0.000302 | 1,419.4119 | $0.428 | |
BLAST | <0.01% | $0.004303 | 68.0513 | $0.2928 | |
BLAST | <0.01% | $0.000134 | 1,490.4663 | $0.1999 | |
BLAST | <0.01% | $1,571.41 | 0.00012639 | $0.1986 | |
BLAST | <0.01% | <$0.000001 | 6,044,928.5329 | $0.1958 | |
BLAST | <0.01% | $0.000743 | 135.7399 | $0.1008 | |
AVAX | 1.04% | $0.999947 | 1,678.055 | $1,677.97 | |
AVAX | 0.27% | $19.25 | 22.3046 | $429.36 | |
AVAX | 0.10% | $0.999966 | 169.1195 | $169.11 | |
AVAX | 0.08% | $0.999947 | 135.3687 | $135.36 | |
AVAX | 0.04% | $0.005947 | 10,559.4764 | $62.79 | |
AVAX | 0.02% | $0.000003 | 12,166,162.0732 | $39.91 | |
AVAX | 0.01% | $0.009434 | 2,042.1517 | $19.27 | |
AVAX | 0.01% | $0.001818 | 9,804.4028 | $17.83 | |
AVAX | 0.01% | $0.242 | 73.3093 | $17.74 | |
AVAX | <0.01% | $0.076177 | 147.042 | $11.2 | |
AVAX | <0.01% | $0.024622 | 305.0274 | $7.51 | |
AVAX | <0.01% | $0.000001 | 11,908,839.2356 | $7.03 | |
AVAX | <0.01% | <$0.000001 | 635,867,147.1602 | $4.07 | |
AVAX | <0.01% | $0.007891 | 382.4024 | $3.02 | |
AVAX | <0.01% | $0.12685 | 15.634 | $1.98 | |
AVAX | <0.01% | $12.9 | 0.1423 | $1.84 | |
AVAX | <0.01% | $0.00006 | 28,530.7794 | $1.71 | |
AVAX | <0.01% | $0.166962 | 6.673 | $1.11 | |
AVAX | <0.01% | $155.08 | 0.00672696 | $1.04 | |
AVAX | <0.01% | $23.15 | 0.0406 | $0.9393 | |
AVAX | <0.01% | $0.008042 | 95.37 | $0.7669 | |
AVAX | <0.01% | $0.000737 | 994.4961 | $0.7326 | |
AVAX | <0.01% | $0.024218 | 30 | $0.7265 | |
AVAX | <0.01% | $0.999966 | 0.7199 | $0.7198 | |
AVAX | <0.01% | <$0.000001 | 86,037,938.6272 | $0.585 | |
AVAX | <0.01% | $0.008292 | 59.7046 | $0.495 | |
AVAX | <0.01% | $0.001288 | 314.7119 | $0.4053 | |
AVAX | <0.01% | $14.86 | 0.0197 | $0.2922 | |
AVAX | <0.01% | $0.000076 | 3,383.4 | $0.2571 | |
AVAX | <0.01% | $1,340.25 | 0.00018687 | $0.2504 | |
AVAX | <0.01% | $19.26 | 0.0119 | $0.2285 | |
AVAX | <0.01% | $0.000239 | 753.8702 | $0.1802 | |
AVAX | <0.01% | $0.100252 | 1.4354 | $0.1438 | |
SCROLL | 0.16% | $1,569.25 | 0.1652 | $259.23 | |
SCROLL | 0.10% | $1 | 161.5284 | $161.53 | |
SCROLL | 0.08% | $0.999947 | 122.3717 | $122.37 | |
SCROLL | 0.01% | $0.238703 | 69.5593 | $16.6 | |
SCROLL | <0.01% | $1,889.51 | 0.00176922 | $3.34 | |
SCROLL | <0.01% | $84,019.8 | 0.00002657 | $2.23 | |
SCROLL | <0.01% | $1 | 0.1825 | $0.1825 | |
SCROLL | <0.01% | $0.017099 | 8.6097 | $0.1472 | |
LINEA | 0.15% | $1,569.25 | 0.1588 | $249.24 | |
LINEA | 0.02% | $0.999992 | 30.5784 | $30.58 | |
LINEA | 0.02% | $0.999993 | 30.0116 | $30.01 | |
LINEA | <0.01% | $0.99476 | 9.4662 | $9.42 | |
LINEA | <0.01% | $1,644.15 | 0.00457732 | $7.53 | |
LINEA | <0.01% | $1 | 3.8343 | $3.83 | |
LINEA | <0.01% | $0.001307 | 1,372.0141 | $1.79 | |
LINEA | <0.01% | $1,571.62 | 0.00095119 | $1.49 | |
LINEA | <0.01% | $0.000081 | 18,378.0215 | $1.48 | |
LINEA | <0.01% | $0.013468 | 77.9795 | $1.05 | |
LINEA | <0.01% | $84,053 | 0.00001098 | $0.9229 | |
LINEA | <0.01% | $1,640.57 | 0.00053286 | $0.8741 | |
LINEA | <0.01% | $0.007773 | 47.3847 | $0.3683 | |
LINEA | <0.01% | $0.000176 | 1,847.8779 | $0.3245 | |
LINEA | <0.01% | $0.020435 | 13.8594 | $0.2832 | |
LINEA | <0.01% | $1,885.4 | 0.00007351 | $0.1386 | |
OPBNB | 0.08% | $589.49 | 0.2117 | $124.8 | |
OPBNB | 0.05% | $1 | 86.2267 | $86.31 | |
BSC | 0.03% | $0.999994 | 54.5379 | $54.54 | |
BSC | <0.01% | $589.44 | 0.0205 | $12.07 | |
WORLD | 0.03% | $1,569.56 | 0.0318 | $49.91 | |
WORLD | <0.01% | $0.741673 | 12.8972 | $9.57 | |
WORLD | <0.01% | $1 | 6.2623 | $6.26 | |
SONIC | 0.02% | $0.456616 | 84.5991 | $38.63 | |
SONIC | <0.01% | $0.999988 | 0.8536 | $0.8535 | |
SONIC | <0.01% | $0.007701 | 105.1962 | $0.8101 | |
SONIC | <0.01% | $0.075101 | 4.9329 | $0.3704 | |
SONIC | <0.01% | $0.999994 | 0.1615 | $0.1615 | |
SONIC | <0.01% | $0.4662 | 0.3154 | $0.147 | |
SONIC | <0.01% | $1,571.41 | 0.00007463 | $0.1172 | |
SONIC | <0.01% | $0.154132 | 0.75 | $0.1155 | |
SONIC | <0.01% | $21.56 | 0.00504581 | $0.1087 | |
SONIC | <0.01% | $0.457396 | 0.2244 | $0.1026 | |
MANTLE | <0.01% | $1 | 8.6324 | $8.63 | |
MANTLE | <0.01% | $0.655188 | 9.8704 | $6.47 | |
MANTLE | <0.01% | $1,667.41 | 0.00228138 | $3.8 | |
MANTLE | <0.01% | $0.999853 | 3.1398 | $3.14 | |
MANTLE | <0.01% | $1,568.88 | 0.00095398 | $1.5 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.