ERC-20
Overview
Max Total Supply
1,016.32637129812435568 ERC20 ***
Holders
1
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x814A9072...Fa959CeB1 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Curve
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "./interfaces/IWeth.sol";import "./interfaces/IAssimilatorFactory.sol";import "./lib/ABDKMath64x64.sol";import "./lib/FullMath.sol";import "./lib/NoDelegateCall.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)pragma solidity ^0.8.0;import "../IERC20.sol";import "../extensions/IERC20Permit.sol";import "../../../utils/Address.sol";/*** @title SafeERC20* @dev Wrappers around ERC20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using Address for address;function safeTransfer(IERC20 token, address to, uint256 value) internal {_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));}function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the amount of tokens in existence.*/
1234567891011// SPDX-License-Identifier: MITpragma solidity ^0.8.13;interface IWETH {function deposit() external payable;function transfer(address to, uint256 value) external returns (bool);function withdraw(uint256) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "../assimilators/AssimilatorV3.sol";import "../interfaces/IOracle.sol";interface IAssimilatorFactory {function getAssimilator(address _token, address _quote) external view returns (AssimilatorV3);function newAssimilator(address _quote, IOracle _oracle, address _token, uint256 _tokenDecimals)externalreturns (AssimilatorV3);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BSD-4-Clause/** ABDK Math 64.64 Smart Contract Library. Copyright © 2019 by ABDK Consulting.* Author: Mikhail Vladimirov <mikhail.vladimirov@gmail.com>*/pragma solidity ^0.8.13;/*** Smart contract library of mathematical functions operating with signed* 64.64-bit fixed point numbers. Signed 64.64-bit fixed point number is* basically a simple fraction whose numerator is signed 128-bit integer and* denominator is 2^64. As long as denominator is always the same, there is no* need to store it, thus in Solidity signed 64.64-bit fixed point numbers are* represented by int128 type holding only the numerator.*/library ABDKMath64x64 {/** Minimum value signed 64.64-bit fixed point number may have.*/int128 private constant MIN_64x64 = -0x80000000000000000000000000000000;/** Maximum value signed 64.64-bit fixed point number may have.*/int128 private constant MAX_64x64 = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;/// @title Contains 512-bit math functions/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision/// @dev Handles "phantom overflow" i.e., allows multiplication and division where an intermediate value overflows 256 bitslibrary FullMath {/// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0/// @param a The multiplicand/// @param b The multiplier/// @param denominator The divisor/// @return result The 256-bit result/// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldivfunction mulDiv(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result) {unchecked {// 512-bit multiply [prod1 prod0] = a * b// Compute the product mod 2**256 and mod 2**256 - 1// then use the Chinese Remainder Theorem to reconstruct// the 512 bit result. The result is stored in two 256// variables such that product = prod1 * 2**256 + prod0uint256 prod0; // Least significant 256 bits of the productuint256 prod1; // Most significant 256 bits of the productassembly {let mm := mulmod(a, b, not(0))prod0 := mul(a, b)prod1 := sub(sub(mm, prod0), lt(mm, prod0))
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity ^0.8.13;/// @title Prevents delegatecall to a contract/// @notice Base contract that provides a modifier for preventing delegatecall to methods in a child contractabstract contract NoDelegateCall {/// @dev The original address of this contractaddress private immutable original;constructor() {// Immutables are computed in the init code of the contract, and then inlined into the deployed bytecode.// In other words, this variable won't change when it's checked at runtime.original = address(this);}/// @dev Private method is used instead of inlining into modifier because modifiers are copied into each method,/// and the use of immutable means the address bytes are copied in every place the modifier is used.function checkNotDelegateCall() private view {require(address(this) == original);}/// @notice Prevents delegatecall into the modified methodmodifier noDelegateCall() {checkNotDelegateCall();_;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import "./lib/ABDKMath64x64.sol";import "./Storage.sol";import "./CurveMath.sol";library Orchestrator {using SafeERC20 for IERC20;using ABDKMath64x64 for int128;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "./Assimilators.sol";import "./Storage.sol";import "./lib/UnsafeMath64x64.sol";import "./lib/ABDKMath64x64.sol";import "./CurveMath.sol";import "./Structs.sol";import "./interfaces/IAssimilator.sol";import "./interfaces/ICurve.sol";library ProportionalLiquidity {using ABDKMath64x64 for uint256;using ABDKMath64x64 for int128;using UnsafeMath64x64 for int128;using SafeMath for uint256;event Transfer(address indexed from, address indexed to, uint256 value);int128 public constant ONE = 0x10000000000000000;int128 public constant ONE_WEI = 0x12;function proportionalDeposit(Storage.Curve storage curve, DepositData memory depositData)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "./Structs.sol";import "./Assimilators.sol";import "./Storage.sol";import "./CurveMath.sol";import "./lib/UnsafeMath64x64.sol";import "./lib/ABDKMath64x64.sol";library Swaps {using ABDKMath64x64 for int128;using ABDKMath64x64 for int256;using UnsafeMath64x64 for int128;using ABDKMath64x64 for uint256;using SafeMath for uint256;event Trade(address indexed trader,address indexed origin,address indexed target,uint256 originAmount,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "./Storage.sol";import "./Assimilators.sol";import "./lib/ABDKMath64x64.sol";library ViewLiquidity {using ABDKMath64x64 for int128;function viewLiquidity(Storage.Curve storage curve)external
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "./interfaces/IOracle.sol";import "./Assimilators.sol";contract Storage {struct Curve {// Curve parametersint128 alpha;int128 beta;int128 delta;
12345678910111213141516// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import "./IAssimilatorFactory.sol";interface ICurveFactory {function getProtocolFee() external view returns (int128);function getProtocolTreasury() external view returns (address);function assimilatorFactory() external view returns (IAssimilatorFactory);function wETH() external view returns (address);function isDFXCurve(address) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;interface IAssimilator {function oracleDecimals() external view returns (uint256);function underlyingToken() external view returns (address);function getWeth() external view returns (address);function tokenDecimals() external view returns (uint256);
123456// SPDX-License-Identifier: MITpragma solidity ^0.8.13;interface ICurve {function getWeth() external view returns (address);}
1234567891011121314151617// SPDX-License-Identifier: MITpragma solidity ^0.8.13;interface IConfig {function getGlobalFrozenState() external view returns (bool);function getProtocolFee() external view returns (int128);function getProtocolTreasury() external view returns (address);function setGlobalFrozen(bool) external;function updateProtocolTreasury(address) external;function updateProtocolFee(int128) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;import "./interfaces/ICurveFactory.sol";import "./interfaces/IOracle.sol";struct OriginSwapData {address _origin;address _target;uint256 _originAmount;address _recipient;address _curveFactory;}struct TargetSwapData {address _origin;address _target;uint256 _targetAmount;address _recipient;address _curveFactory;}struct SwapInfo {int128 totalAmount;int128 totalFee;int128 amountToUser;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Permit.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].** Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't* need to send a transaction, and thus is not required to hold Ether at all.*/interface IERC20Permit {/*** @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,* given ``owner``'s signed approval.** IMPORTANT: The same issues {IERC20-approve} has related to transaction* ordering also apply here.** Emits an {Approval} event.** Requirements:** - `spender` cannot be the zero address.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed** Furthermore, `isContract` will also return true if the target contract within
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "@openzeppelin/contracts/utils/math/Math.sol";import "../lib/ABDKMath64x64.sol";import "../interfaces/IAssimilator.sol";import "../interfaces/IOracle.sol";import "../interfaces/IWeth.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;interface IOracle {function acceptOwnership() external;function accessController() external view returns (address);function aggregator() external view returns (address);function confirmAggregator(address _aggregator) external;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)pragma solidity ^0.8.0;import "./IERC20.sol";import "./extensions/IERC20Metadata.sol";import "../../utils/Context.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.* For a generic mechanism see {ERC20PresetMinterPauser}.** TIP: For a detailed writeup see our guide* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** The default value of {decimals} is 18. To change this, you should override* this function so it returns a different value.** We have followed general OpenZeppelin Contracts guidelines: functions revert* instead returning `false` on failure. This behavior is nonetheless* conventional and does not conflict with the expectations of ERC20
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "./Storage.sol";import "./lib/UnsafeMath64x64.sol";import "./lib/ABDKMath64x64.sol";library CurveMath {int128 private constant ONE = 0x10000000000000000;int128 private constant MAX = 0x4000000000000000; // .25 in layman's termsint128 private constant MAX_DIFF = -0x10C6F7A0B5EE;int128 private constant ONE_WEI = 0x12;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)pragma solidity ^0.8.0;// CAUTION// This version of SafeMath should only be used with Solidity 0.8 or later,// because it relies on the compiler's built in overflow checks./*** @dev Wrappers over Solidity's arithmetic operations.** NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler* now has built in overflow checking.*/library SafeMath {/*** @dev Returns the addition of two unsigned integers, with an overflow flag.** _Available since v3.4._*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);return (true, c);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program. If not, see <http://www.gnu.org/licenses/>.pragma solidity ^0.8.13;import "@openzeppelin/contracts/utils/Address.sol";import "./interfaces/IAssimilator.sol";import "./lib/ABDKMath64x64.sol";import "./Structs.sol";library Assimilators {using ABDKMath64x64 for int128;using Address for address;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.13;library UnsafeMath64x64 {/*** Calculate x * y rounding down.** @param x signed 64.64-bit fixed point number* @param y signed 64.64-bit fixed point number* @return signed 64.64-bit fixed point number*/function us_mul(int128 x, int128 y) internal pure returns (int128) {int256 result = int256(x) * y >> 64;return int128(result);}/*** Calculate x / y rounding towards zero. Revert on overflow or when y is* zero.** @param x signed 64.64-bit fixed point number* @param y signed 64.64-bit fixed point number* @return signed 64.64-bit fixed point number*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.0;import "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC20 standard.** _Available since v4.1._*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)pragma solidity ^0.8.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Down, // Toward negative infinityUp, // Toward infinityZero // Toward zero}/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a > b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {
123456789101112131415161718192021222324// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}}
1234567891011121314151617181920212223242526{"remappings": ["@openzeppelin/=lib/openzeppelin-contracts/","@forge-std/=lib/forge-std/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer": {"enabled": true,"runs": 200},"metadata": {"useLiteralContent": false,"bytecodeHash": "ipfs","appendCBOR": true},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","abi"]}},
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address[]","name":"_assets","type":"address[]"},{"internalType":"uint256[]","name":"_assetWeights","type":"uint256[]"},{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_config","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"numeraire","type":"address"},{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"AssetIncluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"derivative","type":"address"},{"indexed":true,"internalType":"address","name":"numeraire","type":"address"},{"indexed":true,"internalType":"address","name":"reserve","type":"address"},{"indexed":false,"internalType":"address","name":"assimilator","type":"address"}],"name":"AssimilatorIncluded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isEmergency","type":"bool"}],"name":"EmergencyAlarm","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isFrozen","type":"bool"}],"name":"FrozenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"alpha","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beta","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"delta","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"epsilon","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lambda","type":"uint256"}],"name":"ParametersSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"PartitionRedeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"trader","type":"address"},{"indexed":true,"internalType":"address","name":"origin","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"originAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"targetAmount","type":"uint256"},{"indexed":false,"internalType":"int128","name":"rawProtocolFee","type":"int128"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"allowance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success_","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_derivative","type":"address"}],"name":"assimilator","outputs":[{"internalType":"address","name":"assimilator_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"curve","outputs":[{"internalType":"int128","name":"alpha","type":"int128"},{"internalType":"int128","name":"beta","type":"int128"},{"internalType":"int128","name":"delta","type":"int128"},{"internalType":"int128","name":"epsilon","type":"int128"},{"internalType":"int128","name":"lambda","type":"int128"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deposit","type":"uint256"},{"internalType":"uint256","name":"_minQuoteAmount","type":"uint256"},{"internalType":"uint256","name":"_minBaseAmount","type":"uint256"},{"internalType":"uint256","name":"_maxQuoteAmount","type":"uint256"},{"internalType":"uint256","name":"_maxBaseAmount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"curvesMinted_","type":"uint256"},{"internalType":"uint256[]","name":"deposits_","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deposit","type":"uint256"},{"internalType":"uint256","name":"_minQuoteAmount","type":"uint256"},{"internalType":"uint256","name":"_minBaseAmount","type":"uint256"},{"internalType":"uint256","name":"_maxQuoteAmount","type":"uint256"},{"internalType":"uint256","name":"_maxBaseAmount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"depositETH","outputs":[{"internalType":"uint256","name":"curvesMinted_","type":"uint256"},{"internalType":"uint256[]","name":"deposits_","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"derivatives","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_curvesToBurn","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"emergencyWithdraw","outputs":[{"internalType":"uint256[]","name":"withdrawals_","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_derivative","type":"address"}],"name":"excludeDerivative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"frozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWeth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidity","outputs":[{"internalType":"uint256","name":"total_","type":"uint256"},{"internalType":"uint256[]","name":"individual_","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notEntered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"numeraires","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_originAmount","type":"uint256"},{"internalType":"uint256","name":"_minTargetAmount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"originSwap","outputs":[{"internalType":"uint256","name":"targetAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_minTargetAmount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"originSwapFromETH","outputs":[{"internalType":"uint256","name":"targetAmount_","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"uint256","name":"_originAmount","type":"uint256"},{"internalType":"uint256","name":"_minTargetAmount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"originSwapToETH","outputs":[{"internalType":"uint256","name":"targetAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserves","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_baseCurrency","type":"address"},{"internalType":"address","name":"_baseAssim","type":"address"},{"internalType":"address","name":"_quoteCurrency","type":"address"},{"internalType":"address","name":"_quoteAssim","type":"address"}],"name":"setAssimilator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_emergency","type":"bool"}],"name":"setEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_toFreezeOrNotToFreeze","type":"bool"}],"name":"setFrozen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_alpha","type":"uint256"},{"internalType":"uint256","name":"_beta","type":"uint256"},{"internalType":"uint256","name":"_feeAtHalt","type":"uint256"},{"internalType":"uint256","name":"_epsilon","type":"uint256"},{"internalType":"uint256","name":"_lambda","type":"uint256"}],"name":"setParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interface","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"supports_","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_maxOriginAmount","type":"uint256"},{"internalType":"uint256","name":"_targetAmount","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"targetSwap","outputs":[{"internalType":"uint256","name":"originAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"totalSupply_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success_","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success_","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewCurve","outputs":[{"internalType":"uint256","name":"alpha_","type":"uint256"},{"internalType":"uint256","name":"beta_","type":"uint256"},{"internalType":"uint256","name":"delta_","type":"uint256"},{"internalType":"uint256","name":"epsilon_","type":"uint256"},{"internalType":"uint256","name":"lambda_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deposit","type":"uint256"}],"name":"viewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_originAmount","type":"uint256"}],"name":"viewOriginSwap","outputs":[{"internalType":"uint256","name":"targetAmount_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_origin","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_targetAmount","type":"uint256"}],"name":"viewTargetSwap","outputs":[{"internalType":"uint256","name":"originAmount_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_curvesToBurn","type":"uint256"}],"name":"viewWithdraw","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_curvesToBurn","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256[]","name":"withdrawals_","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_curvesToBurn","type":"uint256"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"withdrawETH","outputs":[{"internalType":"uint256[]","name":"withdrawals_","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526010805462ffffff1916620100001790553480156200002257600080fd5b506040516200491d3803806200491d83398101604081905262000045916200043b565b306080526001600160a01b038216620000ae5760405162461bcd60e51b815260206004820152602160248201527f43757276652f637572766520666163746f7279207a65726f20616464726573736044820152602160f81b606482015260840160405180910390fd5b600a80546001600160a01b03191633179055600b620000ce8782620005a7565b50600c620000dd8682620005a7565b50601080546301000000600160b81b03191663010000006001600160a01b038581169190910291909117909155601180546001600160a01b03191691831691909117905560405133906000907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee67908290a3816001600160a01b031663f24286216040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b3919062000673565b6001600160a01b031660a052604051635931eef160e11b8152731190da269ffe6f4567fed0c3c9bba01f883722549063b263dde2906200020690600090600e90600f90600d908b908b9060040162000698565b60006040518083038186803b1580156200021f57600080fd5b505af415801562000234573d6000803e3d6000fd5b5050505050505050505062000740565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000285576200028562000244565b604052919050565b600082601f8301126200029f57600080fd5b81516001600160401b03811115620002bb57620002bb62000244565b6020620002d1601f8301601f191682016200025a565b8281528582848701011115620002e657600080fd5b60005b8381101562000306578581018301518282018401528201620002e9565b506000928101909101919091529392505050565b60006001600160401b0382111562000336576200033662000244565b5060051b60200190565b80516001600160a01b03811681146200035857600080fd5b919050565b600082601f8301126200036f57600080fd5b815160206200038862000382836200031a565b6200025a565b82815260059290921b84018101918181019086841115620003a857600080fd5b8286015b84811015620003ce57620003c08162000340565b8352918301918301620003ac565b509695505050505050565b600082601f830112620003eb57600080fd5b81516020620003fe62000382836200031a565b82815260059290921b840181019181810190868411156200041e57600080fd5b8286015b84811015620003ce578051835291830191830162000422565b60008060008060008060c087890312156200045557600080fd5b86516001600160401b03808211156200046d57600080fd5b6200047b8a838b016200028d565b975060208901519150808211156200049257600080fd5b620004a08a838b016200028d565b96506040890151915080821115620004b757600080fd5b620004c58a838b016200035d565b95506060890151915080821115620004dc57600080fd5b50620004eb89828a01620003d9565b935050620004fc6080880162000340565b91506200050c60a0880162000340565b90509295509295509295565b600181811c908216806200052d57607f821691505b6020821081036200054e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005a257600081815260208120601f850160051c810160208610156200057d5750805b601f850160051c820191505b818110156200059e5782815560010162000589565b5050505b505050565b81516001600160401b03811115620005c357620005c362000244565b620005db81620005d4845462000518565b8462000554565b602080601f831160018114620006135760008415620005fa5750858301515b600019600386901b1c1916600185901b1785556200059e565b600085815260208120601f198616915b82811015620006445788860151825594840194600190910190840162000623565b5085821015620006635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200068657600080fd5b620006918262000340565b9392505050565b600060c082018883526020888185015287604085015286606085015260c0608085015281865180845260e086019150828801935060005b81811015620006f65784516001600160a01b031683529383019391830191600101620006cf565b505084810360a0860152855180825290820192508186019060005b818110156200072f5782518552938301939183019160010162000711565b50929b9a5050505050505050505050565b60805160a051614171620007ac6000396000818161034601528181611352015281816113d0015281816116400152818161172e0152818161185b01528181611899015281816120de0152818161214d0152818161218d0152613103015260006134b301526141716000f3fe60806040526004361061024a5760003560e01c806370a0823111610139578063a8e9d528116100b6578063caa6fea41161007a578063caa6fea41461078e578063d828bb88146107ad578063dd62ed3e146107cd578063de3e2e2414610813578063e5cf8a5c14610833578063f2fde38b1461085357600080fd5b8063a8e9d528146106ee578063a9059cbb1461070e578063c0046e391461072e578063c7cdea371461074e578063c912ff7a1461076e57600080fd5b80638334278d116100fd5780638334278d14610659578063838e6a22146106795780638da5cb5b1461069957806395d89b41146106b9578063a3f5d8cc146106ce57600080fd5b806370a08231146105465780637165485d1461057c57806372b4129a146105f957806379a390a5146106195780637e932d321461063957600080fd5b806323b872dd116101c7578063525d0da71161018b578063525d0da7146104965780635872278a146104b6578063595520c7146104d65780636919ba27146105135780636f2ef95b1461052657600080fd5b806323b872dd146103e3578063313ce567146104035780633cae77f71461042a578063441a3e70146104635780634fe5da711461048357600080fd5b80630b2583c81161020e5780630b2583c814610309578063107c279f1461033757806318160ddd1461037e5780631a686502146103935780631f276b6e146103b657600080fd5b806301ffc9a7146102565780630501d5561461028b578063054f7d9c146102ad57806306fdde03146102c7578063095ea7b3146102e957600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004613801565b610873565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a636600461383c565b6108c5565b005b3480156102b957600080fd5b506010546102769060ff1681565b3480156102d357600080fd5b506102dc6109d9565b604051610282919061387d565b3480156102f557600080fd5b506102766103043660046138c5565b610a67565b34801561031557600080fd5b506103296103243660046138f1565b610b49565b604051908152602001610282565b34801561034357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610282565b34801561038a57600080fd5b50600754610329565b34801561039f57600080fd5b506103a8610e70565b60405161028292919061397d565b3480156103c257600080fd5b506103d66103d1366004613996565b610ef6565b60405161028291906139b8565b3480156103ef57600080fd5b506102766103fe3660046139cb565b61101d565b34801561040f57600080fd5b50610418601281565b60405160ff9091168152602001610282565b34801561043657600080fd5b50610366610445366004613a0c565b6001600160a01b039081166000908152600560205260409020541690565b34801561046f57600080fd5b506103d661047e366004613996565b61112f565b6103a8610491366004613a29565b6111b5565b3480156104a257600080fd5b506103296104b13660046139cb565b6119b8565b3480156104c257600080fd5b506103a86104d1366004613a29565b611b01565b3480156104e257600080fd5b506104eb611ef3565b604080519586526020860194909452928401919091526060830152608082015260a001610282565b610329610521366004613a6c565b611f87565b34801561053257600080fd5b506103a8610541366004613aa1565b61228b565b34801561055257600080fd5b50610329610561366004613a0c565b6001600160a01b031660009081526008602052604090205490565b34801561058857600080fd5b506000546001546002546007546105bc93600f81810b94600160801b92839004820b9481830b9493909104820b92910b9086565b60408051600f97880b815295870b602087015293860b9385019390935290840b606084015290920b608082015260a081019190915260c001610282565b34801561060557600080fd5b506103296106143660046138f1565b6124de565b34801561062557600080fd5b506102ab610634366004613aba565b61273f565b34801561064557600080fd5b506102ab61065436600461383c565b61288b565b34801561066557600080fd5b50610366610674366004613aa1565b61298f565b34801561068557600080fd5b506103296106943660046139cb565b6129b9565b3480156106a557600080fd5b50600a54610366906001600160a01b031681565b3480156106c557600080fd5b506102dc612abd565b3480156106da57600080fd5b506010546102769062010000900460ff1681565b3480156106fa57600080fd5b50610366610709366004613aa1565b612aca565b34801561071a57600080fd5b506102766107293660046138c5565b612ada565b34801561073a57600080fd5b50610366610749366004613aa1565b612b8f565b34801561075a57600080fd5b506103d6610769366004613996565b612b9f565b34801561077a57600080fd5b506102ab610789366004613a0c565b612c6b565b34801561079a57600080fd5b5060105461027690610100900460ff1681565b3480156107b957600080fd5b506102ab6107c8366004613b16565b612e62565b3480156107d957600080fd5b506103296107e8366004613b51565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561081f57600080fd5b5061032961082e366004613b8a565b612fab565b34801561083f57600080fd5b506103d661084e366004613aa1565b6131fe565b34801561085f57600080fd5b506102ab61086e366004613a0c565b61332b565b60006301ffc9a760e01b6001600160e01b0319831614806108a457506307f5828d60e41b6001600160e01b03198316145b806108bf57506336372b0760e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314806109655750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109509190613bc5565b6001600160a01b0316336001600160a01b0316145b61098a5760405162461bcd60e51b815260040161098190613be2565b60405180910390fd5b60405181151581527fa44450e52bea871e50cfee059fbe027c26ff43fd7534c06b7de61d90b58ab3c19060200160405180910390a1601080549115156101000261ff0019909216919091179055565b600b80546109e690613c19565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1290613c19565b8015610a5f5780601f10610a3457610100808354040283529160200191610a5f565b820191906000526020600020905b815481529060010190602001808311610a4257829003601f168201915b505050505081565b60105460009062010000900460ff16610a925760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055610aa66134a8565b60405163e60ac42960e01b8152600060048201526001600160a01b0384166024820152604481018390527385e9690c2d4c6cae31d96f9b5afe6d111d1651579063e60ac429906064015b602060405180830381865af4158015610b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b319190613c7d565b6010805462ff00001916620100001790559392505050565b600081804210610b6b5760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613c7d565b15610bff5760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615610c225760405162461bcd60e51b815260040161098190613d2e565b610c2a6134a8565b601054610100900460ff1615610c525760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff16610c7a5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a8116825289811660208084018290528385018b905233606085018190526301000000909604909216608084015283516370a0823160e01b8152600481019590955292519193600093926370a08231926024808401939192918290030181865afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190613ddb565b60405163fd17568b60e01b81529091507374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b90610d6f9060009086908290600401613e31565b602060405180830381865af4158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190613ddb565b5060608201516040516370a0823160e01b81526001600160a01b0391821660048201526000918a16906370a0823190602401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190613ddb565b9050610e2f8282613e6b565b945086851015610e515760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff000019166201000017905550909695505050505050565b604051633745793960e11b815260006004820181905290606090731134daeaa652e11360631e3cc93e688204d9354b90636e8af27290602401600060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eee9190810190613f5b565b915091509091565b601054606090610100900460ff16610f205760405162461bcd60e51b815260040161098190613d7e565b81804210610f405760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff16610f685760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055610f7c6134a8565b60405163eaadf2b560e01b8152600060048201819052602482018690526044820152730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063eaadf2b5906064015b600060405180830381865af4158015610fdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110039190810190613fa2565b9150506010805462ff000019166201000017905592915050565b60105460009062010000900460ff166110485760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905561105c6134a8565b601054610100900460ff16156110845760405162461bcd60e51b815260040161098190613d7e565b6040516303a90f6960e31b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527385e9690c2d4c6cae31d96f9b5afe6d111d16515790631d487b4890608401602060405180830381865af41580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190613c7d565b6010805462ff0000191662010000179055949350505050565b6060818042106111515760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff166111795760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905561118d6134a8565b601054610100900460ff1615610f7c5760405162461bcd60e51b815260040161098190613d7e565b60006060828042106111d95760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190613c7d565b1561126d5760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156112905760405162461bcd60e51b815260040161098190613d2e565b60105462010000900460ff166112b85760405162461bcd60e51b815260040161098190613c53565b6010805462ff0000191690556112cc6134a8565b601054610100900460ff16156112f45760405162461bcd60e51b815260040161098190613d7e565b6000891161133f5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610981565b6113488961228b565b80935081945050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b506113fc9350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030905033346134df565b6114046137a5565b89815260208101899052604081018890526080810187905260a081018690528251839060009061143657611436613fd7565b60200260200101518160c00181815250508260018151811061145a5761145a613fd7565b6020026020010151816060018181525050600f60008154811061147f5761147f613fd7565b60009182526020822001546001600160a01b031660e0830152600f80549091906114ab576114ab613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190613ddb565b610100820152600f8054600190811061153b5761153b613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190613ddb565b610120820152604051629d2ea960e41b8152730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906309d2ea90906115ef906000908590600401613fed565b600060405180830381865af415801561160c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116349190810190613f5b565b809450819550505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600060040160008154811061167f5761167f613fd7565b6000918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190613bc5565b6001600160a01b03160361172c578360008151811061171257611712613fd7565b6020026020010151346117259190613e6b565b9050611848565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600060040160018154811061176d5761176d613fd7565b6000918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa1580156117bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117df9190613bc5565b6001600160a01b031603611800578360018151811061171257611712613fd7565b60405162461bcd60e51b815260206004820152601860248201527f43757276652f4465706f73697420455448206661696c656400000000000000006044820152606401610981565b8015611997576118836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846134df565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d806000811461193f576040519150601f19603f3d011682016040523d82523d6000602084013e611944565b606091505b50509050806119955760405162461bcd60e51b815260206004820152601960248201527f43757276652f455448207472616e73666572206661696c6564000000000000006044820152606401610981565b505b5050506010805462ff00001916620100001790559097909650945050505050565b601154604080516306a8e1cd60e41b815290516000926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613c7d565b15611a435760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615611a665760405162461bcd60e51b815260040161098190613d2e565b6040516315be82e960e21b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527374982d2fd25ca0e0dee702e40affd93bae04d3a6906356fa0ba4906084015b602060405180830381865af4158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190613ddb565b949350505050565b6000606082804210611b255760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c9190613c7d565b15611bb95760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615611bdc5760405162461bcd60e51b815260040161098190613d2e565b60105462010000900460ff16611c045760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055611c186134a8565b601054610100900460ff1615611c405760405162461bcd60e51b815260040161098190613d7e565b60008911611c8b5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610981565b611c948961228b565b9093509150611ca16137a5565b89815260208101899052604081018890526080810187905260a0810186905282518390600090611cd357611cd3613fd7565b60200260200101518160c001818152505082600181518110611cf757611cf7613fd7565b6020026020010151816060018181525050600f600081548110611d1c57611d1c613fd7565b60009182526020822001546001600160a01b031660e0830152600f8054909190611d4857611d48613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbd9190613ddb565b610100820152600f80546001908110611dd857611dd8613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4d9190613ddb565b610120820152604051629d2ea960e41b8152730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906309d2ea9090611e8c906000908590600401613fed565b600060405180830381865af4158015611ea9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ed19190810190613f5b565b6010805462ff0000191662010000179055909b909a5098505050505050505050565b6000806000806000731190da269ffe6f4567fed0c3c9bba01f8837225463faa50b5d60006040518263ffffffff1660e01b8152600401611f3591815260200190565b60a060405180830381865af4158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190614079565b945094509450945094509091929394565b600081804210611fa95760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120209190613c7d565b1561203d5760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156120605760405162461bcd60e51b815260040161098190613d2e565b6120686134a8565b601054610100900460ff16156120905760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff166120b85760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905560408051630d0e30db60e41b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d0e30db091349160048082019260009290919082900301818588803b15801561212857600080fd5b505af115801561213c573d6000803e3d6000fd5b506121799350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915030905033346134df565b6040805160a0810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682528781166020830152348284015233606083015260105463010000009004166080820152905163fd17568b60e01b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b9061220e9060009085908290600401613e31565b602060405180830381865af415801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613ddb565b9250848310156122715760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff00001916620100001790559392505050565b60006060601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123069190613c7d565b156123235760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156123465760405162461bcd60e51b815260040161098190613d2e565b604080516002808252606082018352600092839291906020830190803683370190505060405163822f39d560e01b81526000600482015260248101879052909150730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063822f39d590604401600060405180830381865af41580156123c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123eb9190810190613f5b565b909250905060008261240c876ec097ce7bc90715b34b9f10000000006140b9565b61241691906140d0565b90506ec097ce7bc90715b34b9f1000000000818360008151811061243c5761243c613fd7565b602002602001015161244e91906140b9565b61245891906140d0565b8260008151811061246b5761246b613fd7565b6020026020010181815250506ec097ce7bc90715b34b9f1000000000818360018151811061249b5761249b613fd7565b60200260200101516124ad91906140b9565b6124b791906140d0565b826001815181106124ca576124ca613fd7565b602090810291909101015250939492505050565b6000818042106125005760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125779190613c7d565b156125945760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156125b75760405162461bcd60e51b815260040161098190613d2e565b6125bf6134a8565b601054610100900460ff16156125e75760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff1661260f5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a811682528981166020830152818301889052336060830152630100000090930490921660808301525163498e2a2560e11b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063931c544a906126909060009085906004016140f2565b602060405180830381865af41580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d19190613ddb565b9250858311156127235760405162461bcd60e51b815260206004820152601d60248201527f43757276652f61626f76652d6d61782d6f726967696e2d616d6f756e740000006044820152606401610981565b50506010805462ff000019166201000017905595945050505050565b600a546001600160a01b03163314806127df5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613bc5565b6001600160a01b0316336001600160a01b0316145b6127fb5760405162461bcd60e51b815260040161098190613be2565b604051632e6ce08560e11b8152600060048201526001600160a01b0380861660248301528085166044830152808416606483015282166084820152731190da269ffe6f4567fed0c3c9bba01f8837225490635cd9c10a9060a40160006040518083038186803b15801561286d57600080fd5b505af4158015612881573d6000803e3d6000fd5b5050505050505050565b600a546001600160a01b031633148061292b5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129169190613bc5565b6001600160a01b0316336001600160a01b0316145b6129475760405162461bcd60e51b815260040161098190613be2565b60405181151581527f7c029deaca9b6c66abb68e5f874a812822f0fcaa52a890f980a7ab1afb5edba69060200160405180910390a16010805460ff1916911515919091179055565b600f818154811061299f57600080fd5b6000918252602090912001546001600160a01b0316905081565b601154604080516306a8e1cd60e41b815290516000926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a279190613c7d565b15612a445760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615612a675760405162461bcd60e51b815260040161098190613d2e565b604051637dba2aed60e11b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fb7455da90608401611ab8565b600c80546109e690613c19565b600e818154811061299f57600080fd5b60105460009062010000900460ff16612b055760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055612b196134a8565b601054610100900460ff1615612b415760405162461bcd60e51b815260040161098190613d7e565b60405163a4bcd45960e01b8152600060048201526001600160a01b0384166024820152604481018390527385e9690c2d4c6cae31d96f9b5afe6d111d1651579063a4bcd45990606401610af0565b600d818154811061299f57600080fd5b606081804210612bc15760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff16612be95760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055612bfd6134a8565b601054610100900460ff1615612c255760405162461bcd60e51b815260040161098190613d7e565b60405163eaadf2b560e01b8152600060048201526024810185905260016044820152730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063eaadf2b590606401610fbe565b600a546001600160a01b0316331480612d0b5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf69190613bc5565b6001600160a01b0316336001600160a01b0316145b612d275760405162461bcd60e51b815260040161098190613be2565b60005b600e54811015612e3a57600e8181548110612d4757612d47613fd7565b6000918252602090912001546001600160a01b0390811690831603612dae5760405162461bcd60e51b815260206004820152601d60248201527f43757276652f63616e6e6f742d64656c6574652d6e756d6572616972650000006044820152606401610981565b600f8181548110612dc157612dc1613fd7565b6000918252602090912001546001600160a01b0390811690831603612e285760405162461bcd60e51b815260206004820152601b60248201527f43757276652f63616e6e6f742d64656c6574652d7265736572766500000000006044820152606401610981565b80612e3281614106565b915050612d2a565b506001600160a01b0316600090815260056020526040902080546001600160a81b0319169055565b600a546001600160a01b0316331480612f025750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eed9190613bc5565b6001600160a01b0316336001600160a01b0316145b612f1e5760405162461bcd60e51b815260040161098190613be2565b60405163231888b760e01b8152600060048201526024810186905260448101859052606481018490526084810183905260a48101829052731190da269ffe6f4567fed0c3c9bba01f883722549063231888b79060c40160006040518083038186803b158015612f8c57600080fd5b505af4158015612fa0573d6000803e3d6000fd5b505050505050505050565b600081804210612fcd5760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130449190613c7d565b156130615760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156130845760405162461bcd60e51b815260040161098190613d2e565b61308c6134a8565b601054610100900460ff16156130b45760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff166130dc5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b0389811682527f000000000000000000000000000000000000000000000000000000000000000081166020830152818301899052336060830152630100000090930490921660808301525163fd17568b60e01b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b90613180906000908590600190600401613e31565b602060405180830381865af415801561319d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c19190613ddb565b9250848310156131e35760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff0000191662010000179055949350505050565b601154604080516306a8e1cd60e41b815290516060926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c9190613c7d565b156132895760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156132ac5760405162461bcd60e51b815260040161098190613d2e565b6040516330771ac760e11b81526000600482015260248101839052730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906360ee358e90604401600060405180830381865af4158015613303573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bf9190810190613fa2565b600a546001600160a01b03163314806133cb5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015613392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b69190613bc5565b6001600160a01b0316336001600160a01b0316145b6133e75760405162461bcd60e51b815260040161098190613be2565b6001600160a01b03811661344c5760405162461bcd60e51b815260206004820152602660248201527f43757276652f6e65772d6f776e65722d63616e6e6f742d62652d7a65726f2d6160448201526564647265737360d01b6064820152608401610981565b600a546040516001600160a01b038084169216907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee6790600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146134dd57600080fd5b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261353990859061353f565b50505050565b6000613594826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136169092919063ffffffff16565b80519091501561361157808060200190518101906135b29190613c7d565b6136115760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610981565b505050565b6060611af9848460008561362c565b9392505050565b60608247101561368d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610981565b600080866001600160a01b031685876040516136a9919061411f565b60006040518083038185875af1925050503d80600081146136e6576040519150601f19603f3d011682016040523d82523d6000602084013e6136eb565b606091505b50915091506136fc87838387613707565b979650505050505050565b6060831561377657825160000361376f576001600160a01b0385163b61376f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610981565b5081611af9565b611af9838381511561378b5781518083602001fd5b8060405162461bcd60e51b8152600401610981919061387d565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b60006020828403121561381357600080fd5b81356001600160e01b03198116811461362557600080fd5b801515811461383957600080fd5b50565b60006020828403121561384e57600080fd5b81356136258161382b565b60005b8381101561387457818101518382015260200161385c565b50506000910152565b602081526000825180602084015261389c816040850160208701613859565b601f01601f19169190910160400192915050565b6001600160a01b038116811461383957600080fd5b600080604083850312156138d857600080fd5b82356138e3816138b0565b946020939093013593505050565b600080600080600060a0868803121561390957600080fd5b8535613914816138b0565b94506020860135613924816138b0565b94979496505050506040830135926060810135926080909101359150565b600081518084526020808501945080840160005b8381101561397257815187529582019590820190600101613956565b509495945050505050565b828152604060208201526000611af96040830184613942565b600080604083850312156139a957600080fd5b50508035926020909101359150565b6020815260006136256020830184613942565b6000806000606084860312156139e057600080fd5b83356139eb816138b0565b925060208401356139fb816138b0565b929592945050506040919091013590565b600060208284031215613a1e57600080fd5b8135613625816138b0565b60008060008060008060c08789031215613a4257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215613a8157600080fd5b8335613a8c816138b0565b95602085013595506040909401359392505050565b600060208284031215613ab357600080fd5b5035919050565b60008060008060808587031215613ad057600080fd5b8435613adb816138b0565b93506020850135613aeb816138b0565b92506040850135613afb816138b0565b91506060850135613b0b816138b0565b939692955090935050565b600080600080600060a08688031215613b2e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613b6457600080fd5b8235613b6f816138b0565b91506020830135613b7f816138b0565b809150509250929050565b60008060008060808587031215613ba057600080fd5b8435613bab816138b0565b966020860135965060408601359560600135945092505050565b600060208284031215613bd757600080fd5b8151613625816138b0565b60208082526019908201527f43757276652f63616c6c65722d69732d6e6f742d6f776e657200000000000000604082015260600190565b600181811c90821680613c2d57607f821691505b602082108103613c4d57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f10dd5c9d994bdc994b595b9d195c995960821b604082015260600190565b600060208284031215613c8f57600080fd5b81516136258161382b565b60208082526018908201527f43757276652f74782d646561646c696e652d7061737365640000000000000000604082015260600190565b60208082526039908201527f43757276652f66726f7a656e2d676c6f62616c6c792d6f6e6c792d616c6c6f7760408201527f696e672d70726f706f7274696f6e616c2d776974686472617700000000000000606082015260800190565b60208082526030908201527f43757276652f66726f7a656e2d6f6e6c792d616c6c6f77696e672d70726f706f60408201526f7274696f6e616c2d776974686472617760801b606082015260800190565b6020808252603d908201527f43757276652f656d657267656e63792d6f6e6c792d616c6c6f77696e672d656d60408201527f657267656e63792d70726f706f7274696f6e616c2d7769746864726177000000606082015260800190565b600060208284031215613ded57600080fd5b5051919050565b80516001600160a01b0390811683526020808301518216908401526040808301519084015260608083015182169084015260809182015116910152565b83815260e08101613e456020830185613df4565b82151560c0830152949350505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108bf576108bf613e55565b6020808252601d908201527f43757276652f62656c6f772d6d696e2d7461726765742d616d6f756e74000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112613edc57600080fd5b8151602067ffffffffffffffff80831115613ef957613ef9613eb5565b8260051b604051601f19603f83011681018181108482111715613f1e57613f1e613eb5565b604052938452858101830193838101925087851115613f3c57600080fd5b83870191505b848210156136fc57815183529183019190830190613f42565b60008060408385031215613f6e57600080fd5b82519150602083015167ffffffffffffffff811115613f8c57600080fd5b613f9885828601613ecb565b9150509250929050565b600060208284031215613fb457600080fd5b815167ffffffffffffffff811115613fcb57600080fd5b611af984828501613ecb565b634e487b7160e01b600052603260045260246000fd5b60006101608201905083825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614058818501836001600160a01b03169052565b84015161012084810191909152909301516101409092019190915292915050565b600080600080600060a0868803121561409157600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b80820281158282048414176108bf576108bf613e55565b6000826140ed57634e487b7160e01b600052601260045260246000fd5b500490565b82815260c081016136256020830184613df4565b60006001820161411857614118613e55565b5060010190565b60008251614131818460208701613859565b919091019291505056fea26469706673582212209fe70fae664b7f88f6ddb308707297efdaab6e0c0059376ecafddee9e2c0cb2164736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000ce2b8e0c196b7f9297a9c168dfe1a977682978350000000000000000000000001020e08935e9f8ee963356f4c47d7fe8a024c8a700000000000000000000000000000000000000000000000000000000000000106466782d636164632d757364632d76330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106466782d636164632d757364632d763300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000cadc0acd4b445166f12d2c07eac6e2544fbe2eef000000000000000000000000bfa98e686ea480f6dabd82519d15cb65c664fe7f000000000000000000000000cadc0acd4b445166f12d2c07eac6e2544fbe2eef000000000000000000000000bfa98e686ea480f6dabd82519d15cb65c664fe7f000000000000000000000000cadc0acd4b445166f12d2c07eac6e2544fbe2eef000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000e15d4757fa0afa3f6ed0752aff7bd776127e0045000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000e15d4757fa0afa3f6ed0752aff7bd776127e0045000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000006f05b59d3b2000000000000000000000000000000000000000000000000000006f05b59d3b20000
Deployed Bytecode
0x60806040526004361061024a5760003560e01c806370a0823111610139578063a8e9d528116100b6578063caa6fea41161007a578063caa6fea41461078e578063d828bb88146107ad578063dd62ed3e146107cd578063de3e2e2414610813578063e5cf8a5c14610833578063f2fde38b1461085357600080fd5b8063a8e9d528146106ee578063a9059cbb1461070e578063c0046e391461072e578063c7cdea371461074e578063c912ff7a1461076e57600080fd5b80638334278d116100fd5780638334278d14610659578063838e6a22146106795780638da5cb5b1461069957806395d89b41146106b9578063a3f5d8cc146106ce57600080fd5b806370a08231146105465780637165485d1461057c57806372b4129a146105f957806379a390a5146106195780637e932d321461063957600080fd5b806323b872dd116101c7578063525d0da71161018b578063525d0da7146104965780635872278a146104b6578063595520c7146104d65780636919ba27146105135780636f2ef95b1461052657600080fd5b806323b872dd146103e3578063313ce567146104035780633cae77f71461042a578063441a3e70146104635780634fe5da711461048357600080fd5b80630b2583c81161020e5780630b2583c814610309578063107c279f1461033757806318160ddd1461037e5780631a686502146103935780631f276b6e146103b657600080fd5b806301ffc9a7146102565780630501d5561461028b578063054f7d9c146102ad57806306fdde03146102c7578063095ea7b3146102e957600080fd5b3661025157005b600080fd5b34801561026257600080fd5b50610276610271366004613801565b610873565b60405190151581526020015b60405180910390f35b34801561029757600080fd5b506102ab6102a636600461383c565b6108c5565b005b3480156102b957600080fd5b506010546102769060ff1681565b3480156102d357600080fd5b506102dc6109d9565b604051610282919061387d565b3480156102f557600080fd5b506102766103043660046138c5565b610a67565b34801561031557600080fd5b506103296103243660046138f1565b610b49565b604051908152602001610282565b34801561034357600080fd5b507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b6040516001600160a01b039091168152602001610282565b34801561038a57600080fd5b50600754610329565b34801561039f57600080fd5b506103a8610e70565b60405161028292919061397d565b3480156103c257600080fd5b506103d66103d1366004613996565b610ef6565b60405161028291906139b8565b3480156103ef57600080fd5b506102766103fe3660046139cb565b61101d565b34801561040f57600080fd5b50610418601281565b60405160ff9091168152602001610282565b34801561043657600080fd5b50610366610445366004613a0c565b6001600160a01b039081166000908152600560205260409020541690565b34801561046f57600080fd5b506103d661047e366004613996565b61112f565b6103a8610491366004613a29565b6111b5565b3480156104a257600080fd5b506103296104b13660046139cb565b6119b8565b3480156104c257600080fd5b506103a86104d1366004613a29565b611b01565b3480156104e257600080fd5b506104eb611ef3565b604080519586526020860194909452928401919091526060830152608082015260a001610282565b610329610521366004613a6c565b611f87565b34801561053257600080fd5b506103a8610541366004613aa1565b61228b565b34801561055257600080fd5b50610329610561366004613a0c565b6001600160a01b031660009081526008602052604090205490565b34801561058857600080fd5b506000546001546002546007546105bc93600f81810b94600160801b92839004820b9481830b9493909104820b92910b9086565b60408051600f97880b815295870b602087015293860b9385019390935290840b606084015290920b608082015260a081019190915260c001610282565b34801561060557600080fd5b506103296106143660046138f1565b6124de565b34801561062557600080fd5b506102ab610634366004613aba565b61273f565b34801561064557600080fd5b506102ab61065436600461383c565b61288b565b34801561066557600080fd5b50610366610674366004613aa1565b61298f565b34801561068557600080fd5b506103296106943660046139cb565b6129b9565b3480156106a557600080fd5b50600a54610366906001600160a01b031681565b3480156106c557600080fd5b506102dc612abd565b3480156106da57600080fd5b506010546102769062010000900460ff1681565b3480156106fa57600080fd5b50610366610709366004613aa1565b612aca565b34801561071a57600080fd5b506102766107293660046138c5565b612ada565b34801561073a57600080fd5b50610366610749366004613aa1565b612b8f565b34801561075a57600080fd5b506103d6610769366004613996565b612b9f565b34801561077a57600080fd5b506102ab610789366004613a0c565b612c6b565b34801561079a57600080fd5b5060105461027690610100900460ff1681565b3480156107b957600080fd5b506102ab6107c8366004613b16565b612e62565b3480156107d957600080fd5b506103296107e8366004613b51565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b34801561081f57600080fd5b5061032961082e366004613b8a565b612fab565b34801561083f57600080fd5b506103d661084e366004613aa1565b6131fe565b34801561085f57600080fd5b506102ab61086e366004613a0c565b61332b565b60006301ffc9a760e01b6001600160e01b0319831614806108a457506307f5828d60e41b6001600160e01b03198316145b806108bf57506336372b0760e01b6001600160e01b03198316145b92915050565b600a546001600160a01b03163314806109655750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561092c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109509190613bc5565b6001600160a01b0316336001600160a01b0316145b61098a5760405162461bcd60e51b815260040161098190613be2565b60405180910390fd5b60405181151581527fa44450e52bea871e50cfee059fbe027c26ff43fd7534c06b7de61d90b58ab3c19060200160405180910390a1601080549115156101000261ff0019909216919091179055565b600b80546109e690613c19565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1290613c19565b8015610a5f5780601f10610a3457610100808354040283529160200191610a5f565b820191906000526020600020905b815481529060010190602001808311610a4257829003601f168201915b505050505081565b60105460009062010000900460ff16610a925760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055610aa66134a8565b60405163e60ac42960e01b8152600060048201526001600160a01b0384166024820152604481018390527385e9690c2d4c6cae31d96f9b5afe6d111d1651579063e60ac429906064015b602060405180830381865af4158015610b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b319190613c7d565b6010805462ff00001916620100001790559392505050565b600081804210610b6b5760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613c7d565b15610bff5760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615610c225760405162461bcd60e51b815260040161098190613d2e565b610c2a6134a8565b601054610100900460ff1615610c525760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff16610c7a5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a8116825289811660208084018290528385018b905233606085018190526301000000909604909216608084015283516370a0823160e01b8152600481019590955292519193600093926370a08231926024808401939192918290030181865afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d309190613ddb565b60405163fd17568b60e01b81529091507374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b90610d6f9060009086908290600401613e31565b602060405180830381865af4158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190613ddb565b5060608201516040516370a0823160e01b81526001600160a01b0391821660048201526000918a16906370a0823190602401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190613ddb565b9050610e2f8282613e6b565b945086851015610e515760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff000019166201000017905550909695505050505050565b604051633745793960e11b815260006004820181905290606090731134daeaa652e11360631e3cc93e688204d9354b90636e8af27290602401600060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610eee9190810190613f5b565b915091509091565b601054606090610100900460ff16610f205760405162461bcd60e51b815260040161098190613d7e565b81804210610f405760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff16610f685760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055610f7c6134a8565b60405163eaadf2b560e01b8152600060048201819052602482018690526044820152730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063eaadf2b5906064015b600060405180830381865af4158015610fdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110039190810190613fa2565b9150506010805462ff000019166201000017905592915050565b60105460009062010000900460ff166110485760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905561105c6134a8565b601054610100900460ff16156110845760405162461bcd60e51b815260040161098190613d7e565b6040516303a90f6960e31b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527385e9690c2d4c6cae31d96f9b5afe6d111d16515790631d487b4890608401602060405180830381865af41580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190613c7d565b6010805462ff0000191662010000179055949350505050565b6060818042106111515760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff166111795760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905561118d6134a8565b601054610100900460ff1615610f7c5760405162461bcd60e51b815260040161098190613d7e565b60006060828042106111d95760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112509190613c7d565b1561126d5760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156112905760405162461bcd60e51b815260040161098190613d2e565b60105462010000900460ff166112b85760405162461bcd60e51b815260040161098190613c53565b6010805462ff0000191690556112cc6134a8565b601054610100900460ff16156112f45760405162461bcd60e51b815260040161098190613d7e565b6000891161133f5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610981565b6113488961228b565b80935081945050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156113ab57600080fd5b505af11580156113bf573d6000803e3d6000fd5b506113fc9350506001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216915030905033346134df565b6114046137a5565b89815260208101899052604081018890526080810187905260a081018690528251839060009061143657611436613fd7565b60200260200101518160c00181815250508260018151811061145a5761145a613fd7565b6020026020010151816060018181525050600f60008154811061147f5761147f613fd7565b60009182526020822001546001600160a01b031660e0830152600f80549091906114ab576114ab613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190613ddb565b610100820152600f8054600190811061153b5761153b613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561158c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b09190613ddb565b610120820152604051629d2ea960e41b8152730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906309d2ea90906115ef906000908590600401613fed565b600060405180830381865af415801561160c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116349190810190613f5b565b809450819550505060007f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316600060040160008154811061167f5761167f613fd7565b6000918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa1580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f19190613bc5565b6001600160a01b03160361172c578360008151811061171257611712613fd7565b6020026020010151346117259190613e6b565b9050611848565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316600060040160018154811061176d5761176d613fd7565b6000918252602091829020015460408051632495a59960e01b815290516001600160a01b0390921692632495a599926004808401938290030181865afa1580156117bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117df9190613bc5565b6001600160a01b031603611800578360018151811061171257611712613fd7565b60405162461bcd60e51b815260206004820152601860248201527f43757276652f4465706f73697420455448206661696c656400000000000000006044820152606401610981565b8015611997576118836001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2163330846134df565b604051632e1a7d4d60e01b8152600481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b50506040516000925033915083908381818185875af1925050503d806000811461193f576040519150601f19603f3d011682016040523d82523d6000602084013e611944565b606091505b50509050806119955760405162461bcd60e51b815260206004820152601960248201527f43757276652f455448207472616e73666572206661696c6564000000000000006044820152606401610981565b505b5050506010805462ff00001916620100001790559097909650945050505050565b601154604080516306a8e1cd60e41b815290516000926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613c7d565b15611a435760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615611a665760405162461bcd60e51b815260040161098190613d2e565b6040516315be82e960e21b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527374982d2fd25ca0e0dee702e40affd93bae04d3a6906356fa0ba4906084015b602060405180830381865af4158015611ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af99190613ddb565b949350505050565b6000606082804210611b255760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c9190613c7d565b15611bb95760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615611bdc5760405162461bcd60e51b815260040161098190613d2e565b60105462010000900460ff16611c045760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055611c186134a8565b601054610100900460ff1615611c405760405162461bcd60e51b815260040161098190613d7e565b60008911611c8b5760405162461bcd60e51b815260206004820152601860248201527743757276652f6465706f7369745f62656c6f775f7a65726f60401b6044820152606401610981565b611c948961228b565b9093509150611ca16137a5565b89815260208101899052604081018890526080810187905260a0810186905282518390600090611cd357611cd3613fd7565b60200260200101518160c001818152505082600181518110611cf757611cf7613fd7565b6020026020010151816060018181525050600f600081548110611d1c57611d1c613fd7565b60009182526020822001546001600160a01b031660e0830152600f8054909190611d4857611d48613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbd9190613ddb565b610100820152600f80546001908110611dd857611dd8613fd7565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4d9190613ddb565b610120820152604051629d2ea960e41b8152730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906309d2ea9090611e8c906000908590600401613fed565b600060405180830381865af4158015611ea9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ed19190810190613f5b565b6010805462ff0000191662010000179055909b909a5098505050505050505050565b6000806000806000731190da269ffe6f4567fed0c3c9bba01f8837225463faa50b5d60006040518263ffffffff1660e01b8152600401611f3591815260200190565b60a060405180830381865af4158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190614079565b945094509450945094509091929394565b600081804210611fa95760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120209190613c7d565b1561203d5760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156120605760405162461bcd60e51b815260040161098190613d2e565b6120686134a8565b601054610100900460ff16156120905760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff166120b85760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916905560408051630d0e30db60e41b815290516001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2169163d0e30db091349160048082019260009290919082900301818588803b15801561212857600080fd5b505af115801561213c573d6000803e3d6000fd5b506121799350506001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216915030905033346134df565b6040805160a0810182526001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2811682528781166020830152348284015233606083015260105463010000009004166080820152905163fd17568b60e01b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b9061220e9060009085908290600401613e31565b602060405180830381865af415801561222b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224f9190613ddb565b9250848310156122715760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff00001916620100001790559392505050565b60006060601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123069190613c7d565b156123235760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156123465760405162461bcd60e51b815260040161098190613d2e565b604080516002808252606082018352600092839291906020830190803683370190505060405163822f39d560e01b81526000600482015260248101879052909150730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063822f39d590604401600060405180830381865af41580156123c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123eb9190810190613f5b565b909250905060008261240c876ec097ce7bc90715b34b9f10000000006140b9565b61241691906140d0565b90506ec097ce7bc90715b34b9f1000000000818360008151811061243c5761243c613fd7565b602002602001015161244e91906140b9565b61245891906140d0565b8260008151811061246b5761246b613fd7565b6020026020010181815250506ec097ce7bc90715b34b9f1000000000818360018151811061249b5761249b613fd7565b60200260200101516124ad91906140b9565b6124b791906140d0565b826001815181106124ca576124ca613fd7565b602090810291909101015250939492505050565b6000818042106125005760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612553573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125779190613c7d565b156125945760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156125b75760405162461bcd60e51b815260040161098190613d2e565b6125bf6134a8565b601054610100900460ff16156125e75760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff1661260f5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b038a811682528981166020830152818301889052336060830152630100000090930490921660808301525163498e2a2560e11b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063931c544a906126909060009085906004016140f2565b602060405180830381865af41580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d19190613ddb565b9250858311156127235760405162461bcd60e51b815260206004820152601d60248201527f43757276652f61626f76652d6d61782d6f726967696e2d616d6f756e740000006044820152606401610981565b50506010805462ff000019166201000017905595945050505050565b600a546001600160a01b03163314806127df5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ca9190613bc5565b6001600160a01b0316336001600160a01b0316145b6127fb5760405162461bcd60e51b815260040161098190613be2565b604051632e6ce08560e11b8152600060048201526001600160a01b0380861660248301528085166044830152808416606483015282166084820152731190da269ffe6f4567fed0c3c9bba01f8837225490635cd9c10a9060a40160006040518083038186803b15801561286d57600080fd5b505af4158015612881573d6000803e3d6000fd5b5050505050505050565b600a546001600160a01b031633148061292b5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129169190613bc5565b6001600160a01b0316336001600160a01b0316145b6129475760405162461bcd60e51b815260040161098190613be2565b60405181151581527f7c029deaca9b6c66abb68e5f874a812822f0fcaa52a890f980a7ab1afb5edba69060200160405180910390a16010805460ff1916911515919091179055565b600f818154811061299f57600080fd5b6000918252602090912001546001600160a01b0316905081565b601154604080516306a8e1cd60e41b815290516000926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a279190613c7d565b15612a445760405162461bcd60e51b815260040161098190613cd1565b60105460ff1615612a675760405162461bcd60e51b815260040161098190613d2e565b604051637dba2aed60e11b8152600060048201526001600160a01b03808616602483015284166044820152606481018390527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fb7455da90608401611ab8565b600c80546109e690613c19565b600e818154811061299f57600080fd5b60105460009062010000900460ff16612b055760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055612b196134a8565b601054610100900460ff1615612b415760405162461bcd60e51b815260040161098190613d7e565b60405163a4bcd45960e01b8152600060048201526001600160a01b0384166024820152604481018390527385e9690c2d4c6cae31d96f9b5afe6d111d1651579063a4bcd45990606401610af0565b600d818154811061299f57600080fd5b606081804210612bc15760405162461bcd60e51b815260040161098190613c9a565b60105462010000900460ff16612be95760405162461bcd60e51b815260040161098190613c53565b6010805462ff000019169055612bfd6134a8565b601054610100900460ff1615612c255760405162461bcd60e51b815260040161098190613d7e565b60405163eaadf2b560e01b8152600060048201526024810185905260016044820152730a7e79b7a4912ea42f82e25b9c033919b97f6fb09063eaadf2b590606401610fbe565b600a546001600160a01b0316331480612d0b5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf69190613bc5565b6001600160a01b0316336001600160a01b0316145b612d275760405162461bcd60e51b815260040161098190613be2565b60005b600e54811015612e3a57600e8181548110612d4757612d47613fd7565b6000918252602090912001546001600160a01b0390811690831603612dae5760405162461bcd60e51b815260206004820152601d60248201527f43757276652f63616e6e6f742d64656c6574652d6e756d6572616972650000006044820152606401610981565b600f8181548110612dc157612dc1613fd7565b6000918252602090912001546001600160a01b0390811690831603612e285760405162461bcd60e51b815260206004820152601b60248201527f43757276652f63616e6e6f742d64656c6574652d7265736572766500000000006044820152606401610981565b80612e3281614106565b915050612d2a565b506001600160a01b0316600090815260056020526040902080546001600160a81b0319169055565b600a546001600160a01b0316331480612f025750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eed9190613bc5565b6001600160a01b0316336001600160a01b0316145b612f1e5760405162461bcd60e51b815260040161098190613be2565b60405163231888b760e01b8152600060048201526024810186905260448101859052606481018490526084810183905260a48101829052731190da269ffe6f4567fed0c3c9bba01f883722549063231888b79060c40160006040518083038186803b158015612f8c57600080fd5b505af4158015612fa0573d6000803e3d6000fd5b505050505050505050565b600081804210612fcd5760405162461bcd60e51b815260040161098190613c9a565b601160009054906101000a90046001600160a01b03166001600160a01b0316636a8e1cd06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130449190613c7d565b156130615760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156130845760405162461bcd60e51b815260040161098190613d2e565b61308c6134a8565b601054610100900460ff16156130b45760405162461bcd60e51b815260040161098190613d7e565b60105462010000900460ff166130dc5760405162461bcd60e51b815260040161098190613c53565b6010805462ff00001916908190556040805160a0810182526001600160a01b0389811682527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281166020830152818301899052336060830152630100000090930490921660808301525163fd17568b60e01b81527374982d2fd25ca0e0dee702e40affd93bae04d3a69063fd17568b90613180906000908590600190600401613e31565b602060405180830381865af415801561319d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c19190613ddb565b9250848310156131e35760405162461bcd60e51b815260040161098190613e7e565b50506010805462ff0000191662010000179055949350505050565b601154604080516306a8e1cd60e41b815290516060926001600160a01b031691636a8e1cd09160048083019260209291908290030181865afa158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c9190613c7d565b156132895760405162461bcd60e51b815260040161098190613cd1565b60105460ff16156132ac5760405162461bcd60e51b815260040161098190613d2e565b6040516330771ac760e11b81526000600482015260248101839052730a7e79b7a4912ea42f82e25b9c033919b97f6fb0906360ee358e90604401600060405180830381865af4158015613303573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bf9190810190613fa2565b600a546001600160a01b03163314806133cb5750601160009054906101000a90046001600160a01b03166001600160a01b0316639611f3d96040518163ffffffff1660e01b8152600401602060405180830381865afa158015613392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b69190613bc5565b6001600160a01b0316336001600160a01b0316145b6133e75760405162461bcd60e51b815260040161098190613be2565b6001600160a01b03811661344c5760405162461bcd60e51b815260206004820152602660248201527f43757276652f6e65772d6f776e65722d63616e6e6f742d62652d7a65726f2d6160448201526564647265737360d01b6064820152608401610981565b600a546040516001600160a01b038084169216907f0d18b5fd22306e373229b9439188228edca81207d1667f604daf6cef8aa3ee6790600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000814a90726fb9f7cf7566e28db634ff5fa959ceb116146134dd57600080fd5b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261353990859061353f565b50505050565b6000613594826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136169092919063ffffffff16565b80519091501561361157808060200190518101906135b29190613c7d565b6136115760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610981565b505050565b6060611af9848460008561362c565b9392505050565b60608247101561368d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610981565b600080866001600160a01b031685876040516136a9919061411f565b60006040518083038185875af1925050503d80600081146136e6576040519150601f19603f3d011682016040523d82523d6000602084013e6136eb565b606091505b50915091506136fc87838387613707565b979650505050505050565b6060831561377657825160000361376f576001600160a01b0385163b61376f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610981565b5081611af9565b611af9838381511561378b5781518083602001fd5b8060405162461bcd60e51b8152600401610981919061387d565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081525090565b60006020828403121561381357600080fd5b81356001600160e01b03198116811461362557600080fd5b801515811461383957600080fd5b50565b60006020828403121561384e57600080fd5b81356136258161382b565b60005b8381101561387457818101518382015260200161385c565b50506000910152565b602081526000825180602084015261389c816040850160208701613859565b601f01601f19169190910160400192915050565b6001600160a01b038116811461383957600080fd5b600080604083850312156138d857600080fd5b82356138e3816138b0565b946020939093013593505050565b600080600080600060a0868803121561390957600080fd5b8535613914816138b0565b94506020860135613924816138b0565b94979496505050506040830135926060810135926080909101359150565b600081518084526020808501945080840160005b8381101561397257815187529582019590820190600101613956565b509495945050505050565b828152604060208201526000611af96040830184613942565b600080604083850312156139a957600080fd5b50508035926020909101359150565b6020815260006136256020830184613942565b6000806000606084860312156139e057600080fd5b83356139eb816138b0565b925060208401356139fb816138b0565b929592945050506040919091013590565b600060208284031215613a1e57600080fd5b8135613625816138b0565b60008060008060008060c08789031215613a4257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600060608486031215613a8157600080fd5b8335613a8c816138b0565b95602085013595506040909401359392505050565b600060208284031215613ab357600080fd5b5035919050565b60008060008060808587031215613ad057600080fd5b8435613adb816138b0565b93506020850135613aeb816138b0565b92506040850135613afb816138b0565b91506060850135613b0b816138b0565b939692955090935050565b600080600080600060a08688031215613b2e57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613b6457600080fd5b8235613b6f816138b0565b91506020830135613b7f816138b0565b809150509250929050565b60008060008060808587031215613ba057600080fd5b8435613bab816138b0565b966020860135965060408601359560600135945092505050565b600060208284031215613bd757600080fd5b8151613625816138b0565b60208082526019908201527f43757276652f63616c6c65722d69732d6e6f742d6f776e657200000000000000604082015260600190565b600181811c90821680613c2d57607f821691505b602082108103613c4d57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526010908201526f10dd5c9d994bdc994b595b9d195c995960821b604082015260600190565b600060208284031215613c8f57600080fd5b81516136258161382b565b60208082526018908201527f43757276652f74782d646561646c696e652d7061737365640000000000000000604082015260600190565b60208082526039908201527f43757276652f66726f7a656e2d676c6f62616c6c792d6f6e6c792d616c6c6f7760408201527f696e672d70726f706f7274696f6e616c2d776974686472617700000000000000606082015260800190565b60208082526030908201527f43757276652f66726f7a656e2d6f6e6c792d616c6c6f77696e672d70726f706f60408201526f7274696f6e616c2d776974686472617760801b606082015260800190565b6020808252603d908201527f43757276652f656d657267656e63792d6f6e6c792d616c6c6f77696e672d656d60408201527f657267656e63792d70726f706f7274696f6e616c2d7769746864726177000000606082015260800190565b600060208284031215613ded57600080fd5b5051919050565b80516001600160a01b0390811683526020808301518216908401526040808301519084015260608083015182169084015260809182015116910152565b83815260e08101613e456020830185613df4565b82151560c0830152949350505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108bf576108bf613e55565b6020808252601d908201527f43757276652f62656c6f772d6d696e2d7461726765742d616d6f756e74000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112613edc57600080fd5b8151602067ffffffffffffffff80831115613ef957613ef9613eb5565b8260051b604051601f19603f83011681018181108482111715613f1e57613f1e613eb5565b604052938452858101830193838101925087851115613f3c57600080fd5b83870191505b848210156136fc57815183529183019190830190613f42565b60008060408385031215613f6e57600080fd5b82519150602083015167ffffffffffffffff811115613f8c57600080fd5b613f9885828601613ecb565b9150509250929050565b600060208284031215613fb457600080fd5b815167ffffffffffffffff811115613fcb57600080fd5b611af984828501613ecb565b634e487b7160e01b600052603260045260246000fd5b60006101608201905083825282516020830152602083015160408301526040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614058818501836001600160a01b03169052565b84015161012084810191909152909301516101409092019190915292915050565b600080600080600060a0868803121561409157600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b80820281158282048414176108bf576108bf613e55565b6000826140ed57634e487b7160e01b600052601260045260246000fd5b500490565b82815260c081016136256020830184613df4565b60006001820161411857614118613e55565b5060010190565b60008251614131818460208701613859565b919091019291505056fea26469706673582212209fe70fae664b7f88f6ddb308707297efdaab6e0c0059376ecafddee9e2c0cb2164736f6c63430008150033
Deployed Bytecode Sourcemap
6843:22013:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25348:282;;;;;;;;;;-1:-1:-1;25348:282:10;;;;;:::i;:::-;;:::i;:::-;;;470:14:30;;463:22;445:41;;433:2;418:18;25348:282:10;;;;;;;;11793:139;;;;;;;;;;-1:-1:-1;11793:139:10;;;;;:::i;:::-;;:::i;:::-;;1875:26:14;;;;;;;;;;-1:-1:-1;1875:26:14;;;;;;;;1653:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26999:179:10:-;;;;;;;;;;-1:-1:-1;26999:179:10;;;;;:::i;:::-;;:::i;12809:988::-;;;;;;;;;;-1:-1:-1;12809:988:10;;;;;:::i;:::-;;:::i;:::-;;;2723:25:30;;;2711:2;2696:18;12809:988:10;2577:177:30;25254:88:10;;;;;;;;;;-1:-1:-1;25331:4:10;25254:88;;;-1:-1:-1;;;;;3032:32:30;;;3014:51;;3002:2;2987:18;25254:88:10;2868:203:30;27631:115:10;;;;;;;;;;-1:-1:-1;27722:17:10;;27631:115;;28399:146;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;22845:325::-;;;;;;;;;;-1:-1:-1;22845:325:10;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26453:278::-;;;;;;;;;;-1:-1:-1;26453:278:10;;;;;:::i;:::-;;:::i;1703:35:14:-;;;;;;;;;;;;1736:2;1703:35;;;;;5005:4:30;4993:17;;;4975:36;;4963:2;4948:18;1703:35:14;4833:184:30;28666:153:10;;;;;;;;;;-1:-1:-1;28666:153:10;;;;;:::i;:::-;-1:-1:-1;;;;;28776:31:10;;;28729:20;28776:31;;;:18;:31;;;;;:36;;;28666:153;23582:319;;;;;;;;;;-1:-1:-1;23582:319:10;;;;;:::i;:::-;;:::i;19299:2129::-;;;;;;:::i;:::-;;:::i;17649:298::-;;;;;;;;;;-1:-1:-1;17649:298:10;;;;;:::i;:::-;;:::i;17981:1277::-;;;;;;;;;;-1:-1:-1;17981:1277:10;;;;;:::i;:::-;;:::i;11580:207::-;;;;;;;;;;;;;:::i;:::-;;;;6061:25:30;;;6117:2;6102:18;;6095:34;;;;6145:18;;;6138:34;;;;6203:2;6188:18;;6181:34;6246:3;6231:19;;6224:35;6048:3;6033:19;11580:207:10;5802:463:30;13803:924:10;;;;;;:::i;:::-;;:::i;21838:563::-;;;;;;;;;;-1:-1:-1;21838:563:10;;;;;:::i;:::-;;:::i;27378:128::-;;;;;;;;;;-1:-1:-1;27378:128:10;;;;;:::i;:::-;-1:-1:-1;;;;;27475:24:10;27436:16;27475:24;;;:14;:24;;;;;;;27378:128;1586:18:14;;;;;;;;;;-1:-1:-1;1586:18:14;;;;;;;;;;;;;;;-1:-1:-1;;;1586:18:14;;;;;;;;;;;;;;;;;;;;;;;;;;;7149:2:30;7138:22;;;7120:41;;7197:22;;;7192:2;7177:18;;7170:50;7256:22;;;7236:18;;;7229:50;;;;7315:22;;;7310:2;7295:18;;7288:50;7375:22;;;7369:3;7354:19;;7347:51;7429:3;7414:19;;7407:35;;;;7107:3;7092:19;1586:18:14;6843:605:30;16545:782:10;;;;;;;;;;-1:-1:-1;16545:782:10;;;;;:::i;:::-;;:::i;10453:258::-;;;;;;;;;;-1:-1:-1;10453:258:10;;;;;:::i;:::-;;:::i;11938:164::-;;;;;;;;;;-1:-1:-1;11938:164:10;;;;;:::i;:::-;;:::i;1812:25:14:-;;;;;;;;;;-1:-1:-1;1812:25:14;;;;;:::i;:::-;;:::i;15790:298:10:-;;;;;;;;;;-1:-1:-1;15790:298:10;;;;;:::i;:::-;;:::i;1626:20:14:-;;;;;;;;;;-1:-1:-1;1626:20:14;;;;-1:-1:-1;;;;;1626:20:14;;;1677;;;;;;;;;;;;;:::i;1942:29::-;;;;;;;;;;-1:-1:-1;1942:29:14;;;;;;;;;;;1779:27;;;;;;;;;;-1:-1:-1;1779:27:14;;;;;:::i;:::-;;:::i;25859:244:10:-;;;;;;;;;;-1:-1:-1;25859:244:10;;;;;:::i;:::-;;:::i;1745:28:14:-;;;;;;;;;;-1:-1:-1;1745:28:14;;;;;:::i;:::-;;:::i;24339:321:10:-;;;;;;;;;;-1:-1:-1;24339:321:10;;;;;:::i;:::-;;:::i;10841:425::-;;;;;;;;;;-1:-1:-1;10841:425:10;;;;;:::i;:::-;;:::i;1907:29:14:-;;;;;;;;;;-1:-1:-1;1907:29:14;;;;;;;;;;;10211:236:10;;;;;;;;;;-1:-1:-1;10211:236:10;;;;;:::i;:::-;;:::i;28011:158::-;;;;;;;;;;-1:-1:-1;28011:158:10;;;;;:::i;:::-;-1:-1:-1;;;;;28128:24:10;;;28085:18;28128:24;;;:16;:24;;;;;;;;:34;;;;;;;;;;;;;28011:158;14733:727;;;;;;;;;;-1:-1:-1;14733:727:10;;;;;:::i;:::-;;:::i;24992:256::-;;;;;;;;;;-1:-1:-1;24992:256:10;;;;;:::i;:::-;;:::i;12108:237::-;;;;;;;;;;-1:-1:-1;12108:237:10;;;;;:::i;:::-;;:::i;25348:282::-;25415:14;-1:-1:-1;;;;;;;;;25453:45:10;;;;:103;;-1:-1:-1;;;;;;;;;;25524:32:10;;;25453:103;:161;;;-1:-1:-1;;;;;;;;;;25582:32:10;;;25453:161;25441:173;25348:282;-1:-1:-1;;25348:282:10:o;11793:139::-;8136:5;;-1:-1:-1;;;;;8136:5:10;8122:10;:19;;:65;;;8159:6;;;;;;;;;-1:-1:-1;;;;;8159:6:10;-1:-1:-1;;;;;8159:26:10;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8145:42:10;:10;-1:-1:-1;;;;;8145:42:10;;8122:65;8114:103;;;;-1:-1:-1;;;8114:103:10;;;;;;;:::i;:::-;;;;;;;;;11866:26:::1;::::0;470:14:30;;463:22;445:41;;11866:26:10::1;::::0;433:2:30;418:18;11866:26:10::1;;;;;;;11903:9;:22:::0;;;::::1;;;;-1:-1:-1::0;;11903:22:10;;::::1;::::0;;;::::1;::::0;;11793:139::o;1653:18:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26999:179:10:-;8283:10;;27095:13;;8283:10;;;;;8275:39;;;;-1:-1:-1;;;8275:39:10;;;;;;;:::i;:::-;8324:10;:18;;-1:-1:-1;;8324:18:10;;;1037:22:28::1;:20;:22::i;:::-;27131:40:10::2;::::0;-1:-1:-1;;;27131:40:10;;27146:5:::2;27131:40;::::0;::::2;11008:25:30::0;-1:-1:-1;;;;;11069:32:30;;11049:18;;;11042:60;11118:18;;;11111:34;;;27131:6:10::2;::::0;:14:::2;::::0;10981:18:30;;27131:40:10::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8363:10:::0;:17;;-1:-1:-1;;8363:17:10;;;;;27120:51;26999:179;-1:-1:-1;;;26999:179:10:o;12809:988::-;13156:21;13011:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8989:6:::1;;;;;;;;;-1:-1:-1::0;;;;;8989:6:10::1;-1:-1:-1::0;;;;;8989:27:10::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1::0;;;8980:100:10::1;;;;;;;:::i;:::-;8436:6:::2;::::0;::::2;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::2;;;;;;;:::i;:::-;1037:22:28::3;:20;:22::i;:::-;8704:9:10::4;::::0;::::4;::::0;::::4;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::4;;;;;;;:::i;:::-;8283:10:::5;::::0;;;::::5;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::5;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::5;::::0;;;;-1:-1:-1;;;;;;;;;;;;;13234:27:10;;::::6;::::0;;13271;;::::6;-1:-1:-1::0;;;;13271:27:10;;;-1:-1:-1;;;13308:39:10;;;13380:10:::6;-1:-1:-1::0;;;13357:33:10;;;13426:12;;;::::6;::::0;;::::6;-1:-1:-1::0;;;13400:38:10;13472:47;;-1:-1:-1;;;13472:47:10;;::::6;::::0;::::6;3014:51:30::0;;;;13472:47:10;;-1:-1:-1;;;;13271:27:10;13472:25:::6;::::0;2987:18:30;;;;;-1:-1:-1;;13472:47:10;;;;;;13271:27;13472:47:::6;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13529:41;::::0;-1:-1:-1;;;13529:41:10;;13448:71;;-1:-1:-1;13529:5:10::6;::::0;:16:::6;::::0;:41:::6;::::0;13546:5:::6;::::0;13553:9;;13546:5;;13529:41:::6;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13629:20:10::6;::::0;::::6;::::0;13603:47:::6;::::0;-1:-1:-1;;;13603:47:10;;-1:-1:-1;;;;;3032:32:30;;;13603:47:10::6;::::0;::::6;3014:51:30::0;13580:20:10::6;::::0;13603:25;::::6;::::0;::::6;::::0;2987:18:30;;13603:47:10::6;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13580:70:::0;-1:-1:-1;13676:28:10::6;13691:13:::0;13580:70;13676:28:::6;:::i;:::-;13660:44;;13740:16;13723:13;:33;;13715:75;;;;-1:-1:-1::0;;;13715:75:10::6;;;;;;;:::i;:::-;-1:-1:-1::0;;8363:10:10::5;:17:::0;;-1:-1:-1;;8363:17:10::5;::::0;::::5;::::0;;-1:-1:-1;12809:988:10;;;-1:-1:-1;;;;;;12809:988:10:o;28399:146::-;28504:34;;-1:-1:-1;;;28504:34:10;;28441:14;28504:34;;;2723:25:30;;;28441:14:10;28457:28;;28504:13;;:27;;2696:18:30;;28504:34:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28504:34:10;;;;;;;;;;;;:::i;:::-;28497:41;;;;28399:146;;:::o;22845:325::-;8560:9;;23040:29;;8560:9;;;;;8552:83;;;;-1:-1:-1;;;8552:83:10;;;;;;;:::i;:::-;22968:9:::1;8876;8858:15;:27;8850:64;;;;-1:-1:-1::0;;;8850:64:10::1;;;;;;;:::i;:::-;8283:10:::2;::::0;;;::::2;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::2;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::2;::::0;;1037:22:28::3;:20;:22::i;:::-;23092:71:10::4;::::0;-1:-1:-1;;;23092:71:10;;23135:5:::4;23092:71;::::0;::::4;16599:25:30::0;;;16640:18;;;16633:34;;;16683:18;;;16676:50;23092:21:10::4;::::0;:42:::4;::::0;16572:18:30;;23092:71:10::4;;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;;;;;::::0;;::::4;-1:-1:-1::0;;23092:71:10::4;::::0;::::4;;::::0;::::4;::::0;;;::::4;::::0;::::4;:::i;:::-;23085:78;;-1:-1:-1::0;8363:10:10::2;:17:::0;;-1:-1:-1;;8363:17:10::2;::::0;::::2;::::0;;22845:325;;-1:-1:-1;;22845:325:10:o;26453:278::-;8283:10;;26628:13;;8283:10;;;;;8275:39;;;;-1:-1:-1;;;8275:39:10;;;;;;;:::i;:::-;8324:10;:18;;-1:-1:-1;;8324:18:10;;;1037:22:28::1;:20;:22::i;:::-;8704:9:10::2;::::0;::::2;::::0;::::2;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::2;;;;;;;:::i;:::-;26668:56:::3;::::0;-1:-1:-1;;;26668:56:10;;26688:5:::3;26668:56;::::0;::::3;17364:25:30::0;-1:-1:-1;;;;;17463:15:30;;;17443:18;;;17436:43;17515:15;;17495:18;;;17488:43;17547:18;;;17540:34;;;26668:6:10::3;::::0;:19:::3;::::0;17336::30;;26668:56:10::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8363:10:::0;:17;;-1:-1:-1;;8363:17:10;;;;;26657:67;26453:278;-1:-1:-1;;;;26453:278:10:o;23582:319::-;23771:29;23676:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8283:10:::1;::::0;;;::::1;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::1;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::1;::::0;;1037:22:28::2;:20;:22::i;:::-;8704:9:10::3;::::0;::::3;::::0;::::3;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::3;;;;;;;:::i;19299:2129::-:0;19703:21;19726:26;19558:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8989:6:::1;;;;;;;;;-1:-1:-1::0;;;;;8989:6:10::1;-1:-1:-1::0;;;;;8989:27:10::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1::0;;;8980:100:10::1;;;;;;;:::i;:::-;8436:6:::2;::::0;::::2;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::2;;;;;;;:::i;:::-;8283:10:::3;::::0;;;::::3;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::3;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::3;::::0;;1037:22:28::4;:20;:22::i;:::-;8704:9:10::5;::::0;::::5;::::0;::::5;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::5;;;;;;;:::i;:::-;19787:1:::6;19776:8;:12;19768:49;;;::::0;-1:-1:-1;;;19768:49:10;;17787:2:30;19768:49:10::6;::::0;::::6;17769:21:30::0;17826:2;17806:18;;;17799:30;-1:-1:-1;;;17845:18:30;;;17838:54;17909:18;;19768:49:10::6;17585:348:30::0;19768:49:10::6;19856:21;19868:8;19856:11;:21::i;:::-;19827:50;;;;;;;;19894:4;-1:-1:-1::0;;;;;19888:19:10::6;;19915:9;19888:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;::::0;::::6;;;;;-1:-1:-1::0;19937:67:10::6;::::0;-1:-1:-1;;;;;;;19944:4:10::6;19937:29;::::0;-1:-1:-1;19975:4:10::6;::::0;-1:-1:-1;19982:10:10::6;19994:9;19937:29;:67::i;:::-;20014:31;;:::i;:::-;20055:32:::0;;;20097:21:::6;::::0;::::6;:39:::0;;;20146:20:::6;::::0;::::6;:37:::0;;;20193:21:::6;::::0;::::6;:39:::0;;;20242:20:::6;::::0;::::6;:37:::0;;;20312:12;;:9;;20055:21:::6;::::0;20312:12:::6;;;;:::i;:::-;;;;;;;20289;:20;;:35;;;::::0;::::6;20358:9;20368:1;20358:12;;;;;;;;:::i;:::-;;;;;;;20334;:21;;:36;;;::::0;::::6;20402:8;20411:1;20402:11;;;;;;;;:::i;:::-;;::::0;;;::::6;::::0;;::::6;::::0;-1:-1:-1;;;;;20402:11:10::6;20380:19;::::0;::::6;:33:::0;20455:8:::6;:11:::0;;:8;;20402:11;20455::::6;;;;:::i;:::-;;::::0;;;::::6;::::0;;;::::6;::::0;20448:44:::6;::::0;-1:-1:-1;;;20448:44:10;;20486:4:::6;20448:44;::::0;::::6;3014:51:30::0;-1:-1:-1;;;;;20455:11:10;;::::6;::::0;20448:29:::6;::::0;2987:18:30;;20448:44:10::6;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20423:22;::::0;::::6;:69:::0;20534:8:::6;:11:::0;;20543:1:::6;::::0;20534:11;::::6;;;;;:::i;:::-;;::::0;;;::::6;::::0;;;::::6;::::0;20527:44:::6;::::0;-1:-1:-1;;;20527:44:10;;20565:4:::6;20527:44;::::0;::::6;3014:51:30::0;-1:-1:-1;;;;;20534:11:10;;::::6;::::0;20527:29:::6;::::0;2987:18:30;;20527:44:10::6;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20502:22;::::0;::::6;:69:::0;20610:62:::6;::::0;-1:-1:-1;;;20610:62:10;;:21:::6;::::0;:41:::6;::::0;:62:::6;::::0;20652:5:::6;::::0;20502:12;;20610:62:::6;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;::::0;;::::6;-1:-1:-1::0;;20610:62:10::6;::::0;::::6;;::::0;::::6;::::0;;;::::6;::::0;::::6;:::i;:::-;20581:91;;;;;;;;20683:17;20774:4;-1:-1:-1::0;;;;;20718:60:10::6;20731:5;:12;;20744:1;20731:15;;;;;;;;:::i;:::-;;::::0;;;::::6;::::0;;;;::::6;:20:::0;20718:52:::6;::::0;;-1:-1:-1;;;20718:52:10;;;;-1:-1:-1;;;;;20731:20:10;;::::6;::::0;20718:50:::6;::::0;:52:::6;::::0;;::::6;::::0;;;;;;20731:20;20718:52:::6;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20718:60:10::6;::::0;20714:325:::6;;20818:9;20828:1;20818:12;;;;;;;;:::i;:::-;;;;;;;20806:9;:24;;;;:::i;:::-;20794:36;;20714:325;;;20907:4;-1:-1:-1::0;;;;;20851:60:10::6;20864:5;:12;;20877:1;20864:15;;;;;;;;:::i;:::-;;::::0;;;::::6;::::0;;;;::::6;:20:::0;20851:52:::6;::::0;;-1:-1:-1;;;20851:52:10;;;;-1:-1:-1;;;;;20864:20:10;;::::6;::::0;20851:50:::6;::::0;:52:::6;::::0;;::::6;::::0;;;;;;20864:20;20851:52:::6;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20851:60:10::6;::::0;20847:192:::6;;20951:9;20961:1;20951:12;;;;;;;;:::i;20847:192::-;20994:34;::::0;-1:-1:-1;;;20994:34:10;;19277:2:30;20994:34:10::6;::::0;::::6;19259:21:30::0;19316:2;19296:18;;;19289:30;19355:26;19335:18;;;19328:54;19399:18;;20994:34:10::6;19075:348:30::0;20847:192:10::6;21099:13:::0;;21095:284:::6;;21128:67;-1:-1:-1::0;;;;;21135:4:10::6;21128:29;21158:10;21178:4;21185:9:::0;21128:29:::6;:67::i;:::-;21209:31;::::0;-1:-1:-1;;;21209:31:10;;::::6;::::0;::::6;2723:25:30::0;;;21215:4:10::6;-1:-1:-1::0;;;;;21209:20:10::6;::::0;::::6;::::0;2696:18:30;;21209:31:10::6;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;::::0;::::6;;;;;-1:-1:-1::0;;21272:37:10::6;::::0;21255:12:::6;::::0;-1:-1:-1;21272:10:10::6;::::0;-1:-1:-1;21295:9:10;;21255:12;21272:37;21255:12;21272:37;21295:9;21272:10;:37:::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21254:55;;;21331:7;21323:45;;;::::0;-1:-1:-1;;;21323:45:10;;19840:2:30;21323:45:10::6;::::0;::::6;19822:21:30::0;19879:2;19859:18;;;19852:30;19918:27;19898:18;;;19891:55;19963:18;;21323:45:10::6;19638:349:30::0;21323:45:10::6;21114:265;21095:284;21388:33;;-1:-1:-1::0;8363:10:10::3;:17:::0;;-1:-1:-1;;8363:17:10::3;::::0;::::3;::::0;;19299:2129;;;;-1:-1:-1;19299:2129:10;-1:-1:-1;;;;;19299:2129:10:o;17649:298::-;8989:6;;:29;;;-1:-1:-1;;;8989:29:10;;;;17827:21;;-1:-1:-1;;;;;8989:6:10;;:27;;:29;;;;;;;;;;;;;;:6;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1;;;8980:100:10;;;;;;;:::i;:::-;8436:6:::1;::::0;::::1;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::1;;;;;;;:::i;:::-;17880:60:::2;::::0;-1:-1:-1;;;17880:60:10;;17901:5:::2;17880:60;::::0;::::2;17364:25:30::0;-1:-1:-1;;;;;17463:15:30;;;17443:18;;;17436:43;17515:15;;17495:18;;;17488:43;17547:18;;;17540:34;;;17880:5:10::2;::::0;:20:::2;::::0;17336:19:30;;17880:60:10::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17864:76:::0;17649:298;-1:-1:-1;;;;17649:298:10:o;17981:1277::-;18366:21;18389:26;18221:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8989:6:::1;;;;;;;;;-1:-1:-1::0;;;;;8989:6:10::1;-1:-1:-1::0;;;;;8989:27:10::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1::0;;;8980:100:10::1;;;;;;;:::i;:::-;8436:6:::2;::::0;::::2;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::2;;;;;;;:::i;:::-;8283:10:::3;::::0;;;::::3;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::3;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::3;::::0;;1037:22:28::4;:20;:22::i;:::-;8704:9:10::5;::::0;::::5;::::0;::::5;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::5;;;;;;;:::i;:::-;18450:1:::6;18439:8;:12;18431:49;;;::::0;-1:-1:-1;;;18431:49:10;;17787:2:30;18431:49:10::6;::::0;::::6;17769:21:30::0;17826:2;17806:18;;;17799:30;-1:-1:-1;;;17845:18:30;;;17838:54;17909:18;;18431:49:10::6;17585:348:30::0;18431:49:10::6;18519:21;18531:8;18519:11;:21::i;:::-;18490:50:::0;;-1:-1:-1;18490:50:10;-1:-1:-1;18550:31:10::6;;:::i;:::-;18591:32:::0;;;18633:21:::6;::::0;::::6;:39:::0;;;18682:20:::6;::::0;::::6;:37:::0;;;18729:21:::6;::::0;::::6;:39:::0;;;18778:20:::6;::::0;::::6;:37:::0;;;18848:12;;:9;;18591:21:::6;::::0;18848:12:::6;;;;:::i;:::-;;;;;;;18825;:20;;:35;;;::::0;::::6;18894:9;18904:1;18894:12;;;;;;;;:::i;:::-;;;;;;;18870;:21;;:36;;;::::0;::::6;18938:8;18947:1;18938:11;;;;;;;;:::i;:::-;;::::0;;;::::6;::::0;;::::6;::::0;-1:-1:-1;;;;;18938:11:10::6;18916:19;::::0;::::6;:33:::0;18991:8:::6;:11:::0;;:8;;18938:11;18991::::6;;;;:::i;:::-;;::::0;;;::::6;::::0;;;::::6;::::0;18984:44:::6;::::0;-1:-1:-1;;;18984:44:10;;19022:4:::6;18984:44;::::0;::::6;3014:51:30::0;-1:-1:-1;;;;;18991:11:10;;::::6;::::0;18984:29:::6;::::0;2987:18:30;;18984:44:10::6;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18959:22;::::0;::::6;:69:::0;19070:8:::6;:11:::0;;19079:1:::6;::::0;19070:11;::::6;;;;;:::i;:::-;;::::0;;;::::6;::::0;;;::::6;::::0;19063:44:::6;::::0;-1:-1:-1;;;19063:44:10;;19101:4:::6;19063:44;::::0;::::6;3014:51:30::0;-1:-1:-1;;;;;19070:11:10;;::::6;::::0;19063:29:::6;::::0;2987:18:30;;19063:44:10::6;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19038:22;::::0;::::6;:69:::0;19146:62:::6;::::0;-1:-1:-1;;;19146:62:10;;:21:::6;::::0;:41:::6;::::0;:62:::6;::::0;19188:5:::6;::::0;19038:12;;19146:62:::6;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;::::0;;::::6;-1:-1:-1::0;;19146:62:10::6;::::0;::::6;;::::0;::::6;::::0;;;::::6;::::0;::::6;:::i;:::-;8363:10:::3;:17:::0;;-1:-1:-1;;8363:17:10::3;::::0;::::3;::::0;;19117:91;;;;-1:-1:-1;19117:91:10;-1:-1:-1;;;;;;;;;17981:1277:10:o;11580:207::-;11648:14;11664:13;11679:14;11695:16;11713:15;11751:12;:22;11774:5;11751:29;;;;;;;;;;;;;2723:25:30;;2711:2;2696:18;;2577:177;11751:29:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11744:36;;;;;;;;;;11580:207;;;;;:::o;13803:924::-;14087:21;13942:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8989:6:::1;;;;;;;;;-1:-1:-1::0;;;;;8989:6:10::1;-1:-1:-1::0;;;;;8989:27:10::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1::0;;;8980:100:10::1;;;;;;;:::i;:::-;8436:6:::2;::::0;::::2;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::2;;;;;;;:::i;:::-;1037:22:28::3;:20;:22::i;:::-;8704:9:10::4;::::0;::::4;::::0;::::4;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::4;;;;;;;:::i;:::-;8283:10:::5;::::0;;;::::5;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::5;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::5;::::0;;14203:39:::6;::::0;;-1:-1:-1;;;14203:39:10;;;;-1:-1:-1;;;;;14209:4:10::6;14203:19;::::0;::::6;::::0;14230:9:::6;::::0;14203:39:::6;::::0;;::::6;::::0;8337:5:::5;::::0;14203:39;;;;;;;;14230:9;14203:19;:39;::::6;;::::0;::::6;;;;::::0;::::6;;;;;;;;;;;;::::0;::::6;;;;;-1:-1:-1::0;14252:67:10::6;::::0;-1:-1:-1;;;;;;;14259:4:10::6;14252:29;::::0;-1:-1:-1;14290:4:10::6;::::0;-1:-1:-1;14297:10:10::6;14309:9;14252:29;:67::i;:::-;-1:-1:-1::0;;;;;;;;;;;;;14390:4:10::6;14370:24:::0;::::6;::::0;;14404:27;;::::6;-1:-1:-1::0;;;14404:27:10;14467:9:::6;-1:-1:-1::0;;;14441:35:10;14509:10:::6;-1:-1:-1::0;;;14486:33:10;14555:12:::6;::::0;;;::::6;;-1:-1:-1::0;;;14529:38:10;14593:41;;-1:-1:-1;;;14593:41:10;;:5:::6;::::0;:16:::6;::::0;:41:::6;::::0;-1:-1:-1;;;;;;14593:41:10::6;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14577:57;;14670:16;14653:13;:33;;14645:75;;;;-1:-1:-1::0;;;14645:75:10::6;;;;;;;:::i;:::-;-1:-1:-1::0;;8363:10:10::5;:17:::0;;-1:-1:-1;;8363:17:10::5;::::0;::::5;::::0;;13803:924;;-1:-1:-1;;;13803:924:10:o;21838:563::-;21972:7;21981:16;8989:6;;;;;;;;;-1:-1:-1;;;;;8989:6:10;-1:-1:-1;;;;;8989:27:10;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1;;;8980:100:10;;;;;;;:::i;:::-;8436:6:::1;::::0;::::1;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::1;;;;;;;:::i;:::-;22106:16:::2;::::0;;22120:1:::2;22106:16:::0;;;;;::::2;::::0;;22055::::2;::::0;;;22106;22120:1;22106:16:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;;22152:62:10::2;::::0;-1:-1:-1;;;22152:62:10;;22198:5:::2;22152:62;::::0;::::2;20629:25:30::0;20670:18;;;20663:34;;;22081:41:10;;-1:-1:-1;22152:21:10::2;::::0;:45:::2;::::0;20602:18:30;;22152:62:10::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;22152:62:10::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;:::-;22132:82:::0;;-1:-1:-1;22132:82:10;-1:-1:-1;22224:13:10::2;22132:82:::0;22241:15:::2;:8:::0;22252:4:::2;22241:15;:::i;:::-;22240:28;;;;:::i;:::-;22224:44;;22310:4;22301:5;22290;22296:1;22290:8;;;;;;;;:::i;:::-;;;;;;;:16;;;;:::i;:::-;22289:25;;;;:::i;:::-;22278:5;22284:1;22278:8;;;;;;;;:::i;:::-;;;;;;:36;;;::::0;::::2;22356:4;22347:5;22336;22342:1;22336:8;;;;;;;;:::i;:::-;;;;;;;:16;;;;:::i;:::-;22335:25;;;;:::i;:::-;22324:5;22330:1;22324:8;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;:36;-1:-1:-1;22378:8:10;;21838:563;-1:-1:-1;;;21838:563:10:o;16545:782::-;16892:21;16747:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8989:6:::1;;;;;;;;;-1:-1:-1::0;;;;;8989:6:10::1;-1:-1:-1::0;;;;;8989:27:10::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1::0;;;8980:100:10::1;;;;;;;:::i;:::-;8436:6:::2;::::0;::::2;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::2;;;;;;;:::i;:::-;1037:22:28::3;:20;:22::i;:::-;8704:9:10::4;::::0;::::4;::::0;::::4;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::4;;;;;;;:::i;:::-;8283:10:::5;::::0;;;::::5;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::5;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::5;::::0;;;;-1:-1:-1;;;;;;;;;;;;;16970:27:10;;::::6;::::0;;17007;;::::6;-1:-1:-1::0;;;17007:27:10;-1:-1:-1;;;17044:39:10;;;17116:10:::6;-1:-1:-1::0;;;17093:33:10;17162:12;;;::::6;::::0;;::::6;-1:-1:-1::0;;;17136:38:10;17200:34;-1:-1:-1;;;17200:34:10;;:5:::6;::::0;:16:::6;::::0;:34:::6;::::0;-1:-1:-1;;;;17200:34:10::6;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17184:50;;17270:16;17253:13;:33;;17245:75;;;::::0;-1:-1:-1;;;17245:75:10;;21677:2:30;17245:75:10::6;::::0;::::6;21659:21:30::0;21716:2;21696:18;;;21689:30;21755:31;21735:18;;;21728:59;21804:18;;17245:75:10::6;21475:353:30::0;17245:75:10::6;-1:-1:-1::0;;8363:10:10::5;:17:::0;;-1:-1:-1;;8363:17:10::5;::::0;::::5;::::0;;16545:782;;-1:-1:-1;;;;;16545:782:10:o;10453:258::-;8136:5;;-1:-1:-1;;;;;8136:5:10;8122:10;:19;;:65;;;8159:6;;;;;;;;;-1:-1:-1;;;;;8159:6:10;-1:-1:-1;;;;;8159:26:10;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8145:42:10;:10;-1:-1:-1;;;;;8145:42:10;;8122:65;8114:103;;;;-1:-1:-1;;;8114:103:10;;;;;;;:::i;:::-;10614:90:::1;::::0;-1:-1:-1;;;10614:90:10;;10642:5:::1;10614:90;::::0;::::1;22120:25:30::0;-1:-1:-1;;;;;22219:15:30;;;22199:18;;;22192:43;22271:15;;;22251:18;;;22244:43;22323:15;;;22303:18;;;22296:43;22376:15;;22355:19;;;22348:44;10614:12:10::1;::::0;:27:::1;::::0;22092:19:30;;10614:90:10::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10453:258:::0;;;;:::o;11938:164::-;8136:5;;-1:-1:-1;;;;;8136:5:10;8122:10;:19;;:65;;;8159:6;;;;;;;;;-1:-1:-1;;;;;8159:6:10;-1:-1:-1;;;;;8159:26:10;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8145:42:10;:10;-1:-1:-1;;;;;8145:42:10;;8122:65;8114:103;;;;-1:-1:-1;;;8114:103:10;;;;;;;:::i;:::-;12020:33:::1;::::0;470:14:30;;463:22;445:41;;12020:33:10::1;::::0;433:2:30;418:18;12020:33:10::1;;;;;;;12064:6;:31:::0;;-1:-1:-1;;12064:31:10::1;::::0;::::1;;::::0;;;::::1;::::0;;11938:164::o;1812:25:14:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1812:25:14;;-1:-1:-1;1812:25:14;:::o;15790:298:10:-;8989:6;;:29;;;-1:-1:-1;;;8989:29:10;;;;15968:21;;-1:-1:-1;;;;;8989:6:10;;:27;;:29;;;;;;;;;;;;;;:6;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1;;;8980:100:10;;;;;;;:::i;:::-;8436:6:::1;::::0;::::1;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::1;;;;;;;:::i;:::-;16021:60:::2;::::0;-1:-1:-1;;;16021:60:10;;16042:5:::2;16021:60;::::0;::::2;17364:25:30::0;-1:-1:-1;;;;;17463:15:30;;;17443:18;;;17436:43;17515:15;;17495:18;;;17488:43;17547:18;;;17540:34;;;16021:5:10::2;::::0;:20:::2;::::0;17336:19:30;;16021:60:10::2;17105:475:30::0;1677:20:14;;;;;;;:::i;1779:27::-;;;;;;;;;;;;25859:244:10;8283:10;;26013:13;;8283:10;;;;;8275:39;;;;-1:-1:-1;;;8275:39:10;;;;;;;:::i;:::-;8324:10;:18;;-1:-1:-1;;8324:18:10;;;1037:22:28::1;:20;:22::i;:::-;8704:9:10::2;::::0;::::2;::::0;::::2;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::2;;;;;;;:::i;:::-;26053:43:::3;::::0;-1:-1:-1;;;26053:43:10;;26069:5:::3;26053:43;::::0;::::3;11008:25:30::0;-1:-1:-1;;;;;11069:32:30;;11049:18;;;11042:60;11118:18;;;11111:34;;;26053:6:10::3;::::0;:15:::3;::::0;10981:18:30;;26053:43:10::3;10778:373:30::0;1745:28:14;;;;;;;;;;;;24339:321:10;24531:29;24436:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8283:10:::1;::::0;;;::::1;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::1;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::1;::::0;;1037:22:28::2;:20;:22::i;:::-;8704:9:10::3;::::0;::::3;::::0;::::3;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::3;;;;;;;:::i;:::-;24583:70:::4;::::0;-1:-1:-1;;;24583:70:10;;24626:5:::4;24583:70;::::0;::::4;16599:25:30::0;16640:18;;;16633:34;;;24648:4:10::4;16683:18:30::0;;;16676:50;24583:21:10::4;::::0;:42:::4;::::0;16572:18:30;;24583:70:10::4;16375:357:30::0;10841:425:10;8136:5;;-1:-1:-1;;;;;8136:5:10;8122:10;:19;;:65;;;8159:6;;;;;;;;;-1:-1:-1;;;;;8159:6:10;-1:-1:-1;;;;;8159:26:10;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8145:42:10;:10;-1:-1:-1;;;;;8145:42:10;;8122:65;8114:103;;;;-1:-1:-1;;;8114:103:10;;;;;;;:::i;:::-;10923:9:::1;10918:293;10942:10;:17:::0;10938:21;::::1;10918:293;;;10999:10;11010:1;10999:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10999:13:10;;::::1;10984:28:::0;;::::1;::::0;10980:106:::1;;11032:39;::::0;-1:-1:-1;;;11032:39:10;;22605:2:30;11032:39:10::1;::::0;::::1;22587:21:30::0;22644:2;22624:18;;;22617:30;22683:31;22663:18;;;22656:59;22732:18;;11032:39:10::1;22403:353:30::0;10980:106:10::1;11118:8;11127:1;11118:11;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11118:11:10;;::::1;11103:26:::0;;::::1;::::0;11099:102:::1;;11149:37;::::0;-1:-1:-1;;;11149:37:10;;22963:2:30;11149:37:10::1;::::0;::::1;22945:21:30::0;23002:2;22982:18;;;22975:30;23041:29;23021:18;;;23014:57;23088:18;;11149:37:10::1;22761:351:30::0;11099:102:10::1;10961:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10918:293;;;-1:-1:-1::0;;;;;;11228:31:10::1;:5;:31:::0;;;:18:::1;:31;::::0;;;;11221:38;;-1:-1:-1;;;;;;11221:38:10;;;10841:425::o;10211:236::-;8136:5;;-1:-1:-1;;;;;8136:5:10;8122:10;:19;;:65;;;8159:6;;;;;;;;;-1:-1:-1;;;;;8159:6:10;-1:-1:-1;;;;;8159:26:10;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8145:42:10;:10;-1:-1:-1;;;;;8145:42:10;;8122:65;8114:103;;;;-1:-1:-1;;;8114:103:10;;;;;;;:::i;:::-;10365:75:::1;::::0;-1:-1:-1;;;10365:75:10;;10388:5:::1;10365:75;::::0;::::1;23572:25:30::0;23613:18;;;23606:34;;;23656:18;;;23649:34;;;23699:18;;;23692:34;;;23742:19;;;23735:35;;;23786:19;;;23779:35;;;10365:12:10::1;::::0;:22:::1;::::0;23544:19:30;;10365:75:10::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10211:236:::0;;;;;:::o;14733:727::-;15022:21;14877:9;8876;8858:15;:27;8850:64;;;;-1:-1:-1;;;8850:64:10;;;;;;;:::i;:::-;8989:6:::1;;;;;;;;;-1:-1:-1::0;;;;;8989:6:10::1;-1:-1:-1::0;;;;;8989:27:10::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1::0;;;8980:100:10::1;;;;;;;:::i;:::-;8436:6:::2;::::0;::::2;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::2;;;;;;;:::i;:::-;1037:22:28::3;:20;:22::i;:::-;8704:9:10::4;::::0;::::4;::::0;::::4;;;8703:10;8695:84;;;;-1:-1:-1::0;;;8695:84:10::4;;;;;;;:::i;:::-;8283:10:::5;::::0;;;::::5;;;8275:39;;;;-1:-1:-1::0;;;8275:39:10::5;;;;;;;:::i;:::-;8324:10;:18:::0;;-1:-1:-1;;8324:18:10::5;::::0;;;;-1:-1:-1;;;;;;;;;;;;;15100:27:10;;::::6;::::0;;15157:4:::6;15137:24:::0;::::6;-1:-1:-1::0;;;15137:24:10;-1:-1:-1;;;15171:39:10;;;15243:10:::6;-1:-1:-1::0;;;15220:33:10;15289:12;;;::::6;::::0;;::::6;-1:-1:-1::0;;;15263:38:10;15327:40;-1:-1:-1;;;15327:40:10;;:5:::6;::::0;:16:::6;::::0;:40:::6;::::0;-1:-1:-1;;;;;;15327:40:10::6;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15311:56;;15403:16;15386:13;:33;;15378:75;;;;-1:-1:-1::0;;;15378:75:10::6;;;;;;;:::i;:::-;-1:-1:-1::0;;8363:10:10::5;:17:::0;;-1:-1:-1;;8363:17:10::5;::::0;::::5;::::0;;14733:727;;-1:-1:-1;;;;14733:727:10:o;24992:256::-;8989:6;;:29;;;-1:-1:-1;;;8989:29:10;;;;25134:16;;-1:-1:-1;;;;;8989:6:10;;:27;;:29;;;;;;;;;;;;;;:6;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8988:30;8980:100;;;;-1:-1:-1;;;8980:100:10;;;;;;;:::i;:::-;8436:6:::1;::::0;::::1;;8435:7;8427:68;;;;-1:-1:-1::0;;;8427:68:10::1;;;;;;;:::i;:::-;25173::::2;::::0;-1:-1:-1;;;25173:68:10;;25220:5:::2;25173:68;::::0;::::2;20629:25:30::0;20670:18;;;20663:34;;;25173:21:10::2;::::0;:46:::2;::::0;20602:18:30;;25173:68:10::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;::::0;;::::2;-1:-1:-1::0;;25173:68:10::2;::::0;::::2;;::::0;::::2;::::0;;;::::2;::::0;::::2;:::i;12108:237::-:0;8136:5;;-1:-1:-1;;;;;8136:5:10;8122:10;:19;;:65;;;8159:6;;;;;;;;;-1:-1:-1;;;;;8159:6:10;-1:-1:-1;;;;;8159:26:10;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8145:42:10;:10;-1:-1:-1;;;;;8145:42:10;;8122:65;8114:103;;;;-1:-1:-1;;;8114:103:10;;;;;;;:::i;:::-;-1:-1:-1;;;;;12191:23:10;::::1;12183:74;;;::::0;-1:-1:-1;;;12183:74:10;;24027:2:30;12183:74:10::1;::::0;::::1;24009:21:30::0;24066:2;24046:18;;;24039:30;24105:34;24085:18;;;24078:62;-1:-1:-1;;;24156:18:30;;;24149:36;24202:19;;12183:74:10::1;23825:402:30::0;12183:74:10::1;12293:5;::::0;12273:37:::1;::::0;-1:-1:-1;;;;;12273:37:10;;::::1;::::0;12293:5:::1;::::0;12273:37:::1;::::0;12293:5:::1;::::0;12273:37:::1;12321:5;:17:::0;;-1:-1:-1;;;;;;12321:17:10::1;-1:-1:-1::0;;;;;12321:17:10;;;::::1;::::0;;;::::1;::::0;;12108:237::o;836:96:28:-;907:4;-1:-1:-1;;;;;916:8:28;899:25;;891:34;;;;;;836:96::o;938:203:4:-;1065:68;;;-1:-1:-1;;;;;24490:15:30;;;1065:68:4;;;24472:34:30;24542:15;;24522:18;;;24515:43;24574:18;;;;24567:34;;;1065:68:4;;;;;;;;;;24407:18:30;;;;1065:68:4;;;;;;;;-1:-1:-1;;;;;1065:68:4;-1:-1:-1;;;1065:68:4;;;1038:96;;1058:5;;1038:19;:96::i;:::-;938:203;;;;:::o;3583:706::-;4002:23;4028:69;4056:4;4028:69;;;;;;;;;;;;;;;;;4036:5;-1:-1:-1;;;;;4028:27:4;;;:69;;;;;:::i;:::-;4111:17;;4002:95;;-1:-1:-1;4111:21:4;4107:176;;4206:10;4195:30;;;;;;;;;;;;:::i;:::-;4187:85;;;;-1:-1:-1;;;4187:85:4;;24814:2:30;4187:85:4;;;24796:21:30;24853:2;24833:18;;;24826:30;24892:34;24872:18;;;24865:62;-1:-1:-1;;;24943:18:30;;;24936:40;24993:19;;4187:85:4;24612:406:30;4187:85:4;3653:636;3583:706;;:::o;4109:223:5:-;4242:12;4273:52;4295:6;4303:4;4309:1;4312:12;4273:21;:52::i;4109:223::-;;;;;;:::o;5166:446::-;5331:12;5388:5;5363:21;:30;;5355:81;;;;-1:-1:-1;;;5355:81:5;;25225:2:30;5355:81:5;;;25207:21:30;25264:2;25244:18;;;25237:30;25303:34;25283:18;;;25276:62;-1:-1:-1;;;25354:18:30;;;25347:36;25400:19;;5355:81:5;25023:402:30;5355:81:5;5447:12;5461:23;5488:6;-1:-1:-1;;;;;5488:11:5;5507:5;5514:4;5488:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5446:73;;;;5536:69;5563:6;5571:7;5580:10;5592:12;5536:26;:69::i;:::-;5529:76;5166:446;-1:-1:-1;;;;;;;5166:446:5:o;7672:628::-;7852:12;7880:7;7876:418;;;7907:10;:17;7928:1;7907:22;7903:286;;-1:-1:-1;;;;;1702:19:5;;;8114:60;;;;-1:-1:-1;;;8114:60:5;;25924:2:30;8114:60:5;;;25906:21:30;25963:2;25943:18;;;25936:30;26002:31;25982:18;;;25975:59;26051:18;;8114:60:5;25722:353:30;8114:60:5;-1:-1:-1;8209:10:5;8202:17;;7876:418;8250:33;8258:10;8270:12;8981:17;;:21;8977:379;;9209:10;9203:17;9265:15;9252:10;9248:2;9244:19;9237:44;8977:379;9332:12;9325:20;;-1:-1:-1;;;9325:20:5;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:286:30:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:30;;209:43;;199:71;;266:1;263;256:12;497:118;583:5;576:13;569:21;562:5;559:32;549:60;;605:1;602;595:12;549:60;497:118;:::o;620:241::-;676:6;729:2;717:9;708:7;704:23;700:32;697:52;;;745:1;742;735:12;697:52;784:9;771:23;803:28;825:5;803:28;:::i;866:250::-;951:1;961:113;975:6;972:1;969:13;961:113;;;1051:11;;;1045:18;1032:11;;;1025:39;997:2;990:10;961:113;;;-1:-1:-1;;1108:1:30;1090:16;;1083:27;866:250::o;1121:396::-;1270:2;1259:9;1252:21;1233:4;1302:6;1296:13;1345:6;1340:2;1329:9;1325:18;1318:34;1361:79;1433:6;1428:2;1417:9;1413:18;1408:2;1400:6;1396:15;1361:79;:::i;:::-;1501:2;1480:15;-1:-1:-1;;1476:29:30;1461:45;;;;1508:2;1457:54;;1121:396;-1:-1:-1;;1121:396:30:o;1522:131::-;-1:-1:-1;;;;;1597:31:30;;1587:42;;1577:70;;1643:1;1640;1633:12;1658:315;1726:6;1734;1787:2;1775:9;1766:7;1762:23;1758:32;1755:52;;;1803:1;1800;1793:12;1755:52;1842:9;1829:23;1861:31;1886:5;1861:31;:::i;:::-;1911:5;1963:2;1948:18;;;;1935:32;;-1:-1:-1;;;1658:315:30:o;1978:594::-;2073:6;2081;2089;2097;2105;2158:3;2146:9;2137:7;2133:23;2129:33;2126:53;;;2175:1;2172;2165:12;2126:53;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;:::-;2283:5;-1:-1:-1;2340:2:30;2325:18;;2312:32;2353:33;2312:32;2353:33;:::i;:::-;1978:594;;2405:7;;-1:-1:-1;;;;2459:2:30;2444:18;;2431:32;;2510:2;2495:18;;2482:32;;2561:3;2546:19;;;2533:33;;-1:-1:-1;1978:594:30:o;3076:435::-;3129:3;3167:5;3161:12;3194:6;3189:3;3182:19;3220:4;3249:2;3244:3;3240:12;3233:19;;3286:2;3279:5;3275:14;3307:1;3317:169;3331:6;3328:1;3325:13;3317:169;;;3392:13;;3380:26;;3426:12;;;;3461:15;;;;3353:1;3346:9;3317:169;;;-1:-1:-1;3502:3:30;;3076:435;-1:-1:-1;;;;;3076:435:30:o;3516:332::-;3723:6;3712:9;3705:25;3766:2;3761;3750:9;3746:18;3739:30;3686:4;3786:56;3838:2;3827:9;3823:18;3815:6;3786:56;:::i;3853:248::-;3921:6;3929;3982:2;3970:9;3961:7;3957:23;3953:32;3950:52;;;3998:1;3995;3988:12;3950:52;-1:-1:-1;;4021:23:30;;;4091:2;4076:18;;;4063:32;;-1:-1:-1;3853:248:30:o;4106:261::-;4285:2;4274:9;4267:21;4248:4;4305:56;4357:2;4346:9;4342:18;4334:6;4305:56;:::i;4372:456::-;4449:6;4457;4465;4518:2;4506:9;4497:7;4493:23;4489:32;4486:52;;;4534:1;4531;4524:12;4486:52;4573:9;4560:23;4592:31;4617:5;4592:31;:::i;:::-;4642:5;-1:-1:-1;4699:2:30;4684:18;;4671:32;4712:33;4671:32;4712:33;:::i;:::-;4372:456;;4764:7;;-1:-1:-1;;;4818:2:30;4803:18;;;;4790:32;;4372:456::o;5022:247::-;5081:6;5134:2;5122:9;5113:7;5109:23;5105:32;5102:52;;;5150:1;5147;5140:12;5102:52;5189:9;5176:23;5208:31;5233:5;5208:31;:::i;5274:523::-;5378:6;5386;5394;5402;5410;5418;5471:3;5459:9;5450:7;5446:23;5442:33;5439:53;;;5488:1;5485;5478:12;5439:53;-1:-1:-1;;5511:23:30;;;5581:2;5566:18;;5553:32;;-1:-1:-1;5632:2:30;5617:18;;5604:32;;5683:2;5668:18;;5655:32;;-1:-1:-1;5734:3:30;5719:19;;5706:33;;-1:-1:-1;5786:3:30;5771:19;5758:33;;-1:-1:-1;5274:523:30;-1:-1:-1;5274:523:30:o;6270:383::-;6347:6;6355;6363;6416:2;6404:9;6395:7;6391:23;6387:32;6384:52;;;6432:1;6429;6422:12;6384:52;6471:9;6458:23;6490:31;6515:5;6490:31;:::i;:::-;6540:5;6592:2;6577:18;;6564:32;;-1:-1:-1;6643:2:30;6628:18;;;6615:32;;6270:383;-1:-1:-1;;;6270:383:30:o;6658:180::-;6717:6;6770:2;6758:9;6749:7;6745:23;6741:32;6738:52;;;6786:1;6783;6776:12;6738:52;-1:-1:-1;6809:23:30;;6658:180;-1:-1:-1;6658:180:30:o;7453:671::-;7539:6;7547;7555;7563;7616:3;7604:9;7595:7;7591:23;7587:33;7584:53;;;7633:1;7630;7623:12;7584:53;7672:9;7659:23;7691:31;7716:5;7691:31;:::i;:::-;7741:5;-1:-1:-1;7798:2:30;7783:18;;7770:32;7811:33;7770:32;7811:33;:::i;:::-;7863:7;-1:-1:-1;7922:2:30;7907:18;;7894:32;7935:33;7894:32;7935:33;:::i;:::-;7987:7;-1:-1:-1;8046:2:30;8031:18;;8018:32;8059:33;8018:32;8059:33;:::i;:::-;7453:671;;;;-1:-1:-1;7453:671:30;;-1:-1:-1;;7453:671:30:o;8129:454::-;8224:6;8232;8240;8248;8256;8309:3;8297:9;8288:7;8284:23;8280:33;8277:53;;;8326:1;8323;8316:12;8277:53;-1:-1:-1;;8349:23:30;;;8419:2;8404:18;;8391:32;;-1:-1:-1;8470:2:30;8455:18;;8442:32;;8521:2;8506:18;;8493:32;;-1:-1:-1;8572:3:30;8557:19;8544:33;;-1:-1:-1;8129:454:30;-1:-1:-1;8129:454:30:o;8588:388::-;8656:6;8664;8717:2;8705:9;8696:7;8692:23;8688:32;8685:52;;;8733:1;8730;8723:12;8685:52;8772:9;8759:23;8791:31;8816:5;8791:31;:::i;:::-;8841:5;-1:-1:-1;8898:2:30;8883:18;;8870:32;8911:33;8870:32;8911:33;:::i;:::-;8963:7;8953:17;;;8588:388;;;;;:::o;8981:452::-;9067:6;9075;9083;9091;9144:3;9132:9;9123:7;9119:23;9115:33;9112:53;;;9161:1;9158;9151:12;9112:53;9200:9;9187:23;9219:31;9244:5;9219:31;:::i;:::-;9269:5;9321:2;9306:18;;9293:32;;-1:-1:-1;9372:2:30;9357:18;;9344:32;;9423:2;9408:18;9395:32;;-1:-1:-1;8981:452:30;-1:-1:-1;;;8981:452:30:o;9438:251::-;9508:6;9561:2;9549:9;9540:7;9536:23;9532:32;9529:52;;;9577:1;9574;9567:12;9529:52;9609:9;9603:16;9628:31;9653:5;9628:31;:::i;9694:349::-;9896:2;9878:21;;;9935:2;9915:18;;;9908:30;9974:27;9969:2;9954:18;;9947:55;10034:2;10019:18;;9694:349::o;10048:380::-;10127:1;10123:12;;;;10170;;;10191:61;;10245:4;10237:6;10233:17;10223:27;;10191:61;10298:2;10290:6;10287:14;10267:18;10264:38;10261:161;;10344:10;10339:3;10335:20;10332:1;10325:31;10379:4;10376:1;10369:15;10407:4;10404:1;10397:15;10261:161;;10048:380;;;:::o;10433:340::-;10635:2;10617:21;;;10674:2;10654:18;;;10647:30;-1:-1:-1;;;10708:2:30;10693:18;;10686:46;10764:2;10749:18;;10433:340::o;11156:245::-;11223:6;11276:2;11264:9;11255:7;11251:23;11247:32;11244:52;;;11292:1;11289;11282:12;11244:52;11324:9;11318:16;11343:28;11365:5;11343:28;:::i;11406:348::-;11608:2;11590:21;;;11647:2;11627:18;;;11620:30;11686:26;11681:2;11666:18;;11659:54;11745:2;11730:18;;11406:348::o;11759:421::-;11961:2;11943:21;;;12000:2;11980:18;;;11973:30;12039:34;12034:2;12019:18;;12012:62;12110:27;12105:2;12090:18;;12083:55;12170:3;12155:19;;11759:421::o;12185:412::-;12387:2;12369:21;;;12426:2;12406:18;;;12399:30;12465:34;12460:2;12445:18;;12438:62;-1:-1:-1;;;12531:2:30;12516:18;;12509:46;12587:3;12572:19;;12185:412::o;12602:425::-;12804:2;12786:21;;;12843:2;12823:18;;;12816:30;12882:34;12877:2;12862:18;;12855:62;12953:31;12948:2;12933:18;;12926:59;13017:3;13002:19;;12602:425::o;13032:184::-;13102:6;13155:2;13143:9;13134:7;13130:23;13126:32;13123:52;;;13171:1;13168;13161:12;13123:52;-1:-1:-1;13194:16:30;;13032:184;-1:-1:-1;13032:184:30:o;13221:397::-;13343:12;;-1:-1:-1;;;;;13339:21:30;;;13327:34;;13414:4;13403:16;;;13397:23;13393:32;;13377:14;;;13370:56;13475:4;13464:16;;;13458:23;13442:14;;;13435:47;13535:4;13524:16;;;13518:23;13514:32;;13498:14;;;13491:56;13600:4;13589:16;;;13583:23;13579:32;13563:14;;13556:56;13221:397::o;13623:449::-;13912:25;;;13899:3;13884:19;;13946:60;14002:2;13987:18;;13979:6;13946:60;:::i;:::-;14057:6;14050:14;14043:22;14037:3;14026:9;14022:19;14015:51;13623:449;;;;;;:::o;14077:127::-;14138:10;14133:3;14129:20;14126:1;14119:31;14169:4;14166:1;14159:15;14193:4;14190:1;14183:15;14209:128;14276:9;;;14297:11;;;14294:37;;;14311:18;;:::i;14342:353::-;14544:2;14526:21;;;14583:2;14563:18;;;14556:30;14622:31;14617:2;14602:18;;14595:59;14686:2;14671:18;;14342:353::o;14910:127::-;14971:10;14966:3;14962:20;14959:1;14952:31;15002:4;14999:1;14992:15;15026:4;15023:1;15016:15;15042:899;15107:5;15160:3;15153:4;15145:6;15141:17;15137:27;15127:55;;15178:1;15175;15168:12;15127:55;15207:6;15201:13;15233:4;15256:18;15293:2;15289;15286:10;15283:36;;;15299:18;;:::i;:::-;15345:2;15342:1;15338:10;15377:2;15371:9;15440:2;15436:7;15431:2;15427;15423:11;15419:25;15411:6;15407:38;15495:6;15483:10;15480:22;15475:2;15463:10;15460:18;15457:46;15454:72;;;15506:18;;:::i;:::-;15542:2;15535:22;15592:18;;;15668:15;;;15664:24;;;15626:15;;;;-1:-1:-1;15700:15:30;;;15697:35;;;15728:1;15725;15718:12;15697:35;15764:2;15756:6;15752:15;15741:26;;15776:135;15792:6;15787:3;15784:15;15776:135;;;15858:10;;15846:23;;15889:12;;;;15809;;;;15776:135;;15946:424;16050:6;16058;16111:2;16099:9;16090:7;16086:23;16082:32;16079:52;;;16127:1;16124;16117:12;16079:52;16156:9;16150:16;16140:26;;16210:2;16199:9;16195:18;16189:25;16237:18;16229:6;16226:30;16223:50;;;16269:1;16266;16259:12;16223:50;16292:72;16356:7;16347:6;16336:9;16332:22;16292:72;:::i;:::-;16282:82;;;15946:424;;;;;:::o;16737:363::-;16832:6;16885:2;16873:9;16864:7;16860:23;16856:32;16853:52;;;16901:1;16898;16891:12;16853:52;16934:9;16928:16;16967:18;16959:6;16956:30;16953:50;;;16999:1;16996;16989:12;16953:50;17022:72;17086:7;17077:6;17066:9;17062:22;17022:72;:::i;17938:127::-;17999:10;17994:3;17990:20;17987:1;17980:31;18030:4;18027:1;18020:15;18054:4;18051:1;18044:15;18070:1000;18276:4;18318:3;18307:9;18303:19;18295:27;;18349:6;18338:9;18331:25;18398:6;18392:13;18387:2;18376:9;18372:18;18365:41;18460:2;18452:6;18448:15;18442:22;18437:2;18426:9;18422:18;18415:50;18519:2;18511:6;18507:15;18501:22;18496:2;18485:9;18481:18;18474:50;18579:2;18571:6;18567:15;18561:22;18555:3;18544:9;18540:19;18533:51;18639:3;18631:6;18627:16;18621:23;18615:3;18604:9;18600:19;18593:52;18700:3;18692:6;18688:16;18682:23;18676:3;18665:9;18661:19;18654:52;18761:3;18753:6;18749:16;18743:23;18737:3;18726:9;18722:19;18715:52;18814:3;18806:6;18802:16;18796:23;18838:3;18850:52;18898:2;18887:9;18883:18;18869:12;-1:-1:-1;;;;;2825:31:30;2813:44;;2759:104;18850:52;18927:15;;18921:22;18962:3;18981:18;;;18974:30;;;;19047:15;;;19041:22;19035:3;19020:19;;;19013:51;;;;18070:1000;;-1:-1:-1;;18070:1000:30:o;19992:430::-;20098:6;20106;20114;20122;20130;20183:3;20171:9;20162:7;20158:23;20154:33;20151:53;;;20200:1;20197;20190:12;20151:53;-1:-1:-1;;20223:16:30;;20279:2;20264:18;;20258:25;20323:2;20308:18;;20302:25;20367:2;20352:18;;20346:25;20411:3;20396:19;;;20390:26;20223:16;;20258:25;;-1:-1:-1;20302:25:30;20346;-1:-1:-1;20390:26:30;;-1:-1:-1;19992:430:30;-1:-1:-1;19992:430:30:o;20708:168::-;20781:9;;;20812;;20829:15;;;20823:22;;20809:37;20799:71;;20850:18;;:::i;20881:217::-;20921:1;20947;20937:132;;20991:10;20986:3;20982:20;20979:1;20972:31;21026:4;21023:1;21016:15;21054:4;21051:1;21044:15;20937:132;-1:-1:-1;21083:9:30;;20881:217::o;21103:367::-;21370:25;;;21357:3;21342:19;;21404:60;21460:2;21445:18;;21437:6;21404:60;:::i;23117:135::-;23156:3;23177:17;;;23174:43;;23197:18;;:::i;:::-;-1:-1:-1;23244:1:30;23233:13;;23117:135::o;25430:287::-;25559:3;25597:6;25591:13;25613:66;25672:6;25667:3;25660:4;25652:6;25648:17;25613:66;:::i;:::-;25695:16;;;;;25430:287;-1:-1:-1;;25430:287:30:o
Swarm Source
ipfs://9fe70fae664b7f88f6ddb308707297efdaab6e0c0059376ecafddee9e2c0cb21
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.