@pendle/core-v2 4.2.7 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/build/artifacts/contracts/core/StandardizedYield/implementations/PirexETH/PendleApxETHSY.sol/PendleApxETHSY.dbg.json +1 -1
  2. package/build/artifacts/contracts/core/StandardizedYield/implementations/PirexETH/PendleApxETHSY.sol/PendleApxETHSY.json +2 -2
  3. package/build/artifacts/contracts/interfaces/IPPtLpOracle.sol/IPPtLpOracle.dbg.json +4 -0
  4. package/build/artifacts/contracts/interfaces/{IPPtOracle.sol/IPPtOracle.json → IPPtLpOracle.sol/IPPtLpOracle.json} +75 -3
  5. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  6. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.json +96 -0
  7. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.dbg.json +1 -1
  8. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.json +98 -2
  9. package/build/artifacts/contracts/oracles/PendlePtLpOracle.sol/PendlePtLpOracle.dbg.json +1 -1
  10. package/build/artifacts/contracts/oracles/PendlePtLpOracle.sol/PendlePtLpOracle.json +2 -2
  11. package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +1 -1
  12. package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.json +2 -2
  13. package/build/artifacts/contracts/oracles/samples/BoringPtUsdChainlinkOracle.sol/BoringPtUsdChainlinkOracle.dbg.json +1 -1
  14. package/build/artifacts/contracts/oracles/samples/BoringPtUsdChainlinkOracle.sol/BoringPtUsdChainlinkOracle.json +2 -2
  15. package/contracts/core/StandardizedYield/implementations/PirexETH/PendleApxETHSY.sol +1 -1
  16. package/contracts/interfaces/{IPPtOracle.sol → IPPtLpOracle.sol} +8 -2
  17. package/contracts/limit/LimitRouterBase.sol +26 -9
  18. package/contracts/oracles/PendlePtLpOracle.sol +4 -2
  19. package/contracts/oracles/samples/BoringLpGlpOracle.sol +2 -2
  20. package/contracts/oracles/samples/BoringPtUsdChainlinkOracle.sol +3 -3
  21. package/deployments/1-markets/APXETH-MAR2025.json +13 -0
  22. package/deployments/5000-core.json +30 -0
  23. package/package.json +1 -1
  24. package/typechain-types/IPPtLpOracle.ts +301 -0
  25. package/typechain-types/LimitRouterBase.ts +36 -0
  26. package/typechain-types/PendleLimitRouter.ts +36 -0
  27. package/typechain-types/factories/BoringLpGlpOracle__factory.ts +1 -1
  28. package/typechain-types/factories/BoringPtUsdChainlinkOracle__factory.ts +1 -1
  29. package/typechain-types/factories/IPPtLpOracle__factory.ts +166 -0
  30. package/typechain-types/factories/LimitRouterBase__factory.ts +96 -0
  31. package/typechain-types/factories/PendleApxETHSY__factory.ts +1 -1
  32. package/typechain-types/factories/PendleLimitRouter__factory.ts +97 -1
  33. package/typechain-types/factories/PendlePtLpOracle__factory.ts +1 -1
  34. package/typechain-types/hardhat.d.ts +4 -4
  35. package/typechain-types/index.ts +2 -2
  36. package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +0 -4
@@ -360,8 +360,8 @@
360
360
  "type": "function"
361
361
  }
362
362
  ],
363
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162002543380380620025438339810160408190526200003491620002d1565b600154600160a81b900460ff16158080156200005b575060018054600160a01b900460ff16105b806200007d5750303b1580156200007d575060018054600160a01b900460ff16145b620000e65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000114576001805460ff60a81b1916600160a81b1790555b6200011e62000179565b6200012982620001fc565b801562000171576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050620002fe565b600154600160a81b900460ff16620001e85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000dd565b600080546001600160a01b03191633179055565b6000546001600160a01b03163314620002585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000dd565b6103e861ffff821610156200028757604051632204277360e21b815261ffff82166004820152602401620000dd565b6032805461ffff191661ffff83169081179091556040519081527f30b0568b152eb73b8d1104ca045f37e64f7eae07b09ea9607ab1bdf475012c539060200160405180910390a150565b600060208284031215620002e457600080fd5b815161ffff81168114620002f757600080fd5b9392505050565b612235806200030e6000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c8063078dfbe7146100a957806340f25951146100be5780634d44ca89146100d15780634e71e0c8146100f757806358f6e5a1146100ff5780636cda98331461011a578063873e96001461012d5780638da5cb5b14610162578063a31426d114610182578063abca0eab14610195578063e30c3978146101a8578063fa040f64146101bb575b600080fd5b6100bc6100b7366004611b0f565b6101c4565b005b6100bc6100cc366004611b6a565b6102ca565b6100e46100df366004611b99565b610369565b6040519081526020015b60405180910390f35b6100bc610387565b60325461010d9061ffff1681565b6040516100ee9190611bd2565b6100e4610128366004611b99565b610432565b61014061013b366004611b99565b610447565b60408051931515845261ffff90921660208401521515908201526060016100ee565b600054610175906001600160a01b031681565b6040516100ee9190611be1565b6100e4610190366004611b99565b6105f6565b6100e46101a3366004611b99565b61060b565b600154610175906001600160a01b031681565b61010d6103e881565b6000546001600160a01b031633146101f75760405162461bcd60e51b81526004016101ee90611bf5565b60405180910390fd5b81156102a8576001600160a01b0383161515806102115750805b6102555760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101ee565b600080546040516001600160a01b03808716939216916000805160206121e083398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6000546001600160a01b031633146102f45760405162461bcd60e51b81526004016101ee90611bf5565b6103e861ffff8216101561031d5780604051632204277360e21b81526004016101ee9190611bd2565b6032805461ffff191661ffff83161790556040517f30b0568b152eb73b8d1104ca045f37e64f7eae07b09ea9607ab1bdf475012c539061035e908390611bd2565b60405180910390a150565b600061037e6001600160a01b03841683610620565b90505b92915050565b6001546001600160a01b03163381146103e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101ee565b600080546040516001600160a01b03808516939216916000805160206121e083398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600061037e6001600160a01b03841683610666565b600080600080600080876001600160a01b031663c3fb90d66040518163ffffffff1660e01b815260040160c060405180830381865afa15801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b29190611c3c565b9550955095505050506104c4876106ad565b61ffff80821690831610965094506000806001600160a01b038a1663252c09d7856104f0886001611ce0565b6104fa9190611d11565b6040518263ffffffff1660e01b81526004016105169190611bd2565b606060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105579190611d49565b9250509150806105d05760405163252c09d760e01b8152600060048201526001600160a01b038b169063252c09d790602401606060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190611d49565b50909250505b6105e063ffffffff8a1642611d87565b8263ffffffff1610955050505050509250925092565b600061037e6001600160a01b0384168361072c565b600061037e6001600160a01b03841683610778565b600080600061062e856107bb565b91509150600061063f8686846109eb565b905081831061065c576106528184610b82565b9350505050610381565b6106528183610b82565b6000806000610674856107bb565b9150915060006106858686846109eb565b9050818310610698579250610381915050565b816106a38483611d9a565b6106529190611db1565b603254600090819061ffff166001816106c86103e887611dc5565b6106d29190611de5565b6106dc9190611e02565b6106e69190611e1f565b6106f1906001611de5565b905061ffff63ffffffff8216111561038157604051632212b64b60e21b815263ffffffff8085166004830152821660248201526044016101ee565b600080600061073a856107bb565b9150915080821061076257610759826107538787610bb1565b90610b82565b92505050610381565b610759816107538787610bb1565b505092915050565b6000806000610786856107bb565b9150915080821061079b576107598585610bb1565b80826107a78787610bb1565b6107b19190611d9a565b6107599190611db1565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611e42565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190611e84565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190611e84565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190611e9d565b80156109c9575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be9190611eba565b6001600160801b0316145b156109d6578093506109e3565b6109e08582610c81565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b8152600401610a1b9190611be1565b61012060405180830381865afa158015610a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d9190611f5d565b90506000428260a0015111610a8d57610a7a848360200151610c97565b8251610a869190611fdf565b9050610b59565b6000610a9a838642610cdb565b9050600080610aaa89868a610ddc565b915091506000610ad3610ace856040015185610ac69190611fff565b865190610e4c565b610e6f565b90506000610b18610ae48385611284565b610af690670de0b6b3a7640000611fdf565b88516020880151610b08908690610e4c565b610b129190611fff565b90611284565b9050610b2e84828960000151610b129190611fdf565b610b388285611284565b8660200151610b479190611fff565b610b519190611fdf565b955050505050505b610b78610b7383604001518361128490919063ffffffff16565b6112aa565b9695505050505050565b600080610b97670de0b6b3a764000085611d9a565b9050828181610ba857610ba8611cfb565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611e84565b9050428111610c3057670de0b6b3a7640000915050610381565b6000610c3c85856112bd565b90506000610c4a4284611d87565b90506000610c5b610b7384846113e4565b9050610c6f670de0b6b3a764000082610b82565b945050505050610381565b5092915050565b6000818311610c90578161037e565b5090919050565b60008060008312610ca9576001610cad565b6000195b9050610cc9610cc485610cbf86611418565b61142a565b611449565b610cd3908261201f565b949350505050565b610d066040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210610d2a5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151610d3c9190611d87565b9050610d48858261145f565b82526020850151610d5a908590610c97565b602083015284511580610d6f57506020820151155b15610d9d578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044016101ee565b610dbb856000015186610100015184602001518560000151856114bb565b604083015260c0850151610dcf90826113e4565b6060830152509392505050565b600080610e07610df8610cc46001600160a01b03881686610bb1565b670de0b6b3a764000090611284565b91506000610e29856101000151428760a00151610e249190611d87565b6113e4565b90506002610e378483611fdf565b610e41919061204f565b915050935093915050565b600080610e59838561201f565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610e94575068070c1cc73b00c800008213155b610ed35760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016101ee565b6000821215610f0b57610ee882600003610e6f565b6a0c097ce7bc90715b34b9f160241b81610f0457610f04611cfb565b0592915050565b60006806f05b59d3b20000008312610f4957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610f7f565b6803782dace9d90000008312610f7b57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610f7f565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610fcf5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261100b576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261104557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261107f576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126110b857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126110f15768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261112a576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126111635768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080611299670de0b6b3a76400008561201f565b9050828181610e6657610e66611cfb565b6000808212156112b957600080fd5b5090565b6040805160028082526060820183526000928392919060208301908036833701905050905082816000815181106112f6576112f661207d565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061133a908590600401612093565b600060405180830381865afa158015611357573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261137f91908101906120dd565b90508363ffffffff168160008151811061139b5761139b61207d565b6020026020010151826001815181106113b6576113b661207d565b60200260200101516113c89190612189565b6113d291906121a9565b6001600160d81b031695945050505050565b6000806113f66201518061016d611d9a565b6114008486611d9a565b61140a9190611db1565b9050610cd3610ace82611449565b60008082136112b957610381826121c3565b6000670de0b6b3a764000061143f8484611d9a565b61037e9190611db1565b60006001600160ff1b038211156112b957600080fd5b600061146a82611449565b61147c610cc46201518061016d611d9a565b846080015161148b919061201f565b611495919061204f565b90506000811361038157604051630e520c3b60e11b8152600481018290526024016101ee565b6000806114c886846113e4565b9050670de0b6b3a76400008112156114f65760405163329e322960e21b8152600481018290526024016101ee565b600061150c611505878a611fdf565b8990611284565b905060006115198261153c565b90506115258187611284565b61152f9084611fff565b9998505050505050505050565b6000670de0b6b3a764000082036115665760405163a9c8b14d60e01b815260040160405180910390fd5b600061158461157d84670de0b6b3a7640000611fff565b8490611284565b905061158f81611596565b9392505050565b60008082136115d75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016101ee565b670c7d713b49da0000821380156115f55750670f43fc2c04ee000082125b1561161957670de0b6b3a764000061160c83611627565b81610f0457610f04611cfb565b61038182611746565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161166857611668611cfb565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a76400008212156117875761177e826a0c097ce7bc90715b34b9f160241b8161177857611778611cfb565b05611746565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126117d25772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611809576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611851576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831261188c576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126118c357693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126118fa57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831261192f5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261195a57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831261198f576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126119c4576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126119f8576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611a2c576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281611a5557611a55611cfb565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0381168114611afe57600080fd5b50565b8015158114611afe57600080fd5b600080600060608486031215611b2457600080fd5b8335611b2f81611ae9565b92506020840135611b3f81611b01565b91506040840135611b4f81611b01565b809150509250925092565b61ffff81168114611afe57600080fd5b600060208284031215611b7c57600080fd5b813561158f81611b5a565b63ffffffff81168114611afe57600080fd5b60008060408385031215611bac57600080fd5b8235611bb781611ae9565b91506020830135611bc781611b87565b809150509250929050565b61ffff91909116815260200190565b6001600160a01b0391909116815260200190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8051600f81900b811461162257600080fd5b60008060008060008060c08789031215611c5557600080fd5b611c5e87611c2a565b9550611c6c60208801611c2a565b60408801519095506001600160601b0381168114611c8957600080fd5b6060880151909450611c9a81611b5a565b6080880151909350611cab81611b5a565b60a0880151909250611cbc81611b5a565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115610c7a57610c7a611cca565b634e487b7160e01b600052601260045260246000fd5b600061ffff80841680611d2657611d26611cfb565b92169190910692915050565b80516001600160d81b038116811461162257600080fd5b600080600060608486031215611d5e57600080fd5b8351611d6981611b87565b9250611d7760208501611d32565b91506040840151611b4f81611b01565b8181038181111561038157610381611cca565b808202811582820484141761038157610381611cca565b600082611dc057611dc0611cfb565b500490565b63ffffffff81811683821602808216919082811461077057610770611cca565b63ffffffff818116838216019080821115610c7a57610c7a611cca565b63ffffffff828116828216039080821115610c7a57610c7a611cca565b600063ffffffff80841680611e3657611e36611cfb565b92169190910492915050565b600080600060608486031215611e5757600080fd5b8351611e6281611ae9565b6020850151909350611e7381611ae9565b6040850151909250611b4f81611ae9565b600060208284031215611e9657600080fd5b5051919050565b600060208284031215611eaf57600080fd5b815161158f81611b01565b600060208284031215611ecc57600080fd5b81516001600160801b038116811461158f57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715611f1c57611f1c611ee3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f4a57611f4a611ee3565b604052919050565b805161162281611ae9565b60006101208284031215611f7057600080fd5b611f78611ef9565b825181526020830151602082015260408301516040820152611f9c60608401611f52565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171561077057610770611cca565b8181036000831280158383131683831282161715610c7a57610c7a611cca565b80820260008212600160ff1b8414161561203b5761203b611cca565b818105831482151761038157610381611cca565b60008261205e5761205e611cfb565b600160ff1b82146000198414161561207857612078611cca565b500590565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156120d157835163ffffffff16835292840192918401916001016120af565b50909695505050505050565b600060208083850312156120f057600080fd5b82516001600160401b038082111561210757600080fd5b818501915085601f83011261211b57600080fd5b81518181111561212d5761212d611ee3565b8060051b915061213e848301611f22565b818152918301840191848101908884111561215857600080fd5b938501935b8385101561217d5761216e85611d32565b8252938501939085019061215d565b98975050505050505050565b6001600160d81b03828116828216039080821115610c7a57610c7a611cca565b60006001600160d81b0383811680611e3657611e36611cfb565b6000600160ff1b82016121d8576121d8611cca565b506000039056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212208385aad9ada9d16ae6a3e4bf5a32b749aa29cde647a6e0bc72333a61705cdfc064736f6c63430008170033",
364
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a45760003560e01c8063078dfbe7146100a957806340f25951146100be5780634d44ca89146100d15780634e71e0c8146100f757806358f6e5a1146100ff5780636cda98331461011a578063873e96001461012d5780638da5cb5b14610162578063a31426d114610182578063abca0eab14610195578063e30c3978146101a8578063fa040f64146101bb575b600080fd5b6100bc6100b7366004611b0f565b6101c4565b005b6100bc6100cc366004611b6a565b6102ca565b6100e46100df366004611b99565b610369565b6040519081526020015b60405180910390f35b6100bc610387565b60325461010d9061ffff1681565b6040516100ee9190611bd2565b6100e4610128366004611b99565b610432565b61014061013b366004611b99565b610447565b60408051931515845261ffff90921660208401521515908201526060016100ee565b600054610175906001600160a01b031681565b6040516100ee9190611be1565b6100e4610190366004611b99565b6105f6565b6100e46101a3366004611b99565b61060b565b600154610175906001600160a01b031681565b61010d6103e881565b6000546001600160a01b031633146101f75760405162461bcd60e51b81526004016101ee90611bf5565b60405180910390fd5b81156102a8576001600160a01b0383161515806102115750805b6102555760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101ee565b600080546040516001600160a01b03808716939216916000805160206121e083398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6000546001600160a01b031633146102f45760405162461bcd60e51b81526004016101ee90611bf5565b6103e861ffff8216101561031d5780604051632204277360e21b81526004016101ee9190611bd2565b6032805461ffff191661ffff83161790556040517f30b0568b152eb73b8d1104ca045f37e64f7eae07b09ea9607ab1bdf475012c539061035e908390611bd2565b60405180910390a150565b600061037e6001600160a01b03841683610620565b90505b92915050565b6001546001600160a01b03163381146103e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101ee565b600080546040516001600160a01b03808516939216916000805160206121e083398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600061037e6001600160a01b03841683610666565b600080600080600080876001600160a01b031663c3fb90d66040518163ffffffff1660e01b815260040160c060405180830381865afa15801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b29190611c3c565b9550955095505050506104c4876106ad565b61ffff80821690831610965094506000806001600160a01b038a1663252c09d7856104f0886001611ce0565b6104fa9190611d11565b6040518263ffffffff1660e01b81526004016105169190611bd2565b606060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105579190611d49565b9250509150806105d05760405163252c09d760e01b8152600060048201526001600160a01b038b169063252c09d790602401606060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190611d49565b50909250505b6105e063ffffffff8a1642611d87565b8263ffffffff1610955050505050509250925092565b600061037e6001600160a01b0384168361072c565b600061037e6001600160a01b03841683610778565b600080600061062e856107bb565b91509150600061063f8686846109eb565b905081831061065c576106528184610b82565b9350505050610381565b6106528183610b82565b6000806000610674856107bb565b9150915060006106858686846109eb565b9050818310610698579250610381915050565b816106a38483611d9a565b6106529190611db1565b603254600090819061ffff166001816106c86103e887611dc5565b6106d29190611de5565b6106dc9190611e02565b6106e69190611e1f565b6106f1906001611de5565b905061ffff63ffffffff8216111561038157604051632212b64b60e21b815263ffffffff8085166004830152821660248201526044016101ee565b600080600061073a856107bb565b9150915080821061076257610759826107538787610bb1565b90610b82565b92505050610381565b610759816107538787610bb1565b505092915050565b6000806000610786856107bb565b9150915080821061079b576107598585610bb1565b80826107a78787610bb1565b6107b19190611d9a565b6107599190611db1565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611e42565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190611e84565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190611e84565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190611e9d565b80156109c9575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be9190611eba565b6001600160801b0316145b156109d6578093506109e3565b6109e08582610c81565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b8152600401610a1b9190611be1565b61012060405180830381865afa158015610a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d9190611f5d565b90506000428260a0015111610a8d57610a7a848360200151610c97565b8251610a869190611fdf565b9050610b59565b6000610a9a838642610cdb565b9050600080610aaa89868a610ddc565b915091506000610ad3610ace856040015185610ac69190611fff565b865190610e4c565b610e6f565b90506000610b18610ae48385611284565b610af690670de0b6b3a7640000611fdf565b88516020880151610b08908690610e4c565b610b129190611fff565b90611284565b9050610b2e84828960000151610b129190611fdf565b610b388285611284565b8660200151610b479190611fff565b610b519190611fdf565b955050505050505b610b78610b7383604001518361128490919063ffffffff16565b6112aa565b9695505050505050565b600080610b97670de0b6b3a764000085611d9a565b9050828181610ba857610ba8611cfb565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611e84565b9050428111610c3057670de0b6b3a7640000915050610381565b6000610c3c85856112bd565b90506000610c4a4284611d87565b90506000610c5b610b7384846113e4565b9050610c6f670de0b6b3a764000082610b82565b945050505050610381565b5092915050565b6000818311610c90578161037e565b5090919050565b60008060008312610ca9576001610cad565b6000195b9050610cc9610cc485610cbf86611418565b61142a565b611449565b610cd3908261201f565b949350505050565b610d066040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210610d2a5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151610d3c9190611d87565b9050610d48858261145f565b82526020850151610d5a908590610c97565b602083015284511580610d6f57506020820151155b15610d9d578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044016101ee565b610dbb856000015186610100015184602001518560000151856114bb565b604083015260c0850151610dcf90826113e4565b6060830152509392505050565b600080610e07610df8610cc46001600160a01b03881686610bb1565b670de0b6b3a764000090611284565b91506000610e29856101000151428760a00151610e249190611d87565b6113e4565b90506002610e378483611fdf565b610e41919061204f565b915050935093915050565b600080610e59838561201f565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610e94575068070c1cc73b00c800008213155b610ed35760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016101ee565b6000821215610f0b57610ee882600003610e6f565b6a0c097ce7bc90715b34b9f160241b81610f0457610f04611cfb565b0592915050565b60006806f05b59d3b20000008312610f4957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610f7f565b6803782dace9d90000008312610f7b57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610f7f565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610fcf5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261100b576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261104557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261107f576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126110b857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126110f15768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261112a576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126111635768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080611299670de0b6b3a76400008561201f565b9050828181610e6657610e66611cfb565b6000808212156112b957600080fd5b5090565b6040805160028082526060820183526000928392919060208301908036833701905050905082816000815181106112f6576112f661207d565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061133a908590600401612093565b600060405180830381865afa158015611357573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261137f91908101906120dd565b90508363ffffffff168160008151811061139b5761139b61207d565b6020026020010151826001815181106113b6576113b661207d565b60200260200101516113c89190612189565b6113d291906121a9565b6001600160d81b031695945050505050565b6000806113f66201518061016d611d9a565b6114008486611d9a565b61140a9190611db1565b9050610cd3610ace82611449565b60008082136112b957610381826121c3565b6000670de0b6b3a764000061143f8484611d9a565b61037e9190611db1565b60006001600160ff1b038211156112b957600080fd5b600061146a82611449565b61147c610cc46201518061016d611d9a565b846080015161148b919061201f565b611495919061204f565b90506000811361038157604051630e520c3b60e11b8152600481018290526024016101ee565b6000806114c886846113e4565b9050670de0b6b3a76400008112156114f65760405163329e322960e21b8152600481018290526024016101ee565b600061150c611505878a611fdf565b8990611284565b905060006115198261153c565b90506115258187611284565b61152f9084611fff565b9998505050505050505050565b6000670de0b6b3a764000082036115665760405163a9c8b14d60e01b815260040160405180910390fd5b600061158461157d84670de0b6b3a7640000611fff565b8490611284565b905061158f81611596565b9392505050565b60008082136115d75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016101ee565b670c7d713b49da0000821380156115f55750670f43fc2c04ee000082125b1561161957670de0b6b3a764000061160c83611627565b81610f0457610f04611cfb565b61038182611746565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161166857611668611cfb565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a76400008212156117875761177e826a0c097ce7bc90715b34b9f160241b8161177857611778611cfb565b05611746565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126117d25772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611809576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611851576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831261188c576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126118c357693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126118fa57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831261192f5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261195a57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831261198f576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126119c4576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126119f8576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611a2c576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281611a5557611a55611cfb565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0381168114611afe57600080fd5b50565b8015158114611afe57600080fd5b600080600060608486031215611b2457600080fd5b8335611b2f81611ae9565b92506020840135611b3f81611b01565b91506040840135611b4f81611b01565b809150509250925092565b61ffff81168114611afe57600080fd5b600060208284031215611b7c57600080fd5b813561158f81611b5a565b63ffffffff81168114611afe57600080fd5b60008060408385031215611bac57600080fd5b8235611bb781611ae9565b91506020830135611bc781611b87565b809150509250929050565b61ffff91909116815260200190565b6001600160a01b0391909116815260200190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8051600f81900b811461162257600080fd5b60008060008060008060c08789031215611c5557600080fd5b611c5e87611c2a565b9550611c6c60208801611c2a565b60408801519095506001600160601b0381168114611c8957600080fd5b6060880151909450611c9a81611b5a565b6080880151909350611cab81611b5a565b60a0880151909250611cbc81611b5a565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115610c7a57610c7a611cca565b634e487b7160e01b600052601260045260246000fd5b600061ffff80841680611d2657611d26611cfb565b92169190910692915050565b80516001600160d81b038116811461162257600080fd5b600080600060608486031215611d5e57600080fd5b8351611d6981611b87565b9250611d7760208501611d32565b91506040840151611b4f81611b01565b8181038181111561038157610381611cca565b808202811582820484141761038157610381611cca565b600082611dc057611dc0611cfb565b500490565b63ffffffff81811683821602808216919082811461077057610770611cca565b63ffffffff818116838216019080821115610c7a57610c7a611cca565b63ffffffff828116828216039080821115610c7a57610c7a611cca565b600063ffffffff80841680611e3657611e36611cfb565b92169190910492915050565b600080600060608486031215611e5757600080fd5b8351611e6281611ae9565b6020850151909350611e7381611ae9565b6040850151909250611b4f81611ae9565b600060208284031215611e9657600080fd5b5051919050565b600060208284031215611eaf57600080fd5b815161158f81611b01565b600060208284031215611ecc57600080fd5b81516001600160801b038116811461158f57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715611f1c57611f1c611ee3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f4a57611f4a611ee3565b604052919050565b805161162281611ae9565b60006101208284031215611f7057600080fd5b611f78611ef9565b825181526020830151602082015260408301516040820152611f9c60608401611f52565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171561077057610770611cca565b8181036000831280158383131683831282161715610c7a57610c7a611cca565b80820260008212600160ff1b8414161561203b5761203b611cca565b818105831482151761038157610381611cca565b60008261205e5761205e611cfb565b600160ff1b82146000198414161561207857612078611cca565b500590565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156120d157835163ffffffff16835292840192918401916001016120af565b50909695505050505050565b600060208083850312156120f057600080fd5b82516001600160401b038082111561210757600080fd5b818501915085601f83011261211b57600080fd5b81518181111561212d5761212d611ee3565b8060051b915061213e848301611f22565b818152918301840191848101908884111561215857600080fd5b938501935b8385101561217d5761216e85611d32565b8252938501939085019061215d565b98975050505050505050565b6001600160d81b03828116828216039080821115610c7a57610c7a611cca565b60006001600160d81b0383811680611e3657611e36611cfb565b6000600160ff1b82016121d8576121d8611cca565b506000039056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212208385aad9ada9d16ae6a3e4bf5a32b749aa29cde647a6e0bc72333a61705cdfc064736f6c63430008170033",
363
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162002543380380620025438339810160408190526200003491620002d1565b600154600160a81b900460ff16158080156200005b575060018054600160a01b900460ff16105b806200007d5750303b1580156200007d575060018054600160a01b900460ff16145b620000e65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000114576001805460ff60a81b1916600160a81b1790555b6200011e62000179565b6200012982620001fc565b801562000171576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050620002fe565b600154600160a81b900460ff16620001e85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000dd565b600080546001600160a01b03191633179055565b6000546001600160a01b03163314620002585760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000dd565b6103e861ffff821610156200028757604051632204277360e21b815261ffff82166004820152602401620000dd565b6032805461ffff191661ffff83169081179091556040519081527f30b0568b152eb73b8d1104ca045f37e64f7eae07b09ea9607ab1bdf475012c539060200160405180910390a150565b600060208284031215620002e457600080fd5b815161ffff81168114620002f757600080fd5b9392505050565b612235806200030e6000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c8063078dfbe7146100a957806340f25951146100be5780634d44ca89146100d15780634e71e0c8146100f757806358f6e5a1146100ff5780636cda98331461011a578063873e96001461012d5780638da5cb5b14610162578063a31426d114610182578063abca0eab14610195578063e30c3978146101a8578063fa040f64146101bb575b600080fd5b6100bc6100b7366004611b0f565b6101c4565b005b6100bc6100cc366004611b6a565b6102ca565b6100e46100df366004611b99565b610369565b6040519081526020015b60405180910390f35b6100bc610387565b60325461010d9061ffff1681565b6040516100ee9190611bd2565b6100e4610128366004611b99565b610432565b61014061013b366004611b99565b610447565b60408051931515845261ffff90921660208401521515908201526060016100ee565b600054610175906001600160a01b031681565b6040516100ee9190611be1565b6100e4610190366004611b99565b6105f6565b6100e46101a3366004611b99565b61060b565b600154610175906001600160a01b031681565b61010d6103e881565b6000546001600160a01b031633146101f75760405162461bcd60e51b81526004016101ee90611bf5565b60405180910390fd5b81156102a8576001600160a01b0383161515806102115750805b6102555760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101ee565b600080546040516001600160a01b03808716939216916000805160206121e083398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6000546001600160a01b031633146102f45760405162461bcd60e51b81526004016101ee90611bf5565b6103e861ffff8216101561031d5780604051632204277360e21b81526004016101ee9190611bd2565b6032805461ffff191661ffff83161790556040517f30b0568b152eb73b8d1104ca045f37e64f7eae07b09ea9607ab1bdf475012c539061035e908390611bd2565b60405180910390a150565b600061037e6001600160a01b03841683610620565b90505b92915050565b6001546001600160a01b03163381146103e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101ee565b600080546040516001600160a01b03808516939216916000805160206121e083398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600061037e6001600160a01b03841683610666565b600080600080600080876001600160a01b031663c3fb90d66040518163ffffffff1660e01b815260040160c060405180830381865afa15801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b29190611c3c565b9550955095505050506104c4876106ad565b61ffff80821690831610965094506000806001600160a01b038a1663252c09d7856104f0886001611ce0565b6104fa9190611d11565b6040518263ffffffff1660e01b81526004016105169190611bd2565b606060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105579190611d49565b9250509150806105d05760405163252c09d760e01b8152600060048201526001600160a01b038b169063252c09d790602401606060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190611d49565b50909250505b6105e063ffffffff8a1642611d87565b8263ffffffff1610955050505050509250925092565b600061037e6001600160a01b0384168361072c565b600061037e6001600160a01b03841683610778565b600080600061062e856107bb565b91509150600061063f8686846109eb565b905081831061065c576106528184610b82565b9350505050610381565b6106528183610b82565b6000806000610674856107bb565b9150915060006106858686846109eb565b9050818310610698579250610381915050565b816106a38483611d9a565b6106529190611db1565b603254600090819061ffff166001816106c86103e887611dc5565b6106d29190611de5565b6106dc9190611e02565b6106e69190611e1f565b6106f1906001611de5565b905061ffff63ffffffff8216111561038157604051632212b64b60e21b815263ffffffff8085166004830152821660248201526044016101ee565b600080600061073a856107bb565b9150915080821061076257610759826107538787610bb1565b90610b82565b92505050610381565b610759816107538787610bb1565b505092915050565b6000806000610786856107bb565b9150915080821061079b576107598585610bb1565b80826107a78787610bb1565b6107b19190611d9a565b6107599190611db1565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611e42565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190611e84565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190611e84565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190611e9d565b80156109c9575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be9190611eba565b6001600160801b0316145b156109d6578093506109e3565b6109e08582610c81565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b8152600401610a1b9190611be1565b61012060405180830381865afa158015610a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d9190611f5d565b90506000428260a0015111610a8d57610a7a848360200151610c97565b8251610a869190611fdf565b9050610b59565b6000610a9a838642610cdb565b9050600080610aaa89868a610ddc565b915091506000610ad3610ace856040015185610ac69190611fff565b865190610e4c565b610e6f565b90506000610b18610ae48385611284565b610af690670de0b6b3a7640000611fdf565b88516020880151610b08908690610e4c565b610b129190611fff565b90611284565b9050610b2e84828960000151610b129190611fdf565b610b388285611284565b8660200151610b479190611fff565b610b519190611fdf565b955050505050505b610b78610b7383604001518361128490919063ffffffff16565b6112aa565b9695505050505050565b600080610b97670de0b6b3a764000085611d9a565b9050828181610ba857610ba8611cfb565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611e84565b9050428111610c3057670de0b6b3a7640000915050610381565b6000610c3c85856112bd565b90506000610c4a4284611d87565b90506000610c5b610b7384846113e4565b9050610c6f670de0b6b3a764000082610b82565b945050505050610381565b5092915050565b6000818311610c90578161037e565b5090919050565b60008060008312610ca9576001610cad565b6000195b9050610cc9610cc485610cbf86611418565b61142a565b611449565b610cd3908261201f565b949350505050565b610d066040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210610d2a5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151610d3c9190611d87565b9050610d48858261145f565b82526020850151610d5a908590610c97565b602083015284511580610d6f57506020820151155b15610d9d578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044016101ee565b610dbb856000015186610100015184602001518560000151856114bb565b604083015260c0850151610dcf90826113e4565b6060830152509392505050565b600080610e07610df8610cc46001600160a01b03881686610bb1565b670de0b6b3a764000090611284565b91506000610e29856101000151428760a00151610e249190611d87565b6113e4565b90506002610e378483611fdf565b610e41919061204f565b915050935093915050565b600080610e59838561201f565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610e94575068070c1cc73b00c800008213155b610ed35760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016101ee565b6000821215610f0b57610ee882600003610e6f565b6a0c097ce7bc90715b34b9f160241b81610f0457610f04611cfb565b0592915050565b60006806f05b59d3b20000008312610f4957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610f7f565b6803782dace9d90000008312610f7b57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610f7f565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610fcf5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261100b576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261104557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261107f576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126110b857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126110f15768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261112a576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126111635768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080611299670de0b6b3a76400008561201f565b9050828181610e6657610e66611cfb565b6000808212156112b957600080fd5b5090565b6040805160028082526060820183526000928392919060208301908036833701905050905082816000815181106112f6576112f661207d565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061133a908590600401612093565b600060405180830381865afa158015611357573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261137f91908101906120dd565b90508363ffffffff168160008151811061139b5761139b61207d565b6020026020010151826001815181106113b6576113b661207d565b60200260200101516113c89190612189565b6113d291906121a9565b6001600160d81b031695945050505050565b6000806113f66201518061016d611d9a565b6114008486611d9a565b61140a9190611db1565b9050610cd3610ace82611449565b60008082136112b957610381826121c3565b6000670de0b6b3a764000061143f8484611d9a565b61037e9190611db1565b60006001600160ff1b038211156112b957600080fd5b600061146a82611449565b61147c610cc46201518061016d611d9a565b846080015161148b919061201f565b611495919061204f565b90506000811361038157604051630e520c3b60e11b8152600481018290526024016101ee565b6000806114c886846113e4565b9050670de0b6b3a76400008112156114f65760405163329e322960e21b8152600481018290526024016101ee565b600061150c611505878a611fdf565b8990611284565b905060006115198261153c565b90506115258187611284565b61152f9084611fff565b9998505050505050505050565b6000670de0b6b3a764000082036115665760405163a9c8b14d60e01b815260040160405180910390fd5b600061158461157d84670de0b6b3a7640000611fff565b8490611284565b905061158f81611596565b9392505050565b60008082136115d75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016101ee565b670c7d713b49da0000821380156115f55750670f43fc2c04ee000082125b1561161957670de0b6b3a764000061160c83611627565b81610f0457610f04611cfb565b61038182611746565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161166857611668611cfb565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a76400008212156117875761177e826a0c097ce7bc90715b34b9f160241b8161177857611778611cfb565b05611746565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126117d25772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611809576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611851576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831261188c576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126118c357693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126118fa57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831261192f5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261195a57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831261198f576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126119c4576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126119f8576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611a2c576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281611a5557611a55611cfb565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0381168114611afe57600080fd5b50565b8015158114611afe57600080fd5b600080600060608486031215611b2457600080fd5b8335611b2f81611ae9565b92506020840135611b3f81611b01565b91506040840135611b4f81611b01565b809150509250925092565b61ffff81168114611afe57600080fd5b600060208284031215611b7c57600080fd5b813561158f81611b5a565b63ffffffff81168114611afe57600080fd5b60008060408385031215611bac57600080fd5b8235611bb781611ae9565b91506020830135611bc781611b87565b809150509250929050565b61ffff91909116815260200190565b6001600160a01b0391909116815260200190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8051600f81900b811461162257600080fd5b60008060008060008060c08789031215611c5557600080fd5b611c5e87611c2a565b9550611c6c60208801611c2a565b60408801519095506001600160601b0381168114611c8957600080fd5b6060880151909450611c9a81611b5a565b6080880151909350611cab81611b5a565b60a0880151909250611cbc81611b5a565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115610c7a57610c7a611cca565b634e487b7160e01b600052601260045260246000fd5b600061ffff80841680611d2657611d26611cfb565b92169190910692915050565b80516001600160d81b038116811461162257600080fd5b600080600060608486031215611d5e57600080fd5b8351611d6981611b87565b9250611d7760208501611d32565b91506040840151611b4f81611b01565b8181038181111561038157610381611cca565b808202811582820484141761038157610381611cca565b600082611dc057611dc0611cfb565b500490565b63ffffffff81811683821602808216919082811461077057610770611cca565b63ffffffff818116838216019080821115610c7a57610c7a611cca565b63ffffffff828116828216039080821115610c7a57610c7a611cca565b600063ffffffff80841680611e3657611e36611cfb565b92169190910492915050565b600080600060608486031215611e5757600080fd5b8351611e6281611ae9565b6020850151909350611e7381611ae9565b6040850151909250611b4f81611ae9565b600060208284031215611e9657600080fd5b5051919050565b600060208284031215611eaf57600080fd5b815161158f81611b01565b600060208284031215611ecc57600080fd5b81516001600160801b038116811461158f57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715611f1c57611f1c611ee3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f4a57611f4a611ee3565b604052919050565b805161162281611ae9565b60006101208284031215611f7057600080fd5b611f78611ef9565b825181526020830151602082015260408301516040820152611f9c60608401611f52565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171561077057610770611cca565b8181036000831280158383131683831282161715610c7a57610c7a611cca565b80820260008212600160ff1b8414161561203b5761203b611cca565b818105831482151761038157610381611cca565b60008261205e5761205e611cfb565b600160ff1b82146000198414161561207857612078611cca565b500590565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156120d157835163ffffffff16835292840192918401916001016120af565b50909695505050505050565b600060208083850312156120f057600080fd5b82516001600160401b038082111561210757600080fd5b818501915085601f83011261211b57600080fd5b81518181111561212d5761212d611ee3565b8060051b915061213e848301611f22565b818152918301840191848101908884111561215857600080fd5b938501935b8385101561217d5761216e85611d32565b8252938501939085019061215d565b98975050505050505050565b6001600160d81b03828116828216039080821115610c7a57610c7a611cca565b60006001600160d81b0383811680611e3657611e36611cfb565b6000600160ff1b82016121d8576121d8611cca565b506000039056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212204052703970fb93fb52470fd11020fd868bf33e26537cbd9bbe9b3feaebd402b064736f6c63430008170033",
364
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a45760003560e01c8063078dfbe7146100a957806340f25951146100be5780634d44ca89146100d15780634e71e0c8146100f757806358f6e5a1146100ff5780636cda98331461011a578063873e96001461012d5780638da5cb5b14610162578063a31426d114610182578063abca0eab14610195578063e30c3978146101a8578063fa040f64146101bb575b600080fd5b6100bc6100b7366004611b0f565b6101c4565b005b6100bc6100cc366004611b6a565b6102ca565b6100e46100df366004611b99565b610369565b6040519081526020015b60405180910390f35b6100bc610387565b60325461010d9061ffff1681565b6040516100ee9190611bd2565b6100e4610128366004611b99565b610432565b61014061013b366004611b99565b610447565b60408051931515845261ffff90921660208401521515908201526060016100ee565b600054610175906001600160a01b031681565b6040516100ee9190611be1565b6100e4610190366004611b99565b6105f6565b6100e46101a3366004611b99565b61060b565b600154610175906001600160a01b031681565b61010d6103e881565b6000546001600160a01b031633146101f75760405162461bcd60e51b81526004016101ee90611bf5565b60405180910390fd5b81156102a8576001600160a01b0383161515806102115750805b6102555760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101ee565b600080546040516001600160a01b03808716939216916000805160206121e083398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0385166001600160a01b0319909116179055505050565b6000546001600160a01b031633146102f45760405162461bcd60e51b81526004016101ee90611bf5565b6103e861ffff8216101561031d5780604051632204277360e21b81526004016101ee9190611bd2565b6032805461ffff191661ffff83161790556040517f30b0568b152eb73b8d1104ca045f37e64f7eae07b09ea9607ab1bdf475012c539061035e908390611bd2565b60405180910390a150565b600061037e6001600160a01b03841683610620565b90505b92915050565b6001546001600160a01b03163381146103e25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101ee565b600080546040516001600160a01b03808516939216916000805160206121e083398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600061037e6001600160a01b03841683610666565b600080600080600080876001600160a01b031663c3fb90d66040518163ffffffff1660e01b815260040160c060405180830381865afa15801561048e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b29190611c3c565b9550955095505050506104c4876106ad565b61ffff80821690831610965094506000806001600160a01b038a1663252c09d7856104f0886001611ce0565b6104fa9190611d11565b6040518263ffffffff1660e01b81526004016105169190611bd2565b606060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105579190611d49565b9250509150806105d05760405163252c09d760e01b8152600060048201526001600160a01b038b169063252c09d790602401606060405180830381865afa1580156105a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ca9190611d49565b50909250505b6105e063ffffffff8a1642611d87565b8263ffffffff1610955050505050509250925092565b600061037e6001600160a01b0384168361072c565b600061037e6001600160a01b03841683610778565b600080600061062e856107bb565b91509150600061063f8686846109eb565b905081831061065c576106528184610b82565b9350505050610381565b6106528183610b82565b6000806000610674856107bb565b9150915060006106858686846109eb565b9050818310610698579250610381915050565b816106a38483611d9a565b6106529190611db1565b603254600090819061ffff166001816106c86103e887611dc5565b6106d29190611de5565b6106dc9190611e02565b6106e69190611e1f565b6106f1906001611de5565b905061ffff63ffffffff8216111561038157604051632212b64b60e21b815263ffffffff8085166004830152821660248201526044016101ee565b600080600061073a856107bb565b9150915080821061076257610759826107538787610bb1565b90610b82565b92505050610381565b610759816107538787610bb1565b505092915050565b6000806000610786856107bb565b9150915080821061079b576107598585610bb1565b80826107a78787610bb1565b6107b19190611d9a565b6107599190611db1565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611e42565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190611e84565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190611e84565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190611e9d565b80156109c9575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be9190611eba565b6001600160801b0316145b156109d6578093506109e3565b6109e08582610c81565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b8152600401610a1b9190611be1565b61012060405180830381865afa158015610a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d9190611f5d565b90506000428260a0015111610a8d57610a7a848360200151610c97565b8251610a869190611fdf565b9050610b59565b6000610a9a838642610cdb565b9050600080610aaa89868a610ddc565b915091506000610ad3610ace856040015185610ac69190611fff565b865190610e4c565b610e6f565b90506000610b18610ae48385611284565b610af690670de0b6b3a7640000611fdf565b88516020880151610b08908690610e4c565b610b129190611fff565b90611284565b9050610b2e84828960000151610b129190611fdf565b610b388285611284565b8660200151610b479190611fff565b610b519190611fdf565b955050505050505b610b78610b7383604001518361128490919063ffffffff16565b6112aa565b9695505050505050565b600080610b97670de0b6b3a764000085611d9a565b9050828181610ba857610ba8611cfb565b04949350505050565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c169190611e84565b9050428111610c3057670de0b6b3a7640000915050610381565b6000610c3c85856112bd565b90506000610c4a4284611d87565b90506000610c5b610b7384846113e4565b9050610c6f670de0b6b3a764000082610b82565b945050505050610381565b5092915050565b6000818311610c90578161037e565b5090919050565b60008060008312610ca9576001610cad565b6000195b9050610cc9610cc485610cbf86611418565b61142a565b611449565b610cd3908261201f565b949350505050565b610d066040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210610d2a5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151610d3c9190611d87565b9050610d48858261145f565b82526020850151610d5a908590610c97565b602083015284511580610d6f57506020820151155b15610d9d578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044016101ee565b610dbb856000015186610100015184602001518560000151856114bb565b604083015260c0850151610dcf90826113e4565b6060830152509392505050565b600080610e07610df8610cc46001600160a01b03881686610bb1565b670de0b6b3a764000090611284565b91506000610e29856101000151428760a00151610e249190611d87565b6113e4565b90506002610e378483611fdf565b610e41919061204f565b915050935093915050565b600080610e59838561201f565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610e94575068070c1cc73b00c800008213155b610ed35760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016101ee565b6000821215610f0b57610ee882600003610e6f565b6a0c097ce7bc90715b34b9f160241b81610f0457610f04611cfb565b0592915050565b60006806f05b59d3b20000008312610f4957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610f7f565b6803782dace9d90000008312610f7b57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610f7f565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610fcf5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261100b576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261104557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c400000841261107f576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126110b857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126110f15768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261112a576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126111635768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080611299670de0b6b3a76400008561201f565b9050828181610e6657610e66611cfb565b6000808212156112b957600080fd5b5090565b6040805160028082526060820183526000928392919060208301908036833701905050905082816000815181106112f6576112f661207d565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061133a908590600401612093565b600060405180830381865afa158015611357573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261137f91908101906120dd565b90508363ffffffff168160008151811061139b5761139b61207d565b6020026020010151826001815181106113b6576113b661207d565b60200260200101516113c89190612189565b6113d291906121a9565b6001600160d81b031695945050505050565b6000806113f66201518061016d611d9a565b6114008486611d9a565b61140a9190611db1565b9050610cd3610ace82611449565b60008082136112b957610381826121c3565b6000670de0b6b3a764000061143f8484611d9a565b61037e9190611db1565b60006001600160ff1b038211156112b957600080fd5b600061146a82611449565b61147c610cc46201518061016d611d9a565b846080015161148b919061201f565b611495919061204f565b90506000811361038157604051630e520c3b60e11b8152600481018290526024016101ee565b6000806114c886846113e4565b9050670de0b6b3a76400008112156114f65760405163329e322960e21b8152600481018290526024016101ee565b600061150c611505878a611fdf565b8990611284565b905060006115198261153c565b90506115258187611284565b61152f9084611fff565b9998505050505050505050565b6000670de0b6b3a764000082036115665760405163a9c8b14d60e01b815260040160405180910390fd5b600061158461157d84670de0b6b3a7640000611fff565b8490611284565b905061158f81611596565b9392505050565b60008082136115d75760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016101ee565b670c7d713b49da0000821380156115f55750670f43fc2c04ee000082125b1561161957670de0b6b3a764000061160c83611627565b81610f0457610f04611cfb565b61038182611746565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161166857611668611cfb565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a76400008212156117875761177e826a0c097ce7bc90715b34b9f160241b8161177857611778611cfb565b05611746565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126117d25772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611809576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611851576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a700831261188c576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126118c357693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126118fa57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831261192f5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261195a57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831261198f576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126119c4576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126119f8576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611a2c576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d631000008086030281611a5557611a55611cfb565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0381168114611afe57600080fd5b50565b8015158114611afe57600080fd5b600080600060608486031215611b2457600080fd5b8335611b2f81611ae9565b92506020840135611b3f81611b01565b91506040840135611b4f81611b01565b809150509250925092565b61ffff81168114611afe57600080fd5b600060208284031215611b7c57600080fd5b813561158f81611b5a565b63ffffffff81168114611afe57600080fd5b60008060408385031215611bac57600080fd5b8235611bb781611ae9565b91506020830135611bc781611b87565b809150509250929050565b61ffff91909116815260200190565b6001600160a01b0391909116815260200190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8051600f81900b811461162257600080fd5b60008060008060008060c08789031215611c5557600080fd5b611c5e87611c2a565b9550611c6c60208801611c2a565b60408801519095506001600160601b0381168114611c8957600080fd5b6060880151909450611c9a81611b5a565b6080880151909350611cab81611b5a565b60a0880151909250611cbc81611b5a565b809150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115610c7a57610c7a611cca565b634e487b7160e01b600052601260045260246000fd5b600061ffff80841680611d2657611d26611cfb565b92169190910692915050565b80516001600160d81b038116811461162257600080fd5b600080600060608486031215611d5e57600080fd5b8351611d6981611b87565b9250611d7760208501611d32565b91506040840151611b4f81611b01565b8181038181111561038157610381611cca565b808202811582820484141761038157610381611cca565b600082611dc057611dc0611cfb565b500490565b63ffffffff81811683821602808216919082811461077057610770611cca565b63ffffffff818116838216019080821115610c7a57610c7a611cca565b63ffffffff828116828216039080821115610c7a57610c7a611cca565b600063ffffffff80841680611e3657611e36611cfb565b92169190910492915050565b600080600060608486031215611e5757600080fd5b8351611e6281611ae9565b6020850151909350611e7381611ae9565b6040850151909250611b4f81611ae9565b600060208284031215611e9657600080fd5b5051919050565b600060208284031215611eaf57600080fd5b815161158f81611b01565b600060208284031215611ecc57600080fd5b81516001600160801b038116811461158f57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715611f1c57611f1c611ee3565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f4a57611f4a611ee3565b604052919050565b805161162281611ae9565b60006101208284031215611f7057600080fd5b611f78611ef9565b825181526020830151602082015260408301516040820152611f9c60608401611f52565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171561077057610770611cca565b8181036000831280158383131683831282161715610c7a57610c7a611cca565b80820260008212600160ff1b8414161561203b5761203b611cca565b818105831482151761038157610381611cca565b60008261205e5761205e611cfb565b600160ff1b82146000198414161561207857612078611cca565b500590565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156120d157835163ffffffff16835292840192918401916001016120af565b50909695505050505050565b600060208083850312156120f057600080fd5b82516001600160401b038082111561210757600080fd5b818501915085601f83011261211b57600080fd5b81518181111561212d5761212d611ee3565b8060051b915061213e848301611f22565b818152918301840191848101908884111561215857600080fd5b938501935b8385101561217d5761216e85611d32565b8252938501939085019061215d565b98975050505050505050565b6001600160d81b03828116828216039080821115610c7a57610c7a611cca565b60006001600160d81b0383811680611e3657611e36611cfb565b6000600160ff1b82016121d8576121d8611cca565b506000039056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212204052703970fb93fb52470fd11020fd868bf33e26537cbd9bbe9b3feaebd402b064736f6c63430008170033",
365
365
  "linkReferences": {},
366
366
  "deployedLinkReferences": {}
367
367
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/ff3d2c74f70919561846fe4739fdaa6d.json"
3
+ "buildInfo": "../../../../build-info/bef17e78572bbcff48ff16fd5132af49.json"
4
4
  }
@@ -159,8 +159,8 @@
159
159
  "type": "function"
160
160
  }
161
161
  ],
162
- "bytecode": "0x60e06040523480156200001157600080fd5b5060405162001c8738038062001c8783398101604081905262000034916200012f565b63ffffffff831660808190526001600160a01b0383811660a081905283821660c05260405162439f4b60e91b815260048101919091526024810192909252600091829187169063873e960090604401606060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620001a7565b92505091508180620000d7575080155b15620001065760405163685ddbe760e11b81528215156004820152811515602482015260440160405180910390fd5b505050505050620001f9565b80516001600160a01b03811681146200012a57600080fd5b919050565b600080600080608085870312156200014657600080fd5b620001518562000112565b9350602085015163ffffffff811681146200016b57600080fd5b92506200017b6040860162000112565b91506200018b6060860162000112565b905092959194509250565b805180151581146200012a57600080fd5b600080600060608486031215620001bd57600080fd5b620001c88462000196565b9250602084015161ffff81168114620001e057600080fd5b9150620001f06040850162000196565b90509250925092565b60805160a05160c051611a4c6200023b6000396000818160fb015261019701526000818160c7015261012d0152600081816061015261014f0152611a4c6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806326d895451461005c578063313ce5671461009d5780634c7198f4146100ac57806380f55605146100c2578063fa6db1bc146100f6575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405160128152602001610094565b6100b461011d565b604051908152602001610094565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b60405161009491906115ad565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6000806101736001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000061022c565b60405163e245b5af60e01b8152600160048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e245b5af90602401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020291906115c1565b905068327cb2734119d3b7a9601e1b61021b83836115f0565b610225919061161d565b9250505090565b600080600061023a8561027f565b91509150600061024b8686846104af565b905081831061025e579250610279915050565b8161026984836115f0565b610273919061161d565b93505050505b92915050565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611649565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e91906115c1565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b491906115c1565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104189190611696565b801561048d575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048291906116b8565b6001600160801b0316145b1561049a578093506104a7565b6104a48582610646565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b81526004016104df91906115ad565b61012060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610521919061175b565b90506000428260a00151116105515761053e84836020015161065e565b825161054a91906117dd565b905061061d565b600061055e8386426106a2565b905060008061056e89868a6107a8565b91509150600061059761059285604001518561058a9190611805565b865190610818565b61083b565b905060006105dc6105a88385610c50565b6105ba90670de0b6b3a76400006117dd565b885160208801516105cc908690610818565b6105d69190611805565b90610c50565b90506105f2848289600001516105d691906117dd565b6105fc8285610c50565b866020015161060b9190611805565b61061591906117dd565b955050505050505b61063c610637836040015183610c5090919063ffffffff16565b610c76565b9695505050505050565b60008183116106555781610657565b825b9392505050565b60008060008312610670576001610674565b6000195b905061069061068b8561068686610c89565b610c9b565b610cba565b61069a9082611825565b949350505050565b6106cd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106106f15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516107039190611855565b905061070f8582610cd0565b8252602085015161072190859061065e565b60208301528451158061073657506020820151155b15610769578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044015b60405180910390fd5b61078785600001518661010001518460200151856000015185610d2c565b604083015260c085015161079b9082610dad565b6060830152509392505050565b6000806107d36107c461068b6001600160a01b03881686610de1565b670de0b6b3a764000090610c50565b915060006107f5856101000151428760a001516107f09190611855565b610dad565b9050600261080384836117dd565b61080d9190611868565b915050935093915050565b6000806108258385611825565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610860575068070c1cc73b00c800008213155b61089f5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610760565b60008212156108d7576108b48260000361083b565b6a0c097ce7bc90715b34b9f160241b816108d0576108d0611607565b0592915050565b60006806f05b59d3b2000000831261091557506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61094b565b6803782dace9d9000000831261094757506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061094b565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261099b5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126109d7576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610a1157682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610a4b576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610a8457680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610abd5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610af6576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610b2f5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080610c65670de0b6b3a764000085611825565b905082818161083257610832611607565b600080821215610c8557600080fd5b5090565b6000808213610c855761027982611896565b6000670de0b6b3a7640000610cb084846115f0565b610657919061161d565b60006001600160ff1b03821115610c8557600080fd5b6000610cdb82610cba565b610ced61068b6201518061016d6115f0565b8460800151610cfc9190611825565b610d069190611868565b90506000811361027957604051630e520c3b60e11b815260048101829052602401610760565b600080610d398684610dad565b9050670de0b6b3a7640000811215610d675760405163329e322960e21b815260048101829052602401610760565b6000610d7d610d76878a6117dd565b8990610c50565b90506000610d8a82610eb1565b9050610d968187610c50565b610da09084611805565b9998505050505050505050565b600080610dbf6201518061016d6115f0565b610dc984866115f0565b610dd3919061161d565b905061069a61059282610cba565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4691906115c1565b9050428111610e6057670de0b6b3a7640000915050610279565b6000610e6c8585610f04565b90506000610e7a4284611855565b90506000610e8b6106378484610dad565b9050610e9f670de0b6b3a76400008261102b565b945050505050610279565b5092915050565b6000670de0b6b3a76400008203610edb5760405163a9c8b14d60e01b815260040160405180910390fd5b6000610ef9610ef284670de0b6b3a7640000611805565b8490610c50565b90506106578161105a565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610f3d57610f3d6118b2565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610f819085906004016118c8565b600060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fc69190810190611912565b90508363ffffffff1681600081518110610fe257610fe26118b2565b602002602001015182600181518110610ffd57610ffd6118b2565b602002602001015161100f91906119d0565b61101991906119f0565b6001600160d81b031695945050505050565b600080611040670de0b6b3a7640000856115f0565b905082818161105157611051611607565b04949350505050565b600080821361109b5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610760565b670c7d713b49da0000821380156110b95750670f43fc2c04ee000082125b156110dd57670de0b6b3a76400006110d0836110eb565b816108d0576108d0611607565b6102798261120a565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161112c5761112c611607565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561124b57611242826a0c097ce7bc90715b34b9f160241b8161123c5761123c611607565b0561120a565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126112965772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126112cd576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611315576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611350576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261138757693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126113be57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126113f35768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261141e57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611453576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312611488576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126114bc576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126114f0576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161151957611519611607565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0391909116815260200190565b6000602082840312156115d357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610279576102796115da565b634e487b7160e01b600052601260045260246000fd5b60008261162c5761162c611607565b500490565b6001600160a01b038116811461164657600080fd5b50565b60008060006060848603121561165e57600080fd5b835161166981611631565b602085015190935061167a81611631565b604085015190925061168b81611631565b809150509250925092565b6000602082840312156116a857600080fd5b8151801515811461065757600080fd5b6000602082840312156116ca57600080fd5b81516001600160801b038116811461065757600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561171a5761171a6116e1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611748576117486116e1565b604052919050565b80516110e681611631565b6000610120828403121561176e57600080fd5b6117766116f7565b82518152602083015160208201526040830151604082015261179a60608401611750565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820182811260008312801582168215821617156117fd576117fd6115da565b505092915050565b8181036000831280158383131683831282161715610eaa57610eaa6115da565b80820260008212600160ff1b84141615611841576118416115da565b8181058314821517610279576102796115da565b81810381811115610279576102796115da565b60008261187757611877611607565b600160ff1b821460001984141615611891576118916115da565b500590565b6000600160ff1b82016118ab576118ab6115da565b5060000390565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561190657835163ffffffff16835292840192918401916001016118e4565b50909695505050505050565b6000602080838503121561192557600080fd5b82516001600160401b038082111561193c57600080fd5b818501915085601f83011261195057600080fd5b815181811115611962576119626116e1565b8060051b9150611973848301611720565b818152918301840191848101908884111561198d57600080fd5b938501935b838510156119c457845192506001600160d81b03831683146119b45760008081fd5b8282529385019390850190611992565b98975050505050505050565b6001600160d81b03828116828216039080821115610eaa57610eaa6115da565b60006001600160d81b0383811680611a0a57611a0a611607565b9216919091049291505056fea26469706673582212201ae0bfa14423660ec748e98f7db34b3fa5cd03443963064a6e958ba08c44062964736f6c63430008170033",
163
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c806326d895451461005c578063313ce5671461009d5780634c7198f4146100ac57806380f55605146100c2578063fa6db1bc146100f6575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405160128152602001610094565b6100b461011d565b604051908152602001610094565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b60405161009491906115ad565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6000806101736001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000061022c565b60405163e245b5af60e01b8152600160048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e245b5af90602401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020291906115c1565b905068327cb2734119d3b7a9601e1b61021b83836115f0565b610225919061161d565b9250505090565b600080600061023a8561027f565b91509150600061024b8686846104af565b905081831061025e579250610279915050565b8161026984836115f0565b610273919061161d565b93505050505b92915050565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611649565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e91906115c1565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b491906115c1565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104189190611696565b801561048d575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048291906116b8565b6001600160801b0316145b1561049a578093506104a7565b6104a48582610646565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b81526004016104df91906115ad565b61012060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610521919061175b565b90506000428260a00151116105515761053e84836020015161065e565b825161054a91906117dd565b905061061d565b600061055e8386426106a2565b905060008061056e89868a6107a8565b91509150600061059761059285604001518561058a9190611805565b865190610818565b61083b565b905060006105dc6105a88385610c50565b6105ba90670de0b6b3a76400006117dd565b885160208801516105cc908690610818565b6105d69190611805565b90610c50565b90506105f2848289600001516105d691906117dd565b6105fc8285610c50565b866020015161060b9190611805565b61061591906117dd565b955050505050505b61063c610637836040015183610c5090919063ffffffff16565b610c76565b9695505050505050565b60008183116106555781610657565b825b9392505050565b60008060008312610670576001610674565b6000195b905061069061068b8561068686610c89565b610c9b565b610cba565b61069a9082611825565b949350505050565b6106cd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106106f15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516107039190611855565b905061070f8582610cd0565b8252602085015161072190859061065e565b60208301528451158061073657506020820151155b15610769578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044015b60405180910390fd5b61078785600001518661010001518460200151856000015185610d2c565b604083015260c085015161079b9082610dad565b6060830152509392505050565b6000806107d36107c461068b6001600160a01b03881686610de1565b670de0b6b3a764000090610c50565b915060006107f5856101000151428760a001516107f09190611855565b610dad565b9050600261080384836117dd565b61080d9190611868565b915050935093915050565b6000806108258385611825565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610860575068070c1cc73b00c800008213155b61089f5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610760565b60008212156108d7576108b48260000361083b565b6a0c097ce7bc90715b34b9f160241b816108d0576108d0611607565b0592915050565b60006806f05b59d3b2000000831261091557506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61094b565b6803782dace9d9000000831261094757506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061094b565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261099b5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126109d7576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610a1157682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610a4b576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610a8457680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610abd5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610af6576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610b2f5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080610c65670de0b6b3a764000085611825565b905082818161083257610832611607565b600080821215610c8557600080fd5b5090565b6000808213610c855761027982611896565b6000670de0b6b3a7640000610cb084846115f0565b610657919061161d565b60006001600160ff1b03821115610c8557600080fd5b6000610cdb82610cba565b610ced61068b6201518061016d6115f0565b8460800151610cfc9190611825565b610d069190611868565b90506000811361027957604051630e520c3b60e11b815260048101829052602401610760565b600080610d398684610dad565b9050670de0b6b3a7640000811215610d675760405163329e322960e21b815260048101829052602401610760565b6000610d7d610d76878a6117dd565b8990610c50565b90506000610d8a82610eb1565b9050610d968187610c50565b610da09084611805565b9998505050505050505050565b600080610dbf6201518061016d6115f0565b610dc984866115f0565b610dd3919061161d565b905061069a61059282610cba565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4691906115c1565b9050428111610e6057670de0b6b3a7640000915050610279565b6000610e6c8585610f04565b90506000610e7a4284611855565b90506000610e8b6106378484610dad565b9050610e9f670de0b6b3a76400008261102b565b945050505050610279565b5092915050565b6000670de0b6b3a76400008203610edb5760405163a9c8b14d60e01b815260040160405180910390fd5b6000610ef9610ef284670de0b6b3a7640000611805565b8490610c50565b90506106578161105a565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610f3d57610f3d6118b2565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610f819085906004016118c8565b600060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fc69190810190611912565b90508363ffffffff1681600081518110610fe257610fe26118b2565b602002602001015182600181518110610ffd57610ffd6118b2565b602002602001015161100f91906119d0565b61101991906119f0565b6001600160d81b031695945050505050565b600080611040670de0b6b3a7640000856115f0565b905082818161105157611051611607565b04949350505050565b600080821361109b5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610760565b670c7d713b49da0000821380156110b95750670f43fc2c04ee000082125b156110dd57670de0b6b3a76400006110d0836110eb565b816108d0576108d0611607565b6102798261120a565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161112c5761112c611607565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561124b57611242826a0c097ce7bc90715b34b9f160241b8161123c5761123c611607565b0561120a565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126112965772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126112cd576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611315576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611350576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261138757693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126113be57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126113f35768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261141e57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611453576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312611488576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126114bc576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126114f0576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161151957611519611607565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0391909116815260200190565b6000602082840312156115d357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610279576102796115da565b634e487b7160e01b600052601260045260246000fd5b60008261162c5761162c611607565b500490565b6001600160a01b038116811461164657600080fd5b50565b60008060006060848603121561165e57600080fd5b835161166981611631565b602085015190935061167a81611631565b604085015190925061168b81611631565b809150509250925092565b6000602082840312156116a857600080fd5b8151801515811461065757600080fd5b6000602082840312156116ca57600080fd5b81516001600160801b038116811461065757600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561171a5761171a6116e1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611748576117486116e1565b604052919050565b80516110e681611631565b6000610120828403121561176e57600080fd5b6117766116f7565b82518152602083015160208201526040830151604082015261179a60608401611750565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820182811260008312801582168215821617156117fd576117fd6115da565b505092915050565b8181036000831280158383131683831282161715610eaa57610eaa6115da565b80820260008212600160ff1b84141615611841576118416115da565b8181058314821517610279576102796115da565b81810381811115610279576102796115da565b60008261187757611877611607565b600160ff1b821460001984141615611891576118916115da565b500590565b6000600160ff1b82016118ab576118ab6115da565b5060000390565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561190657835163ffffffff16835292840192918401916001016118e4565b50909695505050505050565b6000602080838503121561192557600080fd5b82516001600160401b038082111561193c57600080fd5b818501915085601f83011261195057600080fd5b815181811115611962576119626116e1565b8060051b9150611973848301611720565b818152918301840191848101908884111561198d57600080fd5b938501935b838510156119c457845192506001600160d81b03831683146119b45760008081fd5b8282529385019390850190611992565b98975050505050505050565b6001600160d81b03828116828216039080821115610eaa57610eaa6115da565b60006001600160d81b0383811680611a0a57611a0a611607565b9216919091049291505056fea26469706673582212201ae0bfa14423660ec748e98f7db34b3fa5cd03443963064a6e958ba08c44062964736f6c63430008170033",
162
+ "bytecode": "0x60e06040523480156200001157600080fd5b5060405162001c8738038062001c8783398101604081905262000034916200012f565b63ffffffff831660808190526001600160a01b0383811660a081905283821660c05260405162439f4b60e91b815260048101919091526024810192909252600091829187169063873e960090604401606060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620001a7565b92505091508180620000d7575080155b15620001065760405163685ddbe760e11b81528215156004820152811515602482015260440160405180910390fd5b505050505050620001f9565b80516001600160a01b03811681146200012a57600080fd5b919050565b600080600080608085870312156200014657600080fd5b620001518562000112565b9350602085015163ffffffff811681146200016b57600080fd5b92506200017b6040860162000112565b91506200018b6060860162000112565b905092959194509250565b805180151581146200012a57600080fd5b600080600060608486031215620001bd57600080fd5b620001c88462000196565b9250602084015161ffff81168114620001e057600080fd5b9150620001f06040850162000196565b90509250925092565b60805160a05160c051611a4c6200023b6000396000818160fb015261019701526000818160c7015261012d0152600081816061015261014f0152611a4c6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806326d895451461005c578063313ce5671461009d5780634c7198f4146100ac57806380f55605146100c2578063fa6db1bc146100f6575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405160128152602001610094565b6100b461011d565b604051908152602001610094565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b60405161009491906115ad565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6000806101736001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000061022c565b60405163e245b5af60e01b8152600160048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e245b5af90602401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020291906115c1565b905068327cb2734119d3b7a9601e1b61021b83836115f0565b610225919061161d565b9250505090565b600080600061023a8561027f565b91509150600061024b8686846104af565b905081831061025e579250610279915050565b8161026984836115f0565b610273919061161d565b93505050505b92915050565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611649565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e91906115c1565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b491906115c1565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104189190611696565b801561048d575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048291906116b8565b6001600160801b0316145b1561049a578093506104a7565b6104a48582610646565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b81526004016104df91906115ad565b61012060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610521919061175b565b90506000428260a00151116105515761053e84836020015161065e565b825161054a91906117dd565b905061061d565b600061055e8386426106a2565b905060008061056e89868a6107a8565b91509150600061059761059285604001518561058a9190611805565b865190610818565b61083b565b905060006105dc6105a88385610c50565b6105ba90670de0b6b3a76400006117dd565b885160208801516105cc908690610818565b6105d69190611805565b90610c50565b90506105f2848289600001516105d691906117dd565b6105fc8285610c50565b866020015161060b9190611805565b61061591906117dd565b955050505050505b61063c610637836040015183610c5090919063ffffffff16565b610c76565b9695505050505050565b60008183116106555781610657565b825b9392505050565b60008060008312610670576001610674565b6000195b905061069061068b8561068686610c89565b610c9b565b610cba565b61069a9082611825565b949350505050565b6106cd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106106f15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516107039190611855565b905061070f8582610cd0565b8252602085015161072190859061065e565b60208301528451158061073657506020820151155b15610769578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044015b60405180910390fd5b61078785600001518661010001518460200151856000015185610d2c565b604083015260c085015161079b9082610dad565b6060830152509392505050565b6000806107d36107c461068b6001600160a01b03881686610de1565b670de0b6b3a764000090610c50565b915060006107f5856101000151428760a001516107f09190611855565b610dad565b9050600261080384836117dd565b61080d9190611868565b915050935093915050565b6000806108258385611825565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610860575068070c1cc73b00c800008213155b61089f5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610760565b60008212156108d7576108b48260000361083b565b6a0c097ce7bc90715b34b9f160241b816108d0576108d0611607565b0592915050565b60006806f05b59d3b2000000831261091557506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61094b565b6803782dace9d9000000831261094757506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061094b565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261099b5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126109d7576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610a1157682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610a4b576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610a8457680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610abd5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610af6576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610b2f5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080610c65670de0b6b3a764000085611825565b905082818161083257610832611607565b600080821215610c8557600080fd5b5090565b6000808213610c855761027982611896565b6000670de0b6b3a7640000610cb084846115f0565b610657919061161d565b60006001600160ff1b03821115610c8557600080fd5b6000610cdb82610cba565b610ced61068b6201518061016d6115f0565b8460800151610cfc9190611825565b610d069190611868565b90506000811361027957604051630e520c3b60e11b815260048101829052602401610760565b600080610d398684610dad565b9050670de0b6b3a7640000811215610d675760405163329e322960e21b815260048101829052602401610760565b6000610d7d610d76878a6117dd565b8990610c50565b90506000610d8a82610eb1565b9050610d968187610c50565b610da09084611805565b9998505050505050505050565b600080610dbf6201518061016d6115f0565b610dc984866115f0565b610dd3919061161d565b905061069a61059282610cba565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4691906115c1565b9050428111610e6057670de0b6b3a7640000915050610279565b6000610e6c8585610f04565b90506000610e7a4284611855565b90506000610e8b6106378484610dad565b9050610e9f670de0b6b3a76400008261102b565b945050505050610279565b5092915050565b6000670de0b6b3a76400008203610edb5760405163a9c8b14d60e01b815260040160405180910390fd5b6000610ef9610ef284670de0b6b3a7640000611805565b8490610c50565b90506106578161105a565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610f3d57610f3d6118b2565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610f819085906004016118c8565b600060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fc69190810190611912565b90508363ffffffff1681600081518110610fe257610fe26118b2565b602002602001015182600181518110610ffd57610ffd6118b2565b602002602001015161100f91906119d0565b61101991906119f0565b6001600160d81b031695945050505050565b600080611040670de0b6b3a7640000856115f0565b905082818161105157611051611607565b04949350505050565b600080821361109b5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610760565b670c7d713b49da0000821380156110b95750670f43fc2c04ee000082125b156110dd57670de0b6b3a76400006110d0836110eb565b816108d0576108d0611607565b6102798261120a565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161112c5761112c611607565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561124b57611242826a0c097ce7bc90715b34b9f160241b8161123c5761123c611607565b0561120a565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126112965772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126112cd576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611315576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611350576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261138757693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126113be57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126113f35768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261141e57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611453576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312611488576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126114bc576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126114f0576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161151957611519611607565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0391909116815260200190565b6000602082840312156115d357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610279576102796115da565b634e487b7160e01b600052601260045260246000fd5b60008261162c5761162c611607565b500490565b6001600160a01b038116811461164657600080fd5b50565b60008060006060848603121561165e57600080fd5b835161166981611631565b602085015190935061167a81611631565b604085015190925061168b81611631565b809150509250925092565b6000602082840312156116a857600080fd5b8151801515811461065757600080fd5b6000602082840312156116ca57600080fd5b81516001600160801b038116811461065757600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561171a5761171a6116e1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611748576117486116e1565b604052919050565b80516110e681611631565b6000610120828403121561176e57600080fd5b6117766116f7565b82518152602083015160208201526040830151604082015261179a60608401611750565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820182811260008312801582168215821617156117fd576117fd6115da565b505092915050565b8181036000831280158383131683831282161715610eaa57610eaa6115da565b80820260008212600160ff1b84141615611841576118416115da565b8181058314821517610279576102796115da565b81810381811115610279576102796115da565b60008261187757611877611607565b600160ff1b821460001984141615611891576118916115da565b500590565b6000600160ff1b82016118ab576118ab6115da565b5060000390565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561190657835163ffffffff16835292840192918401916001016118e4565b50909695505050505050565b6000602080838503121561192557600080fd5b82516001600160401b038082111561193c57600080fd5b818501915085601f83011261195057600080fd5b815181811115611962576119626116e1565b8060051b9150611973848301611720565b818152918301840191848101908884111561198d57600080fd5b938501935b838510156119c457845192506001600160d81b03831683146119b45760008081fd5b8282529385019390850190611992565b98975050505050505050565b6001600160d81b03828116828216039080821115610eaa57610eaa6115da565b60006001600160d81b0383811680611a0a57611a0a611607565b9216919091049291505056fea26469706673582212201b1d20c6b62e1bd1c1e9c2141efc4e7fc9619937e7683ea8c3f397244f4a2e0c64736f6c63430008170033",
163
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c806326d895451461005c578063313ce5671461009d5780634c7198f4146100ac57806380f55605146100c2578063fa6db1bc146100f6575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405160128152602001610094565b6100b461011d565b604051908152602001610094565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b60405161009491906115ad565b6100e97f000000000000000000000000000000000000000000000000000000000000000081565b6000806101736001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000061022c565b60405163e245b5af60e01b8152600160048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e245b5af90602401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020291906115c1565b905068327cb2734119d3b7a9601e1b61021b83836115f0565b610225919061161d565b9250505090565b600080600061023a8561027f565b91509150600061024b8686846104af565b905081831061025e579250610279915050565b8161026984836115f0565b610273919061161d565b93505050505b92915050565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611649565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e91906115c1565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b491906115c1565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104189190611696565b801561048d575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048291906116b8565b6001600160801b0316145b1561049a578093506104a7565b6104a48582610646565b93505b505050915091565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b81526004016104df91906115ad565b61012060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610521919061175b565b90506000428260a00151116105515761053e84836020015161065e565b825161054a91906117dd565b905061061d565b600061055e8386426106a2565b905060008061056e89868a6107a8565b91509150600061059761059285604001518561058a9190611805565b865190610818565b61083b565b905060006105dc6105a88385610c50565b6105ba90670de0b6b3a76400006117dd565b885160208801516105cc908690610818565b6105d69190611805565b90610c50565b90506105f2848289600001516105d691906117dd565b6105fc8285610c50565b866020015161060b9190611805565b61061591906117dd565b955050505050505b61063c610637836040015183610c5090919063ffffffff16565b610c76565b9695505050505050565b60008183116106555781610657565b825b9392505050565b60008060008312610670576001610674565b6000195b905061069061068b8561068686610c89565b610c9b565b610cba565b61069a9082611825565b949350505050565b6106cd6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a084015182106106f15760405163b2094b5960e01b815260040160405180910390fd5b6000828560a001516107039190611855565b905061070f8582610cd0565b8252602085015161072190859061065e565b60208301528451158061073657506020820151155b15610769578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044015b60405180910390fd5b61078785600001518661010001518460200151856000015185610d2c565b604083015260c085015161079b9082610dad565b6060830152509392505050565b6000806107d36107c461068b6001600160a01b03881686610de1565b670de0b6b3a764000090610c50565b915060006107f5856101000151428760a001516107f09190611855565b610dad565b9050600261080384836117dd565b61080d9190611868565b915050935093915050565b6000806108258385611825565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610860575068070c1cc73b00c800008213155b61089f5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610760565b60008212156108d7576108b48260000361083b565b6a0c097ce7bc90715b34b9f160241b816108d0576108d0611607565b0592915050565b60006806f05b59d3b2000000831261091557506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b61094b565b6803782dace9d9000000831261094757506803782dace9d8ffffff19909101906b1425982cf597cd205cef738061094b565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261099b5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d63100000084126109d7576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610a1157682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610a4b576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610a8457680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610abd5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610af6576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610b2f5768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080610c65670de0b6b3a764000085611825565b905082818161083257610832611607565b600080821215610c8557600080fd5b5090565b6000808213610c855761027982611896565b6000670de0b6b3a7640000610cb084846115f0565b610657919061161d565b60006001600160ff1b03821115610c8557600080fd5b6000610cdb82610cba565b610ced61068b6201518061016d6115f0565b8460800151610cfc9190611825565b610d069190611868565b90506000811361027957604051630e520c3b60e11b815260048101829052602401610760565b600080610d398684610dad565b9050670de0b6b3a7640000811215610d675760405163329e322960e21b815260048101829052602401610760565b6000610d7d610d76878a6117dd565b8990610c50565b90506000610d8a82610eb1565b9050610d968187610c50565b610da09084611805565b9998505050505050505050565b600080610dbf6201518061016d6115f0565b610dc984866115f0565b610dd3919061161d565b905061069a61059282610cba565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4691906115c1565b9050428111610e6057670de0b6b3a7640000915050610279565b6000610e6c8585610f04565b90506000610e7a4284611855565b90506000610e8b6106378484610dad565b9050610e9f670de0b6b3a76400008261102b565b945050505050610279565b5092915050565b6000670de0b6b3a76400008203610edb5760405163a9c8b14d60e01b815260040160405180910390fd5b6000610ef9610ef284670de0b6b3a7640000611805565b8490610c50565b90506106578161105a565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610f3d57610f3d6118b2565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610f819085906004016118c8565b600060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fc69190810190611912565b90508363ffffffff1681600081518110610fe257610fe26118b2565b602002602001015182600181518110610ffd57610ffd6118b2565b602002602001015161100f91906119d0565b61101991906119f0565b6001600160d81b031695945050505050565b600080611040670de0b6b3a7640000856115f0565b905082818161105157611051611607565b04949350505050565b600080821361109b5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610760565b670c7d713b49da0000821380156110b95750670f43fc2c04ee000082125b156110dd57670de0b6b3a76400006110d0836110eb565b816108d0576108d0611607565b6102798261120a565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161112c5761112c611607565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561124b57611242826a0c097ce7bc90715b34b9f160241b8161123c5761123c611607565b0561120a565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126112965772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126112cd576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611315576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611350576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261138757693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126113be57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126113f35768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261141e57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611453576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312611488576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126114bc576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126114f0576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161151957611519611607565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6001600160a01b0391909116815260200190565b6000602082840312156115d357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610279576102796115da565b634e487b7160e01b600052601260045260246000fd5b60008261162c5761162c611607565b500490565b6001600160a01b038116811461164657600080fd5b50565b60008060006060848603121561165e57600080fd5b835161166981611631565b602085015190935061167a81611631565b604085015190925061168b81611631565b809150509250925092565b6000602082840312156116a857600080fd5b8151801515811461065757600080fd5b6000602082840312156116ca57600080fd5b81516001600160801b038116811461065757600080fd5b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561171a5761171a6116e1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611748576117486116e1565b604052919050565b80516110e681611631565b6000610120828403121561176e57600080fd5b6117766116f7565b82518152602083015160208201526040830151604082015261179a60608401611750565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b80820182811260008312801582168215821617156117fd576117fd6115da565b505092915050565b8181036000831280158383131683831282161715610eaa57610eaa6115da565b80820260008212600160ff1b84141615611841576118416115da565b8181058314821517610279576102796115da565b81810381811115610279576102796115da565b60008261187757611877611607565b600160ff1b821460001984141615611891576118916115da565b500590565b6000600160ff1b82016118ab576118ab6115da565b5060000390565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561190657835163ffffffff16835292840192918401916001016118e4565b50909695505050505050565b6000602080838503121561192557600080fd5b82516001600160401b038082111561193c57600080fd5b818501915085601f83011261195057600080fd5b815181811115611962576119626116e1565b8060051b9150611973848301611720565b818152918301840191848101908884111561198d57600080fd5b938501935b838510156119c457845192506001600160d81b03831683146119b45760008081fd5b8282529385019390850190611992565b98975050505050505050565b6001600160d81b03828116828216039080821115610eaa57610eaa6115da565b60006001600160d81b0383811680611a0a57611a0a611607565b9216919091049291505056fea26469706673582212201b1d20c6b62e1bd1c1e9c2141efc4e7fc9619937e7683ea8c3f397244f4a2e0c64736f6c63430008170033",
164
164
  "linkReferences": {},
165
165
  "deployedLinkReferences": {}
166
166
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/ff3d2c74f70919561846fe4739fdaa6d.json"
3
+ "buildInfo": "../../../../build-info/bef17e78572bbcff48ff16fd5132af49.json"
4
4
  }
@@ -150,8 +150,8 @@
150
150
  "type": "function"
151
151
  }
152
152
  ],
153
- "bytecode": "0x6101206040523480156200001257600080fd5b506040516200157c3803806200157c8339810160408190526200003591620000f0565b63ffffffff84166080526001600160a01b0380841660a052821660c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000157565b60ff1660e0526001600160a01b0316610100525062000183915050565b80516001600160a01b0381168114620000eb57600080fd5b919050565b600080600080608085870312156200010757600080fd5b845163ffffffff811681146200011c57600080fd5b93506200012c60208601620000d3565b92506200013c60408601620000d3565b91506200014c60608601620000d3565b905092959194509250565b6000602082840312156200016a57600080fd5b815160ff811681146200017c57600080fd5b9392505050565b60805160a05160c05160e0516101005161135b6200022160003960008181608201528181610239015261030d015260008181610166015281816105320152818161056001526105a301526000818161010201526104ac015260008181610129015281816101bc01528181610268015261033c01526000818160c6015281816101de015281816102890152818161035d0152610423015261135b6000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c806305d7b9a21461007d57806326d89545146100c157806337a7b7d8146100fd57806380f5560514610124578063addccbb31461014b578063c23953d014610161578063e710b82f1461019a578063f9294d8b146101a2575b600080fd5b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100b8565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6101536101ac565b6040519081526020016100b8565b6101887f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100b8565b610153610234565b6101aa610306565b005b6000806102026001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610455565b9050600061020e6104a7565b9050670de0b6b3a76400006102238383610eec565b61022d9190610f19565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102c5929190610f2d565b602060405180830381865afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610f4c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610399929190610f2d565b606060405180830381865afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610f7a565b925092509250821561040a576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061045057604051631229555360e01b815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610401565b505050565b6000806000610463856105e4565b91509150808210610481576104788585610814565b925050506104a1565b808261048d8787610814565b6104979190610eec565b6104789190610f19565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190610f4c565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff161061059e5761058460127f0000000000000000000000000000000000000000000000000000000000000000610fc6565b61058f90600a6110c3565b6105999082610f19565b6105de565b6105c97f00000000000000000000000000000000000000000000000000000000000000006012610fc6565b6105d490600a6110c3565b6105de9082610eec565b91505090565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064c91906110ea565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b39190610f4c565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190610f4c565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190611137565b80156107f2575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611152565b6001600160801b0316145b156107ff5780935061080c565b61080985826108e9565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108799190610f4c565b905042811161089357670de0b6b3a76400009150506104a1565b600061089f8585610901565b905060006108ad428461117b565b905060006108c36108be8484610a28565b610a69565b90506108d7670de0b6b3a764000082610a7c565b9450505050506104a1565b5092915050565b60008183116108f857816108fa565b825b9392505050565b60408051600280825260608201835260009283929190602083019080368337019050509050828160008151811061093a5761093a6111a4565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061097e9085906004016111ba565b600060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c3919081019061121b565b90508363ffffffff16816000815181106109df576109df6111a4565b6020026020010151826001815181106109fa576109fa6111a4565b6020026020010151610a0c91906112df565b610a1691906112ff565b6001600160d81b031695945050505050565b600080610a3a6201518061016d610eec565b610a448486610eec565b610a4e9190610f19565b9050610a61610a5c82610aab565b610ac1565b949350505050565b600080821215610a7857600080fd5b5090565b600080610a91670de0b6b3a764000085610eec565b9050828181610aa257610aa2610f03565b04949350505050565b60006001600160ff1b03821115610a7857600080fd5b6000680238fd42c5cf03ffff198212158015610ae6575068070c1cc73b00c800008213155b610b255760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610401565b6000821215610b5d57610b3a82600003610ac1565b6a0c097ce7bc90715b34b9f160241b81610b5657610b56610f03565b0592915050565b60006806f05b59d3b20000008312610b9b57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610bd1565b6803782dace9d90000008312610bcd57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610bd1565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610c215768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610c5d576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610c9757682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610cd1576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610d0a57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610d435768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610d7c576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610db55768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a1576104a1610ed6565b634e487b7160e01b600052601260045260246000fd5b600082610f2857610f28610f03565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b600060208284031215610f5e57600080fd5b5051919050565b80518015158114610f7557600080fd5b919050565b600080600060608486031215610f8f57600080fd5b610f9884610f65565b9250602084015161ffff81168114610faf57600080fd5b9150610fbd60408501610f65565b90509250925092565b60ff82811682821603908111156104a1576104a1610ed6565b600181815b8085111561101a57816000190482111561100057611000610ed6565b8085161561100d57918102915b93841c9390800290610fe4565b509250929050565b600082611031575060016104a1565b8161103e575060006104a1565b8160018114611054576002811461105e5761107a565b60019150506104a1565b60ff84111561106f5761106f610ed6565b50506001821b6104a1565b5060208310610133831016604e8410600b841016171561109d575081810a6104a1565b6110a78383610fdf565b80600019048211156110bb576110bb610ed6565b029392505050565b60006108fa60ff841683611022565b6001600160a01b03811681146110e757600080fd5b50565b6000806000606084860312156110ff57600080fd5b835161110a816110d2565b602085015190935061111b816110d2565b604085015190925061112c816110d2565b809150509250925092565b60006020828403121561114957600080fd5b6108fa82610f65565b60006020828403121561116457600080fd5b81516001600160801b03811681146108fa57600080fd5b818103818111156104a1576104a1610ed6565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156111f857835163ffffffff16835292840192918401916001016111d6565b50909695505050505050565b80516001600160d81b0381168114610f7557600080fd5b6000602080838503121561122e57600080fd5b82516001600160401b038082111561124557600080fd5b818501915085601f83011261125957600080fd5b81518181111561126b5761126b61118e565b8060051b604051601f19603f830116810181811085821117156112905761129061118e565b6040529182528482019250838101850191888311156112ae57600080fd5b938501935b828510156112d3576112c485611204565b845293850193928501926112b3565b98975050505050505050565b6001600160d81b038281168282160390808211156108e2576108e2610ed6565b60006001600160d81b038381168061131957611319610f03565b9216919091049291505056fea2646970667358221220b1d319135016ec64bcedf6dfbf43f808f1e16ad07933e151f9dfde2e05705c0364736f6c63430008170033",
154
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c806305d7b9a21461007d57806326d89545146100c157806337a7b7d8146100fd57806380f5560514610124578063addccbb31461014b578063c23953d014610161578063e710b82f1461019a578063f9294d8b146101a2575b600080fd5b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100b8565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6101536101ac565b6040519081526020016100b8565b6101887f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100b8565b610153610234565b6101aa610306565b005b6000806102026001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610455565b9050600061020e6104a7565b9050670de0b6b3a76400006102238383610eec565b61022d9190610f19565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102c5929190610f2d565b602060405180830381865afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610f4c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610399929190610f2d565b606060405180830381865afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610f7a565b925092509250821561040a576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061045057604051631229555360e01b815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610401565b505050565b6000806000610463856105e4565b91509150808210610481576104788585610814565b925050506104a1565b808261048d8787610814565b6104979190610eec565b6104789190610f19565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190610f4c565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff161061059e5761058460127f0000000000000000000000000000000000000000000000000000000000000000610fc6565b61058f90600a6110c3565b6105999082610f19565b6105de565b6105c97f00000000000000000000000000000000000000000000000000000000000000006012610fc6565b6105d490600a6110c3565b6105de9082610eec565b91505090565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064c91906110ea565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b39190610f4c565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190610f4c565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190611137565b80156107f2575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611152565b6001600160801b0316145b156107ff5780935061080c565b61080985826108e9565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108799190610f4c565b905042811161089357670de0b6b3a76400009150506104a1565b600061089f8585610901565b905060006108ad428461117b565b905060006108c36108be8484610a28565b610a69565b90506108d7670de0b6b3a764000082610a7c565b9450505050506104a1565b5092915050565b60008183116108f857816108fa565b825b9392505050565b60408051600280825260608201835260009283929190602083019080368337019050509050828160008151811061093a5761093a6111a4565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061097e9085906004016111ba565b600060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c3919081019061121b565b90508363ffffffff16816000815181106109df576109df6111a4565b6020026020010151826001815181106109fa576109fa6111a4565b6020026020010151610a0c91906112df565b610a1691906112ff565b6001600160d81b031695945050505050565b600080610a3a6201518061016d610eec565b610a448486610eec565b610a4e9190610f19565b9050610a61610a5c82610aab565b610ac1565b949350505050565b600080821215610a7857600080fd5b5090565b600080610a91670de0b6b3a764000085610eec565b9050828181610aa257610aa2610f03565b04949350505050565b60006001600160ff1b03821115610a7857600080fd5b6000680238fd42c5cf03ffff198212158015610ae6575068070c1cc73b00c800008213155b610b255760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610401565b6000821215610b5d57610b3a82600003610ac1565b6a0c097ce7bc90715b34b9f160241b81610b5657610b56610f03565b0592915050565b60006806f05b59d3b20000008312610b9b57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610bd1565b6803782dace9d90000008312610bcd57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610bd1565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610c215768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610c5d576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610c9757682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610cd1576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610d0a57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610d435768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610d7c576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610db55768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a1576104a1610ed6565b634e487b7160e01b600052601260045260246000fd5b600082610f2857610f28610f03565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b600060208284031215610f5e57600080fd5b5051919050565b80518015158114610f7557600080fd5b919050565b600080600060608486031215610f8f57600080fd5b610f9884610f65565b9250602084015161ffff81168114610faf57600080fd5b9150610fbd60408501610f65565b90509250925092565b60ff82811682821603908111156104a1576104a1610ed6565b600181815b8085111561101a57816000190482111561100057611000610ed6565b8085161561100d57918102915b93841c9390800290610fe4565b509250929050565b600082611031575060016104a1565b8161103e575060006104a1565b8160018114611054576002811461105e5761107a565b60019150506104a1565b60ff84111561106f5761106f610ed6565b50506001821b6104a1565b5060208310610133831016604e8410600b841016171561109d575081810a6104a1565b6110a78383610fdf565b80600019048211156110bb576110bb610ed6565b029392505050565b60006108fa60ff841683611022565b6001600160a01b03811681146110e757600080fd5b50565b6000806000606084860312156110ff57600080fd5b835161110a816110d2565b602085015190935061111b816110d2565b604085015190925061112c816110d2565b809150509250925092565b60006020828403121561114957600080fd5b6108fa82610f65565b60006020828403121561116457600080fd5b81516001600160801b03811681146108fa57600080fd5b818103818111156104a1576104a1610ed6565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156111f857835163ffffffff16835292840192918401916001016111d6565b50909695505050505050565b80516001600160d81b0381168114610f7557600080fd5b6000602080838503121561122e57600080fd5b82516001600160401b038082111561124557600080fd5b818501915085601f83011261125957600080fd5b81518181111561126b5761126b61118e565b8060051b604051601f19603f830116810181811085821117156112905761129061118e565b6040529182528482019250838101850191888311156112ae57600080fd5b938501935b828510156112d3576112c485611204565b845293850193928501926112b3565b98975050505050505050565b6001600160d81b038281168282160390808211156108e2576108e2610ed6565b60006001600160d81b038381168061131957611319610f03565b9216919091049291505056fea2646970667358221220b1d319135016ec64bcedf6dfbf43f808f1e16ad07933e151f9dfde2e05705c0364736f6c63430008170033",
153
+ "bytecode": "0x6101206040523480156200001257600080fd5b506040516200157c3803806200157c8339810160408190526200003591620000f0565b63ffffffff84166080526001600160a01b0380841660a052821660c08190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b6919062000157565b60ff1660e0526001600160a01b0316610100525062000183915050565b80516001600160a01b0381168114620000eb57600080fd5b919050565b600080600080608085870312156200010757600080fd5b845163ffffffff811681146200011c57600080fd5b93506200012c60208601620000d3565b92506200013c60408601620000d3565b91506200014c60608601620000d3565b905092959194509250565b6000602082840312156200016a57600080fd5b815160ff811681146200017c57600080fd5b9392505050565b60805160a05160c05160e0516101005161135b6200022160003960008181608201528181610239015261030d015260008181610166015281816105320152818161056001526105a301526000818161010201526104ac015260008181610129015281816101bc01528181610268015261033c01526000818160c6015281816101de015281816102890152818161035d0152610423015261135b6000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c806305d7b9a21461007d57806326d89545146100c157806337a7b7d8146100fd57806380f5560514610124578063addccbb31461014b578063c23953d014610161578063e710b82f1461019a578063f9294d8b146101a2575b600080fd5b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100b8565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6101536101ac565b6040519081526020016100b8565b6101887f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100b8565b610153610234565b6101aa610306565b005b6000806102026001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610455565b9050600061020e6104a7565b9050670de0b6b3a76400006102238383610eec565b61022d9190610f19565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102c5929190610f2d565b602060405180830381865afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610f4c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610399929190610f2d565b606060405180830381865afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610f7a565b925092509250821561040a576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061045057604051631229555360e01b815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610401565b505050565b6000806000610463856105e4565b91509150808210610481576104788585610814565b925050506104a1565b808261048d8787610814565b6104979190610eec565b6104789190610f19565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190610f4c565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff161061059e5761058460127f0000000000000000000000000000000000000000000000000000000000000000610fc6565b61058f90600a6110c3565b6105999082610f19565b6105de565b6105c97f00000000000000000000000000000000000000000000000000000000000000006012610fc6565b6105d490600a6110c3565b6105de9082610eec565b91505090565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064c91906110ea565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b39190610f4c565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190610f4c565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190611137565b80156107f2575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611152565b6001600160801b0316145b156107ff5780935061080c565b61080985826108e9565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108799190610f4c565b905042811161089357670de0b6b3a76400009150506104a1565b600061089f8585610901565b905060006108ad428461117b565b905060006108c36108be8484610a28565b610a69565b90506108d7670de0b6b3a764000082610a7c565b9450505050506104a1565b5092915050565b60008183116108f857816108fa565b825b9392505050565b60408051600280825260608201835260009283929190602083019080368337019050509050828160008151811061093a5761093a6111a4565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061097e9085906004016111ba565b600060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c3919081019061121b565b90508363ffffffff16816000815181106109df576109df6111a4565b6020026020010151826001815181106109fa576109fa6111a4565b6020026020010151610a0c91906112df565b610a1691906112ff565b6001600160d81b031695945050505050565b600080610a3a6201518061016d610eec565b610a448486610eec565b610a4e9190610f19565b9050610a61610a5c82610aab565b610ac1565b949350505050565b600080821215610a7857600080fd5b5090565b600080610a91670de0b6b3a764000085610eec565b9050828181610aa257610aa2610f03565b04949350505050565b60006001600160ff1b03821115610a7857600080fd5b6000680238fd42c5cf03ffff198212158015610ae6575068070c1cc73b00c800008213155b610b255760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610401565b6000821215610b5d57610b3a82600003610ac1565b6a0c097ce7bc90715b34b9f160241b81610b5657610b56610f03565b0592915050565b60006806f05b59d3b20000008312610b9b57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610bd1565b6803782dace9d90000008312610bcd57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610bd1565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610c215768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610c5d576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610c9757682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610cd1576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610d0a57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610d435768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610d7c576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610db55768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a1576104a1610ed6565b634e487b7160e01b600052601260045260246000fd5b600082610f2857610f28610f03565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b600060208284031215610f5e57600080fd5b5051919050565b80518015158114610f7557600080fd5b919050565b600080600060608486031215610f8f57600080fd5b610f9884610f65565b9250602084015161ffff81168114610faf57600080fd5b9150610fbd60408501610f65565b90509250925092565b60ff82811682821603908111156104a1576104a1610ed6565b600181815b8085111561101a57816000190482111561100057611000610ed6565b8085161561100d57918102915b93841c9390800290610fe4565b509250929050565b600082611031575060016104a1565b8161103e575060006104a1565b8160018114611054576002811461105e5761107a565b60019150506104a1565b60ff84111561106f5761106f610ed6565b50506001821b6104a1565b5060208310610133831016604e8410600b841016171561109d575081810a6104a1565b6110a78383610fdf565b80600019048211156110bb576110bb610ed6565b029392505050565b60006108fa60ff841683611022565b6001600160a01b03811681146110e757600080fd5b50565b6000806000606084860312156110ff57600080fd5b835161110a816110d2565b602085015190935061111b816110d2565b604085015190925061112c816110d2565b809150509250925092565b60006020828403121561114957600080fd5b6108fa82610f65565b60006020828403121561116457600080fd5b81516001600160801b03811681146108fa57600080fd5b818103818111156104a1576104a1610ed6565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156111f857835163ffffffff16835292840192918401916001016111d6565b50909695505050505050565b80516001600160d81b0381168114610f7557600080fd5b6000602080838503121561122e57600080fd5b82516001600160401b038082111561124557600080fd5b818501915085601f83011261125957600080fd5b81518181111561126b5761126b61118e565b8060051b604051601f19603f830116810181811085821117156112905761129061118e565b6040529182528482019250838101850191888311156112ae57600080fd5b938501935b828510156112d3576112c485611204565b845293850193928501926112b3565b98975050505050505050565b6001600160d81b038281168282160390808211156108e2576108e2610ed6565b60006001600160d81b038381168061131957611319610f03565b9216919091049291505056fea26469706673582212202a8ba5e4f665b01afb5b3bf29725cb6340a339a075dcf498c63f58bf0e41e9f464736f6c63430008170033",
154
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100785760003560e01c806305d7b9a21461007d57806326d89545146100c157806337a7b7d8146100fd57806380f5560514610124578063addccbb31461014b578063c23953d014610161578063e710b82f1461019a578063f9294d8b146101a2575b600080fd5b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100b8565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6100a47f000000000000000000000000000000000000000000000000000000000000000081565b6101536101ac565b6040519081526020016100b8565b6101887f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100b8565b610153610234565b6101aa610306565b005b6000806102026001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000610455565b9050600061020e6104a7565b9050670de0b6b3a76400006102238383610eec565b61022d9190610f19565b9250505090565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663abca0eab7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016102c5929190610f2d565b602060405180830381865afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102029190610f4c565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663873e96007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610399929190610f2d565b606060405180830381865afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610f7a565b925092509250821561040a576040516333b3ceb360e01b815261ffff831660048201526024015b60405180910390fd5b8061045057604051631229555360e01b815263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152602401610401565b505050565b6000806000610463856105e4565b91509150808210610481576104788585610814565b925050506104a1565b808261048d8787610814565b6104979190610eec565b6104789190610f19565b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052c9190610f4c565b905060127f000000000000000000000000000000000000000000000000000000000000000060ff161061059e5761058460127f0000000000000000000000000000000000000000000000000000000000000000610fc6565b61058f90600a6110c3565b6105999082610f19565b6105de565b6105c97f00000000000000000000000000000000000000000000000000000000000000006012610fc6565b6105d490600a6110c3565b6105de9082610eec565b91505090565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064c91906110ea565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b39190610f4c565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190610f4c565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190611137565b80156107f2575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e79190611152565b6001600160801b0316145b156107ff5780935061080c565b61080985826108e9565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610855573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108799190610f4c565b905042811161089357670de0b6b3a76400009150506104a1565b600061089f8585610901565b905060006108ad428461117b565b905060006108c36108be8484610a28565b610a69565b90506108d7670de0b6b3a764000082610a7c565b9450505050506104a1565b5092915050565b60008183116108f857816108fa565b825b9392505050565b60408051600280825260608201835260009283929190602083019080368337019050509050828160008151811061093a5761093a6111a4565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9061097e9085906004016111ba565b600060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109c3919081019061121b565b90508363ffffffff16816000815181106109df576109df6111a4565b6020026020010151826001815181106109fa576109fa6111a4565b6020026020010151610a0c91906112df565b610a1691906112ff565b6001600160d81b031695945050505050565b600080610a3a6201518061016d610eec565b610a448486610eec565b610a4e9190610f19565b9050610a61610a5c82610aab565b610ac1565b949350505050565b600080821215610a7857600080fd5b5090565b600080610a91670de0b6b3a764000085610eec565b9050828181610aa257610aa2610f03565b04949350505050565b60006001600160ff1b03821115610a7857600080fd5b6000680238fd42c5cf03ffff198212158015610ae6575068070c1cc73b00c800008213155b610b255760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610401565b6000821215610b5d57610b3a82600003610ac1565b6a0c097ce7bc90715b34b9f160241b81610b5657610b56610f03565b0592915050565b60006806f05b59d3b20000008312610b9b57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610bd1565b6803782dace9d90000008312610bcd57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610bd1565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412610c215768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412610c5d576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412610c9757682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412610cd1576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412610d0a57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412610d435768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412610d7c576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412610db55768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104a1576104a1610ed6565b634e487b7160e01b600052601260045260246000fd5b600082610f2857610f28610f03565b500490565b6001600160a01b0392909216825263ffffffff16602082015260400190565b600060208284031215610f5e57600080fd5b5051919050565b80518015158114610f7557600080fd5b919050565b600080600060608486031215610f8f57600080fd5b610f9884610f65565b9250602084015161ffff81168114610faf57600080fd5b9150610fbd60408501610f65565b90509250925092565b60ff82811682821603908111156104a1576104a1610ed6565b600181815b8085111561101a57816000190482111561100057611000610ed6565b8085161561100d57918102915b93841c9390800290610fe4565b509250929050565b600082611031575060016104a1565b8161103e575060006104a1565b8160018114611054576002811461105e5761107a565b60019150506104a1565b60ff84111561106f5761106f610ed6565b50506001821b6104a1565b5060208310610133831016604e8410600b841016171561109d575081810a6104a1565b6110a78383610fdf565b80600019048211156110bb576110bb610ed6565b029392505050565b60006108fa60ff841683611022565b6001600160a01b03811681146110e757600080fd5b50565b6000806000606084860312156110ff57600080fd5b835161110a816110d2565b602085015190935061111b816110d2565b604085015190925061112c816110d2565b809150509250925092565b60006020828403121561114957600080fd5b6108fa82610f65565b60006020828403121561116457600080fd5b81516001600160801b03811681146108fa57600080fd5b818103818111156104a1576104a1610ed6565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156111f857835163ffffffff16835292840192918401916001016111d6565b50909695505050505050565b80516001600160d81b0381168114610f7557600080fd5b6000602080838503121561122e57600080fd5b82516001600160401b038082111561124557600080fd5b818501915085601f83011261125957600080fd5b81518181111561126b5761126b61118e565b8060051b604051601f19603f830116810181811085821117156112905761129061118e565b6040529182528482019250838101850191888311156112ae57600080fd5b938501935b828510156112d3576112c485611204565b845293850193928501926112b3565b98975050505050505050565b6001600160d81b038281168282160390808211156108e2576108e2610ed6565b60006001600160d81b038381168061131957611319610f03565b9216919091049291505056fea26469706673582212202a8ba5e4f665b01afb5b3bf29725cb6340a339a075dcf498c63f58bf0e41e9f464736f6c63430008170033",
155
155
  "linkReferences": {},
156
156
  "deployedLinkReferences": {}
157
157
  }
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
- pragma solidity 0.8.23;
3
+ pragma solidity ^0.8.23;
4
4
 
5
5
  import "../../SYBase.sol";
6
6
  import "../../../../interfaces/PirexETH/IPirexETH.sol";
@@ -1,10 +1,16 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity ^0.8.0;
3
3
 
4
- interface IPPtOracle {
4
+ interface IPPtLpOracle {
5
5
  event SetBlockCycleNumerator(uint16 newBlockCycleNumerator);
6
6
 
7
- function getPtToAssetRate(address market, uint32 duration) external view returns (uint256 ptToAssetRate);
7
+ function getPtToAssetRate(address market, uint32 duration) external view returns (uint256);
8
+
9
+ function getLpToAssetRate(address market, uint32 duration) external view returns (uint256);
10
+
11
+ function getPtToSyRate(address market, uint32 duration) external view returns (uint256);
12
+
13
+ function getLpToSyRate(address market, uint32 duration) external view returns (uint256);
8
14
 
9
15
  function getOracleState(
10
16
  address market,
@@ -29,6 +29,7 @@ abstract contract LimitRouterBase is
29
29
 
30
30
  uint128 internal constant _ORDER_DOES_NOT_EXIST = 0;
31
31
  uint128 internal constant _ORDER_FILLED = 1;
32
+ uint256 internal constant NEW_PRIME = 12421;
32
33
 
33
34
  address public feeRecipient;
34
35
 
@@ -114,7 +115,7 @@ abstract contract LimitRouterBase is
114
115
  _transferOut(SY, feeRecipient, totalFee);
115
116
 
116
117
  // toMakers == netTakings
117
- _checkSafety_emitEvents(a.params, orderHashes, fromMakers, out.netTakings, out.netFees, out.notionalVolumes);
118
+ _emitEvents(a.params, orderHashes, fromMakers, out.netTakings, out.netFees, out.notionalVolumes);
118
119
  }
119
120
 
120
121
  function fillPYForToken(
@@ -151,7 +152,7 @@ abstract contract LimitRouterBase is
151
152
  _transferOut(SY, feeRecipient, totalFee);
152
153
 
153
154
  // fromMakers == netMakings
154
- _checkSafety_emitEvents(a.params, orderHashes, out.netMakings, toMakers, out.netFees, out.notionalVolumes);
155
+ _emitEvents(a.params, orderHashes, out.netMakings, toMakers, out.netFees, out.notionalVolumes);
155
156
  }
156
157
 
157
158
  // ----------------- verify & convert functions -----------------
@@ -207,7 +208,7 @@ abstract contract LimitRouterBase is
207
208
  PT = IPYieldToken(YT).PT();
208
209
  }
209
210
 
210
- function _checkSafety_emitEvents(
211
+ function _emitEvents(
211
212
  FillOrderParams[] memory params,
212
213
  bytes32[] memory hashes,
213
214
  uint256[] memory fromMakers,
@@ -217,10 +218,6 @@ abstract contract LimitRouterBase is
217
218
  ) internal {
218
219
  uint256 len = hashes.length;
219
220
 
220
- for (uint256 i = 0; i < len; i++) {
221
- require(fromMakers[i].mulDown(params[i].order.failSafeRate) <= toMakers[i], "LOP: fail safe");
222
- }
223
-
224
221
  for (uint256 i = 0; i < len; i++) {
225
222
  Order memory order = params[i].order;
226
223
  emit OrderFilledV2(
@@ -242,7 +239,7 @@ abstract contract LimitRouterBase is
242
239
  Order memory order,
243
240
  bytes memory signature
244
241
  )
245
- internal
242
+ public
246
243
  view
247
244
  returns (
248
245
  bytes32,
@@ -291,7 +288,14 @@ abstract contract LimitRouterBase is
291
288
 
292
289
  uint256 totalSy = __mintSy_Single(SY, sharedToken, totalMaking);
293
290
  for (uint256 i = l; i < r; i++) {
294
- params[i].makingAmount = (params[i].makingAmount * totalSy) / totalMaking;
291
+ uint256 netToken = params[i].makingAmount;
292
+ uint256 netSy = (netToken * totalSy) / totalMaking;
293
+
294
+ if (_isNewOrder(params[i].order)) {
295
+ require(netToken.mulDown(params[i].order.failSafeRate) <= netSy, "LOP: fail safe");
296
+ }
297
+
298
+ params[i].makingAmount = netSy;
295
299
  }
296
300
  }
297
301
  }
@@ -351,6 +355,15 @@ abstract contract LimitRouterBase is
351
355
  _transferOut(token, params[i].order.receiver, toMakers[i]);
352
356
  }
353
357
  }
358
+
359
+ for (uint256 i = l; i < r; i++) {
360
+ if (_isNewOrder(params[i].order)) {
361
+ uint256 netSy = netSyOuts[i];
362
+ uint256 netToken = toMakers[i];
363
+
364
+ require(netSy.mulDown(params[i].order.failSafeRate) <= netToken, "LOP: fail safe");
365
+ }
366
+ }
354
367
  }
355
368
  }
356
369
 
@@ -412,6 +425,10 @@ abstract contract LimitRouterBase is
412
425
  }
413
426
  }
414
427
 
428
+ function _isNewOrder(Order memory order) internal pure returns (bool) {
429
+ return order.salt % NEW_PRIME == 0;
430
+ }
431
+
415
432
  function hashOrder(Order memory order) public view returns (bytes32) {
416
433
  StaticOrder memory staticOrder;
417
434
  assembly {
@@ -3,13 +3,13 @@ pragma solidity ^0.8.17;
3
3
 
4
4
  import "./PendlePtOracleLib.sol";
5
5
  import "./PendleLpOracleLib.sol";
6
- import "../interfaces/IPPtOracle.sol";
6
+ import "../interfaces/IPPtLpOracle.sol";
7
7
  import "../core/libraries/BoringOwnableUpgradeable.sol";
8
8
 
9
9
  // This is a pre-deployed version of PendlePtOracleLib & PendleLpOracleLib with additional utility functions.
10
10
  // Use of this contract rather than direct library integration resulting in a smaller bytecode size and simpler structure
11
11
  // but slightly higher gas usage (~ 4000 gas, 2 external calls & 1 cold code load)
12
- contract PendlePtLpOracle is BoringOwnableUpgradeable, IPPtOracle {
12
+ contract PendlePtLpOracle is BoringOwnableUpgradeable, IPPtLpOracle {
13
13
  using PendlePtOracleLib for IPMarket;
14
14
  using PendleLpOracleLib for IPMarket;
15
15
 
@@ -44,6 +44,8 @@ contract PendlePtLpOracle is BoringOwnableUpgradeable, IPPtOracle {
44
44
  return IPMarket(market).getPtToAssetRate(duration);
45
45
  }
46
46
 
47
+ /// @notice make sure you have taken into account the risk of not being able to withdraw from SY to Asset
48
+ /// More info in StandardizedYield
47
49
  function getLpToAssetRate(address market, uint32 duration) external view returns (uint256) {
48
50
  return IPMarket(market).getLpToAssetRate(duration);
49
51
  }
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.17;
3
3
 
4
4
  import "../PendleLpOracleLib.sol";
5
- import "../../interfaces/IPPtOracle.sol";
5
+ import "../../interfaces/IPPtLpOracle.sol";
6
6
  import "../../interfaces/GMX/IGlpManager.sol";
7
7
  import "../../core/libraries/math/PMath.sol";
8
8
 
@@ -23,7 +23,7 @@ contract BoringLpGlpOracle {
23
23
  market = _market;
24
24
  glpManager = _glpManager;
25
25
 
26
- (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = IPPtOracle(_ptOracle).getOracleState(
26
+ (bool increaseCardinalityRequired, , bool oldestObservationSatisfied) = IPPtLpOracle(_ptOracle).getOracleState(
27
27
  market,
28
28
  twapDuration
29
29
  );