0 txs
2 calls
constructor
constructor()
functions
checkLocks
viewfunction checkLocks(address vault, uint256 projectId, address user, uint256[] indices) view returns (bool[] statuses)
depositPointers
viewfunction depositPointers(address, uint256, address) view returns (uint256)
getLockedDeposits
viewfunction getLockedDeposits(address vault, uint256 projectId, address user) view returns (tuple[])
getMaturedShares
viewfunction getMaturedShares(address vault, uint256 projectId, address user) view returns (uint256 totalMatured)
globalLockedShares
viewfunction globalLockedShares(address, uint256, address) view returns (uint256)
lockedDeposits
viewfunction lockedDeposits(address, uint256, address, uint256) view returns (uint192 shares, uint64 lockTime)
MAX_LOCK_PERIOD
viewfunction MAX_LOCK_PERIOD() view returns (uint256)
owner
viewfunction owner() view returns (address)
projectGlobalUnlockTime
viewfunction projectGlobalUnlockTime(address, uint256) view returns (uint256)
projectLockModes
viewfunction projectLockModes(address, uint256) view returns (uint8)
projectLockPeriods
viewfunction projectLockPeriods(address, uint256) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
depositLocked
nonpayablefunction depositLocked(address vault, uint256 projectId, uint256 assets) returns (uint256 shares)
initialize
nonpayablefunction initialize(address owner)
migrateLocked
nonpayablefunction migrateLocked(address vault, uint256 fromProjectId, uint256 toProjectId, uint256 shares)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
redeemLocked
nonpayablefunction redeemLocked(address vault, uint256 projectId, uint256 shares) returns (uint256 assets)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateGlobalUnlockTime
nonpayablefunction updateGlobalUnlockTime(address vault, uint256 projectId, uint256 unlockTime)
updateLockPeriod
nonpayablefunction updateLockPeriod(address vault, uint256 projectId, uint256 lockPeriod)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
DepositLocked
event DepositLocked(address indexed user, address indexed vault, uint256 indexed projectId, uint256 shares, uint256 assets)
GlobalUnlockTimeUpdated
event GlobalUnlockTimeUpdated(address indexed vault, uint256 indexed projectId, uint256 unlockTime)
Initialized
event Initialized(uint64 version)
LockPeriodUpdated
event LockPeriodUpdated(address indexed vault, uint256 indexed projectId, uint256 lockPeriod)
MigrateLocked
event MigrateLocked(address indexed user, address indexed vault, uint256 fromProjectId, uint256 toProjectId, uint256 shares)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RedeemLocked
event RedeemLocked(address indexed user, address indexed vault, uint256 indexed projectId, uint256 shares, uint256 assets)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
GlobalUnlockTimeNotReached
error GlobalUnlockTimeNotReached(uint256 unlockTime)
GlobalUnlockTimeReached
error GlobalUnlockTimeReached(uint256 unlockTime)
InvalidInitialization
error InvalidInitialization()
LockModeAlreadySet
error LockModeAlreadySet(address vault, uint256 projectId, uint256 lockMode)
LockModeMismatch
error LockModeMismatch(address vault, uint256 projectId, uint256 lockMode)
LockModeNotSetForProject
error LockModeNotSetForProject(address vault, uint256 projectId)
LockPeriodExceedsMaximum
error LockPeriodExceedsMaximum(uint256 lockPeriod)
NotEnoughShares
error NotEnoughShares(uint256 requested, uint256 available)
NotInitializing
error NotInitializing()
NotProjectOwner
error NotProjectOwner(address vault, uint256 projectId, address caller)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612ca26100f95f395f8181611378015281816113a101526115740152612ca25ff3fe60806040526004361061018e575f3560e01c8063ad3cb1cc116100dc578063dad1bda211610087578063ecd8032911610062578063ecd80329146105b5578063f23a6e61146105d4578063f2fde38b14610618578063f554016214610637575f5ffd5b8063dad1bda214610558578063e5fcd32e14610577578063eaa1714c14610596575f5ffd5b8063bc197c81116100b7578063bc197c81146104a5578063c0e464091461051a578063c4d66de814610539575f5ffd5b8063ad3cb1cc146103ee578063b871320814610443578063bbaf79d814610479575f5ffd5b80634f1ef2861161013c578063715018a611610117578063715018a61461036857806379bf482b1461037c5780638da5cb5b146103a8575f5ffd5b80634f1ef2861461032057806352d1902d1461033557806359e7e80c14610349575f5ffd5b80631f1c3e8d1161016c5780631f1c3e8d1461025657806338973b5f1461028c57806343774f6e146102c8575f5ffd5b806301ffc9a7146101925780631e068772146101c65780631ef61ec014610210575b5f5ffd5b34801561019d575f5ffd5b506101b16101ac366004612478565b61064e565b60405190151581526020015b60405180910390f35b3480156101d1575f5ffd5b506102026101e03660046124cb565b600160209081525f938452604080852082529284528284209052825290205481565b6040519081526020016101bd565b34801561021b575f5ffd5b5061024961022a36600461250a565b600460209081525f928352604080842090915290825290205460ff1681565b6040516101bd9190612561565b348015610261575f5ffd5b5061020261027036600461250a565b600260209081525f928352604080842090915290825290205481565b348015610297575f5ffd5b506102026102a63660046124cb565b600560209081525f938452604080852082529284528284209052825290205481565b3480156102d3575f5ffd5b506102e76102e23660046125a0565b6106e6565b6040805177ffffffffffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff9091166020830152016101bd565b61033361032e3660046126eb565b610768565b005b348015610340575f5ffd5b50610202610787565b348015610354575f5ffd5b50610202610363366004612738565b6107b5565b348015610373575f5ffd5b506103336108a1565b348015610387575f5ffd5b5061039b61039636600461276a565b6108b4565b6040516101bd9190612806565b3480156103b3575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b0390911681526020016101bd565b3480156103f9575f5ffd5b506104366040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101bd919061284a565b34801561044e575f5ffd5b5061020261045d36600461250a565b600360209081525f928352604080842090915290825290205481565b348015610484575f5ffd5b506104986104933660046124cb565b6109e1565b6040516101bd919061289d565b3480156104b0575f5ffd5b506104e96104bf366004612984565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101bd565b348015610525575f5ffd5b50610333610534366004612738565b610c26565b348015610544575f5ffd5b50610333610553366004612a37565b610d3a565b348015610563575f5ffd5b506102026105723660046124cb565b610ec8565b348015610582575f5ffd5b50610202610591366004612738565b610f89565b3480156105a1575f5ffd5b506103336105b0366004612738565b61116a565b3480156105c0575f5ffd5b506103336105cf366004612a52565b611231565b3480156105df575f5ffd5b506104e96105ee366004612a8a565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b348015610623575f5ffd5b50610333610632366004612a37565b611317565b348015610642575f5ffd5b506102026301e1338081565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806106e057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f602052835f5260405f20602052825f5260405f20602052815f5260405f208181548110610712575f80fd5b5f9182526020909120015477ffffffffffffffffffffffffffffffffffffffffffffffff811694507801000000000000000000000000000000000000000000000000900467ffffffffffffffff16925084915050565b61077061136d565b6107798261143d565b6107838282611445565b5050565b5f610790611569565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b5f6107c18484846115cb565b6040517f049104e500000000000000000000000000000000000000000000000000000000815260048101839052602481018490523360448201526001600160a01b0385169063049104e5906064016020604051808303815f875af115801561082b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084f9190612ae2565b604080518481526020810183905291925084916001600160a01b0387169133917f1d4befd3871c40a1c1a9766729024a213e9dcb117da4dbcc0bf27fe980073f99910160405180910390a49392505050565b6108a9611688565b6108b25f6116fc565b565b6001600160a01b038086165f81815260208181526040808320898452825280832094881683529381528382209282526002815283822088835290529190912054606091908367ffffffffffffffff811115610911576109116125e5565b60405190808252806020026020018201604052801561093a578160200160208202803683370190505b5092505f5b848110156109d5576109ab8387878481811061095d5761095d612af9565b905060200201358154811061097457610974612af9565b5f918252602090912001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683611784565b8482815181106109bd576109bd612af9565b9115156020928302919091019091015260010161093f565b50505095945050505050565b6001600160a01b0383165f90815260046020908152604080832085845290915290205460609060ff166001816002811115610a1e57610a1e612534565b148585836002811115610a3357610a33612534565b909192610a8a576040517fe43884c50000000000000000000000000000000000000000000000000000000081526001600160a01b039093166004840152602483019190915260448201526064015b60405180910390fd5b5050506001600160a01b038086165f8181526005602090815260408083208984528252808320948816808452948252808320549383528282528083208984528252808320948352939052918220549091610ae48383612b53565b67ffffffffffffffff811115610afc57610afc6125e5565b604051908082528060200260200182016040528015610b4057816020015b604080518082019091525f8082526020820152815260200190600190039081610b1a5790505b509050825b82811015610c18576001600160a01b03808a165f908152602081815260408083208c84528252808320938b16835292905220805482908110610b8957610b89612af9565b5f9182526020918290206040805180820190915291015477ffffffffffffffffffffffffffffffffffffffffffffffff811682527801000000000000000000000000000000000000000000000000900467ffffffffffffffff169181019190915282610bf58684612b53565b81518110610c0557610c05612af9565b6020908102919091010152600101610b45565b5093505050505b9392505050565b610c308383611799565b838333909192610c88576040517f4ab1030d0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015260248101929092529091166044820152606401610a81565b5050506301e133808111158190610cce576040517fed1453bb000000000000000000000000000000000000000000000000000000008152600401610a8191815260200190565b50610cdb83836001611861565b6001600160a01b0383165f81815260026020908152604080832086845282529182902084905590518381528492917f5e3453a7c74ada9dffcf89685eb5a8f320b8bfc62e1c53118eba094ab0bd7f1c91015b60405180910390a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610d845750825b90505f8267ffffffffffffffff166001148015610da05750303b155b905081158015610dae575080155b15610de5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e465784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610e4f866119b4565b610e576119c5565b610e5f6119c5565b8315610ec05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6001600160a01b0383165f90815260046020908152604080832085845290915281205460ff166002816002811115610f0257610f02612534565b03610f1957610f128585856119cd565b9150610f81565b6001816002811115610f2d57610f2d612534565b03610f3d57610f12858585611a31565b6040517fbb56fb2b0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101859052604401610a81565b509392505050565b6001600160a01b0383165f9081526003602090815260408083208584529091528120548015610ff2578042108190610ff0576040517f097f6b44000000000000000000000000000000000000000000000000000000008152600401610a8191815260200190565b505b5f856001600160a01b0316637158da7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110539190612b66565b905061106a6001600160a01b038216333087611b0c565b61107e6001600160a01b0382168786611bec565b6040517f8dbdbe6d00000000000000000000000000000000000000000000000000000000815260048101859052602481018690523060448201526001600160a01b03871690638dbdbe6d906064016020604051808303815f875af11580156110e8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110c9190612ae2565b9250611119868685611cb6565b604080518481526020810186905286916001600160a01b0389169133917febb274e533c335b09110da43e00a71e86630d7afdbd9ed567e248c9808602bc2910160405180910390a450509392505050565b6111748383611799565b8383339091926111cc576040517f4ab1030d0000000000000000000000000000000000000000000000000000000081526001600160a01b03938416600482015260248101929092529091166044820152606401610a81565b5050506111db83836002611861565b6001600160a01b0383165f81815260036020908152604080832086845282529182902084905590518381528492917f92094dbe05c06bae357807a78a613f9ee20813462f40dc6a539290a674a5e6259101610d2d565b61123c8484836115cb565b611247848383611cb6565b6040517f3f1b327f0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290526001600160a01b03851690633f1b327f906064015f604051808303815f87803b1580156112ad575f5ffd5b505af11580156112bf573d5f5f3e3d5ffd5b505060408051868152602081018690529081018490526001600160a01b03871692503391507f7e10a66a701ce9b807fa5da6deba0a26c3dd482017d8f7e12820a8cfffd19a409060600160405180910390a350505050565b61131f611688565b6001600160a01b038116611361576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401610a81565b61136a816116fc565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061140657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113fa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156108b2576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61136a611688565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114bd575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526114ba91810190612ae2565b60015b6114fe576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610a81565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461155a576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610a81565b6115648383611e5a565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108b2576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0383165f90815260046020908152604080832085845290915290205460ff16600281600281111561160557611605612534565b0361161a57611615848484611eaf565b611682565b600181600281111561162e5761162e612534565b0361163e57611615848484611fb5565b6040517fbb56fb2b0000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101849052604401610a81565b50505050565b336116ba7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108b2576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a81565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f61178f8284612b81565b4210159392505050565b6040517fdb33bc5b0000000000000000000000000000000000000000000000000000000081523360048201525f9081906001600160a01b0385169063db33bc5b90602401606060405180830381865afa1580156117f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181c9190612bb8565b905082815f01516fffffffffffffffffffffffffffffffff1611158015611859575080602001516fffffffffffffffffffffffffffffffff168311155b949350505050565b6001600160a01b0383165f90815260046020908152604080832085845290915281205460ff16600281111561189857611898612534565b03611904576001600160a01b0383165f908152600460209081526040808320858452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156118fa576118fa612534565b0217905550505050565b80600281111561191657611916612534565b6001600160a01b0384165f90815260046020908152604080832086845290915290205460ff16600281111561194d5761194d612534565b14838383600281111561196257611962612534565b909192610ec0576040517f513d274f0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610a81565b6119bc612201565b61136a81612268565b6108b2612201565b6001600160a01b0383165f9081526003602090815260408083208584529091528120544210156119fe57505f610c1f565b506001600160a01b039283165f908152600160209081526040808320948352938152838220929094168152925290205490565b6001600160a01b038084165f818152602081815260408083208784528252808320948616808452948252808320848452600583528184208885528352818420958452948252808320549383526002825280832087845290915281205490929190815b8354811015611b0157611ab184828154811061097457610974612af9565b15611b0157838181548110611ac857611ac8612af9565b5f91825260209091200154611af79077ffffffffffffffffffffffffffffffffffffffffffffffff1686612b81565b9450600101611a93565b505050509392505050565b5f6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af191505080601f3d1160015f511416151615611b7e5750833b153d17155b80611be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610a81565b5050505050565b5f6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015282602482015260205f6044835f895af191505080601f3d1160015f511416151615611c4f5750823b153d17155b80611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610a81565b60026001600160a01b0384165f90815260046020908152604080832086845290915290205460ff166002811115611cef57611cef612534565b03611d39576001600160a01b0383165f908152600160209081526040808320858452825280832033845290915281208054839290611d2e908490612b81565b909155506115649050565b60016001600160a01b0384165f90815260046020908152604080832086845290915290205460ff166002811115611d7257611d72612534565b03611e16576001600160a01b03929092165f908152602081815260408083209383529281528282203383528152828220835180850190945277ffffffffffffffffffffffffffffffffffffffffffffffff948516845267ffffffffffffffff42811685840190815282546001810184559285529290932093519151909216780100000000000000000000000000000000000000000000000002931692909217910155565b6040517fbb56fb2b0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401610a81565b611e6382612270565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ea7576115648282612317565b610783612389565b6001600160a01b0383165f90815260036020908152604080832085845290915290205442811115611f0f576040517f1414e603000000000000000000000000000000000000000000000000000000008152600401610a8191815260200190565b506001600160a01b0383165f9081526001602090815260408083208584528252808320338452909152902054818181811015611f80576040517f808722dc00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a81565b50506001600160a01b039093165f90815260016020908152604080832094835293815283822033835290529190912091039055565b6001600160a01b0383165f8181526005602090815260408083208684528252808320338085529083528184205485855284845282852088865284528285209185529083528184209484526002835281842087855290925290912054909190835b82548410801561202457505f81115b1561217d575f83858154811061203c5761203c612af9565b5f918252602090912001805490915061207b907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1684611784565b612085575061217d565b805477ffffffffffffffffffffffffffffffffffffffffffffffff1682101561211b5780546120cf90839077ffffffffffffffffffffffffffffffffffffffffffffffff16612b53565b81547fffffffffffffffff0000000000000000000000000000000000000000000000001677ffffffffffffffffffffffffffffffffffffffffffffffff919091161781555f9150612177565b80546121419077ffffffffffffffffffffffffffffffffffffffffffffffff1683612b53565b81547fffffffffffffffff00000000000000000000000000000000000000000000000016825591508461217381612c1f565b9550505b50612015565b80158561218a8382612b53565b90916121cb576040517f808722dc00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610a81565b5050506001600160a01b039095165f90815260056020908152604080832096835295815285822033835290529390932055505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166108b2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61131f612201565b806001600160a01b03163b5f036122be576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610a81565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516123339190612c56565b5f60405180830381855af49150503d805f811461236b576040519150601f19603f3d011682016040523d82523d5f602084013e612370565b606091505b50915091506123808583836123c1565b95945050505050565b34156108b2576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826123d6576123d182612436565b610c1f565b81511580156123ed57506001600160a01b0384163b155b1561242f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a81565b5080610c1f565b8051156124465780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60208284031215612488575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c1f575f5ffd5b6001600160a01b038116811461136a575f5ffd5b5f5f5f606084860312156124dd575f5ffd5b83356124e8816124b7565b92506020840135915060408401356124ff816124b7565b809150509250925092565b5f5f6040838503121561251b575f5ffd5b8235612526816124b7565b946020939093013593505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081016003831061259a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f5f5f5f608085870312156125b3575f5ffd5b84356125be816124b7565b93506020850135925060408501356125d5816124b7565b9396929550929360600135925050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612659576126596125e5565b604052919050565b5f82601f830112612670575f5ffd5b813567ffffffffffffffff81111561268a5761268a6125e5565b6126bb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612612565b8181528460208386010111156126cf575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156126fc575f5ffd5b8235612707816124b7565b9150602083013567ffffffffffffffff811115612722575f5ffd5b61272e85828601612661565b9150509250929050565b5f5f5f6060848603121561274a575f5ffd5b8335612755816124b7565b95602085013595506040909401359392505050565b5f5f5f5f5f6080868803121561277e575f5ffd5b8535612789816124b7565b94506020860135935060408601356127a0816124b7565b9250606086013567ffffffffffffffff8111156127bb575f5ffd5b8601601f810188136127cb575f5ffd5b803567ffffffffffffffff8111156127e1575f5ffd5b8860208260051b84010111156127f5575f5ffd5b959894975092955050506020019190565b602080825282518282018190525f918401906040840190835b8181101561283f578351151583526020938401939092019160010161281f565b509095945050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b602080825282518282018190525f918401906040840190835b8181101561283f578351805177ffffffffffffffffffffffffffffffffffffffffffffffff16845260209081015167ffffffffffffffff1681850152909301926040909201916001016128b6565b5f82601f830112612913575f5ffd5b813567ffffffffffffffff81111561292d5761292d6125e5565b8060051b61293d60208201612612565b91825260208185018101929081019086841115612958575f5ffd5b6020860192505b8383101561297a57823582526020928301929091019061295f565b9695505050505050565b5f5f5f5f5f60a08688031215612998575f5ffd5b85356129a3816124b7565b945060208601356129b3816124b7565b9350604086013567ffffffffffffffff8111156129ce575f5ffd5b6129da88828901612904565b935050606086013567ffffffffffffffff8111156129f6575f5ffd5b612a0288828901612904565b925050608086013567ffffffffffffffff811115612a1e575f5ffd5b612a2a88828901612661565b9150509295509295909350565b5f60208284031215612a47575f5ffd5b8135610c1f816124b7565b5f5f5f5f60808587031215612a65575f5ffd5b8435612a70816124b7565b966020860135965060408601359560600135945092505050565b5f5f5f5f5f60a08688031215612a9e575f5ffd5b8535612aa9816124b7565b94506020860135612ab9816124b7565b93506040860135925060608601359150608086013567ffffffffffffffff811115612a1e575f5ffd5b5f60208284031215612af2575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106e0576106e0612b26565b5f60208284031215612b76575f5ffd5b8151610c1f816124b7565b808201808211156106e0576106e0612b26565b80516fffffffffffffffffffffffffffffffff81168114612bb3575f5ffd5b919050565b5f6060828403128015612bc9575f5ffd5b506040516060810167ffffffffffffffff81118282101715612bed57612bed6125e5565b604052612bf983612b94565b8152612c0760208401612b94565b60208201526040928301519281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c4f57612c4f612b26565b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122025286aa2f2599da39daedaea2498c97a4b7b5ee875d69d446105db1cc4724a2764736f6c634300081c0033