Hierarchy

  • ContractFactory
    • SuperTokenStorageLayoutTester__factory

Constructors

  • Parameters

    • Rest ...args: SuperTokenStorageLayoutTesterConstructorParams

    Returns SuperTokenStorageLayoutTester__factory

Properties

abi: readonly [{
    inputs: readonly [{
        internalType: "contract ISuperfluid";
        name: "host";
        type: "address";
    }, {
        internalType: "contract IConstantOutflowNFT";
        name: "constantOutflowNFTProxy";
        type: "address";
    }, {
        internalType: "contract IConstantInflowNFT";
        name: "constantInflowNFTProxy";
        type: "address";
    }, {
        internalType: "contract IPoolAdminNFT";
        name: "poolAdminNFTProxy";
        type: "address";
    }, {
        internalType: "contract IPoolMemberNFT";
        name: "poolMemberNFTProxy";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "constructor";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_AGREEMENT_ALREADY_EXISTS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_BURN_INSUFFICIENT_BALANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_ONLY_HOST";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_ONLY_LISTED_AGREEMENT";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_MINT_TO_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_NFT_PROXY_ADDRESS_CHANGED";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_NO_UNDERLYING_TOKEN";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_ONLY_ADMIN";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_ONLY_GOV_OWNER";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_ONLY_SELF";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS";
    type: "error";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "oldAdmin";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "newAdmin";
        type: "address";
    }];
    name: "AdminChanged";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "AgreementCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: true;
        internalType: "address";
        name: "penaltyAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "rewardAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }];
    name: "AgreementLiquidated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "address";
        name: "liquidatorAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: true;
        internalType: "address";
        name: "penaltyAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "bondAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "bailoutAmount";
        type: "uint256";
    }];
    name: "AgreementLiquidatedBy";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: true;
        internalType: "address";
        name: "liquidatorAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "targetAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "address";
        name: "rewardAmountReceiver";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "int256";
        name: "targetAccountBalanceDelta";
        type: "int256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "liquidationTypeData";
        type: "bytes";
    }];
    name: "AgreementLiquidatedV2";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "slotId";
        type: "uint256";
    }];
    name: "AgreementStateUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }];
    name: "AgreementTerminated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "AgreementUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        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: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "tokenHolder";
        type: "address";
    }];
    name: "AuthorizedOperator";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "bailoutAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "bailoutAmount";
        type: "uint256";
    }];
    name: "Bailout";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "data";
        type: "bytes";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "Burned";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "bytes32";
        name: "uuid";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "address";
        name: "codeAddress";
        type: "address";
    }];
    name: "CodeUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IConstantInflowNFT";
        name: "constantInflowNFT";
        type: "address";
    }];
    name: "ConstantInflowNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IConstantOutflowNFT";
        name: "constantOutflowNFT";
        type: "address";
    }];
    name: "ConstantOutflowNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "uint8";
        name: "version";
        type: "uint8";
    }];
    name: "Initialized";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "data";
        type: "bytes";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "Minted";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IPoolAdminNFT";
        name: "poolAdminNFT";
        type: "address";
    }];
    name: "PoolAdminNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IPoolMemberNFT";
        name: "poolMemberNFT";
        type: "address";
    }];
    name: "PoolMemberNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "tokenHolder";
        type: "address";
    }];
    name: "RevokedOperator";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "data";
        type: "bytes";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "Sent";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "TokenDowngraded";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "TokenUpgraded";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        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: readonly [];
    name: "CONSTANT_INFLOW_NFT";
    outputs: readonly [{
        internalType: "contract IConstantInflowNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "CONSTANT_OUTFLOW_NFT";
    outputs: readonly [{
        internalType: "contract IConstantOutflowNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "POOL_ADMIN_NFT";
    outputs: readonly [{
        internalType: "contract IPoolAdminNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "POOL_MEMBER_NFT";
    outputs: readonly [{
        internalType: "contract IPoolMemberNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }];
    name: "allowance";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "approve";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "authorizeOperator";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "balanceOf";
    outputs: readonly [{
        internalType: "uint256";
        name: "balance";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "burn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "castrate";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "newAdmin";
        type: "address";
    }];
    name: "changeAdmin";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "createAgreement";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "decimals";
    outputs: readonly [{
        internalType: "uint8";
        name: "";
        type: "uint8";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "subtractedValue";
        type: "uint256";
    }];
    name: "decreaseAllowance";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "defaultOperators";
    outputs: readonly [{
        internalType: "address[]";
        name: "";
        type: "address[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "downgrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "downgradeTo";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "getAccountActiveAgreements";
    outputs: readonly [{
        internalType: "contract ISuperAgreement[]";
        name: "";
        type: "address[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getAdmin";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "uint256";
        name: "dataLength";
        type: "uint256";
    }];
    name: "getAgreementData";
    outputs: readonly [{
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "slotId";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "dataLength";
        type: "uint256";
    }];
    name: "getAgreementStateSlot";
    outputs: readonly [{
        internalType: "bytes32[]";
        name: "slotData";
        type: "bytes32[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getCodeAddress";
    outputs: readonly [{
        internalType: "address";
        name: "codeAddress";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getHost";
    outputs: readonly [{
        internalType: "address";
        name: "host";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getLastSuperTokenStorageSlot";
    outputs: readonly [{
        internalType: "uint256";
        name: "slot";
        type: "uint256";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "getUnderlyingDecimals";
    outputs: readonly [{
        internalType: "uint8";
        name: "";
        type: "uint8";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getUnderlyingToken";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "granularity";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "addedValue";
        type: "uint256";
    }];
    name: "increaseAllowance";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract IERC20";
        name: "underlyingToken";
        type: "address";
    }, {
        internalType: "uint8";
        name: "underlyingDecimals";
        type: "uint8";
    }, {
        internalType: "string";
        name: "n";
        type: "string";
    }, {
        internalType: "string";
        name: "s";
        type: "string";
    }];
    name: "initialize";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract IERC20";
        name: "underlyingToken";
        type: "address";
    }, {
        internalType: "uint8";
        name: "underlyingDecimals";
        type: "uint8";
    }, {
        internalType: "string";
        name: "n";
        type: "string";
    }, {
        internalType: "string";
        name: "s";
        type: "string";
    }, {
        internalType: "address";
        name: "admin";
        type: "address";
    }];
    name: "initializeWithAdmin";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "isAccountCritical";
    outputs: readonly [{
        internalType: "bool";
        name: "isCritical";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isAccountCriticalNow";
    outputs: readonly [{
        internalType: "bool";
        name: "isCritical";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "isAccountSolvent";
    outputs: readonly [{
        internalType: "bool";
        name: "isSolvent";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isAccountSolventNow";
    outputs: readonly [{
        internalType: "bool";
        name: "isSolvent";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        internalType: "address";
        name: "tokenHolder";
        type: "address";
    }];
    name: "isOperatorFor";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "bytes";
        name: "liquidationTypeData";
        type: "bytes";
    }, {
        internalType: "address";
        name: "liquidatorAccount";
        type: "address";
    }, {
        internalType: "bool";
        name: "useDefaultRewardAccount";
        type: "bool";
    }, {
        internalType: "address";
        name: "targetAccount";
        type: "address";
    }, {
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }, {
        internalType: "int256";
        name: "targetAccountBalanceDelta";
        type: "int256";
    }];
    name: "makeLiquidationPayoutsV2";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "name";
    outputs: readonly [{
        internalType: "string";
        name: "";
        type: "string";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationApprove";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "subtractedValue";
        type: "uint256";
    }];
    name: "operationDecreaseAllowance";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationDowngrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "addedValue";
        type: "uint256";
    }];
    name: "operationIncreaseAllowance";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "operationSend";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationTransferFrom";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationUpgrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }, {
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "operatorBurn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }, {
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "operatorSend";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "proxiableUUID";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "realtimeBalanceOf";
    outputs: readonly [{
        internalType: "int256";
        name: "availableBalance";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "realtimeBalanceOfNow";
    outputs: readonly [{
        internalType: "int256";
        name: "availableBalance";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "revokeOperator";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "selfApproveFor";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "selfBurn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "selfMint";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "holder";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "selfTransferFrom";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "send";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "int256";
        name: "delta";
        type: "int256";
    }];
    name: "settleBalance";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "symbol";
    outputs: readonly [{
        internalType: "string";
        name: "";
        type: "string";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "uint256";
        name: "dataLength";
        type: "uint256";
    }];
    name: "terminateAgreement";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "toUnderlyingAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "underlyingAmount";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "adjustedAmount";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "totalSupply";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "transfer";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }];
    name: "transferAll";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "holder";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "transferFrom";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "updateAgreementData";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "slotId";
        type: "uint256";
    }, {
        internalType: "bytes32[]";
        name: "slotData";
        type: "bytes32[]";
    }];
    name: "updateAgreementStateSlot";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "newAddress";
        type: "address";
    }];
    name: "updateCode";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "upgrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "upgradeTo";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "validateStorageLayout";
    outputs: readonly [];
    stateMutability: "pure";
    type: "function";
}]
bytecode: "0x6101206040523480156200001257600080fd5b506040516200515338038062005153833981016040819052620000359162000157565b6001600160a01b0380861660805280851660a081905281851660c0528184166101005290821660e05260405186918691869186918691907fcf554eb342edf010a94e07701ae91e99e90b769f649f03aeb1153654ddd43c0190600090a26040516001600160a01b038416907f8837af285f4d380af9227df9ebafa13d992b487fa6d7a4366bd4154576085b8990600090a26040516001600160a01b038316907feb87fb34067547f3dc0b85096c3da73c99d4fbb08ff41212b8d7c0b5008b42e690600090a26040516001600160a01b038216907fc1050c54a299c837fe281a2623c29ec8e34b455daef48760b6a29f4b6cc9906090600090a250505050505050505050620001d7565b6001600160a01b03811681146200015457600080fd5b50565b600080600080600060a086880312156200017057600080fd5b85516200017d816200013e565b602087015190955062000190816200013e565b6040870151909450620001a3816200013e565b6060870151909350620001b6816200013e565b6080870151909250620001c9816200013e565b809150509295509295909350565b60805160a05160c05160e05161010051614ea4620002af600039600061081f015260006109a3015260008181610662015261159801526000818161097c01526114fb0152600081816104d701528181610c7f01528181610cee0152818161102401528181611154015281816112230152818161143a015281816115e801528181611730015281816118db015281816119ba01528181611dab01528181611e7501528181611f0d01528181611f7501528181611ffd015281816128ad0152818161294401528181613a380152613c770152614ea46000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80636fed61fc11610220578063bb0d196e11610130578063eb3537cc116100b8578063f5a8b4dd11610087578063f5a8b4dd1461099e578063f99a38c414610452578063fad8b32a146109c5578063fc673c4f146109d8578063fe9d9303146109eb57600080fd5b8063eb3537cc14610925578063ec0d634314610953578063ee719bc814610966578063ef43d2c61461097757600080fd5b8063ca789464116100ff578063ca789464146108a0578063cf97256d146108b3578063d95b6371146108c6578063d9d078d6146108d9578063dd62ed3e146108ec57600080fd5b8063bb0d196e14610854578063c68d428314610867578063c780fd821461087a578063ca0c1e7f1461088d57600080fd5b80639903ad38116101b3578063a3a7e7f311610182578063a3a7e7f3146107e1578063a457c2d7146107f4578063a9059cbb14610807578063b20db1ac1461081a578063b84cdd4a1461084157600080fd5b80639903ad38146107a05780639bd9bbc6146107a85780639d876741146107bb578063a1b2bf8b146107ce57600080fd5b80638f283970116101ef5780638f2839701461076057806392081a4714610773578063959b8c3f1461078557806395d89b411461079857600080fd5b80636fed61fc1461072057806370a082311461072757806379359f6f1461073a57806383ba25251461074d57600080fd5b8063395093511161031b57806350d75d25116102ae57806362aa52871161027d57806362aa5287146106cc57806362ad1b83146106df57806366a12fb6146106f25780636c2d9f2f146107055780636e9960c31461071857600080fd5b806350d75d251461068457806352d1902d1461068c578063556f0dc7146106b25780635b9d09cc146106b957600080fd5b806346951954116102ea57806346951954146106175780634b2763b31461062a5780634b61cc331461063d5780634c5c0c851461065d57600080fd5b806339509351146105cb57806341b706be146105de57806342fe0980146105f157806345977d031461060457600080fd5b80631863e8091161039e578063270483971161036d5780632704839714610535578063282a050b146105485780632ec8eec714610570578063313ce567146105a3578063386fa221146105b857600080fd5b80631863e809146104c257806320bc4425146104d557806323b872dd1461050f578063245887fc1461052257600080fd5b806311bcc81e116103da57806311bcc81e1461047757806312a6a3f81461048a57806316d055d61461049d57806318160ddd146104b057600080fd5b806306e485381461040c57806306fdde031461042a578063090c415e1461043f578063095ea7b314610454575b600080fd5b6104146109fe565b6040516104219190613e91565b60405180910390f35b610432610a0f565b6040516104219190613f2e565b61045261044d366004613fa1565b610aa1565b005b610467610462366004613ffc565b610b54565b6040519015158152602001610421565b610452610485366004614028565b610b6b565b610452610498366004614041565b610b9a565b6104526104ab36600461408c565b610c7d565b6003545b604051908152602001610421565b6104526104d03660046141a0565b610cd9565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610421565b61046761051d366004614232565b61100c565b610452610530366004613ffc565b611022565b610452610543366004614273565b61109b565b61055b610556366004614028565b611137565b60408051928352602083019190915201610421565b61058361057e366004614295565b61114c565b604080519485526020850193909352918301526060820152608001610421565b60125b60405160ff9091168152602001610421565b6104146105c6366004614295565b6111ef565b6104676105d9366004613ffc565b611292565b6104526105ec36600461408c565b6112ce565b6104526105ff366004614309565b6112fa565b610452610612366004614028565b6113db565b610452610625366004614295565b611407565b610452610638366004614232565b6115e6565b61065061064b36600461439b565b611668565b60405161042191906143e1565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b6104f76116ad565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196104b4565b60016104b4565b6104526106c7366004614419565b6116d7565b6104526106da366004614232565b61172e565b6104526106ed366004614468565b611782565b610452610700366004614232565b611830565b610650610713366004614506565b611850565b6104f7611892565b601f6104b4565b6104b4610735366004614295565b6118aa565b610467610748366004614295565b6118d3565b61045261075b366004613ffc565b61195b565b61045261076e366004614295565b611987565b600e54600160a01b900460ff166105a6565b610452610793366004614295565b611a7b565b610432611acc565b610452611adb565b6104526107b6366004614419565b611b9d565b6104526107c936600461453b565b611bf1565b6104526107dc366004614041565b611c37565b6104526107ef366004614295565b611ce1565b610467610802366004613ffc565b611cf5565b610467610815366004613ffc565b611d44565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b61046761084f366004613ffc565b611d52565b610467610862366004614295565b611da3565b61045261087536600461453b565b611e2b565b610452610888366004614232565b611e73565b61045261089b366004614593565b611f0b565b6104526108ae366004613ffc565b611f73565b6104526108c1366004613ffc565b611fe8565b6104676108d43660046145fe565b6120d1565b6104676108e7366004613ffc565b6120df565b6104b46108fa3660046145fe565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b610938610933366004613ffc565b6120f9565b60408051938452602084019290925290820152606001610421565b610452610961366004614637565b61222d565b600e546001600160a01b03166104f7565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b6104526109d3366004614295565b612304565b6104526109e63660046146dd565b612355565b6104526109f9366004614724565b6123f6565b6060610a0a6012612447565b905090565b6060600f8054610a1e90614762565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90614762565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050905090565b6000338585604051602001610ab89392919061479c565b604051602081830303815290604052805190602001209050610b0d818484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124ad92505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d59859060200160405180910390a35050505050565b6000610b613384846124e5565b5060015b92915050565b610b97333333846040518060200160405280600081525060405180602001604052806000815250612594565b50565b6040513390600090610bb290839087906020016147e5565b60408051601f1981840301815291905280516020909101209050610bd68184612754565b15610bf45760405163782a90fb60e11b815260040160405180910390fd5b610c31818585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124ad92505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610c6e93929190614822565b60405180910390a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610cc65760405163c51efddd60e01b815260040160405180910390fd5b610cd284848484612788565b5050505050565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d619190614863565b610d7e5760405163327fd99160e21b815260040160405180910390fd5b6000610d886128a8565b90506001600160a01b038116610d9b5750845b600085610da85786610daa565b815b905060008313610e7857610dbd83614896565b610dc6856129ed565b14610dd357610dd36148b2565b610ddc846129ed565b6001600160a01b03821660009081526002602052604081208054909190610e049084906148c8565b90915550506001600160a01b03851660009081526002602052604081208054859290610e319084906148c8565b92505081905550806001600160a01b0316856001600160a01b0316600080516020614e2283398151915286604051610e6b91815260200190565b60405180910390a3610fa4565b8515610e8657610e866148b2565b82610e90856129ed565b610e9a91906148c8565b6001600160a01b03831660009081526002602052604081208054909190610ec29084906148f0565b90915550610ed19050846129ed565b6001600160a01b03881660009081526002602052604081208054909190610ef99084906148c8565b90915550506001600160a01b03851660009081526002602052604081208054859290610f269084906148c8565b92505081905550866001600160a01b0316826001600160a01b0316600080516020614e2283398151915286604051610f6091815260200190565b60405180910390a3846001600160a01b0316826001600160a01b0316600080516020614e2283398151915285604051610f9b91815260200190565b60405180910390a35b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051610ff9959493929190614910565b60405180910390a4505050505050505050565b600061101a33858585612788565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461106b5760405163c51efddd60e01b815260040160405180910390fd5b611097338384846040518060200160405280600081525060405180602001604052806000815250612594565b5050565b60405133906000906110b390839086906020016147e5565b6040516020818303038152906040528051906020012090506110d58184612754565b6110f25760405163dae1880960e01b815260040160405180910390fd5b6110fc8184612a5b565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b60008061114383612a74565b91509150915091565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190614943565b90506111e085826120f9565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f0000000000000000000000000000000000000000000000000000000000000000169063c56a069d90602401600060405180830381865afa15801561126a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b65919081019061495c565b3360008181526011602090815260408083206001600160a01b03871684529091528120549091610b619185906112c9908690614a0d565b6124e5565b3330146112ee57604051630fff4cc960e31b815260040160405180910390fd5b610cd283858484612788565b600054610100900460ff161580801561131a5750600054600160ff909116105b806113345750303b158015611334575060005460ff166001145b6113595760405162461bcd60e51b815260040161135090614a20565b60405180910390fd5b6000805460ff19166001179055801561137c576000805461ff0019166101001790555b61138c8787878787876000612b30565b80156113d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610b97333333846040518060200160405280600081525060405180602001604052806000815250612bf8565b600061141f600080516020614dd88339815191525490565b905060006001600160a01b03821615611438578161145a565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b0382161461148557604051630484acab60e01b815260040160405180910390fd5b61148e83612dab565b826001600160a01b031663ef43d2c66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190614a6e565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806115c35750826001600160a01b0316634c5c0c856040518163ffffffff1660e01b8152600401602060405180830381865afa158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190614a6e565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b156115e15760405163ef1b6ddf60e01b815260040160405180910390fd5b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461162f5760405163c51efddd60e01b815260040160405180910390fd5b6001600160a01b038084166000908152601160209081526040808320938616835292905220546115e190849084906112c9908590614a0d565b606060008585856040516020016116819392919061479c565b6040516020818303038152906040528051906020012090506116a38184612fe5565b9695505050505050565b6000610a0a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6117283333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612bf8915050565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146117775760405163c51efddd60e01b815260040160405180910390fd5b6115e18383836124e5565b3361178f6012828a61306c565b6117ac5760405163f7f0222760e01b815260040160405180910390fd5b6118268189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525060019250613115915050565b5050505050505050565b33301461177757604051630fff4cc960e31b815260040160405180910390fd5b6060600084846040516020016118679291906147e5565b6040516020818303038152906040528051906020012090506118898184612fe5565b95945050505050565b6000610a0a600080516020614dd88339815191525490565b6000806118b68361114c565b5050509050600081126118c957806118cc565b60005b9392505050565b6000610b65827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190614943565b611097333384846040518060200160405280600081525060405180602001604052806000815250612594565b600061199f600080516020614dd88339815191525490565b905060006001600160a01b038216156119b857816119da565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b03821614611a0557604051630484acab60e01b815260040160405180910390fd5b6000611a1d600080516020614dd88339815191525490565b9050611a3584600080516020614dd883398151915255565b836001600160a01b0316816001600160a01b03167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a350505050565b33611a886012828461318e565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b606060108054610a1e90614762565b600054610100900460ff1615808015611afb5750600054600160ff909116105b80611b155750303b158015611b15575060005460ff166001145b611b315760405162461bcd60e51b815260040161135090614a20565b6000805460ff191660011790558015611b54576000805461ff0019166101001790555b8015610b97576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6117283333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250600191506131159050565b333014611c1157604051630fff4cc960e31b815260040160405180910390fd5b80516040805160008152602081019091526115e191339186918691901515908690613292565b6040513390600090611c4f90839087906020016147e5565b604051602081830303815290604052805190602001209050611ca4818585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124ad92505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610c6e93929190614822565b611097333383611cf0336118aa565b612788565b6000610b6133846112c9856040518060600160405280602a8152602001614df8602a91393360009081526011602090815260408083206001600160a01b038d168452909152902054919061335f565b60006118cc33338585612788565b600080600080611d6286866120f9565b9250925092506000611d8a828411611d7b5760006129ed565b611d858385614a8b565b6129ed565b611d9490856148c8565b60001315979650505050505050565b6000610b65827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190614943565b333014611e4b57604051630fff4cc960e31b815260040160405180910390fd5b80516040805160008152602081019091526115e191339186918691901515908190879061338b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611ebc5760405163c51efddd60e01b815260040160405180910390fd5b6115e183836112c9846040518060600160405280602a8152602001614df8602a91396001600160a01b03808a166000908152601160209081526040808320938c1683529290522054919061335f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611f545760405163c51efddd60e01b815260040160405180910390fd5b6117283385858585604051806020016040528060008152506001613115565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611fbc5760405163c51efddd60e01b815260040160405180910390fd5b611097338384846040518060200160405280600081525060405180602001604052806000815250612bf8565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190614863565b61208d5760405163327fd99160e21b815260040160405180910390fd5b6001600160a01b0382166000908152600260205260409020546120b19082906148c8565b6001600160a01b0390921660009081526002602052604090209190915550565b60006118cc6012848461306c565b6000806120ec84846120f9565b5050600013949350505050565b6001600160a01b03821660009081526002602052604081205490808061211e866111ef565b905060005b815181101561222457600080600084848151811061214357612143614a9e565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa1580156121a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c69190614ab4565b919450925090506121d78288614a0d565b96506121e38187614a0d565b95506122008183116121f65760006129ed565b611d858284614a8b565b61220a848a6148c8565b61221491906148f0565b9750505050806001019050612123565b50509250925092565b600054610100900460ff161580801561224d5750600054600160ff909116105b806122675750303b158015612267575060005460ff166001145b6122835760405162461bcd60e51b815260040161135090614a20565b6000805460ff1916600117905580156122a6576000805461ff0019166101001790555b6122b588888888888888612b30565b8015611826576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b3361231160128284613459565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b336123626012828961306c565b61237f5760405163f7f0222760e01b815260040160405180910390fd5b6113d28188898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525061259492505050565b6115e13333338686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612594915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156124a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612483575b50505050509050919050565b60005b81518110156115e15760008282815181106124cd576124cd614a9e565b602090810291909101015184830155506001016124b0565b6001600160a01b03831661250c57604051638163862760e01b815260040160405180910390fd5b6001600160a01b038216612533576040516337c1c09d60e21b815260040160405180910390fd5b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600e546001600160a01b03166125bd57604051637bce7b2b60e11b815260040160405180910390fd5b6000806125c985612a74565b915091506125e08888838751600014158888613292565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190614943565b600e54909150612667906001600160a01b03168885613551565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d49190614943565b905060006126e28284614a8b565b905080851461270457604051631c7c26d360e31b815260040160405180910390fd5b896001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d8560405161273f91815260200190565b60405180910390a25050505050505050505050565b6000805b8281101561277e5783810154801561277557600192505050610b65565b50600101612758565b5060009392505050565b60006001600160a01b0384166127b15760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b0383166127d85760405163e219bd3960e01b815260040160405180910390fd5b60003390506128098186868660405180602001604052806000815250604051806020016040528060008152506135b4565b846001600160a01b0316866001600160a01b03161461289c5761289c85876112c9866040518060600160405280602d8152602001614e42602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b031681526020019081526020016000205461335f9092919063ffffffff16565b50600195945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d9190614a6e565b604051638369a0f160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa1580156129c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e79190614a6e565b91505090565b60006001600160ff1b03821115612a575760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611350565b5090565b60005b818110156115e157600083820155600101612a5e565b600e54600090819081906012600160a01b90910460ff161015612ad357600e54612aa990600160a01b900460ff166012614ae2565b612ab490600a614bdf565b9050612ac08185614bee565b9250612acc8184614c10565b9150612b2a565b600e546012600160a01b90910460ff161115612b2357600e54612b0290601290600160a01b900460ff16614ae2565b612b0d90600a614bdf565b9050612b198185614c10565b9250839150612b2a565b8391508192505b50915091565b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a1617179055600f612b65858783614c77565b506010612b73838583614c77565b50612b8a81600080516020614dd883398151915255565b612b9330613653565b6040516000808252908190600080516020614e228339815191529060200160405180910390a36040516001600160a01b038216906000907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a350505050505050565b600e546001600160a01b0316612c2157604051637bce7b2b60e11b815260040160405180910390fd5b600080612c2d85612a74565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca29190614943565b600e54909150612cbd906001600160a01b0316893086613781565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2a9190614943565b90506000612d388383614a8b565b9050808514612d5a57604051631c7c26d360e31b815260040160405180910390fd5b8651612d70908c908b9087901515808c8c61338b565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df8560405161273f91815260200190565b6000612dd57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603612e2b5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611350565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8d9190614943565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb001914612f075760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611350565b6001600160a01b0381163003612f5f5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611350565b612f87817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b038416602083015201611b92565b6060816001600160401b03811115612fff57612fff6140dd565b604051908082528060200260200182016040528015613028578160200160208202803683370190505b50905060005b828110156130655760008185015490508083838151811061305157613051614a9e565b60209081029190910101525060010161302e565b5092915050565b6000816001600160a01b0316836001600160a01b031614806130db57506001600160a01b038316600090815260018501602052604090205460ff1680156130db57506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b8061101a57506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b03861661313c5760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b0385166131635760405163e219bd3960e01b815260040160405180910390fd5b6131718787878787876137b9565b61317f8787878787876135b4565b6113d2878787878787876138e0565b806001600160a01b0316826001600160a01b0316036132055760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b6064820152608401611350565b6001600160a01b038116600090815260018401602052604090205460ff161561325b576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b0385166132b957604051632e8aac6160e21b815260040160405180910390fd5b82156132ce576132ce868660008786866137b9565b6132d88585613a30565b846001600160a01b0316866001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409886858560405161331f93929190614d36565b60405180910390a36040518481526000906001600160a01b03871690600080516020614e22833981519152906020015b60405180910390a3505050505050565b600081848411156133835760405162461bcd60e51b81526004016113509190613f2e565b505050900390565b6001600160a01b0386166133b257604051630d24315760e01b815260040160405180910390fd5b6133bc8686613b40565b83156133d2576133d287600088888686896138e0565b856001600160a01b0316876001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d87858560405161341993929190614d36565b60405180910390a36040518581526001600160a01b03871690600090600080516020614e228339815191529060200160405180910390a350505050505050565b336001600160a01b038216036134c45760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b6064820152608401611350565b6001600160a01b038116600090815260018401602052604090205460ff161561351e576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b6040516001600160a01b0383166024820152604481018290526115e190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b9a565b6135c785856135c2866129ed565b613c6f565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc8261467798786868660405161361893929190614d36565b60405180910390a4836001600160a01b0316856001600160a01b0316600080516020614e228339815191528560405161334f91815260200190565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156136d457600080fd5b505af11580156136e8573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561376d57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b6040516001600160a01b03808516602483015283166044820152606481018290526117289085906323b872dd60e01b9060840161357d565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa15801561383a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385e9190614a6e565b90506001600160a01b038116156113d257604051633ad5cbc160e11b81526001600160a01b038216906375ab9782906138a5908a908a908a908a908a908a90600401614d61565b600060405180830381600087803b1580156138bf57600080fd5b505af11580156138d3573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139859190614a6e565b90506001600160a01b03811615613a01576040516223de2960e01b81526001600160a01b038216906223de29906139ca908b908b908b908b908b908b90600401614d61565b600060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b50505050611826565b8115611826576001600160a01b0386163b156118265760405163fe737d0560e01b815260040160405180910390fd5b6000613ab8837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109339190614943565b50509050613ac5826129ed565b811215613ae55760405163043b37d160e21b815260040160405180910390fd5b613aee826129ed565b6001600160a01b038416600090815260026020526040902054613b1191906148f0565b6001600160a01b038416600090815260026020526040902055600354613b38908390614a8b565b600355505050565b613b49816129ed565b6001600160a01b038316600090815260026020526040902054613b6c91906148c8565b6001600160a01b038316600090815260026020526040902055600354613b93908290614a0d565b6003555050565b6000613bef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d6e9092919063ffffffff16565b9050805160001480613c10575080806020019051810190613c109190614863565b6115e15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611350565b6000613cd3847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b5050905081811215613cf857604051632f4cb94160e01b815260040160405180910390fd5b6001600160a01b038416600090815260026020526040902054613d1c9083906148f0565b6001600160a01b038086166000908152600260205260408082209390935590851681522054613d4c9083906148c8565b6001600160a01b03909316600090815260026020526040902092909255505050565b606061101a848460008585600080866001600160a01b03168587604051613d959190614dbb565b60006040518083038185875af1925050503d8060008114613dd2576040519150601f19603f3d011682016040523d82523d6000602084013e613dd7565b606091505b5091509150613de887838387613df3565b979650505050505050565b60608315613e62578251600003613e5b576001600160a01b0385163b613e5b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611350565b508161101a565b61101a8383815115613e775781518083602001fd5b8060405162461bcd60e51b81526004016113509190613f2e565b6020808252825182820181905260009190848201906040850190845b81811015613ed25783516001600160a01b031683529284019291840191600101613ead565b50909695505050505050565b60005b83811015613ef9578181015183820152602001613ee1565b50506000910152565b60008151808452613f1a816020860160208601613ede565b601f01601f19169290920160200192915050565b6020815260006118cc6020830184613f02565b6001600160a01b0381168114610b9757600080fd5b60008083601f840112613f6857600080fd5b5081356001600160401b03811115613f7f57600080fd5b6020830191508360208260051b8501011115613f9a57600080fd5b9250929050565b60008060008060608587031215613fb757600080fd5b8435613fc281613f41565b93506020850135925060408501356001600160401b03811115613fe457600080fd5b613ff087828801613f56565b95989497509550505050565b6000806040838503121561400f57600080fd5b823561401a81613f41565b946020939093013593505050565b60006020828403121561403a57600080fd5b5035919050565b60008060006040848603121561405657600080fd5b8335925060208401356001600160401b0381111561407357600080fd5b61407f86828701613f56565b9497909650939450505050565b600080600080608085870312156140a257600080fd5b84356140ad81613f41565b935060208501356140bd81613f41565b925060408501356140cd81613f41565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561411b5761411b6140dd565b604052919050565b600082601f83011261413457600080fd5b81356001600160401b0381111561414d5761414d6140dd565b614160601f8201601f19166020016140f3565b81815284602083860101111561417557600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114610b9757600080fd5b600080600080600080600060e0888a0312156141bb57600080fd5b8735965060208801356001600160401b038111156141d857600080fd5b6141e48a828b01614123565b96505060408801356141f581613f41565b9450606088013561420581614192565b9350608088013561421581613f41565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561424757600080fd5b833561425281613f41565b9250602084013561426281613f41565b929592945050506040919091013590565b6000806040838503121561428657600080fd5b50508035926020909101359150565b6000602082840312156142a757600080fd5b81356118cc81613f41565b803560ff811681146142c357600080fd5b919050565b60008083601f8401126142da57600080fd5b5081356001600160401b038111156142f157600080fd5b602083019150836020828501011115613f9a57600080fd5b6000806000806000806080878903121561432257600080fd5b863561432d81613f41565b955061433b602088016142b2565b945060408701356001600160401b038082111561435757600080fd5b6143638a838b016142c8565b9096509450606089013591508082111561437c57600080fd5b5061438989828a016142c8565b979a9699509497509295939492505050565b600080600080608085870312156143b157600080fd5b84356143bc81613f41565b935060208501356143cc81613f41565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b81811015613ed2578351835292840192918401916001016143fd565b6000806000806060858703121561442f57600080fd5b843561443a81613f41565b93506020850135925060408501356001600160401b0381111561445c57600080fd5b613ff0878288016142c8565b600080600080600080600060a0888a03121561448357600080fd5b873561448e81613f41565b9650602088013561449e81613f41565b95506040880135945060608801356001600160401b03808211156144c157600080fd5b6144cd8b838c016142c8565b909650945060808a01359150808211156144e657600080fd5b506144f38a828b016142c8565b989b979a50959850939692959293505050565b60008060006060848603121561451b57600080fd5b833561452681613f41565b95602085013595506040909401359392505050565b60008060006060848603121561455057600080fd5b833561455b81613f41565b92506020840135915060408401356001600160401b0381111561457d57600080fd5b61458986828701614123565b9150509250925092565b600080600080608085870312156145a957600080fd5b84356145b481613f41565b935060208501356145c481613f41565b92506040850135915060608501356001600160401b038111156145e657600080fd5b6145f287828801614123565b91505092959194509250565b6000806040838503121561461157600080fd5b823561461c81613f41565b9150602083013561462c81613f41565b809150509250929050565b600080600080600080600060a0888a03121561465257600080fd5b873561465d81613f41565b965061466b602089016142b2565b955060408801356001600160401b038082111561468757600080fd5b6146938b838c016142c8565b909750955060608a01359150808211156146ac57600080fd5b506146b98a828b016142c8565b90945092505060808801356146cd81613f41565b8091505092959891949750929550565b600080600080600080608087890312156146f657600080fd5b863561470181613f41565b95506020870135945060408701356001600160401b038082111561435757600080fd5b60008060006040848603121561473957600080fd5b8335925060208401356001600160401b0381111561475657600080fd5b61407f868287016142c8565b600181811c9082168061477657607f821691505b60208210810361479657634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b0383111561484957600080fd5b8260051b8085606085013791909101606001949350505050565b60006020828403121561487557600080fd5b81516118cc81614192565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b82016148ab576148ab614880565b5060000390565b634e487b7160e01b600052600160045260246000fd5b80820182811260008312801582168215821617156148e8576148e8614880565b505092915050565b818103600083128015838313168383128216171561306557613065614880565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000613de860a0830184613f02565b60006020828403121561495557600080fd5b5051919050565b6000602080838503121561496f57600080fd5b82516001600160401b038082111561498657600080fd5b818501915085601f83011261499a57600080fd5b8151818111156149ac576149ac6140dd565b8060051b91506149bd8483016140f3565b81815291830184019184810190888411156149d757600080fd5b938501935b83851015614a0157845192506149f183613f41565b82825293850193908501906149dc565b98975050505050505050565b80820180821115610b6557610b65614880565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215614a8057600080fd5b81516118cc81613f41565b81810381811115610b6557610b65614880565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215614ac957600080fd5b8351925060208401519150604084015190509250925092565b60ff8281168282160390811115610b6557610b65614880565b600181815b80851115614b36578160001904821115614b1c57614b1c614880565b80851615614b2957918102915b93841c9390800290614b00565b509250929050565b600082614b4d57506001610b65565b81614b5a57506000610b65565b8160018114614b705760028114614b7a57614b96565b6001915050610b65565b60ff841115614b8b57614b8b614880565b50506001821b610b65565b5060208310610133831016604e8410600b8410161715614bb9575081810a610b65565b614bc38383614afb565b8060001904821115614bd757614bd7614880565b029392505050565b60006118cc60ff841683614b3e565b600082614c0b57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6557610b65614880565b601f8211156115e1576000816000526020600020601f850160051c81016020861015614c505750805b601f850160051c820191505b81811015614c6f57828155600101614c5c565b505050505050565b6001600160401b03831115614c8e57614c8e6140dd565b614ca283614c9c8354614762565b83614c27565b6000601f841160018114614cd65760008515614cbe5750838201355b600019600387901b1c1916600186901b178355610cd2565b600083815260209020601f19861690835b82811015614d075786850135825560209485019460019092019101614ce7565b5086821015614d245760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b838152606060208201526000614d4f6060830185613f02565b82810360408401526116a38185613f02565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090614d9c90830185613f02565b82810360a0840152614dae8185613f02565b9998505050505050505050565b60008251614dcd818460208701613ede565b919091019291505056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220915121436a93788eb4743051d402ef0ce59ebde5102bbcd3e45b3a0e1ec671c164736f6c63430008170033" = "0x6101206040523480156200001257600080fd5b506040516200515338038062005153833981016040819052620000359162000157565b6001600160a01b0380861660805280851660a081905281851660c0528184166101005290821660e05260405186918691869186918691907fcf554eb342edf010a94e07701ae91e99e90b769f649f03aeb1153654ddd43c0190600090a26040516001600160a01b038416907f8837af285f4d380af9227df9ebafa13d992b487fa6d7a4366bd4154576085b8990600090a26040516001600160a01b038316907feb87fb34067547f3dc0b85096c3da73c99d4fbb08ff41212b8d7c0b5008b42e690600090a26040516001600160a01b038216907fc1050c54a299c837fe281a2623c29ec8e34b455daef48760b6a29f4b6cc9906090600090a250505050505050505050620001d7565b6001600160a01b03811681146200015457600080fd5b50565b600080600080600060a086880312156200017057600080fd5b85516200017d816200013e565b602087015190955062000190816200013e565b6040870151909450620001a3816200013e565b6060870151909350620001b6816200013e565b6080870151909250620001c9816200013e565b809150509295509295909350565b60805160a05160c05160e05161010051614ea4620002af600039600061081f015260006109a3015260008181610662015261159801526000818161097c01526114fb0152600081816104d701528181610c7f01528181610cee0152818161102401528181611154015281816112230152818161143a015281816115e801528181611730015281816118db015281816119ba01528181611dab01528181611e7501528181611f0d01528181611f7501528181611ffd015281816128ad0152818161294401528181613a380152613c770152614ea46000f3fe608060405234801561001057600080fd5b50600436106104075760003560e01c80636fed61fc11610220578063bb0d196e11610130578063eb3537cc116100b8578063f5a8b4dd11610087578063f5a8b4dd1461099e578063f99a38c414610452578063fad8b32a146109c5578063fc673c4f146109d8578063fe9d9303146109eb57600080fd5b8063eb3537cc14610925578063ec0d634314610953578063ee719bc814610966578063ef43d2c61461097757600080fd5b8063ca789464116100ff578063ca789464146108a0578063cf97256d146108b3578063d95b6371146108c6578063d9d078d6146108d9578063dd62ed3e146108ec57600080fd5b8063bb0d196e14610854578063c68d428314610867578063c780fd821461087a578063ca0c1e7f1461088d57600080fd5b80639903ad38116101b3578063a3a7e7f311610182578063a3a7e7f3146107e1578063a457c2d7146107f4578063a9059cbb14610807578063b20db1ac1461081a578063b84cdd4a1461084157600080fd5b80639903ad38146107a05780639bd9bbc6146107a85780639d876741146107bb578063a1b2bf8b146107ce57600080fd5b80638f283970116101ef5780638f2839701461076057806392081a4714610773578063959b8c3f1461078557806395d89b411461079857600080fd5b80636fed61fc1461072057806370a082311461072757806379359f6f1461073a57806383ba25251461074d57600080fd5b8063395093511161031b57806350d75d25116102ae57806362aa52871161027d57806362aa5287146106cc57806362ad1b83146106df57806366a12fb6146106f25780636c2d9f2f146107055780636e9960c31461071857600080fd5b806350d75d251461068457806352d1902d1461068c578063556f0dc7146106b25780635b9d09cc146106b957600080fd5b806346951954116102ea57806346951954146106175780634b2763b31461062a5780634b61cc331461063d5780634c5c0c851461065d57600080fd5b806339509351146105cb57806341b706be146105de57806342fe0980146105f157806345977d031461060457600080fd5b80631863e8091161039e578063270483971161036d5780632704839714610535578063282a050b146105485780632ec8eec714610570578063313ce567146105a3578063386fa221146105b857600080fd5b80631863e809146104c257806320bc4425146104d557806323b872dd1461050f578063245887fc1461052257600080fd5b806311bcc81e116103da57806311bcc81e1461047757806312a6a3f81461048a57806316d055d61461049d57806318160ddd146104b057600080fd5b806306e485381461040c57806306fdde031461042a578063090c415e1461043f578063095ea7b314610454575b600080fd5b6104146109fe565b6040516104219190613e91565b60405180910390f35b610432610a0f565b6040516104219190613f2e565b61045261044d366004613fa1565b610aa1565b005b610467610462366004613ffc565b610b54565b6040519015158152602001610421565b610452610485366004614028565b610b6b565b610452610498366004614041565b610b9a565b6104526104ab36600461408c565b610c7d565b6003545b604051908152602001610421565b6104526104d03660046141a0565b610cd9565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610421565b61046761051d366004614232565b61100c565b610452610530366004613ffc565b611022565b610452610543366004614273565b61109b565b61055b610556366004614028565b611137565b60408051928352602083019190915201610421565b61058361057e366004614295565b61114c565b604080519485526020850193909352918301526060820152608001610421565b60125b60405160ff9091168152602001610421565b6104146105c6366004614295565b6111ef565b6104676105d9366004613ffc565b611292565b6104526105ec36600461408c565b6112ce565b6104526105ff366004614309565b6112fa565b610452610612366004614028565b6113db565b610452610625366004614295565b611407565b610452610638366004614232565b6115e6565b61065061064b36600461439b565b611668565b60405161042191906143e1565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b6104f76116ad565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196104b4565b60016104b4565b6104526106c7366004614419565b6116d7565b6104526106da366004614232565b61172e565b6104526106ed366004614468565b611782565b610452610700366004614232565b611830565b610650610713366004614506565b611850565b6104f7611892565b601f6104b4565b6104b4610735366004614295565b6118aa565b610467610748366004614295565b6118d3565b61045261075b366004613ffc565b61195b565b61045261076e366004614295565b611987565b600e54600160a01b900460ff166105a6565b610452610793366004614295565b611a7b565b610432611acc565b610452611adb565b6104526107b6366004614419565b611b9d565b6104526107c936600461453b565b611bf1565b6104526107dc366004614041565b611c37565b6104526107ef366004614295565b611ce1565b610467610802366004613ffc565b611cf5565b610467610815366004613ffc565b611d44565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b61046761084f366004613ffc565b611d52565b610467610862366004614295565b611da3565b61045261087536600461453b565b611e2b565b610452610888366004614232565b611e73565b61045261089b366004614593565b611f0b565b6104526108ae366004613ffc565b611f73565b6104526108c1366004613ffc565b611fe8565b6104676108d43660046145fe565b6120d1565b6104676108e7366004613ffc565b6120df565b6104b46108fa3660046145fe565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b610938610933366004613ffc565b6120f9565b60408051938452602084019290925290820152606001610421565b610452610961366004614637565b61222d565b600e546001600160a01b03166104f7565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b6104f77f000000000000000000000000000000000000000000000000000000000000000081565b6104526109d3366004614295565b612304565b6104526109e63660046146dd565b612355565b6104526109f9366004614724565b6123f6565b6060610a0a6012612447565b905090565b6060600f8054610a1e90614762565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4a90614762565b8015610a975780601f10610a6c57610100808354040283529160200191610a97565b820191906000526020600020905b815481529060010190602001808311610a7a57829003601f168201915b5050505050905090565b6000338585604051602001610ab89392919061479c565b604051602081830303815290604052805190602001209050610b0d818484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124ad92505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d59859060200160405180910390a35050505050565b6000610b613384846124e5565b5060015b92915050565b610b97333333846040518060200160405280600081525060405180602001604052806000815250612594565b50565b6040513390600090610bb290839087906020016147e5565b60408051601f1981840301815291905280516020909101209050610bd68184612754565b15610bf45760405163782a90fb60e11b815260040160405180910390fd5b610c31818585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124ad92505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610c6e93929190614822565b60405180910390a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610cc65760405163c51efddd60e01b815260040160405180910390fd5b610cd284848484612788565b5050505050565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015610d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d619190614863565b610d7e5760405163327fd99160e21b815260040160405180910390fd5b6000610d886128a8565b90506001600160a01b038116610d9b5750845b600085610da85786610daa565b815b905060008313610e7857610dbd83614896565b610dc6856129ed565b14610dd357610dd36148b2565b610ddc846129ed565b6001600160a01b03821660009081526002602052604081208054909190610e049084906148c8565b90915550506001600160a01b03851660009081526002602052604081208054859290610e319084906148c8565b92505081905550806001600160a01b0316856001600160a01b0316600080516020614e2283398151915286604051610e6b91815260200190565b60405180910390a3610fa4565b8515610e8657610e866148b2565b82610e90856129ed565b610e9a91906148c8565b6001600160a01b03831660009081526002602052604081208054909190610ec29084906148f0565b90915550610ed19050846129ed565b6001600160a01b03881660009081526002602052604081208054909190610ef99084906148c8565b90915550506001600160a01b03851660009081526002602052604081208054859290610f269084906148c8565b92505081905550866001600160a01b0316826001600160a01b0316600080516020614e2283398151915286604051610f6091815260200190565b60405180910390a3846001600160a01b0316826001600160a01b0316600080516020614e2283398151915285604051610f9b91815260200190565b60405180910390a35b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051610ff9959493929190614910565b60405180910390a4505050505050505050565b600061101a33858585612788565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461106b5760405163c51efddd60e01b815260040160405180910390fd5b611097338384846040518060200160405280600081525060405180602001604052806000815250612594565b5050565b60405133906000906110b390839086906020016147e5565b6040516020818303038152906040528051906020012090506110d58184612754565b6110f25760405163dae1880960e01b815260040160405180910390fd5b6110fc8184612a5b565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b60008061114383612a74565b91509150915091565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190614943565b90506111e085826120f9565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f0000000000000000000000000000000000000000000000000000000000000000169063c56a069d90602401600060405180830381865afa15801561126a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b65919081019061495c565b3360008181526011602090815260408083206001600160a01b03871684529091528120549091610b619185906112c9908690614a0d565b6124e5565b3330146112ee57604051630fff4cc960e31b815260040160405180910390fd5b610cd283858484612788565b600054610100900460ff161580801561131a5750600054600160ff909116105b806113345750303b158015611334575060005460ff166001145b6113595760405162461bcd60e51b815260040161135090614a20565b60405180910390fd5b6000805460ff19166001179055801561137c576000805461ff0019166101001790555b61138c8787878787876000612b30565b80156113d2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610b97333333846040518060200160405280600081525060405180602001604052806000815250612bf8565b600061141f600080516020614dd88339815191525490565b905060006001600160a01b03821615611438578161145a565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b0382161461148557604051630484acab60e01b815260040160405180910390fd5b61148e83612dab565b826001600160a01b031663ef43d2c66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190614a6e565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161415806115c35750826001600160a01b0316634c5c0c856040518163ffffffff1660e01b8152600401602060405180830381865afa158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190614a6e565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b156115e15760405163ef1b6ddf60e01b815260040160405180910390fd5b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461162f5760405163c51efddd60e01b815260040160405180910390fd5b6001600160a01b038084166000908152601160209081526040808320938616835292905220546115e190849084906112c9908590614a0d565b606060008585856040516020016116819392919061479c565b6040516020818303038152906040528051906020012090506116a38184612fe5565b9695505050505050565b6000610a0a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6117283333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612bf8915050565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146117775760405163c51efddd60e01b815260040160405180910390fd5b6115e18383836124e5565b3361178f6012828a61306c565b6117ac5760405163f7f0222760e01b815260040160405180910390fd5b6118268189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525060019250613115915050565b5050505050505050565b33301461177757604051630fff4cc960e31b815260040160405180910390fd5b6060600084846040516020016118679291906147e5565b6040516020818303038152906040528051906020012090506118898184612fe5565b95945050505050565b6000610a0a600080516020614dd88339815191525490565b6000806118b68361114c565b5050509050600081126118c957806118cc565b60005b9392505050565b6000610b65827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611937573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e79190614943565b611097333384846040518060200160405280600081525060405180602001604052806000815250612594565b600061199f600080516020614dd88339815191525490565b905060006001600160a01b038216156119b857816119da565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b03821614611a0557604051630484acab60e01b815260040160405180910390fd5b6000611a1d600080516020614dd88339815191525490565b9050611a3584600080516020614dd883398151915255565b836001600160a01b0316816001600160a01b03167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a350505050565b33611a886012828461318e565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b606060108054610a1e90614762565b600054610100900460ff1615808015611afb5750600054600160ff909116105b80611b155750303b158015611b15575060005460ff166001145b611b315760405162461bcd60e51b815260040161135090614a20565b6000805460ff191660011790558015611b54576000805461ff0019166101001790555b8015610b97576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6117283333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250600191506131159050565b333014611c1157604051630fff4cc960e31b815260040160405180910390fd5b80516040805160008152602081019091526115e191339186918691901515908690613292565b6040513390600090611c4f90839087906020016147e5565b604051602081830303815290604052805190602001209050611ca4818585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124ad92505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610c6e93929190614822565b611097333383611cf0336118aa565b612788565b6000610b6133846112c9856040518060600160405280602a8152602001614df8602a91393360009081526011602090815260408083206001600160a01b038d168452909152902054919061335f565b60006118cc33338585612788565b600080600080611d6286866120f9565b9250925092506000611d8a828411611d7b5760006129ed565b611d858385614a8b565b6129ed565b611d9490856148c8565b60001315979650505050505050565b6000610b65827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e07573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f9190614943565b333014611e4b57604051630fff4cc960e31b815260040160405180910390fd5b80516040805160008152602081019091526115e191339186918691901515908190879061338b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611ebc5760405163c51efddd60e01b815260040160405180910390fd5b6115e183836112c9846040518060600160405280602a8152602001614df8602a91396001600160a01b03808a166000908152601160209081526040808320938c1683529290522054919061335f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611f545760405163c51efddd60e01b815260040160405180910390fd5b6117283385858585604051806020016040528060008152506001613115565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611fbc5760405163c51efddd60e01b815260040160405180910390fd5b611097338384846040518060200160405280600081525060405180602001604052806000815250612bf8565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa15801561204c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120709190614863565b61208d5760405163327fd99160e21b815260040160405180910390fd5b6001600160a01b0382166000908152600260205260409020546120b19082906148c8565b6001600160a01b0390921660009081526002602052604090209190915550565b60006118cc6012848461306c565b6000806120ec84846120f9565b5050600013949350505050565b6001600160a01b03821660009081526002602052604081205490808061211e866111ef565b905060005b815181101561222457600080600084848151811061214357612143614a9e565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa1580156121a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c69190614ab4565b919450925090506121d78288614a0d565b96506121e38187614a0d565b95506122008183116121f65760006129ed565b611d858284614a8b565b61220a848a6148c8565b61221491906148f0565b9750505050806001019050612123565b50509250925092565b600054610100900460ff161580801561224d5750600054600160ff909116105b806122675750303b158015612267575060005460ff166001145b6122835760405162461bcd60e51b815260040161135090614a20565b6000805460ff1916600117905580156122a6576000805461ff0019166101001790555b6122b588888888888888612b30565b8015611826576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b3361231160128284613459565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b336123626012828961306c565b61237f5760405163f7f0222760e01b815260040160405180910390fd5b6113d28188898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525061259492505050565b6115e13333338686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612594915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156124a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612483575b50505050509050919050565b60005b81518110156115e15760008282815181106124cd576124cd614a9e565b602090810291909101015184830155506001016124b0565b6001600160a01b03831661250c57604051638163862760e01b815260040160405180910390fd5b6001600160a01b038216612533576040516337c1c09d60e21b815260040160405180910390fd5b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600e546001600160a01b03166125bd57604051637bce7b2b60e11b815260040160405180910390fd5b6000806125c985612a74565b915091506125e08888838751600014158888613292565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190614943565b600e54909150612667906001600160a01b03168885613551565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156126b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d49190614943565b905060006126e28284614a8b565b905080851461270457604051631c7c26d360e31b815260040160405180910390fd5b896001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d8560405161273f91815260200190565b60405180910390a25050505050505050505050565b6000805b8281101561277e5783810154801561277557600192505050610b65565b50600101612758565b5060009392505050565b60006001600160a01b0384166127b15760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b0383166127d85760405163e219bd3960e01b815260040160405180910390fd5b60003390506128098186868660405180602001604052806000815250604051806020016040528060008152506135b4565b846001600160a01b0316866001600160a01b03161461289c5761289c85876112c9866040518060600160405280602d8152602001614e42602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b031681526020019081526020016000205461335f9092919063ffffffff16565b50600195945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d9190614a6e565b604051638369a0f160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa1580156129c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e79190614a6e565b91505090565b60006001600160ff1b03821115612a575760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611350565b5090565b60005b818110156115e157600083820155600101612a5e565b600e54600090819081906012600160a01b90910460ff161015612ad357600e54612aa990600160a01b900460ff166012614ae2565b612ab490600a614bdf565b9050612ac08185614bee565b9250612acc8184614c10565b9150612b2a565b600e546012600160a01b90910460ff161115612b2357600e54612b0290601290600160a01b900460ff16614ae2565b612b0d90600a614bdf565b9050612b198185614c10565b9250839150612b2a565b8391508192505b50915091565b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a1617179055600f612b65858783614c77565b506010612b73838583614c77565b50612b8a81600080516020614dd883398151915255565b612b9330613653565b6040516000808252908190600080516020614e228339815191529060200160405180910390a36040516001600160a01b038216906000907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a350505050505050565b600e546001600160a01b0316612c2157604051637bce7b2b60e11b815260040160405180910390fd5b600080612c2d85612a74565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612c7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca29190614943565b600e54909150612cbd906001600160a01b0316893086613781565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2a9190614943565b90506000612d388383614a8b565b9050808514612d5a57604051631c7c26d360e31b815260040160405180910390fd5b8651612d70908c908b9087901515808c8c61338b565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df8560405161273f91815260200190565b6000612dd57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603612e2b5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611350565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8d9190614943565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb001914612f075760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611350565b6001600160a01b0381163003612f5f5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611350565b612f87817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b038416602083015201611b92565b6060816001600160401b03811115612fff57612fff6140dd565b604051908082528060200260200182016040528015613028578160200160208202803683370190505b50905060005b828110156130655760008185015490508083838151811061305157613051614a9e565b60209081029190910101525060010161302e565b5092915050565b6000816001600160a01b0316836001600160a01b031614806130db57506001600160a01b038316600090815260018501602052604090205460ff1680156130db57506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b8061101a57506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b03861661313c5760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b0385166131635760405163e219bd3960e01b815260040160405180910390fd5b6131718787878787876137b9565b61317f8787878787876135b4565b6113d2878787878787876138e0565b806001600160a01b0316826001600160a01b0316036132055760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b6064820152608401611350565b6001600160a01b038116600090815260018401602052604090205460ff161561325b576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b0385166132b957604051632e8aac6160e21b815260040160405180910390fd5b82156132ce576132ce868660008786866137b9565b6132d88585613a30565b846001600160a01b0316866001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409886858560405161331f93929190614d36565b60405180910390a36040518481526000906001600160a01b03871690600080516020614e22833981519152906020015b60405180910390a3505050505050565b600081848411156133835760405162461bcd60e51b81526004016113509190613f2e565b505050900390565b6001600160a01b0386166133b257604051630d24315760e01b815260040160405180910390fd5b6133bc8686613b40565b83156133d2576133d287600088888686896138e0565b856001600160a01b0316876001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d87858560405161341993929190614d36565b60405180910390a36040518581526001600160a01b03871690600090600080516020614e228339815191529060200160405180910390a350505050505050565b336001600160a01b038216036134c45760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b6064820152608401611350565b6001600160a01b038116600090815260018401602052604090205460ff161561351e576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b6040516001600160a01b0383166024820152604481018290526115e190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b9a565b6135c785856135c2866129ed565b613c6f565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc8261467798786868660405161361893929190614d36565b60405180910390a4836001600160a01b0316856001600160a01b0316600080516020614e228339815191528560405161334f91815260200190565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156136d457600080fd5b505af11580156136e8573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561376d57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b6040516001600160a01b03808516602483015283166044820152606481018290526117289085906323b872dd60e01b9060840161357d565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa15801561383a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385e9190614a6e565b90506001600160a01b038116156113d257604051633ad5cbc160e11b81526001600160a01b038216906375ab9782906138a5908a908a908a908a908a908a90600401614d61565b600060405180830381600087803b1580156138bf57600080fd5b505af11580156138d3573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613961573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139859190614a6e565b90506001600160a01b03811615613a01576040516223de2960e01b81526001600160a01b038216906223de29906139ca908b908b908b908b908b908b90600401614d61565b600060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b50505050611826565b8115611826576001600160a01b0386163b156118265760405163fe737d0560e01b815260040160405180910390fd5b6000613ab8837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109339190614943565b50509050613ac5826129ed565b811215613ae55760405163043b37d160e21b815260040160405180910390fd5b613aee826129ed565b6001600160a01b038416600090815260026020526040902054613b1191906148f0565b6001600160a01b038416600090815260026020526040902055600354613b38908390614a8b565b600355505050565b613b49816129ed565b6001600160a01b038316600090815260026020526040902054613b6c91906148c8565b6001600160a01b038316600090815260026020526040902055600354613b93908290614a0d565b6003555050565b6000613bef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d6e9092919063ffffffff16565b9050805160001480613c10575080806020019051810190613c109190614863565b6115e15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611350565b6000613cd3847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b5050905081811215613cf857604051632f4cb94160e01b815260040160405180910390fd5b6001600160a01b038416600090815260026020526040902054613d1c9083906148f0565b6001600160a01b038086166000908152600260205260408082209390935590851681522054613d4c9083906148c8565b6001600160a01b03909316600090815260026020526040902092909255505050565b606061101a848460008585600080866001600160a01b03168587604051613d959190614dbb565b60006040518083038185875af1925050503d8060008114613dd2576040519150601f19603f3d011682016040523d82523d6000602084013e613dd7565b606091505b5091509150613de887838387613df3565b979650505050505050565b60608315613e62578251600003613e5b576001600160a01b0385163b613e5b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611350565b508161101a565b61101a8383815115613e775781518083602001fd5b8060405162461bcd60e51b81526004016113509190613f2e565b6020808252825182820181905260009190848201906040850190845b81811015613ed25783516001600160a01b031683529284019291840191600101613ead565b50909695505050505050565b60005b83811015613ef9578181015183820152602001613ee1565b50506000910152565b60008151808452613f1a816020860160208601613ede565b601f01601f19169290920160200192915050565b6020815260006118cc6020830184613f02565b6001600160a01b0381168114610b9757600080fd5b60008083601f840112613f6857600080fd5b5081356001600160401b03811115613f7f57600080fd5b6020830191508360208260051b8501011115613f9a57600080fd5b9250929050565b60008060008060608587031215613fb757600080fd5b8435613fc281613f41565b93506020850135925060408501356001600160401b03811115613fe457600080fd5b613ff087828801613f56565b95989497509550505050565b6000806040838503121561400f57600080fd5b823561401a81613f41565b946020939093013593505050565b60006020828403121561403a57600080fd5b5035919050565b60008060006040848603121561405657600080fd5b8335925060208401356001600160401b0381111561407357600080fd5b61407f86828701613f56565b9497909650939450505050565b600080600080608085870312156140a257600080fd5b84356140ad81613f41565b935060208501356140bd81613f41565b925060408501356140cd81613f41565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561411b5761411b6140dd565b604052919050565b600082601f83011261413457600080fd5b81356001600160401b0381111561414d5761414d6140dd565b614160601f8201601f19166020016140f3565b81815284602083860101111561417557600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114610b9757600080fd5b600080600080600080600060e0888a0312156141bb57600080fd5b8735965060208801356001600160401b038111156141d857600080fd5b6141e48a828b01614123565b96505060408801356141f581613f41565b9450606088013561420581614192565b9350608088013561421581613f41565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121561424757600080fd5b833561425281613f41565b9250602084013561426281613f41565b929592945050506040919091013590565b6000806040838503121561428657600080fd5b50508035926020909101359150565b6000602082840312156142a757600080fd5b81356118cc81613f41565b803560ff811681146142c357600080fd5b919050565b60008083601f8401126142da57600080fd5b5081356001600160401b038111156142f157600080fd5b602083019150836020828501011115613f9a57600080fd5b6000806000806000806080878903121561432257600080fd5b863561432d81613f41565b955061433b602088016142b2565b945060408701356001600160401b038082111561435757600080fd5b6143638a838b016142c8565b9096509450606089013591508082111561437c57600080fd5b5061438989828a016142c8565b979a9699509497509295939492505050565b600080600080608085870312156143b157600080fd5b84356143bc81613f41565b935060208501356143cc81613f41565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b81811015613ed2578351835292840192918401916001016143fd565b6000806000806060858703121561442f57600080fd5b843561443a81613f41565b93506020850135925060408501356001600160401b0381111561445c57600080fd5b613ff0878288016142c8565b600080600080600080600060a0888a03121561448357600080fd5b873561448e81613f41565b9650602088013561449e81613f41565b95506040880135945060608801356001600160401b03808211156144c157600080fd5b6144cd8b838c016142c8565b909650945060808a01359150808211156144e657600080fd5b506144f38a828b016142c8565b989b979a50959850939692959293505050565b60008060006060848603121561451b57600080fd5b833561452681613f41565b95602085013595506040909401359392505050565b60008060006060848603121561455057600080fd5b833561455b81613f41565b92506020840135915060408401356001600160401b0381111561457d57600080fd5b61458986828701614123565b9150509250925092565b600080600080608085870312156145a957600080fd5b84356145b481613f41565b935060208501356145c481613f41565b92506040850135915060608501356001600160401b038111156145e657600080fd5b6145f287828801614123565b91505092959194509250565b6000806040838503121561461157600080fd5b823561461c81613f41565b9150602083013561462c81613f41565b809150509250929050565b600080600080600080600060a0888a03121561465257600080fd5b873561465d81613f41565b965061466b602089016142b2565b955060408801356001600160401b038082111561468757600080fd5b6146938b838c016142c8565b909750955060608a01359150808211156146ac57600080fd5b506146b98a828b016142c8565b90945092505060808801356146cd81613f41565b8091505092959891949750929550565b600080600080600080608087890312156146f657600080fd5b863561470181613f41565b95506020870135945060408701356001600160401b038082111561435757600080fd5b60008060006040848603121561473957600080fd5b8335925060208401356001600160401b0381111561475657600080fd5b61407f868287016142c8565b600181811c9082168061477657607f821691505b60208210810361479657634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b0383111561484957600080fd5b8260051b8085606085013791909101606001949350505050565b60006020828403121561487557600080fd5b81516118cc81614192565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b82016148ab576148ab614880565b5060000390565b634e487b7160e01b600052600160045260246000fd5b80820182811260008312801582168215821617156148e8576148e8614880565b505092915050565b818103600083128015838313168383128216171561306557613065614880565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000613de860a0830184613f02565b60006020828403121561495557600080fd5b5051919050565b6000602080838503121561496f57600080fd5b82516001600160401b038082111561498657600080fd5b818501915085601f83011261499a57600080fd5b8151818111156149ac576149ac6140dd565b8060051b91506149bd8483016140f3565b81815291830184019184810190888411156149d757600080fd5b938501935b83851015614a0157845192506149f183613f41565b82825293850193908501906149dc565b98975050505050505050565b80820180821115610b6557610b65614880565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215614a8057600080fd5b81516118cc81613f41565b81810381811115610b6557610b65614880565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215614ac957600080fd5b8351925060208401519150604084015190509250925092565b60ff8281168282160390811115610b6557610b65614880565b600181815b80851115614b36578160001904821115614b1c57614b1c614880565b80851615614b2957918102915b93841c9390800290614b00565b509250929050565b600082614b4d57506001610b65565b81614b5a57506000610b65565b8160018114614b705760028114614b7a57614b96565b6001915050610b65565b60ff841115614b8b57614b8b614880565b50506001821b610b65565b5060208310610133831016604e8410600b8410161715614bb9575081810a610b65565b614bc38383614afb565b8060001904821115614bd757614bd7614880565b029392505050565b60006118cc60ff841683614b3e565b600082614c0b57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6557610b65614880565b601f8211156115e1576000816000526020600020601f850160051c81016020861015614c505750805b601f850160051c820191505b81811015614c6f57828155600101614c5c565b505050505050565b6001600160401b03831115614c8e57614c8e6140dd565b614ca283614c9c8354614762565b83614c27565b6000601f841160018114614cd65760008515614cbe5750838201355b600019600387901b1c1916600186901b178355610cd2565b600083815260209020601f19861690835b82811015614d075786850135825560209485019460019092019101614ce7565b5086821015614d245760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b838152606060208201526000614d4f6060830185613f02565b82810360408401526116a38185613f02565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090614d9c90830185613f02565b82810360a0840152614dae8185613f02565b9998505050505050505050565b60008251614dcd818460208701613ede565b919091019291505056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220915121436a93788eb4743051d402ef0ce59ebde5102bbcd3e45b3a0e1ec671c164736f6c63430008170033"

Methods

  • Parameters

    • host: string
    • constantOutflowNFTProxy: string
    • constantInflowNFTProxy: string
    • poolAdminNFTProxy: string
    • poolMemberNFTProxy: string
    • Optional overrides: Overrides & {
          from?: string;
      }

    Returns Promise<SuperTokenStorageLayoutTester>

  • Parameters

    • host: string
    • constantOutflowNFTProxy: string
    • constantInflowNFTProxy: string
    • poolAdminNFTProxy: string
    • poolMemberNFTProxy: string
    • Optional overrides: Overrides & {
          from?: string;
      }

    Returns TransactionRequest

  • Parameters

    • address: string
    • signerOrProvider: Signer | Provider

    Returns SuperTokenStorageLayoutTester

  • Returns SuperTokenStorageLayoutTesterInterface

Generated using TypeDoc