Hierarchy

  • ContractFactory
    • ConstantFlowAgreementV1__factory

Constructors

  • Parameters

    • Rest ...args: ConstantFlowAgreementV1ConstructorParams

    Returns ConstantFlowAgreementV1__factory

Properties

abi: readonly [{
    inputs: readonly [{
        internalType: "contract ISuperfluid";
        name: "host";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "constructor";
}, {
    inputs: readonly [];
    name: "AGREEMENT_BASE_ONLY_HOST";
    type: "error";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "_code";
        type: "uint256";
    }];
    name: "APP_RULE";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_NO_NEGATIVE_ALLOWANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_NO_SENDER_CREATE";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_NO_SENDER_FLOW_OPERATOR";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_NO_SENDER_UPDATE";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ACL_UNCLEAN_PERMISSIONS";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_DEPOSIT_TOO_BIG";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_FLOW_ALREADY_EXISTS";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_FLOW_DOES_NOT_EXIST";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_FLOW_RATE_TOO_BIG";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_HOOK_OUT_OF_GAS";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_INSUFFICIENT_BALANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_INVALID_FLOW_RATE";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_NON_CRITICAL_SENDER";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_NO_SELF_FLOW";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ZERO_ADDRESS_RECEIVER";
    type: "error";
}, {
    inputs: readonly [];
    name: "CFA_ZERO_ADDRESS_SENDER";
    type: "error";
}, {
    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 ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint8";
        name: "permissions";
        type: "uint8";
    }, {
        indexed: false;
        internalType: "int96";
        name: "flowRateAllowance";
        type: "int96";
    }];
    name: "FlowOperatorUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        indexed: false;
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        indexed: false;
        internalType: "int256";
        name: "totalSenderFlowRate";
        type: "int256";
    }, {
        indexed: false;
        internalType: "int256";
        name: "totalReceiverFlowRate";
        type: "int256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "FlowUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }];
    name: "FlowUpdatedExtension";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "uint8";
        name: "version";
        type: "uint8";
    }];
    name: "Initialized";
    type: "event";
}, {
    inputs: readonly [];
    name: "CFA_HOOK_GAS_LIMIT";
    outputs: readonly [{
        internalType: "uint64";
        name: "";
        type: "uint64";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "DEFAULT_MINIMUM_DEPOSIT";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "MAXIMUM_DEPOSIT";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "MAXIMUM_FLOW_RATE";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint8";
        name: "existingPermissions";
        type: "uint8";
    }, {
        internalType: "uint8";
        name: "permissionDelta";
        type: "uint8";
    }];
    name: "addPermissions";
    outputs: readonly [{
        internalType: "uint8";
        name: "";
        type: "uint8";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [];
    name: "agreementType";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "authorizeFlowOperatorWithFullControl";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "castrate";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "createFlow";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "createFlowByOperator";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "int96";
        name: "subtractedFlowRateAllowance";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "decreaseFlowRateAllowance";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "uint8";
        name: "permissionsToRemove";
        type: "uint8";
    }, {
        internalType: "int96";
        name: "subtractedFlowRateAllowance";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "decreaseFlowRateAllowanceWithPermissions";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "deleteFlow";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "deleteFlowByOperator";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "getAccountFlowInfo";
    outputs: readonly [{
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getCodeAddress";
    outputs: readonly [{
        internalType: "address";
        name: "codeAddress";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }];
    name: "getDepositRequiredForFlowRate";
    outputs: readonly [{
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }];
    name: "getFlow";
    outputs: readonly [{
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "bytes32";
        name: "flowId";
        type: "bytes32";
    }];
    name: "getFlowByID";
    outputs: readonly [{
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }];
    name: "getFlowOperatorData";
    outputs: readonly [{
        internalType: "bytes32";
        name: "flowOperatorId";
        type: "bytes32";
    }, {
        internalType: "uint8";
        name: "permissions";
        type: "uint8";
    }, {
        internalType: "int96";
        name: "flowRateAllowance";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "bytes32";
        name: "flowOperatorId";
        type: "bytes32";
    }];
    name: "getFlowOperatorDataByID";
    outputs: readonly [{
        internalType: "uint8";
        name: "permissions";
        type: "uint8";
    }, {
        internalType: "int96";
        name: "flowRateAllowance";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }];
    name: "getMaximumFlowRateFromDeposit";
    outputs: readonly [{
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "getNetFlow";
    outputs: readonly [{
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "int96";
        name: "addedFlowRateAllowance";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "increaseFlowRateAllowance";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "uint8";
        name: "permissionsToAdd";
        type: "uint8";
    }, {
        internalType: "int96";
        name: "addedFlowRateAllowance";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "increaseFlowRateAllowanceWithPermissions";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "isPatricianPeriod";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isPatricianPeriodNow";
    outputs: readonly [{
        internalType: "bool";
        name: "isCurrentlyPatricianPeriod";
        type: "bool";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "proxiableUUID";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "time";
        type: "uint256";
    }];
    name: "realtimeBalanceOf";
    outputs: readonly [{
        internalType: "int256";
        name: "dynamicBalance";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint8";
        name: "existingPermissions";
        type: "uint8";
    }, {
        internalType: "uint8";
        name: "permissionDelta";
        type: "uint8";
    }];
    name: "removePermissions";
    outputs: readonly [{
        internalType: "uint8";
        name: "";
        type: "uint8";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "revokeFlowOperatorWithFullControl";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "newAddress";
        type: "address";
    }];
    name: "updateCode";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "updateFlow";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "receiver";
        type: "address";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "updateFlowByOperator";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "flowOperator";
        type: "address";
    }, {
        internalType: "uint8";
        name: "permissions";
        type: "uint8";
    }, {
        internalType: "int96";
        name: "flowRateAllowance";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "updateFlowOperatorPermissions";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}]
bytecode: "0x60a06040523480156200001157600080fd5b506040516200556038038062005560833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051615494620000cc600039600081816105ce015281816108570152818161093501528181610a8901528181610ecd01528181610f6201528181611017015281816137700152613c4901526154946000f3fe608060405234801561001057600080fd5b50600436106102105760003560e01c80635f51fb23116101255780639cb28b72116100ad578063bf3fbc281161007c578063bf3fbc2814610521578063da6b5f3014610544578063e6a1e88814610557578063e8e7e2d11461056a578063f31f88f01461057d57600080fd5b80639cb28b7214610337578063aabd2668146104e8578063ac5f5d00146104fb578063b4b333c61461050e57600080fd5b8063811b3d40116100f4578063811b3d40146104795780638d997f6e1461048c57806394229ecb1461049f5780639903ad38146104b25780639b2e48bc146104ba57600080fd5b80635f51fb231461041b57806362fc305e1461042e57806372976490146104415780637730599e1461045357600080fd5b8063354b9590116101a85780634fe9c291116101775780634fe9c291146103a357806350209a62146103cd57806350d75d25146103e057806352d1902d1461040057806354b770e31461040857600080fd5b8063354b95901461034557806346951954146103585780634b839e0b1461036d5780634c8b181f1461039057600080fd5b806309d256ef116101e457806309d256ef146102ad5780630f1ac495146102dc5780632567f5781461031257806326b0f5361461033757600080fd5b8062422bbe1461021557806304aafa491461024d5780630602f7db14610267578063062e56ec1461028d575b600080fd5b6102286102233660046147dd565b610590565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61025964010000000081565b604051908152602001610244565b61027a610275366004614828565b6105c6565b604051600b9190910b8152602001610244565b6102a061029b366004614896565b610608565b604051610244919061494b565b6102c06102bb366004614828565b610622565b6040805160ff9093168352600b9190910b602083015201610244565b6102ef6102ea36600461495e565b610646565b60408051948552600b9390930b6020850152918301526060820152608001610244565b6103256103203660046149a6565b61067c565b60405160ff9091168152602001610244565b61025960016001605f1b0381565b6102a06103533660046149e6565b610687565b61036b610366366004614a72565b61084c565b005b61038061037b366004614a8f565b6108a1565b6040519015158152602001610244565b6102a061039e366004614ad0565b610999565b6103b66103b136600461495e565b610a84565b604080519215158352602083019190915201610244565b6102a06103db366004614b4c565b610b1f565b6103e8610bf2565b6040516001600160a01b039091168152602001610244565b610259610c21565b6102a0610416366004614896565b610c85565b6102a0610429366004614b4c565b610c9d565b6102a061043c366004614b4c565b610cb8565b61032561044f3660046149a6565b1790565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3610259565b6102a0610487366004614b8d565b610d6b565b61025961049a366004614bd1565b610eb4565b6102a06104ad3660046149e6565b6110da565b61036b61125d565b6104cd6104c8366004614a8f565b61136b565b60408051938452602084019290925290820152606001610244565b6102ef6104f6366004614828565b6113c5565b6102a0610509366004614b4c565b6113d7565b6102a061051c366004614ad0565b6113e8565b61052b6203d09081565b60405167ffffffffffffffff9091168152602001610244565b6102a0610552366004614b8d565b61147c565b6102ef6105653660046147dd565b6115ac565b61027a61057836600461495e565b6115e7565b6102a061058b366004614b8d565b611601565b600080600061059f85856116ea565b925060006105ad8785611755565b8051602090910151959990985094965093945050505050565b6000806105f37f00000000000000000000000000000000000000000000000000000000000000008561181a565b509050610600818461192f565b949350505050565b606061061985856000808787610d6b565b95945050505050565b60008060006106318585611755565b80516020909101519097909650945050505050565b6000806000806000610658878761196f565b805160208201516040830151606090930151919b909a509198509650945050505050565b801982165b92915050565b606060006106cb8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050866001600160a01b031681606001516001600160a01b0316036107035760405163edfa0d3b60e01b815260040160405180910390fd5b6000806107198a6107148b8b611bec565b611c14565b9150915060008060006107318d8d8860600151610590565b925092509250610742826001611c5b565b61075f5760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b03148061078457508a600b0b8560200151600b0b12155b6107a6576020850151610797908c614c1c565b6107a19083614c1c565b6107a8565b815b9050600081600b0b12156107cf5760405163a0645c1f60e01b815260040160405180910390fd5b6107db8e858584611cb6565b5050505061080960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261083d8183858a8a89611d3f565b9b9a5050505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461089557604051630b00ec8f60e11b815260040160405180910390fd5b61089e81611eaa565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa1580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109179190614c4e565b505090506000811261092d576001915050610992565b60008061095a7f00000000000000000000000000000000000000000000000000000000000000008861181a565b91509150600061096a888861196f565b915050600061097c82604001516120b2565b905061098a85828686612120565b955050505050505b9392505050565b606060006109dd8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b905060006109f088888460600151610590565b509150506000610a01826002611c5b565b905080610a215760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b16825289811660208301528816604082015260006060820152610a76818389898861216e565b9a9950505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b099190614c7c565b9050610b168484836108a1565b91509250929050565b60606000610b638785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050610b8f60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610bcd91611bec565b9050600080610be0846000015184611c14565b9150915061083d8482848b8b8a611d3f565b6000610c1c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190614c7c565b60606106198585600760016001605f1b038787610d6b565b6060610cae8686600087878761147c565b9695505050505050565b60606000610cfc8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050610d2860408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610d5f81868685612860565b98975050505050505050565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450610db692508a9150899050888888886129e1565b6040805180820190915260ff88168152600b87900b6020820152606082015191925090600090610de6908a6116ea565b9050896001600160a01b031663a1b2bf8b82610e0185612aa8565b6040518363ffffffff1660e01b8152600401610e1e929190614cd1565b600060405180830381600087803b158015610e3857600080fd5b505af1158015610e4c573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b600003610ec957506000610681565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190614cea565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b8152600401610fc193929190614d07565b602060405180830381865afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110029190614c7c565b90506000826001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161107693929190614d07565b602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190614c7c565b9050602081901c63ffffffff166110cf838288612b1e565b979650505050505050565b6060600061111e8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050866001600160a01b031681606001516001600160a01b031603611156576040516325cc989b60e11b815260040160405180910390fd5b600080600061116a8b8b8660600151610590565b92509250925061117b826000611c5b565b611198576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b03146111bb576111b68983614c1c565b6111bd565b815b9050600081600b0b12156111e45760405163a0645c1f60e01b815260040160405180910390fd5b6111f08c858584611cb6565b5050505061121e60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261125081868685612860565b9998505050505050505050565b600054610100900460ff161580801561127d5750600054600160ff909116105b806112975750303b158015611297575060005460ff166001145b6112ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611322576000805461ff0019166101001790555b801561089e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b600080600080600061137d888861196f565b9150915081156113ba578060200151600b0b81600001518761139f9190614d2b565b6113a99190614d52565b945080604001519350806060015192505b505093509350939050565b60008060008060006106588787611c14565b6060610cae86866000878787611601565b6060600061142c8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050600061143f88888460600151610590565b509150506000611450826002611c5b565b9050610a4660408051608081018252600080825260208201819052918101829052606081019190915290565b606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506114c792508a9150899050888888886129e1565b905060008060006114dd8b85606001518c610590565b92509250925060006114ef838b61067c565b905060006114fd8a84614c1c565b9050600081600b0b1215611524576040516386e0377d60e01b815260040160405180910390fd5b6115308d868484611cb6565b8b6001600160a01b031686606001516001600160a01b03168e6001600160a01b03167fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8858560405161159492919060ff929092168252600b0b602082015260400190565b60405180910390a45050505050509695505050505050565b60008060008060006115c2886107148989611bec565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806115f4848461196f565b6020015195945050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061164c92508a9150899050888888886129e1565b905060008060006116628b85606001518c610590565b9194509250905060006116758983614d82565b9050828a176116868d868385611cb6565b8b6001600160a01b031686606001516001600160a01b03168e6001600160a01b03167fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8848660405161159492919060ff929092168252600b0b602082015260400190565b600082826040516020016117379291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156117bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117e59190810190614e25565b905061180d816000815181106117fd576117fd614ebf565b602002602001015160001c612b91565b92509250505b9250929050565b6000806000846001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118819190614cea565b90506000816001600160a01b03166380f70cba87877fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016118d593929190614d07565b602060405180830381865afa1580156118f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119169190614c7c565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b0382111561195957604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff198216915060006106008484614eeb565b6000611979614716565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa1580156119d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a009190810190614e25565b905061180d81600081518110611a1857611a18614ebf565b602002602001015160001c612bd1565b611a30614741565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190614cea565b6001600160a01b031614611ae65760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016112f6565b604051632fd0a1cd60e21b8152339063bf42873490611b0990859060040161494b565b602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190614f1a565b611b845760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016112f6565b604051631fb6491d60e11b81523390633f6c923a90611ba790859060040161494b565b600060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109929190810190614fbc565b604080516001600160a01b038085166020830152831691810191909152600090606001611737565b6000611c1e614716565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f906064016119bb565b600080826002811115611c7057611c706150c3565b03611c815750600182811614610681565b6001826002811115611c9557611c956150c3565b03611ca85750600182811c811614610681565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611ce984612aa8565b6040518363ffffffff1660e01b8152600401611d06929190614cd1565b600060405180830381600087803b158015611d2057600080fd5b505af1158015611d34573d6000803e3d6000fd5b505050505050505050565b60606000611d4d8884612c31565b91505085611d6e5760405163168cafc960e21b815260040160405180910390fd5b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc9190614f1a565b15611e3857611e3188604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612d329050565b9150611e83565b611e808860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506134d8915050565b91505b611e9688600001518960200151856135ab565b611e9f88613685565b509695505050505050565b6000611ed47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611f2a5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016112f6565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190614c7c565b611f94610c21565b14611fed5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016112f6565b6001600160a01b03811630036120455760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016112f6565b61206d817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc612096610c21565b604080519182526001600160a01b038416602083015201611360565b60006001600160ff1b0382111561211c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016112f6565b5090565b60008360000361213257506000610600565b600061213e85876150d9565b9050600061214c8587615101565b9050612158848661512f565b6121628284615101565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166121cc57604051631ce9b06760e01b815260040160405180910390fd5b60408701516001600160a01b03166121f757604051633c70159560e11b815260040160405180910390fd5b61220987602001518860400151611bec565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161225f91611c14565b91509150816122815760405163168cafc960e21b815260040160405180910390fd5b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926122cd926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e9190614c4e565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612356575089604001516001600160a01b031686606001516001600160a01b031614155b8015612360575088155b156124715760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156123af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d39190614f1a565b15801561244b575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124499190614f1a565b155b1561247157600081126124715760405163ce11b5d160e01b815260040160405180910390fd5b600081121561248f5761248f8a600001518286858a60600151613722565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036125855760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125529190614f1a565b156125765761256f8a604001518b600001518685898b6002612d32565b945061284a565b895161256f908584888a6134d8565b89604001516001600160a01b031686606001516001600160a01b0316036126b95760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614f1a565b156126315761256f8a602001518b600001518685898b6002612d32565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561267b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269f9190614f1a565b156125765761256f60008b600001518685898b6002612d32565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127279190614f1a565b80156127335750600081125b156127ad5760208a0151604051635b92108f60e11b8152339163b724211e91612763918991600b90600401615142565b6000604051808303816000875af1158015612782573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127aa9190810190615170565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156127f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281b9190614f1a565b156128385761256f8a604001518b600001518685898b6002612d32565b8951612847908584888a6134d8565b94505b6128538a61394f565b5050505095945050505050565b606060008061286f8785612c31565b91509150600080612884896000015185611c14565b9150915081156128a75760405163801b686360e01b815260040160405180910390fd5b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129159190614f1a565b1561296e5761296789604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612d329050565b94506129b9565b6129b6896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506134d8915050565b94505b6129cc89600001518a60200151886135ab565b6129d5896139b9565b50505050949350505050565b6129e9614741565b60f8851615612a0b57604051631e4e759b60e21b815260040160405180910390fd5b612a4b8784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050856001600160a01b031681606001516001600160a01b031603612a835760405163b0ed394d60e01b815260040160405180910390fd5b600084600b0b1215610cae576040516386e0377d60e01b815260040160405180910390fd5b606060008260200151600b0b1215612ac257612ac26151a5565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612b0d57612b0d614ebf565b602002602001018181525050919050565b60008082600b0b1215612b44576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612b5a84600b85900b6151bb565b1115612b7957604051630c9c55c160e01b815260040160405180910390fd5b6000612b858385613a23565b90506106198582613a67565b6040805180820190915260008082526020820152811580159190612bcc5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612bdb614716565b821580159250612bcc5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612c8c57604051633c70159560e11b815260040160405180910390fd5b612c9e84602001518560400151611bec565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612d0a5760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b13611813576040516348d6568b60e11b815260040160405180910390fd5b82612d3b61479c565b6001600160a01b0389161561303f576000612dd0898b8a600001518b602001518c60400151604051602001612d869291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612de657612de66150c3565b03612dfb5764010000000060c0820152612e30565b6001846002811115612e0f57612e0f6150c3565b03612e245764040000000060c0820152612e30565b64100000000060c08201525b612e3a8187613a7d565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea69190614cea565b9050612ebe86604001518761014001518c8c8c613c34565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612f189033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614d07565b602060405180830381865afa158015612f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f599190614c7c565b905060008360800151600014612f7d57612f7864010000000083613a67565b612f80565b60005b9050808460800151612f9291906151d2565b608085015260608a0151612fa5906120b2565b60a08501526000876002811115612fbe57612fbe6150c3565b03612fd35764020000000060c0850152613008565b6001876002811115612fe757612fe76150c3565b03612ffc5764080000000060c0850152613008565b64200000000060c08501525b61301784866000015188614039565b60408701919091528b5190965061302f908d90611c14565b60208701525061305d9350505050565b61305584604001518561014001518a8a8a613c34565b602084015250505b600061306c87606001516120b2565b826040015161010001516130809190614d2b565b90506130a6816130978460200151604001516120b2565b6130a191906150d9565b614285565b826020015160400181815250506130c8816130978460200151606001516120b2565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b916130f3906142d7565b6040518363ffffffff1660e01b8152600401613110929190614cd1565b600060405180830381600087803b15801561312a57600080fd5b505af115801561313e573d6000803e3d6000fd5b5050505061315a89896020015160008460008a60400151614348565b50613172898960400151600080858a60400151614348565b506101408501516001600160a01b031615806131a45750886001600160a01b03168561014001516001600160a01b0316145b15613218576040516359a2914160e01b815233906359a29141906131ce90869085906004016151e5565b6000604051808303816000875af11580156131ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132159190810190615170565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015613262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132869190614f1a565b156134cb57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a9190614c4e565b509091505060008112156134c957600285600281111561332c5761332c6150c3565b036134ad576040808a01519051635b92108f60e11b8152339163b724211e9161335c918891600c90600401615142565b6000604051808303816000875af115801561337b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133a39190810190615170565b935060006133c16133b383615207565b6133bc85615207565b6144b9565b90508a6001600160a01b031663cf97256d8b60200151836133e190615207565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561342757600080fd5b505af115801561343b573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561348f57600080fd5b505af11580156134a3573d6000803e3d6000fd5b50505050506134c9565b60405163a85ba64f60e01b8152600c60048201526024016112f6565b505b5050979650505050505050565b606083810151156134eb576134eb6151a5565b60006134f5614716565b61350b84604001518561014001518a8a8a613c34565b6101408701519294509250506001600160a01b03808a1691160361359c576040516359a2914160e01b815233906359a291419061354e90889086906004016151e5565b6000604051808303816000875af115801561356d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135959190810190615170565b92506135a0565b8492505b505095945050505050565b602081015160ff1660031415806135d95750826001600160a01b03168161014001516001600160a01b031614155b15613680576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136589190614c4e565b50509050600081121561367e5760405163ea76c9b360e01b815260040160405180910390fd5b505b505050565b600061369482600001516144ce565b90506001600160a01b0381161561371e578151602083015160408085015190516375aa53e560e11b81526001600160a01b0393841660048201529183166024830152821660448201529082169063eb54a7ca906064015b600060405180830381600087803b15801561370557600080fd5b505af1158015613719573d6000803e3d6000fd5b505050505b5050565b600061373286856020015161196f565b915050600061374484604001516120b2565b9050600061375583604001516120b2565b90506060600080613766848b6150d9565b90506000806137957f00000000000000000000000000000000000000000000000000000000000000008e61181a565b915091506137a58c878484612120565b9350505060008112613890576000846137be8388614d52565b6137c89190615101565b90506001836137d85760016137db565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161382a88614285565b61383689600019614d52565b6040518863ffffffff1660e01b81526004016138589796959493929190615223565b600060405180830381600087803b15801561387257600080fd5b505af1158015613886573d6000803e3d6000fd5b5050505050613942565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f602001516138e088614285565b6138ec8a600019614d52565b6040518863ffffffff1660e01b815260040161390e9796959493929190615223565b600060405180830381600087803b15801561392857600080fd5b505af115801561393c573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600061395e82600001516144ce565b90506001600160a01b0381161561371e5781516020830151604080850151905163ef1f023760e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063ef1f0237906064016136eb565b60006139c882600001516144ce565b90506001600160a01b0381161561371e5781516020830151604080850151905163f7e3d98360e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063f7e3d983906064016136eb565b600082600b0b600003613a3857506000610681565b60016001605f1b03821115613a4f57613a4f6151a5565b613a598284615270565b600b0b90506109928161457d565b6000818311613a765781610992565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af59190615290565b91945092509050828015613b07575081155b15613c2b576000613b1886886145b1565b90508660c001518216600003613c1d576000613b378860c0015161462f565b88516040808b015160608c015182516000815260208101909352613b63939230929190604481016152cc565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613bd29291869164100000000091909114908890600401615311565b6000604051808303816000875af1158015613bf1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c199190810190615170565b9550505b613c288660006146c6565b50505b50505092915050565b600080613c3f614716565b6000806000613c6e7f00000000000000000000000000000000000000000000000000000000000000008a61181a565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd59190614cea565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613d289033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614d07565b602060405180830381865afa158015613d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d699190614c7c565b9250613d79896080015183613a23565b95505050613d8a86606001516120b2565b613d9787604001516120b2565b613da0866120b2565b613daa9190614d2b565b613db491906150d9565b9450613dc78561309788604001516120b2565b91508082108015613ddf575060008760800151600b0b135b15613e2157613df186606001516120b2565b613dfe87604001516120b2565b613e07836120b2565b613e119190614d2b565b613e1b91906150d9565b94508091505b6001600160a01b03891615801590613e4b5750876001600160a01b0316896001600160a01b031614155b15613e5557600093505b604051806080016040528060008960800151600b0b13613e76576000613e78565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613eb7866142d7565b6040518363ffffffff1660e01b8152600401613ed4929190614cd1565b600060405180830381600087803b158015613eee57600080fd5b505af1158015613f02573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613f22915050565b613f4888886020015189608001518960200151613f3f9190614c1c565b8860008f614348565b600b0b8152604087015160208701516080890151613f77928b929091613f6e9190614c1c565b6000808f614348565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613fdd94939290919061534f565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f748360405161402491815260200190565b60405180910390a25050955095509592505050565b614041614741565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015614095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b99190615290565b889650919450925090508280156140ce575081155b1561427a576140dd84896145b1565b93508760c0015181166000036142685760006140fc8960c0015161462f565b89516040808c015160608d01518251600081526020810190935261412a9392309291908e906044810161537d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926141999291869164200000000091909114908b90600401615311565b6000604051808303816000875af11580156141b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141e09190810190615170565b604051631fb6491d60e11b81529095503390633f6c923a9061420690889060040161494b565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190614fbc565b955061426089608001518761010001516146ee565b610100870152505b614277868661010001516146c6565b93505b505050935093915050565b60008082121561211c5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016112f6565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612b0d57612b0d614ebf565b600080614355888861196f565b91505060008160200151600b0b61437a836000015186614375919061512f565b6120b2565b6143849190614d52565b905080156143ef5760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b1580156143d657600080fd5b505af11580156143ea573d6000803e3d6000fd5b505050505b8682602001516143ff9190614d82565b600b0b6020830152838252604082015161441e908790613097906120b2565b60408301526060820151614437908690613097906120b2565b60608301526001600160a01b03891663090c415e896000614457866142d7565b6040518463ffffffff1660e01b8152600401614475939291906153d6565b600060405180830381600087803b15801561448f57600080fd5b505af11580156144a3573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b60008183136144c85782610992565b50919050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b0386169161451491906153fd565b600060405180830381855afa9150503d806000811461454f576040519150601f19603f3d011682016040523d82523d6000602084013e614554565b606091505b5091509150811561457657808060200190518101906145739190614cea565b92505b5050919050565b60008063ffffffff8316614592576000614595565b60015b60ff16905060206145a88285831c6151d2565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb0946145e8948a94600401615419565b6000604051808303816000875af1158015614607573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109929190810190615170565b6000640100000000820361464b57506330d9c91560e01b919050565b64040000000082036146655750630221347d60e61b919050565b641000000000820361467f5750635f9e7d7760e01b919050565b6402000000008203614699575063d86ed3e560e01b919050565b64080000000082036146b3575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906145e890869086906004016151e5565b60006109926000614707614701866120b2565b856144b9565b6000818313613a765781610992565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016147b6614716565b81526020016147c3614741565b905290565b6001600160a01b038116811461089e57600080fd5b6000806000606084860312156147f257600080fd5b83356147fd816147c8565b9250602084013561480d816147c8565b9150604084013561481d816147c8565b809150509250925092565b6000806040838503121561483b57600080fd5b8235614846816147c8565b946020939093013593505050565b60008083601f84011261486657600080fd5b50813567ffffffffffffffff81111561487e57600080fd5b60208301915083602082850101111561181357600080fd5b600080600080606085870312156148ac57600080fd5b84356148b7816147c8565b935060208501356148c7816147c8565b9250604085013567ffffffffffffffff8111156148e357600080fd5b6148ef87828801614854565b95989497509550505050565b60005b838110156149165781810151838201526020016148fe565b50506000910152565b600081518084526149378160208601602086016148fb565b601f01601f19169290920160200192915050565b602081526000610992602083018461491f565b6000806040838503121561497157600080fd5b823561497c816147c8565b9150602083013561498c816147c8565b809150509250929050565b60ff8116811461089e57600080fd5b600080604083850312156149b957600080fd5b82356149c481614997565b9150602083013561498c81614997565b8035600b81900b81146146c157600080fd5b60008060008060008060a087890312156149ff57600080fd5b8635614a0a816147c8565b95506020870135614a1a816147c8565b94506040870135614a2a816147c8565b9350614a38606088016149d4565b9250608087013567ffffffffffffffff811115614a5457600080fd5b614a6089828a01614854565b979a9699509497509295939492505050565b600060208284031215614a8457600080fd5b8135610992816147c8565b600080600060608486031215614aa457600080fd5b8335614aaf816147c8565b92506020840135614abf816147c8565b929592945050506040919091013590565b600080600080600060808688031215614ae857600080fd5b8535614af3816147c8565b94506020860135614b03816147c8565b93506040860135614b13816147c8565b9250606086013567ffffffffffffffff811115614b2f57600080fd5b614b3b88828901614854565b969995985093965092949392505050565b600080600080600060808688031215614b6457600080fd5b8535614b6f816147c8565b94506020860135614b7f816147c8565b9350614b13604087016149d4565b60008060008060008060a08789031215614ba657600080fd5b8635614bb1816147c8565b95506020870135614bc1816147c8565b94506040870135614a2a81614997565b60008060408385031215614be457600080fd5b8235614bef816147c8565b9150614bfd602084016149d4565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b036b7fffffffffffffffffffffff19811260016001605f1b038213171561068157610681614c06565b600080600060608486031215614c6357600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614c8e57600080fd5b5051919050565b60008151808452602080850194506020840160005b83811015614cc657815187529582019590820190600101614caa565b509495945050505050565b8281526040602082015260006106006040830184614c95565b600060208284031215614cfc57600080fd5b8151610992816147c8565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614d4b57614d4b614c06565b5092915050565b80820260008212600160ff1b84141615614d6e57614d6e614c06565b818105831482151761068157610681614c06565b600b81810b9083900b0160016001605f1b0381136b7fffffffffffffffffffffff198212171561068157610681614c06565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614dee57614dee614db4565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e1d57614e1d614db4565b604052919050565b60006020808385031215614e3857600080fd5b825167ffffffffffffffff80821115614e5057600080fd5b818501915085601f830112614e6457600080fd5b815181811115614e7657614e76614db4565b8060051b9150614e87848301614df4565b8181529183018401918481019088841115614ea157600080fd5b938501935b83851015610d5f57845182529385019390850190614ea6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614efa57614efa614ed5565b500490565b80516146c1816147c8565b805180151581146146c157600080fd5b600060208284031215614f2c57600080fd5b61099282614f0a565b80516146c181614997565b80516001600160e01b0319811681146146c157600080fd5b600082601f830112614f6957600080fd5b815167ffffffffffffffff811115614f8357614f83614db4565b614f96601f8201601f1916602001614df4565b818152846020838601011115614fab57600080fd5b6106008260208301602087016148fb565b600060208284031215614fce57600080fd5b815167ffffffffffffffff80821115614fe657600080fd5b908301906101608286031215614ffb57600080fd5b615003614dca565b61500c83614f35565b815261501a60208401614f35565b60208201526040830151604082015261503560608401614eff565b606082015261504660808401614f40565b608082015260a08301518281111561505d57600080fd5b61506987828601614f58565b60a08301525060c083015160c082015260e083015160e08201526101009150818301518282015261012091506150a0828401614eff565b8282015261014091506150b4828401614eff565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b80820182811260008312801582168215821617156150f9576150f9614c06565b505092915050565b60008261511057615110614ed5565b600160ff1b82146000198414161561512a5761512a614c06565b500590565b8181038181111561068157610681614c06565b606081526000615155606083018661491f565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561518257600080fd5b815167ffffffffffffffff81111561519957600080fd5b61060084828501614f58565b634e487b7160e01b600052600160045260246000fd5b808202811582820484141761068157610681614c06565b8082018082111561068157610681614c06565b6040815260006151f8604083018561491f565b90508260208301529392505050565b6000600160ff1b820161521c5761521c614c06565b5060000390565b87815260e06020820152600061523c60e083018961491f565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600082600b0b82600b0b0280600b0b9150808214614d4b57614d4b614c06565b6000806000606084860312156152a557600080fd5b6152ae84614f0a565b92506152bc60208501614f0a565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152ff9083018561491f565b8281036080840152610d5f818561491f565b6001600160a01b03851681526080602082018190526000906153359083018661491f565b841515604084015282810360608401526110cf818561491f565b84600b0b815283600b0b602082015282600b0b6040820152608060608201526000610cae608083018461491f565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906153b09083018661491f565b82810360808401526153c2818661491f565b905082810360a0840152611250818561491f565b60018060a01b03841681528260208201526060604082015260006106196060830184614c95565b6000825161540f8184602087016148fb565b9190910192915050565b60a08152600061542c60a083018861491f565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea2646970667358221220536b50b5add83bdd497b475797c5c0d95f5dfb703bd13a57f90c10df4fe3e19464736f6c63430008170033" = "0x60a06040523480156200001157600080fd5b506040516200556038038062005560833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b608051615494620000cc600039600081816105ce015281816108570152818161093501528181610a8901528181610ecd01528181610f6201528181611017015281816137700152613c4901526154946000f3fe608060405234801561001057600080fd5b50600436106102105760003560e01c80635f51fb23116101255780639cb28b72116100ad578063bf3fbc281161007c578063bf3fbc2814610521578063da6b5f3014610544578063e6a1e88814610557578063e8e7e2d11461056a578063f31f88f01461057d57600080fd5b80639cb28b7214610337578063aabd2668146104e8578063ac5f5d00146104fb578063b4b333c61461050e57600080fd5b8063811b3d40116100f4578063811b3d40146104795780638d997f6e1461048c57806394229ecb1461049f5780639903ad38146104b25780639b2e48bc146104ba57600080fd5b80635f51fb231461041b57806362fc305e1461042e57806372976490146104415780637730599e1461045357600080fd5b8063354b9590116101a85780634fe9c291116101775780634fe9c291146103a357806350209a62146103cd57806350d75d25146103e057806352d1902d1461040057806354b770e31461040857600080fd5b8063354b95901461034557806346951954146103585780634b839e0b1461036d5780634c8b181f1461039057600080fd5b806309d256ef116101e457806309d256ef146102ad5780630f1ac495146102dc5780632567f5781461031257806326b0f5361461033757600080fd5b8062422bbe1461021557806304aafa491461024d5780630602f7db14610267578063062e56ec1461028d575b600080fd5b6102286102233660046147dd565b610590565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61025964010000000081565b604051908152602001610244565b61027a610275366004614828565b6105c6565b604051600b9190910b8152602001610244565b6102a061029b366004614896565b610608565b604051610244919061494b565b6102c06102bb366004614828565b610622565b6040805160ff9093168352600b9190910b602083015201610244565b6102ef6102ea36600461495e565b610646565b60408051948552600b9390930b6020850152918301526060820152608001610244565b6103256103203660046149a6565b61067c565b60405160ff9091168152602001610244565b61025960016001605f1b0381565b6102a06103533660046149e6565b610687565b61036b610366366004614a72565b61084c565b005b61038061037b366004614a8f565b6108a1565b6040519015158152602001610244565b6102a061039e366004614ad0565b610999565b6103b66103b136600461495e565b610a84565b604080519215158352602083019190915201610244565b6102a06103db366004614b4c565b610b1f565b6103e8610bf2565b6040516001600160a01b039091168152602001610244565b610259610c21565b6102a0610416366004614896565b610c85565b6102a0610429366004614b4c565b610c9d565b6102a061043c366004614b4c565b610cb8565b61032561044f3660046149a6565b1790565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3610259565b6102a0610487366004614b8d565b610d6b565b61025961049a366004614bd1565b610eb4565b6102a06104ad3660046149e6565b6110da565b61036b61125d565b6104cd6104c8366004614a8f565b61136b565b60408051938452602084019290925290820152606001610244565b6102ef6104f6366004614828565b6113c5565b6102a0610509366004614b4c565b6113d7565b6102a061051c366004614ad0565b6113e8565b61052b6203d09081565b60405167ffffffffffffffff9091168152602001610244565b6102a0610552366004614b8d565b61147c565b6102ef6105653660046147dd565b6115ac565b61027a61057836600461495e565b6115e7565b6102a061058b366004614b8d565b611601565b600080600061059f85856116ea565b925060006105ad8785611755565b8051602090910151959990985094965093945050505050565b6000806105f37f00000000000000000000000000000000000000000000000000000000000000008561181a565b509050610600818461192f565b949350505050565b606061061985856000808787610d6b565b95945050505050565b60008060006106318585611755565b80516020909101519097909650945050505050565b6000806000806000610658878761196f565b805160208201516040830151606090930151919b909a509198509650945050505050565b801982165b92915050565b606060006106cb8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050866001600160a01b031681606001516001600160a01b0316036107035760405163edfa0d3b60e01b815260040160405180910390fd5b6000806107198a6107148b8b611bec565b611c14565b9150915060008060006107318d8d8860600151610590565b925092509250610742826001611c5b565b61075f5760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b03148061078457508a600b0b8560200151600b0b12155b6107a6576020850151610797908c614c1c565b6107a19083614c1c565b6107a8565b815b9050600081600b0b12156107cf5760405163a0645c1f60e01b815260040160405180910390fd5b6107db8e858584611cb6565b5050505061080960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261083d8183858a8a89611d3f565b9b9a5050505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461089557604051630b00ec8f60e11b815260040160405180910390fd5b61089e81611eaa565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa1580156108f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109179190614c4e565b505090506000811261092d576001915050610992565b60008061095a7f00000000000000000000000000000000000000000000000000000000000000008861181a565b91509150600061096a888861196f565b915050600061097c82604001516120b2565b905061098a85828686612120565b955050505050505b9392505050565b606060006109dd8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b905060006109f088888460600151610590565b509150506000610a01826002611c5b565b905080610a215760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b16825289811660208301528816604082015260006060820152610a76818389898861216e565b9a9950505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b099190614c7c565b9050610b168484836108a1565b91509250929050565b60606000610b638785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050610b8f60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610bcd91611bec565b9050600080610be0846000015184611c14565b9150915061083d8482848b8b8a611d3f565b6000610c1c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190614c7c565b60606106198585600760016001605f1b038787610d6b565b6060610cae8686600087878761147c565b9695505050505050565b60606000610cfc8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050610d2860408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610d5f81868685612860565b98975050505050505050565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450610db692508a9150899050888888886129e1565b6040805180820190915260ff88168152600b87900b6020820152606082015191925090600090610de6908a6116ea565b9050896001600160a01b031663a1b2bf8b82610e0185612aa8565b6040518363ffffffff1660e01b8152600401610e1e929190614cd1565b600060405180830381600087803b158015610e3857600080fd5b505af1158015610e4c573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b600003610ec957506000610681565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d9190614cea565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b8152600401610fc193929190614d07565b602060405180830381865afa158015610fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110029190614c7c565b90506000826001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161107693929190614d07565b602060405180830381865afa158015611093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b79190614c7c565b9050602081901c63ffffffff166110cf838288612b1e565b979650505050505050565b6060600061111e8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050866001600160a01b031681606001516001600160a01b031603611156576040516325cc989b60e11b815260040160405180910390fd5b600080600061116a8b8b8660600151610590565b92509250925061117b826000611c5b565b611198576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b03146111bb576111b68983614c1c565b6111bd565b815b9050600081600b0b12156111e45760405163a0645c1f60e01b815260040160405180910390fd5b6111f08c858584611cb6565b5050505061121e60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261125081868685612860565b9998505050505050505050565b600054610100900460ff161580801561127d5750600054600160ff909116105b806112975750303b158015611297575060005460ff166001145b6112ff5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611322576000805461ff0019166101001790555b801561089e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b600080600080600061137d888861196f565b9150915081156113ba578060200151600b0b81600001518761139f9190614d2b565b6113a99190614d52565b945080604001519350806060015192505b505093509350939050565b60008060008060006106588787611c14565b6060610cae86866000878787611601565b6060600061142c8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050600061143f88888460600151610590565b509150506000611450826002611c5b565b9050610a4660408051608081018252600080825260208201819052918101829052606081019190915290565b606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509394506114c792508a9150899050888888886129e1565b905060008060006114dd8b85606001518c610590565b92509250925060006114ef838b61067c565b905060006114fd8a84614c1c565b9050600081600b0b1215611524576040516386e0377d60e01b815260040160405180910390fd5b6115308d868484611cb6565b8b6001600160a01b031686606001516001600160a01b03168e6001600160a01b03167fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8858560405161159492919060ff929092168252600b0b602082015260400190565b60405180910390a45050505050509695505050505050565b60008060008060006115c2886107148989611bec565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806115f4848461196f565b6020015195945050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061164c92508a9150899050888888886129e1565b905060008060006116628b85606001518c610590565b9194509250905060006116758983614d82565b9050828a176116868d868385611cb6565b8b6001600160a01b031686606001516001600160a01b03168e6001600160a01b03167fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8848660405161159492919060ff929092168252600b0b602082015260400190565b600082826040516020016117379291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156117bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117e59190810190614e25565b905061180d816000815181106117fd576117fd614ebf565b602002602001015160001c612b91565b92509250505b9250929050565b6000806000846001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118819190614cea565b90506000816001600160a01b03166380f70cba87877fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016118d593929190614d07565b602060405180830381865afa1580156118f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119169190614c7c565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b0382111561195957604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff198216915060006106008484614eeb565b6000611979614716565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa1580156119d8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a009190810190614e25565b905061180d81600081518110611a1857611a18614ebf565b602002602001015160001c612bd1565b611a30614741565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9c9190614cea565b6001600160a01b031614611ae65760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016112f6565b604051632fd0a1cd60e21b8152339063bf42873490611b0990859060040161494b565b602060405180830381865afa158015611b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4a9190614f1a565b611b845760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016112f6565b604051631fb6491d60e11b81523390633f6c923a90611ba790859060040161494b565b600060405180830381865afa158015611bc4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109929190810190614fbc565b604080516001600160a01b038085166020830152831691810191909152600090606001611737565b6000611c1e614716565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f906064016119bb565b600080826002811115611c7057611c706150c3565b03611c815750600182811614610681565b6001826002811115611c9557611c956150c3565b03611ca85750600182811c811614610681565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611ce984612aa8565b6040518363ffffffff1660e01b8152600401611d06929190614cd1565b600060405180830381600087803b158015611d2057600080fd5b505af1158015611d34573d6000803e3d6000fd5b505050505050505050565b60606000611d4d8884612c31565b91505085611d6e5760405163168cafc960e21b815260040160405180910390fd5b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc9190614f1a565b15611e3857611e3188604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612d329050565b9150611e83565b611e808860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506134d8915050565b91505b611e9688600001518960200151856135ab565b611e9f88613685565b509695505050505050565b6000611ed47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611f2a5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016112f6565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8c9190614c7c565b611f94610c21565b14611fed5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016112f6565b6001600160a01b03811630036120455760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016112f6565b61206d817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc612096610c21565b604080519182526001600160a01b038416602083015201611360565b60006001600160ff1b0382111561211c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016112f6565b5090565b60008360000361213257506000610600565b600061213e85876150d9565b9050600061214c8587615101565b9050612158848661512f565b6121628284615101565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166121cc57604051631ce9b06760e01b815260040160405180910390fd5b60408701516001600160a01b03166121f757604051633c70159560e11b815260040160405180910390fd5b61220987602001518860400151611bec565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161225f91611c14565b91509150816122815760405163168cafc960e21b815260040160405180910390fd5b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926122cd926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e9190614c4e565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612356575089604001516001600160a01b031686606001516001600160a01b031614155b8015612360575088155b156124715760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156123af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d39190614f1a565b15801561244b575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124499190614f1a565b155b1561247157600081126124715760405163ce11b5d160e01b815260040160405180910390fd5b600081121561248f5761248f8a600001518286858a60600151613722565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036125855760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125529190614f1a565b156125765761256f8a604001518b600001518685898b6002612d32565b945061284a565b895161256f908584888a6134d8565b89604001516001600160a01b031686606001516001600160a01b0316036126b95760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614f1a565b156126315761256f8a602001518b600001518685898b6002612d32565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561267b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269f9190614f1a565b156125765761256f60008b600001518685898b6002612d32565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127279190614f1a565b80156127335750600081125b156127ad5760208a0151604051635b92108f60e11b8152339163b724211e91612763918991600b90600401615142565b6000604051808303816000875af1158015612782573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127aa9190810190615170565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156127f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281b9190614f1a565b156128385761256f8a604001518b600001518685898b6002612d32565b8951612847908584888a6134d8565b94505b6128538a61394f565b5050505095945050505050565b606060008061286f8785612c31565b91509150600080612884896000015185611c14565b9150915081156128a75760405163801b686360e01b815260040160405180910390fd5b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156128f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129159190614f1a565b1561296e5761296789604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612d329050565b94506129b9565b6129b6896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506134d8915050565b94505b6129cc89600001518a60200151886135ab565b6129d5896139b9565b50505050949350505050565b6129e9614741565b60f8851615612a0b57604051631e4e759b60e21b815260040160405180910390fd5b612a4b8784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2892505050565b9050856001600160a01b031681606001516001600160a01b031603612a835760405163b0ed394d60e01b815260040160405180910390fd5b600084600b0b1215610cae576040516386e0377d60e01b815260040160405180910390fd5b606060008260200151600b0b1215612ac257612ac26151a5565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612b0d57612b0d614ebf565b602002602001018181525050919050565b60008082600b0b1215612b44576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612b5a84600b85900b6151bb565b1115612b7957604051630c9c55c160e01b815260040160405180910390fd5b6000612b858385613a23565b90506106198582613a67565b6040805180820190915260008082526020820152811580159190612bcc5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612bdb614716565b821580159250612bcc5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612c8c57604051633c70159560e11b815260040160405180910390fd5b612c9e84602001518560400151611bec565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612d0a5760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b13611813576040516348d6568b60e11b815260040160405180910390fd5b82612d3b61479c565b6001600160a01b0389161561303f576000612dd0898b8a600001518b602001518c60400151604051602001612d869291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612de657612de66150c3565b03612dfb5764010000000060c0820152612e30565b6001846002811115612e0f57612e0f6150c3565b03612e245764040000000060c0820152612e30565b64100000000060c08201525b612e3a8187613a7d565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea69190614cea565b9050612ebe86604001518761014001518c8c8c613c34565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612f189033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614d07565b602060405180830381865afa158015612f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f599190614c7c565b905060008360800151600014612f7d57612f7864010000000083613a67565b612f80565b60005b9050808460800151612f9291906151d2565b608085015260608a0151612fa5906120b2565b60a08501526000876002811115612fbe57612fbe6150c3565b03612fd35764020000000060c0850152613008565b6001876002811115612fe757612fe76150c3565b03612ffc5764080000000060c0850152613008565b64200000000060c08501525b61301784866000015188614039565b60408701919091528b5190965061302f908d90611c14565b60208701525061305d9350505050565b61305584604001518561014001518a8a8a613c34565b602084015250505b600061306c87606001516120b2565b826040015161010001516130809190614d2b565b90506130a6816130978460200151604001516120b2565b6130a191906150d9565b614285565b826020015160400181815250506130c8816130978460200151606001516120b2565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b916130f3906142d7565b6040518363ffffffff1660e01b8152600401613110929190614cd1565b600060405180830381600087803b15801561312a57600080fd5b505af115801561313e573d6000803e3d6000fd5b5050505061315a89896020015160008460008a60400151614348565b50613172898960400151600080858a60400151614348565b506101408501516001600160a01b031615806131a45750886001600160a01b03168561014001516001600160a01b0316145b15613218576040516359a2914160e01b815233906359a29141906131ce90869085906004016151e5565b6000604051808303816000875af11580156131ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132159190810190615170565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015613262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132869190614f1a565b156134cb57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa1580156132e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330a9190614c4e565b509091505060008112156134c957600285600281111561332c5761332c6150c3565b036134ad576040808a01519051635b92108f60e11b8152339163b724211e9161335c918891600c90600401615142565b6000604051808303816000875af115801561337b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133a39190810190615170565b935060006133c16133b383615207565b6133bc85615207565b6144b9565b90508a6001600160a01b031663cf97256d8b60200151836133e190615207565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561342757600080fd5b505af115801561343b573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561348f57600080fd5b505af11580156134a3573d6000803e3d6000fd5b50505050506134c9565b60405163a85ba64f60e01b8152600c60048201526024016112f6565b505b5050979650505050505050565b606083810151156134eb576134eb6151a5565b60006134f5614716565b61350b84604001518561014001518a8a8a613c34565b6101408701519294509250506001600160a01b03808a1691160361359c576040516359a2914160e01b815233906359a291419061354e90889086906004016151e5565b6000604051808303816000875af115801561356d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135959190810190615170565b92506135a0565b8492505b505095945050505050565b602081015160ff1660031415806135d95750826001600160a01b03168161014001516001600160a01b031614155b15613680576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136589190614c4e565b50509050600081121561367e5760405163ea76c9b360e01b815260040160405180910390fd5b505b505050565b600061369482600001516144ce565b90506001600160a01b0381161561371e578151602083015160408085015190516375aa53e560e11b81526001600160a01b0393841660048201529183166024830152821660448201529082169063eb54a7ca906064015b600060405180830381600087803b15801561370557600080fd5b505af1158015613719573d6000803e3d6000fd5b505050505b5050565b600061373286856020015161196f565b915050600061374484604001516120b2565b9050600061375583604001516120b2565b90506060600080613766848b6150d9565b90506000806137957f00000000000000000000000000000000000000000000000000000000000000008e61181a565b915091506137a58c878484612120565b9350505060008112613890576000846137be8388614d52565b6137c89190615101565b90506001836137d85760016137db565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161382a88614285565b61383689600019614d52565b6040518863ffffffff1660e01b81526004016138589796959493929190615223565b600060405180830381600087803b15801561387257600080fd5b505af1158015613886573d6000803e3d6000fd5b5050505050613942565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f602001516138e088614285565b6138ec8a600019614d52565b6040518863ffffffff1660e01b815260040161390e9796959493929190615223565b600060405180830381600087803b15801561392857600080fd5b505af115801561393c573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600061395e82600001516144ce565b90506001600160a01b0381161561371e5781516020830151604080850151905163ef1f023760e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063ef1f0237906064016136eb565b60006139c882600001516144ce565b90506001600160a01b0381161561371e5781516020830151604080850151905163f7e3d98360e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063f7e3d983906064016136eb565b600082600b0b600003613a3857506000610681565b60016001605f1b03821115613a4f57613a4f6151a5565b613a598284615270565b600b0b90506109928161457d565b6000818311613a765781610992565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613ad1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af59190615290565b91945092509050828015613b07575081155b15613c2b576000613b1886886145b1565b90508660c001518216600003613c1d576000613b378860c0015161462f565b88516040808b015160608c015182516000815260208101909352613b63939230929190604481016152cc565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613bd29291869164100000000091909114908890600401615311565b6000604051808303816000875af1158015613bf1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c199190810190615170565b9550505b613c288660006146c6565b50505b50505092915050565b600080613c3f614716565b6000806000613c6e7f00000000000000000000000000000000000000000000000000000000000000008a61181a565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd59190614cea565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613d289033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614d07565b602060405180830381865afa158015613d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d699190614c7c565b9250613d79896080015183613a23565b95505050613d8a86606001516120b2565b613d9787604001516120b2565b613da0866120b2565b613daa9190614d2b565b613db491906150d9565b9450613dc78561309788604001516120b2565b91508082108015613ddf575060008760800151600b0b135b15613e2157613df186606001516120b2565b613dfe87604001516120b2565b613e07836120b2565b613e119190614d2b565b613e1b91906150d9565b94508091505b6001600160a01b03891615801590613e4b5750876001600160a01b0316896001600160a01b031614155b15613e5557600093505b604051806080016040528060008960800151600b0b13613e76576000613e78565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613eb7866142d7565b6040518363ffffffff1660e01b8152600401613ed4929190614cd1565b600060405180830381600087803b158015613eee57600080fd5b505af1158015613f02573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613f22915050565b613f4888886020015189608001518960200151613f3f9190614c1c565b8860008f614348565b600b0b8152604087015160208701516080890151613f77928b929091613f6e9190614c1c565b6000808f614348565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613fdd94939290919061534f565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f748360405161402491815260200190565b60405180910390a25050955095509592505050565b614041614741565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015614095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140b99190615290565b889650919450925090508280156140ce575081155b1561427a576140dd84896145b1565b93508760c0015181166000036142685760006140fc8960c0015161462f565b89516040808c015160608d01518251600081526020810190935261412a9392309291908e906044810161537d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926141999291869164200000000091909114908b90600401615311565b6000604051808303816000875af11580156141b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141e09190810190615170565b604051631fb6491d60e11b81529095503390633f6c923a9061420690889060040161494b565b600060405180830381865afa158015614223573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261424b9190810190614fbc565b955061426089608001518761010001516146ee565b610100870152505b614277868661010001516146c6565b93505b505050935093915050565b60008082121561211c5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016112f6565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612b0d57612b0d614ebf565b600080614355888861196f565b91505060008160200151600b0b61437a836000015186614375919061512f565b6120b2565b6143849190614d52565b905080156143ef5760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b1580156143d657600080fd5b505af11580156143ea573d6000803e3d6000fd5b505050505b8682602001516143ff9190614d82565b600b0b6020830152838252604082015161441e908790613097906120b2565b60408301526060820151614437908690613097906120b2565b60608301526001600160a01b03891663090c415e896000614457866142d7565b6040518463ffffffff1660e01b8152600401614475939291906153d6565b600060405180830381600087803b15801561448f57600080fd5b505af11580156144a3573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b60008183136144c85782610992565b50919050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b0386169161451491906153fd565b600060405180830381855afa9150503d806000811461454f576040519150601f19603f3d011682016040523d82523d6000602084013e614554565b606091505b5091509150811561457657808060200190518101906145739190614cea565b92505b5050919050565b60008063ffffffff8316614592576000614595565b60015b60ff16905060206145a88285831c6151d2565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb0946145e8948a94600401615419565b6000604051808303816000875af1158015614607573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109929190810190615170565b6000640100000000820361464b57506330d9c91560e01b919050565b64040000000082036146655750630221347d60e61b919050565b641000000000820361467f5750635f9e7d7760e01b919050565b6402000000008203614699575063d86ed3e560e01b919050565b64080000000082036146b3575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906145e890869086906004016151e5565b60006109926000614707614701866120b2565b856144b9565b6000818313613a765781610992565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016147b6614716565b81526020016147c3614741565b905290565b6001600160a01b038116811461089e57600080fd5b6000806000606084860312156147f257600080fd5b83356147fd816147c8565b9250602084013561480d816147c8565b9150604084013561481d816147c8565b809150509250925092565b6000806040838503121561483b57600080fd5b8235614846816147c8565b946020939093013593505050565b60008083601f84011261486657600080fd5b50813567ffffffffffffffff81111561487e57600080fd5b60208301915083602082850101111561181357600080fd5b600080600080606085870312156148ac57600080fd5b84356148b7816147c8565b935060208501356148c7816147c8565b9250604085013567ffffffffffffffff8111156148e357600080fd5b6148ef87828801614854565b95989497509550505050565b60005b838110156149165781810151838201526020016148fe565b50506000910152565b600081518084526149378160208601602086016148fb565b601f01601f19169290920160200192915050565b602081526000610992602083018461491f565b6000806040838503121561497157600080fd5b823561497c816147c8565b9150602083013561498c816147c8565b809150509250929050565b60ff8116811461089e57600080fd5b600080604083850312156149b957600080fd5b82356149c481614997565b9150602083013561498c81614997565b8035600b81900b81146146c157600080fd5b60008060008060008060a087890312156149ff57600080fd5b8635614a0a816147c8565b95506020870135614a1a816147c8565b94506040870135614a2a816147c8565b9350614a38606088016149d4565b9250608087013567ffffffffffffffff811115614a5457600080fd5b614a6089828a01614854565b979a9699509497509295939492505050565b600060208284031215614a8457600080fd5b8135610992816147c8565b600080600060608486031215614aa457600080fd5b8335614aaf816147c8565b92506020840135614abf816147c8565b929592945050506040919091013590565b600080600080600060808688031215614ae857600080fd5b8535614af3816147c8565b94506020860135614b03816147c8565b93506040860135614b13816147c8565b9250606086013567ffffffffffffffff811115614b2f57600080fd5b614b3b88828901614854565b969995985093965092949392505050565b600080600080600060808688031215614b6457600080fd5b8535614b6f816147c8565b94506020860135614b7f816147c8565b9350614b13604087016149d4565b60008060008060008060a08789031215614ba657600080fd5b8635614bb1816147c8565b95506020870135614bc1816147c8565b94506040870135614a2a81614997565b60008060408385031215614be457600080fd5b8235614bef816147c8565b9150614bfd602084016149d4565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b036b7fffffffffffffffffffffff19811260016001605f1b038213171561068157610681614c06565b600080600060608486031215614c6357600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614c8e57600080fd5b5051919050565b60008151808452602080850194506020840160005b83811015614cc657815187529582019590820190600101614caa565b509495945050505050565b8281526040602082015260006106006040830184614c95565b600060208284031215614cfc57600080fd5b8151610992816147c8565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614d4b57614d4b614c06565b5092915050565b80820260008212600160ff1b84141615614d6e57614d6e614c06565b818105831482151761068157610681614c06565b600b81810b9083900b0160016001605f1b0381136b7fffffffffffffffffffffff198212171561068157610681614c06565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614dee57614dee614db4565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614e1d57614e1d614db4565b604052919050565b60006020808385031215614e3857600080fd5b825167ffffffffffffffff80821115614e5057600080fd5b818501915085601f830112614e6457600080fd5b815181811115614e7657614e76614db4565b8060051b9150614e87848301614df4565b8181529183018401918481019088841115614ea157600080fd5b938501935b83851015610d5f57845182529385019390850190614ea6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614efa57614efa614ed5565b500490565b80516146c1816147c8565b805180151581146146c157600080fd5b600060208284031215614f2c57600080fd5b61099282614f0a565b80516146c181614997565b80516001600160e01b0319811681146146c157600080fd5b600082601f830112614f6957600080fd5b815167ffffffffffffffff811115614f8357614f83614db4565b614f96601f8201601f1916602001614df4565b818152846020838601011115614fab57600080fd5b6106008260208301602087016148fb565b600060208284031215614fce57600080fd5b815167ffffffffffffffff80821115614fe657600080fd5b908301906101608286031215614ffb57600080fd5b615003614dca565b61500c83614f35565b815261501a60208401614f35565b60208201526040830151604082015261503560608401614eff565b606082015261504660808401614f40565b608082015260a08301518281111561505d57600080fd5b61506987828601614f58565b60a08301525060c083015160c082015260e083015160e08201526101009150818301518282015261012091506150a0828401614eff565b8282015261014091506150b4828401614eff565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b80820182811260008312801582168215821617156150f9576150f9614c06565b505092915050565b60008261511057615110614ed5565b600160ff1b82146000198414161561512a5761512a614c06565b500590565b8181038181111561068157610681614c06565b606081526000615155606083018661491f565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561518257600080fd5b815167ffffffffffffffff81111561519957600080fd5b61060084828501614f58565b634e487b7160e01b600052600160045260246000fd5b808202811582820484141761068157610681614c06565b8082018082111561068157610681614c06565b6040815260006151f8604083018561491f565b90508260208301529392505050565b6000600160ff1b820161521c5761521c614c06565b5060000390565b87815260e06020820152600061523c60e083018961491f565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600082600b0b82600b0b0280600b0b9150808214614d4b57614d4b614c06565b6000806000606084860312156152a557600080fd5b6152ae84614f0a565b92506152bc60208501614f0a565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152ff9083018561491f565b8281036080840152610d5f818561491f565b6001600160a01b03851681526080602082018190526000906153359083018661491f565b841515604084015282810360608401526110cf818561491f565b84600b0b815283600b0b602082015282600b0b6040820152608060608201526000610cae608083018461491f565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906153b09083018661491f565b82810360808401526153c2818661491f565b905082810360a0840152611250818561491f565b60018060a01b03841681528260208201526060604082015260006106196060830184614c95565b6000825161540f8184602087016148fb565b9190910192915050565b60a08152600061542c60a083018861491f565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea2646970667358221220536b50b5add83bdd497b475797c5c0d95f5dfb703bd13a57f90c10df4fe3e19464736f6c63430008170033"

Methods

  • Parameters

    • host: string
    • Optional overrides: Overrides & {
          from?: string;
      }

    Returns TransactionRequest

  • Returns ConstantFlowAgreementV1Interface

Generated using TypeDoc