diff --git a/contracts/VotingEscrow.sol b/contracts/VotingEscrow.sol index 8703dcf..1edddbe 100644 --- a/contracts/VotingEscrow.sol +++ b/contracts/VotingEscrow.sol @@ -868,7 +868,7 @@ contract VotingEscrow is IVotingEscrow, ReentrancyGuardUpgradeable { /// @inheritdoc IVotingEscrow function commitNativeRoots(uint256 _timestamp, bytes32[] memory _pendingRoots) external { - if (_timestamp < nativeSnapshotTime) revert InvalidTimestamp(); + if (_timestamp < nativeSnapshotTime || _timestamp > block.timestamp) revert InvalidTimestamp(); if (msg.sender != team) revert NotTeam(); for (uint256 i = 0; i < _pendingRoots.length; i++) { if (bytes32(0) == _pendingRoots[i]) revert InvalidRoot(); diff --git a/src/types/factories/contracts/VotingEscrow__factory.ts b/src/types/factories/contracts/VotingEscrow__factory.ts index 82621bc..090ddc5 100644 --- a/src/types/factories/contracts/VotingEscrow__factory.ts +++ b/src/types/factories/contracts/VotingEscrow__factory.ts @@ -2393,7 +2393,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080806040523461001757615cee90816200001d8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063018a3e4c1461055257806301ffc9a71461054d578063047fc9aa1461054857806306fdde0314610543578063081812fc1461053e578063095cf5c614610539578063095ea7b3146105345780630ec84dda1461052f57806317d70f7c1461052a57806318160ddd1461052557806320606b701461052057806323b872dd1461051b57806325a62c7d146105165780632818d885146105115780632e1a7d4d1461050c5780632e720f7d14610507578063313ce5671461050257806333230dc0146104fd57806335b0f6bd146104f85780633d085a37146104f357806342842e0e146104ee578063430c2081146104e957806344acb42a146104e457806346c96aac146104df5780634b19becc146104da5780634bc2a657146104d55780634bf5d7e9146104d05780634d01cb66146104cb5780634d03c048146104c65780634d6fb775146104c157806350589793146104bc57806354fd4d50146104b75780635594a045146104b25780635a4f459a146104ad5780635fa7b584146104a85780636352211e146104a3578063650e15051461049e5780636837f96e146104995780636970e202146104945780636ba024511461048f5780636d46a1db1461048a578063704b6c02146104855780637099b8571461048057806370a082311461047b5780637af5122c146104765780637ecebe0014610471578063834b0b691461046c57806385f2aef2146104675780638ad4c447146104625780638bf9d84c1461045d5780638e539e8c146104445780638fbb38ff14610458578063900cf0cf1461045357806391ddadf41461044e57806395d89b4114610449578063981b24d0146104445780639cf1969b1461043f5780639d507b8b1461043a578063a224cee714610435578063a22cb46514610430578063b1548afc1461042b578063b2383e5514610426578063b45a3c0e14610421578063b88d4fde1461041c578063bb941cff14610417578063c19dcab614610412578063c2c4c5c11461040d578063c87b56dd14610408578063ccd9275f14610403578063d1c2babb146103fe578063d68750a6146103f9578063d7ffbea6146103f4578063d938ebf9146103ef578063d9a34952146103ea578063e0514aba146103e5578063e58f5947146103e0578063e75b1c2e146103db578063e7a324dc146103d6578063e7e242d4146103d1578063e985e9c5146103cc578063ef5e8f1d146103c7578063f04cb3a8146103c2578063f52a36f7146103bd5763f851a440146103b857600080fd5b6135fd565b6135ce565b613501565b6134a7565b61344a565b61342c565b6133f1565b613262565b613236565b613215565b6131e5565b613127565b6130a6565b613088565b612d13565b612cf5565b612c27565b6128c4565b6128a6565b612872565b6127ea565b612776565b612651565b612625565b612580565b6124f2565b612376565b61234a565b612274565b612304565b6122e1565b6122c3565b612292565b61222c565b6121f8565b6121cf565b611f8a565b611f50565b611f24565b611eea565b611eab565b611e64565b611e2a565b611cea565b611ca6565b611c19565b611bfb565b611bc7565b611b56565b611b02565b611ad9565b611abd565b611a68565b6119b4565b61193a565b61191c565b6118cd565b611878565b611513565b6114ea565b61146d565b61143c565b611403565b6113c4565b61120c565b6111b0565b61118a565b611117565b610ebc565b610dbb565b610c8d565b610c0d565b610b9d565b610b79565b610b5b565b6109dd565b610887565b61081c565b6107a8565b610774565b6105da565b610597565b610567565b600091031261056257565b600080fd5b34610562576000366003190112610562576020604554604051908152f35b6001600160e01b031981160361056257565b34610562576020366003190112610562576004356105b481610585565b63ffffffff60e01b16600052603a602052602060ff604060002054166040519015158152f35b34610562576000366003190112610562576020604454604051908152f35b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761062957604052565b6105f8565b608081019081106001600160401b0382111761062957604052565b60a081019081106001600160401b0382111761062957604052565b6001600160401b03811161062957604052565b604081019081106001600160401b0382111761062957604052565b90601f801991011681019081106001600160401b0382111761062957604052565b604051906106c08261060e565b565b604051906106c082610649565b6001600160401b03811161062957601f01601f191660200190565b604051906106f782610677565b601282527113585c9cda185b1b08111053c81d9953919560721b6020830152565b60005b83811061072b5750506000910152565b818101518382015260200161071b565b9060209161075481518092818552858086019101610718565b601f01601f1916010190565b90602061077192818152019061073b565b90565b34610562576000366003190112610562576107a46107906106ea565b60405191829160208352602083019061073b565b0390f35b3461056257602036600319011261056257600435600052603e602052602060018060a01b0360406000205416604051908152f35b600435906001600160a01b038216820361056257565b602435906001600160a01b038216820361056257565b35906001600160a01b038216820361056257565b34610562576020366003190112610562576108356107dc565b603554906001600160a01b039081831633036108755716908115610863576001600160a01b03191617603555005b60405163d92e233d60e01b8152600490fd5b604051633a7cfa5d60e21b8152600490fd5b34610562576040366003190112610562576108a06107dc565b602435906108c86108bb83600052603c602052604060002090565b546001600160a01b031690565b6001600160a01b039181831691821561086357838216938484146109cb5761093d6109449133906109066108bb8a600052603c602052604060002090565b161492610926339160018060a01b0316600052603f602052604060002090565b9060018060a01b0316600052602052604060002090565b5460ff1690565b901590816109c2575b506109b0576109899061096a85600052603e602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b60405163390cdd9b60e21b8152600490fd5b9050153861094d565b60405163367558c360e01b8152600490fd5b604080600319360112610562576004908135916024356109fb6140d9565b83600052604d6020528260002054610b4c57610a29610a2485600052604a602052604060002090565b614027565b91610a49610a446108bb87600052604b602052604060002090565b6113aa565b5415610b3e578115610b30576000610a628451600f0b90565b600f0b1315610b2257602083015142101580610b09575b610afb57600080516020615cc2833981519152610ad98686610acb8787610aa284830151151590565b610ae2575b610ac581610abf876000526054602052604060002090565b546159e4565b84614df1565b519081529081906020820190565b0390a160018055005b610af6610af182605254613dc5565b605255565b610aa7565b83516307b7d7dd60e51b8152fd5b50610b1d610b1985850151151590565b1590565b610a79565b835163f90e998d60e01b8152fd5b8351631f2a200560e01b8152fd5b835163c1ab6dc160e01b8152fd5b509051632ad7063f60e11b8152fd5b34610562576000366003190112610562576020603b54604051908152f35b34610562576000366003190112610562576020610b9542615890565b604051908152f35b346105625760003660031901126105625760206040517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8668152f35b6060906003190112610562576001600160a01b0390600435828116810361056257916024359081168103610562579060443590565b3461056257610c26610c1e36610bd8565b903392613b72565b005b6001600160401b0381116106295760051b60200190565b9291610c4a82610c28565b91610c586040519384610692565b829481845260208094019160051b810192831161056257905b828210610c7e5750505050565b81358152908301908301610c71565b3461056257604080600319360112610562576004908135906024356001600160401b038111610562573660238201121561056257610cd49036906024818701359101610c3f565b6045548310610dab57603554610cfa906001600160a01b03165b6001600160a01b031690565b3303610d9b5760005b8151811015610d3a57610d168183613795565b5115610d2a57610d259061376b565b610d03565b825163504570e360e01b81528590fd5b50610d9683610d697fd0fcfc93c3300512f63e75c1be4e235aed5841c3e45b6c9a75d7d1148f30b0cd9361527e565b610d7281604655565b603554610d87906001600160a01b0316610cee565b93519081529081906020820190565b0390a2005b8151633a7cfa5d60e21b81528490fd5b815163b7d0949760e01b81528490fd5b3461056257602036600319011261056257610dd46107dc565b603554610de9906001600160a01b0316610cee565b3303610875576001600160a01b03811660009081526038602052604090205415610eaa576001600160a01b0381166000908152603860205260409020610e2f9054613d96565b4210610e98576001600160a01b038116600090815260386020526040902054610e57826113aa565b556001600160a01b031660008181526038602052604081208190557fc1ebeeae6519aa11b0c58d4f0ced8b3685c5a64f82b7b1f40bb37e39f5f02f359080a2005b60405163514f220f60e01b8152600490fd5b60405163224a1b1160e11b8152600490fd5b346105625760203660031901126105625760048035610ed96140d9565b610eed81600052604d602052604060002090565b5461110757610eff610b198233613b07565b6110f757610f1a61093d826000526053602052604060002090565b6110e757610f35610a2482600052604a602052604060002090565b91604090610f4582850151151590565b6110d957602084015142106110cb5750610f68610f638451600f0b90565b615c02565b92610f728361566a565b610f7a6106b3565b93610fa86000958681528660208201528685820152610fa386600052604a602052604060002090565b614acd565b610fde60445492610fc1610fbc8486613e79565b604455565b610fc96106b3565b9087825287602083015287868301528661425c565b6000848152604b602052604090206001600160a01b0390610ffe906108bb565b16806110a357508480828015611099575b8280929181923390f1156110945761106e61108591600080516020615c82833981519152955b855182815242602082015233907f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca9490604090a383613e79565b925191825260208201929092529081906040820190565b0390a161109160018055565b80f35b613afb565b6108fc915061100f565b81600080516020615c82833981519152956110c66110859461106e943390615631565b611035565b905163342ad40160e11b8152fd5b90516334d10f9560e11b8152fd5b50604051637c9a1cf960e01b8152fd5b5060405163390cdd9b60e21b8152fd5b50604051632ad7063f60e11b8152fd5b34610562576020366003190112610562576111306107dc565b6035546001600160a01b03919082163303610875571660018060a01b031960375416176037557f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c60408051600081526000196020820152a1005b3461056257600036600319011261056257602060405160128152f35b8015150361056257565b34610562576040366003190112610562576111c96107dc565b6024356111d5816111a6565b6035546001600160a01b03908116330361087557610c269216600052605160205260406000209060ff801983541691151516179055565b346105625760203660031901126105625760043561123481600052604d602052604060002090565b5461139857611246610b198233613b07565b6109b05761126161093d826000526053602052604060002090565b6113865761127c610a2482600052604a602052604060002090565b90604082019061128f610b198351151590565b611374578061136f9261132c8560006112bb610f63600080516020615cc28339815191529951600f0b90565b936112cb610af186605254613e79565b6112e86112e36112da42613da6565b62093a80900490565b614146565b6020840152526112f784615a4f565b61131881611312610a2487600052604a602052604060002090565b8661425c565b610fa384600052604a602052604060002090565b6040805191825242602083015233917f668d293c0a181c1f163fd0d3c757239a9c17bd26c5e483150e374455433b27fa9190a36040519081529081906020820190565b0390a1005b604051632188f8ab60e01b8152600490fd5b604051637c9a1cf960e01b8152600490fd5b604051632ad7063f60e11b8152600490fd5b6001600160a01b0316600090815260336020526040902090565b34610562576020366003190112610562576001600160a01b036113e56107dc565b166000526051602052602060ff604060002054166040519015158152f35b346105625761141136610bd8565b6040519160208301938385106001600160401b0386111761062957610c269460405260008452613c99565b3461056257604036600319011261056257602061146361145a6107dc565b60243590613b07565b6040519015158152f35b3461056257604036600319011261056257611486614057565b50600435600052604e60205260a06114ad6114a76024356040600020614082565b50614099565b6114e86040518092608080918051600f0b84526020810151600f0b602085015260408101516040850152606081015160608501520151910152565bf35b34610562576000366003190112610562576034546040516001600160a01b039091168152602090f35b3461056257604080600319360112610562576004908135906115336140d9565b61154782600052604d602052604060002090565b54611869576115636108bb83600052603c602052604060002090565b906001600160a01b0382161561185a576001600160a01b038216600090815260516020526040902061159890610b199061093d565b8061181f575b611810576115b961093d846000526053602052604060002090565b611801576115ca610b198433613b07565b6117f2576115e5610a2484600052604a602052604060002090565b9160208301908151421015806117dd575b6117cd57611605602435615bd3565b9485600f0b80156117bd5761162461161e8751600f0b90565b600f0b90565b13156117ad576107a49495965061163a8161566a565b61168a6116456106b3565b61166d6000918281528260208201528288820152610fa385600052604a602052604060002090565b6116756106b3565b9080825280602083015286820152878361425c565b6116a86116a18861169c8951600f0b90565b6141a9565b600f0b8752565b7f8303de8187a6102fdc3fe20c756dddd68df0ae027b77e2391c19a855e0821f336117136116d68885615751565b9788946117076116f36108bb87600052604b602052604060002090565b61096a88600052604b602052604060002090565b600f8b900b8252615751565b9788946117306116f36108bb86600052604b602052604060002090565b61178b61175d611757610f6361175089600052604a602052604060002090565b54600f0b90565b93615c02565b91518851338152602081019490945260408401929092526060830191909152426080830152819060a0820190565b0390a461179760018055565b5191825260208201929092529081906040820190565b8351636b2f218360e01b81528790fd5b8451631f2a200560e01b81528890fd5b82516307b7d7dd60e51b81528690fd5b506117ed610b1984860151151590565b6115f6565b5163390cdd9b60e21b81528390fd5b51637c9a1cf960e01b81528390fd5b51633df16fd960e21b81528390fd5b50600080526051602052611855610b197f8ef8f4d605e66180b95224f4694e9b85c7291dcee0896b082174f63e91c5677061093d565b61159e565b51632c2151ef60e11b81528390fd5b51632ad7063f60e11b81529050fd5b34610562576020366003190112610562576118916107dc565b603454906001600160a01b039081831633036118bb576001600160a01b0319909216911617603455005b60405163c18384c160e01b8152600490fd5b34610562576000366003190112610562576107a46040516118ed81610677565b600e81526d06d6f64653d74696d657374616d760941b602082015260405191829160208352602083019061073b565b34610562576000366003190112610562576020605254604051908152f35b60803660031901126105625761194e6107dc565b606435906001600160a01b03821682036105625760209161197e916119716140d9565b60443590602435906148eb565b60018055604051908152f35b6060906003190112610562576004356001600160a01b038116810361056257906024359060443590565b34610562576119c23661198a565b6040516332b53f5360e11b815260566004820152605560248201526001600160a01b0390931660448401526064830191909152608482015260208160a48173__$d6f092accc63e0bf8f1744f29529542834$__5af48015611094576107a491600091611a3a575b506040519081529081906020820190565b611a5b915060203d8111611a61575b611a538183610692565b810190615813565b38611a29565b503d611a49565b34610562576020366003190112610562576004356000526056602052602065ffffffffffff60406000205416604051908152f35b60405190611aa982610677565b60058252640322e302e360dc1b6020830152565b34610562576000366003190112610562576107a4610790611a9c565b34610562576000366003190112610562576037546040516001600160a01b039091168152602090f35b3461056257604036600319011261056257602435611b1f816111a6565b6034546001600160a01b031633036118bb57610c2690600435600052605360205260406000209060ff801983541691151516179055565b3461056257602036600319011261056257611b6f6107dc565b6035546001600160a01b0391908216330361087557611b8d816113aa565b5415610eaa576000611b9e826113aa565b55167f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd3600080a2005b3461056257602036600319011261056257600435600052603c602052602060018060a01b0360406000205416604051908152f35b602061197e611c093661198a565b90611c126140d9565b33926148eb565b3461056257602036600319011261056257611c326107dc565b6035546001600160a01b03919082163303610875576001600160a01b03811660009081526038602052604090205415610eaa576001600160a01b038116600090815260386020526040812055167f7a97490440826fccf62ae2502464143548d7bc46e1c207bad4d0e5c799d54d82600080a2005b3461056257602036600319011261056257600435604754811015611ce5576047600052600080516020615c628339815191520154604051908152602090f35b61377f565b3461056257600080600319360112611e2757603654611d11906001600160a01b0316610cee565b3303611e15576048805415611e0357815b604754811015611d705780611d66611d5c611d4c611d42611d6b95613fd2565b90549060031b1c90565b6000526049602052604060002090565b805460ff19169055565b61376b565b611d22565b50815b8154811015611da45780611d66611d92611d4c611d42611d9f95613fed565b805460ff19166001179055565b611d73565b82611dad61531e565b611db8604654604555565b611dc26000604655565b6036546046546040519081526001600160a01b03909116907ff6e39efe24bb364805ce09e480b8fd49ba67811e6b780c864620d8f80fdc061b90602090a280f35b60405163fd055c4160e01b8152600490fd5b604051637bfa4b9f60e01b8152600490fd5b80fd5b34610562576020366003190112610562576001600160a01b03611e4b6107dc565b1660005260336020526020604060002054604051908152f35b3461056257602036600319011261056257611e7d6107dc565b603654906001600160a01b03908183163303611e155716908115610863576001600160a01b03191617603655005b3461056257602036600319011261056257600435604854811015611ce5576048600052600080516020615c228339815191520154604051908152602090f35b34610562576020366003190112610562576001600160a01b03611f0b6107dc565b16600052603d6020526020604060002054604051908152f35b3461056257602036600319011261056257600435600052604c6020526020604060002054604051908152f35b34610562576020366003190112610562576001600160a01b03611f716107dc565b1660005260576020526020604060002054604051908152f35b346105625760e0366003190112610562576004608435602435823560443560643560ff851685036105625760c435916fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116121be57611fde6106ea565b805160208092012093611fef611a9c565b805190830120604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818601908152602081019890985287820192909252466060880152306080880152958160a082010391601f199283810182526120569082610692565b51902086517f9947d5709c1682eaa3946b2d84115c9c0d1c946b149d76e69b457458b42ea29e858201908152602081018a9052604081018b90526060810187905260808101889052908060a083010384810182526120b49082610692565b519020875161190160f01b86820190815260028101939093526022830191909152909181604284010390810182526120ec9082610692565b519020855190815260ff98909816602089015260a4356040890152606088015260008080529687906080905a600190fa15611094578551612130610b198683613b07565b6121ae576001600160a01b0381161561219e576001600160a01b03166000908152605760205260409020908154916121678361376b565b90550361218e57421161217f57509061109191615b34565b51630819bdcd60e01b81528490fd5b8151633ab3447f60e11b81528690fd5b8351638baa579f60e01b81528890fd5b835163390cdd9b60e21b81528890fd5b6040516317e97eb760e31b81528790fd5b34610562576000366003190112610562576035546040516001600160a01b039091168152602090f35b3461056257602036600319011261056257612211614057565b50600435600052603960205260a06114ad6040600020614099565b34610562576040366003190112610562576001600160a01b0361224d6107dc565b16600052604160205260406000206024356000526020526020604060002054604051908152f35b34610562576020366003190112610562576020610b95600435615890565b34610562576020366003190112610562576004356000526053602052602060ff604060002054166040519015158152f35b34610562576000366003190112610562576020604354604051908152f35b3461056257600036600319011261056257602060405165ffffffffffff42168152f35b34610562576000366003190112610562576107a460405161232481610677565b60058152641d9953919560da1b602082015260405191829160208352602083019061073b565b3461056257602036600319011261056257600435600052604d6020526020604060002054604051908152f35b3461056257604080600319360112610562576004908135916123966140d9565b6123aa83600052604d602052604060002090565b546124e4576123bc610b198433613b07565b6124d6576123da610a446108bb85600052604b602052604060002090565b54156124c8576123f7610a2484600052604a602052604060002090565b9061240483830151151590565b6124ba5761241a6112e36112da60243542613dc5565b906020830142815111156124ab5760006124358551600f0b90565b600f0b131561249c575182111561248e5761244f42613da6565b821161248057600080516020615cc28339815191526124748686610acb878784614b14565b0390a1610c2660018055565b835163f761f1cd60e01b8152fd5b8351638e6b5b6760e01b8152fd5b50835163f90e998d60e01b8152fd5b5083516307b7d7dd60e51b8152fd5b82516334d10f9560e11b8152fd5b905163c1ab6dc160e01b8152fd5b905163390cdd9b60e21b8152fd5b9051632ad7063f60e11b8152fd5b3461056257602080600319360112610562576004356001600160401b03811161056257366023820112156105625780600401359061252f82610c28565b9161253d6040519384610692565b80835260248484019160051b8301019136831161056257602401905b82821061256957610c2684613626565b84809161257584610808565b815201910190612559565b34610562576040366003190112610562576125996107dc565b6024356125a5816111a6565b6001600160a01b038216913383146109cb57816125e46125f59233600052603f60205260406000209060018060a01b0316600052602052604060002090565b9060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b346105625760203660031901126105625760043560005260546020526020604060002054604051908152f35b6040806003193601126105625760049081359160243561266f6140d9565b83600052604d6020528260002054610b4c5761268b8433613b07565b15612767576126a7610a2485600052604a602052604060002090565b916126c2610a446108bb87600052604b602052604060002090565b5415610b3e578115610b305760006126db8451600f0b90565b600f0b1315610b2257602083015142101580612752575b610afb57600080516020615cc2833981519152610ad98686610acb878761271b84830151151590565b61273e575b61273881610abf876000526054602052604060002090565b84614f4f565b61274d610af182605254613dc5565b612720565b50612762610b1985850151151590565b6126f2565b50905163390cdd9b60e21b8152fd5b346105625760203660031901126105625761278f614008565b50600435600052604a602052606060406000206040516127ae8161060e565b8154600f0b91828252604060ff600260018401549360208601948552015416920191151582526040519283525160208301525115156040820152f35b34610562576080366003190112610562576128036107dc565b61280b6107f2565b606435916001600160401b038311610562573660238401121561056257826004013591612837836106cf565b926128456040519485610692565b8084523660248287010111610562576020816000926024610c269801838801378501015260443591613c99565b3461056257602036600319011261056257600435600052604b602052602060018060a01b0360406000205416604051908152f35b34610562576000366003190112610562576020604754604051908152f35b3461056257600080600319360112611e27576128de6140d9565b6040818180516128ed8161060e565b8281528260208201520152818180516129058161060e565b8281528260208201520152612918614057565b50612921614057565b506043549061292e6106c2565b83815283602082015242828201524360608201528360808201529082612c03575b80820190815190856129628551600f0b90565b602086018051600f0b946060880195608087519661299d828c0151936129936129896106c2565b988990600f0b9052565b600f0b6020880152565b850194838652606081019788520152839087514211612bd4575b939192906129cd62093a80869998979904614146565b9783985b60ff8a10612a4c575b50505050505050505050600182141580612a34575b15612a1f57612a13612a03612a1893613e6a565b6000526039602052604060002090565b6141f3565b6001805580f35b612a1382612a03612a2f94604355565b612a18565b50426001612a44612a0385613e6a565b0154146129ef565b612a608b919c939495969798999a9c613d96565b9786428a1115612b9657889950979596974299612aca93612ab2612aa88d612aa2612a9d612ac398612a97612ab9985b51600f0b90565b93613e79565b615bd3565b9061412f565b8251600f0b6141a9565b600f0b9052565b8651600f0b6141ce565b600f0b8552565b85612ad961161e8c51600f0b90565b12612b8e575b85612aee61161e8651600f0b90565b12612b86575b612b348792888b52612b2d8351612b27612b19612b138d8c5190613e79565b89614176565b670de0b6b3a7640000900490565b90613dc5565b8a52613db7565b9a8a8c428a03612b5c57505050505050505050509050439052388080808087818080806129da565b612b789291612a13611d66926000526039602052604060002090565b9897969593949291956129d1565b858452612af4565b858a52612adf565b5087612ab9612aca93612ab2612aa88d612aa2612a9d9d9e9c9d612ac398612a97612bce611750866000526050602052604060002090565b99612a90565b9050612bfd612bec612be7885143613e79565b61415e565b612bf7895142613e79565b90614189565b906129b7565b9050612c21612c1c836000526039602052604060002090565b614099565b9061294f565b34610562576020366003190112610562576004356000818152603c602052604090206001600160a01b0390612c5b906108bb565b1615612ce357603754612c9f91600091612c7f90610cee906001600160a01b031681565b604051808095819463c87b56dd60e01b8352600483019190602083019252565b03915afa8015611094576107a491600091612cc2575b5060405191829182610760565b612cdd913d8091833e612cd58183610692565b810190613a9d565b38612cb5565b604051634a1850bf60e11b8152600490fd5b34610562576000366003190112610562576020604854604051908152f35b34610562576040806003193601126105625760049081359060243590612d376140d9565b612d4b83600052604d602052604060002090565b541580159061306b575b61305c57612d7061093d846000526053602052604060002090565b6118015781831461304d57612d926108bb84600052604b602052604060002090565b612dac610cee6108bb85600052604b602052604060002090565b6001600160a01b039091160361303e57612dc9610b198433613b07565b6117f257612dda610b198333613b07565b6117f257612df5610a2483600052604a602052604060002090565b926020808501805142101580613029575b61301957612e21610a2484600052604a602052604060002090565b96612e2e85890151151590565b61300b57508682015190518593929184918082106130035750965b612e528461566a565b612e5a6106b3565b600081528381016000905286810160009052612e8085600052604a602052604060002090565b90612e8a91614acd565b612e926106b3565b600080825284820181905287820152612eac908a8661425c565b612eb4614008565b80988251612ec290600f0b90565b8b51600f0b612ed0916141ce565b600f0b825282880151859015151515838a01908152511515600014612fa2610f63600080516020615cc28339815191529e612a906124749f610fa37f986e3c958e3bdf1f58c2150357fc94624dd4e77b08f9802d8e2e885fa0d6a1989b612fea99612faa99610f6399612ffb575050612f5b610af1612f53610f638851600f0b90565b605254613dc5565b612f87612f72826000526054602052604060002090565b54612f81610f638851600f0b90565b906159e4565b612f92838d8361425c565b600052604a602052604060002090565b9451600f0b90565b94612fb9610f638451600f0b90565b92015188519384526020840195909552604083019190915260608201939093524260808201523392819060a0820190565b0390a4519081529081906020820190565b840152612f5b565b905096612e49565b84516334d10f9560e11b8152fd5b83516307b7d7dd60e51b81528790fd5b50613039610b1985880151151590565b612e06565b5163c1ab6dc160e01b81528390fd5b516349da877960e11b81528390fd5b51632ad7063f60e11b81528390fd5b5061308082600052604d602052604060002090565b541515612d55565b34610562576000366003190112610562576020604654604051908152f35b346105625760c0366003190112610562576130bf6107f2565b60a4356001600160401b038082116105625736602383011215610562578160040135908111610562573660248260051b84010111610562576107a49260246131179301906084359060643590604435906004356153ce565b6040519081529081906020820190565b34610562576020366003190112610562576131406107dc565b603554613155906001600160a01b0316610cee565b3303610875576001600160a01b038116600090815260386020526040902054158015906131d3575b6131c1576001600160a01b031660008181526038602052604081204290557f63e1222b8b6e8d5156b4ce9fa3245ebee8133d73f318b1e027623110139374519080a2005b6040516345e20c9f60e11b8152600490fd5b506131dd816113aa565b54151561317d565b34610562576040366003190112610562576004356132038133613b07565b156109b057610c269060243590615b34565b34610562576040366003190112610562576020610b95602435600435615822565b3461056257602036600319011261056257600435600052604f6020526020604060002054604051908152f35b3461056257602036600319011261056257600480359061328c82600052604d602052604060002090565b546133e2576132ab610a446108bb84600052604b602052604060002090565b54156133d3576132be610b198333613b07565b6133c4576132d9610a2483600052604a602052604060002090565b906040918281016132ea8151151590565b6133b457602082019283514210156133a65760006133098451600f0b90565b600f0b131561339857600080516020615cc283398151915261136f87878188613357896112f78a6000613340610f638551600f0b90565b95613350610af188605254613dc5565b5260019052565b825190815242602082015233907f793cb7a30a4bb8669ec607dfcbdc93f5a3e9d282f38191fddab43ccaf79efb8090604090a3519081529081906020820190565b845163f90e998d60e01b8152fd5b84516307b7d7dd60e51b8152fd5b83516334d10f9560e11b81528390fd5b60405163390cdd9b60e21b8152fd5b60405163c1ab6dc160e01b8152fd5b604051632ad7063f60e11b8152fd5b346105625760003660031901126105625760206040517f9947d5709c1682eaa3946b2d84115c9c0d1c946b149d76e69b457458b42ea29e8152f35b34610562576020366003190112610562576020610b956004356157ed565b3461056257604036600319011261056257602060ff61349b61346a6107dc565b6134726107f2565b6001600160a01b039182166000908152603f865260408082209290931681526020919091522090565b54166040519015158152f35b3461056257600080600319360112611e27576036546001600160a01b031633819003611e15577f83688b5eb1a95c504b14adff083974b1aafd3c955adf0f3901c827feb8035e2f6020604654604051908152a28060465580f35b3461056257604080600319360112610562576024359065ffffffffffff8216809203610562578060606107a49382516135398161062e565b60009281848093528260208201528286820152015260043582526055602052828220908252602052209060038151926135718461062e565b8054845260018060a01b03600182015416602085015260028101548385015201546060830152519182918291909160608060808301948051845260018060a01b036020820151166020850152604081015160408501520151910152565b346105625760203660031901126105625760043560005260506020526020604060002054600f0b604051908152f35b34610562576000366003190112610562576036546040516001600160a01b039091168152602090f35b6000549060ff8260081c161580928193613747575b8115613727575b50156136cb57613668908261365f600160ff196000541617600055565b6136b2576137a9565b61366e57565b61367e61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1565b6136c661010061ff00196000541617600055565b6137a9565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613739575b5038613642565b6001915060ff161438613732565b600160ff821610915061363b565b634e487b7160e01b600052601160045260246000fd5b600019811461377a5760010190565b613755565b634e487b7160e01b600052603260045260246000fd5b8051821015611ce55760209160051b010190565b6137b1613a7d565b427f44496df070da3f045064f6d6f394484a8de10d5710290d619b67d975ec89320f81905560358054336001600160a01b0319918216811790925560368054821683179055603480549091169091179055437f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f70991557f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f70990556301ffc9a760e01b600052603a6020526001906138837fe67567b542422628d2ad4d20f80dc38ede16c5a7b33949e9c027d1e5cf454670611d92565b6380ac58cd60e01b600052603a6020526138bc7fc836460f3bb264bafcdae79f65343efba23342941b203cf910cffa6d9cf1d5e4611d92565b635b5e139f60e01b600052603a6020526138f57fc2252c564b23a87436d95f15212975e582e08603bfc9a20d1675a625ea633227611d92565b632483248360e11b600052603a60205261392e7f7efee513bedcf284227dff824356504cda8ca730b7cb3b2a3f2291a7c7796bbc611d92565b63da287a1d60e01b600052603a6020526139677f6fa1b599ecca5b7e21a079e43e4f1ee01e74cd7c15aea02ed70bfc0337de9701611d92565b6000917fc1ebeeae6519aa11b0c58d4f0ced8b3685c5a64f82b7b1f40bb37e39f5f02f3583818180a283825b6139bd575b50505050603b5490600080516020615ca2833981519152823083838180a430908280a4565b8351811015613a1857806139e46139d76139fc9387613795565b516001600160a01b031690565b6001600160a01b0381169081613a02575b505061376b565b82613993565b613a0c42916113aa565b55838780a238806139f5565b613998565b15613a2457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613a9760ff60005460081c16613a9281613a1d565b613a1d565b60018055565b602081830312610562578051906001600160401b038211610562570181601f82011215610562578051613acf816106cf565b92613add6040519485610692565b81845260208284010111610562576107719160208085019101610718565b6040513d6000823e3d90fd5b6000918252603c6020908152604080842054603e8352818520546001600160a01b03918216808752603f8552838720958316808852959094529190942091831493169091149060ff905416908215613b6a575b508115613b65575090565b905090565b915038613b5a565b919283613b7e91613b07565b156109b0576000838152603c602052604090206001600160a01b0391908290541692828116809403613c115784613bd691613bc382600052603e602052604060002090565b80546001600160a01b0319169055613e86565b613be081856158e9565b613bea8482613dd2565b836000526040602052436040600020551690600080516020615ca2833981519152600080a4565b6040516330cd747160e01b8152600490fd5b90816020910312610562575161077181610585565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526107719291019061073b565b3d15613c94573d90613c7a826106cf565b91613c886040519384610692565b82523d6000602084013e565b606090565b92919091613ca933838587613b72565b823b613cb6575b50505050565b613cde926020926000604051809681958294630a85bd0160e11b9a8b85523360048601613c38565b03926001600160a01b03165af160009181613d49575b50613d1f57613d01613c69565b80519081613d1a57604051626b5e2960e61b8152600490fd5b602001fd5b6001600160e01b03191603613d375738808080613cb0565b60405163279929b160e21b8152600490fd5b613d6b91925060203d8111613d72575b613d638183610692565b810190613c23565b9038613cf4565b503d613d59565b15613d8057565b634e487b7160e01b600052600160045260246000fd5b9062093a80820180921161377a57565b90630784ce00820180921161377a57565b906001820180921161377a57565b9190820180921161377a57565b613e5c916000818152602090603c8252604260018060a01b0392604093613dfe81868620541615613d79565b858452603c825284842080546001600160a01b0319166001600160a01b03891617905586168352603d815283832054946041825284842086855282528085852055835252205560018060a01b0316600052603d602052604060002090565b613e668154613db7565b9055565b60001981019190821161377a57565b9190820391821161377a57565b6000828152603c60205260408120546001600160a01b0383811691613ead91168214613d79565b838252603c6020526040822080546001600160a01b03191690558152603d6020526040812054600019810190811161377a578382613ef8613f5d966000526042602052604060002090565b54838103613f6757506001600160a01b0385166000908152604160205260409020613f4293613f31915b90600052602052604060002090565b556000526042602052604060002090565b556001600160a01b03166000908152603d6020526040902090565b613e668154613e6a565b83613f3191613fb4613f92613f4297613f228b60018060a01b03166000526041602052604060002090565b5480613f3184613f228d60018060a01b03166000526041602052604060002090565b556001600160a01b0387166000908152604160205260409020613f22565b604754811015611ce557604760005260206000200190600090565b604854811015611ce557604860005260206000200190600090565b604051906140158261060e565b60006040838281528260208201520152565b906040516140348161060e565b604060ff600283958054600f0b8552600181015460208601520154161515910152565b6040519061406482610649565b60006080838281528260208201528260408201528260608201520152565b90633b9aca00811015611ce55760021b0190600090565b906040516140a681610649565b608060038294805480600f0b8552831d600f0b602085015260018101546040850152600281015460608501520154910152565b6002600154146140ea576002600155565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b90600f0b90600f0b029081600f0b91820361377a57565b9062093a809182810292818404149015171561377a57565b90670de0b6b3a7640000918083029283040361377a57565b8181029291811591840414171561377a57565b8115614193570490565b634e487b7160e01b600052601260045260246000fd5b600f91820b910b039060016001607f1b0319821260016001607f1b0383131761377a57565b600f91820b910b019060016001607f1b0319821260016001607f1b0383131761377a57565b815160208301516001600160801b039091166001600160801b0319608092831b16178255604083015160018301556060830151600283015590910151600390910155565b9190614246576106c0916141f3565b634e487b7160e01b600052600060045260246000fd5b91614265614057565b61426d614057565b926000928360435487614798575b6142836106c2565b6000815260006020820152426040820152436060820152600060808201528161477b575b60408101518151600f0b6020830151600f0b60608401516142e66080860151926142dc6142d26106c2565b958690600f0b9052565b600f0b6020850152565b83604084015260608301526080820152600060408401514211614753575b61431662093a80849396959404614146565b946000925b60ff84106145e6575b505050509091508861452b575b600182141580614513575b156144fe57612a13612a0361435093613e6a565b8661435f575b50505050505050565b602080930193428551116144ac575b50500190815190428211614447575b505050504260408201524360608201526143a182600052604f602052604060002090565b549182151580614422575b156143e3576143d7926143cc6143d192600052604e602052604060002090565b614082565b90614237565b38808080808080614356565b6143d1906143cc6143f661441d9561376b565b918261440c82600052604f602052604060002090565b55600052604e602052604060002090565b6143d7565b5061443b836143cc83600052604e602052604060002090565b506001015442146143ac565b5110614455575b808061437d565b6144856144736144a59361446d6020870151600f0b90565b906141a9565b91516000526050602052604060002090565b80546001600160801b0319166001600160801b0392909216919091179055565b388061444e565b8301516144e1916144c091600f0b906141ce565b838301518551146144e8575b61448585516000526050602052604060002090565b388061436e565b6144f99061446d85890151600f0b90565b6144cc565b612a1382612a0361450e94604355565b614350565b50426001614523612a0385613e6a565b01541461433c565b61456661455c61454f61454260208c0151600f0b90565b60208a0151600f0b61446d565b6020840151600f0b6141ce565b600f0b6020830152565b61459561458e61458461457a8b51600f0b90565b8951600f0b61446d565b8351600f0b6141ce565b600f0b8252565b60006145a861161e6020840151600f0b90565b126145da575b60006145be61161e8351600f0b90565b126145d1575b6052546080820152614331565b600081526145c4565b600060208201526145ae565b6145f38596959497613d96565b6000919080428111156147165750506146589161464161463a61463061464e94612aa2612a9d6146296020429d5b0151600f0b90565b928c613e79565b8a51600f0b6141a9565b600f0b8952565b6020880151600f0b6141ce565b600f0b6020870152565b600061466861161e8751600f0b90565b1261470d575b600061468161161e6020880151600f0b90565b12614701575b6146be83948460408801526146b46060840151612b27612b196146ae60408801518a613e79565b88614176565b6060880152613db7565b954284036146dc575050505050436060820152819038808080614324565b6146f890611d6687612a138a6000526039602052604060002090565b9295949361431b565b60006020860152614687565b6000855261466e565b614658935061463a61463061464e94612aa2612a9d614629602061474d611750999e99614641996000526050602052604060002090565b98614621565b50614776614768612be7606086015143613e79565b612bf7604086015142613e79565b614304565b50614793612c1c826000526039602052604060002090565b6142a7565b6040830151156148e5576147b0610f638451600f0b90565b60808801526020840180514210806148cf575b614896575b602084019242845111908161487f575b50614839575b6147f661175082516000526050602052604060002090565b92519081614806575b505061427b565b5191965090810361481c575080945b38806147ff565b611750614833916000526050602052604060002090565b94614815565b61487a61463a61486c61485d6148508851600f0b90565b630784ce0090600f0b0590565b600f0b60208c01908152612a90565b612aa2612a9d428851613e79565b6147de565b905061488f61161e8651600f0b90565b13386147d8565b6148ca6116a16148bc6148ad6148508951600f0b90565b600f0b60208a01908152612a90565b612aa2612a9d428651613e79565b6147c8565b50826148df61161e8751600f0b90565b136147c3565b816147b0565b916112e36112da6148fc9242613dc5565b614905836113aa565b54156149b65781156149a457428111156149925761492242613da6565b8111614980576149626107719361494d61493d603b5461376b565b809761494882603b55565b614a8a565b5061096a86600052604b602052604060002090565b614979610a2485600052604a602052604060002090565b9184614bfa565b60405163f761f1cd60e01b8152600490fd5b604051638e6b5b6760e01b8152600490fd5b604051631f2a200560e01b8152600490fd5b60405163c1ab6dc160e01b8152600490fd5b906112e36112da6149d99242613dc5565b600080526033602052907f44496df070da3f045064f6d6f394484a8de10d5710290d619b67d975ec89320f54156149b65780156149a4574282111561499257614a2142613da6565b82116149805761077191614a44614a39603b5461376b565b809561494882603b55565b50614a6c614a5c85600052604b602052604060002090565b80546001600160a01b0319169055565b614a83610a2485600052604a602052604060002090565b9184614d7c565b6001600160a01b03811690614ab490614aa4831515613d79565b614aae8482613dd2565b836158e9565b6000600080516020615ca28339815191528180a4600190565b815181546001600160801b0319166001600160801b039091161781556106c091600290604090602081015160018501550151151591019060ff801983541691151516179055565b919060445490614b22614008565b8351602080860151604080880151151590850152908301908152600f9190910b80835291959160016001607f1b03811360016001607f1b031982121761377a57866136ad96600395614b89614bae94600080516020615c828339815191529b90600f0b9052565b80614bf2575b50614ba882610fa387600052604a602052604060002090565b8461425c565b516040805160008152602081019290925242908201523390600080516020615c4283398151915290606090a460408051828152602081019290925290918291820190565b845238614b8f565b909291614c7160445493614c11610fbc8787613dc5565b614c19614008565b90614c258151600f0b90565b93614c51602083015195614c3c6040850151151590565b1515604086015260208501968752600f0b8452565b614b89614c6a614c608a615bd3565b8551600f0b6141ce565b600f0b8452565b83151580614d74575b614cea575b926001614cd292600080516020615c828339815191529551600080516020615c4283398151915260405180614cc93394429089846040919493926060820195825260208201520152565b0390a482613dc5565b604080519283526020830191909152819081016136ad565b9260018060a01b03614d096108bb84600052604b602052604060002090565b1680614d4b5750803410614d39576001614cd292600080516020615c82833981519152955b929550925050614c7f565b60405163162908e360e11b8152600490fd5b614cd292600080516020615c8283398151915295614d6f84600194309033906150b9565b614d2e565b506001614c7a565b909291614d9360445493614c11610fbc8787613dc5565b83151580614de957614cea57926001614cd292600080516020615c828339815191529551600080516020615c4283398151915260405180614cc93394429089846040919493926060820195825260208201520152565b506000614c7a565b6044549192614e03610fbc8585613dc5565b614e77614e0e614008565b8251600f0b92614e3f602082015194614e2a6040840151151590565b1515604085015260208401958652600f0b8352565b614e5f614e58614e4e89615bd3565b8451600f0b6141ce565b600f0b8352565b614ba882610fa387600052604a602052604060002090565b83151580614f47575b614ecf575b926000614cd292600080516020615c828339815191529551600080516020615c4283398151915260405180614cc93394429089846040919493926060820195825260208201520152565b9260018060a01b03614eee6108bb84600052604b602052604060002090565b1680614f1e5750803410614d39576000614cd292600080516020615c82833981519152955b929550925050614e85565b614cd292600080516020615c8283398151915295614f4284600094309033906150b9565b614f13565b506001614e80565b6044549192614f61610fbc8585613dc5565b614f6c614e0e614008565b8315158061503c575b614fc4575b926002614cd292600080516020615c828339815191529551600080516020615c4283398151915260405180614cc93394429089846040919493926060820195825260208201520152565b9260018060a01b03614fe36108bb84600052604b602052604060002090565b16806150135750803410614d39576002614cd292600080516020615c82833981519152955b929550925050614f7a565b614cd292600080516020615c828339815191529561503784600294309033906150b9565b615008565b506001614f75565b90929161505b60445493614c11610fbc8787613dc5565b831515806150b157614ecf57926000614cd292600080516020615c828339815191529551600080516020615c4283398151915260405180614cc93394429089846040919493926060820195825260208201520152565b506000614e80565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526106c0916150fb82610649565b604051615159916001600160a01b031661511482610677565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1615153613c69565b916151e9565b80518281159182156151c9575b50509050156151725750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b8380929350010312610562578101516151e1816111a6565b808238615166565b9192901561524b57508151156151fd575090565b3b156152065790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561525e5750805190602001fd5b60405162461bcd60e51b815290819061527a9060048301610760565b0390fd5b8051906001600160401b03821161062957600160401b821161062957604854826048558083106152e8575b5060486000908152602091820191600080516020615c22833981519152915b8481106152d6575050505050565b835183820155928101926001016152c8565b60486000908152600080516020615c228339815191529182019184015b8281106153135750506152a9565b818155600101615305565b6048546001600160401b03811161062957600160401b81116106295760475481604755808210615398575b5060476000908152600080516020615c228339815191528054600080516020615c6283398151915291905b848410615382575050505050565b6001809192019384549281850155019290615374565b60476000908152600080516020615c628339815191529182019183015b8281106153c3575050615349565b8181556001016153b5565b9193909592946153ee610b1961093d846000526049602052604060002090565b6155c25742851061499257859361546a92615465610b1993868961545a8d61544c60409e8f519485936020850197889290916074949284526bffffffffffffffffffffffff199060601b166020840152603483015260548201520190565b03601f198101835282610692565b519020933691610c3f565b6155d4565b6155b15761548281600052604c602052604060002090565b549485156155695750506154b162093a806154aa610a2487600052604a602052604060002090565b9304614146565b9060208301518210615558576154c642613da6565b8211615547576154da610f638451600f0b90565b908082116155365791615508828461550e95600080516020615cc28339815191529897951061551957613e79565b86615044565b51828152602090a190565b61553181610abf8b6000526054602052604060002090565b613e79565b845163162908e360e11b8152600490fd5b835163f761f1cd60e01b8152600490fd5b8351638e6b5b6760e01b8152600490fd5b9261557c91955061558294504290613e79565b906149c8565b908161559882600052604c602052604060002090565b556155ad82600052604d602052604060002090565b5590565b83516309bde33960e01b8152600490fd5b60405163504570e360e01b8152600490fd5b929091906000915b8451831015615629576155ef8386613795565b5190600082821015615617575060005260205261561160406000205b9261376b565b916155dc565b6040916156119382526020522061560b565b915092501490565b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044808301939093529181526106c0916150fb8261062e565b6156748133613b07565b156109b0576000818152603c6020908152604080832054603e909252822080546001600160a01b03191690556001600160a01b031673__$d6f092accc63e0bf8f1744f29529542834$__803b1561574d578260e4916040519283809263690f66bf60e01b8252604a60048301526056602483015260556044830152605460648301528860848301528460a48301528460c48301525af4801561109457615734575b506157208382613e86565b600080516020615ca28339815191528280a4565b8061574161574792610664565b80610557565b38615715565b8280fd5b6157ea90929192615763603b5461376b565b603b8190556000818152604a60205260409020855181546001600160801b0319166001600160801b03909116178155909485929161494891906157c6906020830151600182015560026040840151151591019060ff801983541691151516179055565b6040516157d28161060e565b6000815260006020820152600060408201528461425c565b50565b806000526040602052604060002054431461580d57610771904290615822565b50600090565b90816020910312610562575190565b9060405191637b29b3d160e01b8352604f6004840152604e60248401526044830152606482015260208160848173__$227f16069b523eeecbbbd0559d29a49482$__5af490811561109457600091615878575090565b610771915060203d8111611a6157611a538183610692565b6043549060405191637259b01960e01b835260506004840152603960248401526044830152606482015260208160848173__$227f16069b523eeecbbbd0559d29a49482$__5af490811561109457600091615878575090565b73__$d6f092accc63e0bf8f1744f29529542834$__91823b156105625760e4600092604051948593849263690f66bf60e01b8452604a600485015260566024850152605560448501526054606485015260848401528560a484015260018060a01b031660c48301525af48015611094576159605750565b806157416106c092610664565b9073__$d6f092accc63e0bf8f1744f29529542834$__803b156105625760009260e491604051958694859363690f66bf60e01b8552604a6004860152605660248601526055604486015260546064860152608485015260a484015260018060a01b031660c48301525af48015611094576159605750565b73__$d6f092accc63e0bf8f1744f29529542834$__91823b156105625760a460009260405194859384926375f199b960e11b8452605660048501526055602485015260448401526064830152600160848301525af4801561109457615a465750565b6106c090610664565b600090615a69610a2482600052604a602052604060002090565b615a79610b196040830151151590565b61137457615a91826000526040602052604060002090565b544314615b22578115615b1d575b615ab3826000526054602052604060002090565b5491838314613cb057615aef615ad0610f63615af59451600f0b90565b9185615ae96108bb83600052603c602052604060002090565b9161596d565b836159e4565b337ff1aa2a9e40138176a3ee6099df056f5c175f8511a0d8b8275d94d1ea5de46773600080a4565b615a9f565b6040516342d6fce760e01b8152600490fd5b615b4b610a2482600052604a602052604060002090565b615b5b610b196040830151151590565b6113745782151580615bab575b612ce357615b80826000526040602052604060002090565b544314615b2257818314615ba257615ab3826000526054602052604060002090565b60009250615a9f565b506000838152603c602052604090206001600160a01b0390615bcc906108bb565b1615615b68565b60016001607f1b038111615bf0576001600160801b0316600f0b90565b6040516393dafdf160e01b8152600490fd5b600f0b60008112615c105790565b60405162406f5d60e21b8152600490fdfe15040156076f78057c0a886f6dbac29221fa3c2646adbc8effedab98152ff32b8835c22a0c751188de86681e15904223c054bedd5c68ec8858945b7831290273c43c1e24e1884c4e28a16bbd9506f60b5ca9f18fc90635e729d3cfe13abcf0015e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5cddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7a164736f6c6343000813000a"; + "0x6080806040523461001757615cfe90816200001d8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063018a3e4c1461055257806301ffc9a71461054d578063047fc9aa1461054857806306fdde0314610543578063081812fc1461053e578063095cf5c614610539578063095ea7b3146105345780630ec84dda1461052f57806317d70f7c1461052a57806318160ddd1461052557806320606b701461052057806323b872dd1461051b57806325a62c7d146105165780632818d885146105115780632e1a7d4d1461050c5780632e720f7d14610507578063313ce5671461050257806333230dc0146104fd57806335b0f6bd146104f85780633d085a37146104f357806342842e0e146104ee578063430c2081146104e957806344acb42a146104e457806346c96aac146104df5780634b19becc146104da5780634bc2a657146104d55780634bf5d7e9146104d05780634d01cb66146104cb5780634d03c048146104c65780634d6fb775146104c157806350589793146104bc57806354fd4d50146104b75780635594a045146104b25780635a4f459a146104ad5780635fa7b584146104a85780636352211e146104a3578063650e15051461049e5780636837f96e146104995780636970e202146104945780636ba024511461048f5780636d46a1db1461048a578063704b6c02146104855780637099b8571461048057806370a082311461047b5780637af5122c146104765780637ecebe0014610471578063834b0b691461046c57806385f2aef2146104675780638ad4c447146104625780638bf9d84c1461045d5780638e539e8c146104445780638fbb38ff14610458578063900cf0cf1461045357806391ddadf41461044e57806395d89b4114610449578063981b24d0146104445780639cf1969b1461043f5780639d507b8b1461043a578063a224cee714610435578063a22cb46514610430578063b1548afc1461042b578063b2383e5514610426578063b45a3c0e14610421578063b88d4fde1461041c578063bb941cff14610417578063c19dcab614610412578063c2c4c5c11461040d578063c87b56dd14610408578063ccd9275f14610403578063d1c2babb146103fe578063d68750a6146103f9578063d7ffbea6146103f4578063d938ebf9146103ef578063d9a34952146103ea578063e0514aba146103e5578063e58f5947146103e0578063e75b1c2e146103db578063e7a324dc146103d6578063e7e242d4146103d1578063e985e9c5146103cc578063ef5e8f1d146103c7578063f04cb3a8146103c2578063f52a36f7146103bd5763f851a440146103b857600080fd5b61360d565b6135de565b613511565b6134b7565b61345a565b61343c565b613401565b613272565b613246565b613225565b6131f5565b613137565b6130b6565b613098565b612d23565b612d05565b612c37565b6128d4565b6128b6565b612882565b6127fa565b612786565b612661565b612635565b612590565b612502565b612386565b61235a565b612284565b612314565b6122f1565b6122d3565b6122a2565b61223c565b612208565b6121df565b611f9a565b611f60565b611f34565b611efa565b611ebb565b611e74565b611e3a565b611cfa565b611cb6565b611c29565b611c0b565b611bd7565b611b66565b611b12565b611ae9565b611acd565b611a78565b6119c4565b61194a565b61192c565b6118dd565b611888565b611523565b6114fa565b61147d565b61144c565b611413565b6113d4565b61121c565b6111c0565b61119a565b611127565b610ecc565b610dcb565b610c8d565b610c0d565b610b9d565b610b79565b610b5b565b6109dd565b610887565b61081c565b6107a8565b610774565b6105da565b610597565b610567565b600091031261056257565b600080fd5b34610562576000366003190112610562576020604554604051908152f35b6001600160e01b031981160361056257565b34610562576020366003190112610562576004356105b481610585565b63ffffffff60e01b16600052603a602052602060ff604060002054166040519015158152f35b34610562576000366003190112610562576020604454604051908152f35b634e487b7160e01b600052604160045260246000fd5b606081019081106001600160401b0382111761062957604052565b6105f8565b608081019081106001600160401b0382111761062957604052565b60a081019081106001600160401b0382111761062957604052565b6001600160401b03811161062957604052565b604081019081106001600160401b0382111761062957604052565b90601f801991011681019081106001600160401b0382111761062957604052565b604051906106c08261060e565b565b604051906106c082610649565b6001600160401b03811161062957601f01601f191660200190565b604051906106f782610677565b601282527113585c9cda185b1b08111053c81d9953919560721b6020830152565b60005b83811061072b5750506000910152565b818101518382015260200161071b565b9060209161075481518092818552858086019101610718565b601f01601f1916010190565b90602061077192818152019061073b565b90565b34610562576000366003190112610562576107a46107906106ea565b60405191829160208352602083019061073b565b0390f35b3461056257602036600319011261056257600435600052603e602052602060018060a01b0360406000205416604051908152f35b600435906001600160a01b038216820361056257565b602435906001600160a01b038216820361056257565b35906001600160a01b038216820361056257565b34610562576020366003190112610562576108356107dc565b603554906001600160a01b039081831633036108755716908115610863576001600160a01b03191617603555005b60405163d92e233d60e01b8152600490fd5b604051633a7cfa5d60e21b8152600490fd5b34610562576040366003190112610562576108a06107dc565b602435906108c86108bb83600052603c602052604060002090565b546001600160a01b031690565b6001600160a01b039181831691821561086357838216938484146109cb5761093d6109449133906109066108bb8a600052603c602052604060002090565b161492610926339160018060a01b0316600052603f602052604060002090565b9060018060a01b0316600052602052604060002090565b5460ff1690565b901590816109c2575b506109b0576109899061096a85600052603e602052604060002090565b80546001600160a01b0319166001600160a01b03909216919091179055565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b60405163390cdd9b60e21b8152600490fd5b9050153861094d565b60405163367558c360e01b8152600490fd5b604080600319360112610562576004908135916024356109fb6140e9565b83600052604d6020528260002054610b4c57610a29610a2485600052604a602052604060002090565b614037565b91610a49610a446108bb87600052604b602052604060002090565b6113ba565b5415610b3e578115610b30576000610a628451600f0b90565b600f0b1315610b2257602083015142101580610b09575b610afb57600080516020615cd2833981519152610ad98686610acb8787610aa284830151151590565b610ae2575b610ac581610abf876000526054602052604060002090565b546159f4565b84614e01565b519081529081906020820190565b0390a160018055005b610af6610af182605254613dd5565b605255565b610aa7565b83516307b7d7dd60e51b8152fd5b50610b1d610b1985850151151590565b1590565b610a79565b835163f90e998d60e01b8152fd5b8351631f2a200560e01b8152fd5b835163c1ab6dc160e01b8152fd5b509051632ad7063f60e11b8152fd5b34610562576000366003190112610562576020603b54604051908152f35b34610562576000366003190112610562576020610b95426158a0565b604051908152f35b346105625760003660031901126105625760206040517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8668152f35b6060906003190112610562576001600160a01b0390600435828116810361056257916024359081168103610562579060443590565b3461056257610c26610c1e36610bd8565b903392613b82565b005b6001600160401b0381116106295760051b60200190565b9291610c4a82610c28565b91610c586040519384610692565b829481845260208094019160051b810192831161056257905b828210610c7e5750505050565b81358152908301908301610c71565b3461056257604080600319360112610562576004908135906024356001600160401b038111610562573660238201121561056257610cd49036906024818701359101610c3f565b60455483108015610dc2575b610db257603554610d01906001600160a01b03165b6001600160a01b031690565b3303610da25760005b8151811015610d4157610d1d81836137a5565b5115610d3157610d2c9061377b565b610d0a565b825163504570e360e01b81528590fd5b50610d9d83610d707fd0fcfc93c3300512f63e75c1be4e235aed5841c3e45b6c9a75d7d1148f30b0cd9361528e565b610d7981604655565b603554610d8e906001600160a01b0316610cf5565b93519081529081906020820190565b0390a2005b8151633a7cfa5d60e21b81528490fd5b815163b7d0949760e01b81528490fd5b50428311610ce0565b3461056257602036600319011261056257610de46107dc565b603554610df9906001600160a01b0316610cf5565b3303610875576001600160a01b03811660009081526038602052604090205415610eba576001600160a01b0381166000908152603860205260409020610e3f9054613da6565b4210610ea8576001600160a01b038116600090815260386020526040902054610e67826113ba565b556001600160a01b031660008181526038602052604081208190557fc1ebeeae6519aa11b0c58d4f0ced8b3685c5a64f82b7b1f40bb37e39f5f02f359080a2005b60405163514f220f60e01b8152600490fd5b60405163224a1b1160e11b8152600490fd5b346105625760203660031901126105625760048035610ee96140e9565b610efd81600052604d602052604060002090565b5461111757610f0f610b198233613b17565b61110757610f2a61093d826000526053602052604060002090565b6110f757610f45610a2482600052604a602052604060002090565b91604090610f5582850151151590565b6110e957602084015142106110db5750610f78610f738451600f0b90565b615c12565b92610f828361567a565b610f8a6106b3565b93610fb86000958681528660208201528685820152610fb386600052604a602052604060002090565b614add565b610fee60445492610fd1610fcc8486613e89565b604455565b610fd96106b3565b9087825287602083015287868301528661426c565b6000848152604b602052604090206001600160a01b039061100e906108bb565b16806110b3575084808280156110a9575b8280929181923390f1156110a45761107e61109591600080516020615c92833981519152955b855182815242602082015233907f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca9490604090a383613e89565b925191825260208201929092529081906040820190565b0390a16110a160018055565b80f35b613b0b565b6108fc915061101f565b81600080516020615c92833981519152956110d66110959461107e943390615641565b611045565b905163342ad40160e11b8152fd5b90516334d10f9560e11b8152fd5b50604051637c9a1cf960e01b8152fd5b5060405163390cdd9b60e21b8152fd5b50604051632ad7063f60e11b8152fd5b34610562576020366003190112610562576111406107dc565b6035546001600160a01b03919082163303610875571660018060a01b031960375416176037557f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c60408051600081526000196020820152a1005b3461056257600036600319011261056257602060405160128152f35b8015150361056257565b34610562576040366003190112610562576111d96107dc565b6024356111e5816111b6565b6035546001600160a01b03908116330361087557610c269216600052605160205260406000209060ff801983541691151516179055565b346105625760203660031901126105625760043561124481600052604d602052604060002090565b546113a857611256610b198233613b17565b6109b05761127161093d826000526053602052604060002090565b6113965761128c610a2482600052604a602052604060002090565b90604082019061129f610b198351151590565b611384578061137f9261133c8560006112cb610f73600080516020615cd28339815191529951600f0b90565b936112db610af186605254613e89565b6112f86112f36112ea42613db6565b62093a80900490565b614156565b60208401525261130784615a5f565b61132881611322610a2487600052604a602052604060002090565b8661426c565b610fb384600052604a602052604060002090565b6040805191825242602083015233917f668d293c0a181c1f163fd0d3c757239a9c17bd26c5e483150e374455433b27fa9190a36040519081529081906020820190565b0390a1005b604051632188f8ab60e01b8152600490fd5b604051637c9a1cf960e01b8152600490fd5b604051632ad7063f60e11b8152600490fd5b6001600160a01b0316600090815260336020526040902090565b34610562576020366003190112610562576001600160a01b036113f56107dc565b166000526051602052602060ff604060002054166040519015158152f35b346105625761142136610bd8565b6040519160208301938385106001600160401b0386111761062957610c269460405260008452613ca9565b3461056257604036600319011261056257602061147361146a6107dc565b60243590613b17565b6040519015158152f35b3461056257604036600319011261056257611496614067565b50600435600052604e60205260a06114bd6114b76024356040600020614092565b506140a9565b6114f86040518092608080918051600f0b84526020810151600f0b602085015260408101516040850152606081015160608501520151910152565bf35b34610562576000366003190112610562576034546040516001600160a01b039091168152602090f35b3461056257604080600319360112610562576004908135906115436140e9565b61155782600052604d602052604060002090565b54611879576115736108bb83600052603c602052604060002090565b906001600160a01b0382161561186a576001600160a01b03821660009081526051602052604090206115a890610b199061093d565b8061182f575b611820576115c961093d846000526053602052604060002090565b611811576115da610b198433613b17565b611802576115f5610a2484600052604a602052604060002090565b9160208301908151421015806117ed575b6117dd57611615602435615be3565b9485600f0b80156117cd5761163461162e8751600f0b90565b600f0b90565b13156117bd576107a49495965061164a8161567a565b61169a6116556106b3565b61167d6000918281528260208201528288820152610fb385600052604a602052604060002090565b6116856106b3565b9080825280602083015286820152878361426c565b6116b86116b1886116ac8951600f0b90565b6141b9565b600f0b8752565b7f8303de8187a6102fdc3fe20c756dddd68df0ae027b77e2391c19a855e0821f336117236116e68885615761565b9788946117176117036108bb87600052604b602052604060002090565b61096a88600052604b602052604060002090565b600f8b900b8252615761565b9788946117406117036108bb86600052604b602052604060002090565b61179b61176d611767610f7361176089600052604a602052604060002090565b54600f0b90565b93615c12565b91518851338152602081019490945260408401929092526060830191909152426080830152819060a0820190565b0390a46117a760018055565b5191825260208201929092529081906040820190565b8351636b2f218360e01b81528790fd5b8451631f2a200560e01b81528890fd5b82516307b7d7dd60e51b81528690fd5b506117fd610b1984860151151590565b611606565b5163390cdd9b60e21b81528390fd5b51637c9a1cf960e01b81528390fd5b51633df16fd960e21b81528390fd5b50600080526051602052611865610b197f8ef8f4d605e66180b95224f4694e9b85c7291dcee0896b082174f63e91c5677061093d565b6115ae565b51632c2151ef60e11b81528390fd5b51632ad7063f60e11b81529050fd5b34610562576020366003190112610562576118a16107dc565b603454906001600160a01b039081831633036118cb576001600160a01b0319909216911617603455005b60405163c18384c160e01b8152600490fd5b34610562576000366003190112610562576107a46040516118fd81610677565b600e81526d06d6f64653d74696d657374616d760941b602082015260405191829160208352602083019061073b565b34610562576000366003190112610562576020605254604051908152f35b60803660031901126105625761195e6107dc565b606435906001600160a01b03821682036105625760209161198e916119816140e9565b60443590602435906148fb565b60018055604051908152f35b6060906003190112610562576004356001600160a01b038116810361056257906024359060443590565b34610562576119d23661199a565b6040516332b53f5360e11b815260566004820152605560248201526001600160a01b0390931660448401526064830191909152608482015260208160a48173__$d6f092accc63e0bf8f1744f29529542834$__5af480156110a4576107a491600091611a4a575b506040519081529081906020820190565b611a6b915060203d8111611a71575b611a638183610692565b810190615823565b38611a39565b503d611a59565b34610562576020366003190112610562576004356000526056602052602065ffffffffffff60406000205416604051908152f35b60405190611ab982610677565b60058252640322e302e360dc1b6020830152565b34610562576000366003190112610562576107a4610790611aac565b34610562576000366003190112610562576037546040516001600160a01b039091168152602090f35b3461056257604036600319011261056257602435611b2f816111b6565b6034546001600160a01b031633036118cb57610c2690600435600052605360205260406000209060ff801983541691151516179055565b3461056257602036600319011261056257611b7f6107dc565b6035546001600160a01b0391908216330361087557611b9d816113ba565b5415610eba576000611bae826113ba565b55167f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd3600080a2005b3461056257602036600319011261056257600435600052603c602052602060018060a01b0360406000205416604051908152f35b602061198e611c193661199a565b90611c226140e9565b33926148fb565b3461056257602036600319011261056257611c426107dc565b6035546001600160a01b03919082163303610875576001600160a01b03811660009081526038602052604090205415610eba576001600160a01b038116600090815260386020526040812055167f7a97490440826fccf62ae2502464143548d7bc46e1c207bad4d0e5c799d54d82600080a2005b3461056257602036600319011261056257600435604754811015611cf5576047600052600080516020615c728339815191520154604051908152602090f35b61378f565b3461056257600080600319360112611e3757603654611d21906001600160a01b0316610cf5565b3303611e25576048805415611e1357815b604754811015611d805780611d76611d6c611d5c611d52611d7b95613fe2565b90549060031b1c90565b6000526049602052604060002090565b805460ff19169055565b61377b565b611d32565b50815b8154811015611db45780611d76611da2611d5c611d52611daf95613ffd565b805460ff19166001179055565b611d83565b82611dbd61532e565b611dc8604654604555565b611dd26000604655565b6036546046546040519081526001600160a01b03909116907ff6e39efe24bb364805ce09e480b8fd49ba67811e6b780c864620d8f80fdc061b90602090a280f35b60405163fd055c4160e01b8152600490fd5b604051637bfa4b9f60e01b8152600490fd5b80fd5b34610562576020366003190112610562576001600160a01b03611e5b6107dc565b1660005260336020526020604060002054604051908152f35b3461056257602036600319011261056257611e8d6107dc565b603654906001600160a01b03908183163303611e255716908115610863576001600160a01b03191617603655005b3461056257602036600319011261056257600435604854811015611cf5576048600052600080516020615c328339815191520154604051908152602090f35b34610562576020366003190112610562576001600160a01b03611f1b6107dc565b16600052603d6020526020604060002054604051908152f35b3461056257602036600319011261056257600435600052604c6020526020604060002054604051908152f35b34610562576020366003190112610562576001600160a01b03611f816107dc565b1660005260576020526020604060002054604051908152f35b346105625760e0366003190112610562576004608435602435823560443560643560ff851685036105625760c435916fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383116121ce57611fee6106ea565b805160208092012093611fff611aac565b805190830120604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818601908152602081019890985287820192909252466060880152306080880152958160a082010391601f199283810182526120669082610692565b51902086517f9947d5709c1682eaa3946b2d84115c9c0d1c946b149d76e69b457458b42ea29e858201908152602081018a9052604081018b90526060810187905260808101889052908060a083010384810182526120c49082610692565b519020875161190160f01b86820190815260028101939093526022830191909152909181604284010390810182526120fc9082610692565b519020855190815260ff98909816602089015260a4356040890152606088015260008080529687906080905a600190fa156110a4578551612140610b198683613b17565b6121be576001600160a01b038116156121ae576001600160a01b03166000908152605760205260409020908154916121778361377b565b90550361219e57421161218f5750906110a191615b44565b51630819bdcd60e01b81528490fd5b8151633ab3447f60e11b81528690fd5b8351638baa579f60e01b81528890fd5b835163390cdd9b60e21b81528890fd5b6040516317e97eb760e31b81528790fd5b34610562576000366003190112610562576035546040516001600160a01b039091168152602090f35b3461056257602036600319011261056257612221614067565b50600435600052603960205260a06114bd60406000206140a9565b34610562576040366003190112610562576001600160a01b0361225d6107dc565b16600052604160205260406000206024356000526020526020604060002054604051908152f35b34610562576020366003190112610562576020610b956004356158a0565b34610562576020366003190112610562576004356000526053602052602060ff604060002054166040519015158152f35b34610562576000366003190112610562576020604354604051908152f35b3461056257600036600319011261056257602060405165ffffffffffff42168152f35b34610562576000366003190112610562576107a460405161233481610677565b60058152641d9953919560da1b602082015260405191829160208352602083019061073b565b3461056257602036600319011261056257600435600052604d6020526020604060002054604051908152f35b3461056257604080600319360112610562576004908135916123a66140e9565b6123ba83600052604d602052604060002090565b546124f4576123cc610b198433613b17565b6124e6576123ea610a446108bb85600052604b602052604060002090565b54156124d857612407610a2484600052604a602052604060002090565b9061241483830151151590565b6124ca5761242a6112f36112ea60243542613dd5565b906020830142815111156124bb5760006124458551600f0b90565b600f0b13156124ac575182111561249e5761245f42613db6565b821161249057600080516020615cd28339815191526124848686610acb878784614b24565b0390a1610c2660018055565b835163f761f1cd60e01b8152fd5b8351638e6b5b6760e01b8152fd5b50835163f90e998d60e01b8152fd5b5083516307b7d7dd60e51b8152fd5b82516334d10f9560e11b8152fd5b905163c1ab6dc160e01b8152fd5b905163390cdd9b60e21b8152fd5b9051632ad7063f60e11b8152fd5b3461056257602080600319360112610562576004356001600160401b03811161056257366023820112156105625780600401359061253f82610c28565b9161254d6040519384610692565b80835260248484019160051b8301019136831161056257602401905b82821061257957610c2684613636565b84809161258584610808565b815201910190612569565b34610562576040366003190112610562576125a96107dc565b6024356125b5816111b6565b6001600160a01b038216913383146109cb57816125f46126059233600052603f60205260406000209060018060a01b0316600052602052604060002090565b9060ff801983541691151516179055565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b346105625760203660031901126105625760043560005260546020526020604060002054604051908152f35b6040806003193601126105625760049081359160243561267f6140e9565b83600052604d6020528260002054610b4c5761269b8433613b17565b15612777576126b7610a2485600052604a602052604060002090565b916126d2610a446108bb87600052604b602052604060002090565b5415610b3e578115610b305760006126eb8451600f0b90565b600f0b1315610b2257602083015142101580612762575b610afb57600080516020615cd2833981519152610ad98686610acb878761272b84830151151590565b61274e575b61274881610abf876000526054602052604060002090565b84614f5f565b61275d610af182605254613dd5565b612730565b50612772610b1985850151151590565b612702565b50905163390cdd9b60e21b8152fd5b346105625760203660031901126105625761279f614018565b50600435600052604a602052606060406000206040516127be8161060e565b8154600f0b91828252604060ff600260018401549360208601948552015416920191151582526040519283525160208301525115156040820152f35b34610562576080366003190112610562576128136107dc565b61281b6107f2565b606435916001600160401b038311610562573660238401121561056257826004013591612847836106cf565b926128556040519485610692565b8084523660248287010111610562576020816000926024610c269801838801378501015260443591613ca9565b3461056257602036600319011261056257600435600052604b602052602060018060a01b0360406000205416604051908152f35b34610562576000366003190112610562576020604754604051908152f35b3461056257600080600319360112611e37576128ee6140e9565b6040818180516128fd8161060e565b8281528260208201520152818180516129158161060e565b8281528260208201520152612928614067565b50612931614067565b506043549061293e6106c2565b83815283602082015242828201524360608201528360808201529082612c13575b80820190815190856129728551600f0b90565b602086018051600f0b94606088019560808751966129ad828c0151936129a36129996106c2565b988990600f0b9052565b600f0b6020880152565b850194838652606081019788520152839087514211612be4575b939192906129dd62093a80869998979904614156565b9783985b60ff8a10612a5c575b50505050505050505050600182141580612a44575b15612a2f57612a23612a13612a2893613e7a565b6000526039602052604060002090565b614203565b6001805580f35b612a2382612a13612a3f94604355565b612a28565b50426001612a54612a1385613e7a565b0154146129ff565b612a708b919c939495969798999a9c613da6565b9786428a1115612ba657889950979596974299612ada93612ac2612ab88d612ab2612aad612ad398612aa7612ac9985b51600f0b90565b93613e89565b615be3565b9061413f565b8251600f0b6141b9565b600f0b9052565b8651600f0b6141de565b600f0b8552565b85612ae961162e8c51600f0b90565b12612b9e575b85612afe61162e8651600f0b90565b12612b96575b612b448792888b52612b3d8351612b37612b29612b238d8c5190613e89565b89614186565b670de0b6b3a7640000900490565b90613dd5565b8a52613dc7565b9a8a8c428a03612b6c57505050505050505050509050439052388080808087818080806129ea565b612b889291612a23611d76926000526039602052604060002090565b9897969593949291956129e1565b858452612b04565b858a52612aef565b5087612ac9612ada93612ac2612ab88d612ab2612aad9d9e9c9d612ad398612aa7612bde611760866000526050602052604060002090565b99612aa0565b9050612c0d612bfc612bf7885143613e89565b61416e565b612c07895142613e89565b90614199565b906129c7565b9050612c31612c2c836000526039602052604060002090565b6140a9565b9061295f565b34610562576020366003190112610562576004356000818152603c602052604090206001600160a01b0390612c6b906108bb565b1615612cf357603754612caf91600091612c8f90610cf5906001600160a01b031681565b604051808095819463c87b56dd60e01b8352600483019190602083019252565b03915afa80156110a4576107a491600091612cd2575b5060405191829182610760565b612ced913d8091833e612ce58183610692565b810190613aad565b38612cc5565b604051634a1850bf60e11b8152600490fd5b34610562576000366003190112610562576020604854604051908152f35b34610562576040806003193601126105625760049081359060243590612d476140e9565b612d5b83600052604d602052604060002090565b541580159061307b575b61306c57612d8061093d846000526053602052604060002090565b6118115781831461305d57612da26108bb84600052604b602052604060002090565b612dbc610cf56108bb85600052604b602052604060002090565b6001600160a01b039091160361304e57612dd9610b198433613b17565b61180257612dea610b198333613b17565b61180257612e05610a2483600052604a602052604060002090565b926020808501805142101580613039575b61302957612e31610a2484600052604a602052604060002090565b96612e3e85890151151590565b61301b57508682015190518593929184918082106130135750965b612e628461567a565b612e6a6106b3565b600081528381016000905286810160009052612e9085600052604a602052604060002090565b90612e9a91614add565b612ea26106b3565b600080825284820181905287820152612ebc908a8661426c565b612ec4614018565b80988251612ed290600f0b90565b8b51600f0b612ee0916141de565b600f0b825282880151859015151515838a01908152511515600014612fb2610f73600080516020615cd28339815191529e612aa06124849f610fb37f986e3c958e3bdf1f58c2150357fc94624dd4e77b08f9802d8e2e885fa0d6a1989b612ffa99612fba99610f739961300b575050612f6b610af1612f63610f738851600f0b90565b605254613dd5565b612f97612f82826000526054602052604060002090565b54612f91610f738851600f0b90565b906159f4565b612fa2838d8361426c565b600052604a602052604060002090565b9451600f0b90565b94612fc9610f738451600f0b90565b92015188519384526020840195909552604083019190915260608201939093524260808201523392819060a0820190565b0390a4519081529081906020820190565b840152612f6b565b905096612e59565b84516334d10f9560e11b8152fd5b83516307b7d7dd60e51b81528790fd5b50613049610b1985880151151590565b612e16565b5163c1ab6dc160e01b81528390fd5b516349da877960e11b81528390fd5b51632ad7063f60e11b81528390fd5b5061309082600052604d602052604060002090565b541515612d65565b34610562576000366003190112610562576020604654604051908152f35b346105625760c0366003190112610562576130cf6107f2565b60a4356001600160401b038082116105625736602383011215610562578160040135908111610562573660248260051b84010111610562576107a49260246131279301906084359060643590604435906004356153de565b6040519081529081906020820190565b34610562576020366003190112610562576131506107dc565b603554613165906001600160a01b0316610cf5565b3303610875576001600160a01b038116600090815260386020526040902054158015906131e3575b6131d1576001600160a01b031660008181526038602052604081204290557f63e1222b8b6e8d5156b4ce9fa3245ebee8133d73f318b1e027623110139374519080a2005b6040516345e20c9f60e11b8152600490fd5b506131ed816113ba565b54151561318d565b34610562576040366003190112610562576004356132138133613b17565b156109b057610c269060243590615b44565b34610562576040366003190112610562576020610b95602435600435615832565b3461056257602036600319011261056257600435600052604f6020526020604060002054604051908152f35b3461056257602036600319011261056257600480359061329c82600052604d602052604060002090565b546133f2576132bb610a446108bb84600052604b602052604060002090565b54156133e3576132ce610b198333613b17565b6133d4576132e9610a2483600052604a602052604060002090565b906040918281016132fa8151151590565b6133c457602082019283514210156133b65760006133198451600f0b90565b600f0b13156133a857600080516020615cd283398151915261137f87878188613367896113078a6000613350610f738551600f0b90565b95613360610af188605254613dd5565b5260019052565b825190815242602082015233907f793cb7a30a4bb8669ec607dfcbdc93f5a3e9d282f38191fddab43ccaf79efb8090604090a3519081529081906020820190565b845163f90e998d60e01b8152fd5b84516307b7d7dd60e51b8152fd5b83516334d10f9560e11b81528390fd5b60405163390cdd9b60e21b8152fd5b60405163c1ab6dc160e01b8152fd5b604051632ad7063f60e11b8152fd5b346105625760003660031901126105625760206040517f9947d5709c1682eaa3946b2d84115c9c0d1c946b149d76e69b457458b42ea29e8152f35b34610562576020366003190112610562576020610b956004356157fd565b3461056257604036600319011261056257602060ff6134ab61347a6107dc565b6134826107f2565b6001600160a01b039182166000908152603f865260408082209290931681526020919091522090565b54166040519015158152f35b3461056257600080600319360112611e37576036546001600160a01b031633819003611e25577f83688b5eb1a95c504b14adff083974b1aafd3c955adf0f3901c827feb8035e2f6020604654604051908152a28060465580f35b3461056257604080600319360112610562576024359065ffffffffffff8216809203610562578060606107a49382516135498161062e565b60009281848093528260208201528286820152015260043582526055602052828220908252602052209060038151926135818461062e565b8054845260018060a01b03600182015416602085015260028101548385015201546060830152519182918291909160608060808301948051845260018060a01b036020820151166020850152604081015160408501520151910152565b346105625760203660031901126105625760043560005260506020526020604060002054600f0b604051908152f35b34610562576000366003190112610562576036546040516001600160a01b039091168152602090f35b6000549060ff8260081c161580928193613757575b8115613737575b50156136db57613678908261366f600160ff196000541617600055565b6136c2576137b9565b61367e57565b61368e61ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1565b6136d661010061ff00196000541617600055565b6137b9565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b15915081613749575b5038613652565b6001915060ff161438613742565b600160ff821610915061364b565b634e487b7160e01b600052601160045260246000fd5b600019811461378a5760010190565b613765565b634e487b7160e01b600052603260045260246000fd5b8051821015611cf55760209160051b010190565b6137c1613a8d565b427f44496df070da3f045064f6d6f394484a8de10d5710290d619b67d975ec89320f81905560358054336001600160a01b0319918216811790925560368054821683179055603480549091169091179055437f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f70991557f619fcd35f40c77da8aa64d5f98c1fed669135ecc4f245ce6667721b157f70990556301ffc9a760e01b600052603a6020526001906138937fe67567b542422628d2ad4d20f80dc38ede16c5a7b33949e9c027d1e5cf454670611da2565b6380ac58cd60e01b600052603a6020526138cc7fc836460f3bb264bafcdae79f65343efba23342941b203cf910cffa6d9cf1d5e4611da2565b635b5e139f60e01b600052603a6020526139057fc2252c564b23a87436d95f15212975e582e08603bfc9a20d1675a625ea633227611da2565b632483248360e11b600052603a60205261393e7f7efee513bedcf284227dff824356504cda8ca730b7cb3b2a3f2291a7c7796bbc611da2565b63da287a1d60e01b600052603a6020526139777f6fa1b599ecca5b7e21a079e43e4f1ee01e74cd7c15aea02ed70bfc0337de9701611da2565b6000917fc1ebeeae6519aa11b0c58d4f0ced8b3685c5a64f82b7b1f40bb37e39f5f02f3583818180a283825b6139cd575b50505050603b5490600080516020615cb2833981519152823083838180a430908280a4565b8351811015613a2857806139f46139e7613a0c93876137a5565b516001600160a01b031690565b6001600160a01b0381169081613a12575b505061377b565b826139a3565b613a1c42916113ba565b55838780a23880613a05565b6139a8565b15613a3457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b613aa760ff60005460081c16613aa281613a2d565b613a2d565b60018055565b602081830312610562578051906001600160401b038211610562570181601f82011215610562578051613adf816106cf565b92613aed6040519485610692565b81845260208284010111610562576107719160208085019101610718565b6040513d6000823e3d90fd5b6000918252603c6020908152604080842054603e8352818520546001600160a01b03918216808752603f8552838720958316808852959094529190942091831493169091149060ff905416908215613b7a575b508115613b75575090565b905090565b915038613b6a565b919283613b8e91613b17565b156109b0576000838152603c602052604090206001600160a01b0391908290541692828116809403613c215784613be691613bd382600052603e602052604060002090565b80546001600160a01b0319169055613e96565b613bf081856158f9565b613bfa8482613de2565b836000526040602052436040600020551690600080516020615cb2833981519152600080a4565b6040516330cd747160e01b8152600490fd5b90816020910312610562575161077181610585565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526107719291019061073b565b3d15613ca4573d90613c8a826106cf565b91613c986040519384610692565b82523d6000602084013e565b606090565b92919091613cb933838587613b82565b823b613cc6575b50505050565b613cee926020926000604051809681958294630a85bd0160e11b9a8b85523360048601613c48565b03926001600160a01b03165af160009181613d59575b50613d2f57613d11613c79565b80519081613d2a57604051626b5e2960e61b8152600490fd5b602001fd5b6001600160e01b03191603613d475738808080613cc0565b60405163279929b160e21b8152600490fd5b613d7b91925060203d8111613d82575b613d738183610692565b810190613c33565b9038613d04565b503d613d69565b15613d9057565b634e487b7160e01b600052600160045260246000fd5b9062093a80820180921161378a57565b90630784ce00820180921161378a57565b906001820180921161378a57565b9190820180921161378a57565b613e6c916000818152602090603c8252604260018060a01b0392604093613e0e81868620541615613d89565b858452603c825284842080546001600160a01b0319166001600160a01b03891617905586168352603d815283832054946041825284842086855282528085852055835252205560018060a01b0316600052603d602052604060002090565b613e768154613dc7565b9055565b60001981019190821161378a57565b9190820391821161378a57565b6000828152603c60205260408120546001600160a01b0383811691613ebd91168214613d89565b838252603c6020526040822080546001600160a01b03191690558152603d6020526040812054600019810190811161378a578382613f08613f6d966000526042602052604060002090565b54838103613f7757506001600160a01b0385166000908152604160205260409020613f5293613f41915b90600052602052604060002090565b556000526042602052604060002090565b556001600160a01b03166000908152603d6020526040902090565b613e768154613e7a565b83613f4191613fc4613fa2613f5297613f328b60018060a01b03166000526041602052604060002090565b5480613f4184613f328d60018060a01b03166000526041602052604060002090565b556001600160a01b0387166000908152604160205260409020613f32565b604754811015611cf557604760005260206000200190600090565b604854811015611cf557604860005260206000200190600090565b604051906140258261060e565b60006040838281528260208201520152565b906040516140448161060e565b604060ff600283958054600f0b8552600181015460208601520154161515910152565b6040519061407482610649565b60006080838281528260208201528260408201528260608201520152565b90633b9aca00811015611cf55760021b0190600090565b906040516140b681610649565b608060038294805480600f0b8552831d600f0b602085015260018101546040850152600281015460608501520154910152565b6002600154146140fa576002600155565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b90600f0b90600f0b029081600f0b91820361378a57565b9062093a809182810292818404149015171561378a57565b90670de0b6b3a7640000918083029283040361378a57565b8181029291811591840414171561378a57565b81156141a3570490565b634e487b7160e01b600052601260045260246000fd5b600f91820b910b039060016001607f1b0319821260016001607f1b0383131761378a57565b600f91820b910b019060016001607f1b0319821260016001607f1b0383131761378a57565b815160208301516001600160801b039091166001600160801b0319608092831b16178255604083015160018301556060830151600283015590910151600390910155565b9190614256576106c091614203565b634e487b7160e01b600052600060045260246000fd5b91614275614067565b61427d614067565b9260009283604354876147a8575b6142936106c2565b6000815260006020820152426040820152436060820152600060808201528161478b575b60408101518151600f0b6020830151600f0b60608401516142f66080860151926142ec6142e26106c2565b958690600f0b9052565b600f0b6020850152565b83604084015260608301526080820152600060408401514211614763575b61432662093a80849396959404614156565b946000925b60ff84106145f9575b505050509091508861453e575b600182141580614526575b1561451157612a23612a1361436093613e7a565b8661436f575b50505050505050565b602080930193428551116144bc575b50500190815190428211614457575b505050504260408201524360608201526143b182600052604f602052604060002090565b549182151580614432575b156143f3576143e7926143dc6143e192600052604e602052604060002090565b614092565b90614247565b38808080808080614366565b6143e1906143dc61440661442d9561377b565b918261441c82600052604f602052604060002090565b55600052604e602052604060002090565b6143e7565b5061444b836143dc83600052604e602052604060002090565b506001015442146143bc565b5110614465575b808061438d565b6144956144836144b59361447d6020870151600f0b90565b906141b9565b91516000526050602052604060002090565b80546001600160801b0319166001600160801b0392909216919091179055565b388061445e565b8301516144f3916144d091600f0b906141de565b80848401518651146144fa575b5061449585516000526050602052604060002090565b388061437e565b8785015161450b9250600f0b61447d565b386144dd565b612a2382612a1361452194604355565b614360565b50426001614536612a1385613e7a565b01541461434c565b61457961456f61456261455560208c0151600f0b90565b60208a0151600f0b61447d565b6020840151600f0b6141de565b600f0b6020830152565b6145a86145a161459761458d8b51600f0b90565b8951600f0b61447d565b8351600f0b6141de565b600f0b8252565b60006145bb61162e6020840151600f0b90565b126145ed575b60006145d161162e8351600f0b90565b126145e4575b6052546080820152614341565b600081526145d7565b600060208201526145c1565b6146068596959497613da6565b60009190804281111561472657505061466b9161465461464d61464361466194612ab2612aad61463c6020429d5b0151600f0b90565b928c613e89565b8a51600f0b6141b9565b600f0b8952565b6020880151600f0b6141de565b600f0b6020870152565b600061467b61162e8751600f0b90565b1261471d575b600061469461162e6020880151600f0b90565b12614711575b846146cc84958560408401526146c26060850151612b37612b29612b2360408901518b613e89565b6060840152613dc7565b96874286036146ed5750505050505050436060820152819038808080614334565b61470892612a23611d76926000526039602052604060002090565b9295949361432b565b6000602086015261469a565b60008552614681565b61466b935061464d61464361466194612ab2612aad61463c602061475d611760999e99614654996000526050602052604060002090565b98614634565b50614786614778612bf7606086015143613e89565b612c07604086015142613e89565b614314565b506147a3612c2c826000526039602052604060002090565b6142b7565b6040830151156148f5576147c0610f738451600f0b90565b60808801526020840180514210806148df575b6148a6575b602084019242845111908161488f575b50614849575b61480661176082516000526050602052604060002090565b92519081614816575b505061428b565b5191965090810361482c575080945b388061480f565b611760614843916000526050602052604060002090565b94614825565b61488a61464d61487c61486d6148608851600f0b90565b630784ce0090600f0b0590565b600f0b60208c01908152612aa0565b612ab2612aad428851613e89565b6147ee565b905061489f61162e8651600f0b90565b13386147e8565b6148da6116b16148cc6148bd6148608951600f0b90565b600f0b60208a01908152612aa0565b612ab2612aad428651613e89565b6147d8565b50826148ef61162e8751600f0b90565b136147d3565b816147c0565b916112f36112ea61490c9242613dd5565b614915836113ba565b54156149c65781156149b457428111156149a25761493242613db6565b8111614990576149726107719361495d61494d603b5461377b565b809761495882603b55565b614a9a565b5061096a86600052604b602052604060002090565b614989610a2485600052604a602052604060002090565b9184614c0a565b60405163f761f1cd60e01b8152600490fd5b604051638e6b5b6760e01b8152600490fd5b604051631f2a200560e01b8152600490fd5b60405163c1ab6dc160e01b8152600490fd5b906112f36112ea6149e99242613dd5565b600080526033602052907f44496df070da3f045064f6d6f394484a8de10d5710290d619b67d975ec89320f54156149c65780156149b457428211156149a257614a3142613db6565b82116149905761077191614a54614a49603b5461377b565b809561495882603b55565b50614a7c614a6c85600052604b602052604060002090565b80546001600160a01b0319169055565b614a93610a2485600052604a602052604060002090565b9184614d8c565b6001600160a01b03811690614ac490614ab4831515613d89565b614abe8482613de2565b836158f9565b6000600080516020615cb28339815191528180a4600190565b815181546001600160801b0319166001600160801b039091161781556106c091600290604090602081015160018501550151151591019060ff801983541691151516179055565b919060445490614b32614018565b8351602080860151604080880151151590850152908301908152600f9190910b80835291959160016001607f1b03811360016001607f1b031982121761378a57866136bd96600395614b99614bbe94600080516020615c928339815191529b90600f0b9052565b80614c02575b50614bb882610fb387600052604a602052604060002090565b8461426c565b516040805160008152602081019290925242908201523390600080516020615c5283398151915290606090a460408051828152602081019290925290918291820190565b845238614b9f565b909291614c8160445493614c21610fcc8787613dd5565b614c29614018565b90614c358151600f0b90565b93614c61602083015195614c4c6040850151151590565b1515604086015260208501968752600f0b8452565b614b99614c7a614c708a615be3565b8551600f0b6141de565b600f0b8452565b83151580614d84575b614cfa575b926001614ce292600080516020615c928339815191529551600080516020615c5283398151915260405180614cd93394429089846040919493926060820195825260208201520152565b0390a482613dd5565b604080519283526020830191909152819081016136bd565b9260018060a01b03614d196108bb84600052604b602052604060002090565b1680614d5b5750803410614d49576001614ce292600080516020615c92833981519152955b929550925050614c8f565b60405163162908e360e11b8152600490fd5b614ce292600080516020615c9283398151915295614d7f84600194309033906150c9565b614d3e565b506001614c8a565b909291614da360445493614c21610fcc8787613dd5565b83151580614df957614cfa57926001614ce292600080516020615c928339815191529551600080516020615c5283398151915260405180614cd93394429089846040919493926060820195825260208201520152565b506000614c8a565b6044549192614e13610fcc8585613dd5565b614e87614e1e614018565b8251600f0b92614e4f602082015194614e3a6040840151151590565b1515604085015260208401958652600f0b8352565b614e6f614e68614e5e89615be3565b8451600f0b6141de565b600f0b8352565b614bb882610fb387600052604a602052604060002090565b83151580614f57575b614edf575b926000614ce292600080516020615c928339815191529551600080516020615c5283398151915260405180614cd93394429089846040919493926060820195825260208201520152565b9260018060a01b03614efe6108bb84600052604b602052604060002090565b1680614f2e5750803410614d49576000614ce292600080516020615c92833981519152955b929550925050614e95565b614ce292600080516020615c9283398151915295614f5284600094309033906150c9565b614f23565b506001614e90565b6044549192614f71610fcc8585613dd5565b614f7c614e1e614018565b8315158061504c575b614fd4575b926002614ce292600080516020615c928339815191529551600080516020615c5283398151915260405180614cd93394429089846040919493926060820195825260208201520152565b9260018060a01b03614ff36108bb84600052604b602052604060002090565b16806150235750803410614d49576002614ce292600080516020615c92833981519152955b929550925050614f8a565b614ce292600080516020615c928339815191529561504784600294309033906150c9565b615018565b506001614f85565b90929161506b60445493614c21610fcc8787613dd5565b831515806150c157614edf57926000614ce292600080516020615c928339815191529551600080516020615c5283398151915260405180614cd93394429089846040919493926060820195825260208201520152565b506000614e90565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526106c09161510b82610649565b604051615169916001600160a01b031661512482610677565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1615163613c79565b916151f9565b80518281159182156151d9575b50509050156151825750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b8380929350010312610562578101516151f1816111b6565b808238615176565b9192901561525b575081511561520d575090565b3b156152165790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561526e5750805190602001fd5b60405162461bcd60e51b815290819061528a9060048301610760565b0390fd5b8051906001600160401b03821161062957600160401b821161062957604854826048558083106152f8575b5060486000908152602091820191600080516020615c32833981519152915b8481106152e6575050505050565b835183820155928101926001016152d8565b60486000908152600080516020615c328339815191529182019184015b8281106153235750506152b9565b818155600101615315565b6048546001600160401b03811161062957600160401b811161062957604754816047558082106153a8575b5060476000908152600080516020615c328339815191528054600080516020615c7283398151915291905b848410615392575050505050565b6001809192019384549281850155019290615384565b60476000908152600080516020615c728339815191529182019183015b8281106153d3575050615359565b8181556001016153c5565b9193909592946153fe610b1961093d846000526049602052604060002090565b6155d2574285106149a257859361547a92615475610b1993868961546a8d61545c60409e8f519485936020850197889290916074949284526bffffffffffffffffffffffff199060601b166020840152603483015260548201520190565b03601f198101835282610692565b519020933691610c3f565b6155e4565b6155c15761549281600052604c602052604060002090565b549485156155795750506154c162093a806154ba610a2487600052604a602052604060002090565b9304614156565b9060208301518210615568576154d642613db6565b8211615557576154ea610f738451600f0b90565b908082116155465791615518828461551e95600080516020615cd28339815191529897951061552957613e89565b86615054565b51828152602090a190565b61554181610abf8b6000526054602052604060002090565b613e89565b845163162908e360e11b8152600490fd5b835163f761f1cd60e01b8152600490fd5b8351638e6b5b6760e01b8152600490fd5b9261558c91955061559294504290613e89565b906149d8565b90816155a882600052604c602052604060002090565b556155bd82600052604d602052604060002090565b5590565b83516309bde33960e01b8152600490fd5b60405163504570e360e01b8152600490fd5b929091906000915b8451831015615639576155ff83866137a5565b5190600082821015615627575060005260205261562160406000205b9261377b565b916155ec565b6040916156219382526020522061561b565b915092501490565b60405163a9059cbb60e01b60208201526001600160a01b0390921660248301526044808301939093529181526106c09161510b8261062e565b6156848133613b17565b156109b0576000818152603c6020908152604080832054603e909252822080546001600160a01b03191690556001600160a01b031673__$d6f092accc63e0bf8f1744f29529542834$__803b1561575d578260e4916040519283809263690f66bf60e01b8252604a60048301526056602483015260556044830152605460648301528860848301528460a48301528460c48301525af480156110a457615744575b506157308382613e96565b600080516020615cb28339815191528280a4565b8061575161575792610664565b80610557565b38615725565b8280fd5b6157fa90929192615773603b5461377b565b603b8190556000818152604a60205260409020855181546001600160801b0319166001600160801b03909116178155909485929161495891906157d6906020830151600182015560026040840151151591019060ff801983541691151516179055565b6040516157e28161060e565b6000815260006020820152600060408201528461426c565b50565b806000526040602052604060002054431461581d57610771904290615832565b50600090565b90816020910312610562575190565b9060405191637b29b3d160e01b8352604f6004840152604e60248401526044830152606482015260208160848173__$227f16069b523eeecbbbd0559d29a49482$__5af49081156110a457600091615888575090565b610771915060203d8111611a7157611a638183610692565b6043549060405191637259b01960e01b835260506004840152603960248401526044830152606482015260208160848173__$227f16069b523eeecbbbd0559d29a49482$__5af49081156110a457600091615888575090565b73__$d6f092accc63e0bf8f1744f29529542834$__91823b156105625760e4600092604051948593849263690f66bf60e01b8452604a600485015260566024850152605560448501526054606485015260848401528560a484015260018060a01b031660c48301525af480156110a4576159705750565b806157516106c092610664565b9073__$d6f092accc63e0bf8f1744f29529542834$__803b156105625760009260e491604051958694859363690f66bf60e01b8552604a6004860152605660248601526055604486015260546064860152608485015260a484015260018060a01b031660c48301525af480156110a4576159705750565b73__$d6f092accc63e0bf8f1744f29529542834$__91823b156105625760a460009260405194859384926375f199b960e11b8452605660048501526055602485015260448401526064830152600160848301525af480156110a457615a565750565b6106c090610664565b600090615a79610a2482600052604a602052604060002090565b615a89610b196040830151151590565b61138457615aa1826000526040602052604060002090565b544314615b32578115615b2d575b615ac3826000526054602052604060002090565b5491838314613cc057615aff615ae0610f73615b059451600f0b90565b9185615af96108bb83600052603c602052604060002090565b9161597d565b836159f4565b337ff1aa2a9e40138176a3ee6099df056f5c175f8511a0d8b8275d94d1ea5de46773600080a4565b615aaf565b6040516342d6fce760e01b8152600490fd5b615b5b610a2482600052604a602052604060002090565b615b6b610b196040830151151590565b6113845782151580615bbb575b612cf357615b90826000526040602052604060002090565b544314615b3257818314615bb257615ac3826000526054602052604060002090565b60009250615aaf565b506000838152603c602052604090206001600160a01b0390615bdc906108bb565b1615615b78565b60016001607f1b038111615c00576001600160801b0316600f0b90565b6040516393dafdf160e01b8152600490fd5b600f0b60008112615c205790565b60405162406f5d60e21b8152600490fdfe15040156076f78057c0a886f6dbac29221fa3c2646adbc8effedab98152ff32b8835c22a0c751188de86681e15904223c054bedd5c68ec8858945b7831290273c43c1e24e1884c4e28a16bbd9506f60b5ca9f18fc90635e729d3cfe13abcf0015e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5cddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3eff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7a164736f6c6343000813000a"; type VotingEscrowConstructorParams = | [linkLibraryAddresses: VotingEscrowLibraryAddresses, signer?: Signer] diff --git a/test/VotingEscrow.test.ts b/test/VotingEscrow.test.ts index 148ecc3..5563428 100644 --- a/test/VotingEscrow.test.ts +++ b/test/VotingEscrow.test.ts @@ -29,7 +29,7 @@ describe('VotingEscrow', function () { let node1: string; let node2: string; - before(function () { + before(async function () { now = Math.floor(new Date().getTime() / 1000); node1 = ethers.keccak256( @@ -54,6 +54,7 @@ describe('VotingEscrow', function () { }); it('create native ve', async function () { + await ethers.provider.send("evm_mine"); await expect(ve.connect(accounts[1]).commitNativeRoots(now, [root])).to.be.revertedWithCustomError(ve, 'NotTeam'); await ve.connect(accounts[0]).commitNativeRoots(now, [root]); await ve.connect(accounts[0]).approveNativeRoots();