From 9bab701fc9e5a05193ef5bd17a355614e2fe7eb7 Mon Sep 17 00:00:00 2001 From: "fletcher.fan" Date: Fri, 19 Dec 2025 14:27:11 +0800 Subject: [PATCH] update go-ethereum & tidy up --- Makefile | 4 +-- bindings/bin/l2tokenregistry_deployed.hex | 2 +- bindings/bindings/l2tokenregistry.go | 36 ++++++++++++++------ bindings/bindings/l2tokenregistry_more.go | 2 +- bindings/go.mod | 2 +- bindings/go.sum | 4 +-- contracts/go.mod | 2 +- contracts/go.sum | 4 +-- go-ethereum | 2 +- go.work.sum | 2 ++ node/go.mod | 2 +- node/go.sum | 4 +-- ops/l2-genesis/go.mod | 2 +- ops/l2-genesis/go.sum | 4 +-- ops/tools/go.mod | 2 +- ops/tools/go.sum | 4 +-- oracle/go.mod | 2 +- oracle/go.sum | 4 +-- token-price-oracle/client/bitget_sdk_test.go | 34 ------------------ token-price-oracle/go.mod | 2 +- token-price-oracle/go.sum | 4 +-- token-price-oracle/updater/token_price.go | 29 ++++++++-------- tx-submitter/go.mod | 2 +- tx-submitter/go.sum | 4 +-- 24 files changed, 71 insertions(+), 88 deletions(-) delete mode 100644 token-price-oracle/client/bitget_sdk_test.go diff --git a/Makefile b/Makefile index db68ab8a..6e55077d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ ################## update dependencies #################### -ETHEREUM_SUBMODULE_COMMIT_OR_TAG := 49fa27bcab243c67f6489de504453637d6015ccf -ETHEREUM_TARGET_VERSION := v1.10.14-0.20251203083507-49fa27bcab24 +ETHEREUM_SUBMODULE_COMMIT_OR_TAG := morph-v2.1.0 +ETHEREUM_TARGET_VERSION := v1.10.14-0.20251219060125-03910bc750a2 TENDERMINT_TARGET_VERSION := v0.3.2 ETHEREUM_MODULE_NAME := github.com/morph-l2/go-ethereum diff --git a/bindings/bin/l2tokenregistry_deployed.hex b/bindings/bin/l2tokenregistry_deployed.hex index 6debd77e..65114eff 100644 --- a/bindings/bin/l2tokenregistry_deployed.hex +++ b/bindings/bin/l2tokenregistry_deployed.hex @@ -1 +1 @@ -0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80638cbab7e4116100fe578063ce67be261161009e578063ef0fde0f1161006e578063ef0fde0f146104bd578063efeadb6d146104d0578063f2fde38b146104e3578063fce40489146104f6575f80fd5b8063ce67be261461047c578063dbbb2faa14610484578063dddc98be14610497578063e3de72a5146104aa575f80fd5b8063a1218001116100d9578063a121800114610430578063a313d00714610443578063b10b69ee14610456578063c4d66de814610469575f80fd5b80638cbab7e4146103ef5780638da5cb5b146104025780639190202e1461041d575f80fd5b80635c45246b11610169578063724f91ce11610144578063724f91ce1461030e5780637304880c1461034457806385519c36146103575780638c399691146103dc575f80fd5b80635c45246b146102dc5780636f6d6cc1146102f1578063715018a614610306575f80fd5b806322bd5c1c116101a457806322bd5c1c146102775780632848aeaf146102945780632a1ea5a2146102b65780634cbcdd13146102c9575f80fd5b80631585458c146101ca57806319904c33146101e85780631c58e79314610215575b5f80fd5b6101d2610509565b6040516101df91906124fa565b60405180910390f35b6102076101f636600461256b565b60996020525f908152604090205481565b6040519081526020016101df565b61022861022336600461256b565b610608565b6040516101df91905f60a0820190506001600160a01b0383511682526020830151602083015260408301511515604083015260ff60608401511660608301526080830151608083015292915050565b609b546102849060ff1681565b60405190151581526020016101df565b6102846102a236600461259a565b609a6020525f908152604090205460ff1681565b6102076102c436600461256b565b6106f4565b6102846102d736600461256b565b61075c565b6102ef6102ea3660046125c2565b610772565b005b6102f96107a0565b6040516101df9190612613565b6102ef610848565b61033161031c36600461259a565b60986020525f908152604090205461ffff1681565b60405161ffff90911681526020016101df565b6102ef61035236600461265a565b61085b565b6103a261036536600461256b565b60976020525f908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff808316926101009004169085565b604080516001600160a01b03909616865260208601949094529115159284019290925260ff9091166060830152608082015260a0016101df565b6102ef6103ea36600461282a565b610bee565b6103316103fd36600461259a565b610ddd565b6033546040516001600160a01b0390911681526020016101df565b6102ef61042b3660046128d2565b610e46565b6102ef61043e3660046129ff565b610fe7565b61020761045136600461256b565b611103565b6102ef610464366004612ac8565b61116e565b6102ef61047736600461259a565b6112ba565b610207611488565b6102ef61049236600461256b565b611498565b6102076104a5366004612ac8565b61161a565b6102ef6104b8366004612af0565b611781565b6102ef6104cb366004612ac8565b6118ba565b6102ef6104de366004612b46565b6119fe565b6102ef6104f136600461259a565b611a6b565b61028461050436600461256b565b611b15565b60605f610516609c611b58565b90505f815167ffffffffffffffff811115610533576105336126bc565b60405190808252806020026020018201604052801561057757816020015b604080518082019091525f80825260208201528152602001906001900390816105515790505b5090505f5b8251811015610601575f83828151811061059857610598612b5f565b60209081029190910181015161ffff81165f818152609784526040908190205481518083019092529181526001600160a01b039091169281018390528551919350908590859081106105ec576105ec612b5f565b6020908102919091010152505060010161057c565b5092915050565b6040805160a0810182525f8082526020808301829052828401829052606083018290526080830182905261ffff851682526097905291909120546001600160a01b0316610681576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f90815260976020908152604091829020825160a08101845281546001600160a01b031681526001820154928101839052600282015460ff808216151595830195909552610100900490931660608401526003015460808301526106e990611b6b565b602082015292915050565b61ffff81165f908152609760205260408120546001600160a01b0316610746576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526099602052604090205490565b5f61076c609c61ffff8416611b9e565b92915050565b61077a611bb5565b610782611c29565b61078f8585858585611c9c565b6107996001606555565b5050505050565b60605f6107ad609c611b58565b90505f815167ffffffffffffffff8111156107ca576107ca6126bc565b6040519080825280602002602001820160405280156107f3578160200160208202803683370190505b5090505f5b82518110156106015782818151811061081357610813612b5f565b602002602001015182828151811061082d5761082d612b5f565b61ffff909216602092830291909101909101526001016107f8565b610850611bb5565b6108595f61200c565b565b610863611bb5565b61086b611c29565b61ffff86165f908152609760205260409020546001600160a01b03166108bd576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385166108fd576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385165f9081526098602052604090205461ffff16801580159061093057508661ffff168161ffff1614155b15610967576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109e4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109e191810190612b8c565b60015b156109ec5790505b61ffff88165f9081526097602090815260409182902054825160a081019093526001600160a01b038a811684521691908101610a288989612075565b815286151560208083019190915260ff808616604080850191909152606093840189905261ffff8e165f90815260978452819020855181546001600160a01b039182167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161782559386015160018201559085015160028201805495870151909316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941793909317905560809092015160039091015581811690891614610b74576001600160a01b038181165f9081526098602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155928b1682529020805490911661ffff8b161790555b876001600160a01b03168961ffff167f60281b1abf645864e8443ca11a3c3b51a6a9203a376da58db7919f7cfebc4aa989888689604051610bd19493929190938452911515602084015260ff166040830152606082015260800190565b60405180910390a3505050610be66001606555565b505050505050565b609b5460ff168015610c0f5750335f908152609a602052604090205460ff16155b8015610c2657506033546001600160a01b03163314155b15610c5d576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610c98576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610dd8575f6001600160a01b031660975f858481518110610cc257610cc2612b5f565b60209081029190910181015161ffff1682528101919091526040015f20546001600160a01b031614610dd057818181518110610d0057610d00612b5f565b60200260200101515f0315610dd057818181518110610d2157610d21612b5f565b602002602001015160995f858481518110610d3e57610d3e612b5f565b602002602001015161ffff1661ffff1681526020019081526020015f2081905550828181518110610d7157610d71612b5f565b602002602001015161ffff167fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467838381518110610db057610db0612b5f565b6020026020010151604051610dc791815260200190565b60405180910390a25b600101610c9a565b505050565b6001600160a01b0381165f9081526098602052604081205461ffff1680158015610e0f57506001600160a01b03831615155b1561076c576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4e611bb5565b828114610e87576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b83811015610799575f858583818110610ea457610ea4612b5f565b9050602002016020810190610eb9919061256b565b90505f848484818110610ece57610ece612b5f565b9050602002016020810190610ee39190612b46565b61ffff83165f908152609760205260409020549091506001600160a01b0316610f0d575050610fdf565b61ffff82165f9081526097602052604090206002015460ff1680151582151514610fdb5761ffff83165f90815260976020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168315801591909117909155610fac5760405161ffff8416907fba78a86bd882b78fb95715a0d827188ec0a8ad3f500310d33a39b94c9ff677b8905f90a2610fdb565b60405161ffff8416907fa625871090c2595895650b8e9222d1a3267cedf9de819bf446400962ce1357ef905f90a25b5050505b600101610e89565b610fef611bb5565b610ff7611c29565b8351855114158061100a57508251855114155b8061101757508151855114155b8061102457508051855114155b1561105b576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85518110156110f8576110f086828151811061107b5761107b612b5f565b602002602001015186838151811061109557611095612b5f565b60200260200101518684815181106110af576110af612b5f565b60200260200101518685815181106110c9576110c9612b5f565b60200260200101518686815181106110e3576110e3612b5f565b6020026020010151611c9c565b60010161105d565b506107996001606555565b61ffff81165f908152609760205260408120546001600160a01b0316611155576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526097602052604090206003015490565b609b5460ff16801561118f5750335f908152609a602052604090205460ff16155b80156111a657506033546001600160a01b03163314155b156111dd576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f908152609760205260409020546001600160a01b031661122f576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611267576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f8181526099602052604090819020839055517fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467906112ae9084815260200190565b60405180910390a25050565b5f54610100900460ff16158080156112d857505f54600160ff909116105b806112f15750303b1580156112f157505f5460ff166001145b611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156113de575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6113e66120c4565b6113ee612162565b6113f78261200c565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611484575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f611493609c612200565b905090565b6114a0611bb5565b61ffff81165f908152609760205260409020546001600160a01b0316806114f3576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611502609c61ffff8416611b9e565b611538576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f81815260976020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090811690915560039091018490556001600160a01b0386168452609883528184208054909116905592825260999052908120556115dd82612209565b6040516001600160a01b0382169061ffff8416907f330282f89b53f03dfc62130ddb33062a147ad25d691915b575732f62fb6fce9a905f90a35050565b61ffff82165f908152609760205260408120546001600160a01b031661166c576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83165f818152609760209081526040808320815160a08101835281546001600160a01b03168152600182015481850152600282015460ff808216151583860152610100909104166060820152600390910154608082015293835260999091528120549081900361170a576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82608001518561171b9190612bd9565b905081600161172a8284612bf0565b6117349190612c03565b61173e9190612c16565b9350835f03611778576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b611789611bb5565b80518251146117c4576040517fd9183d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610dd8578181815181106117e1576117e1612b5f565b6020026020010151609a5f8584815181106117fe576117fe612b5f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555082818151811061184d5761184d612b5f565b60200260200101516001600160a01b03167f6dad0aed33f4b7f07095619b668698e17943fd9f4c83e7cfcc7f6dd880a1158883838151811061189157611891612b5f565b60200260200101516040516118aa911515815260200190565b60405180910390a26001016117c6565b609b5460ff1680156118db5750335f908152609a602052604090205460ff16155b80156118f257506033546001600160a01b03163314155b15611929576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f908152609760205260409020546001600160a01b031661197b576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f036119b4576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f8181526097602052604090819020600301839055517f7b614d0c690ae942aec30d9378eb72c3678dd8cb74a55343c87baf8dfe078e74906112ae9084815260200190565b611a06611bb5565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb39060200160405180910390a150565b611a73611bb5565b6001600160a01b038116611b09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611379565b611b128161200c565b50565b61ffff81165f908152609760205260408120546001600160a01b0316611b3c57505f919050565b5061ffff165f9081526097602052604090206002015460ff1690565b60605f611b6483612218565b9392505050565b5f81611b7857505f919050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8181526001830160205260408120541515611b64565b6033546001600160a01b03163314610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611379565b600260655403611c95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611379565b6002606555565b6001600160a01b038416611cdc576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461ffff165f03611d19576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff85165f908152609760205260409020546001600160a01b031615611d6c576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526098602052604090205461ffff1615611dbf576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611df8576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e75575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e7291810190612b8c565b60015b15611e7d5790505b6040518060a00160405280866001600160a01b03168152602001611ea18686612075565b81525f602080830182905260ff808616604080860191909152606094850188905261ffff8c1680855260978452818520875181546001600160a01b039182167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617825588860151600183015588840151600283018054998b0151909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000998a161717909455608090970151600390970196909655908a1683526098909152902080549091169091179055611fa486612271565b604080518581525f602082015260ff8316818301526060810184905290516001600160a01b0387169161ffff8916917fb9d0acb419ab21384716fbeaa0bcbc172f6347c9bf4fc0614c4e79fc47b36e119181900360800190a3505050505050565b6001606555565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161208257505f61076c565b600183016120bc576040517feab9612d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010190565b5f54610100900460ff1661215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b610859612280565b5f54610100900460ff166121f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b61085961231f565b5f61076c825490565b611484609c61ffff83166123b5565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561226557602002820191905f5260205f20905b815481526020019060010190808311612251575b50505050509050919050565b611484609c61ffff83166123c0565b5f54610100900460ff16612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b6108593361200c565b5f54610100900460ff16612005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b5f611b6483836123cb565b5f611b6483836124ae565b5f81815260018301602052604081205480156124a5575f6123ed600183612c03565b85549091505f9061240090600190612c03565b905081811461245f575f865f01828154811061241e5761241e612b5f565b905f5260205f200154905080875f01848154811061243e5761243e612b5f565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061247057612470612c4e565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061076c565b5f91505061076c565b5f8181526001830160205260408120546124f357508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561076c565b505f61076c565b602080825282518282018190525f919060409081850190868401855b82811015612548578151805161ffff1685528601516001600160a01b0316868501529284019290850190600101612516565b5091979650505050505050565b803561ffff81168114612566575f80fd5b919050565b5f6020828403121561257b575f80fd5b611b6482612555565b80356001600160a01b0381168114612566575f80fd5b5f602082840312156125aa575f80fd5b611b6482612584565b80358015158114612566575f80fd5b5f805f805f60a086880312156125d6575f80fd5b6125df86612555565b94506125ed60208701612584565b935060408601359250612602606087016125b3565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101561264e57835161ffff168352928401929184019160010161262e565b50909695505050505050565b5f805f805f8060c0878903121561266f575f80fd5b61267887612555565b955061268660208801612584565b94506040870135935061269b606088016125b3565b92506126a9608088016125b3565b915060a087013590509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612730576127306126bc565b604052919050565b5f67ffffffffffffffff821115612751576127516126bc565b5060051b60200190565b5f82601f83011261276a575f80fd5b8135602061277f61277a83612738565b6126e9565b8083825260208201915060208460051b8701019350868411156127a0575f80fd5b602086015b848110156127c3576127b681612555565b83529183019183016127a5565b509695505050505050565b5f82601f8301126127dd575f80fd5b813560206127ed61277a83612738565b8083825260208201915060208460051b87010193508684111561280e575f80fd5b602086015b848110156127c35780358352918301918301612813565b5f806040838503121561283b575f80fd5b823567ffffffffffffffff80821115612852575f80fd5b61285e8683870161275b565b93506020850135915080821115612873575f80fd5b50612880858286016127ce565b9150509250929050565b5f8083601f84011261289a575f80fd5b50813567ffffffffffffffff8111156128b1575f80fd5b6020830191508360208260051b85010111156128cb575f80fd5b9250929050565b5f805f80604085870312156128e5575f80fd5b843567ffffffffffffffff808211156128fc575f80fd5b6129088883890161288a565b90965094506020870135915080821115612920575f80fd5b5061292d8782880161288a565b95989497509550505050565b5f82601f830112612948575f80fd5b8135602061295861277a83612738565b8083825260208201915060208460051b870101935086841115612979575f80fd5b602086015b848110156127c35761298f81612584565b835291830191830161297e565b5f82601f8301126129ab575f80fd5b813560206129bb61277a83612738565b8083825260208201915060208460051b8701019350868411156129dc575f80fd5b602086015b848110156127c3576129f2816125b3565b83529183019183016129e1565b5f805f805f60a08688031215612a13575f80fd5b853567ffffffffffffffff80821115612a2a575f80fd5b612a3689838a0161275b565b96506020880135915080821115612a4b575f80fd5b612a5789838a01612939565b95506040880135915080821115612a6c575f80fd5b612a7889838a016127ce565b94506060880135915080821115612a8d575f80fd5b612a9989838a0161299c565b93506080880135915080821115612aae575f80fd5b50612abb888289016127ce565b9150509295509295909350565b5f8060408385031215612ad9575f80fd5b612ae283612555565b946020939093013593505050565b5f8060408385031215612b01575f80fd5b823567ffffffffffffffff80821115612b18575f80fd5b612b2486838701612939565b93506020850135915080821115612b39575f80fd5b506128808582860161299c565b5f60208284031215612b56575f80fd5b611b64826125b3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612b9c575f80fd5b815160ff81168114611b64575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761076c5761076c612bac565b8082018082111561076c5761076c612bac565b8181038181111561076c5761076c612bac565b5f82612c49577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a +0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80638cbab7e4116100fe578063ce67be261161009e578063ef0fde0f1161006e578063ef0fde0f146104bf578063efeadb6d146104d2578063f2fde38b146104e5578063fce40489146104f8575f80fd5b8063ce67be261461047e578063dbbb2faa14610486578063dddc98be14610499578063e3de72a5146104ac575f80fd5b8063a1218001116100d9578063a121800114610432578063a313d00714610445578063b10b69ee14610458578063c4d66de81461046b575f80fd5b80638cbab7e4146103f15780638da5cb5b146104045780639190202e1461041f575f80fd5b80635c45246b11610169578063724f91ce11610144578063724f91ce146103105780637304880c1461034657806385519c36146103595780638c399691146103de575f80fd5b80635c45246b146102de5780636f6d6cc1146102f3578063715018a614610308575f80fd5b806322bd5c1c116101a457806322bd5c1c146102795780632848aeaf146102965780632a1ea5a2146102b85780634cbcdd13146102cb575f80fd5b80631585458c146101ca57806319904c33146101e85780631c58e79314610215575b5f80fd5b6101d261050b565b6040516101df91906125af565b60405180910390f35b6102076101f6366004612620565b60996020525f908152604090205481565b6040519081526020016101df565b610228610223366004612620565b61060a565b6040805183516001600160a01b03168152602080850151908201528382015115159181019190915260608084015160ff169082015260809283015192810192909252151560a082015260c0016101df565b609b546102869060ff1681565b60405190151581526020016101df565b6102866102a436600461264f565b609a6020525f908152604090205460ff1681565b6102076102c6366004612620565b610700565b6102866102d9366004612620565b610768565b6102f16102ec366004612677565b61077e565b005b6102fb6107ac565b6040516101df91906126c8565b6102f1610854565b61033361031e36600461264f565b60986020525f908152604090205461ffff1681565b60405161ffff90911681526020016101df565b6102f161035436600461270f565b610867565b6103a4610367366004612620565b60976020525f908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff808316926101009004169085565b604080516001600160a01b03909616865260208601949094529115159284019290925260ff9091166060830152608082015260a0016101df565b6102f16103ec3660046128df565b610c46565b6103336103ff36600461264f565b610e4b565b6033546040516001600160a01b0390911681526020016101df565b6102f161042d366004612987565b610eb4565b6102f1610440366004612ab4565b611055565b610207610453366004612620565b611171565b6102f1610466366004612b7d565b6111dc565b6102f161047936600461264f565b611345565b610207611513565b6102f1610494366004612620565b611523565b6102076104a7366004612b7d565b6116a5565b6102f16104ba366004612ba5565b61180d565b6102f16104cd366004612b7d565b61194b565b6102f16104e0366004612bfb565b611ab3565b6102f16104f336600461264f565b611b20565b610286610506366004612620565b611bca565b60605f610518609c611c0d565b90505f815167ffffffffffffffff81111561053557610535612771565b60405190808252806020026020018201604052801561057957816020015b604080518082019091525f80825260208201528152602001906001900390816105535790505b5090505f5b8251811015610603575f83828151811061059a5761059a612c14565b60209081029190910181015161ffff81165f818152609784526040908190205481518083019092529181526001600160a01b039091169281018390528551919350908590859081106105ee576105ee612c14565b6020908102919091010152505060010161057e565b5092915050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915261ffff82165f908152609760205260408120546001600160a01b0316610686576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505061ffff81165f90815260976020908152604091829020825160a08101845281546001600160a01b031681526001820154928101839052600282015460ff80821615159583019590955261010090049093166060840152600301546080830152801515906106f490611c20565b60208301529092909150565b61ffff81165f908152609760205260408120546001600160a01b0316610752576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526099602052604090205490565b5f610778609c61ffff8416611c53565b92915050565b610786611c6a565b61078e611cde565b61079b8585858585611d51565b6107a56001606555565b5050505050565b60605f6107b9609c611c0d565b90505f815167ffffffffffffffff8111156107d6576107d6612771565b6040519080825280602002602001820160405280156107ff578160200160208202803683370190505b5090505f5b82518110156106035782818151811061081f5761081f612c14565b602002602001015182828151811061083957610839612c14565b61ffff90921660209283029190910190910152600101610804565b61085c611c6a565b6108655f6120c1565b565b61086f611c6a565b610877611cde565b61ffff86165f908152609760205260409020546001600160a01b03166108c9576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610909576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610942576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385165f9081526098602052604090205461ffff16801580159061097557508661ffff168161ffff1614155b156109ac576040517fe4476a1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a29575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a2691810190612c41565b60015b15610a315790505b61ffff88165f9081526097602090815260409182902054825160a081019093526001600160a01b038a811684521691908101610a6d898961212a565b815286151560208083019190915260ff808616604080850191909152606093840189905261ffff8e165f90815260978452819020855181546001600160a01b039182167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161782559386015160018201559085015160028201805495870151909316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941793909317905560809092015160039091015581811690891614610bb9576001600160a01b038181165f9081526098602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155928b1682529020805490911661ffff8b161790555b61ffff89165f8181526099602052604080822091909155516001600160a01b038a1691907f60281b1abf645864e8443ca11a3c3b51a6a9203a376da58db7919f7cfebc4aa990610c29908b908a9088908b90938452911515602084015260ff166040830152606082015260800190565b60405180910390a3505050610c3e6001606555565b505050505050565b5f610c596033546001600160a01b031690565b609b546001600160a01b0391909116331491505f9060ff168015610c8b5750335f908152609a602052604090205460ff165b905081158015610c99575080155b15610cd0576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251845114610d0b576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84518110156107a5575f6001600160a01b031660975f878481518110610d3557610d35612c14565b60209081029190910181015161ffff1682528101919091526040015f20546001600160a01b031614610e4357838181518110610d7357610d73612c14565b60200260200101515f0315610e4357838181518110610d9457610d94612c14565b602002602001015160995f878481518110610db157610db1612c14565b602002602001015161ffff1661ffff1681526020019081526020015f2081905550848181518110610de457610de4612c14565b602002602001015161ffff167fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467858381518110610e2357610e23612c14565b6020026020010151604051610e3a91815260200190565b60405180910390a25b600101610d0d565b6001600160a01b0381165f9081526098602052604081205461ffff1680158015610e7d57506001600160a01b03831615155b15610778576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ebc611c6a565b828114610ef5576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156107a5575f858583818110610f1257610f12612c14565b9050602002016020810190610f279190612620565b90505f848484818110610f3c57610f3c612c14565b9050602002016020810190610f519190612bfb565b61ffff83165f908152609760205260409020549091506001600160a01b0316610f7b57505061104d565b61ffff82165f9081526097602052604090206002015460ff16801515821515146110495761ffff83165f90815260976020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831580159190911790915561101a5760405161ffff8416907fba78a86bd882b78fb95715a0d827188ec0a8ad3f500310d33a39b94c9ff677b8905f90a2611049565b60405161ffff8416907fa625871090c2595895650b8e9222d1a3267cedf9de819bf446400962ce1357ef905f90a25b5050505b600101610ef7565b61105d611c6a565b611065611cde565b8351855114158061107857508251855114155b8061108557508151855114155b8061109257508051855114155b156110c9576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85518110156111665761115e8682815181106110e9576110e9612c14565b602002602001015186838151811061110357611103612c14565b602002602001015186848151811061111d5761111d612c14565b602002602001015186858151811061113757611137612c14565b602002602001015186868151811061115157611151612c14565b6020026020010151611d51565b6001016110cb565b506107a56001606555565b61ffff81165f908152609760205260408120546001600160a01b03166111c3576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526097602052604090206003015490565b5f6111ef6033546001600160a01b031690565b609b546001600160a01b0391909116331491505f9060ff1680156112215750335f908152609a602052604090205460ff165b90508115801561122f575080155b15611266576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f908152609760205260409020546001600160a01b03166112b8576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f036112f0576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f8181526099602052604090819020859055517fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467906113379086815260200190565b60405180910390a250505050565b5f54610100900460ff161580801561136357505f54600160ff909116105b8061137c5750303b15801561137c57505f5460ff166001145b61140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611469575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611471612179565b611479612217565b611482826120c1565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561150f575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f61151e609c6122b5565b905090565b61152b611c6a565b61ffff81165f908152609760205260409020546001600160a01b03168061157e576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158d609c61ffff8416611c53565b6115c3576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f81815260976020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090811690915560039091018490556001600160a01b038616845260988352818420805490911690559282526099905290812055611668826122be565b6040516001600160a01b0382169061ffff8416907f330282f89b53f03dfc62130ddb33062a147ad25d691915b575732f62fb6fce9a905f90a35050565b61ffff82165f908152609760205260408120546001600160a01b03166116f7576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83165f818152609760209081526040808320815160a08101835281546001600160a01b03168152600182015481850152600282015460ff8082161515838601526101009091041660608201526003909101546080820152938352609990915281205490819003611795576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8260800151856117a69190612c8e565b90508160016117b58284612ca5565b6117bf9190612cb8565b6117c99190612ccb565b9350835f03611804576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b611815611c6a565b8051825114611850576040517fd9183d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b82518110156119465781818151811061186d5761186d612c14565b6020026020010151609a5f85848151811061188a5761188a612c14565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055508281815181106118d9576118d9612c14565b60200260200101516001600160a01b03167f6dad0aed33f4b7f07095619b668698e17943fd9f4c83e7cfcc7f6dd880a1158883838151811061191d5761191d612c14565b6020026020010151604051611936911515815260200190565b60405180910390a2600101611852565b505050565b5f61195e6033546001600160a01b031690565b609b546001600160a01b0391909116331491505f9060ff1680156119905750335f908152609a602052604090205460ff165b90508115801561199e575080155b156119d5576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f908152609760205260409020546001600160a01b0316611a27576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611a60576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f818152609760209081526040808320600301879055609982528083209290925590518581527f7b614d0c690ae942aec30d9378eb72c3678dd8cb74a55343c87baf8dfe078e749101611337565b611abb611c6a565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb39060200160405180910390a150565b611b28611c6a565b6001600160a01b038116611bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611404565b611bc7816120c1565b50565b61ffff81165f908152609760205260408120546001600160a01b0316611bf157505f919050565b5061ffff165f9081526097602052604090206002015460ff1690565b60605f611c19836122cd565b9392505050565b5f81611c2d57505f919050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8181526001830160205260408120541515611c19565b6033546001600160a01b03163314610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611404565b600260655403611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611404565b6002606555565b6001600160a01b038416611d91576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461ffff165f03611dce576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff85165f908152609760205260409020546001600160a01b031615611e21576040517fc9b3c8a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526098602052604090205461ffff1615611e74576040517fe4476a1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611ead576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f2a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f2791810190612c41565b60015b15611f325790505b6040518060a00160405280866001600160a01b03168152602001611f56868661212a565b81525f602080830182905260ff808616604080860191909152606094850188905261ffff8c1680855260978452818520875181546001600160a01b039182167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617825588860151600183015588840151600283018054998b0151909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000998a161717909455608090970151600390970196909655908a168352609890915290208054909116909117905561205986612326565b604080518581525f602082015260ff8316818301526060810184905290516001600160a01b0387169161ffff8916917fb9d0acb419ab21384716fbeaa0bcbc172f6347c9bf4fc0614c4e79fc47b36e119181900360800190a3505050505050565b6001606555565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161213757505f610778565b60018301612171576040517feab9612d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010190565b5f54610100900460ff1661220f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b610865612335565b5f54610100900460ff166122ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b6108656123d4565b5f610778825490565b61150f609c61ffff831661246a565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561231a57602002820191905f5260205f20905b815481526020019060010190808311612306575b50505050509050919050565b61150f609c61ffff8316612475565b5f54610100900460ff166123cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b610865336120c1565b5f54610100900460ff166120ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b5f611c198383612480565b5f611c198383612563565b5f818152600183016020526040812054801561255a575f6124a2600183612cb8565b85549091505f906124b590600190612cb8565b9050818114612514575f865f0182815481106124d3576124d3612c14565b905f5260205f200154905080875f0184815481106124f3576124f3612c14565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061252557612525612d03565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610778565b5f915050610778565b5f8181526001830160205260408120546125a857508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610778565b505f610778565b602080825282518282018190525f919060409081850190868401855b828110156125fd578151805161ffff1685528601516001600160a01b03168685015292840192908501906001016125cb565b5091979650505050505050565b803561ffff8116811461261b575f80fd5b919050565b5f60208284031215612630575f80fd5b611c198261260a565b80356001600160a01b038116811461261b575f80fd5b5f6020828403121561265f575f80fd5b611c1982612639565b8035801515811461261b575f80fd5b5f805f805f60a0868803121561268b575f80fd5b6126948661260a565b94506126a260208701612639565b9350604086013592506126b760608701612668565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101561270357835161ffff16835292840192918401916001016126e3565b50909695505050505050565b5f805f805f8060c08789031215612724575f80fd5b61272d8761260a565b955061273b60208801612639565b94506040870135935061275060608801612668565b925061275e60808801612668565b915060a087013590509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127e5576127e5612771565b604052919050565b5f67ffffffffffffffff82111561280657612806612771565b5060051b60200190565b5f82601f83011261281f575f80fd5b8135602061283461282f836127ed565b61279e565b8083825260208201915060208460051b870101935086841115612855575f80fd5b602086015b848110156128785761286b8161260a565b835291830191830161285a565b509695505050505050565b5f82601f830112612892575f80fd5b813560206128a261282f836127ed565b8083825260208201915060208460051b8701019350868411156128c3575f80fd5b602086015b8481101561287857803583529183019183016128c8565b5f80604083850312156128f0575f80fd5b823567ffffffffffffffff80821115612907575f80fd5b61291386838701612810565b93506020850135915080821115612928575f80fd5b5061293585828601612883565b9150509250929050565b5f8083601f84011261294f575f80fd5b50813567ffffffffffffffff811115612966575f80fd5b6020830191508360208260051b8501011115612980575f80fd5b9250929050565b5f805f806040858703121561299a575f80fd5b843567ffffffffffffffff808211156129b1575f80fd5b6129bd8883890161293f565b909650945060208701359150808211156129d5575f80fd5b506129e28782880161293f565b95989497509550505050565b5f82601f8301126129fd575f80fd5b81356020612a0d61282f836127ed565b8083825260208201915060208460051b870101935086841115612a2e575f80fd5b602086015b8481101561287857612a4481612639565b8352918301918301612a33565b5f82601f830112612a60575f80fd5b81356020612a7061282f836127ed565b8083825260208201915060208460051b870101935086841115612a91575f80fd5b602086015b8481101561287857612aa781612668565b8352918301918301612a96565b5f805f805f60a08688031215612ac8575f80fd5b853567ffffffffffffffff80821115612adf575f80fd5b612aeb89838a01612810565b96506020880135915080821115612b00575f80fd5b612b0c89838a016129ee565b95506040880135915080821115612b21575f80fd5b612b2d89838a01612883565b94506060880135915080821115612b42575f80fd5b612b4e89838a01612a51565b93506080880135915080821115612b63575f80fd5b50612b7088828901612883565b9150509295509295909350565b5f8060408385031215612b8e575f80fd5b612b978361260a565b946020939093013593505050565b5f8060408385031215612bb6575f80fd5b823567ffffffffffffffff80821115612bcd575f80fd5b612bd9868387016129ee565b93506020850135915080821115612bee575f80fd5b5061293585828601612a51565b5f60208284031215612c0b575f80fd5b611c1982612668565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612c51575f80fd5b815160ff81168114611c19575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761077857610778612c61565b8082018082111561077857610778612c61565b8181038181111561077857610778612c61565b5f82612cfe577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a diff --git a/bindings/bindings/l2tokenregistry.go b/bindings/bindings/l2tokenregistry.go index 2110dfea..b8609f24 100644 --- a/bindings/bindings/l2tokenregistry.go +++ b/bindings/bindings/l2tokenregistry.go @@ -46,8 +46,8 @@ type IL2TokenRegistryTokenInfo struct { // L2TokenRegistryMetaData contains all meta data concerning the L2TokenRegistry contract. var L2TokenRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DifferentLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBalanceSlot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidScale\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"name\":\"AllowListEnabledUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"val\",\"type\":\"bool\"}],\"name\":\"AllowListSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"}],\"name\":\"PriceRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"TokenActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"TokenDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"name\":\"TokenInfoUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newScale\",\"type\":\"uint256\"}],\"name\":\"TokenScaleUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowListEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_tokenIDs\",\"type\":\"uint16[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_prices\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdatePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_tokenIDs\",\"type\":\"uint16[]\"},{\"internalType\":\"bool[]\",\"name\":\"_isActives\",\"type\":\"bool[]\"}],\"name\":\"batchUpdateTokenStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_ethAmount\",\"type\":\"uint256\"}],\"name\":\"calculateTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedIDList\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokenList\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"internalType\":\"structIL2TokenRegistry.TokenEntry[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getTokenIdByAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"internalType\":\"structIL2TokenRegistry.TokenInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"getTokenPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"getTokenScale\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"isTokenActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"priceRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"priceRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_needBalanceSlot\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_scale\",\"type\":\"uint256\"}],\"name\":\"registerToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_tokenIDs\",\"type\":\"uint16[]\"},{\"internalType\":\"address[]\",\"name\":\"_tokenAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_balanceSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bool[]\",\"name\":\"_needBalanceSlots\",\"type\":\"bool[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_scales\",\"type\":\"uint256[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"user\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"val\",\"type\":\"bool[]\"}],\"name\":\"setAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_allowListEnabled\",\"type\":\"bool\"}],\"name\":\"setAllowListEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"tokenRegistration\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"tokenRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_newPrice\",\"type\":\"uint256\"}],\"name\":\"updatePriceRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_needBalanceSlot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_scale\",\"type\":\"uint256\"}],\"name\":\"updateTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_newScale\",\"type\":\"uint256\"}],\"name\":\"updateTokenScale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052609b805460ff191660011790553480156200001d575f80fd5b50620000286200002e565b620000ec565b5f54610100900460ff16156200009a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000ea575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c8880620000fa5f395ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80638cbab7e4116100fe578063ce67be261161009e578063ef0fde0f1161006e578063ef0fde0f146104bd578063efeadb6d146104d0578063f2fde38b146104e3578063fce40489146104f6575f80fd5b8063ce67be261461047c578063dbbb2faa14610484578063dddc98be14610497578063e3de72a5146104aa575f80fd5b8063a1218001116100d9578063a121800114610430578063a313d00714610443578063b10b69ee14610456578063c4d66de814610469575f80fd5b80638cbab7e4146103ef5780638da5cb5b146104025780639190202e1461041d575f80fd5b80635c45246b11610169578063724f91ce11610144578063724f91ce1461030e5780637304880c1461034457806385519c36146103575780638c399691146103dc575f80fd5b80635c45246b146102dc5780636f6d6cc1146102f1578063715018a614610306575f80fd5b806322bd5c1c116101a457806322bd5c1c146102775780632848aeaf146102945780632a1ea5a2146102b65780634cbcdd13146102c9575f80fd5b80631585458c146101ca57806319904c33146101e85780631c58e79314610215575b5f80fd5b6101d2610509565b6040516101df91906124fa565b60405180910390f35b6102076101f636600461256b565b60996020525f908152604090205481565b6040519081526020016101df565b61022861022336600461256b565b610608565b6040516101df91905f60a0820190506001600160a01b0383511682526020830151602083015260408301511515604083015260ff60608401511660608301526080830151608083015292915050565b609b546102849060ff1681565b60405190151581526020016101df565b6102846102a236600461259a565b609a6020525f908152604090205460ff1681565b6102076102c436600461256b565b6106f4565b6102846102d736600461256b565b61075c565b6102ef6102ea3660046125c2565b610772565b005b6102f96107a0565b6040516101df9190612613565b6102ef610848565b61033161031c36600461259a565b60986020525f908152604090205461ffff1681565b60405161ffff90911681526020016101df565b6102ef61035236600461265a565b61085b565b6103a261036536600461256b565b60976020525f908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff808316926101009004169085565b604080516001600160a01b03909616865260208601949094529115159284019290925260ff9091166060830152608082015260a0016101df565b6102ef6103ea36600461282a565b610bee565b6103316103fd36600461259a565b610ddd565b6033546040516001600160a01b0390911681526020016101df565b6102ef61042b3660046128d2565b610e46565b6102ef61043e3660046129ff565b610fe7565b61020761045136600461256b565b611103565b6102ef610464366004612ac8565b61116e565b6102ef61047736600461259a565b6112ba565b610207611488565b6102ef61049236600461256b565b611498565b6102076104a5366004612ac8565b61161a565b6102ef6104b8366004612af0565b611781565b6102ef6104cb366004612ac8565b6118ba565b6102ef6104de366004612b46565b6119fe565b6102ef6104f136600461259a565b611a6b565b61028461050436600461256b565b611b15565b60605f610516609c611b58565b90505f815167ffffffffffffffff811115610533576105336126bc565b60405190808252806020026020018201604052801561057757816020015b604080518082019091525f80825260208201528152602001906001900390816105515790505b5090505f5b8251811015610601575f83828151811061059857610598612b5f565b60209081029190910181015161ffff81165f818152609784526040908190205481518083019092529181526001600160a01b039091169281018390528551919350908590859081106105ec576105ec612b5f565b6020908102919091010152505060010161057c565b5092915050565b6040805160a0810182525f8082526020808301829052828401829052606083018290526080830182905261ffff851682526097905291909120546001600160a01b0316610681576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f90815260976020908152604091829020825160a08101845281546001600160a01b031681526001820154928101839052600282015460ff808216151595830195909552610100900490931660608401526003015460808301526106e990611b6b565b602082015292915050565b61ffff81165f908152609760205260408120546001600160a01b0316610746576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526099602052604090205490565b5f61076c609c61ffff8416611b9e565b92915050565b61077a611bb5565b610782611c29565b61078f8585858585611c9c565b6107996001606555565b5050505050565b60605f6107ad609c611b58565b90505f815167ffffffffffffffff8111156107ca576107ca6126bc565b6040519080825280602002602001820160405280156107f3578160200160208202803683370190505b5090505f5b82518110156106015782818151811061081357610813612b5f565b602002602001015182828151811061082d5761082d612b5f565b61ffff909216602092830291909101909101526001016107f8565b610850611bb5565b6108595f61200c565b565b610863611bb5565b61086b611c29565b61ffff86165f908152609760205260409020546001600160a01b03166108bd576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385166108fd576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385165f9081526098602052604090205461ffff16801580159061093057508661ffff168161ffff1614155b15610967576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109e4575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526109e191810190612b8c565b60015b156109ec5790505b61ffff88165f9081526097602090815260409182902054825160a081019093526001600160a01b038a811684521691908101610a288989612075565b815286151560208083019190915260ff808616604080850191909152606093840189905261ffff8e165f90815260978452819020855181546001600160a01b039182167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161782559386015160018201559085015160028201805495870151909316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941793909317905560809092015160039091015581811690891614610b74576001600160a01b038181165f9081526098602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155928b1682529020805490911661ffff8b161790555b876001600160a01b03168961ffff167f60281b1abf645864e8443ca11a3c3b51a6a9203a376da58db7919f7cfebc4aa989888689604051610bd19493929190938452911515602084015260ff166040830152606082015260800190565b60405180910390a3505050610be66001606555565b505050505050565b609b5460ff168015610c0f5750335f908152609a602052604090205460ff16155b8015610c2657506033546001600160a01b03163314155b15610c5d576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610c98576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610dd8575f6001600160a01b031660975f858481518110610cc257610cc2612b5f565b60209081029190910181015161ffff1682528101919091526040015f20546001600160a01b031614610dd057818181518110610d0057610d00612b5f565b60200260200101515f0315610dd057818181518110610d2157610d21612b5f565b602002602001015160995f858481518110610d3e57610d3e612b5f565b602002602001015161ffff1661ffff1681526020019081526020015f2081905550828181518110610d7157610d71612b5f565b602002602001015161ffff167fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467838381518110610db057610db0612b5f565b6020026020010151604051610dc791815260200190565b60405180910390a25b600101610c9a565b505050565b6001600160a01b0381165f9081526098602052604081205461ffff1680158015610e0f57506001600160a01b03831615155b1561076c576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4e611bb5565b828114610e87576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b83811015610799575f858583818110610ea457610ea4612b5f565b9050602002016020810190610eb9919061256b565b90505f848484818110610ece57610ece612b5f565b9050602002016020810190610ee39190612b46565b61ffff83165f908152609760205260409020549091506001600160a01b0316610f0d575050610fdf565b61ffff82165f9081526097602052604090206002015460ff1680151582151514610fdb5761ffff83165f90815260976020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168315801591909117909155610fac5760405161ffff8416907fba78a86bd882b78fb95715a0d827188ec0a8ad3f500310d33a39b94c9ff677b8905f90a2610fdb565b60405161ffff8416907fa625871090c2595895650b8e9222d1a3267cedf9de819bf446400962ce1357ef905f90a25b5050505b600101610e89565b610fef611bb5565b610ff7611c29565b8351855114158061100a57508251855114155b8061101757508151855114155b8061102457508051855114155b1561105b576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85518110156110f8576110f086828151811061107b5761107b612b5f565b602002602001015186838151811061109557611095612b5f565b60200260200101518684815181106110af576110af612b5f565b60200260200101518685815181106110c9576110c9612b5f565b60200260200101518686815181106110e3576110e3612b5f565b6020026020010151611c9c565b60010161105d565b506107996001606555565b61ffff81165f908152609760205260408120546001600160a01b0316611155576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526097602052604090206003015490565b609b5460ff16801561118f5750335f908152609a602052604090205460ff16155b80156111a657506033546001600160a01b03163314155b156111dd576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f908152609760205260409020546001600160a01b031661122f576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611267576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f8181526099602052604090819020839055517fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467906112ae9084815260200190565b60405180910390a25050565b5f54610100900460ff16158080156112d857505f54600160ff909116105b806112f15750303b1580156112f157505f5460ff166001145b611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156113de575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6113e66120c4565b6113ee612162565b6113f78261200c565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611484575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f611493609c612200565b905090565b6114a0611bb5565b61ffff81165f908152609760205260409020546001600160a01b0316806114f3576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611502609c61ffff8416611b9e565b611538576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f81815260976020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090811690915560039091018490556001600160a01b0386168452609883528184208054909116905592825260999052908120556115dd82612209565b6040516001600160a01b0382169061ffff8416907f330282f89b53f03dfc62130ddb33062a147ad25d691915b575732f62fb6fce9a905f90a35050565b61ffff82165f908152609760205260408120546001600160a01b031661166c576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83165f818152609760209081526040808320815160a08101835281546001600160a01b03168152600182015481850152600282015460ff808216151583860152610100909104166060820152600390910154608082015293835260999091528120549081900361170a576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82608001518561171b9190612bd9565b905081600161172a8284612bf0565b6117349190612c03565b61173e9190612c16565b9350835f03611778576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b611789611bb5565b80518251146117c4576040517fd9183d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610dd8578181815181106117e1576117e1612b5f565b6020026020010151609a5f8584815181106117fe576117fe612b5f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555082818151811061184d5761184d612b5f565b60200260200101516001600160a01b03167f6dad0aed33f4b7f07095619b668698e17943fd9f4c83e7cfcc7f6dd880a1158883838151811061189157611891612b5f565b60200260200101516040516118aa911515815260200190565b60405180910390a26001016117c6565b609b5460ff1680156118db5750335f908152609a602052604090205460ff16155b80156118f257506033546001600160a01b03163314155b15611929576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f908152609760205260409020546001600160a01b031661197b576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f036119b4576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f8181526097602052604090819020600301839055517f7b614d0c690ae942aec30d9378eb72c3678dd8cb74a55343c87baf8dfe078e74906112ae9084815260200190565b611a06611bb5565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb39060200160405180910390a150565b611a73611bb5565b6001600160a01b038116611b09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611379565b611b128161200c565b50565b61ffff81165f908152609760205260408120546001600160a01b0316611b3c57505f919050565b5061ffff165f9081526097602052604090206002015460ff1690565b60605f611b6483612218565b9392505050565b5f81611b7857505f919050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8181526001830160205260408120541515611b64565b6033546001600160a01b03163314610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611379565b600260655403611c95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611379565b6002606555565b6001600160a01b038416611cdc576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461ffff165f03611d19576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff85165f908152609760205260409020546001600160a01b031615611d6c576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526098602052604090205461ffff1615611dbf576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611df8576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611e75575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611e7291810190612b8c565b60015b15611e7d5790505b6040518060a00160405280866001600160a01b03168152602001611ea18686612075565b81525f602080830182905260ff808616604080860191909152606094850188905261ffff8c1680855260978452818520875181546001600160a01b039182167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617825588860151600183015588840151600283018054998b0151909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000998a161717909455608090970151600390970196909655908a1683526098909152902080549091169091179055611fa486612271565b604080518581525f602082015260ff8316818301526060810184905290516001600160a01b0387169161ffff8916917fb9d0acb419ab21384716fbeaa0bcbc172f6347c9bf4fc0614c4e79fc47b36e119181900360800190a3505050505050565b6001606555565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161208257505f61076c565b600183016120bc576040517feab9612d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010190565b5f54610100900460ff1661215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b610859612280565b5f54610100900460ff166121f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b61085961231f565b5f61076c825490565b611484609c61ffff83166123b5565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561226557602002820191905f5260205f20905b815481526020019060010190808311612251575b50505050509050919050565b611484609c61ffff83166123c0565b5f54610100900460ff16612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b6108593361200c565b5f54610100900460ff16612005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611379565b5f611b6483836123cb565b5f611b6483836124ae565b5f81815260018301602052604081205480156124a5575f6123ed600183612c03565b85549091505f9061240090600190612c03565b905081811461245f575f865f01828154811061241e5761241e612b5f565b905f5260205f200154905080875f01848154811061243e5761243e612b5f565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061247057612470612c4e565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061076c565b5f91505061076c565b5f8181526001830160205260408120546124f357508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561076c565b505f61076c565b602080825282518282018190525f919060409081850190868401855b82811015612548578151805161ffff1685528601516001600160a01b0316868501529284019290850190600101612516565b5091979650505050505050565b803561ffff81168114612566575f80fd5b919050565b5f6020828403121561257b575f80fd5b611b6482612555565b80356001600160a01b0381168114612566575f80fd5b5f602082840312156125aa575f80fd5b611b6482612584565b80358015158114612566575f80fd5b5f805f805f60a086880312156125d6575f80fd5b6125df86612555565b94506125ed60208701612584565b935060408601359250612602606087016125b3565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101561264e57835161ffff168352928401929184019160010161262e565b50909695505050505050565b5f805f805f8060c0878903121561266f575f80fd5b61267887612555565b955061268660208801612584565b94506040870135935061269b606088016125b3565b92506126a9608088016125b3565b915060a087013590509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612730576127306126bc565b604052919050565b5f67ffffffffffffffff821115612751576127516126bc565b5060051b60200190565b5f82601f83011261276a575f80fd5b8135602061277f61277a83612738565b6126e9565b8083825260208201915060208460051b8701019350868411156127a0575f80fd5b602086015b848110156127c3576127b681612555565b83529183019183016127a5565b509695505050505050565b5f82601f8301126127dd575f80fd5b813560206127ed61277a83612738565b8083825260208201915060208460051b87010193508684111561280e575f80fd5b602086015b848110156127c35780358352918301918301612813565b5f806040838503121561283b575f80fd5b823567ffffffffffffffff80821115612852575f80fd5b61285e8683870161275b565b93506020850135915080821115612873575f80fd5b50612880858286016127ce565b9150509250929050565b5f8083601f84011261289a575f80fd5b50813567ffffffffffffffff8111156128b1575f80fd5b6020830191508360208260051b85010111156128cb575f80fd5b9250929050565b5f805f80604085870312156128e5575f80fd5b843567ffffffffffffffff808211156128fc575f80fd5b6129088883890161288a565b90965094506020870135915080821115612920575f80fd5b5061292d8782880161288a565b95989497509550505050565b5f82601f830112612948575f80fd5b8135602061295861277a83612738565b8083825260208201915060208460051b870101935086841115612979575f80fd5b602086015b848110156127c35761298f81612584565b835291830191830161297e565b5f82601f8301126129ab575f80fd5b813560206129bb61277a83612738565b8083825260208201915060208460051b8701019350868411156129dc575f80fd5b602086015b848110156127c3576129f2816125b3565b83529183019183016129e1565b5f805f805f60a08688031215612a13575f80fd5b853567ffffffffffffffff80821115612a2a575f80fd5b612a3689838a0161275b565b96506020880135915080821115612a4b575f80fd5b612a5789838a01612939565b95506040880135915080821115612a6c575f80fd5b612a7889838a016127ce565b94506060880135915080821115612a8d575f80fd5b612a9989838a0161299c565b93506080880135915080821115612aae575f80fd5b50612abb888289016127ce565b9150509295509295909350565b5f8060408385031215612ad9575f80fd5b612ae283612555565b946020939093013593505050565b5f8060408385031215612b01575f80fd5b823567ffffffffffffffff80821115612b18575f80fd5b612b2486838701612939565b93506020850135915080821115612b39575f80fd5b506128808582860161299c565b5f60208284031215612b56575f80fd5b611b64826125b3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612b9c575f80fd5b815160ff81168114611b64575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761076c5761076c612bac565b8082018082111561076c5761076c612bac565b8181038181111561076c5761076c612bac565b5f82612c49577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DifferentLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBalanceSlot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidScale\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTokenID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenAddressAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenIDAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TokenNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroTokenAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"name\":\"AllowListEnabledUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"val\",\"type\":\"bool\"}],\"name\":\"AllowListSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPrice\",\"type\":\"uint256\"}],\"name\":\"PriceRatioUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"TokenActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"TokenDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"name\":\"TokenInfoUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"TokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newScale\",\"type\":\"uint256\"}],\"name\":\"TokenScaleUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowListEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_tokenIDs\",\"type\":\"uint16[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_prices\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdatePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_tokenIDs\",\"type\":\"uint16[]\"},{\"internalType\":\"bool[]\",\"name\":\"_isActives\",\"type\":\"bool[]\"}],\"name\":\"batchUpdateTokenStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_ethAmount\",\"type\":\"uint256\"}],\"name\":\"calculateTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedIDList\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokenCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokenList\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"internalType\":\"structIL2TokenRegistry.TokenEntry[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getTokenIdByAddress\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"internalType\":\"structIL2TokenRegistry.TokenInfo\",\"name\":\"info\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"hasBalanceSlot\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"getTokenPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"getTokenScale\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"isTokenActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"isTokenSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"priceRatio\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"priceRatio\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_needBalanceSlot\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_scale\",\"type\":\"uint256\"}],\"name\":\"registerToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_tokenIDs\",\"type\":\"uint16[]\"},{\"internalType\":\"address[]\",\"name\":\"_tokenAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_balanceSlots\",\"type\":\"bytes32[]\"},{\"internalType\":\"bool[]\",\"name\":\"_needBalanceSlots\",\"type\":\"bool[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_scales\",\"type\":\"uint256[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"user\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"val\",\"type\":\"bool[]\"}],\"name\":\"setAllowList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_allowListEnabled\",\"type\":\"bool\"}],\"name\":\"setAllowListEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"tokenRegistration\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenID\",\"type\":\"uint16\"}],\"name\":\"tokenRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scale\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_newPrice\",\"type\":\"uint256\"}],\"name\":\"updatePriceRatio\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_balanceSlot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_needBalanceSlot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_isActive\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_scale\",\"type\":\"uint256\"}],\"name\":\"updateTokenInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_tokenID\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"_newScale\",\"type\":\"uint256\"}],\"name\":\"updateTokenScale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801562000010575f80fd5b506200001b62000021565b620000df565b5f54610100900460ff16156200008d5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000dd575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612d3d80620000ed5f395ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80638cbab7e4116100fe578063ce67be261161009e578063ef0fde0f1161006e578063ef0fde0f146104bf578063efeadb6d146104d2578063f2fde38b146104e5578063fce40489146104f8575f80fd5b8063ce67be261461047e578063dbbb2faa14610486578063dddc98be14610499578063e3de72a5146104ac575f80fd5b8063a1218001116100d9578063a121800114610432578063a313d00714610445578063b10b69ee14610458578063c4d66de81461046b575f80fd5b80638cbab7e4146103f15780638da5cb5b146104045780639190202e1461041f575f80fd5b80635c45246b11610169578063724f91ce11610144578063724f91ce146103105780637304880c1461034657806385519c36146103595780638c399691146103de575f80fd5b80635c45246b146102de5780636f6d6cc1146102f3578063715018a614610308575f80fd5b806322bd5c1c116101a457806322bd5c1c146102795780632848aeaf146102965780632a1ea5a2146102b85780634cbcdd13146102cb575f80fd5b80631585458c146101ca57806319904c33146101e85780631c58e79314610215575b5f80fd5b6101d261050b565b6040516101df91906125af565b60405180910390f35b6102076101f6366004612620565b60996020525f908152604090205481565b6040519081526020016101df565b610228610223366004612620565b61060a565b6040805183516001600160a01b03168152602080850151908201528382015115159181019190915260608084015160ff169082015260809283015192810192909252151560a082015260c0016101df565b609b546102869060ff1681565b60405190151581526020016101df565b6102866102a436600461264f565b609a6020525f908152604090205460ff1681565b6102076102c6366004612620565b610700565b6102866102d9366004612620565b610768565b6102f16102ec366004612677565b61077e565b005b6102fb6107ac565b6040516101df91906126c8565b6102f1610854565b61033361031e36600461264f565b60986020525f908152604090205461ffff1681565b60405161ffff90911681526020016101df565b6102f161035436600461270f565b610867565b6103a4610367366004612620565b60976020525f908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff808316926101009004169085565b604080516001600160a01b03909616865260208601949094529115159284019290925260ff9091166060830152608082015260a0016101df565b6102f16103ec3660046128df565b610c46565b6103336103ff36600461264f565b610e4b565b6033546040516001600160a01b0390911681526020016101df565b6102f161042d366004612987565b610eb4565b6102f1610440366004612ab4565b611055565b610207610453366004612620565b611171565b6102f1610466366004612b7d565b6111dc565b6102f161047936600461264f565b611345565b610207611513565b6102f1610494366004612620565b611523565b6102076104a7366004612b7d565b6116a5565b6102f16104ba366004612ba5565b61180d565b6102f16104cd366004612b7d565b61194b565b6102f16104e0366004612bfb565b611ab3565b6102f16104f336600461264f565b611b20565b610286610506366004612620565b611bca565b60605f610518609c611c0d565b90505f815167ffffffffffffffff81111561053557610535612771565b60405190808252806020026020018201604052801561057957816020015b604080518082019091525f80825260208201528152602001906001900390816105535790505b5090505f5b8251811015610603575f83828151811061059a5761059a612c14565b60209081029190910181015161ffff81165f818152609784526040908190205481518083019092529181526001600160a01b039091169281018390528551919350908590859081106105ee576105ee612c14565b6020908102919091010152505060010161057e565b5092915050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915261ffff82165f908152609760205260408120546001600160a01b0316610686576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505061ffff81165f90815260976020908152604091829020825160a08101845281546001600160a01b031681526001820154928101839052600282015460ff80821615159583019590955261010090049093166060840152600301546080830152801515906106f490611c20565b60208301529092909150565b61ffff81165f908152609760205260408120546001600160a01b0316610752576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526099602052604090205490565b5f610778609c61ffff8416611c53565b92915050565b610786611c6a565b61078e611cde565b61079b8585858585611d51565b6107a56001606555565b5050505050565b60605f6107b9609c611c0d565b90505f815167ffffffffffffffff8111156107d6576107d6612771565b6040519080825280602002602001820160405280156107ff578160200160208202803683370190505b5090505f5b82518110156106035782818151811061081f5761081f612c14565b602002602001015182828151811061083957610839612c14565b61ffff90921660209283029190910190910152600101610804565b61085c611c6a565b6108655f6120c1565b565b61086f611c6a565b610877611cde565b61ffff86165f908152609760205260409020546001600160a01b03166108c9576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610909576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610942576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0385165f9081526098602052604090205461ffff16801580159061097557508661ffff168161ffff1614155b156109ac576040517fe4476a1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050866001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a29575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a2691810190612c41565b60015b15610a315790505b61ffff88165f9081526097602090815260409182902054825160a081019093526001600160a01b038a811684521691908101610a6d898961212a565b815286151560208083019190915260ff808616604080850191909152606093840189905261ffff8e165f90815260978452819020855181546001600160a01b039182167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161782559386015160018201559085015160028201805495870151909316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941793909317905560809092015160039091015581811690891614610bb9576001600160a01b038181165f9081526098602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155928b1682529020805490911661ffff8b161790555b61ffff89165f8181526099602052604080822091909155516001600160a01b038a1691907f60281b1abf645864e8443ca11a3c3b51a6a9203a376da58db7919f7cfebc4aa990610c29908b908a9088908b90938452911515602084015260ff166040830152606082015260800190565b60405180910390a3505050610c3e6001606555565b505050505050565b5f610c596033546001600160a01b031690565b609b546001600160a01b0391909116331491505f9060ff168015610c8b5750335f908152609a602052604090205460ff165b905081158015610c99575080155b15610cd0576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251845114610d0b576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84518110156107a5575f6001600160a01b031660975f878481518110610d3557610d35612c14565b60209081029190910181015161ffff1682528101919091526040015f20546001600160a01b031614610e4357838181518110610d7357610d73612c14565b60200260200101515f0315610e4357838181518110610d9457610d94612c14565b602002602001015160995f878481518110610db157610db1612c14565b602002602001015161ffff1661ffff1681526020019081526020015f2081905550848181518110610de457610de4612c14565b602002602001015161ffff167fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467858381518110610e2357610e23612c14565b6020026020010151604051610e3a91815260200190565b60405180910390a25b600101610d0d565b6001600160a01b0381165f9081526098602052604081205461ffff1680158015610e7d57506001600160a01b03831615155b15610778576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ebc611c6a565b828114610ef5576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156107a5575f858583818110610f1257610f12612c14565b9050602002016020810190610f279190612620565b90505f848484818110610f3c57610f3c612c14565b9050602002016020810190610f519190612bfb565b61ffff83165f908152609760205260409020549091506001600160a01b0316610f7b57505061104d565b61ffff82165f9081526097602052604090206002015460ff16801515821515146110495761ffff83165f90815260976020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831580159190911790915561101a5760405161ffff8416907fba78a86bd882b78fb95715a0d827188ec0a8ad3f500310d33a39b94c9ff677b8905f90a2611049565b60405161ffff8416907fa625871090c2595895650b8e9222d1a3267cedf9de819bf446400962ce1357ef905f90a25b5050505b600101610ef7565b61105d611c6a565b611065611cde565b8351855114158061107857508251855114155b8061108557508151855114155b8061109257508051855114155b156110c9576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85518110156111665761115e8682815181106110e9576110e9612c14565b602002602001015186838151811061110357611103612c14565b602002602001015186848151811061111d5761111d612c14565b602002602001015186858151811061113757611137612c14565b602002602001015186868151811061115157611151612c14565b6020026020010151611d51565b6001016110cb565b506107a56001606555565b61ffff81165f908152609760205260408120546001600160a01b03166111c3576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526097602052604090206003015490565b5f6111ef6033546001600160a01b031690565b609b546001600160a01b0391909116331491505f9060ff1680156112215750335f908152609a602052604090205460ff165b90508115801561122f575080155b15611266576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f908152609760205260409020546001600160a01b03166112b8576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f036112f0576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f8181526099602052604090819020859055517fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467906113379086815260200190565b60405180910390a250505050565b5f54610100900460ff161580801561136357505f54600160ff909116105b8061137c5750303b15801561137c57505f5460ff166001145b61140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611469575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b611471612179565b611479612217565b611482826120c1565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561150f575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f61151e609c6122b5565b905090565b61152b611c6a565b61ffff81165f908152609760205260409020546001600160a01b03168061157e576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158d609c61ffff8416611c53565b6115c3576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f81815260976020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000090811690915560039091018490556001600160a01b038616845260988352818420805490911690559282526099905290812055611668826122be565b6040516001600160a01b0382169061ffff8416907f330282f89b53f03dfc62130ddb33062a147ad25d691915b575732f62fb6fce9a905f90a35050565b61ffff82165f908152609760205260408120546001600160a01b03166116f7576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83165f818152609760209081526040808320815160a08101835281546001600160a01b03168152600182015481850152600282015460ff8082161515838601526101009091041660608201526003909101546080820152938352609990915281205490819003611795576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8260800151856117a69190612c8e565b90508160016117b58284612ca5565b6117bf9190612cb8565b6117c99190612ccb565b9350835f03611804576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b611815611c6a565b8051825114611850576040517fd9183d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b82518110156119465781818151811061186d5761186d612c14565b6020026020010151609a5f85848151811061188a5761188a612c14565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055508281815181106118d9576118d9612c14565b60200260200101516001600160a01b03167f6dad0aed33f4b7f07095619b668698e17943fd9f4c83e7cfcc7f6dd880a1158883838151811061191d5761191d612c14565b6020026020010151604051611936911515815260200190565b60405180910390a2600101611852565b505050565b5f61195e6033546001600160a01b031690565b609b546001600160a01b0391909116331491505f9060ff1680156119905750335f908152609a602052604090205460ff165b90508115801561199e575080155b156119d5576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f908152609760205260409020546001600160a01b0316611a27576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611a60576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f818152609760209081526040808320600301879055609982528083209290925590518581527f7b614d0c690ae942aec30d9378eb72c3678dd8cb74a55343c87baf8dfe078e749101611337565b611abb611c6a565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb39060200160405180910390a150565b611b28611c6a565b6001600160a01b038116611bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611404565b611bc7816120c1565b50565b61ffff81165f908152609760205260408120546001600160a01b0316611bf157505f919050565b5061ffff165f9081526097602052604090206002015460ff1690565b60605f611c19836122cd565b9392505050565b5f81611c2d57505f919050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8181526001830160205260408120541515611c19565b6033546001600160a01b03163314610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611404565b600260655403611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611404565b6002606555565b6001600160a01b038416611d91576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461ffff165f03611dce576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff85165f908152609760205260409020546001600160a01b031615611e21576040517fc9b3c8a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526098602052604090205461ffff1615611e74576040517fe4476a1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611ead576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60129050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f2a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f2791810190612c41565b60015b15611f325790505b6040518060a00160405280866001600160a01b03168152602001611f56868661212a565b81525f602080830182905260ff808616604080860191909152606094850188905261ffff8c1680855260978452818520875181546001600160a01b039182167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617825588860151600183015588840151600283018054998b0151909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000998a161717909455608090970151600390970196909655908a168352609890915290208054909116909117905561205986612326565b604080518581525f602082015260ff8316818301526060810184905290516001600160a01b0387169161ffff8916917fb9d0acb419ab21384716fbeaa0bcbc172f6347c9bf4fc0614c4e79fc47b36e119181900360800190a3505050505050565b6001606555565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8161213757505f610778565b60018301612171576040517feab9612d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010190565b5f54610100900460ff1661220f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b610865612335565b5f54610100900460ff166122ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b6108656123d4565b5f610778825490565b61150f609c61ffff831661246a565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561231a57602002820191905f5260205f20905b815481526020019060010190808311612306575b50505050509050919050565b61150f609c61ffff8316612475565b5f54610100900460ff166123cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b610865336120c1565b5f54610100900460ff166120ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611404565b5f611c198383612480565b5f611c198383612563565b5f818152600183016020526040812054801561255a575f6124a2600183612cb8565b85549091505f906124b590600190612cb8565b9050818114612514575f865f0182815481106124d3576124d3612c14565b905f5260205f200154905080875f0184815481106124f3576124f3612c14565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061252557612525612d03565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610778565b5f915050610778565b5f8181526001830160205260408120546125a857508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610778565b505f610778565b602080825282518282018190525f919060409081850190868401855b828110156125fd578151805161ffff1685528601516001600160a01b03168685015292840192908501906001016125cb565b5091979650505050505050565b803561ffff8116811461261b575f80fd5b919050565b5f60208284031215612630575f80fd5b611c198261260a565b80356001600160a01b038116811461261b575f80fd5b5f6020828403121561265f575f80fd5b611c1982612639565b8035801515811461261b575f80fd5b5f805f805f60a0868803121561268b575f80fd5b6126948661260a565b94506126a260208701612639565b9350604086013592506126b760608701612668565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101561270357835161ffff16835292840192918401916001016126e3565b50909695505050505050565b5f805f805f8060c08789031215612724575f80fd5b61272d8761260a565b955061273b60208801612639565b94506040870135935061275060608801612668565b925061275e60808801612668565b915060a087013590509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127e5576127e5612771565b604052919050565b5f67ffffffffffffffff82111561280657612806612771565b5060051b60200190565b5f82601f83011261281f575f80fd5b8135602061283461282f836127ed565b61279e565b8083825260208201915060208460051b870101935086841115612855575f80fd5b602086015b848110156128785761286b8161260a565b835291830191830161285a565b509695505050505050565b5f82601f830112612892575f80fd5b813560206128a261282f836127ed565b8083825260208201915060208460051b8701019350868411156128c3575f80fd5b602086015b8481101561287857803583529183019183016128c8565b5f80604083850312156128f0575f80fd5b823567ffffffffffffffff80821115612907575f80fd5b61291386838701612810565b93506020850135915080821115612928575f80fd5b5061293585828601612883565b9150509250929050565b5f8083601f84011261294f575f80fd5b50813567ffffffffffffffff811115612966575f80fd5b6020830191508360208260051b8501011115612980575f80fd5b9250929050565b5f805f806040858703121561299a575f80fd5b843567ffffffffffffffff808211156129b1575f80fd5b6129bd8883890161293f565b909650945060208701359150808211156129d5575f80fd5b506129e28782880161293f565b95989497509550505050565b5f82601f8301126129fd575f80fd5b81356020612a0d61282f836127ed565b8083825260208201915060208460051b870101935086841115612a2e575f80fd5b602086015b8481101561287857612a4481612639565b8352918301918301612a33565b5f82601f830112612a60575f80fd5b81356020612a7061282f836127ed565b8083825260208201915060208460051b870101935086841115612a91575f80fd5b602086015b8481101561287857612aa781612668565b8352918301918301612a96565b5f805f805f60a08688031215612ac8575f80fd5b853567ffffffffffffffff80821115612adf575f80fd5b612aeb89838a01612810565b96506020880135915080821115612b00575f80fd5b612b0c89838a016129ee565b95506040880135915080821115612b21575f80fd5b612b2d89838a01612883565b94506060880135915080821115612b42575f80fd5b612b4e89838a01612a51565b93506080880135915080821115612b63575f80fd5b50612b7088828901612883565b9150509295509295909350565b5f8060408385031215612b8e575f80fd5b612b978361260a565b946020939093013593505050565b5f8060408385031215612bb6575f80fd5b823567ffffffffffffffff80821115612bcd575f80fd5b612bd9868387016129ee565b93506020850135915080821115612bee575f80fd5b5061293585828601612a51565b5f60208284031215612c0b575f80fd5b611c1982612668565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612c51575f80fd5b815160ff81168114611c19575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761077857610778612c61565b8082018082111561077857610778612c61565b8181038181111561077857610778612c61565b5f82612cfe577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", } // L2TokenRegistryABI is the input ABI used to generate the binding from. @@ -436,32 +436,46 @@ func (_L2TokenRegistry *L2TokenRegistryCallerSession) GetTokenIdByAddress(tokenA // GetTokenInfo is a free data retrieval call binding the contract method 0x1c58e793. // -// Solidity: function getTokenInfo(uint16 _tokenID) view returns((address,bytes32,bool,uint8,uint256)) -func (_L2TokenRegistry *L2TokenRegistryCaller) GetTokenInfo(opts *bind.CallOpts, _tokenID uint16) (IL2TokenRegistryTokenInfo, error) { +// Solidity: function getTokenInfo(uint16 _tokenID) view returns((address,bytes32,bool,uint8,uint256) info, bool hasBalanceSlot) +func (_L2TokenRegistry *L2TokenRegistryCaller) GetTokenInfo(opts *bind.CallOpts, _tokenID uint16) (struct { + Info IL2TokenRegistryTokenInfo + HasBalanceSlot bool +}, error) { var out []interface{} err := _L2TokenRegistry.contract.Call(opts, &out, "getTokenInfo", _tokenID) + outstruct := new(struct { + Info IL2TokenRegistryTokenInfo + HasBalanceSlot bool + }) if err != nil { - return *new(IL2TokenRegistryTokenInfo), err + return *outstruct, err } - out0 := *abi.ConvertType(out[0], new(IL2TokenRegistryTokenInfo)).(*IL2TokenRegistryTokenInfo) + outstruct.Info = *abi.ConvertType(out[0], new(IL2TokenRegistryTokenInfo)).(*IL2TokenRegistryTokenInfo) + outstruct.HasBalanceSlot = *abi.ConvertType(out[1], new(bool)).(*bool) - return out0, err + return *outstruct, err } // GetTokenInfo is a free data retrieval call binding the contract method 0x1c58e793. // -// Solidity: function getTokenInfo(uint16 _tokenID) view returns((address,bytes32,bool,uint8,uint256)) -func (_L2TokenRegistry *L2TokenRegistrySession) GetTokenInfo(_tokenID uint16) (IL2TokenRegistryTokenInfo, error) { +// Solidity: function getTokenInfo(uint16 _tokenID) view returns((address,bytes32,bool,uint8,uint256) info, bool hasBalanceSlot) +func (_L2TokenRegistry *L2TokenRegistrySession) GetTokenInfo(_tokenID uint16) (struct { + Info IL2TokenRegistryTokenInfo + HasBalanceSlot bool +}, error) { return _L2TokenRegistry.Contract.GetTokenInfo(&_L2TokenRegistry.CallOpts, _tokenID) } // GetTokenInfo is a free data retrieval call binding the contract method 0x1c58e793. // -// Solidity: function getTokenInfo(uint16 _tokenID) view returns((address,bytes32,bool,uint8,uint256)) -func (_L2TokenRegistry *L2TokenRegistryCallerSession) GetTokenInfo(_tokenID uint16) (IL2TokenRegistryTokenInfo, error) { +// Solidity: function getTokenInfo(uint16 _tokenID) view returns((address,bytes32,bool,uint8,uint256) info, bool hasBalanceSlot) +func (_L2TokenRegistry *L2TokenRegistryCallerSession) GetTokenInfo(_tokenID uint16) (struct { + Info IL2TokenRegistryTokenInfo + HasBalanceSlot bool +}, error) { return _L2TokenRegistry.Contract.GetTokenInfo(&_L2TokenRegistry.CallOpts, _tokenID) } diff --git a/bindings/bindings/l2tokenregistry_more.go b/bindings/bindings/l2tokenregistry_more.go index f7ac7c10..2281a04a 100644 --- a/bindings/bindings/l2tokenregistry_more.go +++ b/bindings/bindings/l2tokenregistry_more.go @@ -13,7 +13,7 @@ const L2TokenRegistryStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contra var L2TokenRegistryStorageLayout = new(solc.StorageLayout) -var L2TokenRegistryDeployedBin = "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80638cbab7e4116100fe578063ce67be261161009e578063ef0fde0f1161006e578063ef0fde0f146104f1578063efeadb6d14610504578063f2fde38b14610517578063fce404891461052a575f80fd5b8063ce67be26146104b0578063dbbb2faa146104b8578063dddc98be146104cb578063e3de72a5146104de575f80fd5b8063a1218001116100d9578063a121800114610464578063a313d00714610477578063b10b69ee1461048a578063c4d66de81461049d575f80fd5b80638cbab7e4146104165780638da5cb5b146104295780639190202e14610451575f80fd5b80635c45246b11610169578063724f91ce11610144578063724f91ce1461031b5780637304880c1461035157806385519c36146103645780638c39969114610403575f80fd5b80635c45246b146102e95780636f6d6cc1146102fe578063715018a614610313575f80fd5b806322bd5c1c116101a457806322bd5c1c146102845780632848aeaf146102a15780632a1ea5a2146102c35780634cbcdd13146102d6575f80fd5b80631585458c146101ca57806319904c33146101e85780631c58e79314610215575b5f80fd5b6101d261053d565b6040516101df9190612750565b60405180910390f35b6102076101f63660046127ce565b60996020525f908152604090205481565b6040519081526020016101df565b6102286102233660046127ce565b610649565b6040516101df91905f60a08201905073ffffffffffffffffffffffffffffffffffffffff83511682526020830151602083015260408301511515604083015260ff60608401511660608301526080830151608083015292915050565b609b546102919060ff1681565b60405190151581526020016101df565b6102916102af36600461280a565b609a6020525f908152604090205460ff1681565b6102076102d13660046127ce565b61074f565b6102916102e43660046127ce565b6107c4565b6102fc6102f7366004612832565b6107da565b005b610306610808565b6040516101df9190612883565b6102fc6108b0565b61033e61032936600461280a565b60986020525f908152604090205461ffff1681565b60405161ffff90911681526020016101df565b6102fc61035f3660046128ca565b6108c3565b6103bc6103723660046127ce565b60976020525f9081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff90921692909160ff808316926101009004169085565b6040805173ffffffffffffffffffffffffffffffffffffffff909616865260208601949094529115159284019290925260ff9091166060830152608082015260a0016101df565b6102fc610411366004612a9a565b610cbe565b61033e61042436600461280a565b610ed4565b60335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101df565b6102fc61045f366004612b42565b610f57565b6102fc610472366004612c6f565b611105565b6102076104853660046127ce565b611221565b6102fc610498366004612d38565b611299565b6102fc6104ab36600461280a565b6113ff565b6102076115cd565b6102fc6104c63660046127ce565b6115dd565b6102076104d9366004612d38565b611786565b6102fc6104ec366004612d60565b611907565b6102fc6104ff366004612d38565b611a67565b6102fc610512366004612db6565b611bc5565b6102fc61052536600461280a565b611c32565b6102916105383660046127ce565b611ce9565b60605f61054a609c611d39565b90505f815167ffffffffffffffff8111156105675761056761292c565b6040519080825280602002602001820160405280156105ab57816020015b604080518082019091525f80825260208201528152602001906001900390816105855790505b5090505f5b8251811015610642575f8382815181106105cc576105cc612dcf565b60209081029190910181015161ffff81165f8181526097845260409081902054815180830190925291815273ffffffffffffffffffffffffffffffffffffffff90911692810183905285519193509085908590811061062d5761062d612dcf565b602090810291909101015250506001016105b0565b5092915050565b6040805160a0810182525f8082526020808301829052828401829052606083018290526080830182905261ffff8516825260979052919091205473ffffffffffffffffffffffffffffffffffffffff166106cf576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f90815260976020908152604091829020825160a081018452815473ffffffffffffffffffffffffffffffffffffffff1681526001820154928101839052600282015460ff8082161515958301959095526101009004909316606084015260030154608083015261074490611d4c565b602082015292915050565b61ffff81165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff166107ae576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526099602052604090205490565b5f6107d4609c61ffff8416611d7f565b92915050565b6107e2611d96565b6107ea611e17565b6107f78585858585611e8a565b6108016001606555565b5050505050565b60605f610815609c611d39565b90505f815167ffffffffffffffff8111156108325761083261292c565b60405190808252806020026020018201604052801561085b578160200160208202803683370190505b5090505f5b82518110156106425782818151811061087b5761087b612dcf565b602002602001015182828151811061089557610895612dcf565b61ffff90921660209283029190910190910152600101610860565b6108b8611d96565b6108c15f612255565b565b6108cb611d96565b6108d3611e17565b61ffff86165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff16610932576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661097f576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f9081526098602052604090205461ffff1680158015906109bf57508661ffff168161ffff1614155b156109f6576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601290508673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610a80575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a7d91810190612dfc565b60015b15610a885790505b61ffff88165f9081526097602090815260409182902054825160a0810190935273ffffffffffffffffffffffffffffffffffffffff8a811684521691908101610ad189896122cb565b815286151560208083019190915260ff808616604080850191909152606093840189905261ffff8e165f908152609784528190208551815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161782559386015160018201559085015160028201805495870151909316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941793909317905560809092015160039091015581811690891614610c375773ffffffffffffffffffffffffffffffffffffffff8181165f9081526098602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155928b1682529020805490911661ffff8b161790555b8773ffffffffffffffffffffffffffffffffffffffff168961ffff167f60281b1abf645864e8443ca11a3c3b51a6a9203a376da58db7919f7cfebc4aa989888689604051610ca19493929190938452911515602084015260ff166040830152606082015260800190565b60405180910390a3505050610cb66001606555565b505050505050565b609b5460ff168015610cdf5750335f908152609a602052604090205460ff16155b8015610d03575060335473ffffffffffffffffffffffffffffffffffffffff163314155b15610d3a576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610d75576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610ecf575f73ffffffffffffffffffffffffffffffffffffffff1660975f858481518110610dac57610dac612dcf565b60209081029190910181015161ffff1682528101919091526040015f205473ffffffffffffffffffffffffffffffffffffffff1614610ec757818181518110610df757610df7612dcf565b60200260200101515f0315610ec757818181518110610e1857610e18612dcf565b602002602001015160995f858481518110610e3557610e35612dcf565b602002602001015161ffff1661ffff1681526020019081526020015f2081905550828181518110610e6857610e68612dcf565b602002602001015161ffff167fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467838381518110610ea757610ea7612dcf565b6020026020010151604051610ebe91815260200190565b60405180910390a25b600101610d77565b505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526098602052604081205461ffff1680158015610f20575073ffffffffffffffffffffffffffffffffffffffff831615155b156107d4576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f5f611d96565b828114610f98576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b83811015610801575f858583818110610fb557610fb5612dcf565b9050602002016020810190610fca91906127ce565b90505f848484818110610fdf57610fdf612dcf565b9050602002016020810190610ff49190612db6565b61ffff83165f9081526097602052604090205490915073ffffffffffffffffffffffffffffffffffffffff1661102b5750506110fd565b61ffff82165f9081526097602052604090206002015460ff16801515821515146110f95761ffff83165f90815260976020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556110ca5760405161ffff8416907fba78a86bd882b78fb95715a0d827188ec0a8ad3f500310d33a39b94c9ff677b8905f90a26110f9565b60405161ffff8416907fa625871090c2595895650b8e9222d1a3267cedf9de819bf446400962ce1357ef905f90a25b5050505b600101610f9a565b61110d611d96565b611115611e17565b8351855114158061112857508251855114155b8061113557508151855114155b8061114257508051855114155b15611179576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85518110156112165761120e86828151811061119957611199612dcf565b60200260200101518683815181106111b3576111b3612dcf565b60200260200101518684815181106111cd576111cd612dcf565b60200260200101518685815181106111e7576111e7612dcf565b602002602001015186868151811061120157611201612dcf565b6020026020010151611e8a565b60010161117b565b506108016001606555565b61ffff81165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff16611280576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526097602052604090206003015490565b609b5460ff1680156112ba5750335f908152609a602052604090205460ff16155b80156112de575060335473ffffffffffffffffffffffffffffffffffffffff163314155b15611315576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff16611374576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f036113ac576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f8181526099602052604090819020839055517fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467906113f39084815260200190565b60405180910390a25050565b5f54610100900460ff161580801561141d57505f54600160ff909116105b806114365750303b15801561143657505f5460ff166001145b6114c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611523575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61152b61231a565b6115336123b8565b61153c82612255565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156115c9575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f6115d8609c612456565b905090565b6115e5611d96565b61ffff81165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff1680611645576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611654609c61ffff8416611d7f565b61168a576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f81815260976020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155600390910184905573ffffffffffffffffffffffffffffffffffffffff861684526098835281842080549091169055928252609990529081205561173c8261245f565b60405173ffffffffffffffffffffffffffffffffffffffff82169061ffff8416907f330282f89b53f03dfc62130ddb33062a147ad25d691915b575732f62fb6fce9a905f90a35050565b61ffff82165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff166117e5576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83165f818152609760209081526040808320815160a081018352815473ffffffffffffffffffffffffffffffffffffffff168152600182015481850152600282015460ff8082161515838601526101009091041660608201526003909101546080820152938352609990915281205490819003611890576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8260800151856118a19190612e49565b90508160016118b08284612e60565b6118ba9190612e73565b6118c49190612e86565b9350835f036118fe576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b61190f611d96565b805182511461194a576040517fd9183d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610ecf5781818151811061196757611967612dcf565b6020026020010151609a5f85848151811061198457611984612dcf565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508281815181106119ed576119ed612dcf565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f6dad0aed33f4b7f07095619b668698e17943fd9f4c83e7cfcc7f6dd880a11588838381518110611a3e57611a3e612dcf565b6020026020010151604051611a57911515815260200190565b60405180910390a260010161194c565b609b5460ff168015611a885750335f908152609a602052604090205460ff16155b8015611aac575060335473ffffffffffffffffffffffffffffffffffffffff163314155b15611ae3576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff16611b42576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03611b7b576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f8181526097602052604090819020600301839055517f7b614d0c690ae942aec30d9378eb72c3678dd8cb74a55343c87baf8dfe078e74906113f39084815260200190565b611bcd611d96565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb39060200160405180910390a150565b611c3a611d96565b73ffffffffffffffffffffffffffffffffffffffff8116611cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016114be565b611ce681612255565b50565b61ffff81165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff16611d1d57505f919050565b5061ffff165f9081526097602052604090206002015460ff1690565b60605f611d458361246e565b9392505050565b5f81611d5957505f919050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8181526001830160205260408120541515611d45565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016114be565b600260655403611e83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016114be565b6002606555565b73ffffffffffffffffffffffffffffffffffffffff8416611ed7576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461ffff165f03611f14576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff85165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611f74576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f9081526098602052604090205461ffff1615611fd4576040517f7d4fffb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f0361200d576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601290508473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612097575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261209491810190612dfc565b60015b1561209f5790505b6040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020016120d086866122cb565b81525f602080830182905260ff808616604080860191909152606094850188905261ffff8c16808552609784528185208751815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617825588860151600183015588840151600283018054998b0151909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000998a161717909455608090970151600390970196909655908a16835260989091529020805490911690911790556121e0866124c7565b604080518581525f602082015260ff83168183015260608101849052905173ffffffffffffffffffffffffffffffffffffffff87169161ffff8916917fb9d0acb419ab21384716fbeaa0bcbc172f6347c9bf4fc0614c4e79fc47b36e119181900360800190a3505050505050565b6001606555565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f816122d857505f6107d4565b60018301612312576040517feab9612d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010190565b5f54610100900460ff166123b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016114be565b6108c16124d6565b5f54610100900460ff1661244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016114be565b6108c1612575565b5f6107d4825490565b6115c9609c61ffff831661260b565b6060815f018054806020026020016040519081016040528092919081815260200182805480156124bb57602002820191905f5260205f20905b8154815260200190600101908083116124a7575b50505050509050919050565b6115c9609c61ffff8316612616565b5f54610100900460ff1661256c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016114be565b6108c133612255565b5f54610100900460ff1661224e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016114be565b5f611d458383612621565b5f611d458383612704565b5f81815260018301602052604081205480156126fb575f612643600183612e73565b85549091505f9061265690600190612e73565b90508181146126b5575f865f01828154811061267457612674612dcf565b905f5260205f200154905080875f01848154811061269457612694612dcf565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806126c6576126c6612ebe565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506107d4565b5f9150506107d4565b5f81815260018301602052604081205461274957508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556107d4565b505f6107d4565b602080825282518282018190525f919060409081850190868401855b828110156127ab578151805161ffff16855286015173ffffffffffffffffffffffffffffffffffffffff1686850152928401929085019060010161276c565b5091979650505050505050565b803561ffff811681146127c9575f80fd5b919050565b5f602082840312156127de575f80fd5b611d45826127b8565b803573ffffffffffffffffffffffffffffffffffffffff811681146127c9575f80fd5b5f6020828403121561281a575f80fd5b611d45826127e7565b803580151581146127c9575f80fd5b5f805f805f60a08688031215612846575f80fd5b61284f866127b8565b945061285d602087016127e7565b93506040860135925061287260608701612823565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b818110156128be57835161ffff168352928401929184019160010161289e565b50909695505050505050565b5f805f805f8060c087890312156128df575f80fd5b6128e8876127b8565b95506128f6602088016127e7565b94506040870135935061290b60608801612823565b925061291960808801612823565b915060a087013590509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129a0576129a061292c565b604052919050565b5f67ffffffffffffffff8211156129c1576129c161292c565b5060051b60200190565b5f82601f8301126129da575f80fd5b813560206129ef6129ea836129a8565b612959565b8083825260208201915060208460051b870101935086841115612a10575f80fd5b602086015b84811015612a3357612a26816127b8565b8352918301918301612a15565b509695505050505050565b5f82601f830112612a4d575f80fd5b81356020612a5d6129ea836129a8565b8083825260208201915060208460051b870101935086841115612a7e575f80fd5b602086015b84811015612a335780358352918301918301612a83565b5f8060408385031215612aab575f80fd5b823567ffffffffffffffff80821115612ac2575f80fd5b612ace868387016129cb565b93506020850135915080821115612ae3575f80fd5b50612af085828601612a3e565b9150509250929050565b5f8083601f840112612b0a575f80fd5b50813567ffffffffffffffff811115612b21575f80fd5b6020830191508360208260051b8501011115612b3b575f80fd5b9250929050565b5f805f8060408587031215612b55575f80fd5b843567ffffffffffffffff80821115612b6c575f80fd5b612b7888838901612afa565b90965094506020870135915080821115612b90575f80fd5b50612b9d87828801612afa565b95989497509550505050565b5f82601f830112612bb8575f80fd5b81356020612bc86129ea836129a8565b8083825260208201915060208460051b870101935086841115612be9575f80fd5b602086015b84811015612a3357612bff816127e7565b8352918301918301612bee565b5f82601f830112612c1b575f80fd5b81356020612c2b6129ea836129a8565b8083825260208201915060208460051b870101935086841115612c4c575f80fd5b602086015b84811015612a3357612c6281612823565b8352918301918301612c51565b5f805f805f60a08688031215612c83575f80fd5b853567ffffffffffffffff80821115612c9a575f80fd5b612ca689838a016129cb565b96506020880135915080821115612cbb575f80fd5b612cc789838a01612ba9565b95506040880135915080821115612cdc575f80fd5b612ce889838a01612a3e565b94506060880135915080821115612cfd575f80fd5b612d0989838a01612c0c565b93506080880135915080821115612d1e575f80fd5b50612d2b88828901612a3e565b9150509295509295909350565b5f8060408385031215612d49575f80fd5b612d52836127b8565b946020939093013593505050565b5f8060408385031215612d71575f80fd5b823567ffffffffffffffff80821115612d88575f80fd5b612d9486838701612ba9565b93506020850135915080821115612da9575f80fd5b50612af085828601612c0c565b5f60208284031215612dc6575f80fd5b611d4582612823565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612e0c575f80fd5b815160ff81168114611d45575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176107d4576107d4612e1c565b808201808211156107d4576107d4612e1c565b818103818111156107d4576107d4612e1c565b5f82612eb9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" +var L2TokenRegistryDeployedBin = "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80638cbab7e4116100fe578063ce67be261161009e578063ef0fde0f1161006e578063ef0fde0f146104f3578063efeadb6d14610506578063f2fde38b14610519578063fce404891461052c575f80fd5b8063ce67be26146104b2578063dbbb2faa146104ba578063dddc98be146104cd578063e3de72a5146104e0575f80fd5b8063a1218001116100d9578063a121800114610466578063a313d00714610479578063b10b69ee1461048c578063c4d66de81461049f575f80fd5b80638cbab7e4146104185780638da5cb5b1461042b5780639190202e14610453575f80fd5b80635c45246b11610169578063724f91ce11610144578063724f91ce1461031d5780637304880c1461035357806385519c36146103665780638c39969114610405575f80fd5b80635c45246b146102eb5780636f6d6cc114610300578063715018a614610315575f80fd5b806322bd5c1c116101a457806322bd5c1c146102865780632848aeaf146102a35780632a1ea5a2146102c55780634cbcdd13146102d8575f80fd5b80631585458c146101ca57806319904c33146101e85780631c58e79314610215575b5f80fd5b6101d261053f565b6040516101df919061282c565b60405180910390f35b6102076101f63660046128aa565b60996020525f908152604090205481565b6040519081526020016101df565b6102286102233660046128aa565b61064b565b60408051835173ffffffffffffffffffffffffffffffffffffffff168152602080850151908201528382015115159181019190915260608084015160ff169082015260809283015192810192909252151560a082015260c0016101df565b609b546102939060ff1681565b60405190151581526020016101df565b6102936102b13660046128e6565b609a6020525f908152604090205460ff1681565b6102076102d33660046128aa565b61075b565b6102936102e63660046128aa565b6107d0565b6102fe6102f936600461290e565b6107e6565b005b610308610814565b6040516101df919061295f565b6102fe6108bc565b61034061032b3660046128e6565b60986020525f908152604090205461ffff1681565b60405161ffff90911681526020016101df565b6102fe6103613660046129a6565b6108cf565b6103be6103743660046128aa565b60976020525f9081526040902080546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff90921692909160ff808316926101009004169085565b6040805173ffffffffffffffffffffffffffffffffffffffff909616865260208601949094529115159284019290925260ff9091166060830152608082015260a0016101df565b6102fe610413366004612b76565b610d16565b6103406104263660046128e6565b610f4f565b60335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101df565b6102fe610461366004612c1e565b610fd2565b6102fe610474366004612d4b565b611180565b6102076104873660046128aa565b61129c565b6102fe61049a366004612e14565b611314565b6102fe6104ad3660046128e6565b6114a4565b610207611672565b6102fe6104c83660046128aa565b611682565b6102076104db366004612e14565b61182b565b6102fe6104ee366004612e3c565b6119ad565b6102fe610501366004612e14565b611b12565b6102fe610514366004612e92565b611ca1565b6102fe6105273660046128e6565b611d0e565b61029361053a3660046128aa565b611dc5565b60605f61054c609c611e15565b90505f815167ffffffffffffffff81111561056957610569612a08565b6040519080825280602002602001820160405280156105ad57816020015b604080518082019091525f80825260208201528152602001906001900390816105875790505b5090505f5b8251811015610644575f8382815181106105ce576105ce612eab565b60209081029190910181015161ffff81165f8181526097845260409081902054815180830190925291815273ffffffffffffffffffffffffffffffffffffffff90911692810183905285519193509085908590811061062f5761062f612eab565b602090810291909101015250506001016105b2565b5092915050565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915261ffff82165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff166106d4576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505061ffff81165f90815260976020908152604091829020825160a081018452815473ffffffffffffffffffffffffffffffffffffffff1681526001820154928101839052600282015460ff808216151595830195909552610100900490931660608401526003015460808301528015159061074f90611e28565b60208301529092909150565b61ffff81165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff166107ba576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526099602052604090205490565b5f6107e0609c61ffff8416611e5b565b92915050565b6107ee611e72565b6107f6611ef3565b6108038585858585611f66565b61080d6001606555565b5050505050565b60605f610821609c611e15565b90505f815167ffffffffffffffff81111561083e5761083e612a08565b604051908082528060200260200182016040528015610867578160200160208202803683370190505b5090505f5b82518110156106445782818151811061088757610887612eab565b60200260200101518282815181106108a1576108a1612eab565b61ffff9092166020928302919091019091015260010161086c565b6108c4611e72565b6108cd5f612331565b565b6108d7611e72565b6108df611ef3565b61ffff86165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff1661093e576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661098b576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f036109c4576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f9081526098602052604090205461ffff168015801590610a0457508661ffff168161ffff1614155b15610a3b576040517fe4476a1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601290508673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610ac5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610ac291810190612ed8565b60015b15610acd5790505b61ffff88165f9081526097602090815260409182902054825160a0810190935273ffffffffffffffffffffffffffffffffffffffff8a811684521691908101610b1689896123a7565b815286151560208083019190915260ff808616604080850191909152606093840189905261ffff8e165f908152609784528190208551815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff00000000000000000000000000000000000000009091161782559386015160018201559085015160028201805495870151909316610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009095169490941793909317905560809092015160039091015581811690891614610c7c5773ffffffffffffffffffffffffffffffffffffffff8181165f9081526098602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155928b1682529020805490911661ffff8b161790555b61ffff89165f81815260996020526040808220919091555173ffffffffffffffffffffffffffffffffffffffff8a1691907f60281b1abf645864e8443ca11a3c3b51a6a9203a376da58db7919f7cfebc4aa990610cf9908b908a9088908b90938452911515602084015260ff166040830152606082015260800190565b60405180910390a3505050610d0e6001606555565b505050505050565b5f610d3660335473ffffffffffffffffffffffffffffffffffffffff1690565b609b5473ffffffffffffffffffffffffffffffffffffffff91909116331491505f9060ff168015610d755750335f908152609a602052604090205460ff165b905081158015610d83575080155b15610dba576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251845114610df5576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b845181101561080d575f73ffffffffffffffffffffffffffffffffffffffff1660975f878481518110610e2c57610e2c612eab565b60209081029190910181015161ffff1682528101919091526040015f205473ffffffffffffffffffffffffffffffffffffffff1614610f4757838181518110610e7757610e77612eab565b60200260200101515f0315610f4757838181518110610e9857610e98612eab565b602002602001015160995f878481518110610eb557610eb5612eab565b602002602001015161ffff1661ffff1681526020019081526020015f2081905550848181518110610ee857610ee8612eab565b602002602001015161ffff167fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467858381518110610f2757610f27612eab565b6020026020010151604051610f3e91815260200190565b60405180910390a25b600101610df7565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526098602052604081205461ffff1680158015610f9b575073ffffffffffffffffffffffffffffffffffffffff831615155b156107e0576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fda611e72565b828114611013576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561080d575f85858381811061103057611030612eab565b905060200201602081019061104591906128aa565b90505f84848481811061105a5761105a612eab565b905060200201602081019061106f9190612e92565b61ffff83165f9081526097602052604090205490915073ffffffffffffffffffffffffffffffffffffffff166110a6575050611178565b61ffff82165f9081526097602052604090206002015460ff16801515821515146111745761ffff83165f90815260976020526040902060020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556111455760405161ffff8416907fba78a86bd882b78fb95715a0d827188ec0a8ad3f500310d33a39b94c9ff677b8905f90a2611174565b60405161ffff8416907fa625871090c2595895650b8e9222d1a3267cedf9de819bf446400962ce1357ef905f90a25b5050505b600101611015565b611188611e72565b611190611ef3565b835185511415806111a357508251855114155b806111b057508151855114155b806111bd57508051855114155b156111f4576040517f9d89020a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85518110156112915761128986828151811061121457611214612eab565b602002602001015186838151811061122e5761122e612eab565b602002602001015186848151811061124857611248612eab565b602002602001015186858151811061126257611262612eab565b602002602001015186868151811061127c5761127c612eab565b6020026020010151611f66565b6001016111f6565b5061080d6001606555565b61ffff81165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff166112fb576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061ffff165f9081526097602052604090206003015490565b5f61133460335473ffffffffffffffffffffffffffffffffffffffff1690565b609b5473ffffffffffffffffffffffffffffffffffffffff91909116331491505f9060ff1680156113735750335f908152609a602052604090205460ff165b905081158015611381575080155b156113b8576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff16611417576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f0361144f576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f8181526099602052604090819020859055517fd73999ac164146908368455e72209122b67c149b37aab024e2707394a2c70467906114969086815260200190565b60405180910390a250505050565b5f54610100900460ff16158080156114c257505f54600160ff909116105b806114db5750303b1580156114db57505f5460ff166001145b61156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156115c8575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6115d06123f6565b6115d8612494565b6115e182612331565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561166e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f61167d609c612532565b905090565b61168a611e72565b61ffff81165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116ea576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116f9609c61ffff8416611e5b565b61172f576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff82165f81815260976020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018490556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000908116909155600390910184905573ffffffffffffffffffffffffffffffffffffffff86168452609883528184208054909116905592825260999052908120556117e18261253b565b60405173ffffffffffffffffffffffffffffffffffffffff82169061ffff8416907f330282f89b53f03dfc62130ddb33062a147ad25d691915b575732f62fb6fce9a905f90a35050565b61ffff82165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff1661188a576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83165f818152609760209081526040808320815160a081018352815473ffffffffffffffffffffffffffffffffffffffff168152600182015481850152600282015460ff8082161515838601526101009091041660608201526003909101546080820152938352609990915281205490819003611935576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8260800151856119469190612f25565b90508160016119558284612f3c565b61195f9190612f4f565b6119699190612f62565b9350835f036119a4576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505092915050565b6119b5611e72565b80518251146119f0576040517fd9183d2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015611b0d57818181518110611a0d57611a0d612eab565b6020026020010151609a5f858481518110611a2a57611a2a612eab565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550828181518110611a9357611a93612eab565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f6dad0aed33f4b7f07095619b668698e17943fd9f4c83e7cfcc7f6dd880a11588838381518110611ae457611ae4612eab565b6020026020010151604051611afd911515815260200190565b60405180910390a26001016119f2565b505050565b5f611b3260335473ffffffffffffffffffffffffffffffffffffffff1690565b609b5473ffffffffffffffffffffffffffffffffffffffff91909116331491505f9060ff168015611b715750335f908152609a602052604090205460ff165b905081158015611b7f575080155b15611bb6576040517f2af07d2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff16611c15576040517fcbdb7b3000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f03611c4e576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff84165f818152609760209081526040808320600301879055609982528083209290925590518581527f7b614d0c690ae942aec30d9378eb72c3678dd8cb74a55343c87baf8dfe078e749101611496565b611ca9611e72565b609b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215159081179091556040519081527f16435b45f7482047f839a6a19d291442627200f52cad2803c595150d0d440eb39060200160405180910390a150565b611d16611e72565b73ffffffffffffffffffffffffffffffffffffffff8116611db9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611563565b611dc281612331565b50565b61ffff81165f9081526097602052604081205473ffffffffffffffffffffffffffffffffffffffff16611df957505f919050565b5061ffff165f9081526097602052604090206002015460ff1690565b60605f611e218361254a565b9392505050565b5f81611e3557505f919050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8181526001830160205260408120541515611e21565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611563565b600260655403611f5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611563565b6002606555565b73ffffffffffffffffffffffffffffffffffffffff8416611fb3576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461ffff165f03611ff0576040517f6aa2a93700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff85165f9081526097602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612050576040517fc9b3c8a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f9081526098602052604090205461ffff16156120b0576040517fe4476a1300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f036120e9576040517f70ce14bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f601290508473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612173575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261217091810190612ed8565b60015b1561217b5790505b6040518060a001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020016121ac86866123a7565b81525f602080830182905260ff808616604080860191909152606094850188905261ffff8c16808552609784528185208751815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617825588860151600183015588840151600283018054998b0151909616610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff911515919091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000998a161717909455608090970151600390970196909655908a16835260989091529020805490911690911790556122bc866125a3565b604080518581525f602082015260ff83168183015260608101849052905173ffffffffffffffffffffffffffffffffffffffff87169161ffff8916917fb9d0acb419ab21384716fbeaa0bcbc172f6347c9bf4fc0614c4e79fc47b36e119181900360800190a3505050505050565b6001606555565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f816123b457505f6107e0565b600183016123ee576040517feab9612d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505060010190565b5f54610100900460ff1661248c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611563565b6108cd6125b2565b5f54610100900460ff1661252a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611563565b6108cd612651565b5f6107e0825490565b61166e609c61ffff83166126e7565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561259757602002820191905f5260205f20905b815481526020019060010190808311612583575b50505050509050919050565b61166e609c61ffff83166126f2565b5f54610100900460ff16612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611563565b6108cd33612331565b5f54610100900460ff1661232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611563565b5f611e2183836126fd565b5f611e2183836127e0565b5f81815260018301602052604081205480156127d7575f61271f600183612f4f565b85549091505f9061273290600190612f4f565b9050818114612791575f865f01828154811061275057612750612eab565b905f5260205f200154905080875f01848154811061277057612770612eab565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806127a2576127a2612f9a565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506107e0565b5f9150506107e0565b5f81815260018301602052604081205461282557508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556107e0565b505f6107e0565b602080825282518282018190525f919060409081850190868401855b82811015612887578151805161ffff16855286015173ffffffffffffffffffffffffffffffffffffffff16868501529284019290850190600101612848565b5091979650505050505050565b803561ffff811681146128a5575f80fd5b919050565b5f602082840312156128ba575f80fd5b611e2182612894565b803573ffffffffffffffffffffffffffffffffffffffff811681146128a5575f80fd5b5f602082840312156128f6575f80fd5b611e21826128c3565b803580151581146128a5575f80fd5b5f805f805f60a08688031215612922575f80fd5b61292b86612894565b9450612939602087016128c3565b93506040860135925061294e606087016128ff565b949793965091946080013592915050565b602080825282518282018190525f9190848201906040850190845b8181101561299a57835161ffff168352928401929184019160010161297a565b50909695505050505050565b5f805f805f8060c087890312156129bb575f80fd5b6129c487612894565b95506129d2602088016128c3565b9450604087013593506129e7606088016128ff565b92506129f5608088016128ff565b915060a087013590509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c612a08565b604052919050565b5f67ffffffffffffffff821115612a9d57612a9d612a08565b5060051b60200190565b5f82601f830112612ab6575f80fd5b81356020612acb612ac683612a84565b612a35565b8083825260208201915060208460051b870101935086841115612aec575f80fd5b602086015b84811015612b0f57612b0281612894565b8352918301918301612af1565b509695505050505050565b5f82601f830112612b29575f80fd5b81356020612b39612ac683612a84565b8083825260208201915060208460051b870101935086841115612b5a575f80fd5b602086015b84811015612b0f5780358352918301918301612b5f565b5f8060408385031215612b87575f80fd5b823567ffffffffffffffff80821115612b9e575f80fd5b612baa86838701612aa7565b93506020850135915080821115612bbf575f80fd5b50612bcc85828601612b1a565b9150509250929050565b5f8083601f840112612be6575f80fd5b50813567ffffffffffffffff811115612bfd575f80fd5b6020830191508360208260051b8501011115612c17575f80fd5b9250929050565b5f805f8060408587031215612c31575f80fd5b843567ffffffffffffffff80821115612c48575f80fd5b612c5488838901612bd6565b90965094506020870135915080821115612c6c575f80fd5b50612c7987828801612bd6565b95989497509550505050565b5f82601f830112612c94575f80fd5b81356020612ca4612ac683612a84565b8083825260208201915060208460051b870101935086841115612cc5575f80fd5b602086015b84811015612b0f57612cdb816128c3565b8352918301918301612cca565b5f82601f830112612cf7575f80fd5b81356020612d07612ac683612a84565b8083825260208201915060208460051b870101935086841115612d28575f80fd5b602086015b84811015612b0f57612d3e816128ff565b8352918301918301612d2d565b5f805f805f60a08688031215612d5f575f80fd5b853567ffffffffffffffff80821115612d76575f80fd5b612d8289838a01612aa7565b96506020880135915080821115612d97575f80fd5b612da389838a01612c85565b95506040880135915080821115612db8575f80fd5b612dc489838a01612b1a565b94506060880135915080821115612dd9575f80fd5b612de589838a01612ce8565b93506080880135915080821115612dfa575f80fd5b50612e0788828901612b1a565b9150509295509295909350565b5f8060408385031215612e25575f80fd5b612e2e83612894565b946020939093013593505050565b5f8060408385031215612e4d575f80fd5b823567ffffffffffffffff80821115612e64575f80fd5b612e7086838701612c85565b93506020850135915080821115612e85575f80fd5b50612bcc85828601612ce8565b5f60208284031215612ea2575f80fd5b611e21826128ff565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612ee8575f80fd5b815160ff81168114611e21575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176107e0576107e0612ef8565b808201808211156107e0576107e0612ef8565b818103818111156107e0576107e0612ef8565b5f82612f95577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(L2TokenRegistryStorageLayoutJSON), L2TokenRegistryStorageLayout); err != nil { diff --git a/bindings/go.mod b/bindings/go.mod index 938251fd..cb76dba7 100644 --- a/bindings/go.mod +++ b/bindings/go.mod @@ -4,7 +4,7 @@ go 1.24.0 replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.2 -require github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 +require github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 require ( github.com/VictoriaMetrics/fastcache v1.12.2 // indirect diff --git a/bindings/go.sum b/bindings/go.sum index 5e2b2fc5..a479ed43 100644 --- a/bindings/go.sum +++ b/bindings/go.sum @@ -111,8 +111,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= diff --git a/contracts/go.mod b/contracts/go.mod index 8fdb65fe..05b2b291 100644 --- a/contracts/go.mod +++ b/contracts/go.mod @@ -6,7 +6,7 @@ replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3. require ( github.com/iden3/go-iden3-crypto v0.0.16 - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/stretchr/testify v1.10.0 ) diff --git a/contracts/go.sum b/contracts/go.sum index d2ca2973..319f1f2b 100644 --- a/contracts/go.sum +++ b/contracts/go.sum @@ -138,8 +138,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= diff --git a/go-ethereum b/go-ethereum index 31e742a5..03910bc7 160000 --- a/go-ethereum +++ b/go-ethereum @@ -1 +1 @@ -Subproject commit 31e742a5deaabde52beb8518a345f1dff01424b2 +Subproject commit 03910bc750a2301be4c1410b9f3c4d3741df251e diff --git a/go.work.sum b/go.work.sum index d0ea0133..4403ab86 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1007,6 +1007,8 @@ github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8q github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morph-l2/go-ethereum v1.10.14-0.20251125061742-69718a9dcab9/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae h1:VeRdUYdCw49yizlSbMEn2SZ+gT+3IUKx8BqxyQdz+BY= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= diff --git a/node/go.mod b/node/go.mod index e9044e9e..e8f9a335 100644 --- a/node/go.mod +++ b/node/go.mod @@ -11,7 +11,7 @@ require ( github.com/hashicorp/golang-lru v1.0.2 github.com/holiman/uint256 v1.2.4 github.com/klauspost/compress v1.17.9 - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/prometheus/client_golang v1.17.0 github.com/spf13/viper v1.13.0 github.com/stretchr/testify v1.10.0 diff --git a/node/go.sum b/node/go.sum index 1ce48a98..d11447ab 100644 --- a/node/go.sum +++ b/node/go.sum @@ -361,8 +361,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/morph-l2/tendermint v0.3.2 h1:Gu6Uj2G6c3YP2NAKFi7A46JZaOCdD4zfZDKCjt0pDm8= github.com/morph-l2/tendermint v0.3.2/go.mod h1:TtCzp9l6Z6yDUiwv3TbqKqw8Q8RKp3fSz5+adO1/Y8w= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= diff --git a/ops/l2-genesis/go.mod b/ops/l2-genesis/go.mod index 584f4fa1..c8712534 100644 --- a/ops/l2-genesis/go.mod +++ b/ops/l2-genesis/go.mod @@ -6,7 +6,7 @@ replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3. require ( github.com/holiman/uint256 v1.2.4 - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/stretchr/testify v1.10.0 github.com/urfave/cli v1.22.17 ) diff --git a/ops/l2-genesis/go.sum b/ops/l2-genesis/go.sum index fc8c75a2..34798fa7 100644 --- a/ops/l2-genesis/go.sum +++ b/ops/l2-genesis/go.sum @@ -141,8 +141,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= diff --git a/ops/tools/go.mod b/ops/tools/go.mod index dc9e7d07..5ece6f2b 100644 --- a/ops/tools/go.mod +++ b/ops/tools/go.mod @@ -5,7 +5,7 @@ go 1.24.0 replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3.2 require ( - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/tendermint/tendermint v0.35.9 ) diff --git a/ops/tools/go.sum b/ops/tools/go.sum index 09537f28..7bc00040 100644 --- a/ops/tools/go.sum +++ b/ops/tools/go.sum @@ -163,8 +163,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/morph-l2/tendermint v0.3.2 h1:Gu6Uj2G6c3YP2NAKFi7A46JZaOCdD4zfZDKCjt0pDm8= github.com/morph-l2/tendermint v0.3.2/go.mod h1:TtCzp9l6Z6yDUiwv3TbqKqw8Q8RKp3fSz5+adO1/Y8w= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= diff --git a/oracle/go.mod b/oracle/go.mod index 37fe61c2..2c115e81 100644 --- a/oracle/go.mod +++ b/oracle/go.mod @@ -7,7 +7,7 @@ replace github.com/tendermint/tendermint => github.com/morph-l2/tendermint v0.3. require ( github.com/go-kit/kit v0.12.0 github.com/morph-l2/externalsign v0.3.1 - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/prometheus/client_golang v1.17.0 github.com/stretchr/testify v1.10.0 github.com/tendermint/tendermint v0.35.9 diff --git a/oracle/go.sum b/oracle/go.sum index 4b963fd5..e4d6c750 100644 --- a/oracle/go.sum +++ b/oracle/go.sum @@ -174,8 +174,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/morph-l2/externalsign v0.3.1 h1:UYFDZFB0L85A4rDvuwLNBiGEi0kSmg9AZ2v8Q5O4dQo= github.com/morph-l2/externalsign v0.3.1/go.mod h1:b6NJ4GUiiG/gcSJsp3p8ExsIs4ZdphlrVALASnVoGJE= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/morph-l2/tendermint v0.3.2 h1:Gu6Uj2G6c3YP2NAKFi7A46JZaOCdD4zfZDKCjt0pDm8= github.com/morph-l2/tendermint v0.3.2/go.mod h1:TtCzp9l6Z6yDUiwv3TbqKqw8Q8RKp3fSz5+adO1/Y8w= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= diff --git a/token-price-oracle/client/bitget_sdk_test.go b/token-price-oracle/client/bitget_sdk_test.go deleted file mode 100644 index 3b15fa44..00000000 --- a/token-price-oracle/client/bitget_sdk_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package client - -import ( - "context" - "math/big" - "testing" - "time" -) - -// TestBitgetSDK_FetchETHPrice tests fetching ETH price using official Bitget SDK -func TestBitgetSDK_FetchETHPrice(t *testing.T) { - feed := NewBitgetSDKPriceFeed(map[uint16]string{ - 1: "ETHUSDT", - }) - - ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) - defer cancel() - - // Test fetching ETH price directly - price, err := feed.fetchPrice(ctx, "ETHUSDT") - if err != nil { - t.Fatalf("Failed to fetch ETH price: %v", err) - } - - if price == nil { - t.Fatal("Price is nil") - } - - if price.Cmp(big.NewFloat(0)) <= 0 { - t.Errorf("Expected positive price, got %v", price) - } - - t.Logf("ETH Price: %v USDT", price) -} diff --git a/token-price-oracle/go.mod b/token-price-oracle/go.mod index 2b66ea35..771a7715 100644 --- a/token-price-oracle/go.mod +++ b/token-price-oracle/go.mod @@ -8,7 +8,7 @@ replace ( ) require ( - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/prometheus/client_golang v1.17.0 github.com/sirupsen/logrus v1.9.3 github.com/urfave/cli v1.22.17 diff --git a/token-price-oracle/go.sum b/token-price-oracle/go.sum index 603fb9b1..933430e9 100644 --- a/token-price-oracle/go.sum +++ b/token-price-oracle/go.sum @@ -143,8 +143,8 @@ github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqky github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= diff --git a/token-price-oracle/updater/token_price.go b/token-price-oracle/updater/token_price.go index baaf240d..42503fe0 100644 --- a/token-price-oracle/updater/token_price.go +++ b/token-price-oracle/updater/token_price.go @@ -7,13 +7,14 @@ import ( "sync" "time" - "github.com/morph-l2/go-ethereum/accounts/abi/bind" - "github.com/morph-l2/go-ethereum/core/types" - "github.com/morph-l2/go-ethereum/log" "morph-l2/bindings/bindings" "morph-l2/token-price-oracle/client" "morph-l2/token-price-oracle/config" "morph-l2/token-price-oracle/metrics" + + "github.com/morph-l2/go-ethereum/accounts/abi/bind" + "github.com/morph-l2/go-ethereum/core/types" + "github.com/morph-l2/go-ethereum/log" ) // PriceUpdater handles token price updates @@ -267,27 +268,27 @@ func (u *PriceUpdater) filterActiveTokens(ctx context.Context, tokenIDs []uint16 } // Log and skip inactive tokens - if !tokenInfo.IsActive { + if !tokenInfo.Info.IsActive { log.Info("Token is inactive, skipping price update", "token_id", tokenID, - "address", tokenInfo.TokenAddress.Hex()) + "address", tokenInfo.Info.TokenAddress.Hex()) continue } // Cache token info for later use tokenInfoMap[tokenID] = &TokenInfo{ - TokenAddress: tokenInfo.TokenAddress.Hex(), - Decimals: tokenInfo.Decimals, - Scale: tokenInfo.Scale, - IsActive: tokenInfo.IsActive, + TokenAddress: tokenInfo.Info.TokenAddress.Hex(), + Decimals: tokenInfo.Info.Decimals, + Scale: tokenInfo.Info.Scale, + IsActive: tokenInfo.Info.IsActive, } activeTokenIDs = append(activeTokenIDs, tokenID) log.Debug("Token is active", "token_id", tokenID, - "address", tokenInfo.TokenAddress.Hex(), - "decimals", tokenInfo.Decimals, - "scale", tokenInfo.Scale.String()) + "address", tokenInfo.Info.TokenAddress.Hex(), + "decimals", tokenInfo.Info.Decimals, + "scale", tokenInfo.Info.Scale.String()) } if len(activeTokenIDs) < len(tokenIDs) { @@ -429,14 +430,14 @@ func (u *PriceUpdater) shouldUpdatePrice(lastPrice, newPrice *big.Int) bool { // Compare with threshold (both are in basis points) thresholdBig := big.NewInt(int64(threshold)) shouldUpdate := bps.Cmp(thresholdBig) >= 0 - + log.Debug("Price change check", "last_price", lastPrice.String(), "new_price", newPrice.String(), "change_bps", bps.String(), "threshold_bps", threshold, "should_update", shouldUpdate) - + return shouldUpdate } diff --git a/tx-submitter/go.mod b/tx-submitter/go.mod index a20c552b..546e3b21 100644 --- a/tx-submitter/go.mod +++ b/tx-submitter/go.mod @@ -9,7 +9,7 @@ require ( github.com/crate-crypto/go-eth-kzg v1.4.0 github.com/holiman/uint256 v1.2.4 github.com/morph-l2/externalsign v0.3.1 - github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 + github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 github.com/prometheus/client_golang v1.17.0 github.com/stretchr/testify v1.10.0 github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a diff --git a/tx-submitter/go.sum b/tx-submitter/go.sum index b9f9b43b..e98ef3ac 100644 --- a/tx-submitter/go.sum +++ b/tx-submitter/go.sum @@ -163,8 +163,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/morph-l2/externalsign v0.3.1 h1:UYFDZFB0L85A4rDvuwLNBiGEi0kSmg9AZ2v8Q5O4dQo= github.com/morph-l2/externalsign v0.3.1/go.mod h1:b6NJ4GUiiG/gcSJsp3p8ExsIs4ZdphlrVALASnVoGJE= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24 h1:r9eaQDNgjAxsuUchmoCFaAjL1TmUfjAmIlJjAtgUk8U= -github.com/morph-l2/go-ethereum v1.10.14-0.20251203083507-49fa27bcab24/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2 h1:FUv9gtnvF+1AVrkoNGYbVOesi7E+STjdfD2mcqVaEY0= +github.com/morph-l2/go-ethereum v1.10.14-0.20251219060125-03910bc750a2/go.mod h1:tiFPeidxjoCmLj18ne9H3KQdIGTCvRC30qlef06Fd9M= github.com/morph-l2/tendermint v0.3.2 h1:Gu6Uj2G6c3YP2NAKFi7A46JZaOCdD4zfZDKCjt0pDm8= github.com/morph-l2/tendermint v0.3.2/go.mod h1:TtCzp9l6Z6yDUiwv3TbqKqw8Q8RKp3fSz5+adO1/Y8w= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=