[ { "inputs": [], "name": "AccountBlocked", "type": "error" }, { "inputs": [], "name": "AccountNotBlocked", "type": "error" }, { "inputs": [], "name": "BadLaunchCode", "type": "error" }, { "inputs": [], "name": "BorrowAmountTooHigh", "type": "error" }, { "inputs": [], "name": "BorrowFromClosedMarket", "type": "error" }, { "inputs": [], "name": "BorrowWhileSanctioned", "type": "error" }, { "inputs": [], "name": "CloseMarketWithUnpaidWithdrawals", "type": "error" }, { "inputs": [], "name": "DepositToClosedMarket", "type": "error" }, { "inputs": [], "name": "FIFOQueueOutOfBounds", "type": "error" }, { "inputs": [], "name": "InsufficientReservesForFeeWithdrawal", "type": "error" }, { "inputs": [], "name": "InsufficientReservesForNewLiquidityRatio", "type": "error" }, { "inputs": [], "name": "InsufficientReservesForOldLiquidityRatio", "type": "error" }, { "inputs": [], "name": "InvalidArrayLength", "type": "error" }, { "inputs": [], "name": "MaxSupplyExceeded", "type": "error" }, { "inputs": [], "name": "NewMaxSupplyTooLow", "type": "error" }, { "inputs": [], "name": "NoReentrantCalls", "type": "error" }, { "inputs": [], "name": "NotApprovedBorrower", "type": "error" }, { "inputs": [], "name": "NotApprovedLender", "type": "error" }, { "inputs": [], "name": "NotController", "type": "error" }, { "inputs": [], "name": "NotReversedOrStunning", "type": "error" }, { "inputs": [], "name": "NullBurnAmount", "type": "error" }, { "inputs": [], "name": "NullFeeAmount", "type": "error" }, { "inputs": [], "name": "NullMintAmount", "type": "error" }, { "inputs": [], "name": "NullRepayAmount", "type": "error" }, { "inputs": [], "name": "NullTransferAmount", "type": "error" }, { "inputs": [], "name": "NullWithdrawalAmount", "type": "error" }, { "inputs": [], "name": "RepayToClosedMarket", "type": "error" }, { "inputs": [], "name": "SphereXOperatorRequired", "type": "error" }, { "inputs": [], "name": "WithdrawalBatchNotExpired", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "annualInterestBipsUpdated", "type": "uint256" } ], "name": "AnnualInterestBipsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "enum AuthRole", "name": "role", "type": "uint8" } ], "name": "AuthorizationStatusUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "assetAmount", "type": "uint256" } ], "name": "Borrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldEngineAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newEngineAddress", "type": "address" } ], "name": "ChangedSpherexEngineAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldSphereXAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newSphereXAdmin", "type": "address" } ], "name": "ChangedSpherexOperator", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assetAmount", "type": "uint256" } ], "name": "DebtRepaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assetAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "scaledAmount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "FeesCollected", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "fromTimestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTimestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "scaleFactor", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseInterestRay", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "delinquencyFeeRay", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "protocolFees", "type": "uint256" } ], "name": "InterestAndFeesAccrued", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "MarketClosed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "MaxTotalSupplyUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reserveRatioBipsUpdated", "type": "uint256" } ], "name": "ReserveRatioBipsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "escrow", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SanctionedAccountAssetsSentToEscrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "escrow", "type": "address" }, { "indexed": false, "internalType": "uint32", "name": "expiry", "type": "uint32" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "SanctionedAccountWithdrawalSentToEscrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "scaleFactor", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isDelinquent", "type": "bool" } ], "name": "StateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "WithdrawalBatchClosed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "expiry", "type": "uint256" } ], "name": "WithdrawalBatchCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "scaledTotalAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "scaledAmountBurned", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "normalizedAmountPaid", "type": "uint256" } ], "name": "WithdrawalBatchExpired", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "scaledAmountBurned", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "normalizedAmountPaid", "type": "uint256" } ], "name": "WithdrawalBatchPayment", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "normalizedAmount", "type": "uint256" } ], "name": "WithdrawalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "scaledAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "normalizedAmount", "type": "uint256" } ], "name": "WithdrawalQueued", "type": "event" }, { "inputs": [], "name": "accruedProtocolFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "annualInterestBips", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "archController", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "borrow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "borrowableAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "borrower", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newSphereXEngine", "type": "address" } ], "name": "changeSphereXEngine", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "closeMarket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "collectFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "controller", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "coverageLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentState", "outputs": [ { "components": [ { "internalType": "bool", "name": "isClosed", "type": "bool" }, { "internalType": "uint128", "name": "maxTotalSupply", "type": "uint128" }, { "internalType": "uint128", "name": "accruedProtocolFees", "type": "uint128" }, { "internalType": "uint128", "name": "normalizedUnclaimedWithdrawals", "type": "uint128" }, { "internalType": "uint104", "name": "scaledTotalSupply", "type": "uint104" }, { "internalType": "uint104", "name": "scaledPendingWithdrawals", "type": "uint104" }, { "internalType": "uint32", "name": "pendingWithdrawalExpiry", "type": "uint32" }, { "internalType": "bool", "name": "isDelinquent", "type": "bool" }, { "internalType": "uint32", "name": "timeDelinquent", "type": "uint32" }, { "internalType": "uint16", "name": "annualInterestBips", "type": "uint16" }, { "internalType": "uint16", "name": "reserveRatioBips", "type": "uint16" }, { "internalType": "uint112", "name": "scaleFactor", "type": "uint112" }, { "internalType": "uint32", "name": "lastInterestAccruedTimestamp", "type": "uint32" } ], "internalType": "struct MarketState", "name": "state", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "delinquencyFeeBips", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "delinquencyGracePeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "delinquentDebt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositUpTo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountAddress", "type": "address" }, { "internalType": "uint32", "name": "expiry", "type": "uint32" } ], "name": "executeWithdrawal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accountAddresses", "type": "address[]" }, { "internalType": "uint32[]", "name": "expiries", "type": "uint32[]" } ], "name": "executeWithdrawals", "outputs": [ { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountRole", "outputs": [ { "internalType": "enum AuthRole", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountAddress", "type": "address" }, { "internalType": "uint32", "name": "expiry", "type": "uint32" } ], "name": "getAccountWithdrawalStatus", "outputs": [ { "components": [ { "internalType": "uint104", "name": "scaledAmount", "type": "uint104" }, { "internalType": "uint128", "name": "normalizedAmountWithdrawn", "type": "uint128" } ], "internalType": "struct AccountWithdrawalStatus", "name": "status", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountAddress", "type": "address" }, { "internalType": "uint32", "name": "expiry", "type": "uint32" } ], "name": "getAvailableWithdrawalAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getUnpaidBatchExpiries", "outputs": [ { "internalType": "uint32[]", "name": "", "type": "uint32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "expiry", "type": "uint32" } ], "name": "getWithdrawalBatch", "outputs": [ { "components": [ { "internalType": "uint104", "name": "scaledTotalAmount", "type": "uint104" }, { "internalType": "uint104", "name": "scaledAmountBurned", "type": "uint104" }, { "internalType": "uint128", "name": "normalizedAmountPaid", "type": "uint128" } ], "internalType": "struct WithdrawalBatch", "name": "batch", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isClosed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maximumDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountAddress", "type": "address" } ], "name": "nukeFromOrbit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "outstandingDebt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "previousState", "outputs": [ { "components": [ { "internalType": "bool", "name": "isClosed", "type": "bool" }, { "internalType": "uint128", "name": "maxTotalSupply", "type": "uint128" }, { "internalType": "uint128", "name": "accruedProtocolFees", "type": "uint128" }, { "internalType": "uint128", "name": "normalizedUnclaimedWithdrawals", "type": "uint128" }, { "internalType": "uint104", "name": "scaledTotalSupply", "type": "uint104" }, { "internalType": "uint104", "name": "scaledPendingWithdrawals", "type": "uint104" }, { "internalType": "uint32", "name": "pendingWithdrawalExpiry", "type": "uint32" }, { "internalType": "bool", "name": "isDelinquent", "type": "bool" }, { "internalType": "uint32", "name": "timeDelinquent", "type": "uint32" }, { "internalType": "uint16", "name": "annualInterestBips", "type": "uint16" }, { "internalType": "uint16", "name": "reserveRatioBips", "type": "uint16" }, { "internalType": "uint112", "name": "scaleFactor", "type": "uint112" }, { "internalType": "uint32", "name": "lastInterestAccruedTimestamp", "type": "uint32" } ], "internalType": "struct MarketState", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "protocolFeeBips", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "queueWithdrawal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "repay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxBatches", "type": "uint256" } ], "name": "repayAndProcessUnpaidWithdrawalBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "repayDelinquentDebt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "repayOutstandingDebt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reserveRatioBips", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "scaleFactor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "scaledBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "scaledTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sentinel", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_annualInterestBips", "type": "uint16" } ], "name": "setAnnualInterestBips", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTotalSupply", "type": "uint256" } ], "name": "setMaxTotalSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_reserveRatioBips", "type": "uint16" } ], "name": "setReserveRatioBips", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sphereXEngine", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sphereXOperator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "accountAddress", "type": "address" } ], "name": "stunningReversal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "_totalAssets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDebts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "bool", "name": "authorize", "type": "bool" } ], "name": "updateAccountAuthorizations", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawableProtocolFees", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdrawalBatchDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
6101e060405234620001d85762000015620009cf565b604051614f33908162000d2f823960805181818161116f015261124b015260a051818181610f09015281816121bc015281816124a1015281816125980152818161378701528181613fde0152614325015260c051818181610ed001528181611ac90152818161206d015281816120d901528181612148015281816124680152818161375201528181613fa401526142e0015260e0518181816110e7015261230c015261010051818181611e7b01528181612d6601528181612e6301528181613088015261317001526101205181818161112d01528181612d4501528181612e4201528181613067015261314f01526101405181818161121301528181612d2401528181612e2101528181613046015261312e015261016051818181611028015281816113380152818161179601528181611fc2015281816125dc01528181612a5f01528181614dcc0152614e96015261018051818181610d7c01528181610e12015281816114c80152818161208e015281816120fa015281816122280152818161232d0152818161261f015281816131d001528181613800015281816138b3015261409f01526101a0518181816117330152611dff01526101c05181610ccf0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176200021457604052565b620001dc565b6040519061020082016001600160401b038111838210176200021457604052565b604051906101a082016001600160401b038111838210176200021457604052565b51906001600160a01b0382168203620001d857565b919080601f84011215620001d85782516001600160401b038111620002145760209060405192620002ac83601f19601f8501160185620001f0565b818452828287010111620001d8575f5b818110620002d15750825f9394955001015290565b8581018301518482018401528201620002bc565b51906001600160801b0382168203620001d857565b519061ffff82168203620001d857565b519063ffffffff82168203620001d857565b602081830312620001d85780516001600160401b0391828211620001d857019061020082840312620001d857620003526200021a565b926200035e836200025c565b84526020830151828111620001d857816200037b91850162000271565b60208501526040830151918211620001d8576200039a91830162000271565b6040830152620003ad606082016200025c565b6060830152620003c0608082016200025c565b6080830152620003d360a082016200025c565b60a0830152620003e660c082016200025c565b60c0830152620003f960e08201620002e5565b60e08301526101006200040e818301620002fa565b9083015261012062000422818301620002fa565b9083015261014062000436818301620002fa565b908301526101606200044a8183016200030a565b908301526101806200045e818301620002fa565b908301526101a0620004728183016200030a565b908301526101c0620004868183016200025c565b908301526200049a6101e08092016200025c565b9082015290565b6040513d5f823e3d90fd5b90600182811c92168015620004dc575b6020831014620004c857565b634e487b7160e01b5f52602260045260245ffd5b91607f1691620004bc565b90601f8211620004f5575050565b60019160015f5260205f20906020601f840160051c8301931062000535575b601f0160051c01905b8181106200052a57505050565b5f815582016200051d565b909150819062000514565b601f81116200054d575050565b60025f5260205f20906020601f840160051c830193106200058a575b601f0160051c01905b8181106200057e575050565b5f815560010162000572565b909150819062000569565b80519091906001600160401b0381116200021457600190620005c381620005bd8454620004ac565b620004e7565b602080601f83116001146200060857508190620005f89394955f92620005fc575b50508160011b915f199060031b1c19161790565b9055565b015190505f80620005e4565b60015f52601f198316959091907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b88821062000672575050838596971062000659575b505050811b019055565b01515f1960f88460031b161c191690555f80806200064f565b8087859682949686015181550195019301906200063a565b80519091906001600160401b0381116200021457620006b681620006b0600254620004ac565b62000540565b602080601f8311600114620006ee57508190620006e993945f92620005fc5750508160011b915f199060031b1c19161790565b600255565b60025f52601f198316949091907f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace925f905b8782106200075a57505083600195961062000741575b505050811b01600255565b01515f1960f88460031b161c191690555f808062000736565b8060018596829496860151815501950193019062000720565b90816020910312620001d8575160ff81168103620001d85790565b620009a8610180620009cd92620007bb620007a98251151590565b60ff8019600354169115151617600355565b6020810151620007f5906001600160801b031660038054610100600160881b03191660089290921b610100600160881b0316919091179055565b6040810151606082015160801b6001600160801b0319166001600160801b039091161760045560808101516005805460a08401516001600160681b039093166001600160d01b03199091161760689290921b600160681b600160d01b0316919091179055620008946200086f60c083015163ffffffff1690565b6005805463ffffffff60d01b191660d09290921b63ffffffff60d01b16919091179055565b620008c5620008a660e0830151151590565b6005805460ff60f01b191691151560f01b60ff60f01b16919091179055565b620008f2620008dc61010083015163ffffffff1690565b63ffffffff1663ffffffff196006541617600655565b620009266200090761012083015161ffff1690565b65ffff000000006006549160201b169065ffff00000000191617600655565b6200095e6200093b61014083015161ffff1690565b67ffff0000000000006006549160301b169067ffff000000000000191617600655565b6101608101516200099d906001600160701b031660068054600160401b600160b01b03191660409290921b600160401b600160b01b0316919091179055565b015163ffffffff1690565b6006805463ffffffff60b01b191660b09290921b63ffffffff60b01b16919091179055565b565b620009d960015f55565b6040516304032dbb60e01b81525f81600481335afa801562000c7e576004915f9162000c84575b5080516001600160a01b031661018090815262000a21602083015162000595565b62000a3060408301516200068a565b815160209062000a579062000a4b906001600160a01b031681565b6001600160a01b031690565b60405163313ce56760e01b815294859182905afa91821562000c7e5762000c2f62000c40936101e093620009cd965f9262000c46575b506101c091825260e084015162000c1e9062000c07906001600160801b03169261012062000abf8189015161ffff1690565b62000b7a62000ad2848b015161ffff1690565b9662000af662000ae16200023b565b5f81526001600160801b039092166020830152565b5f60408201525f60608201525f60808201525f60a08201525f60c08201525f60e082015262000b33610100935f858401528583019061ffff169052565b62000b47610140988983019061ffff169052565b62000b746101609562000b678784016b033b2e3c9fd0803ce80000009052565b4263ffffffff1690830152565b6200078e565b60c08901516001600160a01b031660a05260608901516001600160a01b031660c05260808901516001600160a01b0316835260a08901516001600160a01b031660e05262000bd762000bd0828b015161ffff1690565b61ffff1690565b905262000bec62000bd0868a015161ffff1690565b90526101a09362000c1062000c07868a015163ffffffff1690565b63ffffffff1690565b905286015163ffffffff1690565b90528201516001600160a01b031690565b60805201516001600160a01b031690565b62000cab565b62000c6e91925060203d60201162000c76575b62000c658183620001f0565b81019062000773565b905f62000a8d565b503d62000c59565b620004a1565b62000ca491503d805f833e62000c9b8183620001f0565b8101906200031c565b5f62000a00565b60018060a01b03608051165f80526020527f2ac55ae7ba47db34b5334622acafeb34a65daf143b47019273185d64c73a35a560405fa1807f1777adabd324f814e2b0e28f6edf876dce01d7d66358c9acfe87b1b5f38338d5556020527ff33499cccaa0611882086224cc48cd82ef54b66a4d2edf4ed67108dd516896d560405fa156fe60806040526004361015610011575f80fd5b5f3560e01c806301e1d1141461041f57806302372c4f1461041a57806306f94a0d1461041557806306fdde0314610410578063088fee5e1461040b578063095ea7b3146104065780630c1e3fea146104015780630c3f6acf146103fc5780630cd1a5b6146103f757806311057cd0146103f257806314a1c32d146103ed57806318160ddd146103e857806319521311146103e35780631d8557d7146103de5780631da24f3e146103d95780631e3cef53146103d457806323b872dd146103cf5780632ab4d052146103ca578063313ce567146103c557806334bca29c146103c0578063371fd8e6146103bb57806338d52e0f146103b65780633c231166146103b15780633c5f015b146103ac5780633f3e4c11146103a757806346904840146103a25780634be687c61461039d5780634c6c848f14610398578063514a4cd61461039357806354635570146102ee57806354b302c51461038e57806354fd4d50146103895780635c559e14146103845780636731ba6d1461037f578063683dd1911461037a5780636b174f35146103755780636dd4f5211461037057806370a082311461036b578063739ccdd3146103665780637405885914610361578063766360171461035c5780637df1f1b91461035757806381d66b2314610352578063878eb9211461034d578063922c01041461034857806395d89b41146103435780639e6f98021461033e578063a9059cbb14610339578063abadbf1614610334578063b1bf962d1461032f578063b67afb331461032a578063b68ce7a214610325578063b6b55f2514610320578063c2b6b58c1461031b578063c511ed5e14610316578063c5ebeaec14610311578063c87965721461030c578063d3d356fb14610307578063d98e0fe814610302578063dbcd50b4146102fd578063dcd549d4146102f8578063dd62ed3e146102f3578063e7e5db4f146102ee578063f58c251c146102e95763f77c4791146102e4575f80fd5b6125c7565b612583565b611236565b612524565b612420565b6123b9565b612395565b612370565b61228c565b61212a565b611fb0565b611f78565b611f37565b611f08565b611eca565b611e9e565b611e64565b611e22565b611de8565b611d27565b611c8a565b611ba6565b611b16565b611ab4565b611a7f565b61195c565b6118c4565b611866565b611786565b611525565b6114f8565b6113c8565b611328565b6112d0565b61127a565b6111fc565b611150565b611116565b6110d2565b611012565b610e88565b610e41565b610dfd565b610d45565b610cf3565b610cb6565b610c8d565b610bcc565b610b8e565b610b3f565b610b0d565b610ab0565b610a75565b610a50565b610a2d565b6109f4565b6109ba565b61098a565b610850565b61070a565b610605565b610508565b61048c565b34610441575f36600319011261044157602061043961260b565b604051908152f35b5f80fd5b6001600160a01b0381160361044157565b63ffffffff81160361044157565b60409060031901126104415760043561047c81610445565b9060243561048981610456565b90565b346104415760406104d860206104a136610464565b929063ffffffff6104b0612657565b946104b9612bd1565b165f52600b8352845f209060018060a01b03165f5260205260405f2090565b546001600160681b038116928381526001600160801b03928391019160681c168152835192835251166020820152f35b34610441575f36600319011261044157610520612bd1565b602061053461052d612c30565b5050612bee565b61053c61260b565b90604051918082039111028152f35b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761057b57604052565b61054b565b6060810190811067ffffffffffffffff82111761057b57604052565b90601f8019910116810190811067ffffffffffffffff82111761057b57604052565b602080825282518183018190529093925f5b8281106105f157505060409293505f838284010152601f8019910116010190565b8181018601518482016040015285016105d0565b34610441575f366003190112610441576040515f60018054908160011c9160018116918215610700575b6020916020851084146106ec5784875260208701939081156106cd5750600114610674575b610670866106648188038261059c565b604051918291826105be565b0390f35b60015f90815294509192917fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8386106106bc5750505091019050610664826106705f610654565b8054858701529482019481016106a1565b60ff1916845250505090151560051b019050610664826106705f610654565b634e487b7160e01b5f52602260045260245ffd5b92607f169261062f565b346104415761071836610464565b90610721612bd1565b63ffffffff9182811691428310156108435761079261078d6107f592610670966107fa9661074d612c30565b93915061075861266f565b50160361080a57610778909563ffffffff165f52600b60205260405f2090565b9060018060a01b03165f5260205260405f2090565b6126c9565b916107b66107aa60208501516001600160801b031690565b6001600160801b031690565b926107e26107d46107d46107aa60408601516001600160801b031690565b92516001600160681b031690565b6001600160681b03809116921690612e8f565b61270b565b6040519081529081906020820190565b5061077861082e6108298763ffffffff165f52600a60205260405f2090565b61268d565b9563ffffffff165f52600b60205260405f2090565b632561b8805f526004601cfd5b346104415760403660031901126104415761089760043561087081610445565b610878612bd1565b60025f55610892610887612eb1565b916024359033612ef5565b6147b0565b60015f55602060405160018152f35b8151151581526101a08101929161098891906020818101516001600160801b0316908301526040818101516001600160801b0316908301526060818101516001600160801b0316908301526080818101516001600160681b03169083015260a0818101516001600160681b03169083015260c08181015163ffffffff169083015260e0818101511515908301526101008181015163ffffffff16908301526101208181015161ffff16908301526101408181015161ffff1690830152610160818101516001600160701b0316908301526101809081015163ffffffff16910152565b565b34610441575f366003190112610441576109a2612718565b506106706109ae612789565b604051918291826108a6565b34610441575f366003190112610441576109d2612718565b506109db612bd1565b6106706109e6612c30565b5050604051918291826108a6565b34610441575f36600319011261044157610a0c612bd1565b60206001600160801b036040610a20612c30565b5050015116604051908152f35b34610441575f36600319011261044157602060065461ffff60405191831c168152f35b34610441575f36600319011261044157610a68612bd1565b602061043961052d612c30565b34610441575f36600319011261044157610a8d612bd1565b6020610439610a9a612c30565b50506001600160681b0360808201511690613ed0565b34610441575f36600319011261044157610ac8612bd1565b60025f55610b07610ad7612eb1565b610892610ae2612f49565b610b02610aee82612bee565b610af661260b565b808203911102826131bd565b61321e565b60015f55005b34610441575f36600319011261044157610b25612bd1565b60025f55610b07610b34612eb1565b610892610b02612f49565b3461044157602036600319011261044157600435610b5c81610445565b610b64612bd1565b60018060a01b03165f52600760205260206001600160681b0360405f205460081c16604051908152f35b34610441575f366003190112610441576020610bbb610bab612c30565b5050610bb561260b565b906134fa565b6001600160801b0360405191168152f35b3461044157606036600319011261044157600435610be981610445565b602435610bf581610445565b604435610c00612bd1565b60025f55610c0c612eb1565b6001600160a01b0384165f908152600c6020908152604080832033845290915290209092905460018101610c61575b509061089291610c4a94613528565b60015f556040518061067081906001602083019252565b9190818303928311610c8857610c4a94610c7f610892943383612ef5565b94509091610c3b565b6126f7565b34610441575f3660031901126104415760206001600160801b0360035460081c16604051908152f35b34610441575f36600319011261044157602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610441576020610d39610d0636610464565b610d11929192612bd1565b60025f55610892610d33610d23612eb1565b92610d2c612f49565b958661361f565b9361321e565b60015f55604051908152f35b3461044157602036600319011261044157600435610d61612bd1565b60025f55610d6d612eb1565b908015610df057610da08130337f00000000000000000000000000000000000000000000000000000000000000006138fe565b5f52337fe8b606ac1e5df7657db58d297ca8f41c090fc94c5fd2d6958f043e41736e9fa660205fa2610dd0612f49565b908151610de357610892610b079261321e565b6361d1bc8f5f526004601cfd5b637e0820885f526004601cfd5b34610441575f366003190112610441576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610441575f366003190112610441577f1777adabd324f814e2b0e28f6edf876dce01d7d66358c9acfe87b1b5f38338d5546040516001600160a01b039091168152602090f35b3461044157602036600319011261044157600435610ea581610445565b610ead612bd1565b60025f55610eb9612eb1565b6040516301b9d11160e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015283166024820152602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561100d575f91610fde575b50610fd9576001600160a01b0382165f908152600760205260409020610f6690612898565b9160018351610f7481611af8565b610f7d81611af8565b03610fd45782610fc461089292610f97610fc99660029052565b610fab8351610fa581611af8565b826139e4565b6001600160a01b03165f90815260076020526040902090565b6128c8565b610fd260015f55565b005b613981565b613974565b611000915060203d602011611006575b610ff8818361059c565b81019061286c565b5f610f41565b503d610fee565b612881565b34610441576020366003190112610441576004357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110c557610b0790611062612bd1565b60025f5561106e612eb1565b9061109961107a612f49565b6001600160801b03831661108f818514614a44565b602082015261321e565b5f527ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af60205fa16147b0565b6323019e675f526004601cfd5b34610441575f366003190112610441576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610441575f3660031901126104415760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346104415760203660031901126104415760043561116d81610445565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036111ef577f1777adabd324f814e2b0e28f6edf876dce01d7d66358c9acfe87b1b5f38338d581815491555f526020527ff33499cccaa0611882086224cc48cd82ef54b66a4d2edf4ed67108dd516896d560405fa1005b634ee0b8f85f526004601cfd5b34610441575f3660031901126104415760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610441575f366003190112610441576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610441575f36600319011261044157611292612718565b5061129b612bd1565b60206104396112a8612c30565b5050613a24565b604051906101a0820182811067ffffffffffffffff82111761057b57604052565b34610441575f366003190112610441576106706040516112ef8161055f565b60038152620312e360ec1b6020820152604051918291826105be565b60209060031901126104415760043561ffff811681036104415790565b34610441576113363661130b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110c557610b0790611372612bd1565b60025f5561137e612eb1565b9061139c61ffff61138d612f49565b9216918261012082015261321e565b5f527fff7b6c8be373823323d3c5d99f5d027dd409dce5db54eae511bbdd5546b7503760205fa16147b0565b34610441576040366003190112610441576004356113e4612bd1565b60025f556113f0612eb1565b90806114bc575b50611400612f49565b9061140b8251151590565b6114b75761144e61141a61260b565b6114486107aa61143460608701516001600160801b031690565b60408701516001600160801b03169061292b565b9061270b565b9061146b61145d6107aa613a4a565b602435818082039110020190565b5f925b8161147885612946565b9410806114ae575b156114a1578061149361149c9287613a63565b80820391110290565b61146e565b610fc9836108928761321e565b50801515611480565b610de3565b806114ec6114f29230337f00000000000000000000000000000000000000000000000000000000000000006138fe565b3361394a565b5f6113f7565b34610441575f36600319011261044157611510612bd1565b60206001600160701b03610160610a20612c30565b3461044157602036600319011261044157600435611541612bd1565b60025f5561154d612eb1565b611555612f49565b9161158561158061157a6001600160701b03610160870151166001600160701b031690565b83614a83565b613b51565b926001600160681b03841691821561178157610fc99461170c610b0292610892956115f36115b233614d5c565b6115e0602082016115d3886115ce83516001600160681b031690565b612954565b6001600160681b03169052565b335f9081526007602052604090206128c8565b6115fe823033613ba4565b60c0860191611611835163ffffffff1690565b9163ffffffff80841615611723575b8394506116d66116446108296116df9663ffffffff165f52600a60205260405f2090565b97611698611664336107788a63ffffffff165f52600b60205260405f2090565b61167e8361167983546001600160681b031690565b61297a565b6001600160681b03166001600160681b0319825416179055565b6116bd6116b0826116798c516001600160681b031690565b6001600160681b03168a52565b6115d360a08c019161167983516001600160681b031690565b33908516613be2565b6116f16116ea61260b565b8685613c12565b80611711575b5063ffffffff165f52600a60205260405f2090565b612995565b61171d90828786613c8b565b506116f7565b6116df93506117796117616117587f00000000000000000000000000000000000000000000000000000000000000004261296d565b63ffffffff1690565b809661176e848316613bbc565b9063ffffffff169052565b849350611620565b613b67565b34610441576117943661130b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110c5576117cc612bd1565b60025f556117d8612eb1565b6117e0612f49565b61014081019261ffff808551169116809482821061183a575b528311611816575b610fc9926118116108929261321e565b613ea7565b61181f81613e19565b61182761260b565b10156118015763253ecbb95f526004601cfd5b905061184583613e19565b61184d61260b565b106118595784906117f9565b630a68e5bf5f526004601cfd5b3461044157602036600319011261044157602061043960043561188881610445565b611890612bd1565b611898612c30565b50506001600160a01b039091165f90815260078452604090205460081c6001600160681b031690613ed0565b34610441575f366003190112610441576118dc612bd1565b60206104396118e9612c30565b5050613e19565b9181601f840112156104415782359167ffffffffffffffff8311610441576020808501948460051b01011161044157565b60209060206040818301928281528551809452019301915f5b828110611948575050505090565b83518552938101939281019260010161193a565b346104415760403660031901126104415767ffffffffffffffff6004358181116104415761198e9036906004016118f0565b9091602435908111610441576119a89036906004016118f0565b9190926119b3612bd1565b60025f556119bf612eb1565b93838303611a72576119d083611c5b565b936119de604051958661059c565b838552601f196119ed85611c5b565b013660208701376119fc612f49565b935f5b818110611a2c5761067087611a178a6108928a61321e565b611a2060015f55565b60405191829182611921565b80611a61611a3d6001938589612a1f565b35611a4781610445565b611a5a611a5584888a612a1f565b612a34565b908961361f565b611a6b828a612a3e565b52016119ff565b639d89020a5f526004601cfd5b34610441575f36600319011261044157611a97612bd1565b6020611aa1612c30565b505061053c611aae61260b565b91613e19565b34610441575f366003190112610441576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60041115611b0257565b634e487b7160e01b5f52602160045260245ffd5b3461044157602036600319011261044157600435611b3381610445565b611b3b612bd1565b60018060a01b03165f52600760205260ff60405f2054166040516004821015611b02576020918152f35b60209060206040818301928281528551809452019301915f5b828110611b8c575050505090565b835163ffffffff1685529381019392810192600101611b7e565b34610441575f36600319011261044157611bbe612bd1565b6008546001600160801b0381169060801c818103908111610c8857611be281611c5b565b91611bf0604051938461059c565b818352601f19611bff83611c5b565b013660208501375f5b828110611c1d57604051806106708682611b65565b80611c55611c4b611c41611c336001958761296d565b5f52600960205260405f2090565b5463ffffffff1690565b61176e8388612a3e565b01611c08565b67ffffffffffffffff811161057b5760051b60200190565b8015150361044157565b6024359061098882611c73565b346104415760403660031901126104415760043567ffffffffffffffff8111610441573660238201121561044157806004013590611cc782611c5b565b90611cd5604051928361059c565b8282526020926024602084019160051b8301019136831161044157602401905b828210611d0e57610fd284611d08611c7d565b90612a52565b8480918335611d1c81610445565b815201910190611cf5565b34610441575f366003190112610441576040515f60025460018160011c9160018116918215611dde575b6020916020851084146106ec5784875260208701939081156106cd5750600114611d8557610670866106648188038261059c565b60025f90815294509192917f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b838610611dcd5750505091019050610664826106705f610654565b805485870152948201948101611db2565b92607f1692611d51565b34610441575f3660031901126104415760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461044157604036600319011261044157610897600435611e4281610445565b611e4a612bd1565b60025f55610892611e59612eb1565b916024359033613528565b34610441575f3660031901126104415760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610441575f36600319011261044157611eb6612bd1565b60206001600160681b036080610a20612c30565b34610441575f36600319011261044157611ee2612bd1565b60025f55610b07611ef1612eb1565b610892611efc612f49565b610b02610aee82613e19565b34610441576020366003190112610441576020611f23612eb1565b610439611f31600435613f66565b916147b0565b3461044157602036600319011261044157600435611f53612eb1565b90611f5d81613f66565b03611f6b57610fd2906147b0565b638a164f635f526004601cfd5b34610441575f36600319011261044157611f90612718565b50611f99612bd1565b6020611fa3612c30565b5050511515604051908152f35b34610441575f366003190112610441577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036110c557611ff8612bd1565b60025f55612004612eb1565b6001600160801b03612014613a4a565b1661212557610fc9906120b2612028612f49565b5f610120820152600181526127106101408201525f61010082015261204b61260b565b61205482612bee565b90818110156120bb5761206a90610b029261270b565b307f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006138fe565b61089242614189565b8181116120ca575b505061321e565b61211e916120d79161270b565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061414b565b5f806120c3565b61413e565b34610441576020366003190112610441576004356001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000818116330361227f5760206121b89161217e612bd1565b60025f5561218a612eb1565b6040516395c0983960e01b81526001600160a01b039092166004830152939092839190829081906024820190565b03917f0000000000000000000000000000000000000000000000000000000000000000165afa90811561100d575f91612260575b5061225b576121f9612f49565b80516122565761221061220a61260b565b82613ee9565b8311612251578261224c61089292610b02610fc996337f000000000000000000000000000000000000000000000000000000000000000061414b565b6141d9565b6141cc565b6141bf565b6141b2565b612279915060203d60201161100657610ff8818361059c565b5f6121ec565b6302171e6a5f526004601cfd5b34610441575f366003190112610441576122a4612bd1565b60025f556122b0612eb1565b6122b8612f49565b9060408201916001600160801b03908184511615612363576122e16122db61260b565b826134fa565b8281169182156123565785846123036123519461089297610fc99a5116612b59565b169052610b02837f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061414b565b614202565b63f784cfa45f526004601cfd5b6345c835cb5f526004601cfd5b34610441575f36600319011261044157612388612bd1565b60206105346118e9612c30565b34610441575f36600319011261044157602061ffff60065460301c16604051908152f35b346104415760203660031901126104415760606123f06004356123db81610456565b6123e361266f565b6123eb612bd1565b612b72565b6001600160801b0360408051926001600160681b0380825116855260208201511660208501520151166040820152f35b346104415760203660031901126104415760043561243d81610445565b612445612bd1565b60025f55612451612eb1565b6040516301b9d11160e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015283166024820152602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561100d575f91612505575b50156124f857610892610fc992610b026124f1612f49565b918261422b565b63a97ab1675f526004601cfd5b61251e915060203d60201161100657610ff8818361059c565b5f6124d9565b3461044157604036600319011261044157602061257a60043561254681610445565b6024359061255382610445565b60018060a01b03165f52600c835260405f209060018060a01b03165f5260205260405f2090565b54604051908152f35b34610441575f366003190112610441576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610441575f366003190112610441576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6370a082315f523060205260205f6024601c7f00000000000000000000000000000000000000000000000000000000000000005afa60203d14161561264f575f5190565b3d5f803e3d5ffd5b604051906126648261055f565b5f6020838281520152565b6040519061267c82610580565b5f6040838281528260208201520152565b9060405161269a81610580565b60406001600160801b036001839580546001600160681b0390818116875260681c166020860152015416910152565b906040516126d68161055f565b91546001600160681b038116835260681c6001600160801b03166020830152565b634e487b7160e01b5f52601160045260245ffd5b91908203918211610c8857565b604051906101a0820182811067ffffffffffffffff82111761057b576040525f610180838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201520152565b6127916112af565b906127cf6003546127a760ff8216859015159052565b60081c6001600160801b039081166020850152600454908116604085015260801c6060840152565b6005546001600160681b038082166080850152606882901c1660a084015263ffffffff60d082901c811660c0850152610988916128169060ff9060f01c16151560e0860152565b60065463ffffffff8282161661010086015261ffff602082901c8116610120870152603082901c16610140860152604081901c6001600160701b031661016086015260b01c1661018084019063ffffffff169052565b90816020910312610441575161048981611c73565b6040513d5f823e3d90fd5b6004821015611b025752565b906040516128a58161055f565b60206001600160681b038294546128bf60ff82168561288c565b60081c16910152565b8151916004831015611b025760206001600160681b03916109889460ff80198654169116178455015116610100600160701b0382549160081b1690610100600160701b031916179055565b9060016001600160801b0380931601918211610c8857565b9190916001600160801b0380809416911601918211610c8857565b5f198114610c885760010190565b6001600160681b039182169082160391908211610c8857565b91908201809211610c8857565b9190916001600160681b0380809416911601918211610c8857565b604060016001600160801b03926129cc6001600160681b0386511682906001600160681b03166001600160681b0319825416179055565b60208501518154906001600160681b0360681b9060681b16906001600160681b0360681b191617815501920151166001600160801b0319825416179055565b634e487b7160e01b5f52603260045260245ffd5b9190811015612a2f5760051b0190565b612a0b565b3561048981610456565b8051821015612a2f5760209160051b010190565b9091906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811633036110c557612a8e612bd1565b60025f55612a9a612eb1565b92612aa3612f49565b935f5b8451811015612b3e5780612b14612aca86612ac36001958a612a3e565b5116613ef2565b8915612b1a57600381525b612af681610fc4610fab612ae9878d612a3e565b516001600160a01b031690565b612b03612ae9848a612a3e565b905190612b0f82611af8565b6139e4565b01612aa6565b60038151612b2781611af8565b612b3081611af8565b03612ad55760028152612ad5565b509250935050610892612b509261321e565b61098860015f55565b6001600160801b039182169082160391908211610c8857565b9190612b7c612c30565b915063ffffffff809316928315159116831416612bcc57505f52600a6020526001600160801b03600160405f2080546001600160681b0390818116875260681c1660208601520154166040830152565b925050565b60015f5403612bdc57565b604051637fa8a98760e01b8152600490fd5b612c056001600160681b0360808301511682613ed0565b906001600160801b0390816060820151168301809311610c885760400151168101809111610c885790565b612c38612718565b505f612c4261266f565b612c4a612789565b92612c648460c063ffffffff910151168042119015151690565b612d93575b61018084015163ffffffff904290821603612d1e575b60c085015163ffffffff16908116612c945750565b92509050612cb36108298363ffffffff165f52600a60205260405f2090565b90612cc860208301516001600160681b031690565b6001600160681b03612cf0612ce485516001600160681b031690565b6001600160681b031690565b911610612cf957565b612d0b612d0461260b565b8584613c12565b80612d135750565b610988908584614578565b612d8b427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961444c565b505050612c7f565b91505060c08201612da8815163ffffffff1690565b91612dbe61175861018086015163ffffffff1690565b63ffffffff8416908103612e1b575b505f612dea6108298563ffffffff165f52600a60205260405f2090565b92612dfd612df661260b565b8786613c12565b80612e0a575b5052612c69565b612e15908786614578565b5f612e03565b612e88907f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008861444c565b5050612dcd565b815f19048111820215830215612ea457020490565b63ad251c275f526004601cfd5b604051608081019080821067ffffffffffffffff83111761057b576104899160405260608152606060208201525f60408201525f60608201525f3560e01c906146d9565b6001600160a01b038082165f908152600c60209081526040808320938616835292905220919290918190555f527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3565b612f51612718565b50612f5a612789565b90612f748260c063ffffffff910151168042119015151690565b6130e3575b61018082015163ffffffff9081164281900361303c575b5060c083015163ffffffff16908116612fa65750565b612fc16108298263ffffffff165f52600a60205260405f2090565b60208101516001600160681b03166001600160681b03612feb612ce484516001600160681b031690565b911610612ff7575b5050565b61300961300261260b565b8583613c12565b8061301357505050565b8261302661170c92610988958886613c8b565b505063ffffffff165f52600a60205260405f2090565b6130dd906130ad427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961444c565b926130d56130c96101608a95949501516001600160701b031690565b6001600160701b031690565b904290614813565b5f612f90565b6130f761175860c084015163ffffffff1690565b61310c61175861018085015163ffffffff1690565b808203613124575b505061311f8261485d565b612f79565b816131956131b6937f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961444c565b9390926131b06130c96101608a01516001600160701b031690565b91614813565b5f80613114565b8115610df05751610de3576131f48130337f00000000000000000000000000000000000000000000000000000000000000006138fe565b5f52337fe8b606ac1e5df7657db58d297ca8f41c090fc94c5fd2d6958f043e41736e9fa660205fa2565b610988906001600160701b0361323382613e19565b61323b61260b565b10918260e08201526132626132508251151590565b60ff8019600354169115151617600355565b61329c61327960208301516001600160801b031690565b610100600160881b036003549160081b1690610100600160881b03191617600355565b6132cf6132b360408301516001600160801b031690565b6001600160801b03166001600160801b03196004541617600455565b6133016132e660608301516001600160801b031690565b6001600160801b036004549181199060801b16911617600455565b61333461331860808301516001600160681b031690565b6001600160681b03166001600160681b03196005541617600555565b61338261334b60a08301516001600160681b031690565b600580546cffffffffffffffffffffffffff60681b191660689290921b6cffffffffffffffffffffffffff60681b16919091179055565b6133bb61339660c083015163ffffffff1690565b6005805463ffffffff60d01b191660d09290921b63ffffffff60d01b16919091179055565b6005805460ff60f01b191684151560f01b60ff60f01b161790556134006133ea61010083015163ffffffff1690565b63ffffffff1663ffffffff196006541617600655565b61343261341361012083015161ffff1690565b65ffff000000006006549160201b169065ffff00000000191617600655565b61346861344561014083015161ffff1690565b67ffff0000000000006006549160301b169067ffff000000000000191617600655565b6134f46134cf6101806134866101608501516001600160701b031690565b6006805475ffffffffffffffffffffffffffff00000000000000001916604083901b75ffffffffffffffffffffffffffff00000000000000001617905593015163ffffffff1690565b6006805463ffffffff60b01b191660b09290921b63ffffffff60b01b16919091179055565b166149a6565b906001600160801b0391826060820151168203918211610c8857604083910151169081808203911002011690565b9091613532612f49565b61354a6001600160701b036101608301511683614a83565b906001600160681b0391613562838216809214614a44565b80156135fd576135e792610b02916135ad61357c88613ef2565b602081018461358e8582845116612954565b1690526001600160a01b0389165f9081526007602052604090206128c8565b6135b688613ef2565b916135c860208401928284511661297a565b1690526001600160a01b0387165f9081526007602052604090206128c8565b5f525f80516020614f0783398151915260205fa3565b63ddee9b305f526004601cfd5b90816020910312610441575161048981610445565b909163ffffffff811692428410156138f95761364c6108298363ffffffff165f52600a60205260405f2090565b93613669826107788563ffffffff165f52600b60205260405f2090565b946136a56136c861368460408401516001600160801b031690565b6136bd6107aa8a54956001600160681b03958691516001600160681b031690565b936001600160801b0380978196169289169116612e8f565b9360681c1683612b59565b9081169687156138f45780546fffffffffffffffffffffffffffffffff60681b191660689390931b6fffffffffffffffffffffffffffffffff60681b169290921790915561373b9061372e606087019161372983516001600160801b031690565b612b59565b6001600160801b03169052565b6040516301b9d11160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401528482166024840152956020927f0000000000000000000000000000000000000000000000000000000000000000909216918381604481865afa801561100d5789915f916138d7575b50156138a257505f96613838926137d987869461422b565b60405163a1054f6b60e01b81526001600160a01b03928316600482015282881660248201527f00000000000000000000000000000000000000000000000000000000000000009283166044820152919891938492839182906064820190565b03925af194851561100d5761048996889687809461386a965f9361386f575b505081613864929361414b565b856149df565b614a19565b6138649350908161389492903d1061389b575b61388c818361059c565b81019061360a565b915f613857565b503d613882565b9550505050610489935061386a83837f000000000000000000000000000000000000000000000000000000000000000061414b565b6138ee9150853d871161100657610ff8818361059c565b5f6137c1565b6149d2565b610843565b601c5f60649281946020966040519860605260405260601b602c526323b872dd60601b600c525af13d1560015f511417161561393d575f606052604052565b637939f4245f526004601cfd5b905f527fe8b606ac1e5df7657db58d297ca8f41c090fc94c5fd2d6958f043e41736e9fa660205fa2565b633c57ebee5f526004601cfd5b63e79042e65f526004601cfd5b60015f527f4cdbc4f47aef831a90102e26cda881868aa5b0c95440b98fe37dbe530f34f5e460205fa2565b60035f527f4cdbc4f47aef831a90102e26cda881868aa5b0c95440b98fe37dbe530f34f5e460205fa2565b905f527f4cdbc4f47aef831a90102e26cda881868aa5b0c95440b98fe37dbe530f34f5e460205fa2565b906109886001600160801b038316809314614a44565b6114936001600160801b03602083015116916001600160681b0360808201511690613ed0565b6104896008546001600160801b0381169060801c612b59565b9190600854906001600160801b03918281169060801c8114613b3f575f52600960205281613ab963ffffffff60405f2054169283613ab26108298263ffffffff165f52600a60205260405f2090565b9788613c8b565b90501693613ad98161170c8463ffffffff165f52600a60205260405f2090565b6001600160681b036020818351169201511614613af4575050565b600854918083169260801c8314613b3f57613b2883610988945f52600960205260405f2063ffffffff198154169055612913565b166001600160801b03196008541617600855614a5d565b604051638727480160e01b8152600490fd5b906109886001600160681b038316809314614a44565b63d61c50f85f526004601cfd5b5f9182525f80516020614f07833981519152602083a3565b905f525f5f80516020614f07833981519152602082a3565b90915f525f80516020614f0783398151915260205fa3565b7f5c9a946d3041134198ebefcd814de7748def6576efd3d1b48f48193e183e89ef5f80a2565b919290925f526020527fecc966b282a372469fa4d3e497c2ac17983c3eaed03f3f17c9acf4b15591663e60405fa3565b613c406001600160681b0391613c3a8360a08601511691846020818351169201511690612954565b90612954565b16906001600160801b0390613c6b82606083015116936001600160701b036101608401511690614b02565b8301809311610c885760400151168101809111610c885780820391110290565b929091613cc69492613ca485516001600160681b031690565b9460208101956001600160681b03978891613c3a89516001600160681b031690565b168015613e0c576101608301948551613ce5906001600160701b031690565b6001600160701b0316613cf791614a83565b818110908290030201613d0990613b51565b935193968716936001600160701b0316613d239085614b02565b613d2c90613a0e565b95878151613d40906001600160681b031690565b90613d4a9161297a565b6001600160681b031690526040018051613d6e9087906001600160801b031661292b565b6001600160801b0316905260a081018051613d939088906001600160681b0316612954565b6001600160681b03169052606081018051613db89087906001600160801b031661292b565b6001600160801b031690526080018051613ddc9087906001600160681b0316612954565b6001600160681b031690526001600160801b03841690613dfc8230613b74565b63ffffffff169161098892614ab6565b505f965086955050505050565b6001600160681b038060a08301511690608083015116818103908111610c8857613e4d9061ffff6101408501511690614ae4565b908101809111610c8857613e70906001600160701b036101608401511690614b02565b6001600160801b036040830151168101809111610c8857613ea16107aa60606104899401516001600160801b031690565b9061296d565b5f527f72877a153052500f5edbb2f9da96a0f45d671d4b4555fdf8628a709dc4eab43a60205fa1565b906001600160701b036101606104899301511690614b02565b61149390613e19565b613efa612657565b5060018060a01b03165f52600760205260405f20906001600160681b0360405192613f248461055f565b54613f3260ff82168561288c565b60081c16602083015281516004811015611b025780613f52600192611af8565b14613f5957565b636bc671fd5f526004601cfd5b613f7b90613f72612bd1565b60025f55613f82565b9060015f55565b905f91613f8d612f49565b6040516301b9d11160e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152336024820152909190602081806044810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561100d575f9161411f575b501561402b575061098890610b02338261422b565b909192506140398251151590565b61411a576140569061404a83613a24565b90818082039110020190565b9061407b6115806140756130c96101608501516001600160701b031690565b84614a83565b906001600160681b038216801561411557610489926140fc610b02926140c38730337f00000000000000000000000000000000000000000000000000000000000000006138fe565b6140eb6140cf33614e3c565b6115e0602082016115d38761167983516001600160681b031690565b6140f58733613b8c565b8633614b58565b6115d3608084019161167983516001600160681b031690565b614b4b565b614b3e565b614138915060203d60201161100657610ff8818361059c565b5f614016565b634d7909975f526004601cfd5b60105f604492602095829560145260345263a9059cbb60601b82525af13d1560015f511417161561417c575f603452565b6390b8ec185f526004601cfd5b5f527f9dc30b8eda31a6a144e092e5de600955523a6a925cc15cc1d1b9b4872cfa615560205fa1565b634a1c13a95f526004601cfd5b63d0242b285f526004601cfd5b63119fe6e35f526004601cfd5b5f527fb848ae6b1253b6cb77e81464128ce8bd94d3d524fea54e801e0da869784dca3360205fa1565b5f527f860c0aa5520013080c2f65981705fcdea474d9f7c3daf954656ed5e65d692d1f60205fa1565b6001600160a01b0382165f90815260076020526040902061424b90612898565b906001825161425981611af8565b61426281611af8565b0361426c57505050565b602082019061428282516001600160681b031690565b60018452906142908561398e565b6001600160681b03821692836142c6575b5050506001600160a01b039092165f90815260076020526040902061098892506128c8565b5f905260405163a1054f6b60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152861660248201523060448201529294919290602082806064810103815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561100d5761098896610fc49561440f945f93614417575b506130c9614402916143f5610160614408969701916143a461439d6143976130c986516001600160701b031690565b88614b02565b898c613ba4565b6001600160a01b0388165f908152600760205260409020805490916143d49160081c6001600160681b031661297a565b610100600160701b0382549160081b1690610100600160701b031916179055565b516001600160701b031690565b90614b02565b9083614b86565b925f806142a1565b6144089350614402916143f56101606144416130c99460203d60201161389b5761388c818361059c565b965050509150614368565b93919490945f935f9361ffff610120880151169161018088019363ffffffff93848651168403848111610c885761448291614cbf565b8a819b61450f575b5050806144ed575b50506144e261016061098895969798016144d56144d08b613ea16144ca8d6144c46130c988516001600160701b031690565b9361296d565b82614b02565b614bed565b6001600160701b03169052565b1663ffffffff169052565b610988959697506145066144e29261016092858c614bb4565b97969550614492565b6145459298509061451f91614ae4565b6144026001600160681b0360808c015116916001600160701b036101608d015116614b02565b604089016001600160801b03908181511691838301809311610c885761456f908316809314614a44565b5295895f61448a565b80516001600160681b0316906145a860208201926001600160681b03918291613c3a86516001600160681b031690565b1680156146d15761016085019586516145c7906001600160701b031690565b6001600160701b03166145d991614a83565b8181109082900302016145eb90613b51565b94516001600160701b03166001600160701b031661460a918616614b02565b61461390613a0e565b91848151614627906001600160681b031690565b906146319161297a565b6001600160681b0316905260400180516146559083906001600160801b031661292b565b6001600160801b0316905260a08201805161467a9085906001600160681b0316612954565b6001600160681b031690526060820190815161469c906001600160801b031690565b906146a69161292b565b6001600160801b031690526080019081516146c7906001600160681b031690565b906115d391612954565b505050505050565b7f1777adabd324f814e2b0e28f6edf876dce01d7d66358c9acfe87b1b5f38338d5546001600160a01b03166060820181905290918282156147a9575060405190638925ca5a825260405f60209483868601523383860152606080860152366080860152368260a08701373660c4019082601c8701915af1835f5114161561264f57608083610489945160051b809460e06003830282010160405282820183823e80885201925f038184015281606084015285019260a08301845260a0019101525a60408401528251905190614c03565b9392505050565b6060810180519091906001600160a01b031615612ff3575f8082518051908160061b956147e260c08884010183614c03565b519160051b019360405a91015103604085015283519463f0bd9468855260c4019082601c8601915af11561264f5752565b927f18247a393d0531b65fbd94f5e78bc5639801a4efda62ae7b43533c4442116c3a959260c09592604051958652602086015260408501526060840152608083015260a0820152a1565b6109889061170c60c082015f614877825163ffffffff1690565b916148936108298463ffffffff165f52600a60205260405f2090565b9460208601906148aa82516001600160681b031690565b906148bf612ce489516001600160681b031690565b6001600160681b0380931610614976575b5061492b6148e588516001600160681b031690565b9261491e6148fa82516001600160681b031690565b60408b015163ffffffff8a16966001600160801b0390911691861690861687614c3b565b516001600160681b031690565b90614940612ce489516001600160681b031690565b9116108314614968575061495383614c75565b5263ffffffff165f52600a60205260405f2090565b61497190614a5d565b614953565b61498861498161260b565b828a613c12565b8681614996575b50506148d0565b6149a0928a613c8b565b8661498f565b5f526020527f9385f9ff65bcd2fb81cece54b27d4ec7376795fc4dcff686e370e347b0ed86c060405fa1565b63186334fe5f526004601cfd5b91929092604051935f526020526040527f0d0843a0fcb8b83f625aafb6e42f234ac48c6728b207d52d97cfa8fbd34d498f60605fa2604052565b90915f527fd6cddb3d69146e96ebc2c87b1b3dd0b20ee2d3b0eadf134e011afb434a3e56e660205fa3565b15614a4b57565b634e487b715f5260116020526024601cfd5b7fcbdf25bf6e096dd9030d89bb2ba2e3e7adb82d25a233c3ca3d92e9f098b74e555f80a2565b8160011c906b033b2e3c9fd0803ce800000090818319048111841517614a4b5702010490565b63e50a45ce5f526004601cfd5b91905f526020527f5272034725119f19d7236de4129fdb5093f0dcb80282ca5edbd587df91d2bd8960405fa2565b81611388190481111582151715614a4b576127109102611388010490565b816b019d971e4fe8401e74000000190481111582151715614a4b576b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b6322d7c0435f526004601cfd5b63e4aa50555f526004601cfd5b91905f526020527f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1560405fa2565b91905f526020527f571e706c2f09ae0632313e5f3ae89fffdedfc370a2ea59a07fb0d8091147645b60405fa2565b909392935f9463ffffffff610180840151168203918211610c8857614bd892614cf1565b9081614be2575050565b610489929350614cbf565b906109886001600160701b038316809314614a44565b9190825190818152602080809501918181019360051b0101915b828110614c2b575050509050565b8151548152908401908401614c1d565b91929092604051935f526020526040527f9262dc39b47cad3a0512e4c08dda248cb345e7163058f300bc63f56bda288b6e60605fa2604052565b614ca49060085460801c90815f52600960205263ffffffff60405f20911663ffffffff19825416179055612913565b6001600160801b036008549181199060801b16911617600855565b69152d02c7e14af6800000808202918082840403614a4b57830202918183041490151715610c88576301e13380900490565b90610100820163ffffffff9060e082825116940151614d3157614d1f85850386861102928316809314614a44565b52808203911102818082039110020190565b848493940191828411610c8857614d4c908316809314614a44565b5280820391110280820391110290565b614d6581613ef2565b908151614d7181611af8565b614d7a81611af8565b15614da4575b5060028151614d8e81611af8565b614d9781611af8565b10614d9f5790565b614aa9565b60405163366ae42d60e21b81526001600160a01b0382166004820152602081806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561100d575f91614e1d575b5015614d805760038252614e17906139b9565b5f614d80565b614e36915060203d60201161100657610ff8818361059c565b5f614e04565b614e4581613ef2565b908151614e5181611af8565b614e5a81611af8565b15614e6e575b5060038151614d8e81611af8565b60405163366ae42d60e21b81526001600160a01b0382166004820152602081806024810103817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561100d575f91614ee7575b5015614e605760038252614ee1906139b9565b5f614e60565b614f00915060203d60201161100657610ff8818361059c565b5f614ece56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c6343000816000a