0 txs
0 calls
constructor
No constructor.
functions
deposit
payablefunction deposit(address token, uint256 _amount, uint8 mode) payable returns (uint256 amount, uint256 _bdv, int96 stem)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address sender, address recipient, uint256[] depositIds, uint256[] amounts, bytes)
safeTransferFrom
nonpayablefunction safeTransferFrom(address sender, address recipient, uint256 depositId, uint256 amount, bytes)
transferDeposit
payablefunction transferDeposit(address sender, address recipient, address token, int96 stem, uint256 amount) payable returns (uint256 _bdv)
transferDeposits
payablefunction transferDeposits(address sender, address recipient, address token, int96[] stem, uint256[] amounts) payable returns (uint256[] bdvs)
updateSortedDepositIds
payablefunction updateSortedDepositIds(address account, address token, uint256[] sortedDepositIds) payable
withdrawDeposit
payablefunction withdrawDeposit(address token, int96 stem, uint256 amount, uint8 mode) payable
withdrawDeposits
payablefunction withdrawDeposits(address token, int96[] stems, uint256[] amounts, uint8 mode) payable
events
FarmerGerminatingStalkBalanceChanged
event FarmerGerminatingStalkBalanceChanged(address indexed account, int256 delta, uint8 germ)
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
RemoveDeposit
event RemoveDeposit(address indexed account, address indexed token, int96 stem, uint256 amount, uint256 bdv)
RemoveDeposits
event RemoveDeposits(address indexed account, address indexed token, int96[] stems, uint256[] amounts, uint256 amount, uint256[] bdvs)
StalkBalanceChanged
event StalkBalanceChanged(address indexed account, int256 delta, int256 deltaRoots)
TotalGerminatingBalanceChanged
event TotalGerminatingBalanceChanged(uint256 germinationSeason, address indexed token, int256 deltaAmount, int256 deltaBdv)
TotalGerminatingStalkChanged
event TotalGerminatingStalkChanged(uint256 germinationSeason, int256 deltaGerminatingStalk)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed sender, address indexed recipient, uint256 depositId, uint256 amount)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f80fd5b50615d3d8061001c5f395ff3fe60806040526004361061006a575f3560e01c8063081d77ba1461006e57806327e047f114610094578063297e6c69146100a95780632eb2c2d6146100bc578063c56411f6146100db578063e348f82b146100fb578063f19ed6be1461010e578063f242432a1461013f575b5f80fd5b61008161007c36600461504d565b61015e565b6040519081526020015b60405180910390f35b6100a76100a23660046150f9565b6103e3565b005b6100a76100b7366004615184565b6106f8565b3480156100c7575f80fd5b506100a76100d6366004615221565b610ae9565b6100ee6100e93660046152d7565b610e47565b60405161008b91906153b1565b6100a76101093660046153c3565b61131a565b61012161011c36600461540f565b61161d565b604080519384526020840192909252600b0b9082015260600161008b565b34801561014a575f80fd5b506100a7610159366004615451565b61199c565b60c4545f908161016c611c36565b90505f61017882611d65565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156101c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e991906154c7565b600354909150600119016102185760405162461bcd60e51b815260040161020f906154de565b60405180910390fd5b600260035561022a8a8a8a8a8a611e66565b60016003559450805f60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561027c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102a091906154c7565b146102bd5760405162461bcd60e51b815260040161020f90615515565b505f6102c883611d65565b9050835f60c4015410156102ee5760405162461bcd60e51b815260040161020f90615542565b5f5b83518110156103525781818151811061030b5761030b615579565b602002602001015183828151811061032557610325615579565b60200260200101511461034a5760405162461bcd60e51b815260040161020f9061558d565b6001016102f0565b50505050505f610360611c36565b90505f8061036d83612114565b915091505f5b83518110156103d65782818151811061038e5761038e615579565b60200260200101518282815181106103a8576103a8615579565b602002602001015110156103ce5760405162461bcd60e51b815260040161020f906155d1565b600101610373565b5050505095945050505050565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801561042a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044e91906154c7565b9050865f61045a611c36565b90505f61046682611d65565b9050897349bfc93e96d467d79fc809c8f6da466f8ebb8975636b29cbfe61048b612514565b836040518363ffffffff1660e01b81526004016104a9929190615608565b5f6040518083038186803b1580156104bf575f80fd5b505af41580156104d1573d5f803e3d5ffd5b50506003546001190191506104fa90505760405162461bcd60e51b815260040161020f906154de565b60026003555f61051561050b612514565b8d8d8d8d8d61255f565b905061052a8c82610524612514565b8a61265a565b505060016003555f61053b83611d65565b90505f5b83518110156105d557846001600160a01b031684828151811061056457610564615579565b60200260200101516001600160a01b031603156105cd5781818151811061058d5761058d615579565b60200260200101518382815181106105a7576105a7615579565b602002602001015111156105cd5760405162461bcd60e51b815260040161020f90615622565b60010161053f565b5050505050806105e25f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561062b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064f91906154c7565b1461066c5760405162461bcd60e51b815260040161020f90615515565b505f610676611c36565b90505f8061068383612114565b915091505f5b83518110156106ec578281815181106106a4576106a4615579565b60200260200101518282815181106106be576106be615579565b602002602001015110156106e45760405162461bcd60e51b815260040161020f906155d1565b600101610689565b50505050505050505050565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801561073f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076391906154c7565b600354909150600119016107895760405162461bcd60e51b815260040161020f906154de565b6002600355816107d35760405162461bcd60e51b8152602060048201526015602482015274115b5c1d1e4819195c1bdcda5d081251081b1a5cdd605a1b604482015260640161020f565b6001600160a01b038086165f908152602081815260408083209388168352601490930181528282208054845181840281018401909552808552929392909183018282801561083e57602002820191905f5260205f20905b81548152602001906001019080831161082a575b505050505090508051848490501461088a5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b604482015260640161020f565b60016001605f1b03195f5b848110156109c3575f6108c28787848181106108b3576108b3615579565b90506020020135606081901c91565b91505082600b0b81600b0b136109135760405162461bcd60e51b815260206004820152601660248201527511195c1bdcda5d0812511cc81b9bdd081cdbdc9d195960521b604482015260640161020f565b8092505f805b855181101561096b5785818151811061093457610934615579565b602002602001015189898681811061094e5761094e615579565b9050602002013503610963576001915061096b565b600101610919565b50806109b95760405162461bcd60e51b815260206004820152601c60248201527f4944206e6f7420666f756e6420696e2063757272656e74206c69737400000000604482015260640161020f565b5050600101610895565b506109d0878787876126a3565b50506001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4291906154c7565b14610a5f5760405162461bcd60e51b815260040161020f90615515565b505f610a69611c36565b90505f80610a7683612114565b915091505f5b8351811015610adf57828181518110610a9757610a97615579565b6020026020010151828281518110610ab157610ab1615579565b60200260200101511015610ad75760405162461bcd60e51b815260040161020f906155d1565b600101610a7c565b5050505050505050565b60c4545f610af5611c36565b90505f610b0182611d65565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7291906154c7565b60035490915060011901610b985760405162461bcd60e51b815260040161020f906154de565b6002600355888714610c125760405162461bcd60e51b815260206004820152603b60248201527f53696c6f3a206465706f73697449447320616e6420616d6f756e74732061727260448201527f617973206d757374206265207468652073616d65206c656e6774680000000000606482015260840161020f565b6001600160a01b038b16610c385760405162461bcd60e51b815260040161020f90615673565b5f805f5b8b811015610c8c57610c598d8d838181106108b3576108b3615579565b9093509150610c838f8f85858f8f87818110610c7757610c77615579565b90506020020135611e66565b50600101610c3c565b5050600160035550805f60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610cdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0391906154c7565b14610d205760405162461bcd60e51b815260040161020f90615515565b505f610d2b83611d65565b9050835f60c401541015610d515760405162461bcd60e51b815260040161020f90615542565b5f5b8351811015610db557818181518110610d6e57610d6e615579565b6020026020010151838281518110610d8857610d88615579565b602002602001015114610dad5760405162461bcd60e51b815260040161020f9061558d565b600101610d53565b50505050505f610dc3611c36565b90505f80610dd083612114565b915091505f5b8351811015610e3957828181518110610df157610df1615579565b6020026020010151828281518110610e0b57610e0b615579565b60200260200101511015610e315760405162461bcd60e51b815260040161020f906155d1565b600101610dd6565b505050505050505050505050565b60c4546060905f610e56611c36565b90505f610e6282611d65565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610eaf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed391906154c7565b60035490915060011901610ef95760405162461bcd60e51b815260040161020f906154de565b600260035585610f4b5760405162461bcd60e51b815260206004820152601c60248201527f53696c6f3a20616d6f756e747320617272617920697320656d70747900000000604482015260640161020f565b5f805b87811015610ff2575f898983818110610f6957610f69615579565b9050602002013511610fbd5760405162461bcd60e51b815260206004820152601a60248201527f53696c6f3a20616d6f756e7420696e2061727261792069732030000000000000604482015260640161020f565b610fe8898983818110610fd257610fd2615579565b90506020020135836126de90919063ffffffff16565b9150600101610f4e565b50610ffb612514565b6001600160a01b03168d6001600160a01b031614611084577349bfc93e96d467d79fc809c8f6da466f8ebb897563d670bde08e611036612514565b8e856040518563ffffffff1660e01b815260040161105794939291906156b8565b5f6040518083038186803b15801561106d575f80fd5b505af415801561107f573d5f803e3d5ffd5b505050505b7349bfc93e96d467d79fc809c8f6da466f8ebb8975636b29cbfe8e8d6040518363ffffffff1660e01b81526004016110bd929190615608565b5f6040518083038186803b1580156110d3575f80fd5b505af41580156110e5573d5f803e3d5ffd5b5050604051633594e5ff60e11b81527349bfc93e96d467d79fc809c8f6da466f8ebb89759250636b29cbfe9150611122908f908f90600401615608565b5f6040518083038186803b158015611138575f80fd5b505af415801561114a573d5f803e3d5ffd5b5050505061115d8d8d8d8d8d8d8d6126f2565b600160035595508190505f60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156111b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d591906154c7565b146111f25760405162461bcd60e51b815260040161020f90615515565b505f6111fd83611d65565b9050835f60c4015410156112235760405162461bcd60e51b815260040161020f90615542565b5f5b83518110156112875781818151811061124057611240615579565b602002602001015183828151811061125a5761125a615579565b60200260200101511461127f5760405162461bcd60e51b815260040161020f9061558d565b600101611225565b50505050505f611295611c36565b90505f806112a283612114565b915091505f5b835181101561130b578281815181106112c3576112c3615579565b60200260200101518282815181106112dd576112dd615579565b602002602001015110156113035760405162461bcd60e51b815260040161020f906155d1565b6001016112a8565b50505050979650505050505050565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015611361573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138591906154c7565b9050845f611391611c36565b90505f61139d82611d65565b9050877349bfc93e96d467d79fc809c8f6da466f8ebb8975636b29cbfe6113c2612514565b836040518363ffffffff1660e01b81526004016113e0929190615608565b5f6040518083038186803b1580156113f6575f80fd5b505af4158015611408573d5f803e3d5ffd5b505060035460011901915061143190505760405162461bcd60e51b815260040161020f906154de565b6002600355611449611441612514565b8a8a8a612bd0565b61145c8988611456612514565b8961265a565b5060016003555f61146c83611d65565b90505f5b835181101561150657846001600160a01b031684828151811061149557611495615579565b60200260200101516001600160a01b031603156114fe578181815181106114be576114be615579565b60200260200101518382815181106114d8576114d8615579565b602002602001015111156114fe5760405162461bcd60e51b815260040161020f90615622565b600101611470565b5050505050806115135f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561155c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158091906154c7565b1461159d5760405162461bcd60e51b815260040161020f90615515565b505f6115a7611c36565b90505f806115b483612114565b915091505f5b8351811015610adf578281815181106115d5576115d5615579565b60200260200101518282815181106115ef576115ef615579565b602002602001015110156116155760405162461bcd60e51b815260040161020f906155d1565b6001016115ba565b600154604080516318160ddd60e01b815290515f928392839283926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa15801561166a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168e91906154c7565b60c4549091505f61169d611c36565b90505f6116a982611d65565b600354909150600119016116cf5760405162461bcd60e51b815260040161020f906154de565b6002600355897349bfc93e96d467d79fc809c8f6da466f8ebb8975636b29cbfe6116f7612514565b836040518363ffffffff1660e01b8152600401611715929190615608565b5f6040518083038186803b15801561172b575f80fd5b505af415801561173d573d5f803e3d5ffd5b505050506117548b8b61174e612514565b8c612c3d565b9750611768611761612514565b8c8a612dc6565b600160035590975095505f905061177e83611d65565b9050835f60c4015410156117d45760405162461bcd60e51b815260206004820152601e60248201527f494e563a206e6f4f7574466c6f77205374616c6b206465637265617365640000604482015260640161020f565b5f5b8351811015611878578181815181106117f1576117f1615579565b602002602001015183828151811061180b5761180b615579565b602002602001015111156118705760405162461bcd60e51b815260206004820152602660248201527f494e563a206e6f4f7574466c6f7720546f6b656e2062616c616e6365206465636044820152651c99585cd95960d21b606482015260840161020f565b6001016117d6565b5050505050806118855f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156118ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118f291906154c7565b1461190f5760405162461bcd60e51b815260040161020f90615515565b505f611919611c36565b90505f8061192683612114565b915091505f5b835181101561198f5782818151811061194757611947615579565b602002602001015182828151811061196157611961615579565b602002602001015110156119875760405162461bcd60e51b815260040161020f906155d1565b60010161192c565b5050505093509350939050565b60c4545f6119a8611c36565b90505f6119b482611d65565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a2591906154c7565b60035490915060011901611a4b5760405162461bcd60e51b815260040161020f906154de565b60026003556001600160a01b038916611a765760405162461bcd60e51b815260040161020f90615673565b606088901c88611a898c8c84848d611e66565b5050600160035550805f60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611adc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0091906154c7565b14611b1d5760405162461bcd60e51b815260040161020f90615515565b505f611b2883611d65565b9050835f60c401541015611b4e5760405162461bcd60e51b815260040161020f90615542565b5f5b8351811015611bb257818181518110611b6b57611b6b615579565b6020026020010151838281518110611b8557611b85615579565b602002602001015114611baa5760405162461bcd60e51b815260040161020f9061558d565b600101611b50565b50505050505f611bc0611c36565b90505f80611bcd83612114565b915091505f5b83518110156106ec57828181518110611bee57611bee615579565b6020026020010151828281518110611c0857611c08615579565b60200260200101511015611c2e5760405162461bcd60e51b815260040161020f906155d1565b600101611bd3565b60605f611c41612e88565b90505f611c4c612f89565b90505f81518351611c5d91906156f6565b9050806001600160401b03811115611c7757611c77615709565b604051908082528060200260200182016040528015611ca0578160200160208202803683370190505b5093505f5b8351811015611cfa57838181518110611cc057611cc0615579565b6020026020010151858281518110611cda57611cda615579565b6001600160a01b0390921660209283029190910190910152600101611ca5565b505f5b8251811015611d5e57828181518110611d1857611d18615579565b602002602001015185828651611d2e91906156f6565b81518110611d3e57611d3e615579565b6001600160a01b0390921660209283029190910190910152600101611cfd565b5050505090565b606081516001600160401b03811115611d8057611d80615709565b604051908082528060200260200182016040528015611da9578160200160208202803683370190505b5090505f5b8251811015611e6057828181518110611dc957611dc9615579565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611dfc919061571d565b602060405180830381865afa158015611e17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3b91906154c7565b828281518110611e4d57611e4d615579565b6020908102919091010152600101611dae565b50919050565b5f611e6f612514565b6001600160a01b0316866001600160a01b031614611ef8577349bfc93e96d467d79fc809c8f6da466f8ebb897563d670bde087611eaa612514565b87866040518563ffffffff1660e01b8152600401611ecb94939291906156b8565b5f6040518083038186803b158015611ee1575f80fd5b505af4158015611ef3573d5f803e3d5ffd5b505050505b604051633594e5ff60e11b81527349bfc93e96d467d79fc809c8f6da466f8ebb897590636b29cbfe90611f319089908890600401615608565b5f6040518083038186803b158015611f47575f80fd5b505af4158015611f59573d5f803e3d5ffd5b5050604051633594e5ff60e11b81527349bfc93e96d467d79fc809c8f6da466f8ebb89759250636b29cbfe9150611f969088908890600401615608565b5f6040518083038186803b158015611fac575f80fd5b505af4158015611fbe573d5f803e3d5ffd5b505050505f805f80611fd48a8989896001612ff5565b935093509350935073e47c1d275ceb1554ce802a0755cc679294f1ae8163e41ad52e8a8a8a8a8760016040518763ffffffff1660e01b815260040161201e96959493929190615745565b5f6040518083038186803b158015612034575f80fd5b505af4158015612046573d5f803e3d5ffd5b5060029250612053915050565b81600281111561206557612065615731565b036120835761207e8a8a61207987876126de565b613139565b6120a0565b61208f8a8a8684613385565b82156120a0576120a08a8a85613139565b886001600160a01b03168a6001600160a01b03166120bc612514565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626120f08c8c613511565b60408051918252602082018c90520160405180910390a45098975050505050505050565b6060805f83516001600160401b0381111561213157612131615709565b60405190808252806020026020018201604052801561215a578160200160208202803683370190505b50925083516001600160401b0381111561217657612176615709565b60405190808252806020026020018201604052801561219f578160200160208202803683370190505b5091505f5b845181101561250d5781600101601b015f8683815181106121c7576121c7615579565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f87848151811061221457612214615579565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f88858151811061226957612269615579565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a90879081106122b3576122b3615579565b6020908102919091018101516001600160a01b031682528101919091526040015f20546122e991906001600160801b0316615796565b6122f39190615796565b6001600160801b031661230691906156f6565b84828151811061231857612318615579565b6020908102919091010152600182015485516001600160a01b039091169086908390811061234857612348615579565b60200260200101516001600160a01b0316036123f457816001016008015484828151811061237857612378615579565b6020026020010181815161238c91906156f6565b9052505f5b60088301548110156123f2575f818152602080850190526040902060018101546002909101546123c191906157bd565b8583815181106123d3576123d3615579565b602002602001018181516123e791906156f6565b905250600101612391565b505b81600101610101015f015f86838151811061241157612411615579565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205484828151811061244b5761244b615579565b6020026020010181815161245f91906156f6565b905250845185908290811061247657612476615579565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016124a9919061571d565b602060405180830381865afa1580156124c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124e891906154c7565b8382815181106124fa576124fa615579565b60209081029190910101526001016121a4565b5050915091565b5f6125467f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b0382161161255c5750335b90565b5f83821461257f5760405162461bcd60e51b815260040161020f906157d0565b5f61258e888888888888613533565b805151909150156125b8578051805160408201516020909201516125b8928b928b92909190613950565b602081015151156125e3576020808201518051604082015191909201516125e3928b928b925f61396e565b6040810151511561260f5760408082015180519181015160209091015161260f928b928b92600161396e565b60608101511561262a576126278882606001516139dd565b50505b60408101515160208201515182515161264e929161264891906126de565b906126de565b98975050505050505050565b821561269d57600181600181111561267457612674615731565b0361268957612684828585613ba3565b61269d565b61269d6001600160a01b0385168385613bd8565b50505050565b6001600160a01b038481165f908152602081815260408083209387168352601490930190529081206126d6908484614f78565b505050505050565b5f6126e982846156f6565b90505b92915050565b60608382146127135760405162461bcd60e51b815260040161020f906157d0565b61271b614fbd565b5f856001600160401b0381111561273457612734615709565b60405190808252806020026020018201604052801561275d578160200160208202803683370190505b5090505f866001600160401b0381111561277957612779615709565b6040519080825280602002602001820160405280156127a2578160200160208202803683370190505b5090505f6127af8a613c3c565b90505f5b88811015612aa3575f6127ec8b8b848181106127d1576127d1615579565b90506020020160208101906127e69190615817565b84613c77565b90505f6128398f8e8e8e8781811061280657612806615579565b905060200201602081019061281b9190615817565b8d8d8881811061282d5761282d615579565b90506020020135613cd8565b905073e47c1d275ceb1554ce802a0755cc679294f1ae8163e41ad52e8f8f8f8f8881811061286957612869615579565b905060200201602081019061287e9190615817565b8e8e8981811061289057612890615579565b905060200201358660016040518763ffffffff1660e01b81526004016128bb96959493929190615745565b5f6040518083038186803b1580156128d1575f80fd5b505af41580156128e3573d5f803e3d5ffd5b505050505f6129258d8d868181106128fd576128fd615579565b90506020020160208101906129129190615817565b866020015161292085614010565b614047565b905061294e8b8b8681811061293c5761293c615579565b8b5151926020909102013590506126de565b885152600283600281111561296557612965615731565b0361299b5787516040015161297a90836126de565b88516040015287516020015161299090826126de565b885160200152612a28565b5f8360028111156129ae576129ae615731565b036129ef576020880151604001516129c690836126de565b6020808a01805160400192909252905101516129e290826126de565b6020808a01510152612a28565b6040808901510151612a0190836126de565b6040808a018051909101919091525160200151612a1e90826126de565b6040890151602001525b81878581518110612a3b57612a3b615579565b602002602001018181525050612a778e8e8e87818110612a5d57612a5d615579565b9050602002016020810190612a729190615817565b613511565b868581518110612a8957612a89615579565b6020026020010181815250505050508060010190506127b3565b5060405163d7787ee560e01b81527349bfc93e96d467d79fc809c8f6da466f8ebb89759063d7787ee590612ae1908f908f908f908a90600401615830565b5f6040518083038186803b158015612af7575f80fd5b505af4158015612b09573d5f803e3d5ffd5b505050508a6001600160a01b03168c6001600160a01b0316612b29612514565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb858b8b604051612b65939291906158fa565b60405180910390a48351516040516001600160a01b03808d1692908f16917f6008478fd0513693018a0ac8771ada053137941c0d833295a27629af7a3ab56b91612bb8918e918e918e918e918c9061591f565b60405180910390a350909a9950505050505050505050565b5f805f80612be1888888885f612ff5565b929650909450925090506002816002811115612bff57612bff615731565b03612c1f57612c1a88888785612c1589896126de565b613950565b610adf565b612c2d88888785888661396e565b8215610adf576106ec88846139dd565b5f835f03612c4c57505f612dbe565b5f826003811115612c5f57612c5f615731565b14612cab57612c858386866001866003811115612c7e57612c7e615731565b141561407c565b905080841480612ca657506003826003811115612ca457612ca4615731565b145b612dbe575b6040516370a0823160e01b81525f906001600160a01b038716906370a0823190612cd990309060040161571d565b602060405180830381865afa158015612cf4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d1891906154c7565b9050612d3b8430612d2985896157bd565b6001600160a01b038a1692919061412c565b612dba612db382886001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612d6e919061571d565b602060405180830381865afa158015612d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dad91906154c7565b90614165565b83906126de565b9150505b949350505050565b5f805f73e47c1d275ceb1554ce802a0755cc679294f1ae81631ade41108787612dee89614170565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600b81900b60448301526064820188905294506084016040805180830381865af4158015612e4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e6f9190615995565b9093509050612e7f86848361422d565b50935093915050565b60c9546060905f9081816001600160401b03811115612ea957612ea9615709565b604051908082528060200260200182016040528015612ed2578160200160208202803683370190505b5093505f5b82811015612f7f5760c98401805482908110612ef557612ef5615579565b5f91825260209091200154600160a01b900460ff1615612f775760c98401805482908110612f2557612f25615579565b5f918252602090912001546001600160a01b03168583612f44816159c6565b945081518110612f5657612f56615579565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612ed7565b5080845250505090565b60605f612f946143ff565b90505f5b8151811015611e6057612fc3828281518110612fb657612fb6615579565b60200260200101516144f6565b828281518110612fd557612fd5615579565b6001600160a01b0390921660209283029190910190910152600101612f98565b5f808080805f6130058a8a614586565b90935090506130168b8b8b8b613cd8565b6001600160a01b038b165f90815260c88401602052604090205490945061304d908590600160481b900465ffffffffffff166145af565b955061305d898261292087614010565b94505f87600181111561307257613072615731565b036130d6575f6001600160a01b038c1661308a612514565b6001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f626130be8e8e613511565b60408051918252602082018e90520160405180910390a45b60408051600b8b900b8152602081018a90529081018590526001600160a01b03808c1691908d16907f153f0425cb9f489d8ca1232a9a790fb1ee212c4d80bb8cf8c83b0f5b203bab1c9060600160405180910390a3505095509550955095915050565b6001600160a01b0383165f908152602081905260408120600101548190831461318d5760c482015460c5830154613188916001916126489190613182908490612dad908a6145af565b906145ba565b6131a6565b6001600160a01b0385165f908152602083905260409020545b6001600160a01b0386165f908152602084905260409020600101549091506131ce9084614165565b6001600160a01b0386165f9081526020849052604090206001810191909155546131f89082614165565b6001600160a01b0386165f818152602085905260409020919091555f80516020615ce883398151915261322a856159de565b613233846159de565b6040805192835260208301919091520160405180910390a26001600160a01b0385165f9081526020839052604090208054602c9091015411156132ec576001600160a01b0385165f9081526020839052604081208054602c9091015461329891614165565b6001600160a01b038088165f908152602086905260408082208054602c918201559289168252902001549091506132cf90826126de565b6001600160a01b0386165f908152602085905260409020602c0155505b6001600160a01b0384165f9081526020839052604090206001015461331190846126de565b6001600160a01b0385165f90815260208490526040902060018101919091555461333b90826126de565b6001600160a01b0385165f818152602085815260409182902093909355805186815292830184905290915f80516020615ce883398151915291015b60405180910390a25050505050565b5f61338f83614010565b6001600160a01b0386165f908152602083905260408120601a01908460028111156133bc576133bc615731565b60028111156133cd576133cd615731565b815260208101919091526040015f90812080549091906133f79084906001600160801b03166159f8565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061342483614010565b6001600160a01b0385165f908152602083905260408120601a019084600281111561345157613451615731565b600281111561346257613462615731565b815260208101919091526040015f908120805490919061348c9084906001600160801b0316615796565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550846001600160a01b03165f80516020615cc8833981519152846134d2906159de565b846040516134e1929190615a2c565b60405180910390a2836001600160a01b03165f80516020615cc88339815191528484604051613376929190615a2c565b6001600160601b031660609190911b6bffffffffffffffffffffffff19161790565b61353b614fbd565b5f80856001600160401b0381111561355557613555615709565b60405190808252806020026020018201604052801561357e578160200160208202803683370190505b5090505f866001600160401b0381111561359a5761359a615709565b6040519080825280602002602001820160405280156135c3578160200160208202803683370190505b5090505f6135d08a613c3c565b90505f5b888110156137c2575f6135f28b8b848181106127d1576127d1615579565b90505f61360c8e8e8e8e8781811061280657612806615579565b90508086848151811061362157613621615579565b6020026020010181815250506136438d8d8d86818110612a5d57612a5d615579565b85848151811061365557613655615579565b6020026020010181815250505f6136778d8d868181106128fd576128fd615579565b9050600283600281111561368d5761368d615731565b036136ed578851604001516136a290836126de565b8951604001528851602001516136b890826126de565b8951602001526136e58b8b868181106136d3576136d3615579565b8c5151926020909102013590506126de565b8951526137b4565b5f83600281111561370057613700615731565b036137545760208901516040015161371890836126de565b60208a0151604001526137498b8b8681811061373657613736615579565b60208d81015151939102013590506126de565b60208a01515261379f565b6040808a0151015161376690836126de565b6040808b015101526137988b8b8681811061378357613783615579565b60408d015151926020909102013590506126de565b60408a0151525b60608901516137ae90826126de565b60608a01525b5050508060010190506135d4565b506001600160a01b038a165f90815260c885016020526040902054855151600160481b90910465ffffffffffff16901561381d578551604001516138169061380a90836145af565b875160200151906126de565b8651602001525b602086015151156138445760208601516040015161383b90826145af565b60208088015101525b6040860151511561386b57604080870151015161386190826145af565b6040870151602001525b505f6001600160a01b038c1661387f612514565b6001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb858b8b6040516138bb939291906158fa565b60405180910390a4896001600160a01b03168b6001600160a01b03167f6008478fd0513693018a0ac8771ada053137941c0d833295a27629af7a3ab56b8b8b8b8b6139278c604001515f01516126488e602001515f01518f5f01515f01516126de90919063ffffffff16565b8a60405161393a9695949392919061591f565b60405180910390a3505050509695505050505050565b61395b8484846145c5565b61396585826139dd565b50505050505050565b61397a858585846146a9565b60405163100ca29360e01b81527349bfc93e96d467d79fc809c8f6da466f8ebb89759063100ca293906139b590899086908690600401615a40565b5f6040518083038186803b1580156139cb575f80fd5b505af41580156106ec573d5f803e3d5ffd5b5f8080835f036139f3575f809250925050613b9c565b60c481015460c5820154613a0c919061318290876145af565b6001600160a01b0386165f90815260208390526040902054909350831115613a49576001600160a01b0385165f9081526020829052604090205492505b60c4810154613a589085614165565b60c48201556001600160a01b0385165f90815260208290526040902060010154613a829085614165565b6001600160a01b0386165f9081526020839052604090206001015560c5810154613aac9084614165565b60c58201556001600160a01b0385165f90815260208290526040902054613ad39084614165565b6001600160a01b0386165f908152602083905260409020818155602c01541115613b58576001600160a01b0385165f9081526020829052604081208054602c90910154613b1f91614165565b6001600160a01b0387165f9081526020849052604090208054602c9091015560ed830154909150613b509082614165565b60ed83015591505b6001600160a01b0385165f80516020615ce8833981519152613b79866159de565b613b82866159de565b6040805192835260208301919091520160405180910390a2505b9250929050565b5f613bae8484614908565b90505f613bbb82846126de565b9050613bd1858583613bcc87614934565b614960565b5050505050565b6040516001600160a01b03838116602483015260448201839052613c3791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614a5c565b505050565b604080518082019091525f8082526020820152613c5882614170565b600b0b60208201819052613c6d908390614ab4565b600b0b8152919050565b5f815f0151600b0b83600b0b1215613c91575060026126ec565b8160200151600b0b83600b0b03613cbe57613caa614ace565b613cb5576001613cb7565b5f5b90506126ec565b613cc6614ace565b613cd0575f613cb7565b5060016126ec565b5f805f613ce58686613511565b6001600160a01b0388165f908152602084815260408083208484526013019091529020546001600160801b03600160801b8204811695509192501680851115613d705760405162461bcd60e51b815260206004820152601c60248201527f53696c6f3a2043726174652062616c616e636520746f6f206c6f772e00000000604482015260640161020f565b80851015613f3d575f613d9060016126488461318283612dad8c8c6145af565b90505f613d9d8683614165565b90505f613daa8489614165565b905080865f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f206013015f8781526020019081526020015f205f015f6101000a8154816001600160801b0302191690836001600160801b0316021790555081865f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f206013015f8781526020019081526020015f205f0160106101000a8154816001600160801b0302191690836001600160801b03160217905550613ede83875f015f8e6001600160a01b03166001600160a01b031681526020019081526020015f206018015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f01600c9054906101000a90046001600160801b03166001600160801b0316614aea90919063ffffffff16565b6001600160a01b03808d165f90815260209889526040808220928e168252601890920190985290962080546001600160801b0397909716600160601b02600160601b600160e01b031990971696909617909555509350612dbe92505050565b8015613f72576001600160a01b0388165f90815260208481526040808320858452601301909152812055613f72888884614af5565b6001600160a01b038881165f90815260208581526040808320938b168352601890930190522054613fb390600160601b90046001600160801b031685614aea565b6001600160a01b03808a165f90815260209586526040808220928b168252601890920190955290932080546001600160801b0394909416600160601b02600160601b600160e01b0319909416939093179092555050949350505050565b5f6001600160801b03821115614043576040516306dfcc6560e41b8152608060048201526024810183905260440161020f565b5090565b5f6140726001600160801b038316614063600b86900b87614bf2565b6001600160601b0316906145af565b90505b9392505050565b5f806140888686614908565b905082806140965750838110155b6140f15760405162461bcd60e51b815260206004820152602660248201527f42616c616e63653a20496e73756666696369656e7420696e7465726e616c2062604482015265616c616e636560d01b606482015260840161020f565b6140fb8185614bfd565b91505f61410883836157bd565b905061412287878361411987614934565b613bcc906159de565b5050949350505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261269d9186918216906323b872dd90608401613c05565b5f6126e982846157bd565b6001600160a01b0381165f90815260c8602052604081205481906141ff906141c5906141a890600160781b900463ffffffff16614c12565b60d48401546141bc9063ffffffff16614c12565b600b0b90614bf2565b6001600160a01b0385165f90815260c8840160205260409020546141f690600160201b900464ffffffffff16614c12565b600b0b90614c24565b6001600160a01b0384165f90815260c8830160205260409020546140759190600160981b9004600b0b615a6c565b6001600160a01b0383165f9081526020819052604081208390601a018284600281111561425c5761425c615731565b600281111561426d5761426d615731565b815260208101919091526040015f90812080549091906142979084906001600160801b0316615796565b82546001600160801b039182166101009390930a92830291909202199091161790555060d481015463ffffffff168260028111156142d7576142d7615731565b6142df614c2f565b60028111156142f0576142f0615731565b0361432f5763ffffffff81165f90815260cb83016020526040812080546001600160801b03871692906143249084906156f6565b909155506143789050565b6001600160801b03841660cb83015f614349600185615a99565b63ffffffff1663ffffffff1681526020019081526020015f205f015f82825461437291906156f6565b90915550505b846001600160a01b03165f80516020615cc8833981519152856001600160801b0316856040516143a9929190615a2c565b60405180910390a26040805163ffffffff831681526001600160801b03861660208201527f3dd97efd4911891b98b28287922dd7351872382b548b549517e183ee6544c743910160405180910390a15050505050565b60c9546060905f9081816001600160401b0381111561442057614420615709565b604051908082528060200260200182016040528015614449578160200160208202803683370190505b5093505f5b82811015612f7f5760c9840180548290811061446c5761446c615579565b5f91825260209091200154600160b81b900460ff16156144ee5760c9840180548290811061449c5761449c615579565b5f918252602090912001546001600160a01b031685836144bb816159c6565b9450815181106144cd576144cd615579565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161444e565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015614533573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261455a9190810190615ac1565b90508061456682614c47565b8151811061457657614576615579565b6020026020010151915050919050565b5f805f61459285613c3c565b905061459e8482613c77565b816020015192509250509250929050565b5f6126e98284615b74565b5f6126e98284615b9f565b5f6145fb6145d284614010565b6001600160a01b0386165f90815260c7840160205260409020546001600160801b031690614aea565b6001600160a01b0385165f90815260c783016020526040902080546001600160801b0319166001600160801b039290921691909117905561466e61463e83614010565b6001600160a01b0386165f90815260c784016020526040902054600160801b90046001600160801b031690614aea565b6001600160a01b039094165f90815260c79091016020526040902080546001600160801b03948516600160801b029416939093179092555050565b5f808260028111156146bd576146bd615731565b141580156146dd575060018260028111156146da576146da615731565b14155b156147245760405162461bcd60e51b8152602060048201526017602482015276696e76616c6964206765726d696e6174696f6e5369646560481b604482015260640161020f565b61472d84614010565b60ca82015f84600281111561474457614744615731565b600281111561475557614755615731565b815260208082019290925260409081015f9081206001600160a01b038a168252909252812080549091906147939084906001600160801b03166159f8565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506147c083614010565b60ca82015f8460028111156147d7576147d7615731565b60028111156147e8576147e8615731565b815260208082019290925260409081015f9081206001600160a01b038a1682529092529020805460109061482d908490600160801b90046001600160801b03166159f8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550846001600160a01b03167f99f70d4286db852579c7e4c4e3d46125005d363d480494fec6524240ade1e00e83600281111561488e5761488e615731565b614896614c2f565b60028111156148a7576148a7615731565b146148c85760d48301546148c39060019063ffffffff16615a99565b6148d4565b60d483015463ffffffff165b6148dd876159de565b6148e6876159de565b6040805163ffffffff9094168452602084019290925290820152606001613376565b6001600160a01b039182165f90815260208181526040808320939094168252601b909201909152205490565b5f6001600160ff1b038211156140435760405163123baf0360e11b81526004810183905260240161020f565b5f808212156149b657614995614975836159de565b6001600160a01b0386165f908152601c8401602052604090205490614165565b6001600160a01b0385165f908152601c8301602052604090208190556149f7565b6001600160a01b0384165f908152601c820160205260409020546149da90836126de565b6001600160a01b0385165f908152601c8301602052604090208190555b506001600160a01b038581165f81815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42910160405180910390a35050505050565b5f614a706001600160a01b03841683614cd8565b905080515f14158015614a94575080806020019051810190614a929190615bb2565b155b15613c375782604051635274afe760e01b815260040161020f919061571d565b5f6126e982614ac285614ce5565b64ffffffffff16614bf2565b60d4545f908190614ae49063ffffffff16614df2565b91505090565b5f6126e982846159f8565b6001600160a01b038381165f90815260208181526040808320938616835260149093018152828220848352600180820190925292822054835492939290918391614b3f91906157bd565b81548110614b4f57614b4f615579565b905f5260205f200154825f018281548110614b6c57614b6c615579565b905f5260205f20018190555080826001015f845f018481548110614b9257614b92615579565b905f5260205f20015481526020019081526020015f20819055505f19826001015f8681526020019081526020015f2081905550815f01805480614bd757614bd7615bd1565b600190038181905f5260205f20015f90559055505050505050565b5f6126e98284615be5565b5f818310614c0b57816126e9565b5090919050565b5f6126ec614c1f83614934565b614e21565b5f6126e98284615c12565b5f614c38614ace565b614c425750600190565b505f90565b5f805b8251821015614c9857828281518110614c6557614c65615579565b602090810291909101015160018201546001600160a01b03908116911614614c8d5750919050565b816001019150614c4a565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b604482015260640161020f565b60606126e983835f614e55565b60d4546001600160a01b0382165f90815260c860205260408120549091829163ffffffff918216600160781b9091049091161015614d4c576001600160a01b0383165f90815260c882016020526040902054600160201b900464ffffffffff169150611e60565b6001600160a01b0383165f90815260c88201602052604081206001015460040b908112614dad576001600160a01b0384165f90815260c883016020526040902054614da6908290600160201b900464ffffffffff16615c31565b9250614deb565b614db681615c4f565b6001600160a01b0385165f90815260c884016020526040902054614de89190600160201b900464ffffffffff16615c71565b92505b5050919050565b5f614e0863ffffffff80841690600290614eee16565b63ffffffff1615614e1a5760016126ec565b5f92915050565b80600b81900b8114614e505760405163327269a760e01b8152606060048201526024810183905260440161020f565b919050565b606081471015614e7a573060405163cd78605960e01b815260040161020f919061571d565b5f80856001600160a01b03168486604051614e959190615c8f565b5f6040518083038185875af1925050503d805f8114614ecf576040519150601f19603f3d011682016040523d82523d5f602084013e614ed4565b606091505b5091509150614ee4868383614ef9565b9695505050505050565b5f6126e98284615ca5565b606082614f0e57614f0982614f4c565b614075565b8151158015614f2557506001600160a01b0384163b155b15614f455783604051639996b31560e01b815260040161020f919061571d565b5080614075565b805115614f5c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b828054828255905f5260205f20908101928215614fb1579160200282015b82811115614fb1578235825591602001919060010190614f96565b50614043929150614ff6565b6040518060800160405280614fd061500a565b8152602001614fdd61500a565b8152602001614fea61500a565b81526020015f81525090565b5b80821115614043575f8155600101614ff7565b60405180606001604052805f81526020015f81526020015f81525090565b6001600160a01b0381168114614f75575f80fd5b8035600b81900b8114614e50575f80fd5b5f805f805f60a08688031215615061575f80fd5b853561506c81615028565b9450602086013561507c81615028565b9350604086013561508c81615028565b925061509a6060870161503c565b949793965091946080013592915050565b5f8083601f8401126150bb575f80fd5b5081356001600160401b038111156150d1575f80fd5b6020830191508360208260051b8501011115613b9c575f80fd5b803560028110614e50575f80fd5b5f805f805f806080878903121561510e575f80fd5b863561511981615028565b955060208701356001600160401b0380821115615134575f80fd5b6151408a838b016150ab565b90975095506040890135915080821115615158575f80fd5b5061516589828a016150ab565b90945092506151789050606088016150eb565b90509295509295509295565b5f805f8060608587031215615197575f80fd5b84356151a281615028565b935060208501356151b281615028565b925060408501356001600160401b038111156151cc575f80fd5b6151d8878288016150ab565b95989497509550505050565b5f8083601f8401126151f4575f80fd5b5081356001600160401b0381111561520a575f80fd5b602083019150836020828501011115613b9c575f80fd5b5f805f805f805f8060a0898b031215615238575f80fd5b883561524381615028565b9750602089013561525381615028565b965060408901356001600160401b038082111561526e575f80fd5b61527a8c838d016150ab565b909850965060608b0135915080821115615292575f80fd5b61529e8c838d016150ab565b909650945060808b01359150808211156152b6575f80fd5b506152c38b828c016151e4565b999c989b5096995094979396929594505050565b5f805f805f805f60a0888a0312156152ed575f80fd5b87356152f881615028565b9650602088013561530881615028565b9550604088013561531881615028565b945060608801356001600160401b0380821115615333575f80fd5b61533f8b838c016150ab565b909650945060808a0135915080821115615357575f80fd5b506153648a828b016150ab565b989b979a50959850939692959293505050565b5f815180845260208085019450602084015f5b838110156153a65781518752958201959082019060010161538a565b509495945050505050565b602081525f6126e96020830184615377565b5f805f80608085870312156153d6575f80fd5b84356153e181615028565b93506153ef6020860161503c565b925060408501359150615404606086016150eb565b905092959194509250565b5f805f60608486031215615421575f80fd5b833561542c81615028565b925060208401359150604084013560048110615446575f80fd5b809150509250925092565b5f805f805f8060a08789031215615466575f80fd5b863561547181615028565b9550602087013561548181615028565b9450604087013593506060870135925060808701356001600160401b038111156154a9575f80fd5b6154b589828a016151e4565b979a9699509497509295939492505050565b5f602082840312156154d7575f80fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b6001600160a01b0392831681529116602082015260400190565b60208082526031908201527f494e563a206f6e654f7574466c6f77206d756c7469706c6520746f6b656e2062604082015270185b185b98d95cc8191958dc99585cd959607a1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156126ec576126ec6156e2565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6001600160a01b03878116825286166020820152600b85900b6040820152606081018490526080810183905260c081016002831061578557615785615731565b8260a0830152979650505050505050565b6001600160801b038181168382160190808211156157b6576157b66156e2565b5092915050565b818103818111156126ec576126ec6156e2565b60208082526027908201527f53696c6f3a204372617465732c20616d6f756e7473206172652064696666206c60408201526632b733ba34399760c91b606082015260800190565b5f60208284031215615827575f80fd5b6126e98261503c565b6001600160a01b03858116825284811660208301528316604082015281516101a08201906158769060608401908051825260208082015190830152604090810151910152565b602083810151805160c08501528082015160e0850152604090810151610100850152808501518051610120860152918201516101408501520151610160830152606090920151610180909101529392505050565b8183525f6001600160fb1b038311156158e1575f80fd5b8260051b80836020870137939093016020019392505050565b604081525f61590c6040830186615377565b8281036020840152612dba8185876158ca565b608080825281018690525f8760a08301825b89811015615959576159428361503c565b600b0b825260209283019290910190600101615931565b50838103602085015261596d81888a6158ca565b91505084604084015282810360608401526159888185615377565b9998505050505050505050565b5f80604083850312156159a6575f80fd5b825191506020830151600381106159bb575f80fd5b809150509250929050565b5f600182016159d7576159d76156e2565b5060010190565b5f600160ff1b82016159f2576159f26156e2565b505f0390565b6001600160801b038281168282160390808211156157b6576157b66156e2565b60038110615a2857615a28615731565b9052565b828152604081016140756020830184615a18565b6001600160a01b03841681526001600160801b038316602082015260608101612dbe6040830184615a18565b600b81810b9083900b0160016001605f1b03811360016001605f1b0319821217156126ec576126ec6156e2565b63ffffffff8281168282160390808211156157b6576157b66156e2565b8051614e5081615028565b5f6020808385031215615ad2575f80fd5b82516001600160401b0380821115615ae8575f80fd5b818501915085601f830112615afb575f80fd5b815181811115615b0d57615b0d615709565b8060051b604051601f19603f83011681018181108582111715615b3257615b32615709565b604052918252848201925083810185019188831115615b4f575f80fd5b938501935b8285101561264e57615b6585615ab6565b84529385019392850192615b54565b80820281158282048414176126ec576126ec6156e2565b634e487b7160e01b5f52601260045260245ffd5b5f82615bad57615bad615b8b565b500490565b5f60208284031215615bc2575f80fd5b81518015158114614075575f80fd5b634e487b7160e01b5f52603160045260245ffd5b600b82810b9082900b0360016001605f1b0319811260016001605f1b03821317156126ec576126ec6156e2565b5f82600b0b82600b0b0280600b0b91508082146157b6576157b66156e2565b64ffffffffff8281168282160390808211156157b6576157b66156e2565b5f8160040b647fffffffff198103615c6957615c696156e2565b5f0392915050565b64ffffffffff8181168382160190808211156157b6576157b66156e2565b5f82518060208501845e5f920191825250919050565b5f63ffffffff80841680615cbb57615cbb615b8b565b9216919091069291505056fe9c0c70ad39ba6959d6008b9bc651f15ce23613cc1c5ebb4c6ffba0e53a1ea705b2d61db64b8ad7535308d2111c78934bc32baf9b7cd3a2e58cba25730003cd58a2646970667358221220cc20dd6906927e142b9524c174dd7e8b736f7946a709aef2709cab200d87ab5964736f6c63430008190033