From f75caede0f596b75490fca6b75138e1fb4cfef52 Mon Sep 17 00:00:00 2001 From: lash Date: Wed, 2 Mar 2022 07:22:19 +0000 Subject: [PATCH] Settable sink address --- .../data/DemurrageTokenSingleCap.bin | 2 +- .../data/DemurrageTokenSingleCap.json | 2 +- .../data/DemurrageTokenSingleNocap.bin | 2 +- .../data/DemurrageTokenSingleNocap.json | 2 +- python/setup.cfg | 2 +- python/tests/test_basic.py | 1 - python/tests/test_period.py | 81 ++++++++++++++++++- solidity/DemurrageTokenSingleCap.sol | 6 ++ solidity/DemurrageTokenSingleNocap.sol | 7 ++ 9 files changed, 98 insertions(+), 7 deletions(-) diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin index cd2547b..b1d17a5 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.bin @@ -1 +1 @@ -61010060405264e8d4a510006a52b7d2dcc80cd2e40000006200002391906200041a565b6080908152503480156200003657600080fd5b50604051620035943803806200359483398181016040528101906200005c919062000739565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600690805190602001906200012f92919062000331565b5085600790805190602001906200014892919062000331565b508460ff166008819055504260038190555060035460a08181525050603c836200017391906200041a565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002c4640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600a8190555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a620002b091906200097e565b600b81905550505050505050505062000a34565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033f90620009fe565b90600052602060002090601f016020900481019282620003635760008555620003af565b82601f106200037e57805160ff1916838001178555620003af565b82800160010185558215620003af579182015b82811115620003ae57825182559160200191906001019062000391565b5b509050620003be9190620003c2565b5090565b5b80821115620003dd576000816000905550600101620003c3565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200042782620003e1565b91506200043483620003e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000470576200046f620003eb565b5b828202905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004e48262000499565b810181811067ffffffffffffffff82111715620005065762000505620004aa565b5b80604052505050565b60006200051b6200047b565b9050620005298282620004d9565b919050565b600067ffffffffffffffff8211156200054c576200054b620004aa565b5b620005578262000499565b9050602081019050919050565b60005b838110156200058457808201518184015260208101905062000567565b8381111562000594576000848401525b50505050565b6000620005b1620005ab846200052e565b6200050f565b905082815260208101848484011115620005d057620005cf62000494565b5b620005dd84828562000564565b509392505050565b600082601f830112620005fd57620005fc6200048f565b5b81516200060f8482602086016200059a565b91505092915050565b600060ff82169050919050565b620006308162000618565b81146200063c57600080fd5b50565b600081519050620006508162000625565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6200067d8162000656565b81146200068957600080fd5b50565b6000815190506200069d8162000672565b92915050565b620006ae81620003e1565b8114620006ba57600080fd5b50565b600081519050620006ce81620006a3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070182620006d4565b9050919050565b6200071381620006f4565b81146200071f57600080fd5b50565b600081519050620007338162000708565b92915050565b600080600080600080600060e0888a0312156200075b576200075a62000485565b5b600088015167ffffffffffffffff8111156200077c576200077b6200048a565b5b6200078a8a828b01620005e5565b975050602088015167ffffffffffffffff811115620007ae57620007ad6200048a565b5b620007bc8a828b01620005e5565b9650506040620007cf8a828b016200063f565b9550506060620007e28a828b016200068c565b9450506080620007f58a828b01620006bd565b93505060a0620008088a828b0162000722565b92505060c06200081b8a828b01620006bd565b91505092959891949750929550565b6000600282049050919050565b6000808291508390505b60018511156200088957808604811115620008615762000860620003eb565b5b6001851615620008715780820291505b808102905062000881856200082a565b945062000841565b94509492505050565b600082620008a4576001905062000977565b81620008b4576000905062000977565b8160018114620008cd5760028114620008d8576200090e565b600191505062000977565b60ff841115620008ed57620008ec620003eb565b5b8360020a915084821115620009075762000906620003eb565b5b5062000977565b5060208310610133831016604e8410600b8410161715620009485782820a905083811115620009425762000941620003eb565b5b62000977565b62000957848484600162000837565b92509050818404811115620009715762000970620003eb565b5b81810290505b9392505050565b60006200098b82620003e1565b91506200099883620003e1565b9250620009c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000892565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a1757607f821691505b6020821081141562000a2e5762000a2d620009cf565b5b50919050565b60805160a05160c05160e051612ae762000aad60003960008181610ca501528181610ef50152611b4d015260008181611197015281816119c30152611bec0152600081816111c301528181611c0d0152611c520152600081816112360152818161126e015281816112e6015261199f0152612ae76000f3fe608060405234801561001057600080fd5b506004361061027b576000357c0100000000000000000000000000000000000000000000000000000000900480636ffa8a05116101635780639da7d8ba116100e0578063e3ab207a116100a4578063e3ab207a14610820578063e54d63f714610850578063e809529514610880578063eda4e6d61461089e578063f2fde38b146108bc578063f83da35d146108ec5761027b565b80639da7d8ba14610754578063a9059cbb14610784578063ab28cea0146107b4578063b470aade146107d2578063c0ab7077146107f05761027b565b80638da5cb5b116101275780638da5cb5b146106ac5780638f1df6bc146106ca5780638f770ad0146106e857806395d89b4114610706578063983b2d56146107245761027b565b80636ffa8a05146105e057806370a0823114610610578063731f237c1461064057806379ba50971461065e5780638d34855a1461067c5761027b565b8063313ce567116101fc57806351b4541c116101c057806351b4541c146104e4578063573cc5071461051457806358b2833b146105325780636721d4ef146105505780636787a9be146105805780636a2d094e146105b05761027b565b8063313ce5671461040657806340452d9114610424578063449a52f81461045457806347a50517146104845780634abfbba2146104b45761027b565b80631989c6a8116102435780631989c6a81461033a578063229ba1971461035857806323b872dd146103765780633092afd5146103a657806331333487146103d65761027b565b806301ffc9a71461028057806306fdde03146102b0578063095ea7b3146102ce57806309f28f3c146102fe57806318160ddd1461031c575b600080fd5b61029a600480360381019061029591906121bb565b61091c565b6040516102a79190612203565b60405180910390f35b6102b8610ac7565b6040516102c591906122b7565b60405180910390f35b6102e860048036038101906102e3919061236d565b610b55565b6040516102f59190612203565b60405180910390f35b610306610c6f565b60405161031391906123d8565b60405180910390f35b610324610c91565b6040516103319190612402565b60405180910390f35b610342610c97565b60405161034f9190612402565b60405180910390f35b610360610ca3565b60405161036d9190612402565b60405180910390f35b610390600480360381019061038b919061241d565b610cc7565b60405161039d9190612203565b60405180910390f35b6103c060048036038101906103bb9190612470565b610de7565b6040516103cd9190612203565b60405180910390f35b6103f060048036038101906103eb919061249d565b610eda565b6040516103fd9190612402565b60405180910390f35b61040e610f8e565b60405161041b9190612402565b60405180910390f35b61043e600480360381019061043991906124dd565b610f94565b60405161044b9190612523565b60405180910390f35b61046e6004803603810190610469919061236d565b610fb8565b60405161047b9190612203565b60405180910390f35b61049e60048036038101906104999190612470565b61114a565b6040516104ab9190612402565b60405180910390f35b6104ce60048036038101906104c991906124dd565b611193565b6040516104db9190612402565b60405180910390f35b6104fe60048036038101906104f991906124dd565b6111f3565b60405161050b9190612402565b60405180910390f35b61051c611214565b6040516105299190612402565b60405180910390f35b61053a61121a565b6040516105479190612402565b60405180910390f35b61056a6004803603810190610565919061249d565b611220565b6040516105779190612402565b60405180910390f35b61059a600480360381019061059591906124dd565b6112a1565b6040516105a79190612402565b60405180910390f35b6105ca60048036038101906105c591906124dd565b611321565b6040516105d79190612402565b60405180910390f35b6105fa60048036038101906105f5919061256a565b611342565b6040516106079190612402565b60405180910390f35b61062a60048036038101906106259190612470565b61137c565b6040516106379190612402565b60405180910390f35b610648611434565b6040516106559190612203565b60405180910390f35b610666611445565b6040516106739190612203565b60405180910390f35b6106966004803603810190610691919061256a565b6115ec565b6040516106a39190612402565b60405180910390f35b6106b461161a565b6040516106c191906125a6565b60405180910390f35b6106d2611640565b6040516106df9190612203565b60405180910390f35b6106f061178a565b6040516106fd9190612402565b60405180910390f35b61070e611790565b60405161071b91906122b7565b60405180910390f35b61073e60048036038101906107399190612470565b61181e565b60405161074b9190612203565b60405180910390f35b61076e6004803603810190610769919061256a565b6118db565b60405161077b9190612402565b60405180910390f35b61079e6004803603810190610799919061236d565b611907565b6040516107ab9190612203565b60405180910390f35b6107bc61199d565b6040516107c99190612402565b60405180910390f35b6107da6119c1565b6040516107e79190612402565b60405180910390f35b61080a600480360381019061080591906124dd565b6119e5565b6040516108179190612203565b60405180910390f35b61083a6004803603810190610835919061256a565b611b1e565b6040516108479190612402565b60405180910390f35b61086a6004803603810190610865919061249d565b611b32565b6040516108779190612402565b60405180910390f35b610888611be6565b60405161089591906123d8565b60405180910390f35b6108a6611c50565b6040516108b39190612402565b60405180910390f35b6108d660048036038101906108d19190612470565b611c74565b6040516108e39190612203565b60405180910390f35b610906600480360381019061090191906125c1565b611d16565b6040516109139190612523565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109715760019050610ac2565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109c45760019050610ac2565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a175760019050610ac2565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a6a5760019050610ac2565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610abd5760019050610ac2565b600090505b919050565b60068054610ad490612657565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0090612657565b8015610b4d5780601f10610b2257610100808354040283529160200191610b4d565b820191906000526020600020905b815481529060010190602001808311610b3057829003601f168201915b505050505081565b600080610b60611640565b50610b6a836112a1565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bf891906126b8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c5c9190612402565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610cd4611640565b50610cde846112a1565b915081600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d6957600080fd5b610d74868684611d83565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610dd39190612402565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e7057503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e7957600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610f1e919061273d565b905060005b84811015610f675764e8d4a510008284610f3d919061276e565b610f47919061273d565b83610f5291906127c8565b92508080610f5f906127fc565b915050610f23565b5064e8d4a510008583610f7a919061276e565b610f84919061273d565b9250505092915050565b60085481565b60008181548110610fa457600080fd5b906000526020600020016000915090505481565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e90612891565b60405180910390fd5b600a546009548461105891906126b8565b1115611099576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611090906128fd565b60405180910390fd5b6110a1611640565b506110ab836112a1565b905082600960008282546110bf91906126b8565b925050819055506110d08482611da8565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88560405161112e9190612402565b60405180910390a361113e611e6d565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826111c1919061276e565b7f00000000000000000000000000000000000000000000000000000000000000006111ec91906126b8565b9050919050565b6000603c824261120391906127c8565b61120d919061273d565b9050919050565b600b5481565b60035481565b6000806402540be40083611234919061276e565b7f000000000000000000000000000000000000000000000000000000000000000061125f91906127c8565b8461126a919061276e565b90507f000000000000000000000000000000000000000000000000000000000000000081611298919061273d565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166112d2919061291d565b6fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000083611310919061276e565b61131a919061273d565b9050919050565b6000603c824261133191906127c8565b61133b919061273d565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b60008060008061138b8561114a565b92506113986003546111f3565b90506113e46402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166113cc919061291d565b6fffffffffffffffffffffffffffffffff1682610eda565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e4000000611414919061276e565b8284611420919061276e565b61142a919061273d565b9350505050919050565b600061144060006119e5565b905090565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a257600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b60008060006115fa846118db565b915061160584611342565b90506116118282611220565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000806000611656611434565b5061165f611f0f565b9750600060010288141561167e57600098505050505050505050611787565b61168788611b1e565b955060018661169691906126b8565b90506116a186611193565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506116df82611321565b925060008311156116fb576116f48584611b32565b93506116ff565b8493505b61170e60008560095484611d16565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556117428761200a565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516117729190612402565b60405180910390a16001985050505050505050505b90565b600a5481565b6007805461179d90612657565b80601f01602080910402602001604051908101604052809291908181526020018280546117c990612657565b80156118165780601f106117eb57610100808354040283529160200191611816565b820191906000526020600020905b8154815290600101906020018083116117f957829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461187a57600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b6000806000611914611640565b5061191e846112a1565b915061192b338684611d83565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161198a9190612402565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006119f56003546111f3565b91506000821415611a0b57600092505050611b19565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050600084118015611a4d57508184105b15611a56578391505b611a608183610eda565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c82611aa5919061276e565b600354611ab291906126b8565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff16604051611b0a91906129a2565b60405180910390a46001925050505b919050565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611b76919061273d565b905060005b84811015611bbf5764e8d4a510008284611b95919061276e565b611b9f919061273d565b83611baa91906126b8565b92508080611bb7906127fc565b915050611b7b565b5064e8d4a510008583611bd2919061276e565b611bdc919061273d565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611c3791906127c8565b611c41919061273d565b611c4b91906126b8565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cd057600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611d908584612056565b50611d9b8484611da8565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611e055760009350505050611e67565b611e0e8661114a565b92508483611e1c91906126b8565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611e8b91906127c8565b81548110611e9c57611e9b6129bd565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611ee791906127c8565b81548110611ef857611ef76129bd565b5b906000526020600020018190555060019250505090565b6000806000806001600080549050611f2791906127c8565b81548110611f3857611f376129bd565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015611fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd09190612a18565b6fffffffffffffffffffffffffffffffff169050611fed82611b1e565b811161200157600060010292505050612007565b81925050505b90565b600080612016836115ec565b905061204c600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612047836112a1565b611da8565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008514156120b35760009350505050612158565b6120bc8661114a565b925084831015612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890612a91565b60405180910390fd5b848361210d91906127c8565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61219881612163565b81146121a357600080fd5b50565b6000813590506121b58161218f565b92915050565b6000602082840312156121d1576121d061215e565b5b60006121df848285016121a6565b91505092915050565b60008115159050919050565b6121fd816121e8565b82525050565b600060208201905061221860008301846121f4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561225857808201518184015260208101905061223d565b83811115612267576000848401525b50505050565b6000601f19601f8301169050919050565b60006122898261221e565b6122938185612229565b93506122a381856020860161223a565b6122ac8161226d565b840191505092915050565b600060208201905081810360008301526122d1818461227e565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612304826122d9565b9050919050565b612314816122f9565b811461231f57600080fd5b50565b6000813590506123318161230b565b92915050565b6000819050919050565b61234a81612337565b811461235557600080fd5b50565b60008135905061236781612341565b92915050565b600080604083850312156123845761238361215e565b5b600061239285828601612322565b92505060206123a385828601612358565b9150509250929050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6123d2816123ad565b82525050565b60006020820190506123ed60008301846123c9565b92915050565b6123fc81612337565b82525050565b600060208201905061241760008301846123f3565b92915050565b6000806000606084860312156124365761243561215e565b5b600061244486828701612322565b935050602061245586828701612322565b925050604061246686828701612358565b9150509250925092565b6000602082840312156124865761248561215e565b5b600061249484828501612322565b91505092915050565b600080604083850312156124b4576124b361215e565b5b60006124c285828601612358565b92505060206124d385828601612358565b9150509250929050565b6000602082840312156124f3576124f261215e565b5b600061250184828501612358565b91505092915050565b6000819050919050565b61251d8161250a565b82525050565b60006020820190506125386000830184612514565b92915050565b6125478161250a565b811461255257600080fd5b50565b6000813590506125648161253e565b92915050565b6000602082840312156125805761257f61215e565b5b600061258e84828501612555565b91505092915050565b6125a0816122f9565b82525050565b60006020820190506125bb6000830184612597565b92915050565b600080600080608085870312156125db576125da61215e565b5b60006125e987828801612358565b94505060206125fa87828801612358565b935050604061260b87828801612358565b925050606061261c87828801612358565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061266f57607f821691505b6020821081141561268357612682612628565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006126c382612337565b91506126ce83612337565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561270357612702612689565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061274882612337565b915061275383612337565b9250826127635761276261270e565b5b828204905092915050565b600061277982612337565b915061278483612337565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127bd576127bc612689565b5b828202905092915050565b60006127d382612337565b91506127de83612337565b9250828210156127f1576127f0612689565b5b828203905092915050565b600061280782612337565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561283a57612839612689565b5b600182019050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b600061287b600a83612229565b915061288682612845565b602082019050919050565b600060208201905081810360008301526128aa8161286e565b9050919050565b7f4552525f43415000000000000000000000000000000000000000000000000000600082015250565b60006128e7600783612229565b91506128f2826128b1565b602082019050919050565b60006020820190508181036000830152612916816128da565b9050919050565b6000612928826123ad565b9150612933836123ad565b9250816fffffffffffffffffffffffffffffffff048311821515161561295c5761295b612689565b5b828202905092915050565b6000819050919050565b600061298c612987612982846123ad565b612967565b612337565b9050919050565b61299c81612971565b82525050565b60006020820190506129b76000830184612993565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6129f5816123ad565b8114612a0057600080fd5b50565b600081519050612a12816129ec565b92915050565b600060208284031215612a2e57612a2d61215e565b5b6000612a3c84828501612a03565b91505092915050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000612a7b600d83612229565b9150612a8682612a45565b602082019050919050565b60006020820190508181036000830152612aaa81612a6e565b905091905056fea2646970667358221220a34e386e62a58dd57f930ba904b876259533aa4875ee68b32659ea4f3d7b116d64736f6c634300080b0033 \ No newline at end of file +61010060405264e8d4a510006a52b7d2dcc80cd2e40000006200002391906200041a565b6080908152503480156200003657600080fd5b50604051620036593803806200365983398181016040528101906200005c919062000739565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555086600690805190602001906200012f92919062000331565b5085600790805190602001906200014892919062000331565b508460ff166008819055504260038190555060035460a08181525050603c836200017391906200041a565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002c4640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600a8190555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560ff16600a620002b091906200097e565b600b81905550505050505050505062000a34565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033f90620009fe565b90600052602060002090601f016020900481019282620003635760008555620003af565b82601f106200037e57805160ff1916838001178555620003af565b82800160010185558215620003af579182015b82811115620003ae57825182559160200191906001019062000391565b5b509050620003be9190620003c2565b5090565b5b80821115620003dd576000816000905550600101620003c3565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200042782620003e1565b91506200043483620003e1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000470576200046f620003eb565b5b828202905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004e48262000499565b810181811067ffffffffffffffff82111715620005065762000505620004aa565b5b80604052505050565b60006200051b6200047b565b9050620005298282620004d9565b919050565b600067ffffffffffffffff8211156200054c576200054b620004aa565b5b620005578262000499565b9050602081019050919050565b60005b838110156200058457808201518184015260208101905062000567565b8381111562000594576000848401525b50505050565b6000620005b1620005ab846200052e565b6200050f565b905082815260208101848484011115620005d057620005cf62000494565b5b620005dd84828562000564565b509392505050565b600082601f830112620005fd57620005fc6200048f565b5b81516200060f8482602086016200059a565b91505092915050565b600060ff82169050919050565b620006308162000618565b81146200063c57600080fd5b50565b600081519050620006508162000625565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6200067d8162000656565b81146200068957600080fd5b50565b6000815190506200069d8162000672565b92915050565b620006ae81620003e1565b8114620006ba57600080fd5b50565b600081519050620006ce81620006a3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070182620006d4565b9050919050565b6200071381620006f4565b81146200071f57600080fd5b50565b600081519050620007338162000708565b92915050565b600080600080600080600060e0888a0312156200075b576200075a62000485565b5b600088015167ffffffffffffffff8111156200077c576200077b6200048a565b5b6200078a8a828b01620005e5565b975050602088015167ffffffffffffffff811115620007ae57620007ad6200048a565b5b620007bc8a828b01620005e5565b9650506040620007cf8a828b016200063f565b9550506060620007e28a828b016200068c565b9450506080620007f58a828b01620006bd565b93505060a0620008088a828b0162000722565b92505060c06200081b8a828b01620006bd565b91505092959891949750929550565b6000600282049050919050565b6000808291508390505b60018511156200088957808604811115620008615762000860620003eb565b5b6001851615620008715780820291505b808102905062000881856200082a565b945062000841565b94509492505050565b600082620008a4576001905062000977565b81620008b4576000905062000977565b8160018114620008cd5760028114620008d8576200090e565b600191505062000977565b60ff841115620008ed57620008ec620003eb565b5b8360020a915084821115620009075762000906620003eb565b5b5062000977565b5060208310610133831016604e8410600b8410161715620009485782820a905083811115620009425762000941620003eb565b5b62000977565b62000957848484600162000837565b92509050818404811115620009715762000970620003eb565b5b81810290505b9392505050565b60006200098b82620003e1565b91506200099883620003e1565b9250620009c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000892565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a1757607f821691505b6020821081141562000a2e5762000a2d620009cf565b5b50919050565b60805160a05160c05160e051612bac62000aad60003960008181610ccc01528181610f1c0152611c120152600081816111be01528181611a880152611cb10152600081816111ea01528181611cd20152611d1701526000818161125d015281816112950152818161130d0152611a640152612bac6000f3fe608060405234801561001057600080fd5b5060043610610286576000357c0100000000000000000000000000000000000000000000000000000000900480636ffa8a051161016e5780639da7d8ba116100e0578063e3ab207a116100a4578063e3ab207a14610847578063e54d63f714610877578063e8095295146108a7578063eda4e6d6146108c5578063f2fde38b146108e3578063f83da35d1461091357610286565b80639da7d8ba1461077b578063a9059cbb146107ab578063ab28cea0146107db578063b470aade146107f9578063c0ab70771461081757610286565b80638da5cb5b116101325780638da5cb5b146106b75780638f0b2d5d146106d55780638f1df6bc146106f15780638f770ad01461070f57806395d89b411461072d578063983b2d561461074b57610286565b80636ffa8a05146105eb57806370a082311461061b578063731f237c1461064b57806379ba5097146106695780638d34855a1461068757610286565b8063313ce5671161020757806351b4541c116101cb57806351b4541c146104ef578063573cc5071461051f57806358b2833b1461053d5780636721d4ef1461055b5780636787a9be1461058b5780636a2d094e146105bb57610286565b8063313ce5671461041157806340452d911461042f578063449a52f81461045f57806347a505171461048f5780634abfbba2146104bf57610286565b80631989c6a81161024e5780631989c6a814610345578063229ba1971461036357806323b872dd146103815780633092afd5146103b157806331333487146103e157610286565b806301ffc9a71461028b57806306fdde03146102bb578063095ea7b3146102d957806309f28f3c1461030957806318160ddd14610327575b600080fd5b6102a560048036038101906102a09190612280565b610943565b6040516102b291906122c8565b60405180910390f35b6102c3610aee565b6040516102d0919061237c565b60405180910390f35b6102f360048036038101906102ee9190612432565b610b7c565b60405161030091906122c8565b60405180910390f35b610311610c96565b60405161031e919061249d565b60405180910390f35b61032f610cb8565b60405161033c91906124c7565b60405180910390f35b61034d610cbe565b60405161035a91906124c7565b60405180910390f35b61036b610cca565b60405161037891906124c7565b60405180910390f35b61039b600480360381019061039691906124e2565b610cee565b6040516103a891906122c8565b60405180910390f35b6103cb60048036038101906103c69190612535565b610e0e565b6040516103d891906122c8565b60405180910390f35b6103fb60048036038101906103f69190612562565b610f01565b60405161040891906124c7565b60405180910390f35b610419610fb5565b60405161042691906124c7565b60405180910390f35b610449600480360381019061044491906125a2565b610fbb565b60405161045691906125e8565b60405180910390f35b61047960048036038101906104749190612432565b610fdf565b60405161048691906122c8565b60405180910390f35b6104a960048036038101906104a49190612535565b611171565b6040516104b691906124c7565b60405180910390f35b6104d960048036038101906104d491906125a2565b6111ba565b6040516104e691906124c7565b60405180910390f35b610509600480360381019061050491906125a2565b61121a565b60405161051691906124c7565b60405180910390f35b61052761123b565b60405161053491906124c7565b60405180910390f35b610545611241565b60405161055291906124c7565b60405180910390f35b61057560048036038101906105709190612562565b611247565b60405161058291906124c7565b60405180910390f35b6105a560048036038101906105a091906125a2565b6112c8565b6040516105b291906124c7565b60405180910390f35b6105d560048036038101906105d091906125a2565b611348565b6040516105e291906124c7565b60405180910390f35b6106056004803603810190610600919061262f565b611369565b60405161061291906124c7565b60405180910390f35b61063560048036038101906106309190612535565b6113a3565b60405161064291906124c7565b60405180910390f35b61065361145b565b60405161066091906122c8565b60405180910390f35b61067161146c565b60405161067e91906122c8565b60405180910390f35b6106a1600480360381019061069c919061262f565b611613565b6040516106ae91906124c7565b60405180910390f35b6106bf611641565b6040516106cc919061266b565b60405180910390f35b6106ef60048036038101906106ea9190612535565b611667565b005b6106f9611705565b60405161070691906122c8565b60405180910390f35b61071761184f565b60405161072491906124c7565b60405180910390f35b610735611855565b604051610742919061237c565b60405180910390f35b61076560048036038101906107609190612535565b6118e3565b60405161077291906122c8565b60405180910390f35b6107956004803603810190610790919061262f565b6119a0565b6040516107a291906124c7565b60405180910390f35b6107c560048036038101906107c09190612432565b6119cc565b6040516107d291906122c8565b60405180910390f35b6107e3611a62565b6040516107f091906124c7565b60405180910390f35b610801611a86565b60405161080e91906124c7565b60405180910390f35b610831600480360381019061082c91906125a2565b611aaa565b60405161083e91906122c8565b60405180910390f35b610861600480360381019061085c919061262f565b611be3565b60405161086e91906124c7565b60405180910390f35b610891600480360381019061088c9190612562565b611bf7565b60405161089e91906124c7565b60405180910390f35b6108af611cab565b6040516108bc919061249d565b60405180910390f35b6108cd611d15565b6040516108da91906124c7565b60405180910390f35b6108fd60048036038101906108f89190612535565b611d39565b60405161090a91906122c8565b60405180910390f35b61092d60048036038101906109289190612686565b611ddb565b60405161093a91906125e8565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109985760019050610ae9565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109eb5760019050610ae9565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a3e5760019050610ae9565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a915760019050610ae9565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610ae45760019050610ae9565b600090505b919050565b60068054610afb9061271c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b279061271c565b8015610b745780601f10610b4957610100808354040283529160200191610b74565b820191906000526020600020905b815481529060010190602001808311610b5757829003601f168201915b505050505081565b600080610b87611705565b50610b91836112c8565b905080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c1f919061277d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c8391906124c7565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610cfb611705565b50610d05846112c8565b915081600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d9057600080fd5b610d9b868684611e48565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610dfa91906124c7565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e9757503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610ea057600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610f459190612802565b905060005b84811015610f8e5764e8d4a510008284610f649190612833565b610f6e9190612802565b83610f79919061288d565b92508080610f86906128c1565b915050610f4a565b5064e8d4a510008583610fa19190612833565b610fab9190612802565b9250505092915050565b60085481565b60008181548110610fcb57600080fd5b906000526020600020016000915090505481565b600080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590612956565b60405180910390fd5b600a546009548461107f919061277d565b11156110c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b7906129c2565b60405180910390fd5b6110c8611705565b506110d2836112c8565b905082600960008282546110e6919061277d565b925050819055506110f78482611e6d565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f88560405161115591906124c7565b60405180910390a3611165611f32565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826111e89190612833565b7f0000000000000000000000000000000000000000000000000000000000000000611213919061277d565b9050919050565b6000603c824261122a919061288d565b6112349190612802565b9050919050565b600b5481565b60035481565b6000806402540be4008361125b9190612833565b7f0000000000000000000000000000000000000000000000000000000000000000611286919061288d565b846112919190612833565b90507f0000000000000000000000000000000000000000000000000000000000000000816112bf9190612802565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166112f991906129e2565b6fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000836113379190612833565b6113419190612802565b9050919050565b6000603c8242611358919061288d565b6113629190612802565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b6000806000806113b285611171565b92506113bf60035461121a565b905061140b6402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166113f391906129e2565b6fffffffffffffffffffffffffffffffff1682610f01565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e400000061143b9190612833565b82846114479190612833565b6114519190612802565b9350505050919050565b60006114676000611aaa565b905090565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114c957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b6000806000611621846119a0565b915061162c84611369565b90506116388282611247565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116c157600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600080600080600061171b61145b565b50611724611fd4565b975060006001028814156117435760009850505050505050505061184c565b61174c88611be3565b955060018661175b919061277d565b9050611766866111ba565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1694506117a482611348565b925060008311156117c0576117b98584611bf7565b93506117c4565b8493505b6117d360008560095484611ddb565b96506000879080600181540180825580915050600190039060005260206000200160009091909190915055611807876120cf565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d6758160405161183791906124c7565b60405180910390a16001985050505050505050505b90565b600a5481565b600780546118629061271c565b80601f016020809104026020016040519081016040528092919081815260200182805461188e9061271c565b80156118db5780601f106118b0576101008083540402835291602001916118db565b820191906000526020600020905b8154815290600101906020018083116118be57829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193f57600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b60008060006119d9611705565b506119e3846112c8565b91506119f0338684611e48565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611a4f91906124c7565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000611aba60035461121a565b91506000821415611ad057600092505050611bde565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050600084118015611b1257508184105b15611b1b578391505b611b258183610f01565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c82611b6a9190612833565b600354611b77919061277d565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff16604051611bcf9190612a67565b60405180910390a46001925050505b919050565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611c3b9190612802565b905060005b84811015611c845764e8d4a510008284611c5a9190612833565b611c649190612802565b83611c6f919061277d565b92508080611c7c906128c1565b915050611c40565b5064e8d4a510008583611c979190612833565b611ca19190612802565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611cfc919061288d565b611d069190612802565b611d10919061277d565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d9557600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611e55858461211b565b50611e608484611e6d565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611eca5760009350505050611f2c565b611ed386611171565b92508483611ee1919061277d565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611f50919061288d565b81548110611f6157611f60612a82565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611fac919061288d565b81548110611fbd57611fbc612a82565b5b906000526020600020018190555060019250505090565b6000806000806001600080549050611fec919061288d565b81548110611ffd57611ffc612a82565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015612071573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120959190612add565b6fffffffffffffffffffffffffffffffff1690506120b282611be3565b81116120c6576000600102925050506120cc565b81925050505b90565b6000806120db83611613565b9050612111600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661210c836112c8565b611e6d565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415612178576000935050505061221d565b61218186611171565b9250848310156121c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bd90612b56565b60405180910390fd5b84836121d2919061288d565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61225d81612228565b811461226857600080fd5b50565b60008135905061227a81612254565b92915050565b60006020828403121561229657612295612223565b5b60006122a48482850161226b565b91505092915050565b60008115159050919050565b6122c2816122ad565b82525050565b60006020820190506122dd60008301846122b9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561231d578082015181840152602081019050612302565b8381111561232c576000848401525b50505050565b6000601f19601f8301169050919050565b600061234e826122e3565b61235881856122ee565b93506123688185602086016122ff565b61237181612332565b840191505092915050565b600060208201905081810360008301526123968184612343565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123c98261239e565b9050919050565b6123d9816123be565b81146123e457600080fd5b50565b6000813590506123f6816123d0565b92915050565b6000819050919050565b61240f816123fc565b811461241a57600080fd5b50565b60008135905061242c81612406565b92915050565b6000806040838503121561244957612448612223565b5b6000612457858286016123e7565b92505060206124688582860161241d565b9150509250929050565b60006fffffffffffffffffffffffffffffffff82169050919050565b61249781612472565b82525050565b60006020820190506124b2600083018461248e565b92915050565b6124c1816123fc565b82525050565b60006020820190506124dc60008301846124b8565b92915050565b6000806000606084860312156124fb576124fa612223565b5b6000612509868287016123e7565b935050602061251a868287016123e7565b925050604061252b8682870161241d565b9150509250925092565b60006020828403121561254b5761254a612223565b5b6000612559848285016123e7565b91505092915050565b6000806040838503121561257957612578612223565b5b60006125878582860161241d565b92505060206125988582860161241d565b9150509250929050565b6000602082840312156125b8576125b7612223565b5b60006125c68482850161241d565b91505092915050565b6000819050919050565b6125e2816125cf565b82525050565b60006020820190506125fd60008301846125d9565b92915050565b61260c816125cf565b811461261757600080fd5b50565b60008135905061262981612603565b92915050565b60006020828403121561264557612644612223565b5b60006126538482850161261a565b91505092915050565b612665816123be565b82525050565b6000602082019050612680600083018461265c565b92915050565b600080600080608085870312156126a05761269f612223565b5b60006126ae8782880161241d565b94505060206126bf8782880161241d565b93505060406126d08782880161241d565b92505060606126e18782880161241d565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061273457607f821691505b60208210811415612748576127476126ed565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612788826123fc565b9150612793836123fc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127c8576127c761274e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061280d826123fc565b9150612818836123fc565b925082612828576128276127d3565b5b828204905092915050565b600061283e826123fc565b9150612849836123fc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128825761288161274e565b5b828202905092915050565b6000612898826123fc565b91506128a3836123fc565b9250828210156128b6576128b561274e565b5b828203905092915050565b60006128cc826123fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156128ff576128fe61274e565b5b600182019050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000612940600a836122ee565b915061294b8261290a565b602082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f4552525f43415000000000000000000000000000000000000000000000000000600082015250565b60006129ac6007836122ee565b91506129b782612976565b602082019050919050565b600060208201905081810360008301526129db8161299f565b9050919050565b60006129ed82612472565b91506129f883612472565b9250816fffffffffffffffffffffffffffffffff0483118215151615612a2157612a2061274e565b5b828202905092915050565b6000819050919050565b6000612a51612a4c612a4784612472565b612a2c565b6123fc565b9050919050565b612a6181612a36565b82525050565b6000602082019050612a7c6000830184612a58565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b612aba81612472565b8114612ac557600080fd5b50565b600081519050612ad781612ab1565b92915050565b600060208284031215612af357612af2612223565b5b6000612b0184828501612ac8565b91505092915050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000612b40600d836122ee565b9150612b4b82612b0a565b602082019050919050565b60006020820190508181036000830152612b6f81612b33565b905091905056fea2646970667358221220100682493d588dd205f0e53bc131ba668867313a64e728c35307651637c6757a64736f6c634300080b0033 \ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.json index 2202faf..9c46b36 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.json +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleCap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"},{"internalType":"uint256","name":"_supplyCap","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin index 8f4b79b..ec2299a 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -61010060405264e8d4a510006a52b7d2dcc80cd2e400000062000023919062000412565b6080908152503480156200003657600080fd5b50604051620034883803806200348883398181016040528101906200005c919062000731565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600690805190602001906200012f92919062000329565b5084600790805190602001906200014892919062000329565b508360ff166008819055504260038190555060035460a08181525050603c8262000173919062000412565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550826fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002bc640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002a991906200095f565b600a819055505050505050505062000a15565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033790620009df565b90600052602060002090601f0160209004810192826200035b5760008555620003a7565b82601f106200037657805160ff1916838001178555620003a7565b82800160010185558215620003a7579182015b82811115620003a657825182559160200191906001019062000389565b5b509050620003b69190620003ba565b5090565b5b80821115620003d5576000816000905550600101620003bb565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200041f82620003d9565b91506200042c83620003d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620004685762000467620003e3565b5b828202905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dc8262000491565b810181811067ffffffffffffffff82111715620004fe57620004fd620004a2565b5b80604052505050565b60006200051362000473565b9050620005218282620004d1565b919050565b600067ffffffffffffffff821115620005445762000543620004a2565b5b6200054f8262000491565b9050602081019050919050565b60005b838110156200057c5780820151818401526020810190506200055f565b838111156200058c576000848401525b50505050565b6000620005a9620005a38462000526565b62000507565b905082815260208101848484011115620005c857620005c76200048c565b5b620005d58482856200055c565b509392505050565b600082601f830112620005f557620005f462000487565b5b81516200060784826020860162000592565b91505092915050565b600060ff82169050919050565b620006288162000610565b81146200063457600080fd5b50565b60008151905062000648816200061d565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b62000675816200064e565b81146200068157600080fd5b50565b60008151905062000695816200066a565b92915050565b620006a681620003d9565b8114620006b257600080fd5b50565b600081519050620006c6816200069b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006f982620006cc565b9050919050565b6200070b81620006ec565b81146200071757600080fd5b50565b6000815190506200072b8162000700565b92915050565b60008060008060008060c087890312156200075157620007506200047d565b5b600087015167ffffffffffffffff81111562000772576200077162000482565b5b6200078089828a01620005dd565b965050602087015167ffffffffffffffff811115620007a457620007a362000482565b5b620007b289828a01620005dd565b9550506040620007c589828a0162000637565b9450506060620007d889828a0162000684565b9350506080620007eb89828a01620006b5565b92505060a0620007fe89828a016200071a565b9150509295509295509295565b6000600282049050919050565b6000808291508390505b60018511156200086a57808604811115620008425762000841620003e3565b5b6001851615620008525780820291505b808102905062000862856200080b565b945062000822565b94509492505050565b60008262000885576001905062000958565b8162000895576000905062000958565b8160018114620008ae5760028114620008b957620008ef565b600191505062000958565b60ff841115620008ce57620008cd620003e3565b5b8360020a915084821115620008e857620008e7620003e3565b5b5062000958565b5060208310610133831016604e8410600b8410161715620009295782820a905083811115620009235762000922620003e3565b5b62000958565b62000938848484600162000818565b92509050818404811115620009525762000951620003e3565b5b81810290505b9392505050565b60006200096c82620003d9565b91506200097983620003d9565b9250620009a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000873565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009f857607f821691505b6020821081141562000a0f5762000a0e620009b0565b5b50919050565b60805160a05160c05160e0516129fa62000a8e60003960008181610c7c01528181610ecc0152611acc01526000818161111c015281816119420152611b6b01526000818161114801528181611b8c0152611bd10152600081816111bb015281816111f30152818161126b015261191e01526129fa6000f3fe608060405234801561001057600080fd5b5060043610610270576000357c0100000000000000000000000000000000000000000000000000000000900480636a2d094e116101635780639da7d8ba116100e0578063e3ab207a116100a4578063e3ab207a146107f7578063e54d63f714610827578063e809529514610857578063eda4e6d614610875578063f2fde38b14610893578063f83da35d146108c357610270565b80639da7d8ba1461072b578063a9059cbb1461075b578063ab28cea01461078b578063b470aade146107a9578063c0ab7077146107c757610270565b80638d34855a116101275780638d34855a146106715780638da5cb5b146106a15780638f1df6bc146106bf57806395d89b41146106dd578063983b2d56146106fb57610270565b80636a2d094e146105a55780636ffa8a05146105d557806370a0823114610605578063731f237c1461063557806379ba50971461065357610270565b8063313ce567116101f157806351b4541c116101b557806351b4541c146104d9578063573cc5071461050957806358b2833b146105275780636721d4ef146105455780636787a9be1461057557610270565b8063313ce567146103fb57806340452d9114610419578063449a52f81461044957806347a50517146104795780634abfbba2146104a957610270565b80631989c6a8116102385780631989c6a81461032f578063229ba1971461034d57806323b872dd1461036b5780633092afd51461039b57806331333487146103cb57610270565b806301ffc9a71461027557806306fdde03146102a5578063095ea7b3146102c357806309f28f3c146102f357806318160ddd14610311575b600080fd5b61028f600480360381019061028a919061213a565b6108f3565b60405161029c9190612182565b60405180910390f35b6102ad610a9e565b6040516102ba9190612236565b60405180910390f35b6102dd60048036038101906102d891906122ec565b610b2c565b6040516102ea9190612182565b60405180910390f35b6102fb610c46565b6040516103089190612357565b60405180910390f35b610319610c68565b6040516103269190612381565b60405180910390f35b610337610c6e565b6040516103449190612381565b60405180910390f35b610355610c7a565b6040516103629190612381565b60405180910390f35b6103856004803603810190610380919061239c565b610c9e565b6040516103929190612182565b60405180910390f35b6103b560048036038101906103b091906123ef565b610dbe565b6040516103c29190612182565b60405180910390f35b6103e560048036038101906103e0919061241c565b610eb1565b6040516103f29190612381565b60405180910390f35b610403610f65565b6040516104109190612381565b60405180910390f35b610433600480360381019061042e919061245c565b610f6b565b60405161044091906124a2565b60405180910390f35b610463600480360381019061045e91906122ec565b610f8f565b6040516104709190612182565b60405180910390f35b610493600480360381019061048e91906123ef565b6110cf565b6040516104a09190612381565b60405180910390f35b6104c360048036038101906104be919061245c565b611118565b6040516104d09190612381565b60405180910390f35b6104f360048036038101906104ee919061245c565b611178565b6040516105009190612381565b60405180910390f35b610511611199565b60405161051e9190612381565b60405180910390f35b61052f61119f565b60405161053c9190612381565b60405180910390f35b61055f600480360381019061055a919061241c565b6111a5565b60405161056c9190612381565b60405180910390f35b61058f600480360381019061058a919061245c565b611226565b60405161059c9190612381565b60405180910390f35b6105bf60048036038101906105ba919061245c565b6112a6565b6040516105cc9190612381565b60405180910390f35b6105ef60048036038101906105ea91906124e9565b6112c7565b6040516105fc9190612381565b60405180910390f35b61061f600480360381019061061a91906123ef565b611301565b60405161062c9190612381565b60405180910390f35b61063d6113b9565b60405161064a9190612182565b60405180910390f35b61065b6113ca565b6040516106689190612182565b60405180910390f35b61068b600480360381019061068691906124e9565b611571565b6040516106989190612381565b60405180910390f35b6106a961159f565b6040516106b69190612525565b60405180910390f35b6106c76115c5565b6040516106d49190612182565b60405180910390f35b6106e561170f565b6040516106f29190612236565b60405180910390f35b610715600480360381019061071091906123ef565b61179d565b6040516107229190612182565b60405180910390f35b610745600480360381019061074091906124e9565b61185a565b6040516107529190612381565b60405180910390f35b610775600480360381019061077091906122ec565b611886565b6040516107829190612182565b60405180910390f35b61079361191c565b6040516107a09190612381565b60405180910390f35b6107b1611940565b6040516107be9190612381565b60405180910390f35b6107e160048036038101906107dc919061245c565b611964565b6040516107ee9190612182565b60405180910390f35b610811600480360381019061080c91906124e9565b611a9d565b60405161081e9190612381565b60405180910390f35b610841600480360381019061083c919061241c565b611ab1565b60405161084e9190612381565b60405180910390f35b61085f611b65565b60405161086c9190612357565b60405180910390f35b61087d611bcf565b60405161088a9190612381565b60405180910390f35b6108ad60048036038101906108a891906123ef565b611bf3565b6040516108ba9190612182565b60405180910390f35b6108dd60048036038101906108d89190612540565b611c95565b6040516108ea91906124a2565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109485760019050610a99565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561099b5760019050610a99565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109ee5760019050610a99565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a415760019050610a99565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a945760019050610a99565b600090505b919050565b60068054610aab906125d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad7906125d6565b8015610b245780601f10610af957610100808354040283529160200191610b24565b820191906000526020600020905b815481529060010190602001808311610b0757829003601f168201915b505050505081565b600080610b376115c5565b50610b4183611226565b905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bcf9190612637565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c339190612381565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610cab6115c5565b50610cb584611226565b915081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d4057600080fd5b610d4b868684611d02565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610daa9190612381565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e4757503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e5057600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610ef591906126bc565b905060005b84811015610f3e5764e8d4a510008284610f1491906126ed565b610f1e91906126bc565b83610f299190612747565b92508080610f369061277b565b915050610efa565b5064e8d4a510008583610f5191906126ed565b610f5b91906126bc565b9250505092915050565b60085481565b60008181548110610f7b57600080fd5b906000526020600020016000915090505481565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661101e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101590612810565b60405180910390fd5b6110266115c5565b5061103083611226565b905082600960008282546110449190612637565b925050819055506110558482611d27565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516110b39190612381565b60405180910390a36110c3611dec565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261114691906126ed565b7f00000000000000000000000000000000000000000000000000000000000000006111719190612637565b9050919050565b6000603c82426111889190612747565b61119291906126bc565b9050919050565b600a5481565b60035481565b6000806402540be400836111b991906126ed565b7f00000000000000000000000000000000000000000000000000000000000000006111e49190612747565b846111ef91906126ed565b90507f00000000000000000000000000000000000000000000000000000000000000008161121d91906126bc565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166112579190612830565b6fffffffffffffffffffffffffffffffff167f00000000000000000000000000000000000000000000000000000000000000008361129591906126ed565b61129f91906126bc565b9050919050565b6000603c82426112b69190612747565b6112c091906126bc565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600080611310856110cf565b925061131d600354611178565b90506113696402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166113519190612830565b6fffffffffffffffffffffffffffffffff1682610eb1565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e400000061139991906126ed565b82846113a591906126ed565b6113af91906126bc565b9350505050919050565b60006113c56000611964565b905090565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461142757600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600080600061157f8461185a565b915061158a846112c7565b905061159682826111a5565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060008060006115db6113b9565b506115e4611e8e565b975060006001028814156116035760009850505050505050505061170c565b61160c88611a9d565b955060018661161b9190612637565b905061162686611118565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611664826112a6565b92506000831115611680576116798584611ab1565b9350611684565b8493505b61169360008560095484611c95565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556116c787611f89565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516116f79190612381565b60405180910390a16001985050505050505050505b90565b6007805461171c906125d6565b80601f0160208091040260200160405190810160405280929190818152602001828054611748906125d6565b80156117955780601f1061176a57610100808354040283529160200191611795565b820191906000526020600020905b81548152906001019060200180831161177857829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117f957600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b60008060006118936115c5565b5061189d84611226565b91506118aa338684611d02565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516119099190612381565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000611974600354611178565b9150600082141561198a57600092505050611a98565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690506000841180156119cc57508184105b156119d5578391505b6119df8183610eb1565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c82611a2491906126ed565b600354611a319190612637565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff16604051611a8991906128b5565b60405180910390a46001925050505b919050565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611af591906126bc565b905060005b84811015611b3e5764e8d4a510008284611b1491906126ed565b611b1e91906126bc565b83611b299190612637565b92508080611b369061277b565b915050611afa565b5064e8d4a510008583611b5191906126ed565b611b5b91906126bc565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611bb69190612747565b611bc091906126bc565b611bca9190612637565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c4f57600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611d0f8584611fd5565b50611d1a8484611d27565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611d845760009350505050611de6565b611d8d866110cf565b92508483611d9b9190612637565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611e0a9190612747565b81548110611e1b57611e1a6128d0565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611e669190612747565b81548110611e7757611e766128d0565b5b906000526020600020018190555060019250505090565b6000806000806001600080549050611ea69190612747565b81548110611eb757611eb66128d0565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f919061292b565b6fffffffffffffffffffffffffffffffff169050611f6c82611a9d565b8111611f8057600060010292505050611f86565b81925050505b90565b600080611f9583611571565b9050611fcb600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611fc683611226565b611d27565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600085141561203257600093505050506120d7565b61203b866110cf565b925084831015612080576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612077906129a4565b60405180910390fd5b848361208c9190612747565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612117816120e2565b811461212257600080fd5b50565b6000813590506121348161210e565b92915050565b6000602082840312156121505761214f6120dd565b5b600061215e84828501612125565b91505092915050565b60008115159050919050565b61217c81612167565b82525050565b60006020820190506121976000830184612173565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121d75780820151818401526020810190506121bc565b838111156121e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006122088261219d565b61221281856121a8565b93506122228185602086016121b9565b61222b816121ec565b840191505092915050565b6000602082019050818103600083015261225081846121fd565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061228382612258565b9050919050565b61229381612278565b811461229e57600080fd5b50565b6000813590506122b08161228a565b92915050565b6000819050919050565b6122c9816122b6565b81146122d457600080fd5b50565b6000813590506122e6816122c0565b92915050565b60008060408385031215612303576123026120dd565b5b6000612311858286016122a1565b9250506020612322858286016122d7565b9150509250929050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6123518161232c565b82525050565b600060208201905061236c6000830184612348565b92915050565b61237b816122b6565b82525050565b60006020820190506123966000830184612372565b92915050565b6000806000606084860312156123b5576123b46120dd565b5b60006123c3868287016122a1565b93505060206123d4868287016122a1565b92505060406123e5868287016122d7565b9150509250925092565b600060208284031215612405576124046120dd565b5b6000612413848285016122a1565b91505092915050565b60008060408385031215612433576124326120dd565b5b6000612441858286016122d7565b9250506020612452858286016122d7565b9150509250929050565b600060208284031215612472576124716120dd565b5b6000612480848285016122d7565b91505092915050565b6000819050919050565b61249c81612489565b82525050565b60006020820190506124b76000830184612493565b92915050565b6124c681612489565b81146124d157600080fd5b50565b6000813590506124e3816124bd565b92915050565b6000602082840312156124ff576124fe6120dd565b5b600061250d848285016124d4565b91505092915050565b61251f81612278565b82525050565b600060208201905061253a6000830184612516565b92915050565b6000806000806080858703121561255a576125596120dd565b5b6000612568878288016122d7565b9450506020612579878288016122d7565b935050604061258a878288016122d7565b925050606061259b878288016122d7565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806125ee57607f821691505b60208210811415612602576126016125a7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612642826122b6565b915061264d836122b6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561268257612681612608565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006126c7826122b6565b91506126d2836122b6565b9250826126e2576126e161268d565b5b828204905092915050565b60006126f8826122b6565b9150612703836122b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561273c5761273b612608565b5b828202905092915050565b6000612752826122b6565b915061275d836122b6565b9250828210156127705761276f612608565b5b828203905092915050565b6000612786826122b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127b9576127b8612608565b5b600182019050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006127fa600a836121a8565b9150612805826127c4565b602082019050919050565b60006020820190508181036000830152612829816127ed565b9050919050565b600061283b8261232c565b91506128468361232c565b9250816fffffffffffffffffffffffffffffffff048311821515161561286f5761286e612608565b5b828202905092915050565b6000819050919050565b600061289f61289a6128958461232c565b61287a565b6122b6565b9050919050565b6128af81612884565b82525050565b60006020820190506128ca60008301846128a6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6129088161232c565b811461291357600080fd5b50565b600081519050612925816128ff565b92915050565b600060208284031215612941576129406120dd565b5b600061294f84828501612916565b91505092915050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b600061298e600d836121a8565b915061299982612958565b602082019050919050565b600060208201905081810360008301526129bd81612981565b905091905056fea2646970667358221220eca804c2a16db98a064abdbe17b24db0416c994d39faf78bda74286145ae68ef64736f6c634300080b0033 \ No newline at end of file +61010060405264e8d4a510006a52b7d2dcc80cd2e400000062000023919062000412565b6080908152503480156200003657600080fd5b506040516200354d3803806200354d83398181016040528101906200005c919062000731565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555085600690805190602001906200012f92919062000329565b5084600790805190602001906200014892919062000329565b508360ff166008819055504260038190555060035460a08181525050603c8262000173919062000412565b60c081815250506b204fce5e3e25026110000000600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550826fffffffffffffffffffffffffffffffff1660e0818152505060006200022b6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002bc640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460ff16600a620002a991906200095f565b600a819055505050505050505062000a15565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b8280546200033790620009df565b90600052602060002090601f0160209004810192826200035b5760008555620003a7565b82601f106200037657805160ff1916838001178555620003a7565b82800160010185558215620003a7579182015b82811115620003a657825182559160200191906001019062000389565b5b509050620003b69190620003ba565b5090565b5b80821115620003d5576000816000905550600101620003bb565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200041f82620003d9565b91506200042c83620003d9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620004685762000467620003e3565b5b828202905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dc8262000491565b810181811067ffffffffffffffff82111715620004fe57620004fd620004a2565b5b80604052505050565b60006200051362000473565b9050620005218282620004d1565b919050565b600067ffffffffffffffff821115620005445762000543620004a2565b5b6200054f8262000491565b9050602081019050919050565b60005b838110156200057c5780820151818401526020810190506200055f565b838111156200058c576000848401525b50505050565b6000620005a9620005a38462000526565b62000507565b905082815260208101848484011115620005c857620005c76200048c565b5b620005d58482856200055c565b509392505050565b600082601f830112620005f557620005f462000487565b5b81516200060784826020860162000592565b91505092915050565b600060ff82169050919050565b620006288162000610565b81146200063457600080fd5b50565b60008151905062000648816200061d565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b62000675816200064e565b81146200068157600080fd5b50565b60008151905062000695816200066a565b92915050565b620006a681620003d9565b8114620006b257600080fd5b50565b600081519050620006c6816200069b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006f982620006cc565b9050919050565b6200070b81620006ec565b81146200071757600080fd5b50565b6000815190506200072b8162000700565b92915050565b60008060008060008060c087890312156200075157620007506200047d565b5b600087015167ffffffffffffffff81111562000772576200077162000482565b5b6200078089828a01620005dd565b965050602087015167ffffffffffffffff811115620007a457620007a362000482565b5b620007b289828a01620005dd565b9550506040620007c589828a0162000637565b9450506060620007d889828a0162000684565b9350506080620007eb89828a01620006b5565b92505060a0620007fe89828a016200071a565b9150509295509295509295565b6000600282049050919050565b6000808291508390505b60018511156200086a57808604811115620008425762000841620003e3565b5b6001851615620008525780820291505b808102905062000862856200080b565b945062000822565b94509492505050565b60008262000885576001905062000958565b8162000895576000905062000958565b8160018114620008ae5760028114620008b957620008ef565b600191505062000958565b60ff841115620008ce57620008cd620003e3565b5b8360020a915084821115620008e857620008e7620003e3565b5b5062000958565b5060208310610133831016604e8410600b8410161715620009295782820a905083811115620009235762000922620003e3565b5b62000958565b62000938848484600162000818565b92509050818404811115620009525762000951620003e3565b5b81810290505b9392505050565b60006200096c82620003d9565b91506200097983620003d9565b9250620009a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000873565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009f857607f821691505b6020821081141562000a0f5762000a0e620009b0565b5b50919050565b60805160a05160c05160e051612abf62000a8e60003960008181610ca301528181610ef30152611b9101526000818161114301528181611a070152611c3001526000818161116f01528181611c510152611c960152600081816111e20152818161121a0152818161129201526119e30152612abf6000f3fe608060405234801561001057600080fd5b506004361061027b576000357c0100000000000000000000000000000000000000000000000000000000900480636ffa8a05116101635780639da7d8ba116100e0578063e3ab207a116100a4578063e3ab207a1461081e578063e54d63f71461084e578063e80952951461087e578063eda4e6d61461089c578063f2fde38b146108ba578063f83da35d146108ea5761027b565b80639da7d8ba14610752578063a9059cbb14610782578063ab28cea0146107b2578063b470aade146107d0578063c0ab7077146107ee5761027b565b80638da5cb5b116101275780638da5cb5b146106ac5780638f0b2d5d146106ca5780638f1df6bc146106e657806395d89b4114610704578063983b2d56146107225761027b565b80636ffa8a05146105e057806370a0823114610610578063731f237c1461064057806379ba50971461065e5780638d34855a1461067c5761027b565b8063313ce567116101fc57806351b4541c116101c057806351b4541c146104e4578063573cc5071461051457806358b2833b146105325780636721d4ef146105505780636787a9be146105805780636a2d094e146105b05761027b565b8063313ce5671461040657806340452d9114610424578063449a52f81461045457806347a50517146104845780634abfbba2146104b45761027b565b80631989c6a8116102435780631989c6a81461033a578063229ba1971461035857806323b872dd146103765780633092afd5146103a657806331333487146103d65761027b565b806301ffc9a71461028057806306fdde03146102b0578063095ea7b3146102ce57806309f28f3c146102fe57806318160ddd1461031c575b600080fd5b61029a600480360381019061029591906121ff565b61091a565b6040516102a79190612247565b60405180910390f35b6102b8610ac5565b6040516102c591906122fb565b60405180910390f35b6102e860048036038101906102e391906123b1565b610b53565b6040516102f59190612247565b60405180910390f35b610306610c6d565b604051610313919061241c565b60405180910390f35b610324610c8f565b6040516103319190612446565b60405180910390f35b610342610c95565b60405161034f9190612446565b60405180910390f35b610360610ca1565b60405161036d9190612446565b60405180910390f35b610390600480360381019061038b9190612461565b610cc5565b60405161039d9190612247565b60405180910390f35b6103c060048036038101906103bb91906124b4565b610de5565b6040516103cd9190612247565b60405180910390f35b6103f060048036038101906103eb91906124e1565b610ed8565b6040516103fd9190612446565b60405180910390f35b61040e610f8c565b60405161041b9190612446565b60405180910390f35b61043e60048036038101906104399190612521565b610f92565b60405161044b9190612567565b60405180910390f35b61046e600480360381019061046991906123b1565b610fb6565b60405161047b9190612247565b60405180910390f35b61049e600480360381019061049991906124b4565b6110f6565b6040516104ab9190612446565b60405180910390f35b6104ce60048036038101906104c99190612521565b61113f565b6040516104db9190612446565b60405180910390f35b6104fe60048036038101906104f99190612521565b61119f565b60405161050b9190612446565b60405180910390f35b61051c6111c0565b6040516105299190612446565b60405180910390f35b61053a6111c6565b6040516105479190612446565b60405180910390f35b61056a600480360381019061056591906124e1565b6111cc565b6040516105779190612446565b60405180910390f35b61059a60048036038101906105959190612521565b61124d565b6040516105a79190612446565b60405180910390f35b6105ca60048036038101906105c59190612521565b6112cd565b6040516105d79190612446565b60405180910390f35b6105fa60048036038101906105f591906125ae565b6112ee565b6040516106079190612446565b60405180910390f35b61062a600480360381019061062591906124b4565b611328565b6040516106379190612446565b60405180910390f35b6106486113e0565b6040516106559190612247565b60405180910390f35b6106666113f1565b6040516106739190612247565b60405180910390f35b610696600480360381019061069191906125ae565b611598565b6040516106a39190612446565b60405180910390f35b6106b46115c6565b6040516106c191906125ea565b60405180910390f35b6106e460048036038101906106df91906124b4565b6115ec565b005b6106ee61168a565b6040516106fb9190612247565b60405180910390f35b61070c6117d4565b60405161071991906122fb565b60405180910390f35b61073c600480360381019061073791906124b4565b611862565b6040516107499190612247565b60405180910390f35b61076c600480360381019061076791906125ae565b61191f565b6040516107799190612446565b60405180910390f35b61079c600480360381019061079791906123b1565b61194b565b6040516107a99190612247565b60405180910390f35b6107ba6119e1565b6040516107c79190612446565b60405180910390f35b6107d8611a05565b6040516107e59190612446565b60405180910390f35b61080860048036038101906108039190612521565b611a29565b6040516108159190612247565b60405180910390f35b610838600480360381019061083391906125ae565b611b62565b6040516108459190612446565b60405180910390f35b610868600480360381019061086391906124e1565b611b76565b6040516108759190612446565b60405180910390f35b610886611c2a565b604051610893919061241c565b60405180910390f35b6108a4611c94565b6040516108b19190612446565b60405180910390f35b6108d460048036038101906108cf91906124b4565b611cb8565b6040516108e19190612247565b60405180910390f35b61090460048036038101906108ff9190612605565b611d5a565b6040516109119190612567565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561096f5760019050610ac0565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156109c25760019050610ac0565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a155760019050610ac0565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610a685760019050610ac0565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610abb5760019050610ac0565b600090505b919050565b60068054610ad29061269b565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe9061269b565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b505050505081565b600080610b5e61168a565b50610b688361124d565b905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bf691906126fc565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610c5a9190612446565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b60095481565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610cd261168a565b50610cdc8461124d565b915081600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d6757600080fd5b610d72868684611dc7565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610dd19190612446565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e6e57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610e7757600080fd5b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610f1c9190612781565b905060005b84811015610f655764e8d4a510008284610f3b91906127b2565b610f459190612781565b83610f50919061280c565b92508080610f5d90612840565b915050610f21565b5064e8d4a510008583610f7891906127b2565b610f829190612781565b9250505092915050565b60085481565b60008181548110610fa257600080fd5b906000526020600020016000915090505481565b600080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906128d5565b60405180910390fd5b61104d61168a565b506110578361124d565b9050826009600082825461106b91906126fc565b9250508190555061107c8482611dec565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516110da9190612446565b60405180910390a36110ea611eb1565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f00000000000000000000000000000000000000000000000000000000000000008261116d91906127b2565b7f000000000000000000000000000000000000000000000000000000000000000061119891906126fc565b9050919050565b6000603c82426111af919061280c565b6111b99190612781565b9050919050565b600a5481565b60035481565b6000806402540be400836111e091906127b2565b7f000000000000000000000000000000000000000000000000000000000000000061120b919061280c565b8461121691906127b2565b90507f0000000000000000000000000000000000000000000000000000000000000000816112449190612781565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff1661127e91906128f5565b6fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000836112bc91906127b2565b6112c69190612781565b9050919050565b6000603c82426112dd919061280c565b6112e79190612781565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600080611337856110f6565b925061134460035461119f565b90506113906402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff1661137891906128f5565b6fffffffffffffffffffffffffffffffff1682610ed8565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e40000006113c091906127b2565b82846113cc91906127b2565b6113d69190612781565b9350505050919050565b60006113ec6000611a29565b905090565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144e57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b60008060006115a68461191f565b91506115b1846112ee565b90506115bd82826111cc565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461164657600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006116a06113e0565b506116a9611f53565b975060006001028814156116c8576000985050505050505050506117d1565b6116d188611b62565b95506001866116e091906126fc565b90506116eb8661113f565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611729826112cd565b925060008311156117455761173e8584611b76565b9350611749565b8493505b61175860008560095484611d5a565b9650600087908060018154018082558091505060019003906000526020600020016000909190919091505561178c8761204e565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516117bc9190612446565b60405180910390a16001985050505050505050505b90565b600780546117e19061269b565b80601f016020809104026020016040519081016040528092919081815260200182805461180d9061269b565b801561185a5780601f1061182f5761010080835404028352916020019161185a565b820191906000526020600020905b81548152906001019060200180831161183d57829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118be57600080fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b600080600061195861168a565b506119628461124d565b915061196f338684611dc7565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516119ce9190612446565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000611a3960035461119f565b91506000821415611a4f57600092505050611b5d565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050600084118015611a9157508184105b15611a9a578391505b611aa48183610ed8565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c82611ae991906127b2565b600354611af691906126fc565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff16604051611b4e919061297a565b60405180910390a46001925050505b919050565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611bba9190612781565b905060005b84811015611c035764e8d4a510008284611bd991906127b2565b611be39190612781565b83611bee91906126fc565b92508080611bfb90612840565b915050611bbf565b5064e8d4a510008583611c1691906127b2565b611c209190612781565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611c7b919061280c565b611c859190612781565b611c8f91906126fc565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1457600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611dd4858461209a565b50611ddf8484611dec565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000851415611e495760009350505050611eab565b611e52866110f6565b92508483611e6091906126fc565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000600954905060006001600080549050611ecf919061280c565b81548110611ee057611edf612995565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a02821791508160010260006001600080549050611f2b919061280c565b81548110611f3c57611f3b612995565b5b906000526020600020018190555060019250505090565b6000806000806001600080549050611f6b919061280c565b81548110611f7c57611f7b612995565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201491906129f0565b6fffffffffffffffffffffffffffffffff16905061203182611b62565b81116120455760006001029250505061204b565b81925050505b90565b60008061205a83611598565b9050612090600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661208b8361124d565b611dec565b5080915050919050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008514156120f7576000935050505061219c565b612100866110f6565b925084831015612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c90612a69565b60405180910390fd5b8483612151919061280c565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6121dc816121a7565b81146121e757600080fd5b50565b6000813590506121f9816121d3565b92915050565b600060208284031215612215576122146121a2565b5b6000612223848285016121ea565b91505092915050565b60008115159050919050565b6122418161222c565b82525050565b600060208201905061225c6000830184612238565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561229c578082015181840152602081019050612281565b838111156122ab576000848401525b50505050565b6000601f19601f8301169050919050565b60006122cd82612262565b6122d7818561226d565b93506122e781856020860161227e565b6122f0816122b1565b840191505092915050565b6000602082019050818103600083015261231581846122c2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123488261231d565b9050919050565b6123588161233d565b811461236357600080fd5b50565b6000813590506123758161234f565b92915050565b6000819050919050565b61238e8161237b565b811461239957600080fd5b50565b6000813590506123ab81612385565b92915050565b600080604083850312156123c8576123c76121a2565b5b60006123d685828601612366565b92505060206123e78582860161239c565b9150509250929050565b60006fffffffffffffffffffffffffffffffff82169050919050565b612416816123f1565b82525050565b6000602082019050612431600083018461240d565b92915050565b6124408161237b565b82525050565b600060208201905061245b6000830184612437565b92915050565b60008060006060848603121561247a576124796121a2565b5b600061248886828701612366565b935050602061249986828701612366565b92505060406124aa8682870161239c565b9150509250925092565b6000602082840312156124ca576124c96121a2565b5b60006124d884828501612366565b91505092915050565b600080604083850312156124f8576124f76121a2565b5b60006125068582860161239c565b92505060206125178582860161239c565b9150509250929050565b600060208284031215612537576125366121a2565b5b60006125458482850161239c565b91505092915050565b6000819050919050565b6125618161254e565b82525050565b600060208201905061257c6000830184612558565b92915050565b61258b8161254e565b811461259657600080fd5b50565b6000813590506125a881612582565b92915050565b6000602082840312156125c4576125c36121a2565b5b60006125d284828501612599565b91505092915050565b6125e48161233d565b82525050565b60006020820190506125ff60008301846125db565b92915050565b6000806000806080858703121561261f5761261e6121a2565b5b600061262d8782880161239c565b945050602061263e8782880161239c565b935050604061264f8782880161239c565b92505060606126608782880161239c565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126b357607f821691505b602082108114156126c7576126c661266c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127078261237b565b91506127128361237b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612747576127466126cd565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061278c8261237b565b91506127978361237b565b9250826127a7576127a6612752565b5b828204905092915050565b60006127bd8261237b565b91506127c88361237b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612801576128006126cd565b5b828202905092915050565b60006128178261237b565b91506128228361237b565b925082821015612835576128346126cd565b5b828203905092915050565b600061284b8261237b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561287e5761287d6126cd565b5b600182019050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006128bf600a8361226d565b91506128ca82612889565b602082019050919050565b600060208201905081810360008301526128ee816128b2565b9050919050565b6000612900826123f1565b915061290b836123f1565b9250816fffffffffffffffffffffffffffffffff0483118215151615612934576129336126cd565b5b828202905092915050565b6000819050919050565b600061296461295f61295a846123f1565b61293f565b61237b565b9050919050565b61297481612949565b82525050565b600060208201905061298f600083018461296b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6129cd816123f1565b81146129d857600080fd5b50565b6000815190506129ea816129c4565b92915050565b600060208284031215612a0657612a056121a2565b5b6000612a14848285016129db565b91505092915050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000612a53600d8361226d565b9150612a5e82612a1d565b602082019050919050565b60006020820190508181036000830152612a8281612a46565b905091905056fea264697066735822122040c7b82458bb5e6e45df5d826444d591ea75814bd7cd674b11c9026417e4d59064736f6c634300080b0033 \ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json index 89ca87f..558cd99 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumParticipantSpend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/setup.cfg b/python/setup.cfg index 0fde2f5..d5e91c7 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = erc20-demurrage-token -version = 0.0.9 +version = 0.0.10 description = ERC20 token with redistributed continual demurrage author = Louis Holbrook author_email = dev@holbrook.no diff --git a/python/tests/test_basic.py b/python/tests/test_basic.py index 7e8811b..44fc556 100644 --- a/python/tests/test_basic.py +++ b/python/tests/test_basic.py @@ -80,7 +80,6 @@ class TestBasic(TestDemurrageDefault): self.assertEqual(modifier, demurrage_amount) - def test_apply_demurrage(self): modifier = (10 ** 28) diff --git a/python/tests/test_period.py b/python/tests/test_period.py index 7fb3898..aa72da9 100644 --- a/python/tests/test_period.py +++ b/python/tests/test_period.py @@ -7,7 +7,15 @@ import logging # external imports from chainlib.eth.constant import ZERO_ADDRESS from chainlib.eth.nonce import RPCNonceOracle -from chainlib.eth.tx import receipt +from chainlib.eth.tx import ( + receipt, + TxFactory, + TxFormat, + ) +from chainlib.eth.contract import ( + ABIContractEncoder, + ABIContractType, + ) # local imports from erc20_demurrage_token import DemurrageToken @@ -103,5 +111,76 @@ class TestPeriod(TestDemurrageDefault): self.assertEqual(modifier, period) + def test_change_sink(self): + nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) + c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + + o = c.balance_of(self.address, ZERO_ADDRESS, sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + self.assertEqual(balance, 0) + + (tx_hash, o) = c.mint_to(self.address, self.accounts[0], self.accounts[1], 102400000000) + r = self.rpc.do(o) + o = receipt(tx_hash) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + self.backend.time_travel(self.start_time + self.period_seconds + 1) + + c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash, o) = c.change_period(self.address, self.accounts[0]) + r = self.rpc.do(o) + o = receipt(tx_hash) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + o = c.balance_of(self.address, ZERO_ADDRESS, sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + self.assertGreater(balance, 0) + old_sink_balance = balance + + o = c.balance_of(self.address, self.accounts[3], sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + self.assertEqual(balance, 0) + + nonce_oracle = RPCNonceOracle(self.accounts[0], self.rpc) + c = TxFactory(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + enc = ABIContractEncoder() + enc.method('setSinkAddress') + enc.typ(ABIContractType.ADDRESS) + enc.address(self.accounts[3]) + data = enc.get() + o = c.template(self.accounts[0], self.address, use_nonce=True) + o = c.set_code(o, data) + (tx_hash, o) = c.finalize(o, TxFormat.JSONRPC) + r = self.rpc.do(o) + + o = receipt(tx_hash) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + self.backend.time_travel(self.start_time + (self.period_seconds * 2) + 1) + + c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) + (tx_hash, o) = c.change_period(self.address, self.accounts[0]) + r = self.rpc.do(o) + o = receipt(tx_hash) + r = self.rpc.do(o) + self.assertEqual(r['status'], 1) + + o = c.balance_of(self.address, ZERO_ADDRESS, sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + self.assertLess(balance, old_sink_balance) + + o = c.balance_of(self.address, self.accounts[3], sender_address=self.accounts[0]) + r = self.rpc.do(o) + balance = c.parse_balance_of(r) + self.assertGreater(balance, 0) + + if __name__ == '__main__': unittest.main() diff --git a/solidity/DemurrageTokenSingleCap.sol b/solidity/DemurrageTokenSingleCap.sol index 40c1101..f33fc35 100644 --- a/solidity/DemurrageTokenSingleCap.sol +++ b/solidity/DemurrageTokenSingleCap.sol @@ -128,6 +128,12 @@ contract DemurrageTokenSingleCap { minimumParticipantSpend = 10 ** uint256(_decimals); } + // Change sink address for redistribution + function setSinkAddress(address _sinkAddress) public { + require(msg.sender == owner); + sinkAddress = _sinkAddress; + } + // Given address will be allowed to call the mintTo() function function addMinter(address _minter) public returns (bool) { require(msg.sender == owner); diff --git a/solidity/DemurrageTokenSingleNocap.sol b/solidity/DemurrageTokenSingleNocap.sol index 9b3b746..2eea9f0 100644 --- a/solidity/DemurrageTokenSingleNocap.sol +++ b/solidity/DemurrageTokenSingleNocap.sol @@ -124,6 +124,13 @@ contract DemurrageTokenSingleCap { minimumParticipantSpend = 10 ** uint256(_decimals); } + + // Change sink address for redistribution + function setSinkAddress(address _sinkAddress) public { + require(msg.sender == owner); + sinkAddress = _sinkAddress; + } + // Given address will be allowed to call the mintTo() function function addMinter(address _minter) public returns (bool) { require(msg.sender == owner);