diff --git a/chain/channel-eth-go/balancelimit/balancelimit.go b/chain/channel-eth-go/balancelimit/balancelimit.go index 8a71e42..e469b73 100644 --- a/chain/channel-eth-go/balancelimit/balancelimit.go +++ b/chain/channel-eth-go/balancelimit/balancelimit.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // LedgerBalanceLimitMetaData contains all meta data concerning the LedgerBalanceLimit contract. var LedgerBalanceLimitMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x610381610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c80635930e0e1146100645780636ad1dc2d1461008d5780636ae97472146100b7578063bdca79a7146100e4578063c88c62651461011e575b5f5ffd5b81801561006f575f5ffd5b5061008b61007e3660046101fa565b600501805460ff19169055565b005b818015610098575f5ffd5b5061008b6100a73660046101fa565b600501805460ff19166001179055565b6100cf6100c53660046101fa565b6005015460ff1690565b60405190151581526020015b60405180910390f35b6101106100f236600461022c565b6001600160a01b03165f908152600491909101602052604090205490565b6040519081526020016100db565b818015610129575f5ffd5b5061008b61013836600461029e565b8281146101825760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640160405180910390fd5b5f5b838110156101f25782828281811061019e5761019e610317565b90506020020135866004015f8787858181106101bc576101bc610317565b90506020020160208101906101d1919061032b565b6001600160a01b0316815260208101919091526040015f2055600101610184565b505050505050565b5f6020828403121561020a575f5ffd5b5035919050565b80356001600160a01b0381168114610227575f5ffd5b919050565b5f5f6040838503121561023d575f5ffd5b8235915061024d60208401610211565b90509250929050565b5f5f83601f840112610266575f5ffd5b50813567ffffffffffffffff81111561027d575f5ffd5b6020830191508360208260051b8501011115610297575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b2575f5ffd5b85359450602086013567ffffffffffffffff8111156102cf575f5ffd5b6102db88828901610256565b909550935050604086013567ffffffffffffffff8111156102fa575f5ffd5b61030688828901610256565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561033b575f5ffd5b61034482610211565b939250505056fea26469706673582212200a2f75d9c1fdc82c6c73ad9859c159a691858fd85e661d5ba5d08f6134e037a164736f6c634300081e0033", + Bin: "0x610381610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610060575f3560e01c80635930e0e1146100645780636ad1dc2d1461008d5780636ae97472146100b7578063bdca79a7146100e4578063c88c62651461011e575b5f5ffd5b81801561006f575f5ffd5b5061008b61007e3660046101fa565b600501805460ff19169055565b005b818015610098575f5ffd5b5061008b6100a73660046101fa565b600501805460ff19166001179055565b6100cf6100c53660046101fa565b6005015460ff1690565b60405190151581526020015b60405180910390f35b6101106100f236600461022c565b6001600160a01b03165f908152600491909101602052604090205490565b6040519081526020016100db565b818015610129575f5ffd5b5061008b61013836600461029e565b8281146101825760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604482015260640160405180910390fd5b5f5b838110156101f25782828281811061019e5761019e610317565b90506020020135866004015f8787858181106101bc576101bc610317565b90506020020160208101906101d1919061032b565b6001600160a01b0316815260208101919091526040015f2055600101610184565b505050505050565b5f6020828403121561020a575f5ffd5b5035919050565b80356001600160a01b0381168114610227575f5ffd5b919050565b5f5f6040838503121561023d575f5ffd5b8235915061024d60208401610211565b90509250929050565b5f5f83601f840112610266575f5ffd5b50813567ffffffffffffffff81111561027d575f5ffd5b6020830191508360208260051b8501011115610297575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b2575f5ffd5b85359450602086013567ffffffffffffffff8111156102cf575f5ffd5b6102db88828901610256565b909550935050604086013567ffffffffffffffff8111156102fa575f5ffd5b61030688828901610256565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561033b575f5ffd5b61034482610211565b939250505056fea264697066735822122081e48be83fc6c27bd7c1db0438e62a7bfdd0d0ef783d03a0a4c823644d58accc64736f6c634300081e0033", } // LedgerBalanceLimitABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/channel/channel.go b/chain/channel-eth-go/channel/channel.go index aa22dac..503d375 100644 --- a/chain/channel-eth-go/channel/channel.go +++ b/chain/channel-eth-go/channel/channel.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // LedgerChannelMetaData contains all meta data concerning the LedgerChannel contract. var LedgerChannelMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x610eaa610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610111575f3560e01c8063b80ddf7e116100a9578063c46dd9dd11610079578063c46dd9dd146102be578063c814d28e14610339578063c8ed149e1461034c578063d6b89e3a1461036e578063d7db65ce14610381575f5ffd5b8063b80ddf7e14610241578063bcdf4ebb14610256578063c2c3f21f14610269578063c2f8816b1461027c575f5ffd5b806377ffc623116100e457806377ffc623146101c35780638970f8a5146101d857806396a3c57f146101fb578063b32531271461021c575f5ffd5b806312bb8c81146101155780631fd4a9c214610143578063418ec1011461017e578063565aebdb1461019e575b5f5ffd5b61012d610123366004610c8e565b6002015460ff1690565b60405161013a9190610cb9565b60405180910390f35b610166610151366004610c8e565b6002015461010090046001600160a01b031690565b6040516001600160a01b03909116815260200161013a565b61019061018c366004610c8e565b5490565b60405190815260200161013a565b6101b66101ac366004610c8e565b6003015460ff1690565b60405161013a9190610cd3565b6101906101d1366004610c8e565b6014015490565b6101666101e6366004610c8e565b6003015461010090046001600160a01b031690565b61020e610209366004610c8e565b6103a2565b60405161013a929190610d3a565b61022f61022a366004610c8e565b6104cf565b60405161013a96959493929190610d55565b61019061024f366004610c8e565b6001015490565b61020e610264366004610c8e565b610692565b61020e610277366004610c8e565b6107c5565b61028f61028a366004610c8e565b6108f2565b60405161013a949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61030f6102cc366004610c8e565b6040805160808101825260158301546001600160a01b03168082526016840154602083018190526017850154938301849052601890940154606090920182905293565b604080516001600160a01b039095168552602085019390935291830152606082015260800161013a565b61020e610347366004610c8e565b610942565b61035f61035a366004610c8e565b610a6b565b60405161013a93929190610db2565b61019061037c366004610c8e565b610b02565b61039461038f366004610c8e565b610b43565b60405161013a929190610de2565b6103aa610c70565b6103b2610c70565b604080518082019091525f9060048501600283835b8282101561045757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016103c7565b5050505090506040518060400160405280825f6002811061047a5761047a610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015181015185529151820151909101519083015294909350915050565b6104d7610c70565b6104df610c70565b6104e7610c70565b6104ef610c70565b6104f7610c70565b6104ff610c70565b604080518082019091525f9060048901600283835b828210156105a457604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610514565b5050505090506040518060400160405280825f600281106105c7576105c7610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082018252855183015181528351830151818401528151808301835286518301518152845183015181850152825180840184528751606090810151518252865181015151828701528451808601865289518201518701518152875182015187015181880152855180870190965298518101516080908101518652965101519095015193830193909352939c939b50909950909750919550909350915050565b61069a610c70565b6106a2610c70565b604080518082019091525f9060048501600283835b8282101561074757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016106b7565b5050505090506040518060400160405280825f6002811061076a5761076a610e20565b60209081029190910151516001600160a01b0390811683528482015151169181019190915260408051808201909152835160600151608001518152908101836001602002015160600151608001518152509250925050915091565b6107cd610c70565b6107d5610c70565b604080518082019091525f9060048501600283835b8282101561087a57604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016107ea565b5050505090506040518060400160405280825f6002811061089d5761089d610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015182015185529151909101518101519083015294909350915050565b60018101546002808301545f928392839283929160ff9091169081111561091b5761091b610ca5565b60028701546014909701549197909661010090046001600160a01b03169550909350915050565b61094a610c70565b610952610c70565b604080518082019091525f9060048501600283835b828210156109f757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610967565b5050505090506040518060400160405280825f60028110610a1a57610a1a610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082019091529351606090810151518552915190910151519083015294909350915050565b610a73610c70565b610a7b610c70565b610a83610c70565b5f6040518060400160405280866004015f60028110610aa457610aa4610e20565b60080201546001600160a01b039081168252600c8801541660209182015260408051808201825260058901548152600d89015481840152815180830190925260068901548252600e9098015491810191909152909690945092505050565b600e8101546006820154600d83015460058401545f93849390929091610b289190610e48565b610b329190610e61565b610b3c9190610e61565b9392505050565b610b4b610c70565b610b53610c70565b604080518082019091525f9060048501600283835b82821015610bf857604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610b68565b5050505090506040518060400160405280825f60028110610c1b57610c1b610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201825294516060908101518201518652925190920151909101519083015294909350915050565b60405180604001604052806002906020820280368337509192915050565b5f60208284031215610c9e575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310610ccd57610ccd610ca5565b91905290565b6020810160058310610ccd57610ccd610ca5565b805f5b6002811015610d125781516001600160a01b0316845260209384019390910190600101610cea565b50505050565b805f5b6002811015610d12578151845260209384019390910190600101610d1b565b60808101610d488285610ce7565b610b3c6040830184610d18565b6101808101610d648289610ce7565b610d716040830188610d18565b610d7e6080830187610d18565b610d8b60c0830186610d18565b610d99610100830185610d18565b610da7610140830184610d18565b979650505050505050565b60c08101610dc08286610ce7565b610dcd6040830185610d18565b610dda6080830184610d18565b949350505050565b60808101610df08285610ce7565b60408201835f5b6002811015610e16578151835260209283019290910190600101610df7565b5050509392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e5b57610e5b610e34565b92915050565b81810381811115610e5b57610e5b610e3456fea2646970667358221220d31c9164cf3596ae1e55858b4e833812c472525d7728d81d70b4261013dbf80e64736f6c634300081e0033", + Bin: "0x610eaa610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610111575f3560e01c8063b80ddf7e116100a9578063c46dd9dd11610079578063c46dd9dd146102be578063c814d28e14610339578063c8ed149e1461034c578063d6b89e3a1461036e578063d7db65ce14610381575f5ffd5b8063b80ddf7e14610241578063bcdf4ebb14610256578063c2c3f21f14610269578063c2f8816b1461027c575f5ffd5b806360f8e398116100e457806360f8e398146101c357806377ffc623146101e45780638970f8a5146101f9578063b32531271461021c575f5ffd5b806312bb8c81146101155780631fd4a9c214610143578063418ec1011461017e578063565aebdb1461019e575b5f5ffd5b61012d610123366004610c8e565b6002015460ff1690565b60405161013a9190610cb9565b60405180910390f35b610166610151366004610c8e565b6002015461010090046001600160a01b031690565b6040516001600160a01b03909116815260200161013a565b61019061018c366004610c8e565b5490565b60405190815260200161013a565b6101b66101ac366004610c8e565b6003015460ff1690565b60405161013a9190610cd3565b6101d66101d1366004610c8e565b6103a2565b60405161013a929190610d3a565b6101906101f2366004610c8e565b6014015490565b610166610207366004610c8e565b6003015461010090046001600160a01b031690565b61022f61022a366004610c8e565b6104cf565b60405161013a96959493929190610d55565b61019061024f366004610c8e565b6001015490565b6101d6610264366004610c8e565b610692565b6101d6610277366004610c8e565b6107c5565b61028f61028a366004610c8e565b6108f2565b60405161013a949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b61030f6102cc366004610c8e565b6040805160808101825260158301546001600160a01b03168082526016840154602083018190526017850154938301849052601890940154606090920182905293565b604080516001600160a01b039095168552602085019390935291830152606082015260800161013a565b6101d6610347366004610c8e565b610942565b61035f61035a366004610c8e565b610a6b565b60405161013a93929190610db2565b61019061037c366004610c8e565b610b02565b61039461038f366004610c8e565b610b43565b60405161013a929190610de2565b6103aa610c70565b6103b2610c70565b604080518082019091525f9060048501600283835b8282101561045757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016103c7565b5050505090506040518060400160405280825f6002811061047a5761047a610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015181015185529151820151909101519083015294909350915050565b6104d7610c70565b6104df610c70565b6104e7610c70565b6104ef610c70565b6104f7610c70565b6104ff610c70565b604080518082019091525f9060048901600283835b828210156105a457604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610514565b5050505090506040518060400160405280825f600281106105c7576105c7610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082018252855183015181528351830151818401528151808301835286518301518152845183015181850152825180840184528751606090810151518252865181015151828701528451808601865289518201518701518152875182015187015181880152855180870190965298518101516080908101518652965101519095015193830193909352939c939b50909950909750919550909350915050565b61069a610c70565b6106a2610c70565b604080518082019091525f9060048501600283835b8282101561074757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016106b7565b5050505090506040518060400160405280825f6002811061076a5761076a610e20565b60209081029190910151516001600160a01b0390811683528482015151169181019190915260408051808201909152835160600151608001518152908101836001602002015160600151608001518152509250925050915091565b6107cd610c70565b6107d5610c70565b604080518082019091525f9060048501600283835b8282101561087a57604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a0810187526003840154815260048401548183015260058401549681019690965260068301546060878101919091526007909301549386019390935290830193909352908352920191016107ea565b5050505090506040518060400160405280825f6002811061089d5761089d610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201909152935160609081015182015185529151909101518101519083015294909350915050565b60018101546002808301545f928392839283929160ff9091169081111561091b5761091b610ca5565b60028701546014909701549197909661010090046001600160a01b03169550909350915050565b61094a610c70565b610952610c70565b604080518082019091525f9060048501600283835b828210156109f757604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610967565b5050505090506040518060400160405280825f60028110610a1a57610a1a610e20565b60209081029190910151516001600160a01b03908116835284820180515190911692820192909252604080518082019091529351606090810151518552915190910151519083015294909350915050565b610a73610c70565b610a7b610c70565b610a83610c70565b5f6040518060400160405280866004015f60028110610aa457610aa4610e20565b60080201546001600160a01b039081168252600c8801541660209182015260408051808201825260058901548152600d89015481840152815180830190925260068901548252600e9098015491810191909152909690945092505050565b600e8101546006820154600d83015460058401545f93849390929091610b289190610e48565b610b329190610e61565b610b3c9190610e61565b9392505050565b610b4b610c70565b610b53610c70565b604080518082019091525f9060048501600283835b82821015610bf857604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101610b68565b5050505090506040518060400160405280825f60028110610c1b57610c1b610e20565b60209081029190910151516001600160a01b0390811683528482018051519091169282019290925260408051808201825294516060908101518201518652925190920151909101519083015294909350915050565b60405180604001604052806002906020820280368337509192915050565b5f60208284031215610c9e575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310610ccd57610ccd610ca5565b91905290565b6020810160058310610ccd57610ccd610ca5565b805f5b6002811015610d125781516001600160a01b0316845260209384019390910190600101610cea565b50505050565b805f5b6002811015610d12578151845260209384019390910190600101610d1b565b60808101610d488285610ce7565b610b3c6040830184610d18565b6101808101610d648289610ce7565b610d716040830188610d18565b610d7e6080830187610d18565b610d8b60c0830186610d18565b610d99610100830185610d18565b610da7610140830184610d18565b979650505050505050565b60c08101610dc08286610ce7565b610dcd6040830185610d18565b610dda6080830184610d18565b949350505050565b60808101610df08285610ce7565b60408201835f5b6002811015610e16578151835260209283019290910190600101610df7565b5050509392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e5b57610e5b610e34565b92915050565b81810381811115610e5b57610e5b610e3456fea264697066735822122021d98e7277808aaaf0b3c3b14d53d723eedd157f30e2b00d5f136a534acc716e64736f6c634300081e0033", } // LedgerChannelABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/ethpool/ethpool.go b/chain/channel-eth-go/ethpool/ethpool.go index 02a0e2d..0178e72 100644 --- a/chain/channel-eth-go/ethpool/ethpool.go +++ b/chain/channel-eth-go/ethpool/ethpool.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // EthPoolMetaData contains all meta data concerning the EthPool contract. var EthPoolMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"addresspayable\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferToCelerWallet\",\"inputs\":[{\"name\":\"_from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_walletAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b50610a418061001c5f395ff3fe6080604052600436106100a5575f3560e01c806370a082311161006257806370a08231146101a75780637e1cd431146101e957806395d89b4114610208578063a457c2d714610238578063dd62ed3e14610257578063f340fa011461029b575f5ffd5b806306fdde03146100a9578063095ea7b3146100f357806323b872dd146101225780632e1a7d4d14610141578063313ce567146101625780633950935114610188575b5f5ffd5b3480156100b4575f5ffd5b506100dd60405180604001604052806009815260200168115d1a125b941bdbdb60ba1b81525081565b6040516100ea919061081f565b60405180910390f35b3480156100fe575f5ffd5b5061011261010d366004610868565b6102ae565b60405190151581526020016100ea565b34801561012d575f5ffd5b5061011261013c366004610892565b610330565b34801561014c575f5ffd5b5061016061015b3660046108d0565b6103b9565b005b34801561016d575f5ffd5b50610176601281565b60405160ff90911681526020016100ea565b348015610193575f5ffd5b506101126101a2366004610868565b6103c7565b3480156101b2575f5ffd5b506101db6101c13660046108e7565b6001600160a01b03165f9081526020819052604090205490565b6040519081526020016100ea565b3480156101f4575f5ffd5b50610112610203366004610909565b61045f565b348015610213575f5ffd5b506100dd60405180604001604052806005815260200164045746849560dc1b81525081565b348015610243575f5ffd5b50610112610252366004610868565b6105af565b348015610262575f5ffd5b506101db61027136600461094c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101606102a93660046108e7565b610604565b5f6001600160a01b0383166102de5760405162461bcd60e51b81526004016102d590610983565b60405180910390fd5b335f8181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192915f5160206109ec5f395f51905f5291015b60405180910390a35060015b92915050565b6001600160a01b0383165f90815260016020908152604080832033845290915281205461035e9083906109c5565b6001600160a01b0385165f81815260016020908152604080832033808552908352928190208590555193845290925f5160206109ec5f395f51905f52910160405180910390a36103af8484846106c6565b5060019392505050565b6103c43333836106c6565b50565b5f6001600160a01b0383166103ee5760405162461bcd60e51b81526004016102d590610983565b335f9081526001602090815260408083206001600160a01b038716845290915290205461041c9083906109d8565b335f8181526001602090815260408083206001600160a01b038916808552908352928190208590555193845290925f5160206109ec5f395f51905f52910161031e565b6001600160a01b0384165f90815260016020908152604080832033845290915281205461048d9083906109c5565b6001600160a01b0386165f81815260016020908152604080832033808552908352928190208590555193845290925f5160206109ec5f395f51905f52910160405180910390a36001600160a01b0385165f908152602081905260409020546104f69083906109c5565b6001600160a01b038681165f818152602081815260409182902094909455518581529187169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3604051636b46cea760e11b81526004810184905284906001600160a01b0382169063d68d9d4e9085906024015f604051808303818588803b15801561058c575f5ffd5b505af115801561059e573d5f5f3e3d5ffd5b5060019a9950505050505050505050565b5f6001600160a01b0383166105d65760405162461bcd60e51b81526004016102d590610983565b335f9081526001602090815260408083206001600160a01b038716845290915290205461041c9083906109c5565b6001600160a01b0381166106525760405162461bcd60e51b8152602060048201526015602482015274052656365697665722061646472657373206973203605c1b60448201526064016102d5565b6001600160a01b0381165f908152602081905260409020546106759034906109d8565b6001600160a01b0382165f8181526020818152604091829020939093555134815290917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a250565b6001600160a01b03821661070e5760405162461bcd60e51b815260206004820152600f60248201526e0546f2061646472657373206973203608c1b60448201526064016102d5565b6001600160a01b0383165f908152602081905260409020546107319082906109c5565b6001600160a01b038481165f818152602081815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146107cd576040519150601f19603f3d011682016040523d82523d5f602084013e6107d2565b606091505b50509050806108195760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016102d5565b50505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103c4575f5ffd5b5f5f60408385031215610879575f5ffd5b823561088481610854565b946020939093013593505050565b5f5f5f606084860312156108a4575f5ffd5b83356108af81610854565b925060208401356108bf81610854565b929592945050506040919091013590565b5f602082840312156108e0575f5ffd5b5035919050565b5f602082840312156108f7575f5ffd5b813561090281610854565b9392505050565b5f5f5f5f6080858703121561091c575f5ffd5b843561092781610854565b9350602085013561093781610854565b93969395505050506040820135916060013590565b5f5f6040838503121561095d575f5ffd5b823561096881610854565b9150602083013561097881610854565b809150509250929050565b60208082526014908201527305370656e646572206164647265737320697320360641b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561032a5761032a6109b1565b8082018082111561032a5761032a6109b156fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212207fa6f109d1b62bcd3301aedc46cbb43299966b9cb156bfdfc3d2ce3b50e98b9e64736f6c634300081e0033", + Bin: "0x6080604052348015600e575f5ffd5b50610a418061001c5f395ff3fe6080604052600436106100a5575f3560e01c806370a082311161006257806370a08231146101a75780637e1cd431146101e957806395d89b4114610208578063a457c2d714610238578063dd62ed3e14610257578063f340fa011461029b575f5ffd5b806306fdde03146100a9578063095ea7b3146100f357806323b872dd146101225780632e1a7d4d14610141578063313ce567146101625780633950935114610188575b5f5ffd5b3480156100b4575f5ffd5b506100dd60405180604001604052806009815260200168115d1a125b941bdbdb60ba1b81525081565b6040516100ea919061081f565b60405180910390f35b3480156100fe575f5ffd5b5061011261010d366004610868565b6102ae565b60405190151581526020016100ea565b34801561012d575f5ffd5b5061011261013c366004610892565b610330565b34801561014c575f5ffd5b5061016061015b3660046108d0565b6103b9565b005b34801561016d575f5ffd5b50610176601281565b60405160ff90911681526020016100ea565b348015610193575f5ffd5b506101126101a2366004610868565b6103c7565b3480156101b2575f5ffd5b506101db6101c13660046108e7565b6001600160a01b03165f9081526020819052604090205490565b6040519081526020016100ea565b3480156101f4575f5ffd5b50610112610203366004610909565b61045f565b348015610213575f5ffd5b506100dd60405180604001604052806005815260200164045746849560dc1b81525081565b348015610243575f5ffd5b50610112610252366004610868565b6105af565b348015610262575f5ffd5b506101db61027136600461094c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6101606102a93660046108e7565b610604565b5f6001600160a01b0383166102de5760405162461bcd60e51b81526004016102d590610983565b60405180910390fd5b335f8181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192915f5160206109ec5f395f51905f5291015b60405180910390a35060015b92915050565b6001600160a01b0383165f90815260016020908152604080832033845290915281205461035e9083906109c5565b6001600160a01b0385165f81815260016020908152604080832033808552908352928190208590555193845290925f5160206109ec5f395f51905f52910160405180910390a36103af8484846106c6565b5060019392505050565b6103c43333836106c6565b50565b5f6001600160a01b0383166103ee5760405162461bcd60e51b81526004016102d590610983565b335f9081526001602090815260408083206001600160a01b038716845290915290205461041c9083906109d8565b335f8181526001602090815260408083206001600160a01b038916808552908352928190208590555193845290925f5160206109ec5f395f51905f52910161031e565b6001600160a01b0384165f90815260016020908152604080832033845290915281205461048d9083906109c5565b6001600160a01b0386165f81815260016020908152604080832033808552908352928190208590555193845290925f5160206109ec5f395f51905f52910160405180910390a36001600160a01b0385165f908152602081905260409020546104f69083906109c5565b6001600160a01b038681165f818152602081815260409182902094909455518581529187169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3604051636b46cea760e11b81526004810184905284906001600160a01b0382169063d68d9d4e9085906024015f604051808303818588803b15801561058c575f5ffd5b505af115801561059e573d5f5f3e3d5ffd5b5060019a9950505050505050505050565b5f6001600160a01b0383166105d65760405162461bcd60e51b81526004016102d590610983565b335f9081526001602090815260408083206001600160a01b038716845290915290205461041c9083906109c5565b6001600160a01b0381166106525760405162461bcd60e51b8152602060048201526015602482015274052656365697665722061646472657373206973203605c1b60448201526064016102d5565b6001600160a01b0381165f908152602081905260409020546106759034906109d8565b6001600160a01b0382165f8181526020818152604091829020939093555134815290917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a250565b6001600160a01b03821661070e5760405162461bcd60e51b815260206004820152600f60248201526e0546f2061646472657373206973203608c1b60448201526064016102d5565b6001600160a01b0383165f908152602081905260409020546107319082906109c5565b6001600160a01b038481165f818152602081815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146107cd576040519150601f19603f3d011682016040523d82523d5f602084013e6107d2565b606091505b50509050806108195760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016102d5565b50505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146103c4575f5ffd5b5f5f60408385031215610879575f5ffd5b823561088481610854565b946020939093013593505050565b5f5f5f606084860312156108a4575f5ffd5b83356108af81610854565b925060208401356108bf81610854565b929592945050506040919091013590565b5f602082840312156108e0575f5ffd5b5035919050565b5f602082840312156108f7575f5ffd5b813561090281610854565b9392505050565b5f5f5f5f6080858703121561091c575f5ffd5b843561092781610854565b9350602085013561093781610854565b93969395505050506040820135916060013590565b5f5f6040838503121561095d575f5ffd5b823561096881610854565b9150602083013561097881610854565b809150509250929050565b60208082526014908201527305370656e646572206164647265737320697320360641b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561032a5761032a6109b1565b8082018082111561032a5761032a6109b156fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220f21cf3ddecb7e622a635f5553a50413bc24fc02bb6c211cf6cec3f1c9a0e832a64736f6c634300081e0033", } // EthPoolABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/ledger/ledger.go b/chain/channel-eth-go/ledger/ledger.go index fab49e0..b6b693a 100644 --- a/chain/channel-eth-go/ledger/ledger.go +++ b/chain/channel-eth-go/ledger/ledger.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -31,8 +32,8 @@ var ( // CelerLedgerMetaData contains all meta data concerning the CelerLedger contract. var CelerLedgerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPool\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payRegistry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_celerWallet\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearPays\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_peerFrom\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payIdList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmSettle\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeSettle\",\"inputs\":[{\"name\":\"_settleRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeWithdraw\",\"inputs\":[{\"name\":\"_cooperativeWithdrawRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_transferFromAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositInBatch\",\"inputs\":[{\"name\":\"_channelIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_receivers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_transferFromAmounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBalanceLimit\",\"inputs\":[{\"name\":\"_tokenAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceLimitsEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCelerWallet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelMigrationArgs\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatus\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLedgerStruct.ChannelStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatusNum\",\"inputs\":[{\"name\":\"_channelStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCooperativeWithdrawSeqNum\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDisputeTimeout\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEthPool\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLastPayResolveDeadlineMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMigratedTo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNextPayIdListHashMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"bytes32[2]\",\"internalType\":\"bytes32[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPeersMigrationInfo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingPayOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSettleFinalizedTime\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateSeqNumMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenContract\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenType\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumPbEntity.TokenType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalBalance\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransferOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawIntent\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"intendSettle\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"intendWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_recipientChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelFrom\",\"inputs\":[{\"name\":\"_fromLedgerAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelTo\",\"inputs\":[{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"openChannel\",\"inputs\":[{\"name\":\"_openRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBalanceLimits\",\"inputs\":[{\"name\":\"_tokenAddrs\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_limits\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"snapshotStates\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"vetoWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f5ffd5b506040516123df3803806123df83398101604081905261002e91610116565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c816100ac565b50600280546001600160a01b039485166001600160a01b0319918216179091556003805493851693821693909317909255600480549190931691161790556006805460ff19166001179055610156565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610111575f5ffd5b919050565b5f5f5f60608486031215610128575f5ffd5b610131846100fb565b925061013f602085016100fb565b915061014d604085016100fb565b90509250925092565b61227c806101635f395ff3fe608060405260043610610254575f3560e01c806393b7b3ce1161013f578063d75f960e116100b3578063e5780db211610078578063e5780db21461075c578063e6322df71461077b578063ec7c637d1461079a578063f0c73d70146107b9578063f2fde38b146107d8578063fd0a1a61146107f7575f5ffd5b8063d75f960e146106e3578063d927bfc4146106f7578063d954863c14610716578063e063913c14610729578063e0a515b71461073d575f5ffd5b8063bd480cb711610104578063bd480cb7146105ff578063c38a325d1461062d578063c7ff86251461064c578063cc0b94b71461066b578063cd3a1be614610697578063d757abd2146106c4575f5ffd5b806393b7b3ce1461056e578063979a9b5e146105815780639f1fad83146105ad578063a099a39f146105cc578063a8580cab146105e0575f5ffd5b8063312ea2c6116101d657806376bff1171161019b57806376bff117146104865780637e9a7a3e146104cf57806383c8f8b8146104ee57806388f41465146105025780638942ecb2146105335780638da5cb5b14610552575f5ffd5b8063312ea2c6146104015780634102b9a814610415578063666a6d651461043457806369d5dd6714610453578063715018a614610472575f5ffd5b80632b559ecc1161021c5780632b559ecc1461031a5780632e2a5a021461033e5780632e3c517a146103755780632f0ac30414610394578063307d6f96146103e2575f5ffd5b80630165cef81461025857806309683c031461028e57806309b65d86146102af578063130d33fe146102dc578063255aab59146102fb575b5f5ffd5b348015610263575f5ffd5b5061027761027236600461193f565b610816565b6040516102859291906119a3565b60405180910390f35b348015610299575f5ffd5b506102ad6102a8366004611a03565b6108b1565b005b3480156102ba575f5ffd5b506102ce6102c936600461193f565b61091d565b604051908152602001610285565b3480156102e7575f5ffd5b506102ad6102f6366004611a03565b6109a4565b348015610306575f5ffd5b506102ad61031536600461193f565b6109e0565b348015610325575f5ffd5b5061032e610a4a565b6040519015158152602001610285565b348015610349575f5ffd5b5061035d61035836600461193f565b610ac3565b6040516001600160a01b039091168152602001610285565b348015610380575f5ffd5b506102ad61038f366004611a56565b610b43565b34801561039f575f5ffd5b506103b36103ae36600461193f565b610bb2565b604051610285949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b3480156103ed575f5ffd5b506102ce6103fc36600461193f565b610c48565b34801561040c575f5ffd5b5061035d610cca565b348015610420575f5ffd5b506102ad61042f366004611a03565b610d3f565b34801561043f575f5ffd5b5061027761044e36600461193f565b610d7b565b34801561045e575f5ffd5b506102ce61046d36600461193f565b610dd1565b34801561047d575f5ffd5b506102ad610e16565b348015610491575f5ffd5b506104a56104a036600461193f565b610e29565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610285565b3480156104da575f5ffd5b506102ad6104e936600461193f565b610eaf565b3480156104f9575f5ffd5b506102ad610eee565b34801561050d575f5ffd5b5061052161051c36600461193f565b610f58565b60405161028596959493929190611aa7565b34801561053e575f5ffd5b506102ad61054d366004611b04565b61101e565b34801561055d575f5ffd5b505f546001600160a01b031661035d565b6102ad61057c366004611a03565b61106b565b34801561058c575f5ffd5b506105a061059b36600461193f565b6110a7565b6040516102859190611b41565b3480156105b8575f5ffd5b506102776105c736600461193f565b611126565b3480156105d7575f5ffd5b5061035d61117c565b3480156105eb575f5ffd5b506102ad6105fa366004611b9c565b6111b6565b34801561060a575f5ffd5b5061061e61061936600461193f565b611230565b60405161028593929190611c08565b348015610638575f5ffd5b5061035d61064736600461193f565b6112d6565b348015610657575f5ffd5b506102ad61066636600461193f565b61131b565b348015610676575f5ffd5b5061068a61068536600461193f565b61135a565b6040516102859190611c38565b3480156106a2575f5ffd5b506106b66106b136600461193f565b6113d9565b604051610285929190611c4c565b3480156106cf575f5ffd5b506102ad6106de366004611a03565b611469565b3480156106ee575f5ffd5b5061035d6114a5565b348015610702575f5ffd5b5061027761071136600461193f565b6114df565b6102ad610724366004611c8a565b611535565b348015610734575f5ffd5b506102ad61158a565b348015610748575f5ffd5b506102ce610757366004611a03565b6115ca565b348015610767575f5ffd5b506102ad610776366004611cbf565b611608565b348015610786575f5ffd5b506102ce61079536600461193f565b611753565b3480156107a5575f5ffd5b506102ce6107b4366004611d5e565b611798565b3480156107c4575f5ffd5b506102ce6107d336600461193f565b6117e1565b3480156107e3575f5ffd5b506102ad6107f2366004611d5e565b611826565b348015610802575f5ffd5b506102ad610811366004611d79565b611863565b61081e611921565b610826611921565b5f8381526007602052604090819020905163bcdf4ebb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063bcdf4ebb906024015b608060405180830381865af4158015610883573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a79190611e9e565b9250925050915091565b6040516379e9008760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__906379e90087906108ed9060019086908690600401611ef9565b5f6040518083038186803b158015610903575f5ffd5b505af4158015610915573d5f5f3e3d5ffd5b505050505050565b5f81815260076020526040808220905163418ec10160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063418ec101906024015b602060405180830381865af4158015610979573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190611f1b565b9392505050565b604051630bdc541160e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__90630bdc5411906108ed9060019086908690600401611ef9565b60405163eb4de33760e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063eb4de337906044015b5f6040518083038186803b158015610a31575f5ffd5b505af4158015610a43573d5f5f3e3d5ffd5b5050505050565b604051633574ba3960e11b8152600160048201525f9073__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90636ae9747290602401602060405180830381865af4158015610a9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abe9190611f32565b905090565b5f818152600760205260408082209051630fea54e160e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90631fd4a9c2906024015b602060405180830381865af4158015610b1f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190611f51565b60405163415a19c560e11b815273__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__906382b4338a90610b8190600190879087908790600401611f6c565b5f6040518083038186803b158015610b97575f5ffd5b505af4158015610ba9573d5f5f3e3d5ffd5b50505050505050565b5f81815260076020526040808220905163c2f8816b60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2f8816b90602401608060405180830381865af4158015610c14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c389190611fa0565b9450945094509450509193509193565b6040516360297df360e01b815260016004820152602481018290525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906360297df3906044015b602060405180830381865af4158015610ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190611f1b565b92915050565b6040516344e58d5160e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906344e58d51906024015b602060405180830381865af4158015610d1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abe9190611f51565b6040516372cf9b4360e11b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063e59f3686906108ed9060019086908690600401611ef9565b610d83611921565b610d8b611921565b5f8381526007602052604090819020905163640a694760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c814d28e90602401610868565b5f818152600760205260408082209051636b5c4f1d60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a9060240161095e565b610e1e6118a6565b610e275f6118d2565b565b5f81815260076020526040808220905163c46dd9dd60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c46dd9dd90602401608060405180830381865af4158015610e8b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c389190611fdd565b6040516383e0fef560e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__906383e0fef590604401610a1b565b610ef66118a6565b604051636ad1dc2d60e01b81526001600482015273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90636ad1dc2d906024015b5f6040518083038186803b158015610f40575f5ffd5b505af4158015610f52573d5f5f3e3d5ffd5b50505050565b610f60611921565b610f68611921565b610f70611921565b610f78611921565b610f80611921565b610f88611921565b5f8781526007602052604090819020905163b325312760e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b32531279060240161018060405180830381865af4158015610fe5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110099190612019565b949d939c50919a509850965090945092505050565b604051637a2654ed60e01b81526001600482015260248101849052604481018390526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__90637a2654ed90608401610b81565b60405163594db6e360e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063594db6e3906108ed9060019086908690600401611ef9565b5f8181526007602052604080822090516312bb8c8160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906312bb8c8190602401602060405180830381865af4158015611102573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190612092565b61112e611921565b611136611921565b5f838152600760205260409081902090516396a3c57f60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906396a3c57f90602401610868565b60405163bd199ca560e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd199ca590602401610d00565b6111be6118a6565b60405163c88c626560e01b815273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__9063c88c6265906111fe9060019088908890889088906004016120b0565b5f6040518083038186803b158015611214575f5ffd5b505af4158015611226573d5f5f3e3d5ffd5b5050505050505050565b611238611921565b611240611921565b611248611921565b5f848152600760205260409081902090516364768a4f60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af41580156112a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c89190612134565b935093509350509193909250565b5f818152600760205260408082209051638970f8a560e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90638970f8a590602401610b04565b60405163bb3d0f2b60e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bb3d0f2b90604401610a1b565b5f81815260076020526040808220905163565aebdb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063565aebdb90602401602060405180830381865af41580156113b5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190612177565b6113e1611921565b6113e9611921565b5f83815260076020526040908190209051636bedb2e760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d7db65ce90602401608060405180830381865af4158015611445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a79190612195565b60405163742fb50760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063742fb507906108ed9060019086908690600401611ef9565b60405163c98c925160e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__9063c98c925190602401610d00565b6114e7611921565b6114ef611921565b5f8381526007602052604090819020905163c2c3f21f60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2c3f21f90602401610868565b60405163bd9d315760e01b815260016004820152602481018490526001600160a01b03831660448201526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd9d315790608401610b81565b6115926118a6565b604051635930e0e160e01b81526001600482015273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90635930e0e190602401610f2a565b604051631e28763960e11b81525f9073__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__90633c50ec729061095e9060019087908790600401611ef9565b848314801561161657508281145b61165e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064015b60405180910390fd5b5f5b85811015610ba95773__$c617d6f30a3108b63ce4034547dfec5d71$__63bd9d3157600189898581811061169657611696612205565b905060200201358888868181106116af576116af612205565b90506020020160208101906116c49190611d5e565b8787878181106116d6576116d6612205565b905060200201356040518563ffffffff1660e01b815260040161171b949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b5f6040518083038186803b158015611731575f5ffd5b505af4158015611743573d5f5f3e3d5ffd5b5050600190920191506116609050565b5f818152600760205260408082209051635c06efbf60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b80ddf7e9060240161095e565b60405163bdca79a760e01b8152600160048201526001600160a01b03821660248201525f9073__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__9063bdca79a790604401610c85565b5f8181526007602052604080822090516377ffc62360e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906377ffc6239060240161095e565b61182e6118a6565b6001600160a01b03811661185757604051631e4fbdf760e01b81525f6004820152602401611655565b611860816118d2565b50565b604051600162804bef60e01b0319815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063ff7fb411906111fe906001908890889088908890600401612219565b5f546001600160a01b03163314610e275760405163118cdaa760e01b8152336004820152602401611655565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405180604001604052806002906020820280368337509192915050565b5f6020828403121561194f575f5ffd5b5035919050565b805f5b6002811015610f525781516001600160a01b0316845260209384019390910190600101611959565b805f5b6002811015610f52578151845260209384019390910190600101611984565b608081016119b18285611956565b61099d6040830184611981565b5f5f83601f8401126119ce575f5ffd5b50813567ffffffffffffffff8111156119e5575f5ffd5b6020830191508360208285010111156119fc575f5ffd5b9250929050565b5f5f60208385031215611a14575f5ffd5b823567ffffffffffffffff811115611a2a575f5ffd5b611a36858286016119be565b90969095509350505050565b6001600160a01b0381168114611860575f5ffd5b5f5f5f60408486031215611a68575f5ffd5b8335611a7381611a42565b9250602084013567ffffffffffffffff811115611a8e575f5ffd5b611a9a868287016119be565b9497909650939450505050565b6101808101611ab68289611956565b611ac36040830188611981565b611ad06080830187611981565b611add60c0830186611981565b611aeb610100830185611981565b611af9610140830184611981565b979650505050505050565b5f5f5f60608486031215611b16575f5ffd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310611b5557611b55611b2d565b91905290565b5f5f83601f840112611b6b575f5ffd5b50813567ffffffffffffffff811115611b82575f5ffd5b6020830191508360208260051b85010111156119fc575f5ffd5b5f5f5f5f60408587031215611baf575f5ffd5b843567ffffffffffffffff811115611bc5575f5ffd5b611bd187828801611b5b565b909550935050602085013567ffffffffffffffff811115611bf0575f5ffd5b611bfc87828801611b5b565b95989497509550505050565b60c08101611c168286611956565b611c236040830185611981565b611c306080830184611981565b949350505050565b6020810160058310611b5557611b55611b2d565b60808101611c5a8285611956565b60408201835f5b6002811015611c80578151835260209283019290910190600101611c61565b5050509392505050565b5f5f5f60608486031215611c9c575f5ffd5b833592506020840135611cae81611a42565b929592945050506040919091013590565b5f5f5f5f5f5f60608789031215611cd4575f5ffd5b863567ffffffffffffffff811115611cea575f5ffd5b611cf689828a01611b5b565b909750955050602087013567ffffffffffffffff811115611d15575f5ffd5b611d2189828a01611b5b565b909550935050604087013567ffffffffffffffff811115611d40575f5ffd5b611d4c89828a01611b5b565b979a9699509497509295939492505050565b5f60208284031215611d6e575f5ffd5b813561099d81611a42565b5f5f5f5f60608587031215611d8c575f5ffd5b843593506020850135611d9e81611a42565b9250604085013567ffffffffffffffff811115611db9575f5ffd5b611bfc878288016119be565b604051601f8201601f1916810167ffffffffffffffff81118282101715611dfa57634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f830112611e11575f5ffd5b611e1b6040611dc5565b806040840185811115611e2c575f5ffd5b845b81811015611e4f578051611e4181611a42565b845260209384019301611e2e565b509095945050505050565b5f82601f830112611e69575f5ffd5b611e736040611dc5565b806040840185811115611e84575f5ffd5b845b81811015611e4f578051845260209384019301611e86565b5f5f60808385031215611eaf575f5ffd5b611eb98484611e02565b9150611ec88460408501611e5a565b90509250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f611f12604083018486611ed1565b95945050505050565b5f60208284031215611f2b575f5ffd5b5051919050565b5f60208284031215611f42575f5ffd5b8151801515811461099d575f5ffd5b5f60208284031215611f61575f5ffd5b815161099d81611a42565b8481526001600160a01b03841660208201526060604082018190525f90611f969083018486611ed1565b9695505050505050565b5f5f5f5f60808587031215611fb3575f5ffd5b8451602086015160408701519195509350611fcd81611a42565b6060959095015193969295505050565b5f5f5f5f60808587031215611ff0575f5ffd5b8451611ffb81611a42565b60208601516040870151606090970151919890975090945092505050565b5f5f5f5f5f5f610180878903121561202f575f5ffd5b6120398888611e02565b95506120488860408901611e5a565b94506120578860808901611e5a565b93506120668860c08901611e5a565b9250612076886101008901611e5a565b9150612086886101408901611e5a565b90509295509295509295565b5f602082840312156120a2575f5ffd5b81516003811061099d575f5ffd5b85815260606020820181905281018490525f8560808301825b878110156120f95782356120dc81611a42565b6001600160a01b03168252602092830192909101906001016120c9565b5083810360408501528481526001600160fb1b03851115612118575f5ffd5b8460051b91508186602083013701602001979650505050505050565b5f5f5f60c08486031215612146575f5ffd5b6121508585611e02565b925061215f8560408601611e5a565b915061216e8560808601611e5a565b90509250925092565b5f60208284031215612187575f5ffd5b81516005811061099d575f5ffd5b5f5f608083850312156121a6575f5ffd5b6121b08484611e02565b915083605f8401126121c0575f5ffd5b6121ca6040611dc5565b8060808501868111156121db575f5ffd5b604086015b818110156121f85780518452602093840193016121e0565b5093969095509350505050565b634e487b7160e01b5f52603260045260245ffd5b85815284602082015260018060a01b0384166040820152608060608201525f611af9608083018486611ed156fea2646970667358221220589b21814beccea8c0a74e0c41f30ebea605d9c63ba11562f51ee8a9420728e164736f6c634300081e0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_ethPool\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payRegistry\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_celerWallet\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearPays\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_peerFrom\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_payIdList\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmSettle\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"confirmWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeSettle\",\"inputs\":[{\"name\":\"_settleRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cooperativeWithdraw\",\"inputs\":[{\"name\":\"_cooperativeWithdrawRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deposit\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_transferFromAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositInBatch\",\"inputs\":[{\"name\":\"_channelIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_receivers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_transferFromAmounts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"disableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"enableBalanceLimits\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBalanceLimit\",\"inputs\":[{\"name\":\"_tokenAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceLimitsEnabled\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBalanceMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCelerWallet\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelMigrationArgs\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatus\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLedgerStruct.ChannelStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelStatusNum\",\"inputs\":[{\"name\":\"_channelStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCooperativeWithdrawSeqNum\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDisputeTimeout\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEthPool\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getMigratedTo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNextPayIdListHashMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"bytes32[2]\",\"internalType\":\"bytes32[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayClearDeadlineMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPeersMigrationInfo\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPendingPayOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getSettleFinalizedTime\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateSeqNumMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenContract\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTokenType\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumPbEntity.TokenType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalBalance\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTransferOutMap\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[2]\",\"internalType\":\"address[2]\"},{\"name\":\"\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWithdrawIntent\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"intendSettle\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"intendWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_recipientChannelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelFrom\",\"inputs\":[{\"name\":\"_fromLedgerAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"migrateChannelTo\",\"inputs\":[{\"name\":\"_migrationRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"openChannel\",\"inputs\":[{\"name\":\"_openRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setBalanceLimits\",\"inputs\":[{\"name\":\"_tokenAddrs\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_limits\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"snapshotStates\",\"inputs\":[{\"name\":\"_signedSimplexStateArray\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"vetoWithdraw\",\"inputs\":[{\"name\":\"_channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561000f575f5ffd5b506040516123df3803806123df83398101604081905261002e91610116565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c816100ac565b50600280546001600160a01b039485166001600160a01b0319918216179091556003805493851693821693909317909255600480549190931691161790556006805460ff19166001179055610156565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610111575f5ffd5b919050565b5f5f5f60608486031215610128575f5ffd5b610131846100fb565b925061013f602085016100fb565b915061014d604085016100fb565b90509250925092565b61227c806101635f395ff3fe608060405260043610610254575f3560e01c806393b7b3ce1161013f578063d75f960e116100b3578063e5780db211610078578063e5780db21461075c578063e6322df71461077b578063ec7c637d1461079a578063f0c73d70146107b9578063f2fde38b146107d8578063fd0a1a61146107f7575f5ffd5b8063d75f960e146106e3578063d927bfc4146106f7578063d954863c14610716578063e063913c14610729578063e0a515b71461073d575f5ffd5b8063c06d5ff511610104578063c06d5ff51461060e578063c38a325d1461062d578063c7ff86251461064c578063cc0b94b71461066b578063cd3a1be614610697578063d757abd2146106c4575f5ffd5b806393b7b3ce1461056e578063979a9b5e14610581578063a099a39f146105ad578063a8580cab146105c1578063bd480cb7146105e0575f5ffd5b8063312ea2c6116101d657806376bff1171161019b57806376bff117146104865780637e9a7a3e146104cf57806383c8f8b8146104ee57806388f41465146105025780638942ecb2146105335780638da5cb5b14610552575f5ffd5b8063312ea2c6146104015780634102b9a814610415578063666a6d651461043457806369d5dd6714610453578063715018a614610472575f5ffd5b80632b559ecc1161021c5780632b559ecc1461031a5780632e2a5a021461033e5780632e3c517a146103755780632f0ac30414610394578063307d6f96146103e2575f5ffd5b80630165cef81461025857806309683c031461028e57806309b65d86146102af578063130d33fe146102dc578063255aab59146102fb575b5f5ffd5b348015610263575f5ffd5b5061027761027236600461193f565b610816565b6040516102859291906119a3565b60405180910390f35b348015610299575f5ffd5b506102ad6102a8366004611a03565b6108b1565b005b3480156102ba575f5ffd5b506102ce6102c936600461193f565b61091d565b604051908152602001610285565b3480156102e7575f5ffd5b506102ad6102f6366004611a03565b6109a4565b348015610306575f5ffd5b506102ad61031536600461193f565b6109e0565b348015610325575f5ffd5b5061032e610a4a565b6040519015158152602001610285565b348015610349575f5ffd5b5061035d61035836600461193f565b610ac3565b6040516001600160a01b039091168152602001610285565b348015610380575f5ffd5b506102ad61038f366004611a56565b610b43565b34801561039f575f5ffd5b506103b36103ae36600461193f565b610bb2565b604051610285949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b3480156103ed575f5ffd5b506102ce6103fc36600461193f565b610c48565b34801561040c575f5ffd5b5061035d610cca565b348015610420575f5ffd5b506102ad61042f366004611a03565b610d3f565b34801561043f575f5ffd5b5061027761044e36600461193f565b610d7b565b34801561045e575f5ffd5b506102ce61046d36600461193f565b610dd1565b34801561047d575f5ffd5b506102ad610e16565b348015610491575f5ffd5b506104a56104a036600461193f565b610e29565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610285565b3480156104da575f5ffd5b506102ad6104e936600461193f565b610eaf565b3480156104f9575f5ffd5b506102ad610eee565b34801561050d575f5ffd5b5061052161051c36600461193f565b610f58565b60405161028596959493929190611aa7565b34801561053e575f5ffd5b506102ad61054d366004611b04565b61101e565b34801561055d575f5ffd5b505f546001600160a01b031661035d565b6102ad61057c366004611a03565b61106b565b34801561058c575f5ffd5b506105a061059b36600461193f565b6110a7565b6040516102859190611b41565b3480156105b8575f5ffd5b5061035d611126565b3480156105cc575f5ffd5b506102ad6105db366004611b9c565b611160565b3480156105eb575f5ffd5b506105ff6105fa36600461193f565b6111da565b60405161028593929190611c08565b348015610619575f5ffd5b5061027761062836600461193f565b611280565b348015610638575f5ffd5b5061035d61064736600461193f565b6112d6565b348015610657575f5ffd5b506102ad61066636600461193f565b61131b565b348015610676575f5ffd5b5061068a61068536600461193f565b61135a565b6040516102859190611c38565b3480156106a2575f5ffd5b506106b66106b136600461193f565b6113d9565b604051610285929190611c4c565b3480156106cf575f5ffd5b506102ad6106de366004611a03565b611469565b3480156106ee575f5ffd5b5061035d6114a5565b348015610702575f5ffd5b5061027761071136600461193f565b6114df565b6102ad610724366004611c8a565b611535565b348015610734575f5ffd5b506102ad61158a565b348015610748575f5ffd5b506102ce610757366004611a03565b6115ca565b348015610767575f5ffd5b506102ad610776366004611cbf565b611608565b348015610786575f5ffd5b506102ce61079536600461193f565b611753565b3480156107a5575f5ffd5b506102ce6107b4366004611d5e565b611798565b3480156107c4575f5ffd5b506102ce6107d336600461193f565b6117e1565b3480156107e3575f5ffd5b506102ad6107f2366004611d5e565b611826565b348015610802575f5ffd5b506102ad610811366004611d79565b611863565b61081e611921565b610826611921565b5f8381526007602052604090819020905163bcdf4ebb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063bcdf4ebb906024015b608060405180830381865af4158015610883573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a79190611e9e565b9250925050915091565b6040516379e9008760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__906379e90087906108ed9060019086908690600401611ef9565b5f6040518083038186803b158015610903575f5ffd5b505af4158015610915573d5f5f3e3d5ffd5b505050505050565b5f81815260076020526040808220905163418ec10160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063418ec101906024015b602060405180830381865af4158015610979573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190611f1b565b9392505050565b604051630bdc541160e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__90630bdc5411906108ed9060019086908690600401611ef9565b60405163eb4de33760e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063eb4de337906044015b5f6040518083038186803b158015610a31575f5ffd5b505af4158015610a43573d5f5f3e3d5ffd5b5050505050565b604051633574ba3960e11b8152600160048201525f9073__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90636ae9747290602401602060405180830381865af4158015610a9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abe9190611f32565b905090565b5f818152600760205260408082209051630fea54e160e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90631fd4a9c2906024015b602060405180830381865af4158015610b1f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190611f51565b60405163415a19c560e11b815273__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__906382b4338a90610b8190600190879087908790600401611f6c565b5f6040518083038186803b158015610b97575f5ffd5b505af4158015610ba9573d5f5f3e3d5ffd5b50505050505050565b5f81815260076020526040808220905163c2f8816b60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2f8816b90602401608060405180830381865af4158015610c14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c389190611fa0565b9450945094509450509193509193565b6040516360297df360e01b815260016004820152602481018290525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906360297df3906044015b602060405180830381865af4158015610ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc49190611f1b565b92915050565b6040516344e58d5160e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__906344e58d51906024015b602060405180830381865af4158015610d1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abe9190611f51565b6040516372cf9b4360e11b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063e59f3686906108ed9060019086908690600401611ef9565b610d83611921565b610d8b611921565b5f8381526007602052604090819020905163640a694760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c814d28e90602401610868565b5f818152600760205260408082209051636b5c4f1d60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a9060240161095e565b610e1e6118a6565b610e275f6118d2565b565b5f81815260076020526040808220905163c46dd9dd60e01b8152600481018290528291829182919073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c46dd9dd90602401608060405180830381865af4158015610e8b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c389190611fdd565b6040516383e0fef560e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__906383e0fef590604401610a1b565b610ef66118a6565b604051636ad1dc2d60e01b81526001600482015273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90636ad1dc2d906024015b5f6040518083038186803b158015610f40575f5ffd5b505af4158015610f52573d5f5f3e3d5ffd5b50505050565b610f60611921565b610f68611921565b610f70611921565b610f78611921565b610f80611921565b610f88611921565b5f8781526007602052604090819020905163b325312760e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b32531279060240161018060405180830381865af4158015610fe5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110099190612019565b949d939c50919a509850965090945092505050565b604051637a2654ed60e01b81526001600482015260248101849052604481018390526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__90637a2654ed90608401610b81565b60405163594db6e360e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063594db6e3906108ed9060019086908690600401611ef9565b5f8181526007602052604080822090516312bb8c8160e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906312bb8c8190602401602060405180830381865af4158015611102573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190612092565b60405163bd199ca560e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd199ca590602401610d00565b6111686118a6565b60405163c88c626560e01b815273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__9063c88c6265906111a89060019088908890889088906004016120b0565b5f6040518083038186803b1580156111be575f5ffd5b505af41580156111d0573d5f5f3e3d5ffd5b5050505050505050565b6111e2611921565b6111ea611921565b6111f2611921565b5f848152600760205260409081902090516364768a4f60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af415801561124e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112729190612134565b935093509350509193909250565b611288611921565b611290611921565b5f83815260076020526040908190209051630c1f1c7360e31b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906360f8e39890602401610868565b5f818152600760205260408082209051638970f8a560e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__90638970f8a590602401610b04565b60405163bb3d0f2b60e01b8152600160048201526024810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bb3d0f2b90604401610a1b565b5f81815260076020526040808220905163565aebdb60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063565aebdb90602401602060405180830381865af41580156113b5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099d9190612177565b6113e1611921565b6113e9611921565b5f83815260076020526040908190209051636bedb2e760e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d7db65ce90602401608060405180830381865af4158015611445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a79190612195565b60405163742fb50760e01b815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063742fb507906108ed9060019086908690600401611ef9565b60405163c98c925160e01b8152600160048201525f9073__$c617d6f30a3108b63ce4034547dfec5d71$__9063c98c925190602401610d00565b6114e7611921565b6114ef611921565b5f8381526007602052604090819020905163c2c3f21f60e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c2c3f21f90602401610868565b60405163bd9d315760e01b815260016004820152602481018490526001600160a01b03831660448201526064810182905273__$c617d6f30a3108b63ce4034547dfec5d71$__9063bd9d315790608401610b81565b6115926118a6565b604051635930e0e160e01b81526001600482015273__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__90635930e0e190602401610f2a565b604051631e28763960e11b81525f9073__$2da4c1bc7831bce59d8f8d9cf5a8504e33$__90633c50ec729061095e9060019087908790600401611ef9565b848314801561161657508281145b61165e5760405162461bcd60e51b8152602060048201526014602482015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b60448201526064015b60405180910390fd5b5f5b85811015610ba95773__$c617d6f30a3108b63ce4034547dfec5d71$__63bd9d3157600189898581811061169657611696612205565b905060200201358888868181106116af576116af612205565b90506020020160208101906116c49190611d5e565b8787878181106116d6576116d6612205565b905060200201356040518563ffffffff1660e01b815260040161171b949392919093845260208401929092526001600160a01b03166040830152606082015260800190565b5f6040518083038186803b158015611731575f5ffd5b505af4158015611743573d5f5f3e3d5ffd5b5050600190920191506116609050565b5f818152600760205260408082209051635c06efbf60e11b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063b80ddf7e9060240161095e565b60405163bdca79a760e01b8152600160048201526001600160a01b03821660248201525f9073__$feb14f72d15bbe8de11f7ce8bf95c6faf6$__9063bdca79a790604401610c85565b5f8181526007602052604080822090516377ffc62360e01b81526004810182905273__$13d4168a6482a4756bee5acfadcccc5f1f$__906377ffc6239060240161095e565b61182e6118a6565b6001600160a01b03811661185757604051631e4fbdf760e01b81525f6004820152602401611655565b611860816118d2565b50565b604051600162804bef60e01b0319815273__$c617d6f30a3108b63ce4034547dfec5d71$__9063ff7fb411906111a8906001908890889088908890600401612219565b5f546001600160a01b03163314610e275760405163118cdaa760e01b8152336004820152602401611655565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405180604001604052806002906020820280368337509192915050565b5f6020828403121561194f575f5ffd5b5035919050565b805f5b6002811015610f525781516001600160a01b0316845260209384019390910190600101611959565b805f5b6002811015610f52578151845260209384019390910190600101611984565b608081016119b18285611956565b61099d6040830184611981565b5f5f83601f8401126119ce575f5ffd5b50813567ffffffffffffffff8111156119e5575f5ffd5b6020830191508360208285010111156119fc575f5ffd5b9250929050565b5f5f60208385031215611a14575f5ffd5b823567ffffffffffffffff811115611a2a575f5ffd5b611a36858286016119be565b90969095509350505050565b6001600160a01b0381168114611860575f5ffd5b5f5f5f60408486031215611a68575f5ffd5b8335611a7381611a42565b9250602084013567ffffffffffffffff811115611a8e575f5ffd5b611a9a868287016119be565b9497909650939450505050565b6101808101611ab68289611956565b611ac36040830188611981565b611ad06080830187611981565b611add60c0830186611981565b611aeb610100830185611981565b611af9610140830184611981565b979650505050505050565b5f5f5f60608486031215611b16575f5ffd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160038310611b5557611b55611b2d565b91905290565b5f5f83601f840112611b6b575f5ffd5b50813567ffffffffffffffff811115611b82575f5ffd5b6020830191508360208260051b85010111156119fc575f5ffd5b5f5f5f5f60408587031215611baf575f5ffd5b843567ffffffffffffffff811115611bc5575f5ffd5b611bd187828801611b5b565b909550935050602085013567ffffffffffffffff811115611bf0575f5ffd5b611bfc87828801611b5b565b95989497509550505050565b60c08101611c168286611956565b611c236040830185611981565b611c306080830184611981565b949350505050565b6020810160058310611b5557611b55611b2d565b60808101611c5a8285611956565b60408201835f5b6002811015611c80578151835260209283019290910190600101611c61565b5050509392505050565b5f5f5f60608486031215611c9c575f5ffd5b833592506020840135611cae81611a42565b929592945050506040919091013590565b5f5f5f5f5f5f60608789031215611cd4575f5ffd5b863567ffffffffffffffff811115611cea575f5ffd5b611cf689828a01611b5b565b909750955050602087013567ffffffffffffffff811115611d15575f5ffd5b611d2189828a01611b5b565b909550935050604087013567ffffffffffffffff811115611d40575f5ffd5b611d4c89828a01611b5b565b979a9699509497509295939492505050565b5f60208284031215611d6e575f5ffd5b813561099d81611a42565b5f5f5f5f60608587031215611d8c575f5ffd5b843593506020850135611d9e81611a42565b9250604085013567ffffffffffffffff811115611db9575f5ffd5b611bfc878288016119be565b604051601f8201601f1916810167ffffffffffffffff81118282101715611dfa57634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f830112611e11575f5ffd5b611e1b6040611dc5565b806040840185811115611e2c575f5ffd5b845b81811015611e4f578051611e4181611a42565b845260209384019301611e2e565b509095945050505050565b5f82601f830112611e69575f5ffd5b611e736040611dc5565b806040840185811115611e84575f5ffd5b845b81811015611e4f578051845260209384019301611e86565b5f5f60808385031215611eaf575f5ffd5b611eb98484611e02565b9150611ec88460408501611e5a565b90509250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b838152604060208201525f611f12604083018486611ed1565b95945050505050565b5f60208284031215611f2b575f5ffd5b5051919050565b5f60208284031215611f42575f5ffd5b8151801515811461099d575f5ffd5b5f60208284031215611f61575f5ffd5b815161099d81611a42565b8481526001600160a01b03841660208201526060604082018190525f90611f969083018486611ed1565b9695505050505050565b5f5f5f5f60808587031215611fb3575f5ffd5b8451602086015160408701519195509350611fcd81611a42565b6060959095015193969295505050565b5f5f5f5f60808587031215611ff0575f5ffd5b8451611ffb81611a42565b60208601516040870151606090970151919890975090945092505050565b5f5f5f5f5f5f610180878903121561202f575f5ffd5b6120398888611e02565b95506120488860408901611e5a565b94506120578860808901611e5a565b93506120668860c08901611e5a565b9250612076886101008901611e5a565b9150612086886101408901611e5a565b90509295509295509295565b5f602082840312156120a2575f5ffd5b81516003811061099d575f5ffd5b85815260606020820181905281018490525f8560808301825b878110156120f95782356120dc81611a42565b6001600160a01b03168252602092830192909101906001016120c9565b5083810360408501528481526001600160fb1b03851115612118575f5ffd5b8460051b91508186602083013701602001979650505050505050565b5f5f5f60c08486031215612146575f5ffd5b6121508585611e02565b925061215f8560408601611e5a565b915061216e8560808601611e5a565b90509250925092565b5f60208284031215612187575f5ffd5b81516005811061099d575f5ffd5b5f5f608083850312156121a6575f5ffd5b6121b08484611e02565b915083605f8401126121c0575f5ffd5b6121ca6040611dc5565b8060808501868111156121db575f5ffd5b604086015b818110156121f85780518452602093840193016121e0565b5093969095509350505050565b634e487b7160e01b5f52603260045260245ffd5b85815284602082015260018060a01b0384166040820152608060608201525f611af9608083018486611ed156fea2646970667358221220d7e556d4394b97bc904ffacff9e799877f7c593b6b34cde3efda5f79038fd6eb64736f6c634300081e0033", } // CelerLedgerABI is the input ABI used to generate the binding from. @@ -517,38 +518,6 @@ func (_CelerLedger *CelerLedgerCallerSession) GetEthPool() (common.Address, erro return _CelerLedger.Contract.GetEthPool(&_CelerLedger.CallOpts) } -// GetLastPayResolveDeadlineMap is a free data retrieval call binding the contract method 0x9f1fad83. -// -// Solidity: function getLastPayResolveDeadlineMap(bytes32 _channelId) view returns(address[2], uint256[2]) -func (_CelerLedger *CelerLedgerCaller) GetLastPayResolveDeadlineMap(opts *bind.CallOpts, _channelId [32]byte) ([2]common.Address, [2]*big.Int, error) { - var out []interface{} - err := _CelerLedger.contract.Call(opts, &out, "getLastPayResolveDeadlineMap", _channelId) - - if err != nil { - return *new([2]common.Address), *new([2]*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new([2]common.Address)).(*[2]common.Address) - out1 := *abi.ConvertType(out[1], new([2]*big.Int)).(*[2]*big.Int) - - return out0, out1, err - -} - -// GetLastPayResolveDeadlineMap is a free data retrieval call binding the contract method 0x9f1fad83. -// -// Solidity: function getLastPayResolveDeadlineMap(bytes32 _channelId) view returns(address[2], uint256[2]) -func (_CelerLedger *CelerLedgerSession) GetLastPayResolveDeadlineMap(_channelId [32]byte) ([2]common.Address, [2]*big.Int, error) { - return _CelerLedger.Contract.GetLastPayResolveDeadlineMap(&_CelerLedger.CallOpts, _channelId) -} - -// GetLastPayResolveDeadlineMap is a free data retrieval call binding the contract method 0x9f1fad83. -// -// Solidity: function getLastPayResolveDeadlineMap(bytes32 _channelId) view returns(address[2], uint256[2]) -func (_CelerLedger *CelerLedgerCallerSession) GetLastPayResolveDeadlineMap(_channelId [32]byte) ([2]common.Address, [2]*big.Int, error) { - return _CelerLedger.Contract.GetLastPayResolveDeadlineMap(&_CelerLedger.CallOpts, _channelId) -} - // GetMigratedTo is a free data retrieval call binding the contract method 0xc38a325d. // // Solidity: function getMigratedTo(bytes32 _channelId) view returns(address) @@ -612,6 +581,38 @@ func (_CelerLedger *CelerLedgerCallerSession) GetNextPayIdListHashMap(_channelId return _CelerLedger.Contract.GetNextPayIdListHashMap(&_CelerLedger.CallOpts, _channelId) } +// GetPayClearDeadlineMap is a free data retrieval call binding the contract method 0xc06d5ff5. +// +// Solidity: function getPayClearDeadlineMap(bytes32 _channelId) view returns(address[2], uint256[2]) +func (_CelerLedger *CelerLedgerCaller) GetPayClearDeadlineMap(opts *bind.CallOpts, _channelId [32]byte) ([2]common.Address, [2]*big.Int, error) { + var out []interface{} + err := _CelerLedger.contract.Call(opts, &out, "getPayClearDeadlineMap", _channelId) + + if err != nil { + return *new([2]common.Address), *new([2]*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new([2]common.Address)).(*[2]common.Address) + out1 := *abi.ConvertType(out[1], new([2]*big.Int)).(*[2]*big.Int) + + return out0, out1, err + +} + +// GetPayClearDeadlineMap is a free data retrieval call binding the contract method 0xc06d5ff5. +// +// Solidity: function getPayClearDeadlineMap(bytes32 _channelId) view returns(address[2], uint256[2]) +func (_CelerLedger *CelerLedgerSession) GetPayClearDeadlineMap(_channelId [32]byte) ([2]common.Address, [2]*big.Int, error) { + return _CelerLedger.Contract.GetPayClearDeadlineMap(&_CelerLedger.CallOpts, _channelId) +} + +// GetPayClearDeadlineMap is a free data retrieval call binding the contract method 0xc06d5ff5. +// +// Solidity: function getPayClearDeadlineMap(bytes32 _channelId) view returns(address[2], uint256[2]) +func (_CelerLedger *CelerLedgerCallerSession) GetPayClearDeadlineMap(_channelId [32]byte) ([2]common.Address, [2]*big.Int, error) { + return _CelerLedger.Contract.GetPayClearDeadlineMap(&_CelerLedger.CallOpts, _channelId) +} + // GetPayRegistry is a free data retrieval call binding the contract method 0x312ea2c6. // // Solidity: function getPayRegistry() view returns(address) diff --git a/chain/channel-eth-go/ledgerstruct/ledgerstruct.go b/chain/channel-eth-go/ledgerstruct/ledgerstruct.go index 2a5b3e8..4dedff0 100644 --- a/chain/channel-eth-go/ledgerstruct/ledgerstruct.go +++ b/chain/channel-eth-go/ledgerstruct/ledgerstruct.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // LedgerStructMetaData contains all meta data concerning the LedgerStruct contract. var LedgerStructMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122086cbc80fd4128cbe67ab9642d0a35a1dd2e3c285ca27f36a1a0731e568e4cfb064736f6c634300081e0033", + Bin: "0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122080ce617fb39a2397bb74745ac6865630316bc432274d41ff289a1154c70c053764736f6c634300081e0033", } // LedgerStructABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/migrate/migrate.go b/chain/channel-eth-go/migrate/migrate.go index cbc3490..b5c8f4a 100644 --- a/chain/channel-eth-go/migrate/migrate.go +++ b/chain/channel-eth-go/migrate/migrate.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // LedgerMigrateMetaData contains all meta data concerning the LedgerMigrate contract. var LedgerMigrateMetaData = &bind.MetaData{ ABI: "[{\"type\":\"event\",\"name\":\"MigrateChannelFrom\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrateChannelTo\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newLedgerAddr\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", - Bin: "0x611534610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c80633c50ec721461004357806382b4338a14610074575b5f5ffd5b81801561004e575f5ffd5b5061006261005d36600461119d565b610095565b60405190815260200160405180910390f35b81801561007f575f5ffd5b5061009361008e3660046111fc565b61038f565b005b5f5f6100d584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105a692505050565b90505f6100e4825f0151610741565b80515f818152600689016020526040908190209083015192935090916001600383015460ff16600481111561011b5761011b611254565b148061013f57506002600383015460ff16600481111561013d5761013d611254565b145b610147575f5ffd5b8451805160209182012090860151610162908490839061083a565b6101aa5760405162461bcd60e51b815260206004820152601460248201527310da1958dac818dbcb5cda59dcc819985a5b195960621b60448201526064015b60405180910390fd5b60208501516001600160a01b031630146102065760405162461bcd60e51b815260206004820152601f60248201527f46726f6d206c65646765722061646472657373206973206e6f7420746869730060448201526064016101a1565b6001600160a01b038216331461026a5760405162461bcd60e51b815260206004820152602360248201527f546f206c65646765722061646472657373206973206e6f74206d73672e73656e6044820152623232b960e91b60648201526084016101a1565b84606001514211156102be5760405162461bcd60e51b815260206004820152601960248201527f506173736564206d6967726174696f6e20646561646c696e650000000000000060448201526064016101a1565b6102ca8a8460046108ff565b600383018054610100600160a81b0319166101006001600160a01b0385169081029190911790915560405185907fdefb8a94bbfc44ef5297b035407a7dd1314f369e39c3301f5b90f8810fb9fe4f905f90a360038a015460405163283226a360e21b8152600481018690526001600160a01b0384811660248301529091169063a0c89a8c906044015f604051808303815f87803b158015610369575f5ffd5b505af115801561037b573d5f5f3e3d5ffd5b5095985050505050505050505b9392505050565b60405163e0a515b760e01b815283905f906001600160a01b0383169063e0a515b7906103c19087908790600401611268565b6020604051808303815f875af11580156103dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104019190611296565b5f8181526006880160205260408120919250600382015460ff16600481111561042c5761042c611254565b146104835760405162461bcd60e51b815260206004820152602160248201527f496d6d69677261746564206368616e6e656c20616c72656164792065786973746044820152607360f81b60648201526084016101a1565b6003870154604051632a5a97e560e21b81526004810184905230916001600160a01b03169063a96a5f9490602401602060405180830381865afa1580156104cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f091906112ad565b6001600160a01b0316146105465760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7273686970206e6f74207472616e736665727265640000000060448201526064016101a1565b610552878260016108ff565b61055d818484610a36565b610568818484610b18565b6040516001600160a01b0387169083907f141a72a1d915a7c4205104b6e564cc991aa827c5f2c672a5d6a1da8bef99d6eb905f90a350505050505050565b60408051808201909152606080825260208201525f6105d783604080518082019091525f8152602081019190915290565b90505f6105e5826002610c97565b9050806002815181106105fa576105fa6112c8565b602002602001015167ffffffffffffffff81111561061a5761061a6112dc565b60405190808252806020026020018201604052801561064d57816020015b60608152602001906001900390816106385790505b5083602001819052505f8160028151811061066a5761066a6112c8565b6020026020010181815250505f5f5b602084015151845110156107385761069084610d50565b9092509050816001036106ad576106a684610d88565b8552610679565b81600203610729576106be84610d88565b8560200151846002815181106106d6576106d66112c8565b6020026020010151815181106106ee576106ee6112c8565b60200260200101819052508260028151811061070c5761070c6112c8565b60200260200101805180919061072190611304565b905250610679565b6107338482610e40565b610679565b50505050919050565b604080516080810182525f80825260208083018290528284018290526060830182905283518085019094528184528301849052909190805b602083015151835110156108325761079083610d50565b9092509050816001036107b5576107ae6107a984610d88565b610eb5565b8452610779565b816002036107e1576107ce6107c984610d88565b610ecb565b6001600160a01b03166020850152610779565b81600303610808576107f56107c984610d88565b6001600160a01b03166040850152610779565b816004036108235761081983610edb565b6060850152610779565b61082d8382610e40565b610779565b505050919050565b5f815160021461084b57505f610388565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b60028110156108f2576108b185828151811061089a5761089a6112c8565b602002602001015184610f4a90919063ffffffff16565b91508660040181600281106108c8576108c86112c8565b60080201546001600160a01b038381169116146108ea575f9350505050610388565b60010161087c565b5060019695505050505050565b80600481111561091157610911611254565b600383015460ff16600481111561092a5761092a611254565b0361093457505050565b5f600383015460ff16600481111561094e5761094e611254565b146109b957600382015460019084905f9060ff16600481111561097357610973611254565b81526020019081526020015f205461098b919061131c565b600383015484905f9060ff1660048111156109a8576109a8611254565b815260208101919091526040015f20555b825f8260048111156109cd576109cd611254565b81526020019081526020015f205460016109e7919061132f565b835f8360048111156109fb576109fb611254565b815260208101919091526040015f205560038201805482919060ff19166001836004811115610a2c57610a2c611254565b0217905550505050565b604051630bc2b0c160e21b8152600481018290525f906001600160a01b03841690632f0ac30490602401608060405180830381865afa158015610a7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9f9190611342565b6014880155600280880180546001600160a01b0390931661010002610100600160a81b031990931692909217909155600187019290925591508190811115610ae957610ae9611254565b60028086018054909160ff19909116906001908490811115610b0d57610b0d611254565b021790555050505050565b5f5f5f5f5f5f876001600160a01b03166388f41465886040518263ffffffff1660e01b8152600401610b4c91815260200190565b61018060405180830381865afa158015610b68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8c919061140b565b9550955095509550955095505f5f90505b6002811015610c8b575f8a6004018260028110610bbc57610bbc6112c8565b600802019050878260028110610bd457610bd46112c8565b602002015181546001600160a01b0319166001600160a01b03909116178155868260028110610c0557610c056112c8565b60200201516001820155858260028110610c2157610c216112c8565b60200201518160020181905550848260028110610c4057610c406112c8565b60200201516003820155838260028110610c5c57610c5c6112c8565b60200201516004820155828260028110610c7857610c786112c8565b6020020151600790910155600101610b9d565b50505050505050505050565b8151606090610ca783600161132f565b67ffffffffffffffff811115610cbf57610cbf6112dc565b604051908082528060200260200182016040528015610ce8578160200160208202803683370190505b5091505f5f5b60208601515186511015610d4757610d0586610d50565b80925081935050506001848381518110610d2157610d216112c8565b60200260200101818151610d35919061132f565b905250610d428682610e40565b610cee565b50509092525090565b5f5f5f610d5c84610edb565b9050610d696008826114c8565b9250806007166005811115610d8057610d80611254565b915050915091565b60605f610d9483610edb565b90505f81845f0151610da6919061132f565b9050836020015151811115610db9575f5ffd5b8167ffffffffffffffff811115610dd257610dd26112dc565b6040519080825280601f01601f191660200182016040528015610dfc576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015610e35578181015183820152610e2e60208261132f565b9050610e13565b505050935250919050565b5f816005811115610e5357610e53611254565b03610e6657610e6182610edb565b505050565b6002816005811115610e7a57610e7a611254565b0361003f575f610e8983610edb565b905080835f01818151610e9c919061132f565b90525060208301515183511115610e61575f5ffd5b5050565b5f8151602014610ec3575f5ffd5b506020015190565b5f610ed582610f72565b92915050565b60208082015182518101909101515f9182805b600a81101561003f5783811a9150610f078160076114e7565b82607f16901b85179450816080165f03610f4257610f2681600161132f565b86518790610f3590839061132f565b9052509395945050505050565b600101610eee565b5f5f5f5f610f588686610f8f565b925092509250610f688282610fd8565b5090949350505050565b5f8151601414610f80575f5ffd5b5060200151600160601b900490565b5f5f5f8351604103610fc6576020840151604085015160608601515f1a610fb888828585611090565b955095509550505050610fd1565b505081515f91506002905b9250925092565b5f826003811115610feb57610feb611254565b03610ff4575050565b600182600381111561100857611008611254565b036110265760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561103a5761103a611254565b0361105b5760405163fce698f760e01b8152600481018290526024016101a1565b600382600381111561106f5761106f611254565b03610eb1576040516335e2f38360e21b8152600481018290526024016101a1565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110c957505f9150600390508261114e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561111a573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661114557505f92506001915082905061114e565b92505f91508190505b9450945094915050565b5f5f83601f840112611168575f5ffd5b50813567ffffffffffffffff81111561117f575f5ffd5b602083019150836020828501011115611196575f5ffd5b9250929050565b5f5f5f604084860312156111af575f5ffd5b83359250602084013567ffffffffffffffff8111156111cc575f5ffd5b6111d886828701611158565b9497909650939450505050565b6001600160a01b03811681146111f9575f5ffd5b50565b5f5f5f5f6060858703121561120f575f5ffd5b843593506020850135611221816111e5565b9250604085013567ffffffffffffffff81111561123c575f5ffd5b61124887828801611158565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156112a6575f5ffd5b5051919050565b5f602082840312156112bd575f5ffd5b8151610388816111e5565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611315576113156112f0565b5060010190565b81810381811115610ed557610ed56112f0565b80820180821115610ed557610ed56112f0565b5f5f5f5f60808587031215611355575f5ffd5b845160208601516040870151919550935061136f816111e5565b6060959095015193969295505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156113b457634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f8301126113cb575f5ffd5b6113d5604061137f565b8060408401858111156113e6575f5ffd5b845b818110156114005780518452602093840193016113e8565b509095945050505050565b5f5f5f5f5f5f6101808789031215611421575f5ffd5b87601f88011261142f575f5ffd5b611439604061137f565b80604089018a81111561144a575f5ffd5b895b8181101561146d57805161145f816111e5565b84526020938401930161144c565b5081985061147b8b826113bc565b975050505061148d88608089016113bc565b935061149c8860c089016113bc565b92506114ac8861010089016113bc565b91506114bc8861014089016113bc565b90509295509295509295565b5f826114e257634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610ed557610ed56112f056fea2646970667358221220c1c39f09a79ffbaba558bdaebfb0e1c26c1ef42552397fa776a6dd23857a69fb64736f6c634300081e0033", + Bin: "0x611450610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061003f575f3560e01c80633c50ec721461004357806382b4338a14610074575b5f5ffd5b81801561004e575f5ffd5b5061006261005d3660046110e8565b610095565b60405190815260200160405180910390f35b81801561007f575f5ffd5b5061009361008e366004611147565b61038f565b005b5f5f6100d584848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105a692505050565b90505f6100e4825f01516106bb565b80515f818152600689016020526040908190209083015192935090916001600383015460ff16600481111561011b5761011b61119f565b148061013f57506002600383015460ff16600481111561013d5761013d61119f565b145b610147575f5ffd5b845180516020918201209086015161016290849083906107b1565b6101aa5760405162461bcd60e51b815260206004820152601460248201527310da1958dac818dbcb5cda59dcc819985a5b195960621b60448201526064015b60405180910390fd5b60208501516001600160a01b031630146102065760405162461bcd60e51b815260206004820152601f60248201527f46726f6d206c65646765722061646472657373206973206e6f7420746869730060448201526064016101a1565b6001600160a01b038216331461026a5760405162461bcd60e51b815260206004820152602360248201527f546f206c65646765722061646472657373206973206e6f74206d73672e73656e6044820152623232b960e91b60648201526084016101a1565b84606001514211156102be5760405162461bcd60e51b815260206004820152601960248201527f506173736564206d6967726174696f6e20646561646c696e650000000000000060448201526064016101a1565b6102ca8a846004610876565b600383018054610100600160a81b0319166101006001600160a01b0385169081029190911790915560405185907fdefb8a94bbfc44ef5297b035407a7dd1314f369e39c3301f5b90f8810fb9fe4f905f90a360038a015460405163283226a360e21b8152600481018690526001600160a01b0384811660248301529091169063a0c89a8c906044015f604051808303815f87803b158015610369575f5ffd5b505af115801561037b573d5f5f3e3d5ffd5b5095985050505050505050505b9392505050565b60405163e0a515b760e01b815283905f906001600160a01b0383169063e0a515b7906103c190879087906004016111b3565b6020604051808303815f875af11580156103dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040191906111e1565b5f8181526006880160205260408120919250600382015460ff16600481111561042c5761042c61119f565b146104835760405162461bcd60e51b815260206004820152602160248201527f496d6d69677261746564206368616e6e656c20616c72656164792065786973746044820152607360f81b60648201526084016101a1565b6003870154604051632a5a97e560e21b81526004810184905230916001600160a01b03169063a96a5f9490602401602060405180830381865afa1580156104cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f091906111f8565b6001600160a01b0316146105465760405162461bcd60e51b815260206004820152601c60248201527f4f70657261746f7273686970206e6f74207472616e736665727265640000000060448201526064016101a1565b61055287826001610876565b61055d8184846109ad565b610568818484610a8f565b6040516001600160a01b0387169083907f141a72a1d915a7c4205104b6e564cc991aa827c5f2c672a5d6a1da8bef99d6eb905f90a350505050505050565b60408051808201909152606080825260208201525f6105d783604080518082019091525f8152602081019190915290565b90505f600284516105e89190611227565b67ffffffffffffffff81111561060057610600611246565b604051908082528060200260200182016040528015610629578160200160208202803683370190505b5090505f805b602084015151845110156106ad5761064684610c0e565b905080600a036106605761065984610c7d565b855261062f565b80601203610689575f61067285610c7d565b600584901b8501602001525060019091019061062f565b6106a88160071660058111156106a1576106a161119f565b8590610d20565b61062f565b508152602083015250919050565b604080516080810182525f808252602080830182905282840182905260608301829052835180850190945281845283018490529091905b602082015151825110156107aa5761070982610c0e565b905080600a036107235761071c82610e00565b83526106f2565b806012036107475761073482610e5d565b6001600160a01b031660208401526106f2565b80601a0361076b5761075882610e5d565b6001600160a01b031660408401526106f2565b806020036107865761077c82610c0e565b60608401526106f2565b6107a581600716600581111561079e5761079e61119f565b8390610d20565b6106f2565b5050919050565b5f81516002146107c257505f610388565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b6002811015610869576108288582815181106108115761081161125a565b602002602001015184610eb090919063ffffffff16565b915086600401816002811061083f5761083f61125a565b60080201546001600160a01b03838116911614610861575f9350505050610388565b6001016107f3565b5060019695505050505050565b8060048111156108885761088861119f565b600383015460ff1660048111156108a1576108a161119f565b036108ab57505050565b5f600383015460ff1660048111156108c5576108c561119f565b1461093057600382015460019084905f9060ff1660048111156108ea576108ea61119f565b81526020019081526020015f2054610902919061126e565b600383015484905f9060ff16600481111561091f5761091f61119f565b815260208101919091526040015f20555b825f8260048111156109445761094461119f565b81526020019081526020015f2054600161095e9190611281565b835f8360048111156109725761097261119f565b815260208101919091526040015f205560038201805482919060ff191660018360048111156109a3576109a361119f565b0217905550505050565b604051630bc2b0c160e21b8152600481018290525f906001600160a01b03841690632f0ac30490602401608060405180830381865afa1580156109f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190611294565b6014880155600280880180546001600160a01b0390931661010002610100600160a81b031990931692909217909155600187019290925591508190811115610a6057610a6061119f565b60028086018054909160ff19909116906001908490811115610a8457610a8461119f565b021790555050505050565b5f5f5f5f5f5f876001600160a01b03166388f41465886040518263ffffffff1660e01b8152600401610ac391815260200190565b61018060405180830381865afa158015610adf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b03919061135d565b9550955095509550955095505f5f90505b6002811015610c02575f8a6004018260028110610b3357610b3361125a565b600802019050878260028110610b4b57610b4b61125a565b602002015181546001600160a01b0319166001600160a01b03909116178155868260028110610b7c57610b7c61125a565b60200201516001820155858260028110610b9857610b9861125a565b60200201518160020181905550848260028110610bb757610bb761125a565b60200201516003820155838260028110610bd357610bd361125a565b60200201516004820155828260028110610bef57610bef61125a565b6020020151600790910155600101610b14565b50505050505050505050565b602080820151825181515f938301845b600a81101561003f57828410610c32575f5ffd5b838201515f1a607f8116600783021b96909617956001909401936080811015610c745781600903610c695760028110610c69575f5ffd5b505050935250919050565b50600101610c1e565b60605f610c8983610c0e565b90505f81845f0151610c9b9190611281565b9050836020015151811115610cae575f5ffd5b8167ffffffffffffffff811115610cc757610cc7611246565b6040519080825280601f01601f191660200182016040528015610cf1576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015610c69578181015183820152602001610d08565b5f816005811115610d3357610d3361119f565b03610d4657610d4182610c0e565b505050565b6002816005811115610d5a57610d5a61119f565b03610d91575f610d6983610c0e565b905080835f01818151610d7c9190611281565b90525060208301515183511115610d41575f5ffd5b6001816005811115610da557610da561119f565b03610dd5576008825f01818151610dbc9190611281565b90525060208201515182511115610dd1575f5ffd5b5050565b6005816005811115610de957610de961119f565b0361003f576004825f01818151610dbc9190611281565b5f5f610e0b83610c0e565b905080602014610e19575f5ffd5b82516020808501515190610e2e908390611281565b1115610e38575f5ffd5b602080850151828101820151945090610e52908390611281565b909452509092915050565b5f5f610e6883610c0e565b905080601414610e76575f5ffd5b8251602084015151610e89826014611281565b1115610e93575f5ffd5b6020808501518281019091015160601c9350610e52826014611281565b5f5f5f5f610ebe8686610eda565b925092509250610ece8282610f23565b50909150505b92915050565b5f5f5f8351604103610f11576020840151604085015160608601515f1a610f0388828585610fdb565b955095509550505050610f1c565b505081515f91506002905b9250925092565b5f826003811115610f3657610f3661119f565b03610f3f575050565b6001826003811115610f5357610f5361119f565b03610f715760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610f8557610f8561119f565b03610fa65760405163fce698f760e01b8152600481018290526024016101a1565b6003826003811115610fba57610fba61119f565b03610dd1576040516335e2f38360e21b8152600481018290526024016101a1565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561101457505f91506003905082611099565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611065573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661109057505f925060019150829050611099565b92505f91508190505b9450945094915050565b5f5f83601f8401126110b3575f5ffd5b50813567ffffffffffffffff8111156110ca575f5ffd5b6020830191508360208285010111156110e1575f5ffd5b9250929050565b5f5f5f604084860312156110fa575f5ffd5b83359250602084013567ffffffffffffffff811115611117575f5ffd5b611123868287016110a3565b9497909650939450505050565b6001600160a01b0381168114611144575f5ffd5b50565b5f5f5f5f6060858703121561115a575f5ffd5b84359350602085013561116c81611130565b9250604085013567ffffffffffffffff811115611187575f5ffd5b611193878288016110a3565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156111f1575f5ffd5b5051919050565b5f60208284031215611208575f5ffd5b815161038881611130565b634e487b7160e01b5f52601160045260245ffd5b5f8261124157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b81810381811115610ed457610ed4611213565b80820180821115610ed457610ed4611213565b5f5f5f5f608085870312156112a7575f5ffd5b84516020860151604087015191955093506112c181611130565b6060959095015193969295505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561130657634e487b7160e01b5f52604160045260245ffd5b604052919050565b5f82601f83011261131d575f5ffd5b61132760406112d1565b806040840185811115611338575f5ffd5b845b8181101561135257805184526020938401930161133a565b509095945050505050565b5f5f5f5f5f5f6101808789031215611373575f5ffd5b87601f880112611381575f5ffd5b61138b60406112d1565b80604089018a81111561139c575f5ffd5b895b818110156113bf5780516113b181611130565b84526020938401930161139e565b508198506113cd8b8261130e565b97505050506113df886080890161130e565b93506113ee8860c0890161130e565b92506113fe88610100890161130e565b915061140e88610140890161130e565b9050929550929550929556fea26469706673582212208735db3c4c819fd140ddb6e29bc0183816a88e00e456db7dae52d8ffa38b406164736f6c634300081e0033", } // LedgerMigrateABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/operation/operation.go b/chain/channel-eth-go/operation/operation.go index f47f7ab..c431716 100644 --- a/chain/channel-eth-go/operation/operation.go +++ b/chain/channel-eth-go/operation/operation.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // LedgerOperationMetaData contains all meta data concerning the LedgerOperation contract. var LedgerOperationMetaData = &bind.MetaData{ ABI: "[{\"type\":\"event\",\"name\":\"ClearOnePay\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerFrom\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmSettleFail\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ConfirmWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"settleBalance\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CooperativeWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"withdrawnAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"recipientChannelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"seqNum\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"deposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"},{\"name\":\"withdrawals\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendSettle\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"IntendWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OpenChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenType\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"peerAddrs\",\"type\":\"address[2]\",\"indexed\":false,\"internalType\":\"address[2]\"},{\"name\":\"initialDeposits\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"SnapshotStates\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"seqNums\",\"type\":\"uint256[2]\",\"indexed\":false,\"internalType\":\"uint256[2]\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VetoWithdraw\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x615496610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100fb575f3560e01c806383e0fef51161009e578063c98c92511161006e578063c98c925114610273578063e59f368614610291578063eb4de337146102b0578063ff7fb411146102cf575f5ffd5b806383e0fef5146101f8578063bb3d0f2b14610217578063bd199ca514610236578063bd9d315714610254575f5ffd5b806360297df3116100d957806360297df31461017a578063742fb5071461019b57806379e90087146101ba5780637a2654ed146101d9575f5ffd5b80630bdc5411146100ff57806344e58d5114610120578063594db6e31461015b575b5f5ffd5b81801561010a575f5ffd5b5061011e610119366004614de5565b6102ee565b005b61013e61012e366004614e2c565b600201546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b818015610166575f5ffd5b5061011e610175366004614de5565b610841565b61018d610188366004614e43565b610fb4565b604051908152602001610152565b8180156101a6575f5ffd5b5061011e6101b5366004614de5565b610fc9565b8180156101c5575f5ffd5b5061011e6101d4366004614de5565b61121e565b8180156101e4575f5ffd5b5061011e6101f3366004614e63565b61163d565b818015610203575f5ffd5b5061011e610212366004614e43565b611760565b818015610222575f5ffd5b5061011e610231366004614e43565b611a9a565b61013e610244366004614e2c565b600301546001600160a01b031690565b81801561025f575f5ffd5b5061011e61026e366004614ea9565b611c89565b61013e610281366004614e2c565b600101546001600160a01b031690565b81801561029c575f5ffd5b5061011e6102ab366004614de5565b611ebe565b8180156102bb575f5ffd5b5061011e6102ca366004614e43565b61218c565b8180156102da575f5ffd5b5061011e6102e9366004614ee5565b6122d1565b5f61032d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123fe92505050565b805180519192505f9061035890828461034857610348614f49565b60200260200101515f0151612586565b90505f5b828110156108385781515f818152600689016020526040902061037f81336126c3565b15610419576001600382015460ff16600481111561039f5761039f614f5d565b14806103c357506002600382015460ff1660048111156103c1576103c1614f5d565b145b6104145760405162461bcd60e51b815260206004820152601960248201527f50656572206368616e6e656c20737461747573206572726f720000000000000060448201526064015b60405180910390fd5b610481565b6002600382015460ff16600481111561043457610434614f5d565b146104815760405162461bcd60e51b815260206004820152601c60248201527f4e6f6e70656572206368616e6e656c20737461747573206572726f7200000000604482015260640161040b565b8054158061048f5750805442105b6104db5760405162461bcd60e51b815260206004820152601c60248201527f536574746c652068617320616c72656164792066696e616c697a656400000000604482015260640161040b565b5f865f015184815181106104f1576104f1614f49565b60200260200101515f01518051906020012090505f875f0151858151811061051b5761051b614f49565b60200260200101516020015190505f86604001511115610695576105408383836126f9565b61055c5760405162461bcd60e51b815260040161040b90614f71565b5f6105748760200151856127be90919063ffffffff16565b90505f84600401826002811061058c5761058c614f49565b600802016003019050600160048111156105a8576105a8614f5d565b600386015460ff1660048111156105c1576105c1614f5d565b036105f0578054604089015110156105eb5760405162461bcd60e51b815260040161040b90614f9f565b61063c565b6002600386015460ff16600481111561060b5761060b614f5d565b036106345780546040890151116105eb5760405162461bcd60e51b815260040161040b90614f9f565b61063c614fc5565b6040880151815560608801516020908101518101516001830155608089015101516002820181905560a089015160038301551561067e5760c088015160048201555b61068e8d87848b60800151612837565b505061076b565b85604001515f03610763578254156106e55760405162461bcd60e51b8152602060048201526013602482015272696e74656e64536574746c65206265666f726560681b604482015260640161040b565b8051600114801561071f575061071f82825f8151811061070757610707614f49565b602002602001015185612a869092919063ffffffff16565b61075e5760405162461bcd60e51b815260206004820152601060248201526f10da1958dac81cda59c819985a5b195960821b604482015260640161040b565b61076b565b61076b614fc5565b610776600188614fed565b850361078b576107868b85612ad5565b610828565b610796600188614fed565b8510156108205787516107be906107ae876001615000565b8151811061034857610348614f49565b805190965084111561080d5760405162461bcd60e51b81526020600482015260186024820152774e6f6e2d617363656e64696e67206368616e6e656c49647360401b604482015260640161040b565b8551841015610786576107868b85612ad5565b610828614fc5565b50506001909201915061035c9050565b50505050505050565b5f61088083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b4692505050565b90505f61088f825f0151612cd7565b805160200151519091506002146108d75760405162461bcd60e51b815260206004820152600c60248201526b0aee4dedcce40d8cadccee8d60a31b604482015260640161040b565b80602001514211156109225760405162461bcd60e51b815260206004820152601460248201527313dc195b88191958591b1a5b99481c185cdcd95960621b604482015260640161040b565b8051516040805180820190915282516020015180515f92918291849061094a5761094a614f49565b6020026020010151602001518152602001845f01516020015160018151811061097557610975614f49565b60200260200101516020015181525090505f6040518060400160405280855f0151602001515f815181106109ab576109ab614f49565b60200260200101515f01516001600160a01b03166001600160a01b03168152602001855f0151602001516001815181106109e7576109e7614f49565b602090810291909101810151516001600160a01b0390811690925282015182519293508116911610610a5b5760405162461bcd60e51b815260206004820152601c60248201527f5065657220616464727320617265206e6f7420617363656e64696e6700000000604482015260640161040b565b6003880154855180516020909101206001600160a01b03909116905f80610a848c858786612dd1565b9150915087604001518160010181905550610aa18c826001612f77565b610aaa876130ae565b805160028084018054909291839160ff1916906001908490811115610ad157610ad1614f5d565b02179055506020918201518154610100600160a81b0319166101006001600160a01b03928316021790915586516004840180549183166001600160a01b03199283161790558851600585015587830151600c85018054909216921691909117905586810151600d830155890151610b4b90829085906126f9565b610b675760405162461bcd60e51b815260040161040b90614f71565b86602001516001600160a01b0316827f9d9f66221370175606b4085f28a419b201c9b6dafd9e0c4520e5bf69ea3e166d895f01516002811115610bac57610bac614f5d565b888a604051610bbd93929190615060565b60405180910390a3602086015186515f91610bd791615000565b9050805f03610c0d573415610bfe5760405162461bcd60e51b815260040161040b90615089565b50505050505050505050505050565b60058d015460ff1615610c80576020808901516001600160a01b03165f90815260048f019091526040902054811115610c805760405162461bcd60e51b815260206004820152601560248201527410985b185b98d948195e18d959591cc81b1a5b5a5d605a1b604482015260640161040b565b600188516002811115610c9557610c95614f5d565b03610e7d576060890151878160028110610cb157610cb1614f49565b60200201513414610cf95760405162461bcd60e51b81526020600482015260126024820152710dae6ce5cecc2d8eaca40dad2e6dac2e8c6d60731b604482015260640161040b565b5f888260028110610d0c57610d0c614f49565b60200201511115610d8b57856001600160a01b031663d68d9d4e898360028110610d3857610d38614f49565b6020020151866040518363ffffffff1660e01b8152600401610d5c91815260200190565b5f604051808303818588803b158015610d73575f5ffd5b505af1158015610d85573d5f5f3e3d5ffd5b50505050505b5f610d97826001614fed565b90505f898260028110610dac57610dac614f49565b60200201511115610e765760018f01546001600160a01b0316637e1cd431898360028110610ddc57610ddc614f49565b602002015189888d8660028110610df557610df5614f49565b60200201516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084016020604051808303815f875af1158015610e50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7491906150b5565b505b5050610bfe565b600288516002811115610e9257610e92614f5d565b03610fac573415610eb55760405162461bcd60e51b815260040161040b90615089565b60208801515f5b6002811015610f2d57888160028110610ed757610ed7614f49565b602002015115610f2557610f25888260028110610ef657610ef6614f49565b6020020151308b8460028110610f0e57610f0e614f49565b60200201516001600160a01b038616929190613147565b600101610ebc565b50610f426001600160a01b03821687846131b4565b60405163030422ed60e61b8152600481018590526001600160a01b0382811660248301526044820184905287169063c108bb40906064015f604051808303815f87803b158015610f90575f5ffd5b505af1158015610fa2573d5f5f3e3d5ffd5b5050505050610bfe565b610bfe614fc5565b5f818152602083905260409020545b92915050565b5f61100883838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061324392505050565b90505f611017825f01516133d4565b805160808201515f828152600689016020526040902092935090916001600382015460ff16600481111561104d5761104d614f5d565b1461106a5760405162461bcd60e51b815260040161040b906150d4565b845180516020918201209086015161108590839083906126f9565b6110a15760405162461bcd60e51b815260040161040b90614f71565b816014015485602001516110b59190614fed565b6001146110d45760405162461bcd60e51b815260040161040b90614f9f565b84606001514211156111285760405162461bcd60e51b815260206004820152601860248201527f576974686472617720646561646c696e65207061737365640000000000000000604482015260640161040b565b604085015180516020808801516014860155909101516111498483836134b0565b6040516364768a4f60e11b8152600481018590525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af415801561119b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bf9190615195565b925092505086846001600160a01b0316897f1b87d077d9b706e42883b454b67730633fd6b4b29f9a9cf5f57c278c54f51c8f8686868f60200151604051611209949392919061521c565b60405180910390a4610bfe8d8986868b61350b565b5f61125d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061370192505050565b90505f61126c825f0151613892565b80515f8181526006880160205260409020919250906001600382015460ff16600481111561129c5761129c614f5d565b14806112c057506002600382015460ff1660048111156112be576112be614f5d565b145b6112dc5760405162461bcd60e51b815260040161040b906150d4565b83518051602091820120908501516112f790839083906126f9565b6113135760405162461bcd60e51b815260040161040b90614f71565b5f6040518060400160405280846004015f6002811061133457611334614f49565b60080201546001600160a01b039081168252600c860154166020918201526007850154908701519192501080156113725750600f8301546020860151115b61138e5760405162461bcd60e51b815260040161040b90614f9f565b42856060015110156113db5760405162461bcd60e51b815260206004820152601660248201527514d95d1d1b1948191958591b1a5b99481c185cdcd95960521b604482015260640161040b565b805f60200201516001600160a01b031685604001515f8151811061140157611401614f49565b60200260200101515f01516001600160a01b031614801561145b575080600160200201516001600160a01b0316856040015160018151811061144557611445614f49565b60200260200101515f01516001600160a01b0316145b6114a75760405162461bcd60e51b815260206004820152601860248201527f536574746c65206163636f756e7473206d69736d617463680000000000000000604482015260640161040b565b5f604051806040016040528087604001515f815181106114c9576114c9614f49565b602002602001015160200151815260200187604001516001815181106114f1576114f1614f49565b60209081029190910181015101519052604051636b5c4f1d60e11b81526004810186905290915073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015611552573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611576919061524c565b602082015182516115879190615000565b146115cb5760405162461bcd60e51b8152602060048201526014602482015273084c2d8c2dcc6ca40e6eada40dad2e6dac2e8c6d60631b604482015260640161040b565b6115d78a856003612f77565b847f6c666557dc97fd52cd2d9d6dd6d109e501ffdb831abeecf13aafeeaf762ee1fd826040516116079190615263565b60405180910390a26002840154611631908b90879061010090046001600160a01b03168585613a79565b50505050505050505050565b5f838152600685016020526040902060158101336001600384015460ff16600481111561166c5761166c614f5d565b146116895760405162461bcd60e51b815260040161040b906150d4565b81546001600160a01b0316156116e15760405162461bcd60e51b815260206004820152601e60248201527f50656e64696e6720776974686472617720696e74656e74206578697374730000604482015260640161040b565b6116eb83826126c3565b6116f3575f5ffd5b81546001600160a01b0319166001600160a01b0382169081178355600183018690554260028401556003830185905560405186815287907f97883669625c4ff7f5432b4ca33fe75fb5fee985deb196a967e5758f846170fe9060200160405180910390a350505050505050565b5f81815260068301602052604090206001600382015460ff16600481111561178a5761178a614f5d565b146117a75760405162461bcd60e51b815260040161040b906150d4565b60158101546001600160a01b03166118015760405162461bcd60e51b815260206004820152601a60248201527f4e6f2070656e64696e6720776974686472617720696e74656e74000000000000604482015260640161040b565b600181015460178201546118159190615000565b42101561185a5760405162461bcd60e51b8152602060048201526013602482015272111a5cdc1d5d19481b9bdd081d1a5b595bdd5d606a1b604482015260640161040b565b6015810180546016830180546018850180546001600160a01b031985169095555f92839055601786018390558290556001600160a01b0390921692906118a085856127be565b90505f6118ae826001614fed565b9050600486015f8184600281106118c7576118c7614f49565b60080201600301600401548285600281106118e4576118e4614f49565b600802016003016001015483866002811061190157611901614f49565b600802016002015484866002811061191b5761191b614f49565b600802016003016001015485886002811061193857611938614f49565b600802016001015461194a9190615000565b6119549190614fed565b61195e9190614fed565b6119689190614fed565b9050808611156119b25760405162461bcd60e51b8152602060048201526015602482015274115e18d95959081dda5d1a191c985dc81b1a5b5a5d605a1b604482015260640161040b565b6119bd8888886134b0565b6040516364768a4f60e11b8152600481018990525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af4158015611a0f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a339190615195565b925092505086896001600160a01b03168c7fe8110b4ee08638c48f6a4d5f726927df4e541893efa9d2c2c47a6b889041826e8b8686604051611a7793929190615271565b60405180910390a4611a8c8c8c8b8b8b61350b565b505050505050505050505050565b5f818152600683016020526040902060048101426002600384015460ff166004811115611ac957611ac9614f5d565b14611ae65760405162461bcd60e51b815260040161040b906150d4565b8254811015611b375760405162461bcd60e51b815260206004820152601760248201527f536574746c65206973206e6f742066696e616c697a6564000000000000000000604482015260640161040b565b60058201541580611b4b5750600682015481115b8015611b665750600d8201541580611b665750600e82015481115b611bb25760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e747320617265206e6f742066696e616c697a6564000000000000604482015260640161040b565b5f5f611bbd85613b54565b9150915081611c0357611bd08786613d62565b60405186907fa6549eb18490d42e7ec93f42115d1ee11b706d04077be9597034dd73ec8bcb36905f90a250505050505050565b611c0f87866003612f77565b857f728ddd8c5acda5947c34db8d759c66ae70884f526ff9b93637d351b012ef320682604051611c3f9190615263565b60405180910390a260028501546040805180820190915285546001600160a01b039081168252600887015481166020830152610838928a928a926101009092049091169085613a79565b34611c9f858585611c9a8587615000565b613de1565b5f8481526006860160205260409020600160028083015460ff1690811115611cc957611cc9614f5d565b03611dc7578115611d33576003860154604051636b46cea760e11b8152600481018790526001600160a01b039091169063d68d9d4e9084906024015f604051808303818588803b158015611d1b575f5ffd5b505af1158015611d2d573d5f5f3e3d5ffd5b50505050505b8215611dc25760018601546003870154604051637e1cd43160e01b81523360048201526001600160a01b0391821660248201526044810188905260648101869052911690637e1cd431906084016020604051808303815f875af1158015611d9c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc091906150b5565b505b611eb6565b60028181015460ff1681811115611de057611de0614f5d565b03611eae578115611e035760405162461bcd60e51b815260040161040b90615089565b600281015461010090046001600160a01b0316611e2281333087613147565b6003870154611e3e906001600160a01b038381169116866131b4565b600387015460405163030422ed60e61b8152600481018890526001600160a01b038381166024830152604482018790529091169063c108bb40906064015f604051808303815f87803b158015611e92575f5ffd5b505af1158015611ea4573d5f5f3e3d5ffd5b5050505050611eb6565b611eb6614fc5565b505050505050565b5f611efd83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123fe92505050565b805180519192505f90611f1890828461034857610348614f49565b90505f5b828110156108385781515f81815260068901602052604090206001600382015460ff166004811115611f5057611f50614f5d565b14611f6d5760405162461bcd60e51b815260040161040b906150d4565b5f865f01518481518110611f8357611f83614f49565b60200260200101515f01518051906020012090505f875f01518581518110611fad57611fad614f49565b6020026020010151602001519050611fd08282856126f99092919063ffffffff16565b611fec5760405162461bcd60e51b815260040161040b90614f71565b5f6120048760200151856127be90919063ffffffff16565b90505f84600401826002811061201c5761201c614f49565b600802016003019050805f015488604001511161204b5760405162461bcd60e51b815260040161040b90614f9f565b604088015181556060880151602090810151015160018083019190915560c0890151600483015561207c908a614fed565b87036120c757857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b2716120ad8761403b565b6040516120ba9190615263565b60405180910390a261217a565b6120d260018a614fed565b8710156121725789516120ea906107ae896001615000565b80519098508611156121395760405162461bcd60e51b81526020600482015260186024820152774e6f6e2d617363656e64696e67206368616e6e656c49647360401b604482015260640161040b565b875186101561216d57857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b2716120ad8761403b565b61217a565b61217a614fc5565b505060019094019350611f1c92505050565b5f81815260068301602052604090206001600382015460ff1660048111156121b6576121b6614f5d565b146121d35760405162461bcd60e51b815260040161040b906150d4565b60158101546001600160a01b031661222d5760405162461bcd60e51b815260206004820152601a60248201527f4e6f2070656e64696e6720776974686472617720696e74656e74000000000000604482015260640161040b565b61223781336126c3565b61227c5760405162461bcd60e51b815260206004820152601660248201527536b9b39739b2b73232b91034b9903737ba103832b2b960511b604482015260640161040b565b6015810180546001600160a01b03191690555f60168201819055601782018190556018820181905560405183917f9a8a5493b616f074b3f754b5fd66049c8e7980f01547289e5e31808485c6002c91a2505050565b5f84815260068601602052604090206002600382015460ff1660048111156122fb576122fb614f5d565b146123185760405162461bcd60e51b815260040161040b906150d4565b5f61232382866127be565b90505f8484604051612336929190615285565b604051809103902090505f83600401836002811061235657612356614f49565b600802016003019050818160020154146123a75760405162461bcd60e51b8152602060048201526012602482015271098d2e6e840d0c2e6d040dad2e6dac2e8c6d60731b604482015260640161040b565b5f6123e687878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061406392505050565b6020810151600284015590506116318a8a8684612837565b60408051602080820183526060825282518084019093525f80845290830184905290919061242d8260016141e5565b90508060018151811061244257612442614f49565b60200260200101516001600160401b0381111561246157612461615102565b6040519080825280602002602001820160405280156124a657816020015b604080518082019091526060808252602082015281526020019060019003908161247f5790505b50835280515f90829060019081106124c0576124c0614f49565b6020026020010181815250505f5f5b6020840151518451101561257d576124e68461429d565b90925090508160010361256e576125046124ff856142d5565b61438c565b855f01518460018151811061251b5761251b614f49565b60200260200101518151811061253357612533614f49565b60200260200101819052508260018151811061255157612551614f49565b60200260200101805180919061256690615294565b9052506124cf565b612578848261451d565b6124cf565b50505050919050565b61258e614cb3565b604080518082019091525f80825260208201849052805b602083015151835110156126bb576125bc8361429d565b9092509050816001036125e1576125da6125d5846142d5565b614592565b84526125a5565b8160020361260d576125fa6125f5846142d5565b6145a8565b6001600160a01b031660208501526125a5565b816003036126285761261e836145b2565b60408501526125a5565b8160040361264b5761264161263c846142d5565b614621565b60608501526125a5565b8160050361266e5761266461265f846142d5565b614063565b60808501526125a5565b816006036126895761267f836145b2565b60a08501526125a5565b816007036126ac576126a261269d846142d5565b6146a9565b60c08501526125a5565b6126b6838261451d565b6125a5565b505050919050565b60048201545f906001600160a01b03838116911614806126f25750600c8301546001600160a01b038381169116145b9392505050565b5f815160021461270a57505f6126f2565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b60028110156127b15761277085828151811061275957612759614f49565b6020026020010151846146de90919063ffffffff16565b915086600401816002811061278757612787614f49565b60080201546001600160a01b038381169116146127a9575f93505050506126f2565b60010161273b565b5060019695505050505050565b60048201545f906001600160a01b03908116908316036127df57505f610fc3565b600c8301546001600160a01b03908116908316036127ff57506001610fc3565b60405162461bcd60e51b815260206004820152600d60248201526c2737b732bc34b9ba103832b2b960991b604482015260640161040b565b5f838152600685016020526040812060028087015484519293926001600160a01b0390911691637cac39cf919060048601908890811061287957612879614f49565b60080201600301600301546040518363ffffffff1660e01b81526004016128a19291906152ac565b5f60405180830381865afa1580156128bb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128e291908101906152f8565b90505f805b82518110156129b45782818151811061290257612902614f49565b6020026020010151826129159190615000565b915083600401866002811061292c5761292c614f49565b6008020154855180516001600160a01b03909216918390811061295157612951614f49565b6020026020010151887f33252d4bc5cee2ad248475e8c39239a79dc64b2691c9ca1a63ff9af0c75b877686858151811061298d5761298d614f49565b60200260200101516040516129a491815260200190565b60405180910390a46001016128e7565b50808360040186600281106129cb576129cb614f49565b60080201600301600101546129e09190615000565b8360040186600281106129f5576129f5614f49565b60080201600401556020840151612a2f575f836004018660028110612a1c57612a1c614f49565b6008020160030160040181905550610838565b80836004018660028110612a4557612a45614f49565b6008020160030160040154612a5a9190614fed565b836004018660028110612a6f57612a6f614f49565b600802016003016004018190555050505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c839052603c81208190612ac090846146de565b9050612acc85826126c3565b95945050505050565b5f81815260068301602052604090206001810154612af39042615000565b8155612b0183826002612f77565b817f296143e7e25aa055fbb871702776a67da540876e2be721d5c38ba23c97c90d64612b2c8361403b565b604051612b399190615263565b60405180910390a2505050565b60408051808201909152606080825260208201525f612b7783604080518082019091525f8152602081019190915290565b90505f612b858260026141e5565b905080600281518110612b9a57612b9a614f49565b60200260200101516001600160401b03811115612bb957612bb9615102565b604051908082528060200260200182016040528015612bec57816020015b6060815260200190600190039081612bd75790505b5083602001819052505f81600281518110612c0957612c09614f49565b6020026020010181815250505f5f5b6020840151518451101561257d57612c2f8461429d565b909250905081600103612c4c57612c45846142d5565b8552612c18565b81600203612cc857612c5d846142d5565b856020015184600281518110612c7557612c75614f49565b602002602001015181518110612c8d57612c8d614f49565b602002602001018190525082600281518110612cab57612cab614f49565b602002602001018051809190612cc090615294565b905250612c18565b612cd2848261451d565b612c18565b612d1e6040805161010081019091525f60c0820181815260e083019190915260808201908152606060a0830152819081526020015f81526020015f81526020015f81525090565b604080518082019091525f80825260208201849052805b602083015151835110156126bb57612d4c8361429d565b909250905081600103612d7157612d6a612d65846142d5565b614706565b8452612d35565b81600203612d8c57612d82836145b2565b6020850152612d35565b81600303612da757612d9d836145b2565b6040850152612d35565b81600403612dc257612db8836145b2565b6060850152612d35565b612dcc838261451d565b612d35565b6040805160028082526060820183525f92839283929091602083019080368337505086518251929350918391505f90612e0c57612e0c614f49565b6001600160a01b0392909216602092830291909101820152850151815182906001908110612e3c57612e3c614f49565b6001600160a01b039283166020918202929092010152604051630d63a1fd60e01b81525f91881690630d63a1fd90612e7c90859030908a906004016153a2565b6020604051808303815f875af1158015612e98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ebc919061524c565b905080612efe5760405162461bcd60e51b815260206004820152601060248201526f06368616e6e656c4964206765747320360841b604482015260640161040b565b5f818152600689016020526040812090600382015460ff166004811115612f2757612f27614f5d565b14612f695760405162461bcd60e51b815260206004820152601260248201527113d8d8dd5c1a59590818da185b9b995b125960721b604482015260640161040b565b909890975095505050505050565b806004811115612f8957612f89614f5d565b600383015460ff166004811115612fa257612fa2614f5d565b03612fac57505050565b5f600383015460ff166004811115612fc657612fc6614f5d565b1461303157600382015460019084905f9060ff166004811115612feb57612feb614f5d565b81526020019081526020015f20546130039190614fed565b600383015484905f9060ff16600481111561302057613020614f5d565b815260208101919091526040015f20555b825f82600481111561304557613045614f5d565b81526020019081526020015f2054600161305f9190615000565b835f83600481111561307357613073614f5d565b815260208101919091526040015f205560038201805482919060ff191660018360048111156130a4576130a4614f5d565b0217905550505050565b604080518082019091525f80825260208201526001825160028111156130d6576130d6614f5d565b036130f65760208201516001600160a01b0316156130f2575f5ffd5b5090565b60028251600281111561310b5761310b614f5d565b0361313f5760208201516001600160a01b0316613126575f5ffd5b5f82602001516001600160a01b03163b116130f2575f5ffd5b6130f2614fc5565b6040516001600160a01b0384811660248301528381166044830152606482018390526131ae9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506148b3565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613205848261491f565b6131ae576040516001600160a01b0384811660248301525f604483015261323991869182169063095ea7b39060640161317c565b6131ae84826148b3565b60408051808201909152606080825260208201525f61327483604080518082019091525f8152602081019190915290565b90505f6132828260026141e5565b90508060028151811061329757613297614f49565b60200260200101516001600160401b038111156132b6576132b6615102565b6040519080825280602002602001820160405280156132e957816020015b60608152602001906001900390816132d45790505b5083602001819052505f8160028151811061330657613306614f49565b6020026020010181815250505f5f5b6020840151518451101561257d5761332c8461429d565b90925090508160010361334957613342846142d5565b8552613315565b816002036133c55761335a846142d5565b85602001518460028151811061337257613372614f49565b60200260200101518151811061338a5761338a614f49565b6020026020010181905250826002815181106133a8576133a8614f49565b6020026020010180518091906133bd90615294565b905250613315565b6133cf848261451d565b613315565b6133dc614d14565b604080518082019091525f80825260208201849052805b602083015151835110156126bb5761340a8361429d565b90925090508160010361342a576134236125d5846142d5565b84526133f3565b816002036134455761343b836145b2565b60208501526133f3565b816003036134685761345e613459846142d5565b614968565b60408501526133f3565b8160040361348357613479836145b2565b60608501526133f3565b816005036134a1576134976125d5846142d5565b60808501526133f3565b6134ab838261451d565b6133f3565b5f6134bb84846127be565b9050818460040182600281106134d3576134d3614f49565b60080201600201546134e59190615000565b8460040182600281106134fa576134fa614f49565b600802016002018190555050505050565b81156136fa575f8481526006860160205260409020816135a5576003860154600282015460405163470660bb60e11b8152600481018890526001600160a01b0361010090920482166024820152868216604482015260648101869052911690638e0cc176906084015f604051808303815f87803b15801561358a575f5ffd5b505af115801561359c573d5f5f3e3d5ffd5b50505050611eb6565b5f828152600687016020526040902060028082015460ff16908111156135cd576135cd614f5d565b60028084015460ff16908111156135e6576135e6614f5d565b148015613611575060028181015490830154610100918290046001600160a01b039081169290910416145b6136695760405162461bcd60e51b815260206004820152602360248201527f546f6b656e206d69736d61746368206f6620726563697069656e74206368616e6044820152621b995b60ea1b606482015260840161040b565b61367587848787613de1565b6003870154600283015460405163405d4a9760e11b815260048101899052602481018690526001600160a01b03610100909204821660448201528782166064820152608481018790529116906380ba952e9060a4015f604051808303815f87803b1580156136e1575f5ffd5b505af11580156136f3573d5f5f3e3d5ffd5b5050505050505b5050505050565b60408051808201909152606080825260208201525f61373283604080518082019091525f8152602081019190915290565b90505f6137408260026141e5565b90508060028151811061375557613755614f49565b60200260200101516001600160401b0381111561377457613774615102565b6040519080825280602002602001820160405280156137a757816020015b60608152602001906001900390816137925790505b5083602001819052505f816002815181106137c4576137c4614f49565b6020026020010181815250505f5f5b6020840151518451101561257d576137ea8461429d565b90925090508160010361380757613800846142d5565b85526137d3565b8160020361388357613818846142d5565b85602001518460028151811061383057613830614f49565b60200260200101518151811061384857613848614f49565b60200260200101819052508260028151811061386657613866614f49565b60200260200101805180919061387b90615294565b9052506137d3565b61388d848261451d565b6137d3565b6138ba60405180608001604052805f81526020015f8152602001606081526020015f81525090565b604080518082019091525f808252602082018490526138da8260046141e5565b9050806003815181106138ef576138ef614f49565b60200260200101516001600160401b0381111561390e5761390e615102565b60405190808252806020026020018201604052801561395257816020015b604080518082019091525f808252602082015281526020019060019003908161392c5790505b5083604001819052505f8160038151811061396f5761396f614f49565b6020026020010181815250505f5f5b6020840151518451101561257d576139958461429d565b9092509050816001036139b5576139ae6125d5856142d5565b855261397e565b816002036139d0576139c6846145b2565b602086015261397e565b81600303613a4f576139e4613459856142d5565b8560400151846003815181106139fc576139fc614f49565b602002602001015181518110613a1457613a14614f49565b602002602001018190525082600381518110613a3257613a32614f49565b602002602001018051809190613a4790615294565b90525061397e565b81600403613a6a57613a60846145b2565b606086015261397e565b613a74848261451d565b61397e565b5f5b6002811015611eb657818160028110613a9657613a96614f49565b602002015115613b4c5760038601546001600160a01b0316638e0cc1768686868560028110613ac757613ac7614f49565b6020020151868660028110613ade57613ade614f49565b60200201516040516001600160e01b031960e087901b16815260048101949094526001600160a01b0392831660248501529116604483015260648201526084015f604051808303815f87803b158015613b35575f5ffd5b505af1158015613b47573d5f5f3e3d5ffd5b505050505b600101613a7b565b5f613b5d614d44565b604080518082019091525f9060048501600283835b82821015613c0257604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a081018752600384015481526004840154818301526005840154968101969096526006830154606087810191909152600790930154938601939093529083019390935290835292019101613b72565b5050505090505f604051806040016040528083600160028110613c2757613c27614f49565b60200201516060015160200151845f60028110613c4657613c46614f49565b602002015160200151613c599190615000565b8152835160600151602090810151818601518201519190920191613c7c91615000565b905290505f5b6002811015613d55575f838260028110613c9e57613c9e614f49565b602002015160400151848360028110613cb957613cb9614f49565b60200201516060015160200151613cd09190615000565b905080838360028110613ce557613ce5614f49565b60200201511015613d13575f60405180604001604052805f81526020015f8152509550955050505050915091565b80838360028110613d2657613d26614f49565b6020020151613d359190614fed565b838360028110613d4757613d47614f49565b602002015250600101613c82565b5060019590945092505050565b5f8155613d7182826001612f77565b5f600782018190556008820181905560098201819055600a8201819055600b8201819055600f8201819055601082018190556011820181905560128201819055601382018190556015820180546001600160a01b0319169055601682018190556017820181905560189091015550565b5f83815260068501602052604090206001600382015460ff166004811115613e0b57613e0b614f5d565b14613e285760405162461bcd60e51b815260040161040b906150d4565b5f613e3382856127be565b600587015490915060ff1615613f2957600282015461010090046001600160a01b03165f9081526004878101602052604091829020549151636b5c4f1d60e11b815290810184905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015613eb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ed9919061524c565b613ee39085615000565b1115613f295760405162461bcd60e51b815260206004820152601560248201527410985b185b98d948195e18d959591cc81b1a5b5a5d605a1b604482015260640161040b565b82826004018260028110613f3f57613f3f614f49565b6008020160010154613f519190615000565b826004018260028110613f6657613f66614f49565b60080201600101819055505f5f5f8473__$13d4168a6482a4756bee5acfadcccc5f1f$__63c8ed149e90916040518263ffffffff1660e01b8152600401613faf91815260200190565b60c060405180830381865af4158015613fca573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fee9190615195565b925092509250877fb63f5dc096f516663ffb5ef2b611f0e2acca8617a868c2a3653cba5e3ed0e92c84848460405161402893929190615402565b60405180910390a2505050505050505050565b614043614d44565b506040805180820190915260078201548152600f90910154602082015290565b604080518082018252606081525f6020808301829052835180850190945281845283018490529091906140978260026141e5565b9050806001815181106140ac576140ac614f49565b60200260200101516001600160401b038111156140cb576140cb615102565b6040519080825280602002602001820160405280156140f4578160200160208202803683370190505b50835280515f908290600190811061410e5761410e614f49565b6020026020010181815250505f5f5b6020840151518451101561257d576141348461429d565b9092509050816001036141b85761414d6125d5856142d5565b855f01518460018151811061416457614164614f49565b60200260200101518151811061417c5761417c614f49565b6020026020010181815250508260018151811061419b5761419b614f49565b6020026020010180518091906141b090615294565b90525061411d565b816002036141d6576141cc6125d5856142d5565b602086015261411d565b6141e0848261451d565b61411d565b81516060906141f5836001615000565b6001600160401b0381111561420c5761420c615102565b604051908082528060200260200182016040528015614235578160200160208202803683370190505b5091505f5f5b60208601515186511015614294576142528661429d565b8092508193505050600184838151811061426e5761426e614f49565b602002602001018181516142829190615000565b90525061428f868261451d565b61423b565b50509092525090565b5f5f5f6142a9846145b2565b90506142b660088261542a565b92508060071660058111156142cd576142cd614f5d565b915050915091565b60605f6142e1836145b2565b90505f81845f01516142f39190615000565b9050836020015151811115614306575f5ffd5b816001600160401b0381111561431e5761431e615102565b6040519080825280601f01601f191660200182016040528015614348576020820181803683370190505b5060208086015186519295509181860191908301015f5b8581101561438157818101518382015261437a602082615000565b905061435f565b505050935250919050565b60408051808201909152606080825260208201525f6143bd83604080518082019091525f8152602081019190915290565b90505f6143cb8260026141e5565b9050806002815181106143e0576143e0614f49565b60200260200101516001600160401b038111156143ff576143ff615102565b60405190808252806020026020018201604052801561443257816020015b606081526020019060019003908161441d5790505b5083602001819052505f8160028151811061444f5761444f614f49565b6020026020010181815250505f5f5b6020840151518451101561257d576144758461429d565b9092509050816001036144925761448b846142d5565b855261445e565b8160020361450e576144a3846142d5565b8560200151846002815181106144bb576144bb614f49565b6020026020010151815181106144d3576144d3614f49565b6020026020010181905250826002815181106144f1576144f1614f49565b60200260200101805180919061450690615294565b90525061445e565b614518848261451d565b61445e565b5f81600581111561453057614530614f5d565b036145435761453e826145b2565b505050565b600281600581111561455757614557614f5d565b036100fb575f614566836145b2565b905080835f018181516145799190615000565b9052506020830151518351111561453e575f5ffd5b5050565b5f81516020146145a0575f5ffd5b506020015190565b5f610fc3826149ff565b60208082015182518101909101515f9182805b600a8110156100fb5783811a91506145de816007615449565b82607f16901b85179450816080165f03614619576145fd816001615000565b8651879061460c908390615000565b9052509395945050505050565b6001016145c5565b614629614d62565b604080518082019091525f80825260208201849052805b602083015151835110156126bb576146578361429d565b90925090508160010361467c57614675614670846142d5565b614a1c565b8452614640565b8160020361469a57614690613459846142d5565b6020850152614640565b6146a4838261451d565b614640565b5f6020825111156146b8575f5ffd5b60208201519050815160206146cd9190614fed565b6146d8906008615449565b1c919050565b5f5f5f5f6146ec8686614aea565b9250925092506146fc8282614b33565b5090949350505050565b604080516080810182525f91810182815260608083019390935281526020810191909152604080518082019091525f8082526020820184905261474a8260026141e5565b90508060028151811061475f5761475f614f49565b60200260200101516001600160401b0381111561477e5761477e615102565b6040519080825280602002602001820160405280156147c257816020015b604080518082019091525f808252602082015281526020019060019003908161479c5790505b5083602001819052505f816002815181106147df576147df614f49565b6020026020010181815250505f5f5b6020840151518451101561257d576148058461429d565b9092509050816001036148255761481e614670856142d5565b85526147ee565b816002036148a457614839613459856142d5565b85602001518460028151811061485157614851614f49565b60200260200101518151811061486957614869614f49565b60200260200101819052508260028151811061488757614887614f49565b60200260200101805180919061489c90615294565b9052506147ee565b6148ae848261451d565b6147ee565b5f5f60205f8451602086015f885af1806148d2576040513d5f823e3d81fd5b50505f513d915081156148e95780600114156148f6565b6001600160a01b0384163b155b156131ae57604051635274afe760e01b81526001600160a01b038516600482015260240161040b565b5f5f5f5f60205f8651602088015f8a5af192503d91505f51905082801561495e57508115614950578060011461495e565b5f866001600160a01b03163b115b9695505050505050565b6040805180820182525f808252602080830182905283518085019094528184528301849052909190805b602083015151835110156126bb576149a98361429d565b9092509050816001036149d2576149c26125f5846142d5565b6001600160a01b03168452614992565b816002036149f0576149e661269d846142d5565b6020850152614992565b6149fa838261451d565b614992565b5f8151601414614a0d575f5ffd5b5060200151600160601b900490565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5f5b602083015151835110156126bb57614a5f8361429d565b909250905081600103614ab457614a75836145b2565b6002811115614a8657614a86614f5d565b84906002811115614a9957614a99614f5d565b90816002811115614aac57614aac614f5d565b905250614a48565b81600203614adb57614ac86125f5846142d5565b6001600160a01b03166020850152614a48565b614ae5838261451d565b614a48565b5f5f5f8351604103614b21576020840151604085015160608601515f1a614b1388828585614beb565b955095509550505050614b2c565b505081515f91506002905b9250925092565b5f826003811115614b4657614b46614f5d565b03614b4f575050565b6001826003811115614b6357614b63614f5d565b03614b815760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115614b9557614b95614f5d565b03614bb65760405163fce698f760e01b81526004810182905260240161040b565b6003826003811115614bca57614bca614f5d565b0361458e576040516335e2f38360e21b81526004810182905260240161040b565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115614c2457505f91506003905082614ca9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614c75573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116614ca057505f925060019150829050614ca9565b92505f91508190505b9450945094915050565b6040518060e001604052805f81526020015f6001600160a01b031681526020015f8152602001614ce1614d62565b8152602001614d026040518060400160405280606081526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052805f81526020015f8152602001614d02604080518082019091525f808252602082015290565b60405180604001604052806002906020820280368337509192915050565b604080516080810182525f91810182815260608201929092529081908152602001614d9c604080518082019091525f808252602082015290565b905290565b5f5f83601f840112614db1575f5ffd5b5081356001600160401b03811115614dc7575f5ffd5b602083019150836020828501011115614dde575f5ffd5b9250929050565b5f5f5f60408486031215614df7575f5ffd5b8335925060208401356001600160401b03811115614e13575f5ffd5b614e1f86828701614da1565b9497909650939450505050565b5f60208284031215614e3c575f5ffd5b5035919050565b5f5f60408385031215614e54575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215614e76575f5ffd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0381168114614ea6575f5ffd5b50565b5f5f5f5f60808587031215614ebc575f5ffd5b84359350602085013592506040850135614ed581614e92565b9396929550929360600135925050565b5f5f5f5f5f60808688031215614ef9575f5ffd5b85359450602086013593506040860135614f1281614e92565b925060608601356001600160401b03811115614f2c575f5ffd5b614f3888828901614da1565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b60208082526014908201527310da1958dac818dbcb5cda59dcc819985a5b195960621b604082015260600190565b6020808252600c908201526b39b2b8a73ab69032b93937b960a11b604082015260600190565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fc357610fc3614fd9565b80820180821115610fc357610fc3614fd9565b805f5b60028110156131ae5781516001600160a01b0316845260209384019390910190600101615016565b805f5b60028110156131ae578151845260209384019390910190600101615041565b83815260a081016150746020830185615013565b615081606083018461503e565b949350505050565b60208082526012908201527106d73672e76616c7565206973206e6f7420360741b604082015260600190565b5f602082840312156150c5575f5ffd5b815180151581146126f2575f5ffd5b60208082526014908201527321b430b73732b61039ba30ba3ab99032b93937b960611b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561513e5761513e615102565b604052919050565b5f82601f830112615155575f5ffd5b61515f6040615116565b806040840185811115615170575f5ffd5b845b8181101561518a578051845260209384019301615172565b509095945050505050565b5f5f5f60c084860312156151a7575f5ffd5b84601f8501126151b5575f5ffd5b6151bf6040615116565b8060408601878111156151d0575f5ffd5b865b818110156151f35780516151e581614e92565b8452602093840193016151d2565b508195506152018882615146565b94505050506152138560808601615146565b90509250925092565b84815260c08101615230602083018661503e565b61523d606083018561503e565b8260a083015295945050505050565b5f6020828403121561525c575f5ffd5b5051919050565b60408101610fc3828461503e565b83815260a08101615074602083018561503e565b818382375f9101908152919050565b5f600182016152a5576152a5614fd9565b5060010190565b604080825283519082018190525f9060208501906060840190835b818110156152e55783518352602093840193909201916001016152c7565b5050602093909301939093525092915050565b5f60208284031215615308575f5ffd5b81516001600160401b0381111561531d575f5ffd5b8201601f8101841361532d575f5ffd5b80516001600160401b0381111561534657615346615102565b8060051b61535660208201615116565b91825260208184018101929081019087841115615371575f5ffd5b6020850194505b8385101561539757845180835260209586019590935090910190615378565b979650505050505050565b606080825284519082018190525f9060208601906080840190835b818110156153e45783516001600160a01b03168352602093840193909201916001016153bd565b50506001600160a01b03959095166020840152505060400152919050565b60c081016154108286615013565b61541d604083018561503e565b615081608083018461503e565b5f8261544457634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610fc357610fc3614fd956fea264697066735822122025fe890aa91809ae3d2872de514230b2e0615a535cb65885313b12f10654134e64736f6c634300081e0033", + Bin: "0x615119610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100fb575f3560e01c806383e0fef51161009e578063c98c92511161006e578063c98c925114610273578063e59f368614610291578063eb4de337146102b0578063ff7fb411146102cf575f5ffd5b806383e0fef5146101f8578063bb3d0f2b14610217578063bd199ca514610236578063bd9d315714610254575f5ffd5b806360297df3116100d957806360297df31461017a578063742fb5071461019b57806379e90087146101ba5780637a2654ed146101d9575f5ffd5b80630bdc5411146100ff57806344e58d5114610120578063594db6e31461015b575b5f5ffd5b81801561010a575f5ffd5b5061011e610119366004614a97565b6102ee565b005b61013e61012e366004614ade565b600201546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b818015610166575f5ffd5b5061011e610175366004614a97565b610841565b61018d610188366004614af5565b61105b565b604051908152602001610152565b8180156101a6575f5ffd5b5061011e6101b5366004614a97565b611070565b8180156101c5575f5ffd5b5061011e6101d4366004614a97565b6112c5565b8180156101e4575f5ffd5b5061011e6101f3366004614b15565b6116e4565b818015610203575f5ffd5b5061011e610212366004614af5565b611807565b818015610222575f5ffd5b5061011e610231366004614af5565b611b41565b61013e610244366004614ade565b600301546001600160a01b031690565b81801561025f575f5ffd5b5061011e61026e366004614b5b565b611d30565b61013e610281366004614ade565b600101546001600160a01b031690565b81801561029c575f5ffd5b5061011e6102ab366004614a97565b611f65565b8180156102bb575f5ffd5b5061011e6102ca366004614af5565b612233565b8180156102da575f5ffd5b5061011e6102e9366004614b97565b612378565b5f61032d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124a592505050565b805180519192505f9061035890828461034857610348614bfb565b60200260200101515f0151612596565b90505f5b828110156108385781515f818152600689016020526040902061037f81336126cb565b15610419576001600382015460ff16600481111561039f5761039f614c0f565b14806103c357506002600382015460ff1660048111156103c1576103c1614c0f565b145b6104145760405162461bcd60e51b815260206004820152601960248201527f50656572206368616e6e656c20737461747573206572726f720000000000000060448201526064015b60405180910390fd5b610481565b6002600382015460ff16600481111561043457610434614c0f565b146104815760405162461bcd60e51b815260206004820152601c60248201527f4e6f6e70656572206368616e6e656c20737461747573206572726f7200000000604482015260640161040b565b8054158061048f5750805442105b6104db5760405162461bcd60e51b815260206004820152601c60248201527f536574746c652068617320616c72656164792066696e616c697a656400000000604482015260640161040b565b5f865f015184815181106104f1576104f1614bfb565b60200260200101515f01518051906020012090505f875f0151858151811061051b5761051b614bfb565b60200260200101516020015190505f8660400151111561069557610540838383612701565b61055c5760405162461bcd60e51b815260040161040b90614c23565b5f6105748760200151856127c690919063ffffffff16565b90505f84600401826002811061058c5761058c614bfb565b600802016003019050600160048111156105a8576105a8614c0f565b600386015460ff1660048111156105c1576105c1614c0f565b036105f0578054604089015110156105eb5760405162461bcd60e51b815260040161040b90614c51565b61063c565b6002600386015460ff16600481111561060b5761060b614c0f565b036106345780546040890151116105eb5760405162461bcd60e51b815260040161040b90614c51565b61063c614c77565b6040880151815560608801516020908101518101516001830155608089015101516002820181905560a089015160038301551561067e5760c088015160048201555b61068e8d87848b6080015161283f565b505061076b565b85604001515f03610763578254156106e55760405162461bcd60e51b8152602060048201526013602482015272696e74656e64536574746c65206265666f726560681b604482015260640161040b565b8051600114801561071f575061071f82825f8151811061070757610707614bfb565b602002602001015185612a8e9092919063ffffffff16565b61075e5760405162461bcd60e51b815260206004820152601060248201526f10da1958dac81cda59c819985a5b195960821b604482015260640161040b565b61076b565b61076b614c77565b610776600188614c9f565b850361078b576107868b85612add565b610828565b610796600188614c9f565b8510156108205787516107be906107ae876001614cb2565b8151811061034857610348614bfb565b805190965084111561080d5760405162461bcd60e51b81526020600482015260186024820152774e6f6e2d617363656e64696e67206368616e6e656c49647360401b604482015260640161040b565b8551841015610786576107868b85612add565b610828614c77565b50506001909201915061035c9050565b50505050505050565b5f61088083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250612b4e92505050565b90505f61088f825f0151612c5b565b805160200151519091506002146108d75760405162461bcd60e51b815260206004820152600c60248201526b0aee4dedcce40d8cadccee8d60a31b604482015260640161040b565b80602001514211156109225760405162461bcd60e51b815260206004820152601460248201527313dc195b88191958591b1a5b99481c185cdcd95960621b604482015260640161040b565b468160800151146109755760405162461bcd60e51b815260206004820152601760248201527f57726f6e6720636861696e20696420666f72206f70656e000000000000000000604482015260640161040b565b60a08101516001600160a01b031630146109c95760405162461bcd60e51b81526020600482015260156024820152742bb937b733903632b233b2b9103337b91037b832b760591b604482015260640161040b565b8051516040805180820190915282516020015180515f9291829184906109f1576109f1614bfb565b6020026020010151602001518152602001845f015160200151600181518110610a1c57610a1c614bfb565b60200260200101516020015181525090505f6040518060400160405280855f0151602001515f81518110610a5257610a52614bfb565b60200260200101515f01516001600160a01b03166001600160a01b03168152602001855f015160200151600181518110610a8e57610a8e614bfb565b602090810291909101810151516001600160a01b0390811690925282015182519293508116911610610b025760405162461bcd60e51b815260206004820152601c60248201527f5065657220616464727320617265206e6f7420617363656e64696e6700000000604482015260640161040b565b6003880154855180516020909101206001600160a01b03909116905f80610b2b8c858786612db5565b9150915087604001518160010181905550610b488c826001612f5b565b610b5187613092565b805160028084018054909291839160ff1916906001908490811115610b7857610b78614c0f565b02179055506020918201518154610100600160a81b0319166101006001600160a01b03928316021790915586516004840180549183166001600160a01b03199283161790558851600585015587830151600c85018054909216921691909117905586810151600d830155890151610bf29082908590612701565b610c0e5760405162461bcd60e51b815260040161040b90614c23565b86602001516001600160a01b0316827f9d9f66221370175606b4085f28a419b201c9b6dafd9e0c4520e5bf69ea3e166d895f01516002811115610c5357610c53614c0f565b888a604051610c6493929190614d12565b60405180910390a3602086015186515f91610c7e91614cb2565b9050805f03610cb4573415610ca55760405162461bcd60e51b815260040161040b90614d3b565b50505050505050505050505050565b60058d015460ff1615610d27576020808901516001600160a01b03165f90815260048f019091526040902054811115610d275760405162461bcd60e51b815260206004820152601560248201527410985b185b98d948195e18d959591cc81b1a5b5a5d605a1b604482015260640161040b565b600188516002811115610d3c57610d3c614c0f565b03610f24576060890151878160028110610d5857610d58614bfb565b60200201513414610da05760405162461bcd60e51b81526020600482015260126024820152710dae6ce5cecc2d8eaca40dad2e6dac2e8c6d60731b604482015260640161040b565b5f888260028110610db357610db3614bfb565b60200201511115610e3257856001600160a01b031663d68d9d4e898360028110610ddf57610ddf614bfb565b6020020151866040518363ffffffff1660e01b8152600401610e0391815260200190565b5f604051808303818588803b158015610e1a575f5ffd5b505af1158015610e2c573d5f5f3e3d5ffd5b50505050505b5f610e3e826001614c9f565b90505f898260028110610e5357610e53614bfb565b60200201511115610f1d5760018f01546001600160a01b0316637e1cd431898360028110610e8357610e83614bfb565b602002015189888d8660028110610e9c57610e9c614bfb565b60200201516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084016020604051808303815f875af1158015610ef7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1b9190614d67565b505b5050610ca5565b600288516002811115610f3957610f39614c0f565b03611053573415610f5c5760405162461bcd60e51b815260040161040b90614d3b565b60208801515f5b6002811015610fd457888160028110610f7e57610f7e614bfb565b602002015115610fcc57610fcc888260028110610f9d57610f9d614bfb565b6020020151308b8460028110610fb557610fb5614bfb565b60200201516001600160a01b03861692919061312b565b600101610f63565b50610fe96001600160a01b0382168784613198565b60405163030422ed60e61b8152600481018590526001600160a01b0382811660248301526044820184905287169063c108bb40906064015f604051808303815f87803b158015611037575f5ffd5b505af1158015611049573d5f5f3e3d5ffd5b5050505050610ca5565b610ca5614c77565b5f818152602083905260409020545b92915050565b5f6110af83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061322792505050565b90505f6110be825f0151613326565b805160808201515f828152600689016020526040902092935090916001600382015460ff1660048111156110f4576110f4614c0f565b146111115760405162461bcd60e51b815260040161040b90614d86565b845180516020918201209086015161112c9083908390612701565b6111485760405162461bcd60e51b815260040161040b90614c23565b8160140154856020015161115c9190614c9f565b60011461117b5760405162461bcd60e51b815260040161040b90614c51565b84606001514211156111cf5760405162461bcd60e51b815260206004820152601860248201527f576974686472617720646561646c696e65207061737365640000000000000000604482015260640161040b565b604085015180516020808801516014860155909101516111f0848383613406565b6040516364768a4f60e11b8152600481018590525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af4158015611242573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112669190614e47565b925092505086846001600160a01b0316897f1b87d077d9b706e42883b454b67730633fd6b4b29f9a9cf5f57c278c54f51c8f8686868f602001516040516112b09493929190614ece565b60405180910390a4610ca58d8986868b613461565b5f61130483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061365792505050565b90505f611313825f0151613756565b80515f8181526006880160205260409020919250906001600382015460ff16600481111561134357611343614c0f565b148061136757506002600382015460ff16600481111561136557611365614c0f565b145b6113835760405162461bcd60e51b815260040161040b90614d86565b835180516020918201209085015161139e9083908390612701565b6113ba5760405162461bcd60e51b815260040161040b90614c23565b5f6040518060400160405280846004015f600281106113db576113db614bfb565b60080201546001600160a01b039081168252600c860154166020918201526007850154908701519192501080156114195750600f8301546020860151115b6114355760405162461bcd60e51b815260040161040b90614c51565b42856060015110156114825760405162461bcd60e51b815260206004820152601660248201527514d95d1d1b1948191958591b1a5b99481c185cdcd95960521b604482015260640161040b565b805f60200201516001600160a01b031685604001515f815181106114a8576114a8614bfb565b60200260200101515f01516001600160a01b0316148015611502575080600160200201516001600160a01b031685604001516001815181106114ec576114ec614bfb565b60200260200101515f01516001600160a01b0316145b61154e5760405162461bcd60e51b815260206004820152601860248201527f536574746c65206163636f756e7473206d69736d617463680000000000000000604482015260640161040b565b5f604051806040016040528087604001515f8151811061157057611570614bfb565b6020026020010151602001518152602001876040015160018151811061159857611598614bfb565b60209081029190910181015101519052604051636b5c4f1d60e11b81526004810186905290915073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af41580156115f9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061161d9190614efe565b6020820151825161162e9190614cb2565b146116725760405162461bcd60e51b8152602060048201526014602482015273084c2d8c2dcc6ca40e6eada40dad2e6dac2e8c6d60631b604482015260640161040b565b61167e8a856003612f5b565b847f6c666557dc97fd52cd2d9d6dd6d109e501ffdb831abeecf13aafeeaf762ee1fd826040516116ae9190614f15565b60405180910390a260028401546116d8908b90879061010090046001600160a01b031685856138a5565b50505050505050505050565b5f838152600685016020526040902060158101336001600384015460ff16600481111561171357611713614c0f565b146117305760405162461bcd60e51b815260040161040b90614d86565b81546001600160a01b0316156117885760405162461bcd60e51b815260206004820152601e60248201527f50656e64696e6720776974686472617720696e74656e74206578697374730000604482015260640161040b565b61179283826126cb565b61179a575f5ffd5b81546001600160a01b0319166001600160a01b0382169081178355600183018690554260028401556003830185905560405186815287907f97883669625c4ff7f5432b4ca33fe75fb5fee985deb196a967e5758f846170fe9060200160405180910390a350505050505050565b5f81815260068301602052604090206001600382015460ff16600481111561183157611831614c0f565b1461184e5760405162461bcd60e51b815260040161040b90614d86565b60158101546001600160a01b03166118a85760405162461bcd60e51b815260206004820152601a60248201527f4e6f2070656e64696e6720776974686472617720696e74656e74000000000000604482015260640161040b565b600181015460178201546118bc9190614cb2565b4210156119015760405162461bcd60e51b8152602060048201526013602482015272111a5cdc1d5d19481b9bdd081d1a5b595bdd5d606a1b604482015260640161040b565b6015810180546016830180546018850180546001600160a01b031985169095555f92839055601786018390558290556001600160a01b03909216929061194785856127c6565b90505f611955826001614c9f565b9050600486015f81846002811061196e5761196e614bfb565b600802016003016004015482856002811061198b5761198b614bfb565b60080201600301600101548386600281106119a8576119a8614bfb565b60080201600201548486600281106119c2576119c2614bfb565b60080201600301600101548588600281106119df576119df614bfb565b60080201600101546119f19190614cb2565b6119fb9190614c9f565b611a059190614c9f565b611a0f9190614c9f565b905080861115611a595760405162461bcd60e51b8152602060048201526015602482015274115e18d95959081dda5d1a191c985dc81b1a5b5a5d605a1b604482015260640161040b565b611a64888888613406565b6040516364768a4f60e11b8152600481018990525f90819073__$13d4168a6482a4756bee5acfadcccc5f1f$__9063c8ed149e9060240160c060405180830381865af4158015611ab6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ada9190614e47565b925092505086896001600160a01b03168c7fe8110b4ee08638c48f6a4d5f726927df4e541893efa9d2c2c47a6b889041826e8b8686604051611b1e93929190614f23565b60405180910390a4611b338c8c8b8b8b613461565b505050505050505050505050565b5f818152600683016020526040902060048101426002600384015460ff166004811115611b7057611b70614c0f565b14611b8d5760405162461bcd60e51b815260040161040b90614d86565b8254811015611bde5760405162461bcd60e51b815260206004820152601760248201527f536574746c65206973206e6f742066696e616c697a6564000000000000000000604482015260640161040b565b60058201541580611bf25750600682015481115b8015611c0d5750600d8201541580611c0d5750600e82015481115b611c595760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e747320617265206e6f742066696e616c697a6564000000000000604482015260640161040b565b5f5f611c6485613980565b9150915081611caa57611c778786613b8e565b60405186907fa6549eb18490d42e7ec93f42115d1ee11b706d04077be9597034dd73ec8bcb36905f90a250505050505050565b611cb687866003612f5b565b857f728ddd8c5acda5947c34db8d759c66ae70884f526ff9b93637d351b012ef320682604051611ce69190614f15565b60405180910390a260028501546040805180820190915285546001600160a01b039081168252600887015481166020830152610838928a928a9261010090920490911690856138a5565b34611d46858585611d418587614cb2565b613c0d565b5f8481526006860160205260409020600160028083015460ff1690811115611d7057611d70614c0f565b03611e6e578115611dda576003860154604051636b46cea760e11b8152600481018790526001600160a01b039091169063d68d9d4e9084906024015f604051808303818588803b158015611dc2575f5ffd5b505af1158015611dd4573d5f5f3e3d5ffd5b50505050505b8215611e695760018601546003870154604051637e1cd43160e01b81523360048201526001600160a01b0391821660248201526044810188905260648101869052911690637e1cd431906084016020604051808303815f875af1158015611e43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e679190614d67565b505b611f5d565b60028181015460ff1681811115611e8757611e87614c0f565b03611f55578115611eaa5760405162461bcd60e51b815260040161040b90614d3b565b600281015461010090046001600160a01b0316611ec98133308761312b565b6003870154611ee5906001600160a01b03838116911686613198565b600387015460405163030422ed60e61b8152600481018890526001600160a01b038381166024830152604482018790529091169063c108bb40906064015f604051808303815f87803b158015611f39575f5ffd5b505af1158015611f4b573d5f5f3e3d5ffd5b5050505050611f5d565b611f5d614c77565b505050505050565b5f611fa483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506124a592505050565b805180519192505f90611fbf90828461034857610348614bfb565b90505f5b828110156108385781515f81815260068901602052604090206001600382015460ff166004811115611ff757611ff7614c0f565b146120145760405162461bcd60e51b815260040161040b90614d86565b5f865f0151848151811061202a5761202a614bfb565b60200260200101515f01518051906020012090505f875f0151858151811061205457612054614bfb565b60200260200101516020015190506120778282856127019092919063ffffffff16565b6120935760405162461bcd60e51b815260040161040b90614c23565b5f6120ab8760200151856127c690919063ffffffff16565b90505f8460040182600281106120c3576120c3614bfb565b600802016003019050805f01548860400151116120f25760405162461bcd60e51b815260040161040b90614c51565b604088015181556060880151602090810151015160018083019190915560c08901516004830155612123908a614c9f565b870361216e57857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b27161215487613e67565b6040516121619190614f15565b60405180910390a2612221565b61217960018a614c9f565b871015612219578951612191906107ae896001614cb2565b80519098508611156121e05760405162461bcd60e51b81526020600482015260186024820152774e6f6e2d617363656e64696e67206368616e6e656c49647360401b604482015260640161040b565b875186101561221457857fd0793cc4198bf052a6d91a9a1273c4af39f02a91b0e19029477511c278c5b27161215487613e67565b612221565b612221614c77565b505060019094019350611fc392505050565b5f81815260068301602052604090206001600382015460ff16600481111561225d5761225d614c0f565b1461227a5760405162461bcd60e51b815260040161040b90614d86565b60158101546001600160a01b03166122d45760405162461bcd60e51b815260206004820152601a60248201527f4e6f2070656e64696e6720776974686472617720696e74656e74000000000000604482015260640161040b565b6122de81336126cb565b6123235760405162461bcd60e51b815260206004820152601660248201527536b9b39739b2b73232b91034b9903737ba103832b2b960511b604482015260640161040b565b6015810180546001600160a01b03191690555f60168201819055601782018190556018820181905560405183917f9a8a5493b616f074b3f754b5fd66049c8e7980f01547289e5e31808485c6002c91a2505050565b5f84815260068601602052604090206002600382015460ff1660048111156123a2576123a2614c0f565b146123bf5760405162461bcd60e51b815260040161040b90614d86565b5f6123ca82866127c6565b90505f84846040516123dd929190614f37565b604051809103902090505f8360040183600281106123fd576123fd614bfb565b6008020160030190508181600201541461244e5760405162461bcd60e51b8152602060048201526012602482015271098d2e6e840d0c2e6d040dad2e6dac2e8c6d60731b604482015260640161040b565b5f61248d87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250613e8f92505050565b6020810151600284015590506116d88a8a868461283f565b60408051602080820183526060825282518084019093525f80845290830184905283519192916124d790600290614f46565b6001600160401b038111156124ee576124ee614db4565b604051908082528060200260200182016040528015612517578160200160208202803683370190505b5090505f805b6020840151518451101561258b5761253484613f96565b905080600a03612567575f61255061254b86614005565b6140a7565b600584901b8501602001525060019091019061251d565b61258681600716600581111561257f5761257f614c0f565b85906141a6565b61251d565b508152825250919050565b61259e614967565b604080518082019091525f808252602082018490525b602082015151825110156126c4576125cb82613f96565b905080600a036125e5576125de82614286565b83526125b4565b80601203612609576125f6826142e3565b6001600160a01b031660208401526125b4565b806018036126245761261a82613f96565b60408401526125b4565b806022036126475761263d61263883614005565b614336565b60608401526125b4565b80602a0361266a5761266061265b83614005565b613e8f565b60808401526125b4565b806030036126855761267b82613f96565b60a08401526125b4565b80603a036126a057612696826143f1565b60c08401526125b4565b6126bf8160071660058111156126b8576126b8614c0f565b83906141a6565b6125b4565b5050919050565b60048201545f906001600160a01b03838116911614806126fa5750600c8301546001600160a01b038381169116145b9392505050565b5f815160021461271257505f6126fa565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c849052603c812090805b60028110156127b95761277885828151811061276157612761614bfb565b60200260200101518461444790919063ffffffff16565b915086600401816002811061278f5761278f614bfb565b60080201546001600160a01b038381169116146127b1575f93505050506126fa565b600101612743565b5060019695505050505050565b60048201545f906001600160a01b03908116908316036127e757505f61106a565b600c8301546001600160a01b03908116908316036128075750600161106a565b60405162461bcd60e51b815260206004820152600d60248201526c2737b732bc34b9ba103832b2b960991b604482015260640161040b565b5f838152600685016020526040812060028087015484519293926001600160a01b0390911691637cac39cf919060048601908890811061288157612881614bfb565b60080201600301600301546040518363ffffffff1660e01b81526004016128a9929190614f65565b5f60405180830381865afa1580156128c3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128ea9190810190614fb1565b90505f805b82518110156129bc5782818151811061290a5761290a614bfb565b60200260200101518261291d9190614cb2565b915083600401866002811061293457612934614bfb565b6008020154855180516001600160a01b03909216918390811061295957612959614bfb565b6020026020010151887f33252d4bc5cee2ad248475e8c39239a79dc64b2691c9ca1a63ff9af0c75b877686858151811061299557612995614bfb565b60200260200101516040516129ac91815260200190565b60405180910390a46001016128ef565b50808360040186600281106129d3576129d3614bfb565b60080201600301600101546129e89190614cb2565b8360040186600281106129fd576129fd614bfb565b60080201600401556020840151612a37575f836004018660028110612a2457612a24614bfb565b6008020160030160040181905550610838565b80836004018660028110612a4d57612a4d614bfb565b6008020160030160040154612a629190614c9f565b836004018660028110612a7757612a77614bfb565b600802016003016004018190555050505050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c839052603c81208190612ac89084614447565b9050612ad485826126cb565b95945050505050565b5f81815260068301602052604090206001810154612afb9042614cb2565b8155612b0983826002612f5b565b817f296143e7e25aa055fbb871702776a67da540876e2be721d5c38ba23c97c90d64612b3483613e67565b604051612b419190614f15565b60405180910390a2505050565b60408051808201909152606080825260208201525f612b7f83604080518082019091525f8152602081019190915290565b90505f60028451612b909190614f46565b6001600160401b03811115612ba757612ba7614db4565b604051908082528060200260200182016040528015612bd0578160200160208202803683370190505b5090505f805b60208401515184511015612c4d57612bed84613f96565b905080600a03612c0757612c0084614005565b8552612bd6565b80601203612c30575f612c1985614005565b600584901b85016020015250600190910190612bd6565b612c4881600716600581111561257f5761257f614c0f565b612bd6565b508152602083015250919050565b612cb96040805161014081019091525f610100820181815261012083019190915260c08201908152606060e0830152819081526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681525090565b604080518082019091525f808252602082018490525b602082015151825110156126c457612ce682613f96565b905080600a03612d0857612d01612cfc83614005565b61446f565b8352612ccf565b80601003612d2357612d1982613f96565b6020840152612ccf565b80601803612d3e57612d3482613f96565b6040840152612ccf565b80602003612d5957612d4f82613f96565b6060840152612ccf565b80602803612d7457612d6a82613f96565b6080840152612ccf565b80603203612d9857612d85826142e3565b6001600160a01b031660a0840152612ccf565b612db08160071660058111156126b8576126b8614c0f565b612ccf565b6040805160028082526060820183525f92839283929091602083019080368337505086518251929350918391505f90612df057612df0614bfb565b6001600160a01b0392909216602092830291909101820152850151815182906001908110612e2057612e20614bfb565b6001600160a01b039283166020918202929092010152604051630d63a1fd60e01b81525f91881690630d63a1fd90612e6090859030908a9060040161505b565b6020604051808303815f875af1158015612e7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ea09190614efe565b905080612ee25760405162461bcd60e51b815260206004820152601060248201526f06368616e6e656c4964206765747320360841b604482015260640161040b565b5f818152600689016020526040812090600382015460ff166004811115612f0b57612f0b614c0f565b14612f4d5760405162461bcd60e51b815260206004820152601260248201527113d8d8dd5c1a59590818da185b9b995b125960721b604482015260640161040b565b909890975095505050505050565b806004811115612f6d57612f6d614c0f565b600383015460ff166004811115612f8657612f86614c0f565b03612f9057505050565b5f600383015460ff166004811115612faa57612faa614c0f565b1461301557600382015460019084905f9060ff166004811115612fcf57612fcf614c0f565b81526020019081526020015f2054612fe79190614c9f565b600383015484905f9060ff16600481111561300457613004614c0f565b815260208101919091526040015f20555b825f82600481111561302957613029614c0f565b81526020019081526020015f205460016130439190614cb2565b835f83600481111561305757613057614c0f565b815260208101919091526040015f205560038201805482919060ff1916600183600481111561308857613088614c0f565b0217905550505050565b604080518082019091525f80825260208201526001825160028111156130ba576130ba614c0f565b036130da5760208201516001600160a01b0316156130d6575f5ffd5b5090565b6002825160028111156130ef576130ef614c0f565b036131235760208201516001600160a01b031661310a575f5ffd5b5f82602001516001600160a01b03163b116130d6575f5ffd5b6130d6614c77565b6040516001600160a01b0384811660248301528381166044830152606482018390526131929186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614579565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526131e984826145e5565b613192576040516001600160a01b0384811660248301525f604483015261321d91869182169063095ea7b390606401613160565b6131928482614579565b60408051808201909152606080825260208201525f61325883604080518082019091525f8152602081019190915290565b90505f600284516132699190614f46565b6001600160401b0381111561328057613280614db4565b6040519080825280602002602001820160405280156132a9578160200160208202803683370190505b5090505f805b60208401515184511015612c4d576132c684613f96565b905080600a036132e0576132d984614005565b85526132af565b80601203613309575f6132f285614005565b600584901b850160200152506001909101906132af565b61332181600716600581111561257f5761257f614c0f565b6132af565b61332e6149fa565b604080518082019091525f808252602082018490525b602082015151825110156126c45761335b82613f96565b905080600a036133755761336e82614286565b8352613344565b806010036133905761338682613f96565b6020840152613344565b80601a036133b3576133a96133a483614005565b61462e565b6040840152613344565b806020036133ce576133c482613f96565b6060840152613344565b80602a036133e9576133df82614286565b6080840152613344565b6134018160071660058111156126b8576126b8614c0f565b613344565b5f61341184846127c6565b90508184600401826002811061342957613429614bfb565b600802016002015461343b9190614cb2565b84600401826002811061345057613450614bfb565b600802016002018190555050505050565b8115613650575f8481526006860160205260409020816134fb576003860154600282015460405163470660bb60e11b8152600481018890526001600160a01b0361010090920482166024820152868216604482015260648101869052911690638e0cc176906084015f604051808303815f87803b1580156134e0575f5ffd5b505af11580156134f2573d5f5f3e3d5ffd5b50505050611f5d565b5f828152600687016020526040902060028082015460ff169081111561352357613523614c0f565b60028084015460ff169081111561353c5761353c614c0f565b148015613567575060028181015490830154610100918290046001600160a01b039081169290910416145b6135bf5760405162461bcd60e51b815260206004820152602360248201527f546f6b656e206d69736d61746368206f6620726563697069656e74206368616e6044820152621b995b60ea1b606482015260840161040b565b6135cb87848787613c0d565b6003870154600283015460405163405d4a9760e11b815260048101899052602481018690526001600160a01b03610100909204821660448201528782166064820152608481018790529116906380ba952e9060a4015f604051808303815f87803b158015613637575f5ffd5b505af1158015613649573d5f5f3e3d5ffd5b5050505050505b5050505050565b60408051808201909152606080825260208201525f61368883604080518082019091525f8152602081019190915290565b90505f600284516136999190614f46565b6001600160401b038111156136b0576136b0614db4565b6040519080825280602002602001820160405280156136d9578160200160208202803683370190505b5090505f805b60208401515184511015612c4d576136f684613f96565b905080600a036137105761370984614005565b85526136df565b80601203613739575f61372285614005565b600584901b850160200152506001909101906136df565b61375181600716600581111561257f5761257f614c0f565b6136df565b61377e60405180608001604052805f81526020015f8152602001606081526020015f81525090565b604080518082019091525f8082526020820184905283516137a190600290614f46565b6001600160401b038111156137b8576137b8614db4565b6040519080825280602002602001820160405280156137e1578160200160208202803683370190505b5090505f805b60208401515184511015613897576137fe84613f96565b905080600a036138185761381184614286565b85526137e7565b806010036138335761382984613f96565b60208601526137e7565b80601a0361385f575f6138486133a486614005565b600584901b850160200152506001909101906137e7565b8060200361387a5761387084613f96565b60608601526137e7565b61389281600716600581111561257f5761257f614c0f565b6137e7565b508152604083015250919050565b5f5b6002811015611f5d578181600281106138c2576138c2614bfb565b6020020151156139785760038601546001600160a01b0316638e0cc17686868685600281106138f3576138f3614bfb565b602002015186866002811061390a5761390a614bfb565b60200201516040516001600160e01b031960e087901b16815260048101949094526001600160a01b0392831660248501529116604483015260648201526084015f604051808303815f87803b158015613961575f5ffd5b505af1158015613973573d5f5f3e3d5ffd5b505050505b6001016138a7565b5f613989614a35565b604080518082019091525f9060048501600283835b82821015613a2e57604080516080808201835260088502870180546001600160a01b03168352600180820154602080860191909152600283015485870152855160a08101875260038401548152600484015481830152600584015496810196909652600683015460608781019190915260079093015493860193909352908301939093529083529201910161399e565b5050505090505f604051806040016040528083600160028110613a5357613a53614bfb565b60200201516060015160200151845f60028110613a7257613a72614bfb565b602002015160200151613a859190614cb2565b8152835160600151602090810151818601518201519190920191613aa891614cb2565b905290505f5b6002811015613b81575f838260028110613aca57613aca614bfb565b602002015160400151848360028110613ae557613ae5614bfb565b60200201516060015160200151613afc9190614cb2565b905080838360028110613b1157613b11614bfb565b60200201511015613b3f575f60405180604001604052805f81526020015f8152509550955050505050915091565b80838360028110613b5257613b52614bfb565b6020020151613b619190614c9f565b838360028110613b7357613b73614bfb565b602002015250600101613aae565b5060019590945092505050565b5f8155613b9d82826001612f5b565b5f600782018190556008820181905560098201819055600a8201819055600b8201819055600f8201819055601082018190556011820181905560128201819055601382018190556015820180546001600160a01b0319169055601682018190556017820181905560189091015550565b5f83815260068501602052604090206001600382015460ff166004811115613c3757613c37614c0f565b14613c545760405162461bcd60e51b815260040161040b90614d86565b5f613c5f82856127c6565b600587015490915060ff1615613d5557600282015461010090046001600160a01b03165f9081526004878101602052604091829020549151636b5c4f1d60e11b815290810184905273__$13d4168a6482a4756bee5acfadcccc5f1f$__9063d6b89e3a90602401602060405180830381865af4158015613ce1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d059190614efe565b613d0f9085614cb2565b1115613d555760405162461bcd60e51b815260206004820152601560248201527410985b185b98d948195e18d959591cc81b1a5b5a5d605a1b604482015260640161040b565b82826004018260028110613d6b57613d6b614bfb565b6008020160010154613d7d9190614cb2565b826004018260028110613d9257613d92614bfb565b60080201600101819055505f5f5f8473__$13d4168a6482a4756bee5acfadcccc5f1f$__63c8ed149e90916040518263ffffffff1660e01b8152600401613ddb91815260200190565b60c060405180830381865af4158015613df6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e1a9190614e47565b925092509250877fb63f5dc096f516663ffb5ef2b611f0e2acca8617a868c2a3653cba5e3ed0e92c848484604051613e54939291906150bb565b60405180910390a2505050505050505050565b613e6f614a35565b506040805180820190915260078201548152600f90910154602082015290565b604080518082018252606081525f6020808301829052835180850190945281845283018490528351919291613ec690602290614f46565b6001600160401b03811115613edd57613edd614db4565b604051908082528060200260200182016040528015613f06578160200160208202803683370190505b5090505f805b6020840151518451101561258b57613f2384613f96565b905080600a03613f5e57613f3684614286565b838381518110613f4857613f48614bfb565b6020908102919091010152600190910190613f0c565b80601203613f7957613f6f84614286565b6020860152613f0c565b613f9181600716600581111561257f5761257f614c0f565b613f0c565b602080820151825181515f938301845b600a8110156100fb57828410613fba575f5ffd5b838201515f1a607f8116600783021b96909617956001909401936080811015613ffc5781600903613ff15760028110613ff1575f5ffd5b505050935250919050565b50600101613fa6565b60605f61401183613f96565b90505f81845f01516140239190614cb2565b9050836020015151811115614036575f5ffd5b816001600160401b0381111561404e5761404e614db4565b6040519080825280601f01601f191660200182016040528015614078576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015613ff157818101518382015260200161408f565b60408051808201909152606080825260208201525f6140d883604080518082019091525f8152602081019190915290565b90505f600284516140e99190614f46565b6001600160401b0381111561410057614100614db4565b604051908082528060200260200182016040528015614129578160200160208202803683370190505b5090505f805b60208401515184511015612c4d5761414684613f96565b905080600a036141605761415984614005565b855261412f565b80601203614189575f61417285614005565b600584901b8501602001525060019091019061412f565b6141a181600716600581111561257f5761257f614c0f565b61412f565b5f8160058111156141b9576141b9614c0f565b036141cc576141c782613f96565b505050565b60028160058111156141e0576141e0614c0f565b03614217575f6141ef83613f96565b905080835f018181516142029190614cb2565b905250602083015151835111156141c7575f5ffd5b600181600581111561422b5761422b614c0f565b0361425b576008825f018181516142429190614cb2565b90525060208201515182511115614257575f5ffd5b5050565b600581600581111561426f5761426f614c0f565b036100fb576004825f018181516142429190614cb2565b5f5f61429183613f96565b90508060201461429f575f5ffd5b825160208085015151906142b4908390614cb2565b11156142be575f5ffd5b6020808501518281018201519450906142d8908390614cb2565b909452509092915050565b5f5f6142ee83613f96565b9050806014146142fc575f5ffd5b825160208401515161430f826014614cb2565b1115614319575f5ffd5b6020808501518281019091015160601c93506142d8826014614cb2565b604080516080810182525f81830181815260608301829052825282518084018452818152602080820183905280840191909152835180850190945281845283018490529091905b602082015151825110156126c45761439482613f96565b905080600a036143b6576143af6143aa83614005565b6146c9565b835261437d565b806012036143d4576143ca6133a483614005565b602084015261437d565b6143ec8160071660058111156126b8576126b8614c0f565b61437d565b5f5f6143fc83613f96565b9050602081111561440b575f5ffd5b82515f6144188383614cb2565b905084602001515181111561442b575f5ffd5b602080860151929092018201519452036008029190911c919050565b5f5f5f5f614455868661479e565b92509250925061446582826147e7565b5090949350505050565b604080516080810182525f91810182815260608083019390935281526020810191909152604080518082019091525f8082526020820184905283516144b690600290614f46565b6001600160401b038111156144cd576144cd614db4565b6040519080825280602002602001820160405280156144f6578160200160208202803683370190505b5090505f805b60208401515184511015612c4d5761451384613f96565b905080600a03614530576145296143aa85614005565b85526144fc565b8060120361455c575f6145456133a486614005565b600584901b850160200152506001909101906144fc565b61457481600716600581111561257f5761257f614c0f565b6144fc565b5f5f60205f8451602086015f885af180614598576040513d5f823e3d81fd5b50505f513d915081156145af5780600114156145bc565b6001600160a01b0384163b155b1561319257604051635274afe760e01b81526001600160a01b038516600482015260240161040b565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015614624575081156146165780600114614624565b5f866001600160a01b03163b115b9695505050505050565b6040805180820182525f8082526020808301829052835180850190945281845283018490529091905b602082015151825110156126c45761466e82613f96565b905080600a0361469157614681826142e3565b6001600160a01b03168352614657565b806012036146ac576146a2826143f1565b6020840152614657565b6146c48160071660058111156126b8576126b8614c0f565b614657565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5b602082015151825110156126c45761470b82613f96565b90508060080361475d5761471e82613f96565b600281111561472f5761472f614c0f565b8390600281111561474257614742614c0f565b9081600281111561475557614755614c0f565b9052506146f4565b806012036147815761476e826142e3565b6001600160a01b031660208401526146f4565b6147998160071660058111156126b8576126b8614c0f565b6146f4565b5f5f5f83516041036147d5576020840151604085015160608601515f1a6147c78882858561489f565b9550955095505050506147e0565b505081515f91506002905b9250925092565b5f8260038111156147fa576147fa614c0f565b03614803575050565b600182600381111561481757614817614c0f565b036148355760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561484957614849614c0f565b0361486a5760405163fce698f760e01b81526004810182905260240161040b565b600382600381111561487e5761487e614c0f565b03614257576040516335e2f38360e21b81526004810182905260240161040b565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156148d857505f9150600390508261495d565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015614929573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661495457505f92506001915082905061495d565b92505f91508190505b9450945094915050565b6040518060e001604052805f81526020015f6001600160a01b031681526020015f81526020016149c7604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b81526020016149e86040518060400160405280606081526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052805f81526020015f81526020016149e860405180604001604052805f6001600160a01b031681526020015f81525090565b60405180604001604052806002906020820280368337509192915050565b5f5f83601f840112614a63575f5ffd5b5081356001600160401b03811115614a79575f5ffd5b602083019150836020828501011115614a90575f5ffd5b9250929050565b5f5f5f60408486031215614aa9575f5ffd5b8335925060208401356001600160401b03811115614ac5575f5ffd5b614ad186828701614a53565b9497909650939450505050565b5f60208284031215614aee575f5ffd5b5035919050565b5f5f60408385031215614b06575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215614b28575f5ffd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0381168114614b58575f5ffd5b50565b5f5f5f5f60808587031215614b6e575f5ffd5b84359350602085013592506040850135614b8781614b44565b9396929550929360600135925050565b5f5f5f5f5f60808688031215614bab575f5ffd5b85359450602086013593506040860135614bc481614b44565b925060608601356001600160401b03811115614bde575f5ffd5b614bea88828901614a53565b969995985093965092949392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b60208082526014908201527310da1958dac818dbcb5cda59dcc819985a5b195960621b604082015260600190565b6020808252600c908201526b39b2b8a73ab69032b93937b960a11b604082015260600190565b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561106a5761106a614c8b565b8082018082111561106a5761106a614c8b565b805f5b60028110156131925781516001600160a01b0316845260209384019390910190600101614cc8565b805f5b6002811015613192578151845260209384019390910190600101614cf3565b83815260a08101614d266020830185614cc5565b614d336060830184614cf0565b949350505050565b60208082526012908201527106d73672e76616c7565206973206e6f7420360741b604082015260600190565b5f60208284031215614d77575f5ffd5b815180151581146126fa575f5ffd5b60208082526014908201527321b430b73732b61039ba30ba3ab99032b93937b960611b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614df057614df0614db4565b604052919050565b5f82601f830112614e07575f5ffd5b614e116040614dc8565b806040840185811115614e22575f5ffd5b845b81811015614e3c578051845260209384019301614e24565b509095945050505050565b5f5f5f60c08486031215614e59575f5ffd5b84601f850112614e67575f5ffd5b614e716040614dc8565b806040860187811115614e82575f5ffd5b865b81811015614ea5578051614e9781614b44565b845260209384019301614e84565b50819550614eb38882614df8565b9450505050614ec58560808601614df8565b90509250925092565b84815260c08101614ee26020830186614cf0565b614eef6060830185614cf0565b8260a083015295945050505050565b5f60208284031215614f0e575f5ffd5b5051919050565b6040810161106a8284614cf0565b83815260a08101614d266020830185614cf0565b818382375f9101908152919050565b5f82614f6057634e487b7160e01b5f52601260045260245ffd5b500490565b604080825283519082018190525f9060208501906060840190835b81811015614f9e578351835260209384019390920191600101614f80565b5050602093909301939093525092915050565b5f60208284031215614fc1575f5ffd5b81516001600160401b03811115614fd6575f5ffd5b8201601f81018413614fe6575f5ffd5b80516001600160401b03811115614fff57614fff614db4565b8060051b61500f60208201614dc8565b9182526020818401810192908101908784111561502a575f5ffd5b6020850194505b8385101561505057845180835260209586019590935090910190615031565b979650505050505050565b606080825284519082018190525f9060208601906080840190835b8181101561509d5783516001600160a01b0316835260209384019390920191600101615076565b50506001600160a01b03959095166020840152505060400152919050565b60c081016150c98286614cc5565b6150d66040830185614cf0565b614d336080830184614cf056fea26469706673582212208789331d4c47e96f3969e9861559f7d5812669a8d17b98bfcc5c3fd7dd35d47864736f6c634300081e0033", } // LedgerOperationABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/payregistry/payregistry.go b/chain/channel-eth-go/payregistry/payregistry.go index 7b88cca..053a96b 100644 --- a/chain/channel-eth-go/payregistry/payregistry.go +++ b/chain/channel-eth-go/payregistry/payregistry.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -31,8 +32,8 @@ var ( // PayRegistryMetaData contains all meta data concerning the PayRegistry contract. var PayRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"calculatePayId\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_setter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getPayAmounts\",\"inputs\":[{\"name\":\"_payIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_lastPayResolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayInfo\",\"inputs\":[{\"name\":\"_payId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"payInfoMap\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setPayAmount\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayAmounts\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadline\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadlines\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfo\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfos\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"PayInfoUpdate\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6080604052348015600e575f5ffd5b50610a668061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80638f13b2f5116100635780638f13b2f51461013b57806396efe57314610161578063cdfa146b14610182578063e1e3549014610195578063f8fb012f146101a8575f5ffd5b80630daddd341461009f578063204a95ee146100b457806327b0e058146100c7578063414f7e0e146101085780637cac39cf1461011b575b5f5ffd5b6100b26100ad36600461078c565b6101bb565b005b6100b26100c236600461078c565b61029e565b6100ee6100d53660046107f8565b5f90815260208190526040902080546001909101549091565b604080519283526020830191909152015b60405180910390f35b6100b261011636600461080f565b610360565b61012e6101293660046108ae565b61046c565b6040516100ff91906108f6565b6100ee6101493660046107f8565b5f602081905290815260409020805460019091015482565b61017461016f366004610938565b61060d565b6040519081526020016100ff565b6100b2610190366004610971565b61065a565b6100b26101a3366004610991565b6106ac565b6100b26101b6366004610971565b6106ff565b8281146101e35760405162461bcd60e51b81526004016101da906109ba565b60405180910390fd5b5f33815b8581101561029557610211878783818110610204576102046109e8565b905060200201358361060d565b5f818152602081905260409020909350858583818110610233576102336109e8565b6020029190910135600183015550805484905f516020610a115f395f51905f5290888886818110610266576102666109e8565b90506020020135604051610284929190918252602082015260400190565b60405180910390a2506001016101e7565b50505050505050565b8281146102bd5760405162461bcd60e51b81526004016101da906109ba565b5f33815b85811015610295576102de878783818110610204576102046109e8565b5f818152602081905260409020909350858583818110610300576103006109e8565b6020029190910135825550835f516020610a115f395f51905f5287878581811061032c5761032c6109e8565b90506020020135836001015460405161034f929190918252602082015260400190565b60405180910390a2506001016102c1565b848314801561036e57508481145b61038a5760405162461bcd60e51b81526004016101da906109ba565b5f33815b87811015610461576103ab898983818110610204576102046109e8565b5f8181526020819052604090209093508787838181106103cd576103cd6109e8565b60200291909101358255508585838181106103ea576103ea6109e8565b6020029190910135600183015550835f516020610a115f395f51905f52898985818110610419576104196109e8565b90506020020135888886818110610432576104326109e8565b90506020020135604051610450929190918252602082015260400190565b60405180910390a25060010161038e565b505050505050505050565b60605f8367ffffffffffffffff811115610488576104886109fc565b6040519080825280602002602001820160405280156104b1578160200160208202803683370190505b5090505f5b84811015610604575f5f8787848181106104d2576104d26109e8565b9050602002013581526020019081526020015f20600101545f0361053f5783421161053a5760405162461bcd60e51b815260206004820152601860248201527714185e5b595b9d081a5cc81b9bdd08199a5b985b1a5e995960421b60448201526064016101da565b6105b4565b5f5f878784818110610553576105536109e8565b9050602002013581526020019081526020015f206001015442116105b45760405162461bcd60e51b815260206004820152601860248201527714185e5b595b9d081a5cc81b9bdd08199a5b985b1a5e995960421b60448201526064016101da565b5f5f8787848181106105c8576105c86109e8565b9050602002013581526020019081526020015f205f01548282815181106105f1576105f16109e8565b60209081029190910101526001016104b6565b50949350505050565b5f828260405160200161063c92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f610665833361060d565b5f8181526020818152604091829020600181018690558054835190815291820186905292935083915f516020610a115f395f51905f5291015b60405180910390a250505050565b5f6106b7843361060d565b5f818152602081815260409182902086815560018101869055825187815291820186905292935083915f516020610a115f395f51905f52910160405180910390a25050505050565b5f61070a833361060d565b5f8181526020818152604091829020858155600181015483518781529283015292935083915f516020610a115f395f51905f52910161069e565b5f5f83601f840112610754575f5ffd5b50813567ffffffffffffffff81111561076b575f5ffd5b6020830191508360208260051b8501011115610785575f5ffd5b9250929050565b5f5f5f5f6040858703121561079f575f5ffd5b843567ffffffffffffffff8111156107b5575f5ffd5b6107c187828801610744565b909550935050602085013567ffffffffffffffff8111156107e0575f5ffd5b6107ec87828801610744565b95989497509550505050565b5f60208284031215610808575f5ffd5b5035919050565b5f5f5f5f5f5f60608789031215610824575f5ffd5b863567ffffffffffffffff81111561083a575f5ffd5b61084689828a01610744565b909750955050602087013567ffffffffffffffff811115610865575f5ffd5b61087189828a01610744565b909550935050604087013567ffffffffffffffff811115610890575f5ffd5b61089c89828a01610744565b979a9699509497509295939492505050565b5f5f5f604084860312156108c0575f5ffd5b833567ffffffffffffffff8111156108d6575f5ffd5b6108e286828701610744565b909790965060209590950135949350505050565b602080825282518282018190525f918401906040840190835b8181101561092d57835183526020938401939092019160010161090f565b509095945050505050565b5f5f60408385031215610949575f5ffd5b8235915060208301356001600160a01b0381168114610966575f5ffd5b809150509250929050565b5f5f60408385031215610982575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156109a3575f5ffd5b505081359360208301359350604090920135919050565b602080825260149082015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffdfe9e9acc6d43d5d7bd6fa143ef0ee1d224cfe2bb010b7e3acf44878d6314ebc607a2646970667358221220e3b956bfac24e126031dd0c900c519acc055b35be34a136ac0f786f56913a77764736f6c634300081e0033", + ABI: "[{\"type\":\"function\",\"name\":\"calculatePayId\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_setter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"getPayAmounts\",\"inputs\":[{\"name\":\"_payIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_maxResolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getPayInfo\",\"inputs\":[{\"name\":\"_payId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"payInfoMap\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setPayAmount\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayAmounts\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadline\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayDeadlines\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfo\",\"inputs\":[{\"name\":\"_payHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_amt\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPayInfos\",\"inputs\":[{\"name\":\"_payHashes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_amts\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"},{\"name\":\"_deadlines\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"PayInfoUpdate\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6080604052348015600e575f5ffd5b50610a668061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80638f13b2f5116100635780638f13b2f51461013b57806396efe57314610161578063cdfa146b14610182578063e1e3549014610195578063f8fb012f146101a8575f5ffd5b80630daddd341461009f578063204a95ee146100b457806327b0e058146100c7578063414f7e0e146101085780637cac39cf1461011b575b5f5ffd5b6100b26100ad36600461078c565b6101bb565b005b6100b26100c236600461078c565b61029e565b6100ee6100d53660046107f8565b5f90815260208190526040902080546001909101549091565b604080519283526020830191909152015b60405180910390f35b6100b261011636600461080f565b610360565b61012e6101293660046108ae565b61046c565b6040516100ff91906108f6565b6100ee6101493660046107f8565b5f602081905290815260409020805460019091015482565b61017461016f366004610938565b61060d565b6040519081526020016100ff565b6100b2610190366004610971565b61065a565b6100b26101a3366004610991565b6106ac565b6100b26101b6366004610971565b6106ff565b8281146101e35760405162461bcd60e51b81526004016101da906109ba565b60405180910390fd5b5f33815b8581101561029557610211878783818110610204576102046109e8565b905060200201358361060d565b5f818152602081905260409020909350858583818110610233576102336109e8565b6020029190910135600183015550805484905f516020610a115f395f51905f5290888886818110610266576102666109e8565b90506020020135604051610284929190918252602082015260400190565b60405180910390a2506001016101e7565b50505050505050565b8281146102bd5760405162461bcd60e51b81526004016101da906109ba565b5f33815b85811015610295576102de878783818110610204576102046109e8565b5f818152602081905260409020909350858583818110610300576103006109e8565b6020029190910135825550835f516020610a115f395f51905f5287878581811061032c5761032c6109e8565b90506020020135836001015460405161034f929190918252602082015260400190565b60405180910390a2506001016102c1565b848314801561036e57508481145b61038a5760405162461bcd60e51b81526004016101da906109ba565b5f33815b87811015610461576103ab898983818110610204576102046109e8565b5f8181526020819052604090209093508787838181106103cd576103cd6109e8565b60200291909101358255508585838181106103ea576103ea6109e8565b6020029190910135600183015550835f516020610a115f395f51905f52898985818110610419576104196109e8565b90506020020135888886818110610432576104326109e8565b90506020020135604051610450929190918252602082015260400190565b60405180910390a25060010161038e565b505050505050505050565b60605f8367ffffffffffffffff811115610488576104886109fc565b6040519080825280602002602001820160405280156104b1578160200160208202803683370190505b5090505f5b84811015610604575f5f8787848181106104d2576104d26109e8565b9050602002013581526020019081526020015f20600101545f0361053f5783421161053a5760405162461bcd60e51b815260206004820152601860248201527714185e5b595b9d081a5cc81b9bdd08199a5b985b1a5e995960421b60448201526064016101da565b6105b4565b5f5f878784818110610553576105536109e8565b9050602002013581526020019081526020015f206001015442116105b45760405162461bcd60e51b815260206004820152601860248201527714185e5b595b9d081a5cc81b9bdd08199a5b985b1a5e995960421b60448201526064016101da565b5f5f8787848181106105c8576105c86109e8565b9050602002013581526020019081526020015f205f01548282815181106105f1576105f16109e8565b60209081029190910101526001016104b6565b50949350505050565b5f828260405160200161063c92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f610665833361060d565b5f8181526020818152604091829020600181018690558054835190815291820186905292935083915f516020610a115f395f51905f5291015b60405180910390a250505050565b5f6106b7843361060d565b5f818152602081815260409182902086815560018101869055825187815291820186905292935083915f516020610a115f395f51905f52910160405180910390a25050505050565b5f61070a833361060d565b5f8181526020818152604091829020858155600181015483518781529283015292935083915f516020610a115f395f51905f52910161069e565b5f5f83601f840112610754575f5ffd5b50813567ffffffffffffffff81111561076b575f5ffd5b6020830191508360208260051b8501011115610785575f5ffd5b9250929050565b5f5f5f5f6040858703121561079f575f5ffd5b843567ffffffffffffffff8111156107b5575f5ffd5b6107c187828801610744565b909550935050602085013567ffffffffffffffff8111156107e0575f5ffd5b6107ec87828801610744565b95989497509550505050565b5f60208284031215610808575f5ffd5b5035919050565b5f5f5f5f5f5f60608789031215610824575f5ffd5b863567ffffffffffffffff81111561083a575f5ffd5b61084689828a01610744565b909750955050602087013567ffffffffffffffff811115610865575f5ffd5b61087189828a01610744565b909550935050604087013567ffffffffffffffff811115610890575f5ffd5b61089c89828a01610744565b979a9699509497509295939492505050565b5f5f5f604084860312156108c0575f5ffd5b833567ffffffffffffffff8111156108d6575f5ffd5b6108e286828701610744565b909790965060209590950135949350505050565b602080825282518282018190525f918401906040840190835b8181101561092d57835183526020938401939092019160010161090f565b509095945050505050565b5f5f60408385031215610949575f5ffd5b8235915060208301356001600160a01b0381168114610966575f5ffd5b809150509250929050565b5f5f60408385031215610982575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156109a3575f5ffd5b505081359360208301359350604090920135919050565b602080825260149082015273098cadccee8d0e640c8de40dcdee840dac2e8c6d60631b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffdfe9e9acc6d43d5d7bd6fa143ef0ee1d224cfe2bb010b7e3acf44878d6314ebc607a26469706673582212203cced7f1fffcb4a8fe2727e6f4a979b27be0afe943872776cb9b733f3702dc0864736f6c634300081e0033", } // PayRegistryABI is the input ABI used to generate the binding from. @@ -235,10 +236,10 @@ func (_PayRegistry *PayRegistryCallerSession) CalculatePayId(_payHash [32]byte, // GetPayAmounts is a free data retrieval call binding the contract method 0x7cac39cf. // -// Solidity: function getPayAmounts(bytes32[] _payIds, uint256 _lastPayResolveDeadline) view returns(uint256[]) -func (_PayRegistry *PayRegistryCaller) GetPayAmounts(opts *bind.CallOpts, _payIds [][32]byte, _lastPayResolveDeadline *big.Int) ([]*big.Int, error) { +// Solidity: function getPayAmounts(bytes32[] _payIds, uint256 _maxResolveDeadline) view returns(uint256[]) +func (_PayRegistry *PayRegistryCaller) GetPayAmounts(opts *bind.CallOpts, _payIds [][32]byte, _maxResolveDeadline *big.Int) ([]*big.Int, error) { var out []interface{} - err := _PayRegistry.contract.Call(opts, &out, "getPayAmounts", _payIds, _lastPayResolveDeadline) + err := _PayRegistry.contract.Call(opts, &out, "getPayAmounts", _payIds, _maxResolveDeadline) if err != nil { return *new([]*big.Int), err @@ -252,16 +253,16 @@ func (_PayRegistry *PayRegistryCaller) GetPayAmounts(opts *bind.CallOpts, _payId // GetPayAmounts is a free data retrieval call binding the contract method 0x7cac39cf. // -// Solidity: function getPayAmounts(bytes32[] _payIds, uint256 _lastPayResolveDeadline) view returns(uint256[]) -func (_PayRegistry *PayRegistrySession) GetPayAmounts(_payIds [][32]byte, _lastPayResolveDeadline *big.Int) ([]*big.Int, error) { - return _PayRegistry.Contract.GetPayAmounts(&_PayRegistry.CallOpts, _payIds, _lastPayResolveDeadline) +// Solidity: function getPayAmounts(bytes32[] _payIds, uint256 _maxResolveDeadline) view returns(uint256[]) +func (_PayRegistry *PayRegistrySession) GetPayAmounts(_payIds [][32]byte, _maxResolveDeadline *big.Int) ([]*big.Int, error) { + return _PayRegistry.Contract.GetPayAmounts(&_PayRegistry.CallOpts, _payIds, _maxResolveDeadline) } // GetPayAmounts is a free data retrieval call binding the contract method 0x7cac39cf. // -// Solidity: function getPayAmounts(bytes32[] _payIds, uint256 _lastPayResolveDeadline) view returns(uint256[]) -func (_PayRegistry *PayRegistryCallerSession) GetPayAmounts(_payIds [][32]byte, _lastPayResolveDeadline *big.Int) ([]*big.Int, error) { - return _PayRegistry.Contract.GetPayAmounts(&_PayRegistry.CallOpts, _payIds, _lastPayResolveDeadline) +// Solidity: function getPayAmounts(bytes32[] _payIds, uint256 _maxResolveDeadline) view returns(uint256[]) +func (_PayRegistry *PayRegistryCallerSession) GetPayAmounts(_payIds [][32]byte, _maxResolveDeadline *big.Int) ([]*big.Int, error) { + return _PayRegistry.Contract.GetPayAmounts(&_PayRegistry.CallOpts, _payIds, _maxResolveDeadline) } // GetPayInfo is a free data retrieval call binding the contract method 0x27b0e058. diff --git a/chain/channel-eth-go/payresolver/payresolver.go b/chain/channel-eth-go/payresolver/payresolver.go index 954e036..2d2066a 100644 --- a/chain/channel-eth-go/payresolver/payresolver.go +++ b/chain/channel-eth-go/payresolver/payresolver.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // PayResolverMetaData contains all meta data concerning the PayResolver contract. var PayResolverMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryAddr\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_virtResolverAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"payRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPayRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"resolvePaymentByConditions\",\"inputs\":[{\"name\":\"_resolvePayRequest\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resolvePaymentByVouchedResult\",\"inputs\":[{\"name\":\"_vouchedPayResult\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"virtResolver\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIVirtContractResolver\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"ResolvePayment\",\"inputs\":[{\"name\":\"payId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"resolveDeadline\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]", - Bin: "0x6080604052348015600e575f5ffd5b506040516124b93803806124b9833981016040819052602b916074565b5f80546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905560a0565b80516001600160a01b0381168114606f575f5ffd5b919050565b5f5f604083850312156084575f5ffd5b608b83605a565b9150609760208401605a565b90509250929050565b61240c806100ad5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634367e45e1461004e57806353fc513f146100635780635fff88c814610091578063ead54c1b146100a4575b5f5ffd5b61006161005c36600461217e565b6100b7565b005b5f54610075906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61006161009f36600461217e565b6101a7565b600154610075906001600160a01b031681565b5f6100f683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061037392505050565b90505f610105825f015161050e565b6080810151519091505f9081816005811115610123576101236121ec565b0361013d5761013683856020015161076a565b9150610189565b6001816005811115610151576101516121ec565b03610164576101368385602001516109ab565b61016d81610bfb565b156101815761013683856020015183610c4e565b610189612200565b8351805160209091012061019e8482856110b7565b50505050505050565b5f6101e683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506114e692505050565b90505f6101f5825f01516115a2565b90505f610204825f015161050e565b905080608001516020015160200151602001518260200151111561026f5760405162461bcd60e51b815260206004820152601a60248201527f457863656564206d6178207472616e7366657220616d6f756e7400000000000060448201526064015b60405180910390fd5b825180516020918201207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c8120918501516102b7908390611633565b90505f6102d186604001518461163390919063ffffffff16565b905083602001516001600160a01b0316826001600160a01b031614801561030d575083604001516001600160a01b0316816001600160a01b0316145b61034d5760405162461bcd60e51b815260206004820152601160248201527010da1958dac81cda59dcc819985a5b1959607a1b6044820152606401610266565b845180516020918201209086015161036890869083906110b7565b505050505050505050565b60408051808201909152606080825260208201525f6103a483604080518082019091525f8152602081019190915290565b90505f6103b282600261165b565b9050806002815181106103c7576103c7612214565b602002602001015167ffffffffffffffff8111156103e7576103e7612228565b60405190808252806020026020018201604052801561041a57816020015b60608152602001906001900390816104055790505b5083602001819052505f8160028151811061043757610437612214565b6020026020010181815250505f5f5b602084015151845110156105055761045d84611714565b90925090508160010361047a576104738461174c565b8552610446565b816002036104f65761048b8461174c565b8560200151846002815181106104a3576104a3612214565b6020026020010151815181106104bb576104bb612214565b6020026020010181905250826002815181106104d9576104d9612214565b6020026020010180518091906104ee90612250565b905250610446565b6105008482611804565b610446565b50505050919050565b610516612092565b604080518082019091525f8082526020820184905261053682600861165b565b90508060048151811061054b5761054b612214565b602002602001015167ffffffffffffffff81111561056b5761056b612228565b6040519080825280602002602001820160405280156105a457816020015b6105916120f2565b8152602001906001900390816105895790505b5083606001819052505f816004815181106105c1576105c1612214565b6020026020010181815250505f5f5b60208401515184511015610505576105e784611714565b909250905081600103610604576105fd84611879565b85526105d0565b816002036106305761061d6106188561174c565b6118e8565b6001600160a01b031660208601526105d0565b81600303610657576106446106188561174c565b6001600160a01b031660408601526105d0565b816004036106db5761067061066b8561174c565b6118f2565b85606001518460048151811061068857610688612214565b6020026020010151815181106106a0576106a0612214565b6020026020010181905250826004815181106106be576106be612214565b6020026020010180518091906106d390612250565b9052506105d0565b816005036106fe576106f46106ef8561174c565b611a2a565b60808601526105d0565b816006036107195761070f84611879565b60a08601526105d0565b816007036107345761072a84611879565b60c08601526105d0565b8160080361075b576107486106188561174c565b6001600160a01b031660e08601526105d0565b6107658482611804565b6105d0565b5f8080805b85606001515181101561097e575f8660600151828151811061079357610793612214565b602002602001015190505f60028111156107af576107af6121ec565b815160028111156107c2576107c26121ec565b0361081c5780602001518685815181106107de576107de612214565b6020026020010151805190602001201461080a5760405162461bcd60e51b815260040161026690612268565b8361081481612250565b945050610975565b600181516002811115610831576108316121ec565b148061084f575060028151600281111561084d5761084d6121ec565b145b1561096d575f61085e82611ae7565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda94916108939190600401612290565b602060405180830381865afa1580156108ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d291906122c5565b6108ee5760405162461bcd60e51b8152600401610266906122e4565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb9161091e9190600401612290565b602060405180830381865afa158015610939573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095d91906122c5565b61096657600194505b5050610975565b610975612200565b5060010161076f565b50801561098f575f925050506109a5565b8460800151602001516020015160200151925050505b92915050565b5f808080805b866060015151811015610bc5575f876060015182815181106109d5576109d5612214565b602002602001015190505f60028111156109f1576109f16121ec565b81516002811115610a0457610a046121ec565b03610a5e578060200151878681518110610a2057610a20612214565b60200260200101518051906020012014610a4c5760405162461bcd60e51b815260040161026690612268565b84610a5681612250565b955050610bbc565b600181516002811115610a7357610a736121ec565b1480610a915750600281516002811115610a8f57610a8f6121ec565b145b15610bb4575f610aa082611ae7565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda9491610ad59190600401612290565b602060405180830381865afa158015610af0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1491906122c5565b610b305760405162461bcd60e51b8152600401610266906122e4565b60a083015160405163ea4ba8eb60e01b8152600197506001600160a01b0383169163ea4ba8eb91610b649190600401612290565b602060405180830381865afa158015610b7f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba391906122c5565b15610bad57600194505b5050610bbc565b610bbc612200565b506001016109b1565b50811580610bd05750805b15610bf057856080015160200151602001516020015193505050506109a5565b5f93505050506109a5565b5f6003826005811115610c1057610c106121ec565b1480610c2d57506004826005811115610c2b57610c2b6121ec565b145b806109a557506005826005811115610c4757610c476121ec565b1492915050565b5f808080805b876060015151811015611027575f88606001518281518110610c7857610c78612214565b602002602001015190505f6002811115610c9457610c946121ec565b81516002811115610ca757610ca76121ec565b03610d01578060200151888581518110610cc357610cc3612214565b60200260200101518051906020012014610cef5760405162461bcd60e51b815260040161026690612268565b83610cf981612250565b94505061101e565b600181516002811115610d1657610d166121ec565b1480610d345750600281516002811115610d3257610d326121ec565b145b15611016575f610d4382611ae7565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda9491610d789190600401612290565b602060405180830381865afa158015610d93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db791906122c5565b610dd35760405162461bcd60e51b8152600401610266906122e4565b6003896005811115610de757610de76121ec565b03610e6c5760a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610e1c9190600401612290565b602060405180830381865afa158015610e37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5b919061231b565b610e659088612332565b965061100b565b6004896005811115610e8057610e806121ec565b03610efd57610e6587826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610eb99190612290565b602060405180830381865afa158015610ed4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef8919061231b565b611bdb565b6005896005811115610f1157610f116121ec565b03611003578415610f9457610e6587826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610f509190612290565b602060405180830381865afa158015610f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8f919061231b565b611bea565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610fc49190600401612290565b602060405180830381865afa158015610fdf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e65919061231b565b61100b612200565b60019450505061101e565b61101e612200565b50600101610c54565b50801561109957866080015160200151602001516020015183111561108e5760405162461bcd60e51b815260206004820152601a60248201527f457863656564206d6178207472616e7366657220616d6f756e740000000000006044820152606401610266565b8293505050506110b0565b866080015160200151602001516020015193505050505b9392505050565b60a083015142908111156111205760405162461bcd60e51b815260206004820152602a60248201527f50617373656420706179207265736f6c766520646561646c696e6520696e20636044820152696f6e64506179206d736760b01b6064820152608401610266565b5f61112b8430611bf9565b5f80546040516304f61c0b60e31b815260048101849052929350909182916001600160a01b0316906327b0e058906024016040805180830381865afa158015611176573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119a9190612345565b91509150805f14806111ac5750808411155b6112045760405162461bcd60e51b815260206004820152602360248201527f506173736564206f6e636861696e207265736f6c76652070617920646561646c604482015262696e6560e81b6064820152608401610266565b80156113ae578185116112595760405162461bcd60e51b815260206004820152601860248201527f4e657720616d6f756e74206973206e6f74206c617267657200000000000000006044820152606401610266565b86608001516020015160200151602001518503611317575f54604051630e1e354960e41b81526004810188905260248101879052604481018690526001600160a01b039091169063e1e35490906064015f604051808303815f87803b1580156112c0575f5ffd5b505af11580156112d2573d5f5f3e3d5ffd5b505060408051888152602081018890528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb179250015b60405180910390a261019e565b5f5460405163f8fb012f60e01b815260048101889052602481018790526001600160a01b039091169063f8fb012f906044015f604051808303815f87803b158015611360575f5ffd5b505af1158015611372573d5f5f3e3d5ffd5b505060408051888152602081018590528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb1792500161130a565b5f876080015160200151602001516020015186036113cd57508361143b565b6113ea8860c00151866113e09190612332565b8960a00151611bea565b90505f811161143b5760405162461bcd60e51b815260206004820152601960248201527f4e6577207265736f6c766520646561646c696e652069732030000000000000006044820152606401610266565b5f54604051630e1e354960e41b81526004810189905260248101889052604481018390526001600160a01b039091169063e1e35490906064015f604051808303815f87803b15801561148b575f5ffd5b505af115801561149d573d5f5f3e3d5ffd5b505060408051898152602081018590528793507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb1792500160405180910390a25050505050505050565b61150a60405180606001604052806060815260200160608152602001606081525090565b604080518082019091525f80825260208201849052805b6020830151518351101561159a5761153883611714565b9092509050816001036115555761154e8361174c565b8452611521565b81600203611570576115668361174c565b6020850152611521565b8160030361158b576115818361174c565b6040850152611521565b6115958382611804565b611521565b505050919050565b604080518082018252606081525f602080830182905283518085019094528184528301849052909190805b6020830151518351101561159a576115e483611714565b909250905081600103611601576115fa8361174c565b84526115cd565b816002036116245761161a6116158461174c565b611c46565b60208501526115cd565b61162e8382611804565b6115cd565b5f5f5f5f6116418686611c7b565b9250925092506116518282611cc4565b5090949350505050565b815160609061166b836001612332565b67ffffffffffffffff81111561168357611683612228565b6040519080825280602002602001820160405280156116ac578160200160208202803683370190505b5091505f5f5b6020860151518651101561170b576116c986611714565b809250819350505060018483815181106116e5576116e5612214565b602002602001018181516116f99190612332565b9052506117068682611804565b6116b2565b50509092525090565b5f5f5f61172084611879565b905061172d600882612367565b9250806007166005811115611744576117446121ec565b915050915091565b60605f61175883611879565b90505f81845f015161176a9190612332565b905083602001515181111561177d575f5ffd5b8167ffffffffffffffff81111561179657611796612228565b6040519080825280601f01601f1916602001820160405280156117c0576020820181803683370190505b5060208086015186519295509181860191908301015f5b858110156117f95781810151838201526117f2602082612332565b90506117d7565b505050935250919050565b5f816005811115611817576118176121ec565b0361182a5761182582611879565b505050565b600281600581111561183e5761183e6121ec565b0361004a575f61184d83611879565b905080835f018181516118609190612332565b90525060208301515183511115611825575f5ffd5b5050565b60208082015182518101909101515f9182805b600a81101561004a5783811a91506118a5816007612386565b82607f16901b85179450816080165f036118e0576118c4816001612332565b865187906118d3908390612332565b9052509395945050505050565b60010161188c565b5f6109a582611d7c565b6118fa6120f2565b604080518082019091525f80825260208201849052805b6020830151518351101561159a5761192883611714565b90925090508160010361197d5761193e83611879565b600281111561194f5761194f6121ec565b84906002811115611962576119626121ec565b90816002811115611975576119756121ec565b905250611911565b816002036119a0576119966119918461174c565b611d99565b6020850152611911565b816003036119c7576119b46106188461174c565b6001600160a01b03166040850152611911565b816004036119e5576119db6119918461174c565b6060850152611911565b81600503611a00576119f68361174c565b6080850152611911565b81600603611a1b57611a118361174c565b60a0850152611911565b611a258382611804565b611911565b611a3261212e565b604080518082019091525f80825260208201849052805b6020830151518351101561159a57611a6083611714565b909250905081600103611ab557611a7683611879565b6005811115611a8757611a876121ec565b84906005811115611a9a57611a9a6121ec565b90816005811115611aad57611aad6121ec565b905250611a49565b81600203611ad857611ace611ac98461174c565b611daf565b6020850152611a49565b611ae28382611804565b611a49565b5f600182516002811115611afd57611afd6121ec565b03611b0a57506040015190565b600282516002811115611b1f57611b1f6121ec565b03611b9a576001546060830151604051635c23bdf560e01b81526001600160a01b0390921691635c23bdf591611b5b9160040190815260200190565b602060405180830381865afa158015611b76573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061239d565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6e646974696f6e207479706560501b6044820152606401610266565b5f8282188284110282186110b0565b5f8282188284100282186110b0565b5f8282604051602001611c2892919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f602082511115611c55575f5ffd5b6020820151905081516020611c6a91906123c3565b611c75906008612386565b1c919050565b5f5f5f8351604103611cb2576020840151604085015160608601515f1a611ca488828585611e65565b955095509550505050611cbd565b505081515f91506002905b9250925092565b5f826003811115611cd757611cd76121ec565b03611ce0575050565b6001826003811115611cf457611cf46121ec565b03611d125760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611d2657611d266121ec565b03611d475760405163fce698f760e01b815260048101829052602401610266565b6003826003811115611d5b57611d5b6121ec565b03611875576040516335e2f38360e21b815260048101829052602401610266565b5f8151601414611d8a575f5ffd5b5060200151600160601b900490565b5f8151602014611da7575f5ffd5b506020015190565b604080516080810182525f8183018181526060830182905282528251808401845281815260208082018390528084019190915283518085019094528184528301849052909190805b6020830151518351101561159a57611e0e83611714565b909250905081600103611e3357611e2c611e278461174c565b611f2d565b8452611df7565b81600203611e5657611e4c611e478461174c565b611ffb565b6020850152611df7565b611e608382611804565b611df7565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611e9e57505f91506003905082611f23565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611eef573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611f1a57505f925060019150829050611f23565b92505f91508190505b9450945094915050565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5f5b6020830151518351101561159a57611f7083611714565b909250905081600103611fc557611f8683611879565b6002811115611f9757611f976121ec565b84906002811115611faa57611faa6121ec565b90816002811115611fbd57611fbd6121ec565b905250611f59565b81600203611fec57611fd96106188461174c565b6001600160a01b03166020850152611f59565b611ff68382611804565b611f59565b6040805180820182525f808252602080830182905283518085019094528184528301849052909190805b6020830151518351101561159a5761203c83611714565b909250905081600103612065576120556106188461174c565b6001600160a01b03168452612025565b81600203612083576120796116158461174c565b6020850152612025565b61208d8382611804565b612025565b6040518061010001604052805f81526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020016120d161212e565b81526020015f81526020015f81526020015f6001600160a01b031681525090565b6040805160c08101909152805f81526020015f81526020015f6001600160a01b031681526020015f815260200160608152602001606081525090565b60408051808201909152805f8152602001612179604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b905290565b5f5f6020838503121561218f575f5ffd5b823567ffffffffffffffff8111156121a5575f5ffd5b8301601f810185136121b5575f5ffd5b803567ffffffffffffffff8111156121cb575f5ffd5b8560208284010111156121dc575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016122615761226161223c565b5060010190565b6020808252600e908201526d57726f6e6720707265696d61676560901b604082015260600190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156122d5575f5ffd5b815180151581146110b0575f5ffd5b6020808252601a908201527f436f6e646974696f6e206973206e6f742066696e616c697a6564000000000000604082015260600190565b5f6020828403121561232b575f5ffd5b5051919050565b808201808211156109a5576109a561223c565b5f5f60408385031215612356575f5ffd5b505080516020909101519092909150565b5f8261238157634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176109a5576109a561223c565b5f602082840312156123ad575f5ffd5b81516001600160a01b03811681146110b0575f5ffd5b818103818111156109a5576109a561223c56fea26469706673582212208f1004bf702ea90805aa2480ee6a8286b55ec76d95408c5915a5b753208bb2e264736f6c634300081e0033", + Bin: "0x6080604052348015600e575f5ffd5b50604051612456380380612456833981016040819052602b916074565b5f80546001600160a01b039384166001600160a01b0319918216179091556001805492909316911617905560a0565b80516001600160a01b0381168114606f575f5ffd5b919050565b5f5f604083850312156084575f5ffd5b608b83605a565b9150609760208401605a565b90509250929050565b6123a9806100ad5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634367e45e1461004e57806353fc513f146100635780635fff88c814610091578063ead54c1b146100a4575b5f5ffd5b61006161005c366004612145565b6100b7565b005b5f54610075906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61006161009f366004612145565b6101a7565b600154610075906001600160a01b031681565b5f6100f683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061037392505050565b90505f610105825f0151610488565b6080810151519091505f9081816005811115610123576101236121b3565b0361013d57610136838560200151610668565b9150610189565b6001816005811115610151576101516121b3565b03610164576101368385602001516108a9565b61016d81610af9565b156101815761013683856020015183610b4c565b6101896121c7565b8351805160209091012061019e848285610fb5565b50505050505050565b5f6101e683838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061148692505050565b90505f6101f5825f0151611552565b90505f610204825f0151610488565b905080608001516020015160200151602001518260200151111561026f5760405162461bcd60e51b815260206004820152601a60248201527f457863656564206d6178207472616e7366657220616d6f756e7400000000000060448201526064015b60405180910390fd5b825180516020918201207f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c8120918501516102b79083906115e5565b90505f6102d18660400151846115e590919063ffffffff16565b905083602001516001600160a01b0316826001600160a01b031614801561030d575083604001516001600160a01b0316816001600160a01b0316145b61034d5760405162461bcd60e51b815260206004820152601160248201527010da1958dac81cda59dcc819985a5b1959607a1b6044820152606401610266565b84518051602091820120908601516103689086908390610fb5565b505050505050505050565b60408051808201909152606080825260208201525f6103a483604080518082019091525f8152602081019190915290565b90505f600284516103b591906121ef565b67ffffffffffffffff8111156103cd576103cd61220e565b6040519080825280602002602001820160405280156103f6578160200160208202803683370190505b5090505f805b6020840151518451101561047a576104138461160d565b905080600a0361042d576104268461167c565b85526103fc565b80601203610456575f61043f8561167c565b600584901b850160200152506001909101906103fc565b61047581600716600581111561046e5761046e6121b3565b859061171f565b6103fc565b508152602083015250919050565b61049061208f565b604080518082019091525f8082526020820184905283516104b3906002906121ef565b67ffffffffffffffff8111156104cb576104cb61220e565b6040519080825280602002602001820160405280156104f4578160200160208202803683370190505b5090505f805b6020840151518451101561065a576105118461160d565b90508060080361052b576105248461160d565b85526104fa565b8060120361054f5761053c846117ff565b6001600160a01b031660208601526104fa565b80601a0361057357610560846117ff565b6001600160a01b031660408601526104fa565b806022036105a4575f61058d6105888661167c565b61185d565b600584901b850160200152506001909101906104fa565b80602a036105c7576105bd6105b88561167c565b6119c8565b60808601526104fa565b806030036105e2576105d88461160d565b60a08601526104fa565b806038036105fd576105f38461160d565b60c08601526104fa565b806042036106215761060e846117ff565b6001600160a01b031660e08601526104fa565b8060480361063d576106328461160d565b6101008601526104fa565b61065581600716600581111561046e5761046e6121b3565b6104fa565b508152606083015250919050565b5f8080805b85606001515181101561087c575f8660600151828151811061069157610691612222565b602002602001015190505f60028111156106ad576106ad6121b3565b815160028111156106c0576106c06121b3565b0361071a5780602001518685815181106106dc576106dc612222565b602002602001015180519060200120146107085760405162461bcd60e51b815260040161026690612236565b836107128161225e565b945050610873565b60018151600281111561072f5761072f6121b3565b148061074d575060028151600281111561074b5761074b6121b3565b145b1561086b575f61075c82611a8f565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda94916107919190600401612276565b602060405180830381865afa1580156107ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d091906122ab565b6107ec5760405162461bcd60e51b8152600401610266906122ca565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb9161081c9190600401612276565b602060405180830381865afa158015610837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085b91906122ab565b61086457600194505b5050610873565b6108736121c7565b5060010161066d565b50801561088d575f925050506108a3565b8460800151602001516020015160200151925050505b92915050565b5f808080805b866060015151811015610ac3575f876060015182815181106108d3576108d3612222565b602002602001015190505f60028111156108ef576108ef6121b3565b81516002811115610902576109026121b3565b0361095c57806020015187868151811061091e5761091e612222565b6020026020010151805190602001201461094a5760405162461bcd60e51b815260040161026690612236565b846109548161225e565b955050610aba565b600181516002811115610971576109716121b3565b148061098f575060028151600281111561098d5761098d6121b3565b145b15610ab2575f61099e82611a8f565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda94916109d39190600401612276565b602060405180830381865afa1580156109ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1291906122ab565b610a2e5760405162461bcd60e51b8152600401610266906122ca565b60a083015160405163ea4ba8eb60e01b8152600197506001600160a01b0383169163ea4ba8eb91610a629190600401612276565b602060405180830381865afa158015610a7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa191906122ab565b15610aab57600194505b5050610aba565b610aba6121c7565b506001016108af565b50811580610ace5750805b15610aee57856080015160200151602001516020015193505050506108a3565b5f93505050506108a3565b5f6003826005811115610b0e57610b0e6121b3565b1480610b2b57506004826005811115610b2957610b296121b3565b145b806108a357506005826005811115610b4557610b456121b3565b1492915050565b5f808080805b876060015151811015610f25575f88606001518281518110610b7657610b76612222565b602002602001015190505f6002811115610b9257610b926121b3565b81516002811115610ba557610ba56121b3565b03610bff578060200151888581518110610bc157610bc1612222565b60200260200101518051906020012014610bed5760405162461bcd60e51b815260040161026690612236565b83610bf78161225e565b945050610f1c565b600181516002811115610c1457610c146121b3565b1480610c325750600281516002811115610c3057610c306121b3565b145b15610f14575f610c4182611a8f565b6080830151604051632f36f6a560e21b815291925082916001600160a01b0383169163bcdbda9491610c769190600401612276565b602060405180830381865afa158015610c91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb591906122ab565b610cd15760405162461bcd60e51b8152600401610266906122ca565b6003896005811115610ce557610ce56121b3565b03610d6a5760a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610d1a9190600401612276565b602060405180830381865afa158015610d35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d599190612301565b610d639088612318565b9650610f09565b6004896005811115610d7e57610d7e6121b3565b03610dfb57610d6387826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610db79190612276565b602060405180830381865afa158015610dd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190612301565b611b83565b6005896005811115610e0f57610e0f6121b3565b03610f01578415610e9257610d6387826001600160a01b031663ea4ba8eb8660a001516040518263ffffffff1660e01b8152600401610e4e9190612276565b602060405180830381865afa158015610e69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8d9190612301565b611b92565b60a083015160405163ea4ba8eb60e01b81526001600160a01b0383169163ea4ba8eb91610ec29190600401612276565b602060405180830381865afa158015610edd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d639190612301565b610f096121c7565b600194505050610f1c565b610f1c6121c7565b50600101610b52565b508015610f97578660800151602001516020015160200151831115610f8c5760405162461bcd60e51b815260206004820152601a60248201527f457863656564206d6178207472616e7366657220616d6f756e740000000000006044820152606401610266565b829350505050610fae565b866080015160200151602001516020015193505050505b9392505050565b46836101000151146110025760405162461bcd60e51b815260206004820152601660248201527557726f6e6720636861696e20696420666f722070617960501b6044820152606401610266565b60e08301516001600160a01b031630146110575760405162461bcd60e51b815260206004820152601660248201527557726f6e67207265736f6c76657220666f722070617960501b6044820152606401610266565b60a083015142908111156110c05760405162461bcd60e51b815260206004820152602a60248201527f50617373656420706179207265736f6c766520646561646c696e6520696e20636044820152696f6e64506179206d736760b01b6064820152608401610266565b5f6110cb8430611ba1565b5f80546040516304f61c0b60e31b815260048101849052929350909182916001600160a01b0316906327b0e058906024016040805180830381865afa158015611116573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113a919061232b565b91509150805f148061114c5750808411155b6111a45760405162461bcd60e51b815260206004820152602360248201527f506173736564206f6e636861696e207265736f6c76652070617920646561646c604482015262696e6560e81b6064820152608401610266565b801561134e578185116111f95760405162461bcd60e51b815260206004820152601860248201527f4e657720616d6f756e74206973206e6f74206c617267657200000000000000006044820152606401610266565b866080015160200151602001516020015185036112b7575f54604051630e1e354960e41b81526004810188905260248101879052604481018690526001600160a01b039091169063e1e35490906064015f604051808303815f87803b158015611260575f5ffd5b505af1158015611272573d5f5f3e3d5ffd5b505060408051888152602081018890528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb179250015b60405180910390a261019e565b5f5460405163f8fb012f60e01b815260048101889052602481018790526001600160a01b039091169063f8fb012f906044015f604051808303815f87803b158015611300575f5ffd5b505af1158015611312573d5f5f3e3d5ffd5b505060408051888152602081018590528693507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb179250016112aa565b5f8760800151602001516020015160200151860361136d5750836113db565b61138a8860c00151866113809190612318565b8960a00151611b92565b90505f81116113db5760405162461bcd60e51b815260206004820152601960248201527f4e6577207265736f6c766520646561646c696e652069732030000000000000006044820152606401610266565b5f54604051630e1e354960e41b81526004810189905260248101889052604481018390526001600160a01b039091169063e1e35490906064015f604051808303815f87803b15801561142b575f5ffd5b505af115801561143d573d5f5f3e3d5ffd5b505060408051898152602081018590528793507fa87e293885636c5018108e8ee0e41d65206d1dfc0a9066f26f2a91a78b2beb1792500160405180910390a25050505050505050565b6114aa60405180606001604052806060815260200160608152602001606081525090565b604080518082019091525f808252602082018490525b6020820151518251101561154b576114d78261160d565b905080600a036114f1576114ea8261167c565b83526114c0565b8060120361150c576115028261167c565b60208401526114c0565b80601a036115275761151d8261167c565b60408401526114c0565b61154681600716600581111561153f5761153f6121b3565b839061171f565b6114c0565b5050919050565b604080518082018252606081525f6020808301829052835180850190945281845283018490529091905b6020820151518251101561154b576115938261160d565b905080600a036115ad576115a68261167c565b835261157c565b806012036115c8576115be82611bee565b602084015261157c565b6115e081600716600581111561153f5761153f6121b3565b61157c565b5f5f5f5f6115f38686611c44565b9250925092506116038282611c8d565b5090949350505050565b602080820151825181515f938301845b600a81101561004a57828410611631575f5ffd5b838201515f1a607f8116600783021b9690961795600190940193608081101561167357816009036116685760028110611668575f5ffd5b505050935250919050565b5060010161161d565b60605f6116888361160d565b90505f81845f015161169a9190612318565b90508360200151518111156116ad575f5ffd5b8167ffffffffffffffff8111156116c6576116c661220e565b6040519080825280601f01601f1916602001820160405280156116f0576020820181803683370190505b5060208086015186519295509181860191908301015f5b85811015611668578181015183820152602001611707565b5f816005811115611732576117326121b3565b03611745576117408261160d565b505050565b6002816005811115611759576117596121b3565b03611790575f6117688361160d565b905080835f0181815161177b9190612318565b90525060208301515183511115611740575f5ffd5b60018160058111156117a4576117a46121b3565b036117d4576008825f018181516117bb9190612318565b905250602082015151825111156117d0575f5ffd5b5050565b60058160058111156117e8576117e86121b3565b0361004a576004825f018181516117bb9190612318565b5f5f61180a8361160d565b905080601414611818575f5ffd5b825160208401515161182b826014612318565b1115611835575f5ffd5b6020808501518281019091015160601c9350611852826014612318565b909452509092915050565b61189c6040805160c08101909152805f81526020015f81526020015f6001600160a01b031681526020015f815260200160608152602001606081525090565b604080518082019091525f808252602082018490525b6020820151518251101561154b576118c98261160d565b90508060080361191b576118dc8261160d565b60028111156118ed576118ed6121b3565b83906002811115611900576119006121b3565b90816002811115611913576119136121b3565b9052506118b2565b806012036119365761192c82611d45565b60208401526118b2565b80601a0361195a57611947826117ff565b6001600160a01b031660408401526118b2565b806022036119755761196b82611d45565b60608401526118b2565b80602a03611990576119868261167c565b60808401526118b2565b806032036119ab576119a18261167c565b60a08401526118b2565b6119c381600716600581111561153f5761153f6121b3565b6118b2565b6119d06120f5565b604080518082019091525f808252602082018490525b6020820151518251101561154b576119fd8261160d565b905080600803611a4f57611a108261160d565b6005811115611a2157611a216121b3565b83906005811115611a3457611a346121b3565b90816005811115611a4757611a476121b3565b9052506119e6565b80601203611a7257611a68611a638361167c565b611d97565b60208401526119e6565b611a8a81600716600581111561153f5761153f6121b3565b6119e6565b5f600182516002811115611aa557611aa56121b3565b03611ab257506040015190565b600282516002811115611ac757611ac76121b3565b03611b42576001546060830151604051635c23bdf560e01b81526001600160a01b0390921691635c23bdf591611b039160040190815260200190565b602060405180830381865afa158015611b1e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a3919061234d565b60405162461bcd60e51b8152602060048201526016602482015275496e76616c696420636f6e646974696f6e207479706560501b6044820152606401610266565b5f828218828411028218610fae565b5f828218828410028218610fae565b5f8282604051602001611bd092919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60405160208183030381529060405280519060200120905092915050565b5f5f611bf98361160d565b90506020811115611c08575f5ffd5b82515f611c158383612318565b9050846020015151811115611c28575f5ffd5b602080860151929092018201519452036008029190911c919050565b5f5f5f8351604103611c7b576020840151604085015160608601515f1a611c6d88828585611e57565b955095509550505050611c86565b505081515f91506002905b9250925092565b5f826003811115611ca057611ca06121b3565b03611ca9575050565b6001826003811115611cbd57611cbd6121b3565b03611cdb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611cef57611cef6121b3565b03611d105760405163fce698f760e01b815260048101829052602401610266565b6003826003811115611d2457611d246121b3565b036117d0576040516335e2f38360e21b815260048101829052602401610266565b5f5f611d508361160d565b905080602014611d5e575f5ffd5b82516020808501515190611d73908390612318565b1115611d7d575f5ffd5b602080850151828101820151945090611852908390612318565b604080516080810182525f81830181815260608301829052825282518084018452818152602080820183905280840191909152835180850190945281845283018490529091905b6020820151518251101561154b57611df58261160d565b905080600a03611e1757611e10611e0b8361167c565b611f1f565b8352611dde565b80601203611e3a57611e30611e2b8361167c565b611ff4565b6020840152611dde565b611e5281600716600581111561153f5761153f6121b3565b611dde565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611e9057505f91506003905082611f15565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611ee1573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611f0c57505f925060019150829050611f15565b92505f91508190505b9450945094915050565b604080518082019091525f8082526020820152604080518082019091525f80825260208201849052505f5b6020820151518251101561154b57611f618261160d565b905080600803611fb357611f748261160d565b6002811115611f8557611f856121b3565b83906002811115611f9857611f986121b3565b90816002811115611fab57611fab6121b3565b905250611f4a565b80601203611fd757611fc4826117ff565b6001600160a01b03166020840152611f4a565b611fef81600716600581111561153f5761153f6121b3565b611f4a565b6040805180820182525f8082526020808301829052835180850190945281845283018490529091905b6020820151518251101561154b576120348261160d565b905080600a0361205757612047826117ff565b6001600160a01b0316835261201d565b806012036120725761206882611bee565b602084015261201d565b61208a81600716600581111561153f5761153f6121b3565b61201d565b6040518061012001604052805f81526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081526020016120ce6120f5565b81526020015f81526020015f81526020015f6001600160a01b031681526020015f81525090565b60408051808201909152805f8152602001612140604080516080810182525f818301818152606083018290528252825180840190935280835260208381019190915290919082015290565b905290565b5f5f60208385031215612156575f5ffd5b823567ffffffffffffffff81111561216c575f5ffd5b8301601f8101851361217c575f5ffd5b803567ffffffffffffffff811115612192575f5ffd5b8560208284010111156121a3575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261220957634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b6020808252600e908201526d57726f6e6720707265696d61676560901b604082015260600190565b5f6001820161226f5761226f6121db565b5060010190565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156122bb575f5ffd5b81518015158114610fae575f5ffd5b6020808252601a908201527f436f6e646974696f6e206973206e6f742066696e616c697a6564000000000000604082015260600190565b5f60208284031215612311575f5ffd5b5051919050565b808201808211156108a3576108a36121db565b5f5f6040838503121561233c575f5ffd5b505080516020909101519092909150565b5f6020828403121561235d575f5ffd5b81516001600160a01b0381168114610fae575f5ffdfea2646970667358221220a8c07b263b6ef2ce5a72a6ca7d11bd36160af460a7ef3c862866bc38a736915464736f6c634300081e0033", } // PayResolverABI is the input ABI used to generate the binding from. diff --git a/chain/channel-eth-go/routerregistry/routerregistry.go b/chain/channel-eth-go/routerregistry/routerregistry.go index bbc4151..5835e0b 100644 --- a/chain/channel-eth-go/routerregistry/routerregistry.go +++ b/chain/channel-eth-go/routerregistry/routerregistry.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. diff --git a/chain/channel-eth-go/virtresolver/virtresolver.go b/chain/channel-eth-go/virtresolver/virtresolver.go index 0aca591..fc2ff70 100644 --- a/chain/channel-eth-go/virtresolver/virtresolver.go +++ b/chain/channel-eth-go/virtresolver/virtresolver.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. diff --git a/chain/channel-eth-go/wallet/wallet.go b/chain/channel-eth-go/wallet/wallet.go index 0f43b2e..ebf8681 100644 --- a/chain/channel-eth-go/wallet/wallet.go +++ b/chain/channel-eth-go/wallet/wallet.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. @@ -32,7 +33,7 @@ var ( // CelerWalletMetaData contains all meta data concerning the CelerWallet contract. var CelerWalletMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"create\",\"inputs\":[{\"name\":\"_owners\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_nonce\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositERC20\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositETH\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"drainToken\",\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getBalance\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProposalVote\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getProposedNewOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWalletOwners\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposeNewOperator\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_newOperator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOperatorship\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_newOperator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferToWallet\",\"inputs\":[{\"name\":\"_fromWalletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_toWalletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"walletNum\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_walletId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_tokenAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_receiver\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChangeOperator\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"oldOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CreateWallet\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"owners\",\"type\":\"address[]\",\"indexed\":true,\"internalType\":\"address[]\"},{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DepositToWallet\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DrainToken\",\"inputs\":[{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ProposeNewOperator\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"newOperator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"proposer\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferToWallet\",\"inputs\":[{\"name\":\"fromWalletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"toWalletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawFromWallet\",\"inputs\":[{\"name\":\"walletId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"EnforcedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ExpectedPause\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b506097565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b611546806100a45f395ff3fe60806040526004361061011b575f3560e01c80638456cb591161009d578063bfa2c1d211610062578063bfa2c1d214610334578063c108bb4014610353578063cafd460014610372578063d68d9d4e14610391578063f2fde38b146103a4575f5ffd5b80638456cb591461028a5780638da5cb5b1461029e5780638e0cc176146102bf578063a0c89a8c146102de578063a96a5f94146102fd575f5ffd5b80633f4ba83a116100e35780633f4ba83a14610202578063530e931c146102165780635c975abb14610235578063715018a61461025757806380ba952e1461026b575f5ffd5b80630d63a1fd1461011f57806314da2906146101515780631687cc60146101a0578063323c4480146101cc57806336cc9e8d146101ed575b5f5ffd5b34801561012a575f5ffd5b5061013e61013936600461112d565b6103c3565b6040519081526020015b60405180910390f35b34801561015c575f5ffd5b5061018861016b366004611213565b5f908152600260205260409020600301546001600160a01b031690565b6040516001600160a01b039091168152602001610148565b3480156101ab575f5ffd5b506101bf6101ba366004611213565b61053a565b604051610148919061122a565b3480156101d7575f5ffd5b506101eb6101e6366004611275565b6105a3565b005b3480156101f8575f5ffd5b5061013e60015481565b34801561020d575f5ffd5b506101eb6106b2565b348015610221575f5ffd5b5061013e610230366004611275565b6106c4565b348015610240575f5ffd5b505f5460ff165b6040519015158152602001610148565b348015610262575f5ffd5b506101eb6106ef565b348015610276575f5ffd5b506101eb61028536600461129f565b610700565b348015610295575f5ffd5b506101eb610801565b3480156102a9575f5ffd5b505f5461010090046001600160a01b0316610188565b3480156102ca575f5ffd5b506101eb6102d93660046112e9565b610811565b3480156102e9575f5ffd5b506101eb6102f8366004611275565b6108ea565b348015610308575f5ffd5b50610188610317366004611213565b5f908152600260205260409020600101546001600160a01b031690565b34801561033f575f5ffd5b506101eb61034e36600461132a565b61093b565b34801561035e575f5ffd5b506101eb61036d366004611353565b6109a3565b34801561037d575f5ffd5b5061024761038c366004611275565b610a10565b6101eb61039f366004611213565b610a6a565b3480156103af575f5ffd5b506101eb6103be366004611375565b610aba565b5f6103cc610af7565b6001600160a01b0383166103fb5760405162461bcd60e51b81526004016103f290611395565b60405180910390fd5b6040516bffffffffffffffffffffffff1930606090811b8216602084015233901b166034820152604881018390525f9060680160408051601f1981840301815291815281516020928301205f818152600290935291206001810154919250906001600160a01b0316156104a55760405162461bcd60e51b815260206004820152601260248201527113d8d8dd5c1a5959081dd85b1b195d081a5960721b60448201526064016103f2565b85516104b79082906020890190611087565b50600181810180546001600160a01b0319166001600160a01b0388161790558054905f6104e3836113e0565b9190505550846001600160a01b03168660405161050091906113f8565b6040519081900381209084907fe778e91533ef049a5fc99752bc4efb2b50ca4c967dfc0d4bb4782fb128070c34905f90a450949350505050565b5f8181526002602090815260409182902080548351818402810184019094528084526060939283018282801561059757602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610579575b50505050509050919050565b81336105af8282610b1a565b6105cb5760405162461bcd60e51b81526004016103f290611436565b6001600160a01b0383166105f15760405162461bcd60e51b81526004016103f290611395565b5f84815260026020526040902060038101546001600160a01b0385811691161461063c5761061e81610b81565b6003810180546001600160a01b0319166001600160a01b0386161790555b335f818152600483016020526040808220805460ff19166001179055516001600160a01b0387169188917f71f9e7796b33cb192d1670169ee7f4af7c5364f8f01bab4b95466787593745c39190a461069381610be5565b156106ab576106a28585610c52565b6106ab81610b81565b5050505050565b6106ba610cde565b6106c2610d10565b565b5f8281526002602081815260408084206001600160a01b038616855290920190529020545b92915050565b6106f7610cde565b6106c25f610d61565b610708610af7565b5f8581526002602052604090206001015485906001600160a01b031633146107425760405162461bcd60e51b81526004016103f290611477565b858361074e8282610b1a565b61076a5760405162461bcd60e51b81526004016103f290611436565b86856107768282610b1a565b6107925760405162461bcd60e51b81526004016103f290611436565b61079f8a89886001610db9565b6107ab8989885f610db9565b604080516001600160a01b038981168252602082018990528a16918b918d917f1b56f805e5edb1e61b0d3f46feffdcbab5e591aa0e70e978ada9fc22093601c8910160405180910390a450505050505050505050565b610809610cde565b6106c2610e68565b610819610af7565b5f8481526002602052604090206001015484906001600160a01b031633146108535760405162461bcd60e51b81526004016103f290611477565b848361085f8282610b1a565b61087b5760405162461bcd60e51b81526004016103f290611436565b6108888787866001610db9565b846001600160a01b0316866001600160a01b0316887fd897e862036b62a0f770979fbd2227f3210565bba2eb4d9acd1dc8ccc00c928b876040516108ce91815260200190565b60405180910390a46108e1868686610ea4565b50505050505050565b6108f2610af7565b5f8281526002602052604090206001015482906001600160a01b0316331461092c5760405162461bcd60e51b81526004016103f290611477565b6109368383610c52565b505050565b610943610f61565b61094b610cde565b816001600160a01b0316836001600160a01b03167f896ecb17b26927fb33933fc5f413873193bced3c59fe736c42968a9778bf6b588360405161099091815260200190565b60405180910390a3610936838383610ea4565b6109ab610af7565b6109b78383835f610db9565b816001600160a01b0316837fbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a836040516109f391815260200190565b60405180910390a36109366001600160a01b038316333084610f83565b5f8282610a1d8282610b1a565b610a395760405162461bcd60e51b81526004016103f290611436565b5050505f9182526002602090815260408084206001600160a01b039390931684526004909201905290205460ff1690565b610a72610af7565b34610a7f825f8381610db9565b6040518181525f9083907fbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a9060200160405180910390a35050565b610ac2610cde565b6001600160a01b038116610aeb57604051631e4fbdf760e01b81525f60048201526024016103f2565b610af481610d61565b50565b5f5460ff16156106c25760405163d93c066560e01b815260040160405180910390fd5b5f828152600260205260408120815b8154811015610b7757815f018181548110610b4657610b466114ae565b5f918252602090912001546001600160a01b0390811690851603610b6f576001925050506106e9565b600101610b29565b505f949350505050565b5f5b8154811015610be1575f826004015f845f018481548110610ba657610ba66114ae565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610b83565b5050565b5f805b8254811015610c4957826004015f845f018381548110610c0a57610c0a6114ae565b5f9182526020808320909101546001600160a01b0316835282019290925260400181205460ff1615159003610c4157505f92915050565b600101610be8565b50600192915050565b6001600160a01b038116610c785760405162461bcd60e51b81526004016103f290611395565b5f828152600260205260408082206001810180546001600160a01b038681166001600160a01b031983168117909355935192949316929091839187917f118c3f8030bc3c8254e737a0bd0584403c33646afbcbee8321c3bd5b26543cda9190a450505050565b5f546001600160a01b036101009091041633146106c25760405163118cdaa760e01b81523360048201526024016103f2565b610d18610f61565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f84815260026020526040812090826001811115610dd957610dd96114c2565b03610e22576001600160a01b0384165f908152600282016020526040902054610e039084906114d6565b6001600160a01b0385165f9081526002830160205260409020556106ab565b6001826001811115610e3657610e366114c2565b03610e60576001600160a01b0384165f908152600282016020526040902054610e039084906114e9565b6106ab6114fc565b610e70610af7565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d443390565b6001600160a01b038316610f4d575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610efb576040519150601f19603f3d011682016040523d82523d5f602084013e610f00565b606091505b5050905080610f475760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016103f2565b50505050565b6109366001600160a01b0384168383610fea565b5f5460ff166106c257604051638dfc202b60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610f479186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061101b565b6040516001600160a01b0383811660248301526044820183905261093691859182169063a9059cbb90606401610fb8565b5f5f60205f8451602086015f885af18061103a576040513d5f823e3d81fd5b50505f513d9150811561105157806001141561105e565b6001600160a01b0384163b155b15610f4757604051635274afe760e01b81526001600160a01b03851660048201526024016103f2565b828054828255905f5260205f209081019282156110da579160200282015b828111156110da57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110a5565b506110e69291506110ea565b5090565b5b808211156110e6575f81556001016110eb565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114611128575f5ffd5b919050565b5f5f5f6060848603121561113f575f5ffd5b833567ffffffffffffffff811115611155575f5ffd5b8401601f81018613611165575f5ffd5b803567ffffffffffffffff81111561117f5761117f6110fe565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156111ac576111ac6110fe565b6040529182526020818401810192908101898411156111c9575f5ffd5b6020850194505b838510156111ef576111e185611112565b8152602094850194016111d0565b5095506112029250505060208501611112565b929592945050506040919091013590565b5f60208284031215611223575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561126a5783516001600160a01b0316835260209384019390920191600101611243565b509095945050505050565b5f5f60408385031215611286575f5ffd5b8235915061129660208401611112565b90509250929050565b5f5f5f5f5f60a086880312156112b3575f5ffd5b85359450602086013593506112ca60408701611112565b92506112d860608701611112565b949793965091946080013592915050565b5f5f5f5f608085870312156112fc575f5ffd5b8435935061130c60208601611112565b925061131a60408601611112565b9396929550929360600135925050565b5f5f5f6060848603121561133c575f5ffd5b61134584611112565b925061120260208501611112565b5f5f5f60608486031215611365575f5ffd5b8335925061120260208501611112565b5f60208284031215611385575f5ffd5b61138e82611112565b9392505050565b6020808252601a908201527f4e6577206f70657261746f722069732061646472657373283029000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f600182016113f1576113f16113cc565b5060010190565b81515f90829060208501835b8281101561142b5781516001600160a01b0316845260209384019390910190600101611404565b509195945050505050565b60208082526021908201527f476976656e2061646472657373206973206e6f742077616c6c6574206f776e656040820152603960f91b606082015260800190565b6020808252601a908201527f6d73672e73656e646572206973206e6f74206f70657261746f72000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b808201808211156106e9576106e96113cc565b818103818111156106e9576106e96113cc565b634e487b7160e01b5f52600160045260245ffdfea26469706673582212201b9b4b6c183e79cec68d9f0ccf2b588af7aa700a4362844ad962a1fcf60f1f7d64736f6c634300081e0033", + Bin: "0x6080604052348015600e575f5ffd5b503380603357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603a81603f565b506097565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b61154b806100a45f395ff3fe60806040526004361061011b575f3560e01c80638456cb591161009d578063bfa2c1d211610062578063bfa2c1d214610334578063c108bb4014610353578063cafd460014610372578063d68d9d4e14610391578063f2fde38b146103a4575f5ffd5b80638456cb591461028a5780638da5cb5b1461029e5780638e0cc176146102bf578063a0c89a8c146102de578063a96a5f94146102fd575f5ffd5b80633f4ba83a116100e35780633f4ba83a14610202578063530e931c146102165780635c975abb14610235578063715018a61461025757806380ba952e1461026b575f5ffd5b80630d63a1fd1461011f57806314da2906146101515780631687cc60146101a0578063323c4480146101cc57806336cc9e8d146101ed575b5f5ffd5b34801561012a575f5ffd5b5061013e610139366004611132565b6103c3565b6040519081526020015b60405180910390f35b34801561015c575f5ffd5b5061018861016b366004611218565b5f908152600260205260409020600301546001600160a01b031690565b6040516001600160a01b039091168152602001610148565b3480156101ab575f5ffd5b506101bf6101ba366004611218565b61053f565b604051610148919061122f565b3480156101d7575f5ffd5b506101eb6101e636600461127a565b6105a8565b005b3480156101f8575f5ffd5b5061013e60015481565b34801561020d575f5ffd5b506101eb6106b7565b348015610221575f5ffd5b5061013e61023036600461127a565b6106c9565b348015610240575f5ffd5b505f5460ff165b6040519015158152602001610148565b348015610262575f5ffd5b506101eb6106f4565b348015610276575f5ffd5b506101eb6102853660046112a4565b610705565b348015610295575f5ffd5b506101eb610806565b3480156102a9575f5ffd5b505f5461010090046001600160a01b0316610188565b3480156102ca575f5ffd5b506101eb6102d93660046112ee565b610816565b3480156102e9575f5ffd5b506101eb6102f836600461127a565b6108ef565b348015610308575f5ffd5b50610188610317366004611218565b5f908152600260205260409020600101546001600160a01b031690565b34801561033f575f5ffd5b506101eb61034e36600461132f565b610940565b34801561035e575f5ffd5b506101eb61036d366004611358565b6109a8565b34801561037d575f5ffd5b5061024761038c36600461127a565b610a15565b6101eb61039f366004611218565b610a6f565b3480156103af575f5ffd5b506101eb6103be36600461137a565b610abf565b5f6103cc610afc565b6001600160a01b0383166103fb5760405162461bcd60e51b81526004016103f29061139a565b60405180910390fd5b60408051466020808301919091526bffffffffffffffffffffffff1930606090811b82168486015233901b166054830152606880830186905283518084039091018152608890920183528151918101919091205f818152600290925291902060018101546001600160a01b0316156104aa5760405162461bcd60e51b815260206004820152601260248201527113d8d8dd5c1a5959081dd85b1b195d081a5960721b60448201526064016103f2565b85516104bc908290602089019061108c565b50600181810180546001600160a01b0319166001600160a01b0388161790558054905f6104e8836113e5565b9190505550846001600160a01b03168660405161050591906113fd565b6040519081900381209084907fe778e91533ef049a5fc99752bc4efb2b50ca4c967dfc0d4bb4782fb128070c34905f90a450949350505050565b5f8181526002602090815260409182902080548351818402810184019094528084526060939283018282801561059c57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831161057e575b50505050509050919050565b81336105b48282610b1f565b6105d05760405162461bcd60e51b81526004016103f29061143b565b6001600160a01b0383166105f65760405162461bcd60e51b81526004016103f29061139a565b5f84815260026020526040902060038101546001600160a01b038581169116146106415761062381610b86565b6003810180546001600160a01b0319166001600160a01b0386161790555b335f818152600483016020526040808220805460ff19166001179055516001600160a01b0387169188917f71f9e7796b33cb192d1670169ee7f4af7c5364f8f01bab4b95466787593745c39190a461069881610bea565b156106b0576106a78585610c57565b6106b081610b86565b5050505050565b6106bf610ce3565b6106c7610d15565b565b5f8281526002602081815260408084206001600160a01b038616855290920190529020545b92915050565b6106fc610ce3565b6106c75f610d66565b61070d610afc565b5f8581526002602052604090206001015485906001600160a01b031633146107475760405162461bcd60e51b81526004016103f29061147c565b85836107538282610b1f565b61076f5760405162461bcd60e51b81526004016103f29061143b565b868561077b8282610b1f565b6107975760405162461bcd60e51b81526004016103f29061143b565b6107a48a89886001610dbe565b6107b08989885f610dbe565b604080516001600160a01b038981168252602082018990528a16918b918d917f1b56f805e5edb1e61b0d3f46feffdcbab5e591aa0e70e978ada9fc22093601c8910160405180910390a450505050505050505050565b61080e610ce3565b6106c7610e6d565b61081e610afc565b5f8481526002602052604090206001015484906001600160a01b031633146108585760405162461bcd60e51b81526004016103f29061147c565b84836108648282610b1f565b6108805760405162461bcd60e51b81526004016103f29061143b565b61088d8787866001610dbe565b846001600160a01b0316866001600160a01b0316887fd897e862036b62a0f770979fbd2227f3210565bba2eb4d9acd1dc8ccc00c928b876040516108d391815260200190565b60405180910390a46108e6868686610ea9565b50505050505050565b6108f7610afc565b5f8281526002602052604090206001015482906001600160a01b031633146109315760405162461bcd60e51b81526004016103f29061147c565b61093b8383610c57565b505050565b610948610f66565b610950610ce3565b816001600160a01b0316836001600160a01b03167f896ecb17b26927fb33933fc5f413873193bced3c59fe736c42968a9778bf6b588360405161099591815260200190565b60405180910390a361093b838383610ea9565b6109b0610afc565b6109bc8383835f610dbe565b816001600160a01b0316837fbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a836040516109f891815260200190565b60405180910390a361093b6001600160a01b038316333084610f88565b5f8282610a228282610b1f565b610a3e5760405162461bcd60e51b81526004016103f29061143b565b5050505f9182526002602090815260408084206001600160a01b039390931684526004909201905290205460ff1690565b610a77610afc565b34610a84825f8381610dbe565b6040518181525f9083907fbc8e388b96ba8b9f627cb6d72d3513182f763c33c6107ecd31191de1f71abc1a9060200160405180910390a35050565b610ac7610ce3565b6001600160a01b038116610af057604051631e4fbdf760e01b81525f60048201526024016103f2565b610af981610d66565b50565b5f5460ff16156106c75760405163d93c066560e01b815260040160405180910390fd5b5f828152600260205260408120815b8154811015610b7c57815f018181548110610b4b57610b4b6114b3565b5f918252602090912001546001600160a01b0390811690851603610b74576001925050506106ee565b600101610b2e565b505f949350505050565b5f5b8154811015610be6575f826004015f845f018481548110610bab57610bab6114b3565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610b88565b5050565b5f805b8254811015610c4e57826004015f845f018381548110610c0f57610c0f6114b3565b5f9182526020808320909101546001600160a01b0316835282019290925260400181205460ff1615159003610c4657505f92915050565b600101610bed565b50600192915050565b6001600160a01b038116610c7d5760405162461bcd60e51b81526004016103f29061139a565b5f828152600260205260408082206001810180546001600160a01b038681166001600160a01b031983168117909355935192949316929091839187917f118c3f8030bc3c8254e737a0bd0584403c33646afbcbee8321c3bd5b26543cda9190a450505050565b5f546001600160a01b036101009091041633146106c75760405163118cdaa760e01b81523360048201526024016103f2565b610d1d610f66565b5f805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b5f80546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b5f84815260026020526040812090826001811115610dde57610dde6114c7565b03610e27576001600160a01b0384165f908152600282016020526040902054610e089084906114db565b6001600160a01b0385165f9081526002830160205260409020556106b0565b6001826001811115610e3b57610e3b6114c7565b03610e65576001600160a01b0384165f908152600282016020526040902054610e089084906114ee565b6106b0611501565b610e75610afc565b5f805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d493390565b6001600160a01b038316610f52575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610f00576040519150601f19603f3d011682016040523d82523d5f602084013e610f05565b606091505b5050905080610f4c5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016103f2565b50505050565b61093b6001600160a01b0384168383610fef565b5f5460ff166106c757604051638dfc202b60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610f4c9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611020565b6040516001600160a01b0383811660248301526044820183905261093b91859182169063a9059cbb90606401610fbd565b5f5f60205f8451602086015f885af18061103f576040513d5f823e3d81fd5b50505f513d91508115611056578060011415611063565b6001600160a01b0384163b155b15610f4c57604051635274afe760e01b81526001600160a01b03851660048201526024016103f2565b828054828255905f5260205f209081019282156110df579160200282015b828111156110df57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906110aa565b506110eb9291506110ef565b5090565b5b808211156110eb575f81556001016110f0565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b038116811461112d575f5ffd5b919050565b5f5f5f60608486031215611144575f5ffd5b833567ffffffffffffffff81111561115a575f5ffd5b8401601f8101861361116a575f5ffd5b803567ffffffffffffffff81111561118457611184611103565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156111b1576111b1611103565b6040529182526020818401810192908101898411156111ce575f5ffd5b6020850194505b838510156111f4576111e685611117565b8152602094850194016111d5565b5095506112079250505060208501611117565b929592945050506040919091013590565b5f60208284031215611228575f5ffd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561126f5783516001600160a01b0316835260209384019390920191600101611248565b509095945050505050565b5f5f6040838503121561128b575f5ffd5b8235915061129b60208401611117565b90509250929050565b5f5f5f5f5f60a086880312156112b8575f5ffd5b85359450602086013593506112cf60408701611117565b92506112dd60608701611117565b949793965091946080013592915050565b5f5f5f5f60808587031215611301575f5ffd5b8435935061131160208601611117565b925061131f60408601611117565b9396929550929360600135925050565b5f5f5f60608486031215611341575f5ffd5b61134a84611117565b925061120760208501611117565b5f5f5f6060848603121561136a575f5ffd5b8335925061120760208501611117565b5f6020828403121561138a575f5ffd5b61139382611117565b9392505050565b6020808252601a908201527f4e6577206f70657261746f722069732061646472657373283029000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f600182016113f6576113f66113d1565b5060010190565b81515f90829060208501835b828110156114305781516001600160a01b0316845260209384019390910190600101611409565b509195945050505050565b60208082526021908201527f476976656e2061646472657373206973206e6f742077616c6c6574206f776e656040820152603960f91b606082015260800190565b6020808252601a908201527f6d73672e73656e646572206973206e6f74206f70657261746f72000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b808201808211156106ee576106ee6113d1565b818103818111156106ee576106ee6113d1565b634e487b7160e01b5f52600160045260245ffdfea26469706673582212208a6049a36c009571bfb376a84c46b08905aefa87dd6ca9bb57227ad424c0ff7c64736f6c634300081e0033", } // CelerWalletABI is the input ABI used to generate the binding from. diff --git a/chain/erc20.go b/chain/erc20.go index 58f9785..781223b 100644 --- a/chain/erc20.go +++ b/chain/erc20.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. diff --git a/client/api.go b/client/api.go index bbe3316..5fc33d3 100644 --- a/client/api.go +++ b/client/api.go @@ -149,6 +149,7 @@ func (c *CelerClient) AddBooleanPay( }, ResolveDeadline: resolveDeadline, ResolveTimeout: config.PayResolveTimeout, + ChainId: config.ChainId.Uint64(), } var payID ctype.PayIDType diff --git a/cnode/open_channel.go b/cnode/open_channel.go index c709a73..c24e4bc 100644 --- a/cnode/open_channel.go +++ b/cnode/open_channel.go @@ -161,6 +161,11 @@ func (p *openChannelProcessor) prepareChannelInitializer( }, DisputeTimeout: config.ChannelDisputeTimeout, MsgValueReceiver: msgValueReceiver, + // chain id + ledger address bind the signed initializer to a specific + // (chain, CelerLedger) pair so it can't be replayed cross-chain or + // against a different ledger contract on the same chain. + ChainId: config.ChainId.Uint64(), + LedgerAddress: p.nodeConfig.GetLedgerContract().GetAddr().Bytes(), } return initializer, nil } @@ -500,6 +505,19 @@ func (p *openChannelProcessor) processTcbRequest(in *rpc.OpenChannelRequest, oce } ocem.ReadableInitializer = utils.PrintChannelInitializer(pscInitializer) log.Infoln("process tcb openchannel request", utils.PrintChannelInitializer(pscInitializer)) + // chain id + ledger address bind the signed initializer to a specific + // (chain, CelerLedger) pair. Same check as the regular open-channel + // path; without it a TCB approval could be replayed cross-chain or + // against a different ledger contract. + if pscInitializer.GetChainId() != config.ChainId.Uint64() { + return errTcbResponse, status.Errorf(codes.InvalidArgument, + "initializer chain id %d, my chain id %d", pscInitializer.GetChainId(), config.ChainId.Uint64()) + } + myLedger := p.nodeConfig.GetLedgerContract().GetAddr() + if !bytes.Equal(pscInitializer.GetLedgerAddress(), myLedger.Bytes()) { + return errTcbResponse, status.Errorf(codes.InvalidArgument, + "initializer ledger %x, my ledger %x", pscInitializer.GetLedgerAddress(), myLedger.Bytes()) + } tokenInfo := pscInitializer.GetInitDistribution().GetToken() tokenAddr := utils.GetTokenAddr(tokenInfo) ocem.TokenAddr = ctype.Addr2Hex(tokenAddr) @@ -686,6 +704,19 @@ func (p *openChannelProcessor) processOpenChannelRequest(req *rpc.OpenChannelReq } ocem.ReadableInitializer = utils.PrintChannelInitializer(&initializer) log.Infoln("process openchannel request", utils.PrintChannelInitializer(&initializer)) + // chain id + ledger address bind the signed initializer to a specific + // (chain, CelerLedger) pair. CelerLedger.openChannel does the same check + // on-chain; rejecting here closes off cross-chain and same-chain + // wrong-ledger replay before signing or forwarding. + if initializer.GetChainId() != config.ChainId.Uint64() { + return errResp, status.Errorf(codes.InvalidArgument, + "initializer chain id %d, my chain id %d", initializer.GetChainId(), config.ChainId.Uint64()) + } + myLedger := p.nodeConfig.GetLedgerContract().GetAddr() + if !bytes.Equal(initializer.GetLedgerAddress(), myLedger.Bytes()) { + return errResp, status.Errorf(codes.InvalidArgument, + "initializer ledger %x, my ledger %x", initializer.GetLedgerAddress(), myLedger.Bytes()) + } // distribution is sorted based on address. So we need to figure out who's requester. accnt0 := initializer.InitDistribution.Distribution[0].Account accnt1 := initializer.InitDistribution.Distribution[1].Account @@ -776,9 +807,15 @@ func (p *openChannelProcessor) processOpenChannelRequest(req *rpc.OpenChannelReq } func (p *openChannelProcessor) computePscID( channelInitializerBytes []byte, ledgerAdr, walletAddr ctype.Addr) (ctype.CidType, error) { + // Mirror the on-chain CelerWallet.create derivation: + // walletId = keccak256(abi.encodePacked(block.chainid, address(this), msg.sender, _nonce)) + // where address(this) is the wallet contract and msg.sender is the + // CelerLedger calling create. _nonce is keccak256(channelInitializerBytes). nonce := crypto.Keccak256(channelInitializerBytes) - // Does same thing as abi.encodePack in solidity. - packed := make([]byte, 0, len(walletAddr.Bytes())+len(ledgerAdr.Bytes())+len(nonce)) + chainIdBytes := make([]byte, 32) + config.ChainId.FillBytes(chainIdBytes) + packed := make([]byte, 0, len(chainIdBytes)+len(walletAddr.Bytes())+len(ledgerAdr.Bytes())+len(nonce)) + packed = append(packed, chainIdBytes...) packed = append(packed, walletAddr.Bytes()...) packed = append(packed, ledgerAdr.Bytes()...) packed = append(packed, nonce...) @@ -909,9 +946,9 @@ func (p *openChannelProcessor) emptySimplex( }, Receiver: &entity.AccountAmtPair{Amt: zeroAmtBytes}, }, - PendingPayIds: &entity.PayIdList{}, - LastPayResolveDeadline: 0, - TotalPendingAmount: zeroAmtBytes, + PendingPayIds: &entity.PayIdList{}, + PayClearDeadline: 0, + TotalPendingAmount: zeroAmtBytes, } emptySimplexByte, err := proto.Marshal(emptySimplex) if err != nil { diff --git a/common/errs.go b/common/errs.go index 9a1decb..2d4dafd 100644 --- a/common/errs.go +++ b/common/errs.go @@ -35,7 +35,8 @@ var ( ErrInvalidTransferAmt = errors.New("invalid transfer amount") ErrInvalidPendingAmt = errors.New("invalid total pending amount") ErrInvalidPayDeadline = errors.New("invalid pay resolve deadline") - ErrInvalidLastPayDeadline = errors.New("invalid last pay resolve deadline") + ErrInvalidPayChainId = errors.New("invalid pay chain id") + ErrInvalidPayClearDeadline = errors.New("invalid pay clear deadline") ErrInvalidSettleReason = errors.New("invalid payment settle reason") ErrTooManyPendingPays = errors.New("too many pending payments") ErrNoEnoughBalance = errors.New("balance not enough") diff --git a/delegate/delegate.go b/delegate/delegate.go index 22d1f79..6a18595 100644 --- a/delegate/delegate.go +++ b/delegate/delegate.go @@ -153,6 +153,7 @@ func (m *DelegateManager) sendToken(dst ctype.Addr, lumpsum *lumpSum) error { }, ResolveDeadline: uint64(time.Now().Unix()) + config.AdminSendTokenTimeout, ResolveTimeout: config.PayResolveTimeout, + ChainId: config.ChainId.Uint64(), } payID, err := m.process.AddBooleanPay(pay, note, 0) diff --git a/dispute/dispute_channel.go b/dispute/dispute_channel.go index 8d8cf00..353692c 100644 --- a/dispute/dispute_channel.go +++ b/dispute/dispute_channel.go @@ -156,13 +156,13 @@ func formatSimplexSummary(simplex *entity.SimplexPaymentChannel, signedSimplex * totalPendingAmt := new(big.Int).SetBytes(simplex.GetTotalPendingAmount()).String() return fmt.Sprintf( - "{peer_from:%x seq:%d transfer_amt:%s total_pending:%s pending_pay_count:%d last_pay_deadline:%d sigs:%t/%t}", + "{peer_from:%x seq:%d transfer_amt:%s total_pending:%s pending_pay_count:%d pay_clear_deadline:%d sigs:%t/%t}", simplex.GetPeerFrom(), simplex.GetSeqNum(), transferAmt, totalPendingAmt, len(simplex.GetPendingPayIds().GetPayIds()), - simplex.GetLastPayResolveDeadline(), + simplex.GetPayClearDeadline(), signedSimplex != nil && len(signedSimplex.GetSigOfPeerFrom()) > 0, signedSimplex != nil && len(signedSimplex.GetSigOfPeerTo()) > 0, ) diff --git a/dispute/utils.go b/dispute/utils.go index f69f50f..3064838 100644 --- a/dispute/utils.go +++ b/dispute/utils.go @@ -49,7 +49,7 @@ func PrintSignedSimplexState(state *chain.SignedSimplexState) { log.Infoln("---- token transfer addr", ctype.Bytes2Hex(simplex.TransferToPeer.Token.TokenAddress)) log.Infoln("---- token transfer amount", ctype.Bytes2Hex(simplex.TransferToPeer.Receiver.Amt)) log.Infoln("---- pending pay IDs", simplex.PendingPayIds) - log.Infoln("---- last resolve deadline", simplex.LastPayResolveDeadline) + log.Infoln("---- pay clear deadline", simplex.PayClearDeadline) for _, sig := range state.Sigs { signer, err := eth.RecoverSigner(state.SimplexState, sig) if err != nil { diff --git a/entity/entity.pb.go b/entity/entity.pb.go index 15747d9..971b7ad 100644 --- a/entity/entity.pb.go +++ b/entity/entity.pb.go @@ -403,11 +403,13 @@ type SimplexPaymentChannel struct { TransferToPeer *TokenTransfer `protobuf:"bytes,4,opt,name=transfer_to_peer,json=transferToPeer,proto3" json:"transfer_to_peer,omitempty"` // head of the idlist chain of all pending conditional pays. PendingPayIds *PayIdList `protobuf:"bytes,5,opt,name=pending_pay_ids,json=pendingPayIds,proto3" json:"pending_pay_ids,omitempty"` - // The last resolve deadline of all pending conditional pays. - // confirmSettle must be called after all pending pays have been finalized, - // namely all pending pays have been resolved in the pay registry, - // or after the last_pay_resolve_deadline. - LastPayResolveDeadline uint64 `protobuf:"varint,6,opt,name=last_pay_resolve_deadline,json=lastPayResolveDeadline,proto3" json:"last_pay_resolve_deadline,omitempty"` + // Unix timestamp (seconds) after which confirmSettle becomes unconditionally + // eligible. Only consulted by the contract when pending_pay_ids has multiple + // segments (next_list_hash != 0); single-segment lists short-circuit and + // ignore this field. Multi-segment producers MUST stamp + // max(pay.resolveDeadline) + clearMargin, where clearMargin reserves time for + // recipients to call clearPays on every segment before confirmSettle. + PayClearDeadline uint64 `protobuf:"varint,6,opt,name=pay_clear_deadline,json=payClearDeadline,proto3" json:"pay_clear_deadline,omitempty"` // total amount of all pending pays. TotalPendingAmount []byte `protobuf:"bytes,7,opt,name=total_pending_amount,json=totalPendingAmount,proto3" json:"total_pending_amount,omitempty"` unknownFields protoimpl.UnknownFields @@ -479,9 +481,9 @@ func (x *SimplexPaymentChannel) GetPendingPayIds() *PayIdList { return nil } -func (x *SimplexPaymentChannel) GetLastPayResolveDeadline() uint64 { +func (x *SimplexPaymentChannel) GetPayClearDeadline() uint64 { if x != nil { - return x.LastPayResolveDeadline + return x.PayClearDeadline } return 0 } @@ -634,8 +636,11 @@ type ConditionalPay struct { // resolve_timeout is the dispute window after a resolve payment request is submitted ResolveTimeout uint64 `protobuf:"varint,7,opt,name=resolve_timeout,json=resolveTimeout,proto3" json:"resolve_timeout,omitempty"` PayResolver []byte `protobuf:"bytes,8,opt,name=pay_resolver,json=payResolver,proto3" json:"pay_resolver,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // chain id of the intended target chain; binds the signed pay (and any + // vouched result over it) against cross-chain replay + ChainId uint64 `protobuf:"varint,9,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConditionalPay) Reset() { @@ -724,6 +729,13 @@ func (x *ConditionalPay) GetPayResolver() []byte { return nil } +func (x *ConditionalPay) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + // Next Tag: 3 type CondPayResult struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1008,7 +1020,7 @@ func (x *CooperativeWithdrawInfo) GetRecipientChannelId() []byte { return nil } -// Next Tag: 5 +// Next Tag: 7 type PaymentChannelInitializer struct { state protoimpl.MessageState `protogen:"open.v1"` // require an ascending order based on addresses of init_distribution.distribution[].account @@ -1018,8 +1030,14 @@ type PaymentChannelInitializer struct { // index of channel peer who receives the blockchain native token // associated with the transaction (msg.value in case of ETH) MsgValueReceiver uint64 `protobuf:"varint,4,opt,name=msg_value_receiver,json=msgValueReceiver,proto3" json:"msg_value_receiver,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // chain id of the intended target chain; binds the signed initializer + // against cross-chain replay + ChainId uint64 `protobuf:"varint,5,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // address of the intended target CelerLedger; binds the signed initializer + // against same-chain wrong-ledger replay + LedgerAddress []byte `protobuf:"bytes,6,opt,name=ledger_address,json=ledgerAddress,proto3" json:"ledger_address,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PaymentChannelInitializer) Reset() { @@ -1080,6 +1098,20 @@ func (x *PaymentChannelInitializer) GetMsgValueReceiver() uint64 { return 0 } +func (x *PaymentChannelInitializer) GetChainId() uint64 { + if x != nil { + return x.ChainId + } + return 0 +} + +func (x *PaymentChannelInitializer) GetLedgerAddress() []byte { + if x != nil { + return x.LedgerAddress + } + return nil +} + // Next Tag: 5 type CooperativeSettleInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1257,7 +1289,7 @@ const file_entity_proto_rawDesc = "" + "\fdistribution\x18\x02 \x03(\v2\x16.entity.AccountAmtPairR\fdistribution\"l\n" + "\rTokenTransfer\x12'\n" + "\x05token\x18\x01 \x01(\v2\x11.entity.TokenInfoR\x05token\x122\n" + - "\breceiver\x18\x02 \x01(\v2\x16.entity.AccountAmtPairR\breceiver\"\x8b\x03\n" + + "\breceiver\x18\x02 \x01(\v2\x16.entity.AccountAmtPairR\breceiver\"\xfe\x02\n" + "\x15SimplexPaymentChannel\x12)\n" + "\n" + "channel_id\x18\x01 \x01(\fB\n" + @@ -1266,8 +1298,8 @@ const file_entity_proto_rawDesc = "" + "\xca>\aaddressR\bpeerFrom\x12 \n" + "\aseq_num\x18\x03 \x01(\x04B\a\xca>\x04uintR\x06seqNum\x12?\n" + "\x10transfer_to_peer\x18\x04 \x01(\v2\x15.entity.TokenTransferR\x0etransferToPeer\x129\n" + - "\x0fpending_pay_ids\x18\x05 \x01(\v2\x11.entity.PayIdListR\rpendingPayIds\x12B\n" + - "\x19last_pay_resolve_deadline\x18\x06 \x01(\x04B\a\xca>\x04uintR\x16lastPayResolveDeadline\x12<\n" + + "\x0fpending_pay_ids\x18\x05 \x01(\v2\x11.entity.PayIdListR\rpendingPayIds\x125\n" + + "\x12pay_clear_deadline\x18\x06 \x01(\x04B\a\xca>\x04uintR\x10payClearDeadline\x12<\n" + "\x14total_pending_amount\x18\a \x01(\fB\n" + "\xca>\auint256R\x12totalPendingAmount\"b\n" + "\tPayIdList\x12#\n" + @@ -1278,7 +1310,7 @@ const file_entity_proto_rawDesc = "" + "\x10TransferFunction\x12;\n" + "\n" + "logic_type\x18\x01 \x01(\x0e2\x1c.entity.TransferFunctionTypeR\tlogicType\x128\n" + - "\fmax_transfer\x18\x02 \x01(\v2\x15.entity.TokenTransferR\vmaxTransfer\"\x85\x03\n" + + "\fmax_transfer\x18\x02 \x01(\v2\x15.entity.TokenTransferR\vmaxTransfer\"\xa9\x03\n" + "\x0eConditionalPay\x12.\n" + "\rpay_timestamp\x18\x01 \x01(\x04B\t\xca>\x04uint0\x01R\fpayTimestamp\x12\x1c\n" + "\x03src\x18\x02 \x01(\fB\n" + @@ -1292,7 +1324,8 @@ const file_entity_proto_rawDesc = "" + "\x10resolve_deadline\x18\x06 \x01(\x04B\a\xca>\x04uintR\x0fresolveDeadline\x120\n" + "\x0fresolve_timeout\x18\a \x01(\x04B\a\xca>\x04uintR\x0eresolveTimeout\x12-\n" + "\fpay_resolver\x18\b \x01(\fB\n" + - "\xca>\aaddressR\vpayResolver\"N\n" + + "\xca>\aaddressR\vpayResolver\x12\"\n" + + "\bchain_id\x18\t \x01(\x04B\a\xca>\x04uintR\achainId\"N\n" + "\rCondPayResult\x12\x19\n" + "\bcond_pay\x18\x01 \x01(\fR\acondPay\x12\"\n" + "\x06amount\x18\x02 \x01(\fB\n" + @@ -1320,12 +1353,15 @@ const file_entity_proto_rawDesc = "" + "\bwithdraw\x18\x03 \x01(\v2\x16.entity.AccountAmtPairR\bwithdraw\x124\n" + "\x11withdraw_deadline\x18\x04 \x01(\x04B\a\xca>\x04uintR\x10withdrawDeadline\x12<\n" + "\x14recipient_channel_id\x18\x05 \x01(\fB\n" + - "\xca>\abytes32R\x12recipientChannelId\"\xfa\x01\n" + + "\xca>\abytes32R\x12recipientChannelId\"\xd1\x02\n" + "\x19PaymentChannelInitializer\x12F\n" + "\x11init_distribution\x18\x01 \x01(\v2\x19.entity.TokenDistributionR\x10initDistribution\x12,\n" + "\ropen_deadline\x18\x02 \x01(\x04B\a\xca>\x04uintR\fopenDeadline\x120\n" + "\x0fdispute_timeout\x18\x03 \x01(\x04B\a\xca>\x04uintR\x0edisputeTimeout\x125\n" + - "\x12msg_value_receiver\x18\x04 \x01(\x04B\a\xca>\x04uintR\x10msgValueReceiver\"\xd5\x01\n" + + "\x12msg_value_receiver\x18\x04 \x01(\x04B\a\xca>\x04uintR\x10msgValueReceiver\x12\"\n" + + "\bchain_id\x18\x05 \x01(\x04B\a\xca>\x04uintR\achainId\x121\n" + + "\x0eledger_address\x18\x06 \x01(\fB\n" + + "\xca>\aaddressR\rledgerAddress\"\xd5\x01\n" + "\x15CooperativeSettleInfo\x12)\n" + "\n" + "channel_id\x18\x01 \x01(\fB\n" + diff --git a/go.mod b/go.mod index 9ba38b0..7018c4d 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 github.com/tevino/abool v0.0.0-20170917061928-9b9efcf221b5 go.opencensus.io v0.22.1 - go.uber.org/atomic v1.4.0 golang.org/x/crypto v0.45.0 golang.org/x/net v0.47.0 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 diff --git a/go.sum b/go.sum index f72327a..db9ef59 100644 --- a/go.sum +++ b/go.sum @@ -285,8 +285,6 @@ github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBi go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.1 h1:8dP3SGL7MPB94crU3bEPplMPe83FI4EouesJUeFHv50= go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= -go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= diff --git a/handlers/msghdl/handle_cond_pay_request.go b/handlers/msghdl/handle_cond_pay_request.go index 4744183..84ec7d6 100644 --- a/handlers/msghdl/handle_cond_pay_request.go +++ b/handlers/msghdl/handle_cond_pay_request.go @@ -188,6 +188,17 @@ func (h *CelerMsgHandler) processCondPayRequest( // should not happen if peer has the same config return fmt.Errorf("%w, deadline %d now %d", common.ErrInvalidPayDeadline, pay.GetResolveDeadline(), nowTs) } + + // verify chain id binds the pay to this chain (PayResolver does the same + // check on-chain; rejecting here closes off the cross-chain replay surface + // before the message is signed/forwarded). + if pay.GetChainId() != config.ChainId.Uint64() { + if seqErr := h.checkSeqNum(request, cid, recvdSimplex, logEntry); seqErr != nil { + return seqErr + } + return fmt.Errorf("%w, pay chain id %d, my chain id %d", + common.ErrInvalidPayChainId, pay.GetChainId(), config.ChainId.Uint64()) + } var routeLoop bool err := h.dal.Transactional( h.processCondPayRequestTx, request, cid, payID, pay, recvdState, recvdSimplex, logEntry, &routeLoop) @@ -332,14 +343,15 @@ func (h *CelerMsgHandler) verifyCondPayRequest( return common.ErrInvalidPendingPays // corrupted peer } - // verify last pay resolve deadline - deadline := storedSimplex.GetLastPayResolveDeadline() + // verify pay clear deadline: max(prior, pay.ResolveDeadline). See sender + // comment in messager/send_cond_pay_request.go on the no-margin choice. + deadline := storedSimplex.GetPayClearDeadline() if pay.GetResolveDeadline() > deadline { deadline = pay.GetResolveDeadline() } - if deadline != recvdSimplex.GetLastPayResolveDeadline() { - log.Errorln(common.ErrInvalidLastPayDeadline, recvdSimplex.LastPayResolveDeadline, deadline) - return common.ErrInvalidLastPayDeadline // corrupted peer + if deadline != recvdSimplex.GetPayClearDeadline() { + log.Errorln(common.ErrInvalidPayClearDeadline, recvdSimplex.PayClearDeadline, deadline) + return common.ErrInvalidPayClearDeadline // corrupted peer } // verify pay resolver address @@ -695,6 +707,12 @@ func (h *CelerMsgHandler) crossNetPayInbound( newPay.ResolveDeadline = uint64(time.Now().Unix()) + xnet.GetTimeout() newPay.ResolveTimeout = config.PayResolveTimeout newPay.PayResolver = h.nodeConfig.GetPayResolverContract().GetAddr().Bytes() + // Re-bind chain_id to this bridge's chain so on-chain resolve in the + // next net's PayResolver passes its `pay.chainId == block.chainid` check + // and downstream peers' chain-id check accepts the bridged pay. The + // destination still signs the receipt against `xnet.OriginalPay` (which + // keeps the source chain's id), so source-side verification is unaffected. + newPay.ChainId = config.ChainId.Uint64() newPayID := ctype.Pay2PayID(newPay) newPayBytes, err := proto.Marshal(newPay) if err != nil { @@ -759,6 +777,7 @@ func (h *CelerMsgHandler) verifyCrossNetPay(pay *entity.ConditionalPay, original p.ResolveDeadline = 0 p.ResolveTimeout = 0 p.PayResolver = nil + p.ChainId = 0 } normalize(payCopy) normalize(&originalPay) diff --git a/handlers/msghdl/handle_pay_settle_request.go b/handlers/msghdl/handle_pay_settle_request.go index 8366be8..09cb556 100644 --- a/handlers/msghdl/handle_pay_settle_request.go +++ b/handlers/msghdl/handle_pay_settle_request.go @@ -313,12 +313,13 @@ func (h *CelerMsgHandler) processPaySettleRequestTx(tx *storage.DALTx, args ...i return common.ErrInvalidPendingAmt // corrupted peer } - // verify last pay resolve deadline - sDeadline := storedSimplex.GetLastPayResolveDeadline() - rDeadline := recvdSimplex.GetLastPayResolveDeadline() + // verify pay clear deadline (settle removes pays from the list, so it must + // not change — only sending a new pay can advance it). + sDeadline := storedSimplex.GetPayClearDeadline() + rDeadline := recvdSimplex.GetPayClearDeadline() if sDeadline != rDeadline { - log.Errorln(common.ErrInvalidLastPayDeadline, rDeadline, sDeadline) - return common.ErrInvalidLastPayDeadline // corrupted peer + log.Errorln(common.ErrInvalidPayClearDeadline, rDeadline, sDeadline) + return common.ErrInvalidPayClearDeadline // corrupted peer } // verify settle reasons diff --git a/messager/send_cond_pay_request.go b/messager/send_cond_pay_request.go index 8b94faa..04fcbf9 100644 --- a/messager/send_cond_pay_request.go +++ b/messager/send_cond_pay_request.go @@ -287,8 +287,14 @@ func (m *Messager) runCondPayTx(tx *storage.DALTx, args ...interface{}) error { totalPendingAmt := new(big.Int).SetBytes(workingSimplex.TotalPendingAmount) workingSimplex.TotalPendingAmount = totalPendingAmt.Add(totalPendingAmt, sendAmt).Bytes() - if pay.GetResolveDeadline() > workingSimplex.GetLastPayResolveDeadline() { - workingSimplex.LastPayResolveDeadline = pay.ResolveDeadline + // pay_clear_deadline = max(pay.resolveDeadline). The contract only + // consults this field when nextPayIdListHash != 0; we always emit + // single-segment lists, so the literal max is sufficient. If + // multi-segment pay lists are ever introduced, fold in a clearMargin + // here that reserves wall-clock time for recipients to call + // CelerLedger.clearPays on every segment before confirmSettle. + if pay.GetResolveDeadline() > workingSimplex.GetPayClearDeadline() { + workingSimplex.PayClearDeadline = pay.GetResolveDeadline() } } diff --git a/proto/entity.proto b/proto/entity.proto index aca6b94..a6b88db 100644 --- a/proto/entity.proto +++ b/proto/entity.proto @@ -52,11 +52,13 @@ message SimplexPaymentChannel { TokenTransfer transfer_to_peer = 4; // head of the idlist chain of all pending conditional pays. PayIdList pending_pay_ids = 5; - // The last resolve deadline of all pending conditional pays. - // confirmSettle must be called after all pending pays have been finalized, - // namely all pending pays have been resolved in the pay registry, - // or after the last_pay_resolve_deadline. - uint64 last_pay_resolve_deadline = 6 [(soltype) = "uint"]; + // Unix timestamp (seconds) after which confirmSettle becomes unconditionally + // eligible. Only consulted by the contract when pending_pay_ids has multiple + // segments (next_list_hash != 0); single-segment lists short-circuit and + // ignore this field. Multi-segment producers MUST stamp + // max(pay.resolveDeadline) + clearMargin, where clearMargin reserves time for + // recipients to call clearPays on every segment before confirmSettle. + uint64 pay_clear_deadline = 6 [(soltype) = "uint"]; // total amount of all pending pays. bytes total_pending_amount = 7 [(soltype) = "uint256"]; } @@ -121,6 +123,9 @@ message ConditionalPay { // resolve_timeout is the dispute window after a resolve payment request is submitted uint64 resolve_timeout = 7 [(soltype) = "uint"]; bytes pay_resolver = 8 [(soltype) = "address"]; + // chain id of the intended target chain; binds the signed pay (and any + // vouched result over it) against cross-chain replay + uint64 chain_id = 9 [(soltype) = "uint"]; } // Next Tag: 3 @@ -169,7 +174,7 @@ message CooperativeWithdrawInfo { bytes recipient_channel_id = 5 [(soltype) = "bytes32"]; } -// Next Tag: 5 +// Next Tag: 7 message PaymentChannelInitializer { // require an ascending order based on addresses of init_distribution.distribution[].account TokenDistribution init_distribution = 1; @@ -178,6 +183,12 @@ message PaymentChannelInitializer { // index of channel peer who receives the blockchain native token // associated with the transaction (msg.value in case of ETH) uint64 msg_value_receiver = 4 [(soltype) = "uint"]; + // chain id of the intended target chain; binds the signed initializer + // against cross-chain replay + uint64 chain_id = 5 [(soltype) = "uint"]; + // address of the intended target CelerLedger; binds the signed initializer + // against same-chain wrong-ledger replay + bytes ledger_address = 6 [(soltype) = "address"]; } // Next Tag: 5 diff --git a/route/routerregistry/routerregistry.go b/route/routerregistry/routerregistry.go index bbc4151..5835e0b 100644 --- a/route/routerregistry/routerregistry.go +++ b/route/routerregistry/routerregistry.go @@ -1,3 +1,4 @@ +// Regenerated by tools/scripts/regenerate-go-bindings.sh — DO NOT EDIT. // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. diff --git a/server/osp_webapi_backend.go b/server/osp_webapi_backend.go index b6e4aca..ca087e7 100644 --- a/server/osp_webapi_backend.go +++ b/server/osp_webapi_backend.go @@ -139,6 +139,7 @@ func (b *ospWebapiBackend) sendBooleanPayment( }, ResolveDeadline: resolveDeadline, ResolveTimeout: config.PayResolveTimeout, + ChainId: config.ChainId.Uint64(), } var payID ctype.PayIDType diff --git a/server/server.go b/server/server.go index 48bc835..a590eb3 100644 --- a/server/server.go +++ b/server/server.go @@ -737,6 +737,7 @@ func (s *adminService) SendToken(ctx context.Context, in *rpc.SendTokenRequest) }, ResolveDeadline: uint64(time.Now().Unix()) + config.AdminSendTokenTimeout, ResolveTimeout: config.PayResolveTimeout, + ChainId: config.ChainId.Uint64(), } noteType := "" diff --git a/test/e2e/e2e_crossnet_test.go b/test/e2e/e2e_crossnet_test.go index 59820f4..69194d9 100644 --- a/test/e2e/e2e_crossnet_test.go +++ b/test/e2e/e2e_crossnet_test.go @@ -21,8 +21,6 @@ import ( ) const ( - n0NetId = 1000 - n1NetId = 1001 n2NetId = 1002 ) diff --git a/tools/osp-cli/cli/cli_db_update_xnet.go b/tools/osp-cli/cli/cli_db_update_xnet.go index 62a7290..dadd174 100644 --- a/tools/osp-cli/cli/cli_db_update_xnet.go +++ b/tools/osp-cli/cli/cli_db_update_xnet.go @@ -11,6 +11,38 @@ import ( "github.com/celer-network/goutils/log" ) +// XnetConfig is the operator-supplied cross-net routing configuration. +// +// A "net" is the off-chain network identity of a (chainId, contractSet) +// pair, where the contract set is the deployment of CelerLedger / +// PayResolver / PayRegistry / EthPool / VirtResolver / Wallet that an OSP +// boots against (configured via its profile JSON). Two OSPs sharing a netId +// must boot against the same contract addresses on the same chain; +// otherwise channels and signed messages won't validate across them. +// +// netId is intentionally separate from `block.chainid` for two reasons: +// +// 1. A contract-set redeployment on the same chain (upgrades, hard-fork- +// style migrations) is a new net even though chainId is unchanged — +// the new PayResolver enforces `pay.payResolver == address(this)` and +// the new Ledger enforces `initializer.ledger_address == address(this)`, +// so signed messages don't cross over. A bridge pair operated by the +// same business entity can carry pays across the migration window +// without users having to coordinate the upgrade. +// 2. Test harnesses can simulate cross-net routing on a single geth +// instance by deploying multiple contract sets and labelling them as +// distinct nets. +// +// On-chain replay protection lives in the contracts: chainId and +// ledger_address are signed into PaymentChannelInitializer; chainId is +// signed into ConditionalPay; payResolver is bound on every pay. netId +// only drives off-chain forwarding decisions. +// +// Bridge OSPs at a net boundary are operated as a trust unit (typically by +// the same business entity). The cross-bridge link is a direct gRPC stream +// between the two bridge processes, not a payment channel — there's no +// shared on-chain state between bridges, and reconciliation between them +// is off-protocol. type XnetConfig struct { NetId uint64 `json:"net_id"` // local net id NetBridge map[string]uint64 `json:"net_bridge"` // bridgeAddr -> bridgeNetId diff --git a/utils/pbprint.go b/utils/pbprint.go index d9efca4..b014fd6 100644 --- a/utils/pbprint.go +++ b/utils/pbprint.go @@ -33,13 +33,13 @@ func PrintPayIdList(paylist *entity.PayIdList) string { } func PrintSimplexChannel(simplex *entity.SimplexPaymentChannel) string { - return fmt.Sprintf("cid: %x, from: %x, seq: %d, transfer: [%s], %s last_pay_deadline: %d, pending_amount: %s", + return fmt.Sprintf("cid: %x, from: %x, seq: %d, transfer: [%s], %s pay_clear_deadline: %d, pending_amount: %s", simplex.GetChannelId(), simplex.GetPeerFrom(), simplex.GetSeqNum(), PrintTokenTransfer(simplex.GetTransferToPeer()), PrintPayIdList(simplex.GetPendingPayIds()), - simplex.GetLastPayResolveDeadline(), + simplex.GetPayClearDeadline(), big.NewInt(0).SetBytes(simplex.GetTotalPendingAmount()).String()) } @@ -75,11 +75,13 @@ func PrintTokenDistribution(dist *entity.TokenDistribution) string { } func PrintChannelInitializer(initializer *entity.PaymentChannelInitializer) string { - return fmt.Sprintf("init_distribution: [%s], open_deadline: %d, dispute_timeout: %d, msg_value_receiver: %d", + return fmt.Sprintf("init_distribution: [%s], open_deadline: %d, dispute_timeout: %d, msg_value_receiver: %d, chain_id: %d, ledger: %x", PrintTokenDistribution(initializer.GetInitDistribution()), initializer.GetOpenDeadline(), initializer.GetDisputeTimeout(), - initializer.GetMsgValueReceiver()) + initializer.GetMsgValueReceiver(), + initializer.GetChainId(), + initializer.GetLedgerAddress()) } func PrintCondition(cond *entity.Condition) string {